|
|
|
@ -126,18 +126,19 @@ class InternalCallTree { |
|
|
|
|
|
|
|
|
|
extractSourceLocation (step) { |
|
|
|
|
return new Promise((resolve, reject) => { |
|
|
|
|
try { |
|
|
|
|
const address = this.traceManager.getCurrentCalledAddressAt(step) |
|
|
|
|
try { |
|
|
|
|
this.sourceLocationTracker.getSourceLocationFromVMTraceIndex(address, step, this.solidityProxy.contracts).then(resolve).catch((error) => { |
|
|
|
|
return reject('InternalCallTree - Cannot retrieve sourcelocation for step ' + step + ' ' + error) |
|
|
|
|
}) |
|
|
|
|
} catch (error) { |
|
|
|
|
this.traceManager.getCurrentCalledAddressAt(step, (error, address) => { |
|
|
|
|
if (!error) { |
|
|
|
|
try { |
|
|
|
|
this.sourceLocationTracker.getSourceLocationFromVMTraceIndex(address, step, this.solidityProxy.contracts).then(resolve).catch((error) => { |
|
|
|
|
return reject('InternalCallTree - Cannot retrieve sourcelocation for step ' + step + ' ' + error) |
|
|
|
|
}) |
|
|
|
|
} catch (error) { |
|
|
|
|
return reject('InternalCallTree - Cannot retrieve address for step ' + step + ' ' + error) |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
return reject('InternalCallTree - Cannot retrieve address for step ' + step + ' ' + error) |
|
|
|
|
} |
|
|
|
|
} catch (error) { |
|
|
|
|
return reject('InternalCallTree - Cannot retrieve address for step ' + step + ' ' + error) |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|