sol-dbg 0.4.2 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/dist/debug/decoding/general.d.ts +2 -1
  2. package/dist/debug/decoding/general.d.ts.map +1 -1
  3. package/dist/debug/decoding/general.js +8 -7
  4. package/dist/debug/decoding/general.js.map +1 -1
  5. package/dist/debug/decoding/storage.d.ts +6 -3
  6. package/dist/debug/decoding/storage.d.ts.map +1 -1
  7. package/dist/debug/decoding/storage.js +73 -13
  8. package/dist/debug/decoding/storage.js.map +1 -1
  9. package/dist/debug/foundry_cheatcodes.d.ts +2 -1
  10. package/dist/debug/foundry_cheatcodes.d.ts.map +1 -1
  11. package/dist/debug/foundry_cheatcodes.js +4 -0
  12. package/dist/debug/foundry_cheatcodes.js.map +1 -1
  13. package/dist/debug/index.d.ts +2 -1
  14. package/dist/debug/index.d.ts.map +1 -1
  15. package/dist/debug/index.js +2 -1
  16. package/dist/debug/index.js.map +1 -1
  17. package/dist/debug/layout.d.ts +9 -0
  18. package/dist/debug/layout.d.ts.map +1 -0
  19. package/dist/debug/layout.js +80 -0
  20. package/dist/debug/layout.js.map +1 -0
  21. package/dist/debug/tracers/base_tracer.d.ts +33 -0
  22. package/dist/debug/tracers/base_tracer.d.ts.map +1 -0
  23. package/dist/debug/tracers/base_tracer.js +118 -0
  24. package/dist/debug/tracers/base_tracer.js.map +1 -0
  25. package/dist/debug/tracers/index.d.ts +5 -0
  26. package/dist/debug/tracers/index.d.ts.map +1 -0
  27. package/dist/debug/tracers/index.js +21 -0
  28. package/dist/debug/tracers/index.js.map +1 -0
  29. package/dist/debug/tracers/sol_debugger.d.ts +9 -0
  30. package/dist/debug/tracers/sol_debugger.d.ts.map +1 -0
  31. package/dist/debug/tracers/sol_debugger.js +22 -0
  32. package/dist/debug/tracers/sol_debugger.js.map +1 -0
  33. package/dist/debug/tracers/support_tracer.d.ts +15 -0
  34. package/dist/debug/tracers/support_tracer.d.ts.map +1 -0
  35. package/dist/debug/tracers/support_tracer.js +22 -0
  36. package/dist/debug/tracers/support_tracer.js.map +1 -0
  37. package/dist/debug/tracers/transformers/basic_info.d.ts +25 -0
  38. package/dist/debug/tracers/transformers/basic_info.d.ts.map +1 -0
  39. package/dist/debug/tracers/transformers/basic_info.js +54 -0
  40. package/dist/debug/tracers/transformers/basic_info.js.map +1 -0
  41. package/dist/debug/tracers/transformers/contract_lifetime.d.ts +21 -0
  42. package/dist/debug/tracers/transformers/contract_lifetime.d.ts.map +1 -0
  43. package/dist/debug/tracers/transformers/contract_lifetime.js +70 -0
  44. package/dist/debug/tracers/transformers/contract_lifetime.js.map +1 -0
  45. package/dist/debug/tracers/transformers/events.d.ts +12 -0
  46. package/dist/debug/tracers/transformers/events.d.ts.map +1 -0
  47. package/dist/debug/tracers/transformers/events.js +30 -0
  48. package/dist/debug/tracers/transformers/events.js.map +1 -0
  49. package/dist/debug/tracers/transformers/ext_stack.d.ts +17 -0
  50. package/dist/debug/tracers/transformers/ext_stack.d.ts.map +1 -0
  51. package/dist/debug/tracers/transformers/ext_stack.js +200 -0
  52. package/dist/debug/tracers/transformers/ext_stack.js.map +1 -0
  53. package/dist/debug/tracers/transformers/index.d.ts +12 -0
  54. package/dist/debug/tracers/transformers/index.d.ts.map +1 -0
  55. package/dist/debug/tracers/transformers/index.js +25 -0
  56. package/dist/debug/tracers/transformers/index.js.map +1 -0
  57. package/dist/debug/tracers/transformers/int_stack.d.ts +13 -0
  58. package/dist/debug/tracers/transformers/int_stack.d.ts.map +1 -0
  59. package/dist/debug/tracers/transformers/int_stack.js +139 -0
  60. package/dist/debug/tracers/transformers/int_stack.js.map +1 -0
  61. package/dist/debug/tracers/transformers/keccak256_invert.d.ts +29 -0
  62. package/dist/debug/tracers/transformers/keccak256_invert.d.ts.map +1 -0
  63. package/dist/debug/tracers/transformers/keccak256_invert.js +65 -0
  64. package/dist/debug/tracers/transformers/keccak256_invert.js.map +1 -0
  65. package/dist/debug/tracers/transformers/op.d.ts +11 -0
  66. package/dist/debug/tracers/transformers/op.d.ts.map +1 -0
  67. package/dist/debug/tracers/transformers/op.js +11 -0
  68. package/dist/debug/tracers/transformers/op.js.map +1 -0
  69. package/dist/debug/tracers/transformers/source.d.ts +26 -0
  70. package/dist/debug/tracers/transformers/source.d.ts.map +1 -0
  71. package/dist/debug/tracers/transformers/source.js +38 -0
  72. package/dist/debug/tracers/transformers/source.js.map +1 -0
  73. package/dist/debug/types.d.ts +3 -6
  74. package/dist/debug/types.d.ts.map +1 -1
  75. package/dist/debug/types.js +8 -0
  76. package/dist/debug/types.js.map +1 -1
  77. package/dist/utils/index.d.ts +2 -0
  78. package/dist/utils/index.d.ts.map +1 -1
  79. package/dist/utils/index.js +2 -0
  80. package/dist/utils/index.js.map +1 -1
  81. package/dist/utils/map.d.ts +5 -0
  82. package/dist/utils/map.d.ts.map +1 -0
  83. package/dist/utils/map.js +12 -0
  84. package/dist/utils/map.js.map +1 -0
  85. package/dist/utils/pp.d.ts +4 -2
  86. package/dist/utils/pp.d.ts.map +1 -1
  87. package/dist/utils/pp.js +22 -10
  88. package/dist/utils/pp.js.map +1 -1
  89. package/dist/utils/set.d.ts +9 -0
  90. package/dist/utils/set.d.ts.map +1 -0
  91. package/dist/utils/set.js +21 -0
  92. package/dist/utils/set.js.map +1 -0
  93. package/dist/utils/test_runner.d.ts +22 -10
  94. package/dist/utils/test_runner.d.ts.map +1 -1
  95. package/dist/utils/test_runner.js +73 -33
  96. package/dist/utils/test_runner.js.map +1 -1
  97. package/package.json +1 -1
  98. package/dist/debug/sol_debugger.d.ts +0 -107
  99. package/dist/debug/sol_debugger.d.ts.map +0 -1
  100. package/dist/debug/sol_debugger.js +0 -521
  101. package/dist/debug/sol_debugger.js.map +0 -1
