hardhat 2.12.0 → 2.12.1-ir.0
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/internal/core/config/config-loading.js +16 -6
- package/internal/core/config/config-loading.js.map +1 -1
- package/internal/hardhat-network/stack-traces/debug.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/debug.js +6 -2
- package/internal/hardhat-network/stack-traces/debug.js.map +1 -1
- package/internal/hardhat-network/stack-traces/error-inferrer.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/error-inferrer.js +70 -33
- package/internal/hardhat-network/stack-traces/error-inferrer.js.map +1 -1
- package/internal/hardhat-network/stack-traces/solidity-errors.js +1 -1
- package/internal/hardhat-network/stack-traces/solidity-errors.js.map +1 -1
- package/internal/hardhat-network/stack-traces/solidity-stack-trace.d.ts +1 -1
- package/internal/hardhat-network/stack-traces/solidity-stack-trace.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/solidityTracer.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/solidityTracer.js +13 -0
- package/internal/hardhat-network/stack-traces/solidityTracer.js.map +1 -1
- package/package.json +1 -1
- package/src/internal/core/config/config-loading.ts +25 -10
- package/src/internal/hardhat-network/stack-traces/debug.ts +9 -2
- package/src/internal/hardhat-network/stack-traces/error-inferrer.ts +146 -58
- package/src/internal/hardhat-network/stack-traces/solidity-errors.ts +1 -1
- package/src/internal/hardhat-network/stack-traces/solidity-stack-trace.ts +1 -1
- package/src/internal/hardhat-network/stack-traces/solidityTracer.ts +13 -0
- package/src/types/artifacts.ts +1 -0
- package/types/artifacts.d.ts +1 -0
- package/types/artifacts.d.ts.map +1 -1
|
@@ -192,19 +192,29 @@ Learn more about compiler configuration at https://hardhat.org/config
|
|
|
192
192
|
}
|
|
193
193
|
}
|
|
194
194
|
function checkUnsupportedSolidityConfig(resolvedConfig) {
|
|
195
|
-
const
|
|
196
|
-
const
|
|
197
|
-
const
|
|
195
|
+
const compilerConfigs = resolvedConfig.solidity.compilers;
|
|
196
|
+
const overrideConfigs = Object.values(resolvedConfig.solidity.overrides);
|
|
197
|
+
const solcConfigs = [...compilerConfigs, ...overrideConfigs];
|
|
198
198
|
const unsupportedVersions = [];
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
199
|
+
let viaIREnabled = false;
|
|
200
|
+
for (const solcConfig of solcConfigs) {
|
|
201
|
+
if (!semver_1.default.satisfies(solcConfig.version, constants_1.SUPPORTED_SOLIDITY_VERSION_RANGE)) {
|
|
202
|
+
unsupportedVersions.push(solcConfig.version);
|
|
203
|
+
}
|
|
204
|
+
if (solcConfig.settings.viaIR === true) {
|
|
205
|
+
viaIREnabled = true;
|
|
202
206
|
}
|
|
203
207
|
}
|
|
204
208
|
if (unsupportedVersions.length > 0) {
|
|
205
209
|
console.warn(chalk_1.default.yellow(`Solidity ${unsupportedVersions.join(", ")} ${unsupportedVersions.length === 1 ? "is" : "are"} not fully supported yet. You can still use Hardhat, but some features, like stack traces, might not work correctly.
|
|
206
210
|
|
|
207
211
|
Learn more at https://hardhat.org/hardhat-runner/docs/reference/solidity-support
|
|
212
|
+
`));
|
|
213
|
+
}
|
|
214
|
+
if (viaIREnabled) {
|
|
215
|
+
console.warn(chalk_1.default.yellow(`Your solidity settings have viaIR enabled, which is not fully supported yet. You can still use Hardhat, but some features, like stack traces, might not work correctly.
|
|
216
|
+
|
|
217
|
+
Learn more at https://hardhat.org/solc-viair
|
|
208
218
|
`));
|
|
209
219
|
}
|
|
210
220
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-loading.js","sourceRoot":"","sources":["../../../src/internal/core/config/config-loading.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"config-loading.js","sourceRoot":"","sources":["../../../src/internal/core/config/config-loading.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../../src/internal/hardhat-network/stack-traces/debug.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../../src/internal/hardhat-network/stack-traces/debug.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAIlB,YAAY,EACZ,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,kBAAkB,EAGnB,MAAM,wBAAwB,CAAC;AAIhC,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,SAAI,QAY/D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,QAgCxE;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,sBAAsB,EAC7B,KAAK,EAAE,MAAM,QAcd;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,QAyBpE;AA4ED,wBAAgB,eAAe,CAAC,KAAK,EAAE,kBAAkB,QA8BxD"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.printStackTrace = exports.printCallTrace = exports.printPrecompileTrace = exports.printCreateTrace = exports.printMessageTrace = void 0;
|
|
4
7
|
const ethereumjs_util_1 = require("@nomicfoundation/ethereumjs-util");
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
5
9
|
const message_trace_1 = require("./message-trace");
|
|
6
10
|
const model_1 = require("./model");
|
|
7
11
|
const opcodes_1 = require("./opcodes");
|
|
@@ -94,7 +98,7 @@ function traceSteps(trace, depth) {
|
|
|
94
98
|
}
|
|
95
99
|
if ((0, opcodes_1.isJump)(inst.opcode)) {
|
|
96
100
|
const jump = inst.jumpType !== model_1.JumpType.NOT_JUMP
|
|
97
|
-
?
|
|
101
|
+
? chalk_1.default.bold(`(${model_1.JumpType[inst.jumpType]})`)
|
|
98
102
|
: "";
|
|
99
103
|
console.log(`${margin} ${pc} ${opcodes_1.Opcode[inst.opcode]} ${jump}`.padEnd(50), location);
|
|
100
104
|
}
|
|
@@ -138,7 +142,7 @@ function printStackTrace(trace) {
|
|
|
138
142
|
...entry,
|
|
139
143
|
sourceReference: flattenSourceReference(entry.sourceReference),
|
|
140
144
|
}));
|
|
141
|
-
console.log(JSON.stringify(withFlattenedSourceReferences,
|
|
145
|
+
console.log(JSON.stringify(withFlattenedSourceReferences, (key, value) => (typeof value === "bigint" ? value.toString() : value), 2));
|
|
142
146
|
}
|
|
143
147
|
exports.printStackTrace = printStackTrace;
|
|
144
148
|
//# sourceMappingURL=debug.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../../../src/internal/hardhat-network/stack-traces/debug.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../../../src/internal/hardhat-network/stack-traces/debug.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-inferrer.d.ts","sourceRoot":"","sources":["../../../src/internal/hardhat-network/stack-traces/error-inferrer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"error-inferrer.d.ts","sourceRoot":"","sources":["../../../src/internal/hardhat-network/stack-traces/error-inferrer.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,sBAAsB,EAOtB,YAAY,EACb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,QAAQ,EAIR,WAAW,EAGZ,MAAM,SAAS,CAAC;AAEjB,OAAO,EAEL,6BAA6B,EAI7B,8BAA8B,EAK9B,kBAAkB,EAKnB,MAAM,wBAAwB,CAAC;AAQhC,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,kBAAkB,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;CACnB;AAID,qBAAa,aAAa;IACjB,6BAA6B,CAClC,KAAK,EAAE,uBAAuB,GAC7B,kBAAkB,GAAG,SAAS;IAkE1B,+BAA+B,CACpC,KAAK,EAAE,yBAAyB,GAC/B,kBAAkB,GAAG,SAAS;IAqB1B,iBAAiB,CACtB,KAAK,EAAE,sBAAsB,EAC7B,UAAU,EAAE,kBAAkB,EAC9B,iBAAiB,EAAE,WAAW,EAAE,EAChC,kBAAkB,EAAE,OAAO,EAC3B,kBAAkB,EAAE,cAAc,GAAG,SAAS,GAC7C,kBAAkB;IAiBd,qBAAqB,CAC1B,UAAU,EAAE,kBAAkB,GAC7B,kBAAkB;IAqErB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA2E5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAiC5B;;OAEG;IACH,OAAO,CAAC,2BAA2B;IA4HnC;;OAEG;IACH,OAAO,CAAC,WAAW;IAyCnB,OAAO,CAAC,kBAAkB;IA+C1B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA0F7B,OAAO,CAAC,uBAAuB;IAuB/B,OAAO,CAAC,+BAA+B;IAevC,OAAO,CAAC,sBAAsB;IAc9B,OAAO,CAAC,8BAA8B;IAetC,OAAO,CAAC,mBAAmB;IAmB3B,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,oCAAoC;IAyB5C,OAAO,CAAC,0BAA0B;IAqBlC,OAAO,CAAC,gCAAgC;IAiBxC,OAAO,CAAC,kCAAkC;IAyB1C,OAAO,CAAC,0BAA0B;IAiBlC,OAAO,CAAC,+CAA+C;IAavD,OAAO,CAAC,0BAA0B;IA0BlC,OAAO,CAAC,gCAAgC;IAwBxC,OAAO,CAAC,6BAA6B;IAsBrC;;;OAGG;IACH,OAAO,CAAC,mCAAmC;IAwB3C,OAAO,CAAC,mCAAmC;IA+D3C,OAAO,CAAC,4CAA4C;IAmCpD,OAAO,CAAC,uBAAuB;IA4B/B,OAAO,CAAC,mCAAmC;IAY3C,OAAO,CAAC,kCAAkC;IAY1C,OAAO,CAAC,wBAAwB;IAchC,OAAO,CAAC,iDAAiD;IAqBzD,OAAO,CAAC,gDAAgD;IAexD,OAAO,CAAC,sDAAsD;IAqB9D,OAAO,CAAC,+BAA+B;IAkBvC,OAAO,CAAC,mDAAmD;IAoD3D,OAAO,CAAC,iDAAiD;IAUzD,OAAO,CAAC,gCAAgC;IAsBxC,OAAO,CAAC,mDAAmD;IA6H3D,OAAO,CAAC,wBAAwB;IAIhC,OAAO,CAAC,6BAA6B;IAyBrC,OAAO,CAAC,6CAA6C;IAoBrD,OAAO,CAAC,oCAAoC;IAqB5C,OAAO,CAAC,oDAAoD;IAoB5D,OAAO,CAAC,gCAAgC;IA4BxC,OAAO,CAAC,oBAAoB;IA8B5B,OAAO,CAAC,kBAAkB;IAgB1B,OAAO,CAAC,eAAe;IA0BvB,OAAO,CAAC,0BAA0B;IA0BlC,OAAO,CAAC,uBAAuB;IAmE/B,OAAO,CAAC,+BAA+B;IAoBvC,OAAO,CAAC,kBAAkB;CAG3B;AAED,wBAAgB,qCAAqC,CACnD,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,WAAW,GAChB,6BAA6B,GAAG,8BAA8B,CA2DhE"}
|
|
@@ -4,15 +4,19 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.instructionToCallstackStackTraceEntry = exports.ErrorInferrer = void 0;
|
|
7
|
+
/* eslint "@typescript-eslint/no-non-null-assertion": "error" */
|
|
7
8
|
const exceptions_1 = require("@nomicfoundation/ethereumjs-evm/dist/exceptions");
|
|
8
9
|
const abi_1 = require("@ethersproject/abi");
|
|
10
|
+
const debug_1 = __importDefault(require("debug"));
|
|
9
11
|
const semver_1 = __importDefault(require("semver"));
|
|
12
|
+
const errors_1 = require("../../core/errors");
|
|
10
13
|
const abi_helpers_1 = require("../../util/abi-helpers");
|
|
11
14
|
const return_data_1 = require("../provider/return-data");
|
|
12
15
|
const message_trace_1 = require("./message-trace");
|
|
13
16
|
const model_1 = require("./model");
|
|
14
17
|
const opcodes_1 = require("./opcodes");
|
|
15
18
|
const solidity_stack_trace_1 = require("./solidity-stack-trace");
|
|
19
|
+
const log = (0, debug_1.default)("hardhat:core:hardhat-network:errors:error-inferrer");
|
|
16
20
|
const FIRST_SOLC_VERSION_CREATE_PARAMS_VALIDATION = "0.5.9";
|
|
17
21
|
const FIRST_SOLC_VERSION_RECEIVE_FUNCTION = "0.6.0";
|
|
18
22
|
const FIRST_SOLC_VERSION_WITH_UNMAPPED_REVERTS = "0.6.3";
|
|
@@ -23,7 +27,8 @@ class ErrorInferrer {
|
|
|
23
27
|
return this._getDirectLibraryCallErrorStackTrace(trace);
|
|
24
28
|
}
|
|
25
29
|
const calledFunction = trace.bytecode.contract.getFunctionFromSelector(trace.calldata.slice(0, 4));
|
|
26
|
-
if (
|
|
30
|
+
if (calledFunction !== undefined &&
|
|
31
|
+
this._isFunctionNotPayableError(trace, calledFunction)) {
|
|
27
32
|
return [
|
|
28
33
|
{
|
|
29
34
|
type: solidity_stack_trace_1.StackTraceEntryType.FUNCTION_NOT_PAYABLE_ERROR,
|
|
@@ -115,7 +120,8 @@ class ErrorInferrer {
|
|
|
115
120
|
stacktrace[i + 2].type === solidity_stack_trace_1.StackTraceEntryType.RETURNDATA_SIZE_ERROR) {
|
|
116
121
|
// ! below for tsc. we confirmed existence in the enclosing conditional.
|
|
117
122
|
const thatSrcRef = stacktrace[i + 2].sourceReference;
|
|
118
|
-
if (
|
|
123
|
+
if (thatSrcRef !== undefined &&
|
|
124
|
+
frame.sourceReference.range[0] === thatSrcRef.range[0] &&
|
|
119
125
|
frame.sourceReference.range[1] === thatSrcRef.range[1] &&
|
|
120
126
|
frame.sourceReference.line === thatSrcRef.line) {
|
|
121
127
|
return false;
|
|
@@ -146,7 +152,9 @@ class ErrorInferrer {
|
|
|
146
152
|
* Check if the last submessage can be used to generate the stack trace.
|
|
147
153
|
*/
|
|
148
154
|
_checkLastSubmessage(trace, stacktrace, lastSubmessageData) {
|
|
155
|
+
log("Start last submessage heuristic");
|
|
149
156
|
if (lastSubmessageData === undefined) {
|
|
157
|
+
log("Last submessage is undefined");
|
|
150
158
|
return undefined;
|
|
151
159
|
}
|
|
152
160
|
const inferredStacktrace = [...stacktrace];
|
|
@@ -166,6 +174,7 @@ class ErrorInferrer {
|
|
|
166
174
|
inferredStacktrace.push(...lastSubmessageData.stacktrace);
|
|
167
175
|
if (this._isContractCallRunOutOfGasError(trace, lastSubmessageData.stepIndex)) {
|
|
168
176
|
const lastFrame = inferredStacktrace.pop();
|
|
177
|
+
(0, errors_1.assertHardhatInvariant)(lastFrame !== undefined, "Expected inferred stack trace to have at least one frame");
|
|
169
178
|
inferredStacktrace.push({
|
|
170
179
|
type: solidity_stack_trace_1.StackTraceEntryType.CONTRACT_CALL_RUN_OUT_OF_GAS_ERROR,
|
|
171
180
|
sourceReference: lastFrame.sourceReference,
|
|
@@ -189,6 +198,7 @@ class ErrorInferrer {
|
|
|
189
198
|
* Check if the last call/create that was done failed.
|
|
190
199
|
*/
|
|
191
200
|
_checkFailedLastCall(trace, stacktrace) {
|
|
201
|
+
log("Start last call/create failed heuristic");
|
|
192
202
|
for (let stepIndex = trace.steps.length - 2; stepIndex >= 0; stepIndex--) {
|
|
193
203
|
const step = trace.steps[stepIndex];
|
|
194
204
|
const nextStep = trace.steps[stepIndex + 1];
|
|
@@ -216,6 +226,7 @@ class ErrorInferrer {
|
|
|
216
226
|
lastInstruction.opcode !== opcodes_1.Opcode.INVALID) {
|
|
217
227
|
return;
|
|
218
228
|
}
|
|
229
|
+
log("Last instruction is a revert or an invalid opcode");
|
|
219
230
|
const inferredStacktrace = [...stacktrace];
|
|
220
231
|
if (lastInstruction.location !== undefined &&
|
|
221
232
|
(!(0, message_trace_1.isDecodedCallTrace)(trace) || jumpedIntoFunction)) {
|
|
@@ -248,9 +259,11 @@ class ErrorInferrer {
|
|
|
248
259
|
}
|
|
249
260
|
else if ((0, message_trace_1.isDecodedCallTrace)(trace)) {
|
|
250
261
|
// This is here because of the optimizations
|
|
262
|
+
const functionSelector = trace.bytecode.contract.getFunctionFromSelector(trace.calldata.slice(0, 4));
|
|
263
|
+
(0, errors_1.assertHardhatInvariant)(functionSelector !== undefined, "Expected function selector to be defined");
|
|
251
264
|
inferredStacktrace.push({
|
|
252
265
|
type: solidity_stack_trace_1.StackTraceEntryType.REVERT_ERROR,
|
|
253
|
-
sourceReference: this._getFunctionStartSourceReference(trace,
|
|
266
|
+
sourceReference: this._getFunctionStartSourceReference(trace, functionSelector),
|
|
254
267
|
message: new return_data_1.ReturnData(trace.returnData),
|
|
255
268
|
isInvalidOpcodeError: lastInstruction.opcode === opcodes_1.Opcode.INVALID,
|
|
256
269
|
});
|
|
@@ -279,6 +292,7 @@ class ErrorInferrer {
|
|
|
279
292
|
inferredStacktrace.push(revertFrame);
|
|
280
293
|
return this._fixInitialModifier(trace, inferredStacktrace);
|
|
281
294
|
}
|
|
295
|
+
log("Last instruction is a revert or an invalid opcode, but nothing could be inferred");
|
|
282
296
|
}
|
|
283
297
|
/**
|
|
284
298
|
* Check if the trace reverted with a panic error.
|
|
@@ -336,6 +350,7 @@ class ErrorInferrer {
|
|
|
336
350
|
* Check last instruction to try to infer the error.
|
|
337
351
|
*/
|
|
338
352
|
_checkLastInstruction(trace, stacktrace, functionJumpdests, jumpedIntoFunction) {
|
|
353
|
+
log("Start last executed instruction heuristic");
|
|
339
354
|
const lastStep = trace.steps[trace.steps.length - 1];
|
|
340
355
|
if (!(0, message_trace_1.isEvmStep)(lastStep)) {
|
|
341
356
|
throw new Error("This should not happen: MessageTrace ends with a subtrace");
|
|
@@ -385,16 +400,20 @@ class ErrorInferrer {
|
|
|
385
400
|
}
|
|
386
401
|
}
|
|
387
402
|
_checkNonContractCalled(trace, stacktrace) {
|
|
403
|
+
log("Start non-contract address called heuristic");
|
|
388
404
|
if (this._isCalledNonContractAccountError(trace)) {
|
|
405
|
+
const sourceReference = this._getLastSourceReference(trace);
|
|
406
|
+
// We are sure this is not undefined because there was at least a call instruction
|
|
407
|
+
(0, errors_1.assertHardhatInvariant)(sourceReference !== undefined, "Expected source reference to be defined");
|
|
389
408
|
const nonContractCalledFrame = {
|
|
390
409
|
type: solidity_stack_trace_1.StackTraceEntryType.NONCONTRACT_ACCOUNT_CALLED_ERROR,
|
|
391
|
-
|
|
392
|
-
sourceReference: this._getLastSourceReference(trace),
|
|
410
|
+
sourceReference,
|
|
393
411
|
};
|
|
394
412
|
return [...stacktrace, nonContractCalledFrame];
|
|
395
413
|
}
|
|
396
414
|
}
|
|
397
415
|
_checkSolidity063UnmappedRevert(trace, stacktrace) {
|
|
416
|
+
log("Start solidity 0.6.3 unmapped revert heuristic");
|
|
398
417
|
if (this._solidity063MaybeUnmappedRevert(trace)) {
|
|
399
418
|
const revertFrame = this._solidity063GetFrameForUnmappedRevertWithinFunction(trace);
|
|
400
419
|
if (revertFrame !== undefined) {
|
|
@@ -403,6 +422,7 @@ class ErrorInferrer {
|
|
|
403
422
|
}
|
|
404
423
|
}
|
|
405
424
|
_checkContractTooLarge(trace) {
|
|
425
|
+
log("Start contract is too large heuristic");
|
|
406
426
|
if ((0, message_trace_1.isCreateTrace)(trace) && this._isContractTooLargeError(trace)) {
|
|
407
427
|
return [
|
|
408
428
|
{
|
|
@@ -413,6 +433,7 @@ class ErrorInferrer {
|
|
|
413
433
|
}
|
|
414
434
|
}
|
|
415
435
|
_otherExecutionErrorStacktrace(trace, stacktrace) {
|
|
436
|
+
log("No heuristic matched, return other execution error entry");
|
|
416
437
|
const otherExecutionErrorFrame = {
|
|
417
438
|
type: solidity_stack_trace_1.StackTraceEntryType.OTHER_EXECUTION_ERROR,
|
|
418
439
|
sourceReference: this._getLastSourceReference(trace),
|
|
@@ -453,9 +474,6 @@ class ErrorInferrer {
|
|
|
453
474
|
];
|
|
454
475
|
}
|
|
455
476
|
_isFunctionNotPayableError(trace, calledFunction) {
|
|
456
|
-
if (calledFunction === undefined) {
|
|
457
|
-
return false;
|
|
458
|
-
}
|
|
459
477
|
// This error doesn't return data
|
|
460
478
|
if (trace.returnData.length > 0) {
|
|
461
479
|
return false;
|
|
@@ -662,7 +680,10 @@ class ErrorInferrer {
|
|
|
662
680
|
if (inst.location === undefined) {
|
|
663
681
|
continue;
|
|
664
682
|
}
|
|
665
|
-
|
|
683
|
+
const sourceReference = sourceLocationToSourceReference(trace.bytecode, inst.location);
|
|
684
|
+
if (sourceReference !== undefined) {
|
|
685
|
+
return sourceReference;
|
|
686
|
+
}
|
|
666
687
|
}
|
|
667
688
|
return undefined;
|
|
668
689
|
}
|
|
@@ -688,26 +709,31 @@ class ErrorInferrer {
|
|
|
688
709
|
func.location.contains(lastInstruction.location));
|
|
689
710
|
}
|
|
690
711
|
_instructionWithinFunctionToRevertStackTraceEntry(trace, inst) {
|
|
712
|
+
const sourceReference = sourceLocationToSourceReference(trace.bytecode, inst.location);
|
|
713
|
+
(0, errors_1.assertHardhatInvariant)(sourceReference !== undefined, "Expected source reference to be defined");
|
|
691
714
|
return {
|
|
692
715
|
type: solidity_stack_trace_1.StackTraceEntryType.REVERT_ERROR,
|
|
693
|
-
sourceReference
|
|
716
|
+
sourceReference,
|
|
694
717
|
message: new return_data_1.ReturnData(trace.returnData),
|
|
695
718
|
isInvalidOpcodeError: inst.opcode === opcodes_1.Opcode.INVALID,
|
|
696
719
|
};
|
|
697
720
|
}
|
|
698
721
|
_instructionWithinFunctionToPanicStackTraceEntry(trace, inst, errorCode) {
|
|
722
|
+
const lastSourceReference = this._getLastSourceReference(trace);
|
|
699
723
|
return {
|
|
700
724
|
type: solidity_stack_trace_1.StackTraceEntryType.PANIC_ERROR,
|
|
701
725
|
sourceReference: sourceLocationToSourceReference(trace.bytecode, inst.location) ??
|
|
702
|
-
|
|
726
|
+
lastSourceReference,
|
|
703
727
|
errorCode,
|
|
704
728
|
};
|
|
705
729
|
}
|
|
706
730
|
_instructionWithinFunctionToCustomErrorStackTraceEntry(trace, inst, message) {
|
|
731
|
+
const lastSourceReference = this._getLastSourceReference(trace);
|
|
732
|
+
(0, errors_1.assertHardhatInvariant)(lastSourceReference !== undefined, "Expected last source reference to be defined");
|
|
707
733
|
return {
|
|
708
734
|
type: solidity_stack_trace_1.StackTraceEntryType.CUSTOM_ERROR,
|
|
709
735
|
sourceReference: sourceLocationToSourceReference(trace.bytecode, inst.location) ??
|
|
710
|
-
|
|
736
|
+
lastSourceReference,
|
|
711
737
|
message,
|
|
712
738
|
};
|
|
713
739
|
}
|
|
@@ -794,9 +820,9 @@ class ErrorInferrer {
|
|
|
794
820
|
const hasNextInst = trace.bytecode.hasInstruction(nextInstPc);
|
|
795
821
|
if (hasNextInst) {
|
|
796
822
|
const nextInst = trace.bytecode.getInstruction(nextInstPc);
|
|
797
|
-
const prevLoc = prevInst
|
|
823
|
+
const prevLoc = prevInst?.location;
|
|
798
824
|
const nextLoc = nextInst.location;
|
|
799
|
-
const prevFunc = prevLoc
|
|
825
|
+
const prevFunc = prevLoc?.getContainingFunction();
|
|
800
826
|
const nextFunc = nextLoc?.getContainingFunction();
|
|
801
827
|
// This is probably a require. This means that we have the exact
|
|
802
828
|
// line, but the stack trace may be degraded (e.g. missing our
|
|
@@ -804,6 +830,7 @@ class ErrorInferrer {
|
|
|
804
830
|
// add this frame as UNMAPPED_SOLC_0_6_3_REVERT_ERROR
|
|
805
831
|
if (prevFunc !== undefined &&
|
|
806
832
|
nextLoc !== undefined &&
|
|
833
|
+
prevLoc !== undefined &&
|
|
807
834
|
prevLoc.equals(nextLoc)) {
|
|
808
835
|
return {
|
|
809
836
|
...this._instructionWithinFunctionToRevertStackTraceEntry(trace, nextInst),
|
|
@@ -813,7 +840,7 @@ class ErrorInferrer {
|
|
|
813
840
|
let revertFrame;
|
|
814
841
|
// If the previous and next location don't match, we try to use the
|
|
815
842
|
// previous one if it's inside a function, otherwise we use the next one
|
|
816
|
-
if (prevFunc !== undefined) {
|
|
843
|
+
if (prevFunc !== undefined && prevInst !== undefined) {
|
|
817
844
|
revertFrame = {
|
|
818
845
|
...this._instructionWithinFunctionToRevertStackTraceEntry(trace, prevInst),
|
|
819
846
|
type: solidity_stack_trace_1.StackTraceEntryType.UNMAPPED_SOLC_0_6_3_REVERT_ERROR,
|
|
@@ -830,7 +857,7 @@ class ErrorInferrer {
|
|
|
830
857
|
}
|
|
831
858
|
return revertFrame;
|
|
832
859
|
}
|
|
833
|
-
if ((0, message_trace_1.isCreateTrace)(trace)) {
|
|
860
|
+
if ((0, message_trace_1.isCreateTrace)(trace) && prevInst !== undefined) {
|
|
834
861
|
// Solidity is smart enough to stop emitting extra instructions after
|
|
835
862
|
// an unconditional revert happens in a constructor. If this is the case
|
|
836
863
|
// we just return a special error.
|
|
@@ -861,18 +888,20 @@ class ErrorInferrer {
|
|
|
861
888
|
}
|
|
862
889
|
return constructorRevertFrame;
|
|
863
890
|
}
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
891
|
+
if (prevInst !== undefined) {
|
|
892
|
+
// We may as well just be in a function or modifier and just happen
|
|
893
|
+
// to be at the last instruction of the runtime bytecode.
|
|
894
|
+
// In this case we just return whatever the last mapped intruction
|
|
895
|
+
// points to.
|
|
896
|
+
const latestInstructionRevertFrame = {
|
|
897
|
+
...this._instructionWithinFunctionToRevertStackTraceEntry(trace, prevInst),
|
|
898
|
+
type: solidity_stack_trace_1.StackTraceEntryType.UNMAPPED_SOLC_0_6_3_REVERT_ERROR,
|
|
899
|
+
};
|
|
900
|
+
if (latestInstructionRevertFrame.sourceReference !== undefined) {
|
|
901
|
+
this._solidity063CorrectLineNumber(latestInstructionRevertFrame);
|
|
902
|
+
}
|
|
903
|
+
return latestInstructionRevertFrame;
|
|
874
904
|
}
|
|
875
|
-
return latestInstructionRevertFrame;
|
|
876
905
|
}
|
|
877
906
|
_isContractTooLargeError(trace) {
|
|
878
907
|
return trace.error?.error === exceptions_1.ERROR.CODESIZE_EXCEEDS_MAXIMUM;
|
|
@@ -919,10 +948,12 @@ class ErrorInferrer {
|
|
|
919
948
|
return undefined;
|
|
920
949
|
}
|
|
921
950
|
_callInstructionToCallFailedToExecuteStackTraceEntry(bytecode, callInst) {
|
|
951
|
+
const sourceReference = sourceLocationToSourceReference(bytecode, callInst.location);
|
|
952
|
+
(0, errors_1.assertHardhatInvariant)(sourceReference !== undefined, "Expected source reference to be defined");
|
|
922
953
|
// Calls only happen within functions
|
|
923
954
|
return {
|
|
924
955
|
type: solidity_stack_trace_1.StackTraceEntryType.CALL_FAILED_ERROR,
|
|
925
|
-
sourceReference
|
|
956
|
+
sourceReference,
|
|
926
957
|
};
|
|
927
958
|
}
|
|
928
959
|
_getEntryBeforeFailureInModifier(trace, functionJumpdests) {
|
|
@@ -953,11 +984,14 @@ class ErrorInferrer {
|
|
|
953
984
|
}
|
|
954
985
|
const callOpcodeStep = trace.steps[callSubtraceStepIndex - 1];
|
|
955
986
|
const callInst = trace.bytecode.getInstruction(callOpcodeStep.pc);
|
|
956
|
-
|
|
957
|
-
);
|
|
987
|
+
// Calls are always made from within functions
|
|
988
|
+
(0, errors_1.assertHardhatInvariant)(callInst.location !== undefined, "Expected call instruction location to be defined");
|
|
989
|
+
return this._isLastLocation(trace, callSubtraceStepIndex + 1, callInst.location);
|
|
958
990
|
}
|
|
959
991
|
_isCallFailedError(trace, instIndex, callInstruction) {
|
|
960
|
-
const callLocation = callInstruction.location;
|
|
992
|
+
const callLocation = callInstruction.location;
|
|
993
|
+
// Calls are always made from within functions
|
|
994
|
+
(0, errors_1.assertHardhatInvariant)(callLocation !== undefined, "Expected call location to be defined");
|
|
961
995
|
return this._isLastLocation(trace, instIndex, callLocation);
|
|
962
996
|
}
|
|
963
997
|
_isLastLocation(trace, fromStep, location) {
|
|
@@ -1077,14 +1111,17 @@ function instructionToCallstackStackTraceEntry(bytecode, inst) {
|
|
|
1077
1111
|
},
|
|
1078
1112
|
};
|
|
1079
1113
|
}
|
|
1080
|
-
const func = inst.location
|
|
1114
|
+
const func = inst.location?.getContainingFunction();
|
|
1081
1115
|
if (func !== undefined) {
|
|
1116
|
+
const sourceReference = sourceLocationToSourceReference(bytecode, inst.location);
|
|
1117
|
+
(0, errors_1.assertHardhatInvariant)(sourceReference !== undefined, "Expected source reference to be defined");
|
|
1082
1118
|
return {
|
|
1083
1119
|
type: solidity_stack_trace_1.StackTraceEntryType.CALLSTACK_ENTRY,
|
|
1084
|
-
sourceReference
|
|
1120
|
+
sourceReference,
|
|
1085
1121
|
functionType: func.type,
|
|
1086
1122
|
};
|
|
1087
1123
|
}
|
|
1124
|
+
(0, errors_1.assertHardhatInvariant)(inst.location !== undefined, "Expected instruction location to be defined");
|
|
1088
1125
|
return {
|
|
1089
1126
|
type: solidity_stack_trace_1.StackTraceEntryType.CALLSTACK_ENTRY,
|
|
1090
1127
|
sourceReference: {
|