using scope

pull/5370/head
aniket-engg 5 years ago
parent 80d01c9706
commit d0bd2a4a12
  1. 5
      remix-debug/src/debugger/stepManager.js
  2. 4
      remix-debug/src/solidity-decoder/internalCallTree.js
  3. 4
      remix-lib/src/trace/traceManager.js
  4. 4
      remix-lib/src/trace/traceStepManager.js

@ -122,7 +122,10 @@ class DebuggerStepManager {
stepOverForward (solidityMode) { stepOverForward (solidityMode) {
if (!this.traceManager.isLoaded()) return if (!this.traceManager.isLoaded()) return
var step = this.traceManager.findStepOverForward(this.currentStepIndex, this.debugger.callTree.internalFunctionCalls.includes((this.currentStepIndex))) let scope = this.debugger.callTree.findScope(this.currentStepIndex)
if (scope && scope.firstStep === this.currentStepIndex) {
var step = scope.lastStep
}
if (solidityMode) { if (solidityMode) {
step = this.resolveToReducedTrace(step, 1) step = this.resolveToReducedTrace(step, 1)
} }

@ -29,7 +29,6 @@ class InternalCallTree {
this.solidityProxy = solidityProxy this.solidityProxy = solidityProxy
this.traceManager = traceManager this.traceManager = traceManager
this.sourceLocationTracker = new SourceLocationTracker(codeManager) this.sourceLocationTracker = new SourceLocationTracker(codeManager)
this.internalFunctionCalls = []
debuggerEvent.register('newTraceLoaded', (trace) => { debuggerEvent.register('newTraceLoaded', (trace) => {
this.reset() this.reset()
if (!this.solidityProxy.loaded()) { if (!this.solidityProxy.loaded()) {
@ -158,9 +157,6 @@ async function buildTree (tree, step, scopeId, isExternalCall) {
// we are checking if we are jumping in a new CALL or in an internal function // we are checking if we are jumping in a new CALL or in an internal function
if (isCallInstruction || sourceLocation.jump === 'i') { if (isCallInstruction || sourceLocation.jump === 'i') {
try { try {
if (sourceLocation.jump === 'i') {
this.internalFunctionCalls.push(step)
}
var externalCallResult = await buildTree(tree, step + 1, scopeId === '' ? subScope.toString() : scopeId + '.' + subScope, isCallInstruction) var externalCallResult = await buildTree(tree, step + 1, scopeId === '' ? subScope.toString() : scopeId + '.' + subScope, isCallInstruction)
if (externalCallResult.error) { if (externalCallResult.error) {
return { outStep: step, error: 'InternalCallTree - ' + externalCallResult.error } return { outStep: step, error: 'InternalCallTree - ' + externalCallResult.error }

@ -239,8 +239,8 @@ TraceManager.prototype.findStepOverBack = function (currentStep) {
return this.traceStepManager.findStepOverBack(currentStep) return this.traceStepManager.findStepOverBack(currentStep)
} }
TraceManager.prototype.findStepOverForward = function (currentStep, isInternalCall = false) { TraceManager.prototype.findStepOverForward = function (currentStep) {
return this.traceStepManager.findStepOverForward(currentStep, isInternalCall) return this.traceStepManager.findStepOverForward(currentStep)
} }
TraceManager.prototype.findNextCall = function (currentStep) { TraceManager.prototype.findNextCall = function (currentStep) {

@ -26,8 +26,8 @@ TraceStepManager.prototype.findStepOverBack = function (currentStep) {
} }
} }
TraceStepManager.prototype.findStepOverForward = function (currentStep, isInternalCall) { TraceStepManager.prototype.findStepOverForward = function (currentStep) {
if (this.isCallInstruction(currentStep) || isInternalCall) { if (this.isCallInstruction(currentStep)) {
var call = util.findCall(currentStep + 1, this.traceAnalyser.traceCache.callsTree.call) var call = util.findCall(currentStep + 1, this.traceAnalyser.traceCache.callsTree.call)
return call.return + 1 < this.traceAnalyser.trace.length ? call.return + 1 : this.traceAnalyser.trace.length - 1 return call.return + 1 < this.traceAnalyser.trace.length ? call.return + 1 : this.traceAnalyser.trace.length - 1
} else { } else {

Loading…
Cancel
Save