@@ -69,6 +69,7 @@ export interface BaseExternalFrame extends BaseFrame {
69
69
  readonly info?: ContractInfo;
70
70
  readonly code: Uint8Array;
71
71
  readonly codeMdHash: HexString | undefined;
72
+ internalFrames: InternalCallFrame[];
72
73
  }
73
74
  /**
74
75
  * Stack frame corresponding to an external call
@@ -95,6 +96,7 @@ export interface InternalCallFrame extends BaseFrame {
95
96
  export type ExternalFrame = CallFrame | CreationFrame;
96
97
  export type Frame = ExternalFrame | InternalCallFrame;
97
98
  export type DbgStack = Frame[];
99
+ export declare function isFrame(a: any): a is Frame;
98
100
  export declare enum DataLocationKind {
99
101
  Stack = "stack",
100
102
  Memory = "memory",
@@ -138,9 +140,6 @@ export interface EventDesc {
138
140
  topics: bigint[];
139
141
  }
140
142
  /**
141
- * TODO(dimo): Make memory and storage be computed only for instructions that change them, and for all other
142
- * instructions alias the previous steps' memory/storage
143
- *
144
143
  * Low-level machine state at a given trace step. It directly mirrors the state reported from Web3
145
144
  * and doesn't include any higher-level information that requires debug info.
146
145
  */
@@ -155,7 +154,6 @@ export interface StepVMState {
155
154
  gas: bigint;
156
155
  depth: number;
157
156
  address: Address;
158
- codeAddress: Address | undefined;
159
157
  }
160
158
  /**
161
159
  * State that the debugger maintains for each trace step.
@@ -164,11 +162,10 @@ export interface StepVMState {
164
162
  * that may be emitted on this step.
165
163
  */
166
164
  export interface StepState extends StepVMState {
167
- stack: DbgStack;
165
+ stack: ExternalFrame[];
168
166
  src: sol.DecodedBytecodeSourceMapEntry | undefined;
169
167
  astNode: sol.ASTNode | undefined;
170
168
  emittedEvent: EventDesc | undefined;
171
- contractInfo: ContractInfo | undefined;
172
169
  }
