Merge pull request #636 from ethereum/fixAnalysisThrow

Catch exception in analysis module
pull/3094/head
yann300 7 years ago committed by GitHub
commit 0a5259bd34
  1. 21
      remix-solidity/src/analysis/staticAnalysisRunner.js

@ -16,13 +16,20 @@ staticAnalysisRunner.prototype.run = function (compilationResult, toRun, callbac
}
staticAnalysisRunner.prototype.runWithModuleList = function (compilationResult, modules, callback) {
var reports = []
// Also provide convenience analysis via the AST walker.
var walker = new AstWalker()
for (var k in compilationResult.sources) {
walker.walk(compilationResult.sources[k].legacyAST, {'*': function (node) {
modules.map(function (item, i) {
if (item.mod.visit !== undefined) {
item.mod.visit(node)
try {
item.mod.visit(node)
} catch (e) {
reports.push({
name: item.name, report: [{ warning: 'INTERNAL ERROR in module ' + item.name + ' ' + e.message }]
})
}
}
})
return true
@ -31,9 +38,15 @@ staticAnalysisRunner.prototype.runWithModuleList = function (compilationResult,
// Here, modules can just collect the results from the AST walk,
// but also perform new analysis.
var reports = modules.map(function (item, i) {
return { name: item.name, report: item.mod.report(compilationResult) }
})
reports = reports.concat(modules.map(function (item, i) {
var report = null
try {
report = item.mod.report(compilationResult)
} catch (e) {
report = [{ warning: 'INTERNAL ERROR in module ' + item.name + ' ' + e.message }]
}
return { name: item.name, report: report }
}))
callback(reports)
}

Loading…
Cancel
Save