sol-dbg 0.2.3 → 0.3.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.
- package/dist/debug/foundry_cheatcodes.d.ts +21 -1
- package/dist/debug/foundry_cheatcodes.d.ts.map +1 -1
- package/dist/debug/foundry_cheatcodes.js +82 -1
- package/dist/debug/foundry_cheatcodes.js.map +1 -1
- package/dist/debug/opcode_interposing.d.ts.map +1 -1
- package/dist/debug/opcode_interposing.js +195 -0
- package/dist/debug/opcode_interposing.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/pp.d.ts +6 -0
- package/dist/utils/pp.d.ts.map +1 -0
- package/dist/utils/pp.js +230 -0
- package/dist/utils/pp.js.map +1 -0
- package/dist/utils/test_runner.d.ts +5 -1
- package/dist/utils/test_runner.d.ts.map +1 -1
- package/dist/utils/test_runner.js +1 -0
- package/dist/utils/test_runner.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
2
3
|
import { EVMInterface, EVM } from "@ethereumjs/evm";
|
|
3
4
|
import { PrecompileFunc } from "@ethereumjs/evm/dist/precompiles";
|
|
4
5
|
import { Address } from "ethereumjs-util";
|
|
5
|
-
import { Env, Interpreter } from "@ethereumjs/evm/dist/interpreter";
|
|
6
|
+
import { Env, Interpreter, RunState } from "@ethereumjs/evm/dist/interpreter";
|
|
6
7
|
import EventEmitter from "events";
|
|
7
8
|
/**
|
|
8
9
|
* Each test/cases/debug session is associated with a unique VM. And there are
|
|
@@ -24,6 +25,9 @@ export declare const PRANK_SELECTOR02: string;
|
|
|
24
25
|
export declare const START_PRANK_SELECTOR01: string;
|
|
25
26
|
export declare const START_PRANK_SELECTOR02: string;
|
|
26
27
|
export declare const STOP_PRANK_SELECTOR: string;
|
|
28
|
+
export declare const EXPECT_REVERT_SELECTOR01: string;
|
|
29
|
+
export declare const EXPECT_REVERT_SELECTOR02: string;
|
|
30
|
+
export declare const EXPECT_REVERT_SELECTOR03: string;
|
|
27
31
|
export declare const FAIL_LOC: string;
|
|
28
32
|
export declare const FAIL_MSG_DATA: string;
|
|
29
33
|
export interface FoundryPrank {
|
|
@@ -31,6 +35,19 @@ export interface FoundryPrank {
|
|
|
31
35
|
origin: Address | undefined;
|
|
32
36
|
once: boolean;
|
|
33
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* A type union containing the different descriptions for "expectRevert". It could be either
|
|
40
|
+
* - boolean (true) - any revert
|
|
41
|
+
* - bigint (bytes4) - corresponds to the selector of the expected event
|
|
42
|
+
* - Buffer (bytes) - corresponds to the exact exception byte we expect
|
|
43
|
+
* - undefined - no expected revert (default value)
|
|
44
|
+
*/
|
|
45
|
+
export type RevertMatch = Buffer | bigint | boolean | undefined;
|
|
46
|
+
/**
|
|
47
|
+
* Check whether the returned value and data from the sub-context matches the
|
|
48
|
+
* expected revert descriptor.
|
|
49
|
+
*/
|
|
50
|
+
export declare function returnStateMatchesRevert(ret: bigint, state: RunState, expected: RevertMatch): boolean;
|
|
34
51
|
/**
|
|
35
52
|
* Helper class attached to each VM object, that contains state relevant to Foundry cheatcodes.
|
|
36
53
|
*/
|
|
@@ -38,6 +55,9 @@ export declare class FoundryContext {
|
|
|
38
55
|
timeWarp: bigint | undefined;
|
|
39
56
|
rollBockNum: bigint | undefined;
|
|
40
57
|
failCalled: boolean;
|
|
58
|
+
clearExpectRevert(): void;
|
|
59
|
+
expectRevert(match: RevertMatch): void;
|
|
60
|
+
getExpectedRevert(): RevertMatch;
|
|
41
61
|
/**
|
|
42
62
|
* We keep track of the current stack of EEI objects, in order to keep track
|
|
43
63
|
* of any pranks (pending and current). Its easier to attach pranks to EEI
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"foundry_cheatcodes.d.ts","sourceRoot":"","sources":["../../src/debug/foundry_cheatcodes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"foundry_cheatcodes.d.ts","sourceRoot":"","sources":["../../src/debug/foundry_cheatcodes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.makeFoundryCheatcodePrecompile = exports.setFoundryCtx = exports.getFoundryCtx = exports.FoundryContext = exports.FAIL_MSG_DATA = exports.FAIL_LOC = exports.STOP_PRANK_SELECTOR = exports.START_PRANK_SELECTOR02 = exports.START_PRANK_SELECTOR01 = exports.PRANK_SELECTOR02 = exports.PRANK_SELECTOR01 = exports.DEAL_SELECTOR = exports.ADDR_SELECTOR = exports.SIGN_SELECTOR = exports.STORE_SELECTOR = exports.LOAD_SELECTOR = exports.ROLL_SELECTOR = exports.WARP_SELECTOR = exports.FoundryCheatcodesAddress = exports.interpRunListeners = void 0;
|
|
3
|
+
exports.makeFoundryCheatcodePrecompile = exports.setFoundryCtx = exports.getFoundryCtx = exports.FoundryContext = exports.returnStateMatchesRevert = exports.FAIL_MSG_DATA = exports.FAIL_LOC = exports.EXPECT_REVERT_SELECTOR03 = exports.EXPECT_REVERT_SELECTOR02 = exports.EXPECT_REVERT_SELECTOR01 = exports.STOP_PRANK_SELECTOR = exports.START_PRANK_SELECTOR02 = exports.START_PRANK_SELECTOR01 = exports.PRANK_SELECTOR02 = exports.PRANK_SELECTOR01 = exports.DEAL_SELECTOR = exports.ADDR_SELECTOR = exports.SIGN_SELECTOR = exports.STORE_SELECTOR = exports.LOAD_SELECTOR = exports.ROLL_SELECTOR = exports.WARP_SELECTOR = exports.FoundryCheatcodesAddress = exports.interpRunListeners = void 0;
|
|
4
4
|
const evm_1 = require("@ethereumjs/evm/dist/evm");
|
|
5
5
|
const ethereumjs_util_1 = require("ethereumjs-util");
|
|
6
6
|
const utils_1 = require("../utils");
|
|
@@ -52,6 +52,9 @@ exports.PRANK_SELECTOR02 = getSelectorHex("prank(address,address)");
|
|
|
52
52
|
exports.START_PRANK_SELECTOR01 = getSelectorHex("startPrank(address)");
|
|
53
53
|
exports.START_PRANK_SELECTOR02 = getSelectorHex("startPrank(address,address)");
|
|
54
54
|
exports.STOP_PRANK_SELECTOR = getSelectorHex("stopPrank()");
|
|
55
|
+
exports.EXPECT_REVERT_SELECTOR01 = getSelectorHex("expectRevert()");
|
|
56
|
+
exports.EXPECT_REVERT_SELECTOR02 = getSelectorHex("expectRevert(bytes4)");
|
|
57
|
+
exports.EXPECT_REVERT_SELECTOR03 = getSelectorHex("expectRevert(bytes)");
|
|
55
58
|
exports.FAIL_LOC = (0, ethereumjs_util_1.setLengthRight)(Buffer.from("failed", "utf-8"), 32).toString("hex");
|
|
56
59
|
exports.FAIL_MSG_DATA = Buffer.concat([
|
|
57
60
|
getSelector("store(address,bytes32,bytes32)"),
|
|
@@ -59,6 +62,34 @@ exports.FAIL_MSG_DATA = Buffer.concat([
|
|
|
59
62
|
(0, ethereumjs_util_1.setLengthRight)(Buffer.from("failed", "utf-8"), 32),
|
|
60
63
|
(0, ethereumjs_util_1.setLengthLeft)(Buffer.from([1]), 32)
|
|
61
64
|
]).toString("hex");
|
|
65
|
+
/**
|
|
66
|
+
* Check whether the returned value and data from the sub-context matches the
|
|
67
|
+
* expected revert descriptor.
|
|
68
|
+
*/
|
|
69
|
+
function returnStateMatchesRevert(ret, state, expected) {
|
|
70
|
+
// No revert expected. Doesn't matter what happen
|
|
71
|
+
if (expected === undefined) {
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
// Any revert was expected. Just check that the return value is 0.
|
|
75
|
+
if (typeof expected === "boolean") {
|
|
76
|
+
return expected === (ret === 0n);
|
|
77
|
+
}
|
|
78
|
+
const excDataSize = state.interpreter.getReturnDataSize();
|
|
79
|
+
const excData = state.interpreter.getReturnData();
|
|
80
|
+
// A specific selector is expected
|
|
81
|
+
if (typeof expected === "bigint") {
|
|
82
|
+
// Not enough data for selector
|
|
83
|
+
if (excDataSize < 4n || excData.length < 4) {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
const actualSelector = (0, utils_1.bigEndianBufToBigint)(excData.slice(0, 4));
|
|
87
|
+
return expected === actualSelector;
|
|
88
|
+
}
|
|
89
|
+
// Specific exception bytes are expected
|
|
90
|
+
return excData.equals(expected);
|
|
91
|
+
}
|
|
92
|
+
exports.returnStateMatchesRevert = returnStateMatchesRevert;
|
|
62
93
|
/**
|
|
63
94
|
* Helper class attached to each VM object, that contains state relevant to Foundry cheatcodes.
|
|
64
95
|
*/
|
|
@@ -75,6 +106,21 @@ class FoundryContext {
|
|
|
75
106
|
*/
|
|
76
107
|
this.envStack = [];
|
|
77
108
|
}
|
|
109
|
+
clearExpectRevert() {
|
|
110
|
+
this.expectRevert(undefined);
|
|
111
|
+
}
|
|
112
|
+
expectRevert(match) {
|
|
113
|
+
if (this.envStack.length === 0) {
|
|
114
|
+
return undefined;
|
|
115
|
+
}
|
|
116
|
+
this.getEnv().expectedRevertDesc = match;
|
|
117
|
+
}
|
|
118
|
+
getExpectedRevert() {
|
|
119
|
+
if (this.envStack.length === 0) {
|
|
120
|
+
return undefined;
|
|
121
|
+
}
|
|
122
|
+
return this.getEnv().expectedRevertDesc;
|
|
123
|
+
}
|
|
78
124
|
// Get the current (topmost) EEI object
|
|
79
125
|
getEnv() {
|
|
80
126
|
return this.envStack[this.envStack.length - 1];
|
|
@@ -351,6 +397,41 @@ function makeFoundryCheatcodePrecompile() {
|
|
|
351
397
|
returnValue: Buffer.from("", "hex")
|
|
352
398
|
};
|
|
353
399
|
}
|
|
400
|
+
if (selector === exports.EXPECT_REVERT_SELECTOR01) {
|
|
401
|
+
//console.error(`vm.expectRevert();`);
|
|
402
|
+
ctx.expectRevert(true);
|
|
403
|
+
return {
|
|
404
|
+
executionGasUsed: 0n,
|
|
405
|
+
returnValue: Buffer.from("", "hex")
|
|
406
|
+
};
|
|
407
|
+
}
|
|
408
|
+
if (selector === exports.EXPECT_REVERT_SELECTOR02) {
|
|
409
|
+
//console.error(`vm.expectRevert(bytes4);`);
|
|
410
|
+
if (input.data.length < 8) {
|
|
411
|
+
return (0, evm_1.EvmErrorResult)(new exceptions_1.EvmError(exceptions_1.ERROR.REVERT), 0n);
|
|
412
|
+
}
|
|
413
|
+
const selector = input.data.slice(4, 8);
|
|
414
|
+
ctx.expectRevert((0, utils_1.bigEndianBufToBigint)(selector));
|
|
415
|
+
return {
|
|
416
|
+
executionGasUsed: 0n,
|
|
417
|
+
returnValue: Buffer.from("", "hex")
|
|
418
|
+
};
|
|
419
|
+
}
|
|
420
|
+
if (selector === exports.EXPECT_REVERT_SELECTOR03) {
|
|
421
|
+
if (input.data.length < 68) {
|
|
422
|
+
return (0, evm_1.EvmErrorResult)(new exceptions_1.EvmError(exceptions_1.ERROR.REVERT), 0n);
|
|
423
|
+
}
|
|
424
|
+
const len = Number((0, utils_1.bigEndianBufToBigint)(input.data.slice(36, 68)));
|
|
425
|
+
if (input.data.length < 68 + len) {
|
|
426
|
+
return (0, evm_1.EvmErrorResult)(new exceptions_1.EvmError(exceptions_1.ERROR.REVERT), 0n);
|
|
427
|
+
}
|
|
428
|
+
const bytes = input.data.slice(68, 68 + len);
|
|
429
|
+
ctx.expectRevert(bytes);
|
|
430
|
+
return {
|
|
431
|
+
executionGasUsed: 0n,
|
|
432
|
+
returnValue: Buffer.from("", "hex")
|
|
433
|
+
};
|
|
434
|
+
}
|
|
354
435
|
return {
|
|
355
436
|
executionGasUsed: 0n,
|
|
356
437
|
returnValue: Buffer.from("", "hex")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"foundry_cheatcodes.js","sourceRoot":"","sources":["../../src/debug/foundry_cheatcodes.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"foundry_cheatcodes.js","sourceRoot":"","sources":["../../src/debug/foundry_cheatcodes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opcode_interposing.d.ts","sourceRoot":"","sources":["../../src/debug/opcode_interposing.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"opcode_interposing.d.ts","sourceRoot":"","sources":["../../src/debug/opcode_interposing.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAEH,cAAc,EAGjB,MAAM,sBAAsB,CAAC;AAqB9B,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,cAAc,GAAG,SAAS,EAAE,CA4P1F"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.foundryInterposedOps = void 0;
|
|
4
|
+
const opcodes_1 = require("@ethereumjs/evm/dist/opcodes");
|
|
5
|
+
const util_1 = require("@ethereumjs/util");
|
|
6
|
+
const foundry_cheatcodes_1 = require("./foundry_cheatcodes");
|
|
4
7
|
const ethereumjs_util_1 = require("ethereumjs-util");
|
|
5
8
|
const utils_1 = require("../utils");
|
|
9
|
+
const exceptions_1 = require("@ethereumjs/evm/dist/exceptions");
|
|
6
10
|
function interopseOnOp(code, opcodes, handler) {
|
|
7
11
|
const originalOp = opcodes.opcodes.get(code);
|
|
8
12
|
const gasFunction = originalOp.dynamicGas ? opcodes.dynamicGasHandlers.get(code) : undefined;
|
|
@@ -54,6 +58,154 @@ function foundryInterposedOps(opcodes, foundryCtx) {
|
|
|
54
58
|
: runState.interpreter.getCaller();
|
|
55
59
|
runState.stack.push(caller);
|
|
56
60
|
}
|
|
61
|
+
],
|
|
62
|
+
// 0xf0: CREATE
|
|
63
|
+
[
|
|
64
|
+
0xf0,
|
|
65
|
+
async function (runState, common) {
|
|
66
|
+
// If we're calling vm.* ignore the expectedRevert
|
|
67
|
+
const expectedRevert = getExpectedRevert(foundryCtx);
|
|
68
|
+
const [value, offset, length] = runState.stack.popN(3);
|
|
69
|
+
if (common.isActivatedEIP(3860) &&
|
|
70
|
+
length > Number(common.param("vm", "maxInitCodeSize")) &&
|
|
71
|
+
!runState.interpreter._evm._allowUnlimitedInitCodeSize) {
|
|
72
|
+
(0, opcodes_1.trap)(exceptions_1.ERROR.INITCODE_SIZE_VIOLATION);
|
|
73
|
+
}
|
|
74
|
+
const gasLimit = runState.messageGasLimit;
|
|
75
|
+
runState.messageGasLimit = undefined;
|
|
76
|
+
let data = Buffer.alloc(0);
|
|
77
|
+
if (length !== BigInt(0)) {
|
|
78
|
+
data = runState.memory.read(Number(offset), Number(length), true);
|
|
79
|
+
}
|
|
80
|
+
const ret = await runState.interpreter.create(gasLimit, value, data);
|
|
81
|
+
handleCreateReturn(runState, ret, expectedRevert);
|
|
82
|
+
}
|
|
83
|
+
],
|
|
84
|
+
// 0xf5: CREATE2
|
|
85
|
+
[
|
|
86
|
+
0xf5,
|
|
87
|
+
async function (runState, common) {
|
|
88
|
+
const expectedRevert = foundryCtx.getExpectedRevert();
|
|
89
|
+
if (runState.interpreter.isStatic()) {
|
|
90
|
+
(0, opcodes_1.trap)(exceptions_1.ERROR.STATIC_STATE_CHANGE);
|
|
91
|
+
}
|
|
92
|
+
const [value, offset, length, salt] = runState.stack.popN(4);
|
|
93
|
+
if (common.isActivatedEIP(3860) &&
|
|
94
|
+
length > Number(common.param("vm", "maxInitCodeSize")) &&
|
|
95
|
+
!runState.interpreter._evm._allowUnlimitedInitCodeSize) {
|
|
96
|
+
(0, opcodes_1.trap)(exceptions_1.ERROR.INITCODE_SIZE_VIOLATION);
|
|
97
|
+
}
|
|
98
|
+
const gasLimit = runState.messageGasLimit;
|
|
99
|
+
runState.messageGasLimit = undefined;
|
|
100
|
+
let data = Buffer.alloc(0);
|
|
101
|
+
if (length !== BigInt(0)) {
|
|
102
|
+
data = runState.memory.read(Number(offset), Number(length), true);
|
|
103
|
+
}
|
|
104
|
+
const ret = await runState.interpreter.create2(gasLimit, value, data, (0, ethereumjs_util_1.setLengthLeft)((0, util_1.bigIntToBuffer)(salt), 32));
|
|
105
|
+
handleCreateReturn(runState, ret, expectedRevert);
|
|
106
|
+
}
|
|
107
|
+
],
|
|
108
|
+
// 0xf1: CALL
|
|
109
|
+
[
|
|
110
|
+
0xf1,
|
|
111
|
+
async function (runState) {
|
|
112
|
+
const [_currentGasLimit, toAddr, value, inOffset, inLength, outOffset, outLength] = runState.stack.popN(7);
|
|
113
|
+
const toAddress = new ethereumjs_util_1.Address((0, opcodes_1.addressToBuffer)(toAddr));
|
|
114
|
+
const expectedRevert = getExpectedRevert(foundryCtx, toAddress);
|
|
115
|
+
let data = Buffer.alloc(0);
|
|
116
|
+
if (inLength !== BigInt(0)) {
|
|
117
|
+
data = runState.memory.read(Number(inOffset), Number(inLength), true);
|
|
118
|
+
}
|
|
119
|
+
const gasLimit = runState.messageGasLimit;
|
|
120
|
+
runState.messageGasLimit = undefined;
|
|
121
|
+
const ret = await runState.interpreter.call(gasLimit, toAddress, value, data);
|
|
122
|
+
handleReturn(runState, ret, outOffset, outLength, expectedRevert);
|
|
123
|
+
}
|
|
124
|
+
],
|
|
125
|
+
// 0x00: STOP
|
|
126
|
+
[
|
|
127
|
+
0x00,
|
|
128
|
+
function (runState) {
|
|
129
|
+
const expectedRevert = getExpectedRevert(foundryCtx);
|
|
130
|
+
if (expectedRevert === undefined) {
|
|
131
|
+
(0, opcodes_1.trap)(exceptions_1.ERROR.STOP);
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
runState.interpreter.revert(Buffer.alloc(0));
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
],
|
|
138
|
+
// 0xf2: CALLCODE
|
|
139
|
+
[
|
|
140
|
+
0xf2,
|
|
141
|
+
async function (runState) {
|
|
142
|
+
const [_currentGasLimit, toAddr, value, inOffset, inLength, outOffset, outLength] = runState.stack.popN(7);
|
|
143
|
+
const toAddress = new ethereumjs_util_1.Address((0, opcodes_1.addressToBuffer)(toAddr));
|
|
144
|
+
const expectedRevert = getExpectedRevert(foundryCtx, toAddress);
|
|
145
|
+
const gasLimit = runState.messageGasLimit;
|
|
146
|
+
runState.messageGasLimit = undefined;
|
|
147
|
+
let data = Buffer.alloc(0);
|
|
148
|
+
if (inLength !== BigInt(0)) {
|
|
149
|
+
data = runState.memory.read(Number(inOffset), Number(inLength), true);
|
|
150
|
+
}
|
|
151
|
+
const ret = await runState.interpreter.callCode(gasLimit, toAddress, value, data);
|
|
152
|
+
handleReturn(runState, ret, outOffset, outLength, expectedRevert);
|
|
153
|
+
}
|
|
154
|
+
],
|
|
155
|
+
// 0xf4: DELEGATECALL
|
|
156
|
+
[
|
|
157
|
+
0xf4,
|
|
158
|
+
async function (runState) {
|
|
159
|
+
const value = runState.interpreter.getCallValue();
|
|
160
|
+
const [_currentGasLimit, toAddr, inOffset, inLength, outOffset, outLength] = runState.stack.popN(6);
|
|
161
|
+
const toAddress = new ethereumjs_util_1.Address((0, opcodes_1.addressToBuffer)(toAddr));
|
|
162
|
+
const expectedRevert = getExpectedRevert(foundryCtx, toAddress);
|
|
163
|
+
let data = Buffer.alloc(0);
|
|
164
|
+
if (inLength !== BigInt(0)) {
|
|
165
|
+
data = runState.memory.read(Number(inOffset), Number(inLength), true);
|
|
166
|
+
}
|
|
167
|
+
const gasLimit = runState.messageGasLimit;
|
|
168
|
+
runState.messageGasLimit = undefined;
|
|
169
|
+
const ret = await runState.interpreter.callDelegate(gasLimit, toAddress, value, data);
|
|
170
|
+
handleReturn(runState, ret, outOffset, outLength, expectedRevert);
|
|
171
|
+
}
|
|
172
|
+
],
|
|
173
|
+
// 0xfa: STATICCALL
|
|
174
|
+
[
|
|
175
|
+
0xfa,
|
|
176
|
+
async function (runState) {
|
|
177
|
+
const value = BigInt(0);
|
|
178
|
+
const [_currentGasLimit, toAddr, inOffset, inLength, outOffset, outLength] = runState.stack.popN(6);
|
|
179
|
+
const toAddress = new ethereumjs_util_1.Address((0, opcodes_1.addressToBuffer)(toAddr));
|
|
180
|
+
const expectedRevert = getExpectedRevert(foundryCtx, toAddress);
|
|
181
|
+
const gasLimit = runState.messageGasLimit;
|
|
182
|
+
runState.messageGasLimit = undefined;
|
|
183
|
+
let data = Buffer.alloc(0);
|
|
184
|
+
if (inLength !== BigInt(0)) {
|
|
185
|
+
data = runState.memory.read(Number(inOffset), Number(inLength), true);
|
|
186
|
+
}
|
|
187
|
+
const ret = await runState.interpreter.callStatic(gasLimit, toAddress, value, data);
|
|
188
|
+
handleReturn(runState, ret, outOffset, outLength, expectedRevert);
|
|
189
|
+
}
|
|
190
|
+
],
|
|
191
|
+
// 0xf3: RETURN
|
|
192
|
+
[
|
|
193
|
+
0xf3,
|
|
194
|
+
function (runState) {
|
|
195
|
+
const [offset, length] = runState.stack.popN(2);
|
|
196
|
+
let returnData = Buffer.alloc(0);
|
|
197
|
+
// If we're calling vm.* ignore the expectedRevert
|
|
198
|
+
const expectedRevert = getExpectedRevert(foundryCtx);
|
|
199
|
+
if (expectedRevert === undefined) {
|
|
200
|
+
if (length !== BigInt(0)) {
|
|
201
|
+
returnData = runState.memory.read(Number(offset), Number(length));
|
|
202
|
+
}
|
|
203
|
+
runState.interpreter.finish(returnData);
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
runState.interpreter.revert(returnData);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
57
209
|
]
|
|
58
210
|
]);
|
|
59
211
|
for (const [code, handler] of foundryOpInterposing) {
|
|
@@ -62,4 +214,47 @@ function foundryInterposedOps(opcodes, foundryCtx) {
|
|
|
62
214
|
return res;
|
|
63
215
|
}
|
|
64
216
|
exports.foundryInterposedOps = foundryInterposedOps;
|
|
217
|
+
function getExpectedRevert(ctx, toAddress) {
|
|
218
|
+
const expectedRevert = toAddress && toAddress.equals(foundry_cheatcodes_1.FoundryCheatcodesAddress)
|
|
219
|
+
? undefined
|
|
220
|
+
: ctx.getExpectedRevert();
|
|
221
|
+
if (expectedRevert) {
|
|
222
|
+
// We expected a revert - clear it
|
|
223
|
+
ctx.clearExpectRevert();
|
|
224
|
+
}
|
|
225
|
+
return expectedRevert;
|
|
226
|
+
}
|
|
227
|
+
function handleReturn(runState, ret, outOffset, outLength, expectedRevert) {
|
|
228
|
+
if (expectedRevert === undefined) {
|
|
229
|
+
// Nothing to do - no expected revert
|
|
230
|
+
}
|
|
231
|
+
else if (!(0, foundry_cheatcodes_1.returnStateMatchesRevert)(ret, runState, expectedRevert)) {
|
|
232
|
+
// If return doesn't match expected revert (no revert, or different bytes/signature) throw an error
|
|
233
|
+
ret = 0n;
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
// Otherwise we match the expected revert, so return all 0s
|
|
237
|
+
runState.returnBuffer = Buffer.alloc(Number(outLength), 0);
|
|
238
|
+
ret = 1n;
|
|
239
|
+
}
|
|
240
|
+
(0, opcodes_1.writeCallOutput)(runState, outOffset, outLength);
|
|
241
|
+
runState.stack.push(ret);
|
|
242
|
+
if (outLength === 0n) {
|
|
243
|
+
runState.returnBuffer = Buffer.alloc(32 * 128, 0);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
function handleCreateReturn(runState, ret, expectedRevert) {
|
|
247
|
+
if (expectedRevert === undefined) {
|
|
248
|
+
// Nothing to do - no expected revert
|
|
249
|
+
}
|
|
250
|
+
else if (!(0, foundry_cheatcodes_1.returnStateMatchesRevert)(ret, runState, expectedRevert)) {
|
|
251
|
+
// If return doesn't match expected revert (no revert, or different bytes/signature) throw an error
|
|
252
|
+
ret = 0n;
|
|
253
|
+
}
|
|
254
|
+
else {
|
|
255
|
+
// Otherwise we match the expected revert, so return all 1s
|
|
256
|
+
ret = 1n;
|
|
257
|
+
}
|
|
258
|
+
runState.stack.push(ret);
|
|
259
|
+
}
|
|
65
260
|
//# sourceMappingURL=opcode_interposing.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opcode_interposing.js","sourceRoot":"","sources":["../../src/debug/opcode_interposing.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"opcode_interposing.js","sourceRoot":"","sources":["../../src/debug/opcode_interposing.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,MAAM,CAAC"}
|
package/dist/utils/index.js
CHANGED
|
@@ -18,4 +18,5 @@ __exportStar(require("./misc"), exports);
|
|
|
18
18
|
__exportStar(require("./srcmap"), exports);
|
|
19
19
|
__exportStar(require("./immutable_map"), exports);
|
|
20
20
|
__exportStar(require("./test_runner"), exports);
|
|
21
|
+
__exportStar(require("./pp"), exports);
|
|
21
22
|
//# sourceMappingURL=index.js.map
|
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,2CAAyB;AACzB,kDAAgC;AAChC,gDAA8B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,2CAAyB;AACzB,kDAAgC;AAChC,gDAA8B;AAC9B,uCAAqB"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ArtifactManager, DbgStack, ExternalFrame, SolTxDebugger, StepState } from "../debug";
|
|
2
|
+
export declare function ppStackTrace(solDbg: SolTxDebugger, trace: StepState[], stack: DbgStack, curOffset: number): string;
|
|
3
|
+
export declare function printStepSourceString(step: StepState, lastExtStep: ExternalFrame, sources: Map<string, string>, artifactManager: ArtifactManager, prefix: string | undefined): string | undefined;
|
|
4
|
+
export declare function debugDumpTrace(trace: StepState[], artifactManager: ArtifactManager, prefix?: string): void;
|
|
5
|
+
export declare function ppStep(step: StepState): string;
|
|
6
|
+
//# sourceMappingURL=pp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pp.d.ts","sourceRoot":"","sources":["../../src/utils/pp.ts"],"names":[],"mappings":"AAqBA,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,CAsCpB;AAED,wBAAgB,cAAc,CAC1B,KAAK,EAAE,SAAS,EAAE,EAClB,eAAe,EAAE,eAAe,EAChC,MAAM,CAAC,EAAE,MAAM,GAChB,IAAI,CAwBN;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAqB9C"}
|
package/dist/utils/pp.js
ADDED
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ppStep = exports.debugDumpTrace = exports.printStepSourceString = exports.ppStackTrace = void 0;
|
|
4
|
+
const solc_typed_ast_1 = require("solc-typed-ast");
|
|
5
|
+
const debug_1 = require("../debug");
|
|
6
|
+
const srcLocation = require("src-location");
|
|
7
|
+
const fse = require("fs-extra");
|
|
8
|
+
function ppValue(typ, v, infer) {
|
|
9
|
+
if (v === undefined) {
|
|
10
|
+
return `<failed decoding>`;
|
|
11
|
+
}
|
|
12
|
+
if (typ instanceof solc_typed_ast_1.IntType) {
|
|
13
|
+
return v.toString();
|
|
14
|
+
}
|
|
15
|
+
if (typ instanceof solc_typed_ast_1.AddressType) {
|
|
16
|
+
return v.toString();
|
|
17
|
+
}
|
|
18
|
+
if (typ instanceof solc_typed_ast_1.FixedBytesType) {
|
|
19
|
+
return v.toString("hex");
|
|
20
|
+
}
|
|
21
|
+
if (typ instanceof solc_typed_ast_1.BoolType) {
|
|
22
|
+
return v ? "true" : "false";
|
|
23
|
+
}
|
|
24
|
+
if (typ instanceof solc_typed_ast_1.UserDefinedType) {
|
|
25
|
+
const def = typ.definition;
|
|
26
|
+
if (def instanceof solc_typed_ast_1.EnumDefinition) {
|
|
27
|
+
const optInd = Number(v);
|
|
28
|
+
(0, solc_typed_ast_1.assert)(optInd >= 0 && optInd < def.vMembers.length, `Enum value ${optInd} outside of enum range 0-${def.vMembers.length} of ${typ.pp()}`);
|
|
29
|
+
return `${def.name}.${def.vMembers[optInd].name}`;
|
|
30
|
+
}
|
|
31
|
+
if (def instanceof solc_typed_ast_1.ContractDefinition) {
|
|
32
|
+
return v.toString();
|
|
33
|
+
}
|
|
34
|
+
if (def instanceof solc_typed_ast_1.UserDefinedValueTypeDefinition) {
|
|
35
|
+
const underlyingType = infer.typeNameToTypeNode(def.underlyingType);
|
|
36
|
+
return ppValue(underlyingType, v, infer);
|
|
37
|
+
}
|
|
38
|
+
throw new Error(`NYI ppValue of user-defined type ${typ.pp()}`);
|
|
39
|
+
}
|
|
40
|
+
if (typ instanceof solc_typed_ast_1.PointerType) {
|
|
41
|
+
if (typ.to instanceof solc_typed_ast_1.ArrayType) {
|
|
42
|
+
const elT = typ.to.elementT;
|
|
43
|
+
return `[${v.map((el) => ppValue(elT, el, infer)).join(", ")}]`;
|
|
44
|
+
}
|
|
45
|
+
if (typ.to instanceof solc_typed_ast_1.BytesType) {
|
|
46
|
+
return `0x${v.toString("hex")}`;
|
|
47
|
+
}
|
|
48
|
+
if (typ.to instanceof solc_typed_ast_1.StringType) {
|
|
49
|
+
return `"${v}"`;
|
|
50
|
+
}
|
|
51
|
+
if (typ.to instanceof solc_typed_ast_1.UserDefinedType && typ.to.definition instanceof solc_typed_ast_1.StructDefinition) {
|
|
52
|
+
const fields = typ.to.definition.vMembers;
|
|
53
|
+
const strFields = [];
|
|
54
|
+
for (const field of fields) {
|
|
55
|
+
try {
|
|
56
|
+
const fieldT = infer.variableDeclarationToTypeNode(field);
|
|
57
|
+
strFields.push(field.name + ": " + ppValue(fieldT, v[field.name], infer));
|
|
58
|
+
}
|
|
59
|
+
catch (e) {
|
|
60
|
+
strFields.push(field.name + ": <failed decoding>");
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return `{${strFields.join(", ")}}`;
|
|
64
|
+
}
|
|
65
|
+
throw new Error(`NYI ppValue of referenced type ${typ.to.pp()}`);
|
|
66
|
+
}
|
|
67
|
+
throw new Error(`NYI ppValue of type ${typ.pp()}`);
|
|
68
|
+
}
|
|
69
|
+
function ppStackTrace(solDbg, trace, stack, curOffset) {
|
|
70
|
+
const res = [];
|
|
71
|
+
for (let i = 0; i < stack.length; i++) {
|
|
72
|
+
const frame = stack[i];
|
|
73
|
+
let frameStr;
|
|
74
|
+
const lastOffset = i < stack.length - 1 ? trace[stack[i + 1].startStep - 1].pc : curOffset;
|
|
75
|
+
const extFrame = (0, debug_1.lastExternalFrame)(frame);
|
|
76
|
+
const [lastPosInFrame] = solDbg.decodeSourceLoc(lastOffset, extFrame);
|
|
77
|
+
const info = (0, debug_1.getContractInfo)(frame);
|
|
78
|
+
let funArgs;
|
|
79
|
+
let funName;
|
|
80
|
+
let fileName;
|
|
81
|
+
const offset = trace[frame.startStep].pc;
|
|
82
|
+
if (info) {
|
|
83
|
+
fileName = info.fileName;
|
|
84
|
+
}
|
|
85
|
+
if (frame.callee) {
|
|
86
|
+
if (frame.callee instanceof solc_typed_ast_1.FunctionDefinition) {
|
|
87
|
+
let calleeName;
|
|
88
|
+
if (frame.callee.isConstructor) {
|
|
89
|
+
calleeName = "constructor";
|
|
90
|
+
}
|
|
91
|
+
else if (frame.callee.kind === solc_typed_ast_1.FunctionKind.Fallback) {
|
|
92
|
+
calleeName = "fallback";
|
|
93
|
+
}
|
|
94
|
+
else if (frame.callee.kind === solc_typed_ast_1.FunctionKind.Receive) {
|
|
95
|
+
calleeName = "receiver";
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
calleeName = frame.callee.name;
|
|
99
|
+
}
|
|
100
|
+
fileName = (frame.callee.vScope instanceof solc_typed_ast_1.ContractDefinition
|
|
101
|
+
? frame.callee.vScope.vScope
|
|
102
|
+
: frame.callee.vScope).sourceEntryKey;
|
|
103
|
+
funName =
|
|
104
|
+
(frame.callee.vScope instanceof solc_typed_ast_1.ContractDefinition
|
|
105
|
+
? frame.callee.vScope.name + "."
|
|
106
|
+
: "") + calleeName;
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
funName = `<compiler-generated function>@${offset}`;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
funName = `<unknown function>@${offset}`;
|
|
114
|
+
}
|
|
115
|
+
if (extFrame.info &&
|
|
116
|
+
lastPosInFrame &&
|
|
117
|
+
extFrame.info.artifact.fileMap.has(lastPosInFrame.sourceIndex)) {
|
|
118
|
+
const sourceInfo = extFrame.info.artifact.fileMap.get(lastPosInFrame.sourceIndex);
|
|
119
|
+
if (sourceInfo.contents !== undefined) {
|
|
120
|
+
const t = srcLocation.indexToLocation(sourceInfo.contents, lastPosInFrame.start, true);
|
|
121
|
+
fileName += `:${t.line}:${t.column}`;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
if (frame.arguments) {
|
|
125
|
+
const funArgEls = [];
|
|
126
|
+
for (const [, view] of frame.arguments) {
|
|
127
|
+
if (view === undefined) {
|
|
128
|
+
funArgEls.push("<unknown>");
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
const state = trace[frame.startStep];
|
|
132
|
+
(0, solc_typed_ast_1.assert)(info !== undefined, ``);
|
|
133
|
+
const infer = solDbg.artifactManager.infer(info.artifact.compilerVersion);
|
|
134
|
+
const val = (0, debug_1.decodeValue)(view, state, infer);
|
|
135
|
+
funArgEls.push(ppValue(view.type, val, infer));
|
|
136
|
+
}
|
|
137
|
+
funArgs = funArgEls.join(", ");
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
funArgs = "<unknown>";
|
|
141
|
+
}
|
|
142
|
+
if (frame.kind === debug_1.FrameKind.InternalCall) {
|
|
143
|
+
(0, solc_typed_ast_1.assert)(fileName !== undefined, ``);
|
|
144
|
+
frameStr = fileName + " ";
|
|
145
|
+
frameStr += `${funName}(${funArgs})`;
|
|
146
|
+
}
|
|
147
|
+
else if (frame.kind === debug_1.FrameKind.Call) {
|
|
148
|
+
if (frame.info === undefined) {
|
|
149
|
+
frameStr = `<unknown function(s) in contract ${frame.address.toString()}>`;
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
// If we have debug info for this contract ignore the external frame - it will duplicate the internal frame
|
|
153
|
+
continue;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
if (frame.info === undefined || frame.info.ast === undefined) {
|
|
158
|
+
frameStr = `<deploying unknown contract>`;
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
frameStr = `${fileName} `;
|
|
162
|
+
frameStr += `<deploying ${funName}(${funArgs})>`;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
res.push(frameStr);
|
|
166
|
+
}
|
|
167
|
+
return res.reverse().join("\n");
|
|
168
|
+
}
|
|
169
|
+
exports.ppStackTrace = ppStackTrace;
|
|
170
|
+
function printStepSourceString(step, lastExtStep, sources, artifactManager, prefix) {
|
|
171
|
+
const info = step.contractInfo;
|
|
172
|
+
if (info === undefined) {
|
|
173
|
+
return undefined;
|
|
174
|
+
}
|
|
175
|
+
const errorLoc = step.src;
|
|
176
|
+
if (errorLoc === undefined) {
|
|
177
|
+
return undefined;
|
|
178
|
+
}
|
|
179
|
+
const fileInd = errorLoc.sourceIndex;
|
|
180
|
+
const fileInfo = artifactManager.getFileById(fileInd, info, lastExtStep.kind === "creation");
|
|
181
|
+
if (fileInfo === undefined) {
|
|
182
|
+
return undefined;
|
|
183
|
+
}
|
|
184
|
+
const fileName = fileInfo.name;
|
|
185
|
+
let fileContents = sources.get(fileName);
|
|
186
|
+
if (fileContents === undefined) {
|
|
187
|
+
const actualFileName = prefix ? prefix + fileName : fileName;
|
|
188
|
+
fileContents = fse.readFileSync(actualFileName, {
|
|
189
|
+
encoding: "utf-8"
|
|
190
|
+
});
|
|
191
|
+
sources.set(fileName, fileContents);
|
|
192
|
+
}
|
|
193
|
+
return fileContents.substring(errorLoc.start, errorLoc.start + errorLoc.length);
|
|
194
|
+
}
|
|
195
|
+
exports.printStepSourceString = printStepSourceString;
|
|
196
|
+
function debugDumpTrace(trace, artifactManager, prefix) {
|
|
197
|
+
const sources = new Map();
|
|
198
|
+
for (let i = 0; i < trace.length; i++) {
|
|
199
|
+
const step = trace[i];
|
|
200
|
+
const jumpType = (step.op.mnemonic === "JUMP" || step.op.mnemonic === "JUMPI") && step.src
|
|
201
|
+
? step.src.jump
|
|
202
|
+
: "";
|
|
203
|
+
const srcString = printStepSourceString(step, (0, debug_1.lastExternalFrame)(step.stack), sources, artifactManager, prefix);
|
|
204
|
+
console.error(`${i} ${step.pc}: ${step.op.mnemonic} ${jumpType} ${srcString !== undefined ? srcString : ""}`);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
exports.debugDumpTrace = debugDumpTrace;
|
|
208
|
+
function ppStep(step) {
|
|
209
|
+
let contractId;
|
|
210
|
+
const addrStr = `${step.address.toString().slice(36)}`;
|
|
211
|
+
if (step.contractInfo) {
|
|
212
|
+
contractId = `${step.contractInfo.contractName}@${addrStr}`;
|
|
213
|
+
}
|
|
214
|
+
else if (step.codeMdHash) {
|
|
215
|
+
contractId = `0x${step.codeMdHash.slice(0, 6)}...${step.codeMdHash.slice(60)}@${addrStr}`;
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
contractId = `unknown@${addrStr}`;
|
|
219
|
+
}
|
|
220
|
+
const immStr = step.op.immediates
|
|
221
|
+
.map((imm) => step.code.slice(step.pc + 1, step.pc + 1 + imm.length).toString("hex"))
|
|
222
|
+
.join(" ");
|
|
223
|
+
const stackStr = step.evmStack
|
|
224
|
+
.slice(step.evmStack.length - step.op.nPop, step.evmStack.length)
|
|
225
|
+
.map((v) => v.toString("hex"))
|
|
226
|
+
.join(", ");
|
|
227
|
+
return `${contractId}# ${step.pc}: ${step.op.mnemonic}(${step.op.opcode.toString(16)}) ${immStr} [${stackStr}]`;
|
|
228
|
+
}
|
|
229
|
+
exports.ppStep = ppStep;
|
|
230
|
+
//# sourceMappingURL=pp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pp.js","sourceRoot":"","sources":["../../src/utils/pp.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,6 +37,7 @@ export declare enum ResultKind {
|
|
|
37
37
|
ContractCreated = "contract_created",
|
|
38
38
|
ValueReturned = "value_returned",
|
|
39
39
|
Revert = "revert",
|
|
40
|
+
LastRevert = "last_revert",
|
|
40
41
|
FoundryFail = "foundry_fail"
|
|
41
42
|
}
|
|
42
43
|
interface ResultContractCreated {
|
|
@@ -50,11 +51,14 @@ interface ResultValueReturned {
|
|
|
50
51
|
interface ResultRevert {
|
|
51
52
|
kind: ResultKind.Revert;
|
|
52
53
|
}
|
|
54
|
+
interface ResultLastRevert {
|
|
55
|
+
kind: ResultKind.LastRevert;
|
|
56
|
+
}
|
|
53
57
|
interface ResultFoundryFail {
|
|
54
58
|
kind: ResultKind.FoundryFail;
|
|
55
59
|
}
|
|
56
60
|
export interface TestStep extends BaseTestStep {
|
|
57
|
-
result: ResultContractCreated | ResultValueReturned | ResultRevert | ResultFoundryFail;
|
|
61
|
+
result: ResultContractCreated | ResultValueReturned | ResultRevert | ResultLastRevert | ResultFoundryFail;
|
|
58
62
|
errorStack?: string[];
|
|
59
63
|
errorString?: string;
|
|
60
64
|
errorPathPrefix?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test_runner.d.ts","sourceRoot":"","sources":["../../src/utils/test_runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAU,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAIzC,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,SAAS,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,SAAS,CAAC;IACjB,aAAa,EAAE,SAAS,CAAC;IACzB,eAAe,EAAE,SAAS,CAAC;IAC3B,aAAa,EAAE,SAAS,CAAC;IACzB,WAAW,EAAE,SAAS,CAAC;IACvB,SAAS,EAAE,SAAS,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,SAAS,CAAC;IACnB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE;QACL,CAAC,WAAW,EAAE,SAAS,GAAG,SAAS,CAAC;KACvC,CAAC;CACL;AAED,MAAM,WAAW,YAAY;IACzB,QAAQ,EAAE;QACN,CAAC,OAAO,EAAE,SAAS,GAAG,kBAAkB,CAAC;KAC5C,CAAC;CACL;AAED,UAAU,YAAY;IAClB,YAAY,EAAE,YAAY,CAAC;IAC3B,KAAK,EAAE,YAAY,EAAE,CAAC;CACzB;AAED,oBAAY,UAAU;IAClB,eAAe,qBAAqB;IACpC,aAAa,mBAAmB;IAChC,MAAM,WAAW;IACjB,WAAW,iBAAiB;CAC/B;AAED,UAAU,qBAAqB;IAC3B,IAAI,EAAE,UAAU,CAAC,eAAe,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,mBAAmB;IACzB,IAAI,EAAE,UAAU,CAAC,aAAa,CAAC;IAC/B,KAAK,EAAE,SAAS,CAAC;CACpB;AAED,UAAU,YAAY;IAClB,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC;CAC3B;AAED,UAAU,iBAAiB;IACvB,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC;CAChC;AAED,MAAM,WAAW,QAAS,SAAQ,YAAY;IAE1C,MAAM,
|
|
1
|
+
{"version":3,"file":"test_runner.d.ts","sourceRoot":"","sources":["../../src/utils/test_runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,7 @@ var ResultKind;
|
|
|
11
11
|
ResultKind["ContractCreated"] = "contract_created";
|
|
12
12
|
ResultKind["ValueReturned"] = "value_returned";
|
|
13
13
|
ResultKind["Revert"] = "revert";
|
|
14
|
+
ResultKind["LastRevert"] = "last_revert";
|
|
14
15
|
ResultKind["FoundryFail"] = "foundry_fail";
|
|
15
16
|
})(ResultKind || (exports.ResultKind = ResultKind = {}));
|
|
16
17
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test_runner.js","sourceRoot":"","sources":["../../src/utils/test_runner.ts"],"names":[],"mappings":";;;AAAA,6CAA0C;AAG1C,2CAAoD;AAEpD,mDAAwC;AAExC,iCAAiF;AACjF,+CAA8C;AAoC9C,IAAY,
|
|
1
|
+
{"version":3,"file":"test_runner.js","sourceRoot":"","sources":["../../src/utils/test_runner.ts"],"names":[],"mappings":"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"}
|