173
170
  /**
174
171
  * Trace step struct contained in the array returned by web3.debug.traceTransaction().
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/debug/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/debug/types.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DataLocationKind = exports.FrameKind = void 0;
4
+ exports.isFrame = isFrame;
4
5
  var FrameKind;
5
6
  (function (FrameKind) {
6
7
  FrameKind["Call"] = "call";
7
8
  FrameKind["Creation"] = "creation";
8
9
  FrameKind["InternalCall"] = "internal_call";
9
10
  })(FrameKind || (exports.FrameKind = FrameKind = {}));
11
+ function isFrame(a) {
12
+ return (a instanceof Object &&
13
+ a.hasOwnProperty("kind") &&
14
+ (a.kind === FrameKind.Call ||
15
+ a.kind === FrameKind.Creation ||
16
+ a.kind === FrameKind.InternalCall));
17
+ }
10
18
  var DataLocationKind;
11
19
  (function (DataLocationKind) {
12
20
  DataLocationKind["Stack"] = "stack";
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/debug/types.ts"],"names":[],"mappings":";;;AAoCA,IAAY,SAIX;AAJD,WAAY,SAAS;IACjB,0BAAa,CAAA;IACb,kCAAqB,CAAA;IACrB,2CAA8B,CAAA;AAClC,CAAC,EAJW,SAAS,yBAAT,SAAS,QAIpB;AAiED,IAAY,gBAKX;AALD,WAAY,gBAAgB;IACxB,mCAAe,CAAA;IACf,qCAAiB,CAAA;IACjB,uCAAmB,CAAA;IACnB,yCAAqB,CAAA;AACzB,CAAC,EALW,gBAAgB,gCAAhB,gBAAgB,QAK3B"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/debug/types.ts"],"names":[],"mappings":";;;AA0GA,0BAQC;AA9ED,IAAY,SAIX;AAJD,WAAY,SAAS;IACjB,0BAAa,CAAA;IACb,kCAAqB,CAAA;IACrB,2CAA8B,CAAA;AAClC,CAAC,EAJW,SAAS,yBAAT,SAAS,QAIpB;AAkED,SAAgB,OAAO,CAAC,CAAM;IAC1B,OAAO,CACH,CAAC,YAAY,MAAM;QACnB,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC;QACxB,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI;YACtB,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,QAAQ;YAC7B,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,YAAY,CAAC,CACzC,CAAC;AACN,CAAC;AAED,IAAY,gBAKX;AALD,WAAY,gBAAgB;IACxB,mCAAe,CAAA;IACf,qCAAiB,CAAA;IACjB,uCAAmB,CAAA;IACnB,yCAAqB,CAAA;AACzB,CAAC,EALW,gBAAgB,gCAAhB,gBAAgB,QAK3B"}
@@ -1,6 +1,8 @@
1
1
  export * from "./immutable_map";
2
+ export * from "./map";
2
3
  export * from "./misc";
3
4
  export * from "./pp";
5
+ export * from "./set";
4
6
  export * from "./srcmap";
5
7
  export * from "./test_runner";
6
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,QAAQ,CAAC;AACvB,cAAc,MAAM,CAAC;AACrB,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,MAAM,CAAC;AACrB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC"}
@@ -15,8 +15,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./immutable_map"), exports);
18
+ __exportStar(require("./map"), exports);
18
19
  __exportStar(require("./misc"), exports);
19
20
  __exportStar(require("./pp"), exports);
21
+ __exportStar(require("./set"), exports);
20
22
  __exportStar(require("./srcmap"), exports);
21
23
  __exportStar(require("./test_runner"), exports);
22
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,yCAAuB;AACvB,uCAAqB;AACrB,2CAAyB;AACzB,gDAA8B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,wCAAsB;AACtB,yCAAuB;AACvB,uCAAqB;AACrB,wCAAsB;AACtB,2CAAyB;AACzB,gDAA8B"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Destructively add all entries from map B to map A
3
+ */
4
+ export declare function map_add<K, V>(A: Map<K, V>, B: Map<K, V>): void;
5
+ //# sourceMappingURL=map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../src/utils/map.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAI9D"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.map_add = map_add;
4
+ /**
5
+ * Destructively add all entries from map B to map A
6
+ */
7
+ function map_add(A, B) {
8
+ for (const [k, v] of B) {
9
+ A.set(k, v);
10
+ }
11
+ }
12
+ //# sourceMappingURL=map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map.js","sourceRoot":"","sources":["../../src/utils/map.ts"],"names":[],"mappings":";;AAGA,0BAIC;AAPD;;GAEG;AACH,SAAgB,OAAO,CAAO,CAAY,EAAE,CAAY;IACpD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChB,CAAC;AACL,CAAC"}
@@ -1,5 +1,7 @@
1
- import { ArtifactManager, DbgStack, ExternalFrame, SolTxDebugger, StepState } from "../debug";
2
- export declare function ppStackTrace(solDbg: SolTxDebugger, trace: StepState[], stack: DbgStack, curOffset: number): string;
1
+ import { ArtifactManager, ExternalFrame, Frame, SolTxDebugger, StepState } from "../debug";
2
+ import { MapKeys } from "../debug/tracers/transformers";
3
+ export declare function flattenStack(s: ExternalFrame[]): Frame[];
4
+ export declare function ppStackTrace(solDbg: SolTxDebugger, trace: StepState[], extStack: ExternalFrame[], curOffset: number, mapKeys?: MapKeys): string;
3
5
  export declare function printStepSourceString(step: StepState, lastExtStep: ExternalFrame, sources: Map<string, string>, artifactManager: ArtifactManager, prefix: string | undefined): string | undefined;
4
6
  export declare function debugDumpTrace(trace: StepState[], artifactManager: ArtifactManager, prefix?: string): void;
5
7
  export declare function ppStep(step: StepState): string;
@@ -1 +1 @@
1
- {"version":3,"file":"pp.d.ts","sourceRoot":"","sources":["../../src/utils/pp.ts"],"names":[],"mappings":"AAsBA,OAAO,EACH,eAAe,EAEf,QAAQ,EAER,aAAa,EAIb,aAAa,EAEb,SAAS,EACZ,MAAM,UAAU,CAAC;AA2FlB,wBAAgB,YAAY,CACxB,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,SAAS,EAAE,EAClB,KAAK,EAAE,QAAQ,EACf,SAAS,EAAE,MAAM,GAClB,MAAM,CA4HR;AAED,wBAAgB,qBAAqB,CACjC,IAAI,EAAE,SAAS,EACf,WAAW,EAAE,aAAa,EAC1B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,eAAe,EAAE,eAAe,EAChC,MAAM,EAAE,MAAM,GAAG,SAAS,GAC3B,MAAM,GAAG,SAAS,CA8CpB;AAED,wBAAgB,cAAc,CAC1B,KAAK,EAAE,SAAS,EAAE,EAClB,eAAe,EAAE,eAAe,EAChC,MAAM,CAAC,EAAE,MAAM,GAChB,IAAI,CAyBN;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CA6B9C"}
1
+ {"version":3,"file":"pp.d.ts","sourceRoot":"","sources":["../../src/utils/pp.ts"],"names":[],"mappings":"AAsBA,OAAO,EACH,eAAe,EAGf,aAAa,EACb,KAAK,EAEL,aAAa,EAEb,SAAS,EACZ,MAAM,UAAU,CAAC;AAClB,OAAO,EAGH,OAAO,EAEV,MAAM,+BAA+B,CAAC;AA2FvC,wBAAgB,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,GAAG,KAAK,EAAE,CAQxD;AAED,wBAAgB,YAAY,CACxB,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,SAAS,EAAE,EAClB,QAAQ,EAAE,aAAa,EAAE,EACzB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,OAAO,GAClB,MAAM,CA6HR;AAED,wBAAgB,qBAAqB,CACjC,IAAI,EAAE,SAAS,EACf,WAAW,EAAE,aAAa,EAC1B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,eAAe,EAAE,eAAe,EAChC,MAAM,EAAE,MAAM,GAAG,SAAS,GAC3B,MAAM,GAAG,SAAS,CA8CpB;AAED,wBAAgB,cAAc,CAC1B,KAAK,EAAE,SAAS,EAAE,EAClB,eAAe,EAAE,eAAe,EAChC,MAAM,CAAC,EAAE,MAAM,GAChB,IAAI,CAyBN;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CA8B9C"}
package/dist/utils/pp.js CHANGED
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.flattenStack = flattenStack;
3
4
  exports.ppStackTrace = ppStackTrace;
