sol-dbg 0.7.16 → 0.8.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/dist/debug/abi.d.ts +10 -3
- package/dist/debug/abi.d.ts.map +1 -1
- package/dist/debug/abi.js +5 -4
- package/dist/debug/abi.js.map +1 -1
- package/dist/debug/artifact_manager/artifact_manager.d.ts +5 -2
- package/dist/debug/artifact_manager/artifact_manager.d.ts.map +1 -1
- package/dist/debug/artifact_manager/artifact_manager.js +24 -6
- package/dist/debug/artifact_manager/artifact_manager.js.map +1 -1
- package/dist/debug/decoding/calldata/view.d.ts +15 -16
- package/dist/debug/decoding/calldata/view.d.ts.map +1 -1
- package/dist/debug/decoding/calldata/view.js +47 -47
- package/dist/debug/decoding/calldata/view.js.map +1 -1
- package/dist/debug/decoding/index.d.ts +1 -2
- package/dist/debug/decoding/index.d.ts.map +1 -1
- package/dist/debug/decoding/index.js +2 -2
- package/dist/debug/decoding/index.js.map +1 -1
- package/dist/debug/decoding/memory/view.d.ts +16 -17
- package/dist/debug/decoding/memory/view.d.ts.map +1 -1
- package/dist/debug/decoding/memory/view.js +36 -36
- package/dist/debug/decoding/memory/view.js.map +1 -1
- package/dist/debug/decoding/stack/view.d.ts +4 -4
- package/dist/debug/decoding/stack/view.d.ts.map +1 -1
- package/dist/debug/decoding/stack/view.js +20 -19
- package/dist/debug/decoding/stack/view.js.map +1 -1
- package/dist/debug/decoding/storage/view.d.ts +18 -19
- package/dist/debug/decoding/storage/view.d.ts.map +1 -1
- package/dist/debug/decoding/storage/view.js +67 -65
- package/dist/debug/decoding/storage/view.js.map +1 -1
- package/dist/debug/decoding/utils.d.ts +20 -2
- package/dist/debug/decoding/utils.d.ts.map +1 -1
- package/dist/debug/decoding/utils.js +119 -3
- package/dist/debug/decoding/utils.js.map +1 -1
- package/dist/debug/decoding/view.d.ts +11 -6
- package/dist/debug/decoding/view.d.ts.map +1 -1
- package/dist/debug/index.d.ts +1 -0
- package/dist/debug/index.d.ts.map +1 -1
- package/dist/debug/index.js +1 -0
- package/dist/debug/index.js.map +1 -1
- package/dist/debug/layout.d.ts.map +1 -1
- package/dist/debug/layout.js +2 -1
- package/dist/debug/layout.js.map +1 -1
- package/dist/debug/runtime_types/ast/address_type.d.ts +5 -0
- package/dist/debug/runtime_types/ast/address_type.d.ts.map +1 -0
- package/dist/debug/runtime_types/ast/address_type.js +11 -0
- package/dist/debug/runtime_types/ast/address_type.js.map +1 -0
- package/dist/debug/runtime_types/ast/array_type.d.ts +8 -0
- package/dist/debug/runtime_types/ast/array_type.d.ts.map +1 -0
- package/dist/debug/runtime_types/ast/array_type.js +16 -0
- package/dist/debug/runtime_types/ast/array_type.js.map +1 -0
- package/dist/debug/runtime_types/ast/base_type.d.ts +16 -0
- package/dist/debug/runtime_types/ast/base_type.d.ts.map +1 -0
- package/dist/debug/runtime_types/ast/base_type.js +19 -0
- package/dist/debug/runtime_types/ast/base_type.js.map +1 -0
- package/dist/debug/runtime_types/ast/bool_type.d.ts +5 -0
- package/dist/debug/runtime_types/ast/bool_type.d.ts.map +1 -0
- package/dist/debug/runtime_types/ast/bool_type.js +11 -0
- package/dist/debug/runtime_types/ast/bool_type.js.map +1 -0
- package/dist/debug/runtime_types/ast/bytes_type.d.ts +5 -0
- package/dist/debug/runtime_types/ast/bytes_type.d.ts.map +1 -0
- package/dist/debug/runtime_types/ast/bytes_type.js +11 -0
- package/dist/debug/runtime_types/ast/bytes_type.js.map +1 -0
- package/dist/debug/runtime_types/ast/fixed_bytes_type.d.ts +7 -0
- package/dist/debug/runtime_types/ast/fixed_bytes_type.d.ts.map +1 -0
- package/dist/debug/runtime_types/ast/fixed_bytes_type.js +15 -0
- package/dist/debug/runtime_types/ast/fixed_bytes_type.js.map +1 -0
- package/dist/debug/runtime_types/ast/function_type.d.ts +11 -0
- package/dist/debug/runtime_types/ast/function_type.d.ts.map +1 -0
- package/dist/debug/runtime_types/ast/function_type.js +22 -0
- package/dist/debug/runtime_types/ast/function_type.js.map +1 -0
- package/dist/debug/runtime_types/ast/index.d.ts +16 -0
- package/dist/debug/runtime_types/ast/index.d.ts.map +1 -0
- package/dist/debug/runtime_types/ast/index.js +32 -0
- package/dist/debug/runtime_types/ast/index.js.map +1 -0
- package/dist/debug/runtime_types/ast/int_type.d.ts +10 -0
- package/dist/debug/runtime_types/ast/int_type.d.ts.map +1 -0
- package/dist/debug/runtime_types/ast/int_type.js +24 -0
- package/dist/debug/runtime_types/ast/int_type.js.map +1 -0
- package/dist/debug/runtime_types/ast/mapping_type.d.ts +8 -0
- package/dist/debug/runtime_types/ast/mapping_type.d.ts.map +1 -0
- package/dist/debug/runtime_types/ast/mapping_type.js +16 -0
- package/dist/debug/runtime_types/ast/mapping_type.js.map +1 -0
- package/dist/debug/runtime_types/ast/missing_type.d.ts +11 -0
- package/dist/debug/runtime_types/ast/missing_type.d.ts.map +1 -0
- package/dist/debug/runtime_types/ast/missing_type.js +19 -0
- package/dist/debug/runtime_types/ast/missing_type.js.map +1 -0
- package/dist/debug/runtime_types/ast/pointer_type.d.ts +9 -0
- package/dist/debug/runtime_types/ast/pointer_type.d.ts.map +1 -0
- package/dist/debug/runtime_types/ast/pointer_type.js +51 -0
- package/dist/debug/runtime_types/ast/pointer_type.js.map +1 -0
- package/dist/debug/runtime_types/ast/string_type.d.ts +5 -0
- package/dist/debug/runtime_types/ast/string_type.d.ts.map +1 -0
- package/dist/debug/runtime_types/ast/string_type.js +11 -0
- package/dist/debug/runtime_types/ast/string_type.js.map +1 -0
- package/dist/debug/runtime_types/ast/struct_type.d.ts +8 -0
- package/dist/debug/runtime_types/ast/struct_type.d.ts.map +1 -0
- package/dist/debug/runtime_types/ast/struct_type.js +16 -0
- package/dist/debug/runtime_types/ast/struct_type.js.map +1 -0
- package/dist/debug/runtime_types/ast/tuple_type.d.ts +7 -0
- package/dist/debug/runtime_types/ast/tuple_type.d.ts.map +1 -0
- package/dist/debug/runtime_types/ast/tuple_type.js +15 -0
- package/dist/debug/runtime_types/ast/tuple_type.js.map +1 -0
- package/dist/debug/runtime_types/ast/type_type.d.ts +12 -0
- package/dist/debug/runtime_types/ast/type_type.d.ts.map +1 -0
- package/dist/debug/runtime_types/ast/type_type.js +19 -0
- package/dist/debug/runtime_types/ast/type_type.js.map +1 -0
- package/dist/debug/runtime_types/index.d.ts +3 -0
- package/dist/debug/runtime_types/index.d.ts.map +1 -0
- package/dist/debug/runtime_types/index.js +19 -0
- package/dist/debug/runtime_types/index.js.map +1 -0
- package/dist/debug/runtime_types/utils.d.ts +32 -0
- package/dist/debug/runtime_types/utils.d.ts.map +1 -0
- package/dist/debug/runtime_types/utils.js +213 -0
- package/dist/debug/runtime_types/utils.js.map +1 -0
- package/dist/debug/tracers/transformers/int_stack.d.ts.map +1 -1
- package/dist/debug/tracers/transformers/int_stack.js +4 -2
- package/dist/debug/tracers/transformers/int_stack.js.map +1 -1
- package/dist/debug/tracers/transformers/ret_info.js +2 -2
- package/dist/debug/tracers/transformers/ret_info.js.map +1 -1
- package/dist/utils/misc.d.ts +5 -1
- package/dist/utils/misc.d.ts.map +1 -1
- package/dist/utils/misc.js +20 -9
- package/dist/utils/misc.js.map +1 -1
- package/dist/utils/pp.d.ts.map +1 -1
- package/dist/utils/pp.js +13 -12
- package/dist/utils/pp.js.map +1 -1
- package/dist/utils/solidity.d.ts +1 -0
- package/dist/utils/solidity.d.ts.map +1 -1
- package/dist/utils/solidity.js +8 -0
- package/dist/utils/solidity.js.map +1 -1
- package/package.json +1 -1
- package/dist/debug/decoding/exp_types.d.ts +0 -46
- package/dist/debug/decoding/exp_types.d.ts.map +0 -1
- package/dist/debug/decoding/exp_types.js +0 -202
- package/dist/debug/decoding/exp_types.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solidity.js","sourceRoot":"","sources":["../../src/utils/solidity.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"solidity.js","sourceRoot":"","sources":["../../src/utils/solidity.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,sDAQC;AAID,wCAgBC;AAKD,0CAgBC;AAED,0CAkBC;AAvED,oDAAsC;AAEtC,SAAgB,qBAAqB,CAAC,CAA2B;IAC7D,OAAO,CACH,CAAC,YAAY,GAAG,CAAC,mBAAmB;QACpC,CAAC,CAAC,qBAAqB,GAAG,CAAC;QAC3B,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC;YACjC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC;YACrC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAC3C,CAAC;AACN,CAAC;AACD;;GAEG;AACH,SAAgB,cAAc,CAC1B,QAAgC;IAEhC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,wBAAwB,EAAE,CAAC;QACnD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACrB,SAAS;QACb,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAChC,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;gBACxC,OAAO,GAAG,CAAC;YACf,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAC3B,QAAgC;IAEhC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,wBAAwB,EAAE,CAAC;QACnD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACrB,SAAS;QACb,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAChC,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;gBACzC,OAAO,GAAG,CAAC;YACf,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,SAAgB,eAAe,CAC3B,KAAuB,EACvB,QAAgB,EAChB,YAAoB;IAEpB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;YACnC,SAAS;QACb,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACrC,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACjC,OAAO,QAAQ,CAAC;YACpB,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { ContractDefinition, DataLocation, InferType, TypeName, TypeNode } from "solc-typed-ast";
|
|
2
|
-
/**
|
|
3
|
-
* An internal struct type that converts all field VariableDeclaration(s) to
|
|
4
|
-
* TypeNode(s). This way handling this type doesn't require an InferType
|
|
5
|
-
* instance.
|
|
6
|
-
*/
|
|
7
|
-
export declare class ExpStructType extends TypeNode {
|
|
8
|
-
readonly name: string;
|
|
9
|
-
readonly fields: Array<[string, TypeNode]>;
|
|
10
|
-
readonly rawType: TypeNode | undefined;
|
|
11
|
-
constructor(name: string, fields: Array<[string, TypeNode]>, rawType?: TypeNode | undefined);
|
|
12
|
-
pp(): string;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Simplify the given solc-typed-ast types for use in encoding. This does the following conversions:
|
|
16
|
-
*
|
|
17
|
-
* - Convert `UserDefinedType(StructDefinition)` to `ExpStructType`
|
|
18
|
-
* - Convert `UserDefinedType(UserDefinedValueTypeDefinition)` to the underlying type
|
|
19
|
-
* - Convert `UserDefinedType(ContractDefinition)` to address
|
|
20
|
-
*
|
|
21
|
-
* in the given rawT
|
|
22
|
-
* @param rawT
|
|
23
|
-
*/
|
|
24
|
-
export declare function simplifyType(rawT: TypeNode, infer: InferType, loc?: DataLocation | undefined): TypeNode;
|
|
25
|
-
export declare class MissingType extends TypeNode {
|
|
26
|
-
readonly rawTypeName: TypeName | undefined;
|
|
27
|
-
constructor(rawTypeName: TypeName | undefined);
|
|
28
|
-
pp(): string;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Given a `ContractDefinition` try and compute an `ExpStructType` struct that
|
|
32
|
-
* describes the layout of the class. This takes into account all base classes,
|
|
33
|
-
* and simplifies types using `simplifyType`.
|
|
34
|
-
*
|
|
35
|
-
* Since we may be missing AST information for some user-defined types, or even
|
|
36
|
-
* entire bases, the layout may be partial. It may be only up to a given base,
|
|
37
|
-
* and it may be missing exact type information for certain fields.
|
|
38
|
-
*
|
|
39
|
-
* We return a tuple with the resulting layout, and a boolean specifying whether
|
|
40
|
-
* the layout is complete.
|
|
41
|
-
*
|
|
42
|
-
* @param def
|
|
43
|
-
* @param infer
|
|
44
|
-
*/
|
|
45
|
-
export declare function getContractLayoutType(contract: ContractDefinition, infer: InferType): [ExpStructType, boolean];
|
|
46
|
-
//# sourceMappingURL=exp_types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"exp_types.d.ts","sourceRoot":"","sources":["../../../src/debug/decoding/exp_types.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,kBAAkB,EAClB,YAAY,EAGZ,SAAS,EAMT,QAAQ,EACR,QAAQ,EAKX,MAAM,gBAAgB,CAAC;AAIxB;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,QAAQ;aAEnB,IAAI,EAAE,MAAM;aACZ,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;aACjC,OAAO,EAAE,QAAQ,GAAG,SAAS;gBAF7B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,EACjC,OAAO,GAAE,QAAQ,GAAG,SAAqB;IAK7D,EAAE,IAAI,MAAM;CAGf;AAgDD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CACxB,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,SAAS,EAChB,GAAG,GAAE,YAAY,GAAG,SAAqB,GAC1C,QAAQ,CAyEV;AAED,qBAAa,WAAY,SAAQ,QAAQ;aACT,WAAW,EAAE,QAAQ,GAAG,SAAS;gBAAjC,WAAW,EAAE,QAAQ,GAAG,SAAS;IAI7D,EAAE,IAAI,MAAM;CAGf;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CACjC,QAAQ,EAAE,kBAAkB,EAC5B,KAAK,EAAE,SAAS,GACjB,CAAC,aAAa,EAAE,OAAO,CAAC,CA8C1B"}
|
|
@@ -1,202 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MissingType = exports.ExpStructType = void 0;
|
|
4
|
-
exports.simplifyType = simplifyType;
|
|
5
|
-
exports.getContractLayoutType = getContractLayoutType;
|
|
6
|
-
const solc_typed_ast_1 = require("solc-typed-ast");
|
|
7
|
-
const utils_1 = require("../../utils");
|
|
8
|
-
const utils_2 = require("./utils");
|
|
9
|
-
/**
|
|
10
|
-
* An internal struct type that converts all field VariableDeclaration(s) to
|
|
11
|
-
* TypeNode(s). This way handling this type doesn't require an InferType
|
|
12
|
-
* instance.
|
|
13
|
-
*/
|
|
14
|
-
class ExpStructType extends solc_typed_ast_1.TypeNode {
|
|
15
|
-
constructor(name, fields, rawType = undefined) {
|
|
16
|
-
super();
|
|
17
|
-
this.name = name;
|
|
18
|
-
this.fields = fields;
|
|
19
|
-
this.rawType = rawType;
|
|
20
|
-
}
|
|
21
|
-
pp() {
|
|
22
|
-
return `struct ${this.name}{\n${this.fields.map(([name, type]) => `${name}: ${type.pp()}`).join("\n")}\n}`;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
exports.ExpStructType = ExpStructType;
|
|
26
|
-
function isTypeUnknownContract(t) {
|
|
27
|
-
return (t instanceof solc_typed_ast_1.UserDefinedTypeName &&
|
|
28
|
-
t.referencedDeclaration < 0 &&
|
|
29
|
-
(t.typeString.startsWith("contract ") ||
|
|
30
|
-
t.typeString.startsWith("interface ") ||
|
|
31
|
-
t.typeString.startsWith("library ")));
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Helper for converting `TypeName`s to `TypeNode`s. In some cases when solc-typed-ast conversion fails,
|
|
35
|
-
* it can try and guess the correct simplified type from the typeString
|
|
36
|
-
*
|
|
37
|
-
* - unknown contracts - retun address
|
|
38
|
-
*/
|
|
39
|
-
function typeNameToTypeNode(t, infer, loc) {
|
|
40
|
-
try {
|
|
41
|
-
return loc ? infer.typeNameToSpecializedTypeNode(t, loc) : infer.typeNameToTypeNode(t);
|
|
42
|
-
}
|
|
43
|
-
catch (e) {
|
|
44
|
-
if (isTypeUnknownContract(t)) {
|
|
45
|
-
return utils_1.address;
|
|
46
|
-
}
|
|
47
|
-
throw e;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Helper for converting `VariableDeclartaion`s to `TypeNode`s. In some cases when solc-typed-ast conversion fails,
|
|
52
|
-
* it can try and guess the correct simplified type from the typeString
|
|
53
|
-
*
|
|
54
|
-
* - unknown contracts - retun address
|
|
55
|
-
*/
|
|
56
|
-
function variableDeclarationToTypeNode(v, infer) {
|
|
57
|
-
try {
|
|
58
|
-
return infer.variableDeclarationToTypeNode(v);
|
|
59
|
-
}
|
|
60
|
-
catch (e) {
|
|
61
|
-
if (v.vType && isTypeUnknownContract(v.vType)) {
|
|
62
|
-
return utils_1.address;
|
|
63
|
-
}
|
|
64
|
-
throw e;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Simplify the given solc-typed-ast types for use in encoding. This does the following conversions:
|
|
69
|
-
*
|
|
70
|
-
* - Convert `UserDefinedType(StructDefinition)` to `ExpStructType`
|
|
71
|
-
* - Convert `UserDefinedType(UserDefinedValueTypeDefinition)` to the underlying type
|
|
72
|
-
* - Convert `UserDefinedType(ContractDefinition)` to address
|
|
73
|
-
*
|
|
74
|
-
* in the given rawT
|
|
75
|
-
* @param rawT
|
|
76
|
-
*/
|
|
77
|
-
function simplifyType(rawT, infer, loc = undefined) {
|
|
78
|
-
if (rawT instanceof solc_typed_ast_1.ArrayType) {
|
|
79
|
-
const expElT = simplifyType(rawT.elementT, infer, loc);
|
|
80
|
-
return expElT === rawT.elementT ? rawT : new solc_typed_ast_1.ArrayType(expElT, rawT.size, rawT.src);
|
|
81
|
-
}
|
|
82
|
-
if (rawT instanceof solc_typed_ast_1.MappingType) {
|
|
83
|
-
const keyT = simplifyType(rawT.keyType, infer, loc);
|
|
84
|
-
const valueT = simplifyType(rawT.valueType, infer, loc);
|
|
85
|
-
return keyT === rawT.keyType && valueT === rawT.valueType
|
|
86
|
-
? rawT
|
|
87
|
-
: new solc_typed_ast_1.MappingType(keyT, valueT, rawT.src);
|
|
88
|
-
}
|
|
89
|
-
if (rawT instanceof solc_typed_ast_1.TupleType) {
|
|
90
|
-
return new solc_typed_ast_1.TupleType(rawT.elements.map((elT) => (elT === null ? elT : simplifyType(elT, infer, loc))));
|
|
91
|
-
}
|
|
92
|
-
if (rawT instanceof solc_typed_ast_1.PointerType) {
|
|
93
|
-
const toT = simplifyType(rawT.to, infer, rawT.location);
|
|
94
|
-
return toT === rawT.to ? rawT : new solc_typed_ast_1.PointerType(toT, rawT.location, rawT.kind, rawT.src);
|
|
95
|
-
}
|
|
96
|
-
if (rawT instanceof solc_typed_ast_1.UserDefinedType) {
|
|
97
|
-
if (rawT.definition === undefined) {
|
|
98
|
-
return new MissingType(undefined);
|
|
99
|
-
}
|
|
100
|
-
if (rawT.definition instanceof solc_typed_ast_1.StructDefinition) {
|
|
101
|
-
(0, solc_typed_ast_1.assert)(loc !== undefined, `Missing location in struct expansion {0}`, rawT);
|
|
102
|
-
const fields = rawT.definition.vMembers.map((decl) => {
|
|
103
|
-
let fieldT;
|
|
104
|
-
try {
|
|
105
|
-
fieldT = typeNameToTypeNode(decl.vType, infer, loc);
|
|
106
|
-
}
|
|
107
|
-
catch (e) {
|
|
108
|
-
fieldT = new MissingType(decl.vType);
|
|
109
|
-
}
|
|
110
|
-
return [decl.name, simplifyType(fieldT, infer, loc)];
|
|
111
|
-
});
|
|
112
|
-
return new ExpStructType(rawT.name, fields, rawT);
|
|
113
|
-
}
|
|
114
|
-
if (rawT.definition instanceof solc_typed_ast_1.UserDefinedValueTypeDefinition) {
|
|
115
|
-
let underlyingType;
|
|
116
|
-
try {
|
|
117
|
-
underlyingType = typeNameToTypeNode(rawT.definition.underlyingType, infer);
|
|
118
|
-
}
|
|
119
|
-
catch (e) {
|
|
120
|
-
underlyingType = new MissingType(rawT.definition.underlyingType);
|
|
121
|
-
}
|
|
122
|
-
return simplifyType(underlyingType, infer, loc);
|
|
123
|
-
}
|
|
124
|
-
if (rawT.definition instanceof solc_typed_ast_1.ContractDefinition) {
|
|
125
|
-
return utils_1.address;
|
|
126
|
-
}
|
|
127
|
-
if (rawT.definition instanceof solc_typed_ast_1.EnumDefinition) {
|
|
128
|
-
return (0, solc_typed_ast_1.enumToIntType)(rawT.definition);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
if (rawT instanceof MissingType) {
|
|
132
|
-
return rawT;
|
|
133
|
-
}
|
|
134
|
-
return rawT;
|
|
135
|
-
}
|
|
136
|
-
class MissingType extends solc_typed_ast_1.TypeNode {
|
|
137
|
-
constructor(rawTypeName) {
|
|
138
|
-
super();
|
|
139
|
-
this.rawTypeName = rawTypeName;
|
|
140
|
-
}
|
|
141
|
-
pp() {
|
|
142
|
-
return `<missing type info for ${this.rawTypeName?.print()}>`;
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
exports.MissingType = MissingType;
|
|
146
|
-
/**
|
|
147
|
-
* Given a `ContractDefinition` try and compute an `ExpStructType` struct that
|
|
148
|
-
* describes the layout of the class. This takes into account all base classes,
|
|
149
|
-
* and simplifies types using `simplifyType`.
|
|
150
|
-
*
|
|
151
|
-
* Since we may be missing AST information for some user-defined types, or even
|
|
152
|
-
* entire bases, the layout may be partial. It may be only up to a given base,
|
|
153
|
-
* and it may be missing exact type information for certain fields.
|
|
154
|
-
*
|
|
155
|
-
* We return a tuple with the resulting layout, and a boolean specifying whether
|
|
156
|
-
* the layout is complete.
|
|
157
|
-
*
|
|
158
|
-
* @param def
|
|
159
|
-
* @param infer
|
|
160
|
-
*/
|
|
161
|
-
function getContractLayoutType(contract, infer) {
|
|
162
|
-
const stateVars = [];
|
|
163
|
-
let complete = true;
|
|
164
|
-
for (const base of [...contract.vLinearizedBaseContracts].reverse()) {
|
|
165
|
-
if (base === null || base === undefined) {
|
|
166
|
-
complete = false;
|
|
167
|
-
break;
|
|
168
|
-
}
|
|
169
|
-
for (const varDecl of base.vStateVariables) {
|
|
170
|
-
// Not part of layout
|
|
171
|
-
if (varDecl.mutability === solc_typed_ast_1.Mutability.Constant ||
|
|
172
|
-
varDecl.mutability === solc_typed_ast_1.Mutability.Immutable ||
|
|
173
|
-
varDecl.storageLocation === solc_typed_ast_1.DataLocation.Transient) {
|
|
174
|
-
continue;
|
|
175
|
-
}
|
|
176
|
-
let typeNode;
|
|
177
|
-
try {
|
|
178
|
-
typeNode = variableDeclarationToTypeNode(varDecl, infer);
|
|
179
|
-
}
|
|
180
|
-
catch (e) {
|
|
181
|
-
/**
|
|
182
|
-
* Missing type info. If this is a:
|
|
183
|
-
* - map type
|
|
184
|
-
* - array type
|
|
185
|
-
*
|
|
186
|
-
* then we can continue decoding as it takes exactly 32 bytes
|
|
187
|
-
* statically in the layout. Otherwise we have to abort decoding
|
|
188
|
-
*/
|
|
189
|
-
complete = false;
|
|
190
|
-
if ((0, utils_2.isTypeStringStatic32BytesInStorage)(varDecl.typeString)) {
|
|
191
|
-
typeNode = new MissingType(varDecl.vType);
|
|
192
|
-
}
|
|
193
|
-
else {
|
|
194
|
-
break;
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
stateVars.push([varDecl.name, simplifyType(typeNode, infer, solc_typed_ast_1.DataLocation.Storage)]);
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
return [new ExpStructType(contract.name, stateVars), complete];
|
|
201
|
-
}
|
|
202
|
-
//# sourceMappingURL=exp_types.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"exp_types.js","sourceRoot":"","sources":["../../../src/debug/decoding/exp_types.ts"],"names":[],"mappings":"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"}
|