solc-typed-ast 19.0.0 → 19.1.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.
@@ -40,6 +40,7 @@ export declare class ASTContext {
40
40
  unregister(...nodes: ASTNode[]): void;
41
41
  locate(id: number): ASTNode;
42
42
  require(id: number): ASTNode;
43
+ requireType<T extends ASTNode>(id: number, constr: ASTNodeConstructor<T>): T;
43
44
  contains(node: ASTNode): boolean;
44
45
  }
45
46
  export declare class ASTPostprocessor {
@@ -1 +1 @@
1
- {"version":3,"file":"ast_reader.d.ts","sourceRoot":"","sources":["../../src/ast/ast_reader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ast_reader.d.ts","sourceRoot":"","sources":["../../src/ast/ast_reader.ts"],"names":[],"mappings":"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"}
@@ -64,6 +64,13 @@ class ASTContext {
64
64
  }
65
65
  throw new Error("Required node not found for id " + id);
66
66
  }
67
+ requireType(id, constr) {
68
+ const node = this.locate(id);
69
+ if (node instanceof constr) {
70
+ return node;
71
+ }
72
+ throw new Error(`Required node of type ${constr.name} for id ${id}, not ${node}`);
73
+ }
67
74
  contains(node) {
68
75
  return this.locate(node.id) === node;
69
76
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ast_reader.js","sourceRoot":"","sources":["../../src/ast/ast_reader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ast_reader.js","sourceRoot":"","sources":["../../src/ast/ast_reader.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { PPIsh } from "..";
1
+ import { PPIsh } from "./pretty_printing";
2
2
  export declare function forAll<T>(iterable: Iterable<T>, cb: (v: T) => boolean): boolean;
3
3
  export declare function forAny<T>(iterable: Iterable<T>, cb: (v: T) => boolean): boolean;
4
4
  export declare function assert(condition: boolean, message: string, ...details: PPIsh[]): asserts condition;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/misc/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEhC,wBAAgB,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,GAAG,OAAO,CAQ/E;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,GAAG,OAAO,CAQ/E;AAED,wBAAgB,MAAM,CAClB,SAAS,EAAE,OAAO,EAClB,OAAO,EAAE,MAAM,EACf,GAAG,OAAO,EAAE,KAAK,EAAE,GACpB,OAAO,CAAC,SAAS,CAMnB;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,CAO9C"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/misc/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE/C,wBAAgB,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,GAAG,OAAO,CAQ/E;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,GAAG,OAAO,CAQ/E;AAED,wBAAgB,MAAM,CAClB,SAAS,EAAE,OAAO,EAClB,OAAO,EAAE,MAAM,EACf,GAAG,OAAO,EAAE,KAAK,EAAE,GACpB,OAAO,CAAC,SAAS,CAMnB;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,CAO9C"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.repeat = exports.assert = exports.forAny = exports.forAll = void 0;
4
- const __1 = require("..");
4
+ const pretty_printing_1 = require("./pretty_printing");
5
5
  function forAll(iterable, cb) {
6
6
  for (const el of iterable) {
7
7
  if (!cb(el)) {
@@ -24,7 +24,7 @@ function assert(condition, message, ...details) {
24
24
  if (condition) {
25
25
  return;
26
26
  }
27
- throw new Error((0, __1.fmt)(message, ...details));
27
+ throw new Error((0, pretty_printing_1.fmt)(message, ...details));
28
28
  }
29
29
  exports.assert = assert;
30
30
  function repeat(x, n) {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/misc/utils.ts"],"names":[],"mappings":";;;AAAA,0BAAgC;AAEhC,SAAgB,MAAM,CAAI,QAAqB,EAAE,EAAqB;IAClE,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;QACxB,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YACV,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AARD,wBAQC;AAED,SAAgB,MAAM,CAAI,QAAqB,EAAE,EAAqB;IAClE,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;QACxB,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YACT,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AARD,wBAQC;AAED,SAAgB,MAAM,CAClB,SAAkB,EAClB,OAAe,EACf,GAAG,OAAgB;IAEnB,IAAI,SAAS,EAAE,CAAC;QACZ,OAAO;IACX,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,IAAA,OAAG,EAAC,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;AAC9C,CAAC;AAVD,wBAUC;AAED,SAAgB,MAAM,CAAI,CAAI,EAAE,CAAS;IACrC,MAAM,GAAG,GAAQ,EAAE,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACzB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChB,CAAC;IAED,OAAO,GAAG,CAAC;AACf,CAAC;AAPD,wBAOC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/misc/utils.ts"],"names":[],"mappings":";;;AAAA,uDAA+C;AAE/C,SAAgB,MAAM,CAAI,QAAqB,EAAE,EAAqB;IAClE,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;QACxB,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YACV,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AARD,wBAQC;AAED,SAAgB,MAAM,CAAI,QAAqB,EAAE,EAAqB;IAClE,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;QACxB,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YACT,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AARD,wBAQC;AAED,SAAgB,MAAM,CAClB,SAAkB,EAClB,OAAe,EACf,GAAG,OAAgB;IAEnB,IAAI,SAAS,EAAE,CAAC;QACZ,OAAO;IACX,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,IAAA,qBAAG,EAAC,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;AAC9C,CAAC;AAVD,wBAUC;AAED,SAAgB,MAAM,CAAI,CAAI,EAAE,CAAS;IACrC,MAAM,GAAG,GAAQ,EAAE,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACzB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChB,CAAC;IAED,OAAO,GAAG,CAAC;AACf,CAAC;AAPD,wBAOC"}
@@ -1,4 +1,4 @@
1
- import { DataLocation } from "../../ast";
1
+ import { DataLocation } from "../../ast/constants";
2
2
  import { TypeIdentifier } from "./type_identifier";
3
3
  export declare class PointerTypeId extends TypeIdentifier {
4
4
  readonly toType: TypeIdentifier;
@@ -1 +1 @@
1
- {"version":3,"file":"pointer.d.ts","sourceRoot":"","sources":["../../../src/typeIdentifiers/ast/pointer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,qBAAa,aAAc,SAAQ,cAAc;aAEzB,MAAM,EAAE,cAAc;aACtB,QAAQ,EAAE,YAAY;aACtB,SAAS,EAAE,OAAO;gBAFlB,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAE,OAAO;IAKtC,EAAE,IAAI,MAAM;CAGf"}
1
+ {"version":3,"file":"pointer.d.ts","sourceRoot":"","sources":["../../../src/typeIdentifiers/ast/pointer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,qBAAa,aAAc,SAAQ,cAAc;aAEzB,MAAM,EAAE,cAAc;aACtB,QAAQ,EAAE,YAAY;aACtB,SAAS,EAAE,OAAO;gBAFlB,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAE,OAAO;IAKtC,EAAE,IAAI,MAAM;CAGf"}
@@ -1 +1 @@
1
- {"version":3,"file":"rational_num.d.ts","sourceRoot":"","sources":["../../../src/typeIdentifiers/ast/rational_num.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGnD,qBAAa,iBAAkB,SAAQ,cAAc;aAE7B,SAAS,EAAE,MAAM;aACjB,WAAW,EAAE,MAAM;gBADnB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM;IAMvC,EAAE,IAAI,MAAM;CAGf"}
1
+ {"version":3,"file":"rational_num.d.ts","sourceRoot":"","sources":["../../../src/typeIdentifiers/ast/rational_num.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGnD,qBAAa,iBAAkB,SAAQ,cAAc;aAE7B,SAAS,EAAE,MAAM;aACjB,WAAW,EAAE,MAAM;gBADnB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM;IAKvC,EAAE,IAAI,MAAM;CAGf"}
@@ -1,12 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RationalNumTypeId = void 0;
4
- const misc_1 = require("../../misc");
5
4
  const type_identifier_1 = require("./type_identifier");
6
5
  const utils_1 = require("./utils");
7
6
  class RationalNumTypeId extends type_identifier_1.TypeIdentifier {
8
7
  constructor(numerator, denominator) {
9
- (0, misc_1.assert)(denominator > 0n, ``);
10
8
  super();
11
9
  this.numerator = numerator;
12
10
  this.denominator = denominator;
@@ -1 +1 @@
1
- {"version":3,"file":"rational_num.js","sourceRoot":"","sources":["../../../src/typeIdentifiers/ast/rational_num.ts"],"names":[],"mappings":";;;AAAA,qCAAoC;AACpC,uDAAmD;AACnD,mCAAoC;AAEpC,MAAa,iBAAkB,SAAQ,gCAAc;IACjD,YACoB,SAAiB,EACjB,WAAmB;QAEnC,IAAA,aAAM,EAAC,WAAW,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;QAC7B,KAAK,EAAE,CAAC;QAJQ,cAAS,GAAT,SAAS,CAAQ;QACjB,gBAAW,GAAX,WAAW,CAAQ;IAIvC,CAAC;IAED,EAAE;QACE,OAAO,aAAa,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,IAAA,iBAAS,EAAC,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IACjH,CAAC;CACJ;AAZD,8CAYC"}
1
+ {"version":3,"file":"rational_num.js","sourceRoot":"","sources":["../../../src/typeIdentifiers/ast/rational_num.ts"],"names":[],"mappings":";;;AAAA,uDAAmD;AACnD,mCAAoC;AAEpC,MAAa,iBAAkB,SAAQ,gCAAc;IACjD,YACoB,SAAiB,EACjB,WAAmB;QAEnC,KAAK,EAAE,CAAC;QAHQ,cAAS,GAAT,SAAS,CAAQ;QACjB,gBAAW,GAAX,WAAW,CAAQ;IAGvC,CAAC;IAED,EAAE;QACE,OAAO,aAAa,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,IAAA,iBAAS,EAAC,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IACjH,CAAC;CACJ;AAXD,8CAWC"}
@@ -1,7 +1,7 @@
1
1
  import { TypeIdentifier } from "./type_identifier";
2
2
  export declare class TupleTypeId extends TypeIdentifier {
3
- readonly components: Array<TypeIdentifier | null>;
4
- constructor(components: Array<TypeIdentifier | null>);
3
+ readonly components: TypeIdentifier[];
4
+ constructor(components: TypeIdentifier[]);
5
5
  pp(): string;
6
6
  }
7
7
  //# sourceMappingURL=tuple.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tuple.d.ts","sourceRoot":"","sources":["../../../src/typeIdentifiers/ast/tuple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGnD,qBAAa,WAAY,SAAQ,cAAc;aACf,UAAU,EAAE,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAAxC,UAAU,EAAE,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;IAIpE,EAAE,IAAI,MAAM;CAGf"}
1
+ {"version":3,"file":"tuple.d.ts","sourceRoot":"","sources":["../../../src/typeIdentifiers/ast/tuple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGnD,qBAAa,WAAY,SAAQ,cAAc;aACf,UAAU,EAAE,cAAc,EAAE;gBAA5B,UAAU,EAAE,cAAc,EAAE;IAIxD,EAAE,IAAI,MAAM;CAGf"}
@@ -1 +1 @@
1
- {"version":3,"file":"tuple.js","sourceRoot":"","sources":["../../../src/typeIdentifiers/ast/tuple.ts"],"names":[],"mappings":";;;AAAA,uDAAmD;AACnD,mCAA+C;AAE/C,MAAa,WAAY,SAAQ,gCAAc;IAC3C,YAA4B,UAAwC;QAChE,KAAK,EAAE,CAAC;QADgB,eAAU,GAAV,UAAU,CAA8B;IAEpE,CAAC;IAED,EAAE;QACE,OAAO,UAAU,IAAA,4BAAoB,EAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;IAC7D,CAAC;CACJ;AARD,kCAQC"}
1
+ {"version":3,"file":"tuple.js","sourceRoot":"","sources":["../../../src/typeIdentifiers/ast/tuple.ts"],"names":[],"mappings":";;;AAAA,uDAAmD;AACnD,mCAA+C;AAE/C,MAAa,WAAY,SAAQ,gCAAc;IAC3C,YAA4B,UAA4B;QACpD,KAAK,EAAE,CAAC;QADgB,eAAU,GAAV,UAAU,CAAkB;IAExD,CAAC;IAED,EAAE;QACE,OAAO,UAAU,IAAA,4BAAoB,EAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;IAC7D,CAAC;CACJ;AARD,kCAQC"}
@@ -0,0 +1,18 @@
1
+ import { IntTypeId, AddressTypeId, BytesTypeId, StringTypeId, BoolTypeId, FixedBytesTypeId, PointerTypeId } from "./ast";
2
+ export declare const uint256T: IntTypeId;
3
+ export declare const uint8T: IntTypeId;
4
+ export declare const int256T: IntTypeId;
5
+ export declare const int8T: IntTypeId;
6
+ export declare const bytes1T: FixedBytesTypeId;
7
+ export declare const bytes2T: FixedBytesTypeId;
8
+ export declare const bytes4T: FixedBytesTypeId;
9
+ export declare const bytes20T: FixedBytesTypeId;
10
+ export declare const bytes24T: FixedBytesTypeId;
11
+ export declare const bytes32T: FixedBytesTypeId;
12
+ export declare const addressT: AddressTypeId;
13
+ export declare const bytesT: BytesTypeId;
14
+ export declare const stringT: StringTypeId;
15
+ export declare const memStringPtrT: PointerTypeId;
16
+ export declare const memBytesPtrT: PointerTypeId;
17
+ export declare const boolT: BoolTypeId;
18
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/typeIdentifiers/constants.ts"],"names":[],"mappings":"AACA,OAAO,EACH,SAAS,EACT,aAAa,EACb,WAAW,EACX,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,aAAa,EAChB,MAAM,OAAO,CAAC;AAEf,eAAO,MAAM,QAAQ,WAA4B,CAAC;AAClD,eAAO,MAAM,MAAM,WAA0B,CAAC;AAC9C,eAAO,MAAM,OAAO,WAA2B,CAAC;AAChD,eAAO,MAAM,KAAK,WAAyB,CAAC;AAC5C,eAAO,MAAM,OAAO,kBAA0B,CAAC;AAC/C,eAAO,MAAM,OAAO,kBAA0B,CAAC;AAC/C,eAAO,MAAM,OAAO,kBAA0B,CAAC;AAC/C,eAAO,MAAM,QAAQ,kBAA2B,CAAC;AACjD,eAAO,MAAM,QAAQ,kBAA2B,CAAC;AACjD,eAAO,MAAM,QAAQ,kBAA2B,CAAC;AACjD,eAAO,MAAM,QAAQ,eAA2B,CAAC;AACjD,eAAO,MAAM,MAAM,aAAoB,CAAC;AACxC,eAAO,MAAM,OAAO,cAAqB,CAAC;AAC1C,eAAO,MAAM,aAAa,eAAwD,CAAC;AACnF,eAAO,MAAM,YAAY,eAAuD,CAAC;AACjF,eAAO,MAAM,KAAK,YAAmB,CAAC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.boolT = exports.memBytesPtrT = exports.memStringPtrT = exports.stringT = exports.bytesT = exports.addressT = exports.bytes32T = exports.bytes24T = exports.bytes20T = exports.bytes4T = exports.bytes2T = exports.bytes1T = exports.int8T = exports.int256T = exports.uint8T = exports.uint256T = void 0;
4
+ const constants_1 = require("../ast/constants");
5
+ const ast_1 = require("./ast");
6
+ exports.uint256T = new ast_1.IntTypeId(256, false);
7
+ exports.uint8T = new ast_1.IntTypeId(8, false);
8
+ exports.int256T = new ast_1.IntTypeId(256, true);
9
+ exports.int8T = new ast_1.IntTypeId(8, true);
10
+ exports.bytes1T = new ast_1.FixedBytesTypeId(1);
11
+ exports.bytes2T = new ast_1.FixedBytesTypeId(2);
12
+ exports.bytes4T = new ast_1.FixedBytesTypeId(4);
13
+ exports.bytes20T = new ast_1.FixedBytesTypeId(20);
14
+ exports.bytes24T = new ast_1.FixedBytesTypeId(24);
15
+ exports.bytes32T = new ast_1.FixedBytesTypeId(32);
16
+ exports.addressT = new ast_1.AddressTypeId(false);
17
+ exports.bytesT = new ast_1.BytesTypeId();
18
+ exports.stringT = new ast_1.StringTypeId();
19
+ exports.memStringPtrT = new ast_1.PointerTypeId(exports.stringT, constants_1.DataLocation.Memory, true);
20
+ exports.memBytesPtrT = new ast_1.PointerTypeId(exports.bytesT, constants_1.DataLocation.Memory, true);
21
+ exports.boolT = new ast_1.BoolTypeId();
22
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/typeIdentifiers/constants.ts"],"names":[],"mappings":";;;AAAA,gDAAgD;AAChD,+BAQe;AAEF,QAAA,QAAQ,GAAG,IAAI,eAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACrC,QAAA,MAAM,GAAG,IAAI,eAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACjC,QAAA,OAAO,GAAG,IAAI,eAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACnC,QAAA,KAAK,GAAG,IAAI,eAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC/B,QAAA,OAAO,GAAG,IAAI,sBAAgB,CAAC,CAAC,CAAC,CAAC;AAClC,QAAA,OAAO,GAAG,IAAI,sBAAgB,CAAC,CAAC,CAAC,CAAC;AAClC,QAAA,OAAO,GAAG,IAAI,sBAAgB,CAAC,CAAC,CAAC,CAAC;AAClC,QAAA,QAAQ,GAAG,IAAI,sBAAgB,CAAC,EAAE,CAAC,CAAC;AACpC,QAAA,QAAQ,GAAG,IAAI,sBAAgB,CAAC,EAAE,CAAC,CAAC;AACpC,QAAA,QAAQ,GAAG,IAAI,sBAAgB,CAAC,EAAE,CAAC,CAAC;AACpC,QAAA,QAAQ,GAAG,IAAI,mBAAa,CAAC,KAAK,CAAC,CAAC;AACpC,QAAA,MAAM,GAAG,IAAI,iBAAW,EAAE,CAAC;AAC3B,QAAA,OAAO,GAAG,IAAI,kBAAY,EAAE,CAAC;AAC7B,QAAA,aAAa,GAAG,IAAI,mBAAa,CAAC,eAAO,EAAE,wBAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACtE,QAAA,YAAY,GAAG,IAAI,mBAAa,CAAC,cAAM,EAAE,wBAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACpE,QAAA,KAAK,GAAG,IAAI,gBAAU,EAAE,CAAC"}
@@ -1,7 +1,55 @@
1
- import { Expression, TypeName, VariableDeclaration } from "../ast";
2
- import { TypeIdentifier } from "./ast";
1
+ import { ASTContext, DataLocation, EnumDefinition, Expression, TypeName, VariableDeclaration } from "../ast";
2
+ import { IntTypeId, TypeIdentifier } from "./ast";
3
3
  /**
4
4
  * Return the parsed `TypeIdentifier` for the given node.
5
5
  */
6
6
  export declare function typeOf(nd: Expression | VariableDeclaration | TypeName): TypeIdentifier;
7
+ /**
8
+ * Given a `TypeIdentifier` `t` return a new `TypeIdentifier` with all pointer locations changed to `loc`.
9
+ * @param t
10
+ * @param loc
11
+ * @returns
12
+ */
13
+ export declare function changeLocationTo(t: TypeIdentifier, loc: DataLocation): TypeIdentifier;
14
+ /**
15
+ * Given a public state variable declaration `v` return the ABI types of the arguments and the returns for this var.
16
+ * This will account for:
17
+ * - indexing into arrays/maps
18
+ * - converting returned structs to tuples
19
+ * - omitting arrays and maps
20
+ *
21
+ * @param t
22
+ * @param loc
23
+ * @returns
24
+ */
25
+ export declare function getterArgsAndReturn(v: VariableDeclaration): [TypeIdentifier[], TypeIdentifier];
26
+ /**
27
+ * Return the int typeIdentifier corresponding to a given Enum
28
+ * @param decl
29
+ * @returns
30
+ */
31
+ export declare function enumToIntTypeId(decl: EnumDefinition): IntTypeId;
32
+ /**
33
+ * Given a `TypeIdentifier` `from` return the ABI type that corresponds to
34
+ * `from`. Note that there are no pointers in ABI types - instead the 3 dynamic
35
+ * types - bytes, strings and unsized arrays appear generalized.
36
+ * @param from
37
+ */
38
+ export declare function toABIType(from: TypeIdentifier, ctx: ASTContext): TypeIdentifier;
39
+ /**
40
+ * Given a `TypeIdentifier` `t` return a new generalized `TypeIdentifier` with all pointers removed (i.e. no specifications for locations)
41
+ * @param t
42
+ * @param loc
43
+ * @returns
44
+ */
45
+ export declare function generalize(t: TypeIdentifier): TypeIdentifier;
46
+ /**
47
+ * Given an already generalized `TypeIdentifier` `t` and a location return a new
48
+ * specialized `TypeIdentifier` with all reference types wrapped in a pointer to
49
+ * the given location
50
+ * @param t
51
+ * @param loc
52
+ * @returns
53
+ */
54
+ export declare function specialize(t: TypeIdentifier, loc: DataLocation): TypeIdentifier;
7
55
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/typeIdentifiers/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAEnE,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAKvC;;GAEG;AACH,wBAAgB,MAAM,CAAC,EAAE,EAAE,UAAU,GAAG,mBAAmB,GAAG,QAAQ,GAAG,cAAc,CAgBtF"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/typeIdentifiers/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,UAAU,EACV,YAAY,EACZ,cAAc,EACd,UAAU,EAGV,QAAQ,EAER,mBAAmB,EACtB,MAAM,QAAQ,CAAC;AAEhB,OAAO,EAUH,SAAS,EAMT,cAAc,EAEjB,MAAM,OAAO,CAAC;AAMf;;GAEG;AACH,wBAAgB,MAAM,CAAC,EAAE,EAAE,UAAU,GAAG,mBAAmB,GAAG,QAAQ,GAAG,cAAc,CAgBtF;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,cAAc,EAAE,GAAG,EAAE,YAAY,GAAG,cAAc,CA2BrF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,mBAAmB,GAAG,CAAC,cAAc,EAAE,EAAE,cAAc,CAAC,CAyC9F;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,CAoB/D;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,UAAU,GAAG,cAAc,CA6E/E;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,cAAc,GAAG,cAAc,CAkB5D;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,cAAc,EAAE,GAAG,EAAE,YAAY,GAAG,cAAc,CAkB/E"}
@@ -1,7 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.typeOf = void 0;
3
+ exports.specialize = exports.generalize = exports.toABIType = exports.enumToIntTypeId = exports.getterArgsAndReturn = exports.changeLocationTo = exports.typeOf = void 0;
4
+ const ast_1 = require("../ast");
4
5
  const misc_1 = require("../misc");
6
+ const ast_2 = require("./ast");
7
+ const constants_1 = require("./constants");
5
8
  const typeIdentifier_parser_gen_1 = require("./typeIdentifier_parser_gen");
6
9
  const cache = new Map();
7
10
  /**
@@ -23,4 +26,202 @@ function typeOf(nd) {
23
26
  return cached;
24
27
  }
25
28
  exports.typeOf = typeOf;
29
+ /**
30
+ * Given a `TypeIdentifier` `t` return a new `TypeIdentifier` with all pointer locations changed to `loc`.
31
+ * @param t
32
+ * @param loc
33
+ * @returns
34
+ */
35
+ function changeLocationTo(t, loc) {
36
+ if (t instanceof ast_2.PointerTypeId) {
37
+ return new ast_2.PointerTypeId(changeLocationTo(t.toType, loc), loc, t.isPointer);
38
+ }
39
+ if (t instanceof ast_2.ArrayTypeId) {
40
+ return new ast_2.ArrayTypeId(changeLocationTo(t.elT, loc), t.size);
41
+ }
42
+ if (t instanceof ast_2.ArraySliceTypeId) {
43
+ return new ast_2.ArraySliceTypeId(changeLocationTo(t.toType, loc));
44
+ }
45
+ if (t instanceof ast_2.MappingTypeId) {
46
+ return new ast_2.MappingTypeId(changeLocationTo(t.keyType, loc), changeLocationTo(t.valueType, loc));
47
+ }
48
+ if (t instanceof ast_2.TupleTypeId) {
49
+ return new ast_2.TupleTypeId(t.components.map((c) => (c === null ? c : changeLocationTo(c, loc))));
50
+ }
51
+ return t;
52
+ }
53
+ exports.changeLocationTo = changeLocationTo;
54
+ /**
55
+ * Given a public state variable declaration `v` return the ABI types of the arguments and the returns for this var.
56
+ * This will account for:
57
+ * - indexing into arrays/maps
58
+ * - converting returned structs to tuples
59
+ * - omitting arrays and maps
60
+ *
61
+ * @param t
62
+ * @param loc
63
+ * @returns
64
+ */
65
+ function getterArgsAndReturn(v) {
66
+ const argTypes = [];
67
+ const ctx = v.requiredContext;
68
+ let type = v.vType;
69
+ (0, misc_1.assert)(type !== undefined, "Called getterArgsAndReturn() on variable declaration without type", v);
70
+ while (true) {
71
+ if (type instanceof ast_1.ArrayTypeName) {
72
+ argTypes.push(constants_1.uint256T);
73
+ type = type.vBaseType;
74
+ }
75
+ else if (type instanceof ast_1.Mapping) {
76
+ // Make sure to change default storage pointer location for string/bytes to Memory as to not
77
+ // confuse `toABIType`.
78
+ argTypes.push(toABIType(changeLocationTo(typeOf(type.vKeyType), ast_1.DataLocation.Memory), ctx));
79
+ type = type.vValueType;
80
+ }
81
+ else {
82
+ break;
83
+ }
84
+ }
85
+ let retType = toABIType(changeLocationTo(typeOf(type), ast_1.DataLocation.Memory), ctx);
86
+ // Filter out top-level arrays. Maps are already filtered by toABIType
87
+ if (retType instanceof ast_2.TupleTypeId) {
88
+ const filteredComps = retType.components.filter((compT) => !(compT instanceof ast_2.ArrayTypeId));
89
+ // For top-level tuples remove any arrays from the tuple
90
+ retType = filteredComps.length === 1 ? filteredComps[0] : new ast_2.TupleTypeId(filteredComps);
91
+ }
92
+ return [argTypes, retType];
93
+ }
94
+ exports.getterArgsAndReturn = getterArgsAndReturn;
95
+ /**
96
+ * Return the int typeIdentifier corresponding to a given Enum
97
+ * @param decl
98
+ * @returns
99
+ */
100
+ function enumToIntTypeId(decl) {
101
+ const length = decl.children.length;
102
+ let size;
103
+ for (let n = 8; n <= 32; n += 8) {
104
+ if (length <= 2 ** n) {
105
+ size = n;
106
+ break;
107
+ }
108
+ }
109
+ (0, misc_1.assert)(size !== undefined, "Unable to detect enum type size - member count exceeds 2 ** 32", decl);
110
+ return new ast_2.IntTypeId(size, false);
111
+ }
112
+ exports.enumToIntTypeId = enumToIntTypeId;
113
+ /**
114
+ * Given a `TypeIdentifier` `from` return the ABI type that corresponds to
115
+ * `from`. Note that there are no pointers in ABI types - instead the 3 dynamic
116
+ * types - bytes, strings and unsized arrays appear generalized.
117
+ * @param from
118
+ */
119
+ function toABIType(from, ctx) {
120
+ if (from instanceof ast_2.AddressTypeId) {
121
+ // normalize payable -> address
122
+ return constants_1.addressT;
123
+ }
124
+ // Simple case - these are passed unchanged
125
+ if (from instanceof ast_2.BoolTypeId ||
126
+ from instanceof ast_2.BytesTypeId ||
127
+ from instanceof ast_2.StringTypeId ||
128
+ from instanceof ast_2.FixedBytesTypeId ||
129
+ from instanceof ast_2.IntTypeId) {
130
+ return from;
131
+ }
132
+ if (from instanceof ast_2.PointerTypeId) {
133
+ // Storage pointers in delegate calls are passed as numbers
134
+ if (from.location === ast_1.DataLocation.Storage) {
135
+ return constants_1.uint256T;
136
+ }
137
+ return toABIType(from.toType, ctx);
138
+ }
139
+ // Size arrays are passed as tuples, unsized arrays as arrays
140
+ if (from instanceof ast_2.ArrayTypeId) {
141
+ const elT = toABIType(from.elT, ctx);
142
+ return from.size === undefined
143
+ ? new ast_2.ArrayTypeId(elT, from.size)
144
+ : new ast_2.TupleTypeId((0, misc_1.repeat)(elT, Number(from.size)));
145
+ }
146
+ if (from instanceof ast_2.UserDefinedValueTypeId) {
147
+ const def = ctx.requireType(from.id, ast_1.UserDefinedValueTypeDefinition);
148
+ const innerT = typeOf(def.underlyingType);
149
+ return toABIType(innerT, ctx);
150
+ }
151
+ // Contracts are passed as addresses
152
+ if (from instanceof ast_2.ContractTypeId) {
153
+ return constants_1.addressT;
154
+ }
155
+ // Enums are passed as the smallest number that fits
156
+ if (from instanceof ast_2.EnumTypeId) {
157
+ const def = ctx.requireType(from.id, ast_1.EnumDefinition);
158
+ return enumToIntTypeId(def);
159
+ }
160
+ // Structs are passed as tuples
161
+ if (from instanceof ast_2.StructTypeId) {
162
+ const def = ctx.requireType(from.id, ast_1.StructDefinition);
163
+ let fieldTs = def.vMembers.map((decl) => typeOf(decl));
164
+ // Remove any mappings
165
+ fieldTs = fieldTs.filter((fieldT) => !(fieldT instanceof ast_2.MappingTypeId));
166
+ // Convert the fields to ABI types and filter out any empty tuples.
167
+ // Empty tuples can result if a field is a struct contains only mappings.
168
+ // Also note that struct fields have "storage" as a default location.
169
+ // Convert to Memory to avoid treating them as storage pointers.
170
+ const abiFieldTs = fieldTs
171
+ .map((fieldT) => toABIType(changeLocationTo(fieldT, ast_1.DataLocation.Memory), ctx))
172
+ .filter((abiFieldT) => !(abiFieldT instanceof ast_2.TupleTypeId && abiFieldT.components.length === 0));
173
+ return new ast_2.TupleTypeId(abiFieldTs);
174
+ }
175
+ if (from instanceof ast_2.FunctionTypeId && from.kind === "external") {
176
+ return constants_1.bytes24T;
177
+ }
178
+ (0, misc_1.assert)(false, `Cannot abi encode type ${from.pp()}`);
179
+ }
180
+ exports.toABIType = toABIType;
181
+ /**
182
+ * Given a `TypeIdentifier` `t` return a new generalized `TypeIdentifier` with all pointers removed (i.e. no specifications for locations)
183
+ * @param t
184
+ * @param loc
185
+ * @returns
186
+ */
187
+ function generalize(t) {
188
+ if (t instanceof ast_2.PointerTypeId) {
189
+ return generalize(t.toType);
190
+ }
191
+ if (t instanceof ast_2.ArrayTypeId) {
192
+ return new ast_2.ArrayTypeId(generalize(t.elT), t.size);
193
+ }
194
+ if (t instanceof ast_2.ArraySliceTypeId || t instanceof ast_2.MappingTypeId) {
195
+ throw new Error(`Cannot generalize ${t.pp()}`);
196
+ }
197
+ if (t instanceof ast_2.TupleTypeId) {
198
+ return new ast_2.TupleTypeId(t.components.map((c) => (c === null ? c : generalize(c))));
199
+ }
200
+ return t;
201
+ }
202
+ exports.generalize = generalize;
203
+ /**
204
+ * Given an already generalized `TypeIdentifier` `t` and a location return a new
205
+ * specialized `TypeIdentifier` with all reference types wrapped in a pointer to
206
+ * the given location
207
+ * @param t
208
+ * @param loc
209
+ * @returns
210
+ */
211
+ function specialize(t, loc) {
212
+ if (t instanceof ast_2.ArraySliceTypeId || t instanceof ast_2.PointerTypeId || t instanceof ast_2.MappingTypeId) {
213
+ throw new Error(`Cannot specialize ${t.pp()}`);
214
+ }
215
+ if (t instanceof ast_2.ArrayTypeId) {
216
+ return new ast_2.PointerTypeId(new ast_2.ArrayTypeId(specialize(t.elT, loc), t.size), loc, true);
217
+ }
218
+ if (t instanceof ast_2.BytesTypeId || t instanceof ast_2.StringTypeId) {
219
+ return new ast_2.PointerTypeId(t, loc, true);
220
+ }
221
+ if (t instanceof ast_2.TupleTypeId) {
222
+ return new ast_2.TupleTypeId(t.components.map((c) => (c === null ? c : specialize(c, loc))));
223
+ }
224
+ return t;
225
+ }
226
+ exports.specialize = specialize;
26
227
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/typeIdentifiers/utils.ts"],"names":[],"mappings":";;;AACA,kCAAiC;AAEjC,2EAAkE;AAElE,MAAM,KAAK,GAAG,IAAI,GAAG,EAA0B,CAAC;AAEhD;;GAEG;AACH,SAAgB,MAAM,CAAC,EAA+C;IAClE,IAAA,aAAM,EAAC,EAAE,CAAC,cAAc,KAAK,SAAS,EAAE,+BAA+B,EAAE,EAAE,CAAC,CAAC;IAC7E,IAAI,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC;IAE1C;;;;;OAKG;IACH,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,GAAG,IAAA,+CAAmB,EAAC,EAAE,CAAC,cAAc,CAAC,CAAC;QAChD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAhBD,wBAgBC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/typeIdentifiers/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "solc-typed-ast",
3
- "version": "19.0.0",
3
+ "version": "19.1.0",
4
4
  "description": "A TypeScript library providing a normalized typed Solidity AST along with the utilities necessary to generate the AST (from Solc) and traverse/manipulate it.",
5
5
  "keywords": [],
6
6
  "files": [