4
5
  exports.printStepSourceString = printStepSourceString;
5
6
  exports.debugDumpTrace = debugDumpTrace;
@@ -7,6 +8,7 @@ exports.ppStep = ppStep;
7
8
  const utils_1 = require("ethereum-cryptography/utils");
8
9
  const solc_typed_ast_1 = require("solc-typed-ast");
9
10
  const debug_1 = require("../debug");
11
+ const transformers_1 = require("../debug/tracers/transformers");
10
12
  const srcLocation = require("src-location");
11
13
  const fse = require("fs-extra");
12
14
  function ppValue(typ, v, infer) {
@@ -70,15 +72,24 @@ function ppValue(typ, v, infer) {
70
72
  }
71
73
  throw new Error(`NYI ppValue of type ${typ.pp()}`);
72
74
  }
73
- function ppStackTrace(solDbg, trace, stack, curOffset) {
75
+ function flattenStack(s) {
74
76
  const res = [];
77
+ for (let i = 0; i < s.length; i++) {
78
+ res.push(s[i]);
79
+ res.push(...s[i].internalFrames);
80
+ }
81
+ return res;
82
+ }
83
+ function ppStackTrace(solDbg, trace, extStack, curOffset, mapKeys) {
84
+ const res = [];
85
+ const stack = flattenStack(extStack);
75
86
  for (let i = 0; i < stack.length; i++) {
76
87
  const frame = stack[i];
77
88
  let frameStr;
78
89
  const lastOffset = i < stack.length - 1 ? trace[stack[i + 1].startStep - 1].pc : curOffset;
79
- const extFrame = (0, debug_1.lastExternalFrame)(frame);
80
- const [lastPosInFrame] = solDbg.decodeSourceLoc(lastOffset, extFrame);
81
- const info = (0, debug_1.getContractInfo)(frame);
90
+ const extFrame = frame.kind === debug_1.FrameKind.InternalCall ? frame.nearestExtFrame : frame;
91
+ const [lastPosInFrame] = (0, transformers_1.decodeSourceLoc)(lastOffset, extFrame);
92
+ const info = extFrame.info;
82
93
  let funArgs;
83
94
  let funName;
84
95
  let fileName;
@@ -135,7 +146,7 @@ function ppStackTrace(solDbg, trace, stack, curOffset) {
135
146
  const state = trace[frame.startStep];
136
147
  (0, solc_typed_ast_1.assert)(info !== undefined, ``);
137
148
  const infer = solDbg.artifactManager.infer(info.artifact.compilerVersion);
138
- const val = (0, debug_1.decodeValue)(view, state, infer);
149
+ const val = (0, debug_1.decodeValue)(view, state, infer, mapKeys);
139
150
  funArgEls.push(ppValue(view.type, val, infer));
140
151
  }
141
152
  funArgs = funArgEls.join(", ");
@@ -171,7 +182,7 @@ function ppStackTrace(solDbg, trace, stack, curOffset) {
171
182
  return res.reverse().join("\n");
172
183
  }
173
184
  function printStepSourceString(step, lastExtStep, sources, artifactManager, prefix) {
174
- const info = step.contractInfo;
185
+ const info = (0, transformers_1.getContractInfo)(step);
175
186
  if (info === undefined) {
176
187
  return undefined;
177
188
  }
@@ -209,18 +220,19 @@ function debugDumpTrace(trace, artifactManager, prefix) {
209
220
  const jumpType = (step.op.mnemonic === "JUMP" || step.op.mnemonic === "JUMPI") && step.src
210
221
  ? step.src.jump
211
222
  : "";
212
- const srcString = printStepSourceString(step, (0, debug_1.lastExternalFrame)(step.stack), sources, artifactManager, prefix);
223
+ const srcString = printStepSourceString(step, (0, transformers_1.topExtFrame)(step.stack), sources, artifactManager, prefix);
213
224
  console.error(`${i} ${step.pc}: ${step.op.mnemonic} ${jumpType} ${srcString !== undefined ? srcString : ""}`);
214
225
  }
215
226
  }
216
227
  function ppStep(step) {
217
228
  const addrStr = `${step.address.toString().slice(36)}`;
218
229
  let contractId;
219
- const extFrame = (0, debug_1.lastExternalFrame)(step.stack);
230
+ const extFrame = (0, transformers_1.topExtFrame)(step.stack);
220
231
  const code = extFrame.code;
221
232
  const codeMdHash = extFrame.codeMdHash;
222
- if (step.contractInfo) {
223
- contractId = `${step.contractInfo.contractName}@${addrStr}`;
233
+ const contractInfo = (0, transformers_1.getContractInfo)(step);
234
+ if (contractInfo) {
235
+ contractId = `${contractInfo.contractName}@${addrStr}`;
224
236
  }
225
237
  else if (codeMdHash) {
226
238
  contractId = `0x${codeMdHash.slice(0, 6)}...${codeMdHash.slice(60)}@${addrStr}`;
@@ -1 +1 @@
1
- {"version":3,"file":"pp.js","sourceRoot":"","sources":["../../src/utils/pp.ts"],"names":[],"mappings":";;AA6HA,oCAiIC;AAED,sDAoDC;AAED,wCA6BC;AAED,wBA6BC;AAjXD,uDAAyD;AACzD,mDAmBwB;AACxB,oCAYkB;AAElB,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAC5C,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEhC,SAAS,OAAO,CAAC,GAAa,EAAE,CAAM,EAAE,KAAgB;IACpD,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QAClB,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAED,IAAI,GAAG,YAAY,wBAAO,EAAE,CAAC;QACzB,OAAQ,CAAY,CAAC,QAAQ,EAAE,CAAC;IACpC,CAAC;IAED,IAAI,GAAG,YAAY,4BAAW,EAAE,CAAC;QAC7B,OAAQ,CAAa,CAAC,QAAQ,EAAE,CAAC;IACrC,CAAC;IAED,IAAI,GAAG,YAAY,+BAAc,EAAE,CAAC;QAChC,OAAO,IAAA,kBAAU,EAAC,CAAe,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,GAAG,YAAY,yBAAQ,EAAE,CAAC;QAC1B,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAChC,CAAC;IAED,IAAI,GAAG,YAAY,gCAAe,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC;QAE3B,IAAI,GAAG,YAAY,+BAAc,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAW,CAAC,CAAC;YAEnC,IAAA,uBAAM,EACF,MAAM,IAAI,CAAC,IAAI,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,EAC3C,cAAc,MAAM,4BAA4B,GAAG,CAAC,QAAQ,CAAC,MAAM,OAAO,GAAG,CAAC,EAAE,EAAE,EAAE,CACvF,CAAC;YAEF,OAAO,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QACtD,CAAC;QAED,IAAI,GAAG,YAAY,mCAAkB,EAAE,CAAC;YACpC,OAAQ,CAAa,CAAC,QAAQ,EAAE,CAAC;QACrC,CAAC;QAED,IAAI,GAAG,YAAY,+CAA8B,EAAE,CAAC;YAChD,MAAM,cAAc,GAAG,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAEpE,OAAO,OAAO,CAAC,cAAc,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,oCAAoC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,GAAG,YAAY,4BAAW,EAAE,CAAC;QAC7B,IAAI,GAAG,CAAC,EAAE,YAAY,0BAAS,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC;YAE5B,OAAO,IAAK,CAAW,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QAC/E,CAAC;QAED,IAAI,GAAG,CAAC,EAAE,YAAY,0BAAS,EAAE,CAAC;YAC9B,OAAO,KAAK,IAAA,kBAAU,EAAC,CAAe,CAAC,EAAE,CAAC;QAC9C,CAAC;QAED,IAAI,GAAG,CAAC,EAAE,YAAY,2BAAU,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,GAAG,CAAC;QACpB,CAAC;QAED,IAAI,GAAG,CAAC,EAAE,YAAY,gCAAe,IAAI,GAAG,CAAC,EAAE,CAAC,UAAU,YAAY,iCAAgB,EAAE,CAAC;YACrF,MAAM,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;YAC1C,MAAM,SAAS,GAAa,EAAE,CAAC;YAE/B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBACzB,IAAI,CAAC;oBACD,MAAM,MAAM,GAAG,KAAK,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC;oBAE1D,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC9E,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACT,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,qBAAqB,CAAC,CAAC;gBACvD,CAAC;YACL,CAAC;YAED,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACvC,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,kCAAkC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACvD,CAAC;AAED,SAAgB,YAAY,CACxB,MAAqB,EACrB,KAAkB,EAClB,KAAe,EACf,SAAiB;IAEjB,MAAM,GAAG,GAAa,EAAE,CAAC;IAEzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAEvB,IAAI,QAAgB,CAAC;QAErB,MAAM,UAAU,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3F,MAAM,QAAQ,GAAG,IAAA,yBAAiB,EAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,eAAe,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAEtE,MAAM,IAAI,GAAG,IAAA,uBAAe,EAAC,KAAK,CAAC,CAAC;QAEpC,IAAI,OAAe,CAAC;QACpB,IAAI,OAA2B,CAAC;QAChC,IAAI,QAA4B,CAAC;QAEjC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QAEzC,IAAI,IAAI,EAAE,CAAC;YACP,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC7B,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACf,IAAI,KAAK,CAAC,MAAM,YAAY,mCAAkB,EAAE,CAAC;gBAC7C,IAAI,UAAkB,CAAC;gBAEvB,IAAI,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;oBAC7B,UAAU,GAAG,aAAa,CAAC;gBAC/B,CAAC;qBAAM,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,6BAAY,CAAC,QAAQ,EAAE,CAAC;oBACrD,UAAU,GAAG,UAAU,CAAC;gBAC5B,CAAC;qBAAM,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,6BAAY,CAAC,OAAO,EAAE,CAAC;oBACpD,UAAU,GAAG,UAAU,CAAC;gBAC5B,CAAC;qBAAM,CAAC;oBACJ,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;gBACnC,CAAC;gBAED,QAAQ,GAAG,CACP,KAAK,CAAC,MAAM,CAAC,MAAM,YAAY,mCAAkB;oBAC7C,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;oBAC5B,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAC5B,CAAC,cAAc,CAAC;gBAEjB,OAAO;oBACH,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,YAAY,mCAAkB;wBAC9C,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,GAAG;wBAChC,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACJ,OAAO,GAAG,iCAAiC,MAAM,EAAE,CAAC;YACxD,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,OAAO,GAAG,sBAAsB,MAAM,EAAE,CAAC;QAC7C,CAAC;QAED,IACI,QAAQ,CAAC,IAAI;YACb,cAAc;YACd,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,WAAW,CAAC,EAChE,CAAC;YACC,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CACjD,cAAc,CAAC,WAAW,CACX,CAAC;YAEpB,IAAI,UAAU,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACpC,MAAM,CAAC,GAAG,WAAW,CAAC,eAAe,CACjC,UAAU,CAAC,QAAQ,EACnB,cAAc,CAAC,KAAK,EACpB,IAAI,CACP,CAAC;gBAEF,QAAQ,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;YACzC,CAAC;QACL,CAAC;QAED,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YAClB,MAAM,SAAS,GAAa,EAAE,CAAC;YAE/B,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;gBACrC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACrB,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBAE5B,SAAS;gBACb,CAAC;gBAED,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBACrC,IAAA,uBAAM,EAAC,IAAI,KAAK,SAAS,EAAE,EAAE,CAAC,CAAC;gBAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;gBAE1E,MAAM,GAAG,GAAG,IAAA,mBAAW,EAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;gBAE5C,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;YACnD,CAAC;YAED,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACJ,OAAO,GAAG,WAAW,CAAC;QAC1B,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAS,CAAC,YAAY,EAAE,CAAC;YACxC,IAAA,uBAAM,EAAC,QAAQ,KAAK,SAAS,EAAE,EAAE,CAAC,CAAC;YAEnC,QAAQ,GAAG,QAAQ,GAAG,GAAG,CAAC;YAC1B,QAAQ,IAAI,GAAG,OAAO,IAAI,OAAO,GAAG,CAAC;QACzC,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAS,CAAC,IAAI,EAAE,CAAC;YACvC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC3B,QAAQ,GAAG,oCAAoC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;YAC/E,CAAC;iBAAM,CAAC;gBACJ,2GAA2G;gBAC3G,SAAS;YACb,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;gBAC3D,QAAQ,GAAG,8BAA8B,CAAC;YAC9C,CAAC;iBAAM,CAAC;gBACJ,QAAQ,GAAG,GAAG,QAAQ,GAAG,CAAC;gBAC1B,QAAQ,IAAI,cAAc,OAAO,IAAI,OAAO,IAAI,CAAC;YACrD,CAAC;QACL,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,GAAG,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,SAAgB,qBAAqB,CACjC,IAAe,EACf,WAA0B,EAC1B,OAA4B,EAC5B,eAAgC,EAChC,MAA0B;IAE1B,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;IAE/B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACrB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC;IAE1B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC;IACrC,MAAM,QAAQ,GAAG,eAAe,CAAC,WAAW,CACxC,OAAO,EACP,IAAoB,EACpB,WAAW,CAAC,IAAI,KAAK,UAAU,CAClC,CAAC;IAEF,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC;IAE/B,IAAI,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,QAAkB,CAAC,CAAC;IAEnD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;QAE7D,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC,cAAc,EAAE;YAC5C,QAAQ,EAAE,OAAO;SACpB,CAAW,CAAC;QAEb,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACxC,CAAC;IAED;;;;;;OAMG;IACH,OAAQ,YAAuB,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;AAChG,CAAC;AAED,SAAgB,cAAc,CAC1B,KAAkB,EAClB,eAAgC,EAChC,MAAe;IAEf,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAEtB,MAAM,QAAQ,GACV,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,KAAK,MAAM,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,KAAK,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG;YACrE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI;YACf,CAAC,CAAC,EAAE,CAAC;QAEb,MAAM,SAAS,GAAG,qBAAqB,CACnC,IAAI,EACJ,IAAA,yBAAiB,EAAC,IAAI,CAAC,KAAK,CAAC,EAC7B,OAAO,EACP,eAAe,EACf,MAAM,CACT,CAAC;QAEF,OAAO,CAAC,KAAK,CACT,GAAG,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,QAAQ,IAAI,QAAQ,IAC5C,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAC1C,EAAE,CACL,CAAC;IACN,CAAC;AACL,CAAC;AAED,SAAgB,MAAM,CAAC,IAAe;IAClC,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;IAEvD,IAAI,UAAkB,CAAC;IAEvB,MAAM,QAAQ,GAAG,IAAA,yBAAiB,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAe,QAAQ,CAAC,IAAI,CAAC;IACvC,MAAM,UAAU,GAAuB,QAAQ,CAAC,UAAU,CAAC;IAE3D,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,UAAU,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,IAAI,OAAO,EAAE,CAAC;IAChE,CAAC;SAAM,IAAI,UAAU,EAAE,CAAC;QACpB,UAAU,GAAG,KAAK,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC;IACpF,CAAC;SAAM,CAAC;QACJ,UAAU,GAAG,WAAW,OAAO,EAAE,CAAC;IACtC,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU;SAC5B,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,kBAAU,EAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;SAC3E,IAAI,CAAC,GAAG,CAAC,CAAC;IAEf,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ;SACzB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;SAChE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,kBAAU,EAAC,CAAC,CAAC,CAAC;SACzB,IAAI,CAAC,IAAI,CAAC,CAAC;IAEhB,OAAO,GAAG,UAAU,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,QAAQ,IAAI,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAC5E,EAAE,CACL,KAAK,MAAM,KAAK,QAAQ,GAAG,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"pp.js","sourceRoot":"","sources":["../../src/utils/pp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Destructively add set B to set A
3
+ */
4
+ export declare function set_add<T>(A: Set<T>, B: Set<T>): void;
5
+ /**
6
+ * Destructively subtract set B from set A
7
+ */
8
+ export declare function set_subtract<T>(A: Set<T>, B: Set<T>): void;
9
+ //# sourceMappingURL=set.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../src/utils/set.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAIrD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAI1D"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.set_add = set_add;
4
+ exports.set_subtract = set_subtract;
5
+ /**
6
+ * Destructively add set B to set A
7
+ */
8
+ function set_add(A, B) {
9
+ for (const el of B) {
10
+ A.add(el);
11
+ }
12
+ }
13
+ /**
14
+ * Destructively subtract set B from set A
15
+ */
16
+ function set_subtract(A, B) {
17
+ for (const el of B) {
18
+ A.delete(el);
19
+ }
20
+ }
21
+ //# sourceMappingURL=set.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set.js","sourceRoot":"","sources":["../../src/utils/set.ts"],"names":[],"mappings":";;AAGA,0BAIC;AAKD,oCAIC;AAhBD;;GAEG;AACH,SAAgB,OAAO,CAAI,CAAS,EAAE,CAAS;IAC3C,KAAK,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;QACjB,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACd,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAI,CAAS,EAAE,CAAS;IAChD,KAAK,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;QACjB,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;AACL,CAAC"}
@@ -1,8 +1,9 @@
1
1
  import { Block } from "@ethereumjs/block";
2
- import { EVMStateManagerInterface } from "@ethereumjs/common";
2
+ import { Common, EVMStateManagerInterface } from "@ethereumjs/common";
3
3
  import { TypedTransaction } from "@ethereumjs/tx";
4
- import { RunTxResult, VM } from "@ethereumjs/vm";
4
+ import { PrefixedHexString } from "@ethereumjs/util";
5
5
  import { HexString } from "../artifacts";
6
+ import { ContractSolidityState, FoundryTxResult, IArtifactManager, KeccakPreimageMap } from "../debug";
6
7
  export interface BaseTestStep {
7
8
  address: HexString;
8
9
  gasLimit: HexString;
@@ -62,30 +63,41 @@ export interface TestStep extends BaseTestStep {
62
63
  errorStack?: string[];
63
64
  errorString?: string;
64
65
  errorPathPrefix?: string;
66
+ layoutBefore?: ContractSolidityState;
65
67
  }
66
68
  export interface TestCase extends BaseTestCase {
67
69
  steps: TestStep[];
68
70
  }
69
71
  /**
70
- * Helper class to re-play harvey test cases on a in-memory VmProxy
72
+ * Helper class to run a set of TX and record info to allow debuggin any of the TXs independently. This includes:
73
+ *
74
+ * 1. The TX data for each
75
+ * 2. The Block info for each TX
76
+ * 3. The State of the world before each TX
77
+ * 4. The result of the TX
78
+ * 5. The set of contracts before each TX
79
+ * 6. The set of keccak256 (result, preimage) pairs computed by the TX (useful for computing Solidity-level maps)
71
80
  */
72
81
  export declare class VMTestRunner {
73
- private _vm;
82
+ private _foundryCheatcodes;
83
+ private tracer;
74
84
  private _txs;
75
85
  private _txToBlock;
76
86
  private _results;
77
87
  private _stateRootBeforeTx;
78
- get vm(): VM;
79
- constructor(vm: VM);
88
+ private _contractsBeforeTx;
89
+ private _keccakPreimagesBeforeTx;
90
+ constructor(artifactManager: IArtifactManager, _foundryCheatcodes?: boolean);
80
91
  runTestCase(testCaseJSON: BaseTestCase): Promise<void>;
81
92
  private setupInitialState;
82
- harveyStepToTransaction(step: BaseTestStep): Promise<TypedTransaction>;
83
- harveyStepToBlock(step: BaseTestStep): Block;
84
- private _runTxInt;
93
+ harveyStepToTransaction(step: BaseTestStep, stateManager: EVMStateManagerInterface, common: Common): Promise<TypedTransaction>;
94
+ harveyStepToBlock(step: BaseTestStep, common: Common): Block;
85
95
  get txs(): TypedTransaction[];
86
- get results(): RunTxResult[];
96
+ get results(): FoundryTxResult[];
87
97
  getStateBeforeTx(tx: TypedTransaction): EVMStateManagerInterface;
88
98
  getBlock(tx: TypedTransaction): Block;
99
+ getContractsBefore(tx: TypedTransaction): Set<PrefixedHexString>;
100
+ getKeccakPreimagesBefore(tx: TypedTransaction): KeccakPreimageMap;
89
101
  }
90
102
  export {};
91
103
  //# sourceMappingURL=test_runner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"test_runner.d.ts","sourceRoot":"","sources":["../../src/utils/test_runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test_runner.d.ts","sourceRoot":"","sources":["../../src/utils/test_runner.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,10 @@ const common_1 = require("@ethereumjs/common");
6
6
  const util_1 = require("@ethereumjs/util");
7
7
  const utils_1 = require("ethereum-cryptography/utils");
8
8
  const solc_typed_ast_1 = require("solc-typed-ast");
9
+ const debug_1 = require("../debug");
10
+ const map_1 = require("./map");
9
11
  const misc_1 = require("./misc");
12
+ const set_1 = require("./set");
10
13
  var ResultKind;
11
14
  (function (ResultKind) {
12
15
  ResultKind["ContractCreated"] = "contract_created";
@@ -16,30 +19,66 @@ var ResultKind;
16
19
  ResultKind["FoundryFail"] = "foundry_fail";
17
20
  })(ResultKind || (exports.ResultKind = ResultKind = {}));
18
21
  /**
19
- * Helper class to re-play harvey test cases on a in-memory VmProxy
22
+ * Helper class to run a set of TX and record info to allow debuggin any of the TXs independently. This includes:
23
+ *
24
+ * 1. The TX data for each
25
+ * 2. The Block info for each TX
26
+ * 3. The State of the world before each TX
27
+ * 4. The result of the TX
28
+ * 5. The set of contracts before each TX
29
+ * 6. The set of keccak256 (result, preimage) pairs computed by the TX (useful for computing Solidity-level maps)
20
30
  */
21
31
  class VMTestRunner {
22
- get vm() {
23
- return this._vm;
24
- }
25
- constructor(vm) {
32
+ constructor(artifactManager, _foundryCheatcodes = true) {
33
+ this._foundryCheatcodes = _foundryCheatcodes;
26
34
  this._stateRootBeforeTx = new Map();
27
- this._vm = vm;
35
+ this._contractsBeforeTx = new Map();
36
+ this._keccakPreimagesBeforeTx = new Map();
37
+ this.tracer = new debug_1.SupportTracer(artifactManager, {
38
+ strict: true,
39
+ foundryCheatcodes: this._foundryCheatcodes
40
+ });
28
41
  this._txs = [];
29
42
  this._results = [];
30
43
  this._txToBlock = new Map();
31
44
  }
32
45
  async runTestCase(testCaseJSON) {
33
- await this.setupInitialState(testCaseJSON.initialState);
46
+ /**
47
+ * Dummy VM used just to get a StateManager and a Common instance. The actual VM used for execution is created inside
48
+ * SupportTracer. (@todo this is kinda ugly... oh well)
49
+ */
50
+ const dummyVM = await debug_1.BaseSolTxTracer.createVm(undefined, this._foundryCheatcodes);
51
+ let stateManager = dummyVM.stateManager.shallowCopy();
52
+ const common = dummyVM.common.copy();
53
+ debug_1.BaseSolTxTracer.releaseVM(dummyVM);
54
+ const contractsBefore = await this.setupInitialState(testCaseJSON.initialState, stateManager);
55
+ const keccakPreimages = new Map();
34
56
  for (let i = 0; i < testCaseJSON.steps.length; i++) {
35
- const tx = await this.harveyStepToTransaction(testCaseJSON.steps[i]);
36
- const block = this.harveyStepToBlock(testCaseJSON.steps[i]);
37
- const res = await this._runTxInt(tx, block);
57
+ const tx = await this.harveyStepToTransaction(testCaseJSON.steps[i], stateManager, common);
58
+ const block = this.harveyStepToBlock(testCaseJSON.steps[i], common);
59
+ const txHash = (0, utils_1.bytesToHex)(tx.hash());
60
+ // Store the sets before the TX
61
+ this._txs.push(tx);
62
+ this._stateRootBeforeTx.set(txHash, stateManager);
63
+ this._txToBlock.set(txHash, block);
64
+ this._contractsBeforeTx.set(txHash, new Set(contractsBefore));
65
+ this._keccakPreimagesBeforeTx.set(txHash, new Map(keccakPreimages));
66
+ const [trace, res, stateAfter] = await this.tracer.debugTx(tx, block, stateManager);
67
+ await stateManager.flush();
68
+ // Update the set of live contracts
69
+ const [gen, kill] = (0, debug_1.getContractGenKillSet)(trace, res);
70
+ (0, set_1.set_add)(contractsBefore, gen);
71
+ (0, set_1.set_subtract)(contractsBefore, kill);
72
+ const txKeccakPreimages = (0, debug_1.getKeccakPreimages)(trace);
73
+ (0, map_1.map_add)(keccakPreimages, txKeccakPreimages);
74
+ // Update the keccak map
75
+ // Add results
38
76
  this._results.push(res);
77
+ stateManager = stateAfter;
39
78
  }
40
79
  }
41
- async setupInitialState(initialState) {
42
- const state = this.vm.stateManager;
80
+ async setupInitialState(initialState, state) {
81
+ const initialContracts = new Set();
43
82
  await state.checkpoint();
44
83
  for (const addressStr of Object.keys(initialState.accounts)) {
45
84
  const { nonce, balance, code, storage } = initialState.accounts[addressStr];
@@ -55,13 +94,17 @@ class VMTestRunner {
55
94
  await state.putContractStorage(address, keyBuf, valBuf);
56
95
  }
57
96
  await state.putContractCode(address, codeBuf);
97
+ if (codeBuf.length > 0) {
98
+ initialContracts.add(address.toString());
99
+ }
58
100
  }
59
101
  await state.commit();
60
102
  await state.flush();
103
+ return initialContracts;
61
104
  }
62
- async harveyStepToTransaction(step) {
105
+ async harveyStepToTransaction(step, stateManager, common) {
63
106
  const senderAddress = util_1.Address.fromString(step.origin);
64
- const senderAccount = await this.vm.stateManager.getAccount(senderAddress);
107
+ const senderAccount = await stateManager.getAccount(senderAddress);
65
108
  const senderNonce = senderAccount !== undefined ? senderAccount.nonce : 0;
66
109
  const txData = {
67
110
  value: step.value,
@@ -73,36 +116,21 @@ class VMTestRunner {
73
116
  if (step.address !== misc_1.ZERO_ADDRESS_STRING) {
74
117
  txData.to = step.address;
75
118
  }
76
- return (0, misc_1.makeFakeTransaction)(txData, step.origin, this._vm.common);
119
+ return (0, misc_1.makeFakeTransaction)(txData, step.origin, common);
77
120
  }
78
- harveyStepToBlock(step) {
121
+ harveyStepToBlock(step, common) {
79
122
  return block_1.Block.fromBlockData({
80
123
  header: {
81
124
  coinbase: step.origin,
82
- difficulty: this.vm.common.hardfork() === common_1.Hardfork.Shanghai ? 0 : step.blockDifficulty,
125
+ difficulty: common.hardfork() === common_1.Hardfork.Shanghai ? 0 : step.blockDifficulty,
83
126
  gasLimit: step.blockGasLimit,
84
127
  number: step.blockNumber,
85
128
  timestamp: step.blockTime
86
129
  }
87
130
  }, {
88
- common: this.vm.common
131
+ common: common
89
132
  });
90
133
  }
91
- async _runTxInt(tx, block) {
92
- const txHash = (0, utils_1.bytesToHex)(tx.hash());
93
- this._txs.push(tx);
94
- this._stateRootBeforeTx.set(txHash, this.vm.stateManager.shallowCopy(true));
95
- this._txToBlock.set(txHash, block);
96
- const res = this.vm.runTx({
97
- tx,
98
- block,
99
- skipBalance: true,
100
- skipNonce: true,
101
- skipBlockGasLimitValidation: true
102
- });
103
- await this.vm.stateManager.flush();
104
- return res;
105
- }
106
134
  get txs() {
107
135
  return this._txs;
108
136
  }
@@ -121,6 +149,18 @@ class VMTestRunner {
121
149
  (0, solc_typed_ast_1.assert)(res !== undefined, `Unable to find block for tx ${txHash}`);
122
150
  return res;
123
151
  }
152
+ getContractsBefore(tx) {
153
+ const txHash = (0, utils_1.bytesToHex)(tx.hash());
154
+ const res = this._contractsBeforeTx.get(txHash);
155
+ (0, solc_typed_ast_1.assert)(res !== undefined, `Unable to find contracts for tx ${txHash}`);
156
+ return res;
157
+ }
158
+ getKeccakPreimagesBefore(tx) {
159
+ const txHash = (0, utils_1.bytesToHex)(tx.hash());
160
+ const res = this._keccakPreimagesBeforeTx.get(txHash);
161
+ (0, solc_typed_ast_1.assert)(res !== undefined, `Unable to find keccak preimages for tx ${txHash}`);
162
+ return res;
163
+ }
124
164
  }
125
165
  exports.VMTestRunner = VMTestRunner;
126
166
  //# sourceMappingURL=test_runner.js.map