Consensys / vscode-solidity-auditor

Solidity language support and visual security auditor for Visual Studio Code
https://marketplace.visualstudio.com/items?itemName=tintinweb.solidity-visual-auditor
GNU General Public License v3.0
578 stars 60 forks source link

Fails to parse contracts with custom errors #83

Closed Vsevo1od closed 2 years ago

Vsevo1od commented 2 years ago

Example

pragma solidity 0.8.7;

contract Test {
    error CustomError();
}

After clicking graph(this) or graph for this contract nothing happens. There are several errors in dev console.

Full console output after `graph(this)` ERR [Extension Host] Error found while parsing the following file: /home/vsevolod/projects/test-del-me/Test.sol console.ts:137 [Extension Host] Error found while parsing the following file: /home/vsevolod/projects/test-del-me/Test.sol E @ console.ts:137 $logExtensionHostMessage @ mainThreadConsole.ts:39 _doInvokeHandler @ rpcProtocol.ts:472 _invokeHandler @ rpcProtocol.ts:457 _receiveRequest @ rpcProtocol.ts:373 _receiveOneMessage @ rpcProtocol.ts:295 (anonymous) @ rpcProtocol.ts:160 fire @ event.ts:577 fire @ ipc.net.ts:513 _receiveMessage @ ipc.net.ts:871 (anonymous) @ ipc.net.ts:710 fire @ event.ts:577 acceptChunk @ ipc.net.ts:286 (anonymous) @ ipc.net.ts:247 (anonymous) @ browserSocketFactory.ts:197 fire @ event.ts:577 _fileReader.onload @ browserSocketFactory.ts:81 console.ts:137 [Extension Host] Error: mismatched input '(' expecting {';', '='} (4:21) E @ console.ts:137 $logExtensionHostMessage @ mainThreadConsole.ts:39 _doInvokeHandler @ rpcProtocol.ts:472 _invokeHandler @ rpcProtocol.ts:457 _receiveRequest @ rpcProtocol.ts:373 _receiveOneMessage @ rpcProtocol.ts:295 (anonymous) @ rpcProtocol.ts:160 fire @ event.ts:577 fire @ ipc.net.ts:513 _receiveMessage @ ipc.net.ts:871 (anonymous) @ ipc.net.ts:710 fire @ event.ts:577 acceptChunk @ ipc.net.ts:286 (anonymous) @ ipc.net.ts:247 (anonymous) @ browserSocketFactory.ts:197 fire @ event.ts:577 _fileReader.onload @ browserSocketFactory.ts:81 log.ts:301 ERR abort(Error: mismatched input '(' expecting {';', '='} (4:21)). Build with -s ASSERTIONS=1 for more info.: RuntimeError: abort(Error: mismatched input '(' expecting {';', '='} (4:21)). Build with -s ASSERTIONS=1 for more info. at process.abort (/home/vsevolod/.vscode-server/extensions/juanblanco.solidity-0.0.136/node_modules/solc/soljson.js:1:13012) at process.emit (events.js:327:22) at process.on.process.emit (/home/vsevolod/.vscode-server/extensions/github.copilot-1.7.4016/dist/extension.js:8:369257) at processPromiseRejections (internal/process/promises.js:245:33) at processTicksAndRejections (internal/process/task_queues.js:94:32) console.ts:137 [Extension Host] inspect ... console.ts:137 [Extension Host] → fromSource(): hash=17397ad2f28445b69351b48b48efa1e3ff18b1d7 console.ts:137 [Extension Host] → fromSource(): cache hit! (/home/vsevolod/projects/test-del-me/Test.sol) console.ts:137 [Extension Host] ✓ inspect /home/vsevolod/projects/test-del-me/Test.sol console.ts:137 [Extension Host] ✓ workspace ready (linearized, resolved deps, ..) console.ts:137 [Extension Host] ✓ analyzeSourceUnit - done console.ts:137 [Extension Host] rejected promise not handled within 1 second: Error: mismatched input '(' expecting {';', '='} (4:21) E @ console.ts:137 $logExtensionHostMessage @ mainThreadConsole.ts:39 _doInvokeHandler @ rpcProtocol.ts:472 _invokeHandler @ rpcProtocol.ts:457 _receiveRequest @ rpcProtocol.ts:373 _receiveOneMessage @ rpcProtocol.ts:295 (anonymous) @ rpcProtocol.ts:160 fire @ event.ts:577 fire @ ipc.net.ts:513 _receiveMessage @ ipc.net.ts:871 (anonymous) @ ipc.net.ts:710 fire @ event.ts:577 acceptChunk @ ipc.net.ts:286 (anonymous) @ ipc.net.ts:247 (anonymous) @ browserSocketFactory.ts:197 fire @ event.ts:577 _fileReader.onload @ browserSocketFactory.ts:81 console.ts:137 [Extension Host] stack trace: Error: mismatched input '(' expecting {';', '='} (4:21) at Object.parse (/home/vsevolod/.vscode-server/extensions/tintinweb.solidity-visual-auditor-0.1.0/node_modules/surya/node_modules/@solidity-parser/parser/src/index.ts:72:11) at /home/vsevolod/.vscode-server/extensions/tintinweb.solidity-visual-auditor-0.1.0/node_modules/surya/lib/graph.js:86:23 at _loop (/home/vsevolod/.vscode-server/extensions/tintinweb.solidity-visual-auditor-0.1.0/node_modules/surya/lib/graph.js:95:6) at Object.graph (/home/vsevolod/.vscode-server/extensions/tintinweb.solidity-visual-auditor-0.1.0/node_modules/surya/lib/graph.js:213:18) at Commands.surya (/home/vsevolod/.vscode-server/extensions/tintinweb.solidity-visual-auditor-0.1.0/src/features/commands.js:190:33) at /home/vsevolod/.vscode-server/extensions/tintinweb.solidity-visual-auditor-0.1.0/src/extension.js:491:30 at o._executeContributedCommand (/home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:94:111751) at o._doExecuteCommand (/home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:94:110639) at o.executeCommand (/home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:94:110545) at v._executeConvertedCommand (/home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:94:114105) at o._executeContributedCommand (/home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:94:111751) at o.$executeContributedCommand (/home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:94:112293) at n._doInvokeHandler (/home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:98:13802) at n._invokeHandler (/home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:98:13486) at n._receiveRequest (/home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:98:12148) at n._receiveOneMessage (/home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:98:10826) at /home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:98:8922 at l.fire (/home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:66:1712) at s.fire (/home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:74:15990) at /home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:113:30625 at l.fire (/home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:66:1712) at s.fire (/home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:74:15990) at f._receiveMessage (/home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:74:21260) at /home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:74:18138 at l.fire (/home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:66:1712) at w.acceptChunk (/home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:74:13351) at /home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:74:12699 at l.fire (/home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:66:1712) at b._acceptChunk (/home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:113:19777) at /home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:113:16037 at Socket.m (/home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:113:13575) at Socket.emit (events.js:315:20) at addChunk (internal/streams/readable.js:309:12) at readableAddChunk (internal/streams/readable.js:284:9) at Socket.Readable.push (internal/streams/readable.js:223:10) at TCP.onStreamRead (internal/stream_base_commons.js:188:23) E @ console.ts:137 $logExtensionHostMessage @ mainThreadConsole.ts:39 _doInvokeHandler @ rpcProtocol.ts:472 _invokeHandler @ rpcProtocol.ts:457 _receiveRequest @ rpcProtocol.ts:373 _receiveOneMessage @ rpcProtocol.ts:295 (anonymous) @ rpcProtocol.ts:160 fire @ event.ts:577 fire @ ipc.net.ts:513 _receiveMessage @ ipc.net.ts:871 (anonymous) @ ipc.net.ts:710 fire @ event.ts:577 acceptChunk @ ipc.net.ts:286 (anonymous) @ ipc.net.ts:247 (anonymous) @ browserSocketFactory.ts:197 fire @ event.ts:577 _fileReader.onload @ browserSocketFactory.ts:81 log.ts:301 ERR mismatched input '(' expecting {';', '='} (4:21): Error: mismatched input '(' expecting {';', '='} (4:21) at Object.parse (/home/vsevolod/.vscode-server/extensions/tintinweb.solidity-visual-auditor-0.1.0/node_modules/surya/node_modules/@solidity-parser/parser/src/index.ts:72:11) at /home/vsevolod/.vscode-server/extensions/tintinweb.solidity-visual-auditor-0.1.0/node_modules/surya/lib/graph.js:86:23 at _loop (/home/vsevolod/.vscode-server/extensions/tintinweb.solidity-visual-auditor-0.1.0/node_modules/surya/lib/graph.js:95:6) at Object.graph (/home/vsevolod/.vscode-server/extensions/tintinweb.solidity-visual-auditor-0.1.0/node_modules/surya/lib/graph.js:213:18) at Commands.surya (/home/vsevolod/.vscode-server/extensions/tintinweb.solidity-visual-auditor-0.1.0/src/features/commands.js:190:33) at /home/vsevolod/.vscode-server/extensions/tintinweb.solidity-visual-auditor-0.1.0/src/extension.js:491:30 at o._executeContributedCommand (/home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:94:111751) at o._doExecuteCommand (/home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:94:110639) at o.executeCommand (/home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:94:110545) at v._executeConvertedCommand (/home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:94:114105) at o._executeContributedCommand (/home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:94:111751) at o.$executeContributedCommand (/home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:94:112293) at n._doInvokeHandler (/home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:98:13802) at n._invokeHandler (/home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:98:13486) at n._receiveRequest (/home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:98:12148) at n._receiveOneMessage (/home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:98:10826) at /home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:98:8922 at l.fire (/home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:66:1712) at s.fire (/home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:74:15990) at /home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:113:30625 at l.fire (/home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:66:1712) at s.fire (/home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:74:15990) at f._receiveMessage (/home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:74:21260) at /home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:74:18138 at l.fire (/home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:66:1712) at w.acceptChunk (/home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:74:13351) at /home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:74:12699 at l.fire (/home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:66:1712) at b._acceptChunk (/home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:113:19777) at /home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:113:16037 at Socket.m (/home/vsevolod/.vscode-server/bin/ccbaa2d27e38e5afa3e5c21c1c7bef4657064247/out/vs/server/remoteExtensionHostProcess.js:113:13575) at Socket.emit (events.js:315:20) at addChunk (internal/streams/readable.js:309:12) at readableAddChunk (internal/streams/readable.js:284:9) at Socket.Readable.push (internal/streams/readable.js:223:10) at TCP.onStreamRead (internal/stream_base_commons.js:188:23)
tintinweb commented 2 years ago

Hi @Vsevo1od 🙌

thanks for reporting this issue!

should be fixed with #84 by updating surya (the engine that generates these graphs) to the latest version (using latest solidity parser).

I'll run it through some QA and get it out asap.