@ibyar/expressions 0.8.6 → 1.0.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.
Files changed (243) hide show
  1. package/api/abstract.d.ts +1 -0
  2. package/api/abstract.d.ts.map +1 -0
  3. package/api/abstract.js +12 -0
  4. package/api/abstract.js.map +1 -1
  5. package/api/class/class.d.ts +1 -0
  6. package/api/class/class.d.ts.map +1 -0
  7. package/api/class/class.js +563 -482
  8. package/api/class/class.js.map +1 -1
  9. package/api/class/decorator.d.ts +1 -0
  10. package/api/class/decorator.d.ts.map +1 -0
  11. package/api/class/decorator.js +49 -42
  12. package/api/class/decorator.js.map +1 -1
  13. package/api/computing/call.d.ts +1 -0
  14. package/api/computing/call.d.ts.map +1 -0
  15. package/api/computing/call.js +79 -70
  16. package/api/computing/call.js.map +1 -1
  17. package/api/computing/debugger.d.ts +1 -0
  18. package/api/computing/debugger.d.ts.map +1 -0
  19. package/api/computing/debugger.js +36 -29
  20. package/api/computing/debugger.js.map +1 -1
  21. package/api/computing/new.d.ts +1 -0
  22. package/api/computing/new.d.ts.map +1 -0
  23. package/api/computing/new.js +77 -69
  24. package/api/computing/new.js.map +1 -1
  25. package/api/computing/rest.d.ts +1 -0
  26. package/api/computing/rest.d.ts.map +1 -0
  27. package/api/computing/rest.js +50 -43
  28. package/api/computing/rest.js.map +1 -1
  29. package/api/computing/return.d.ts +1 -0
  30. package/api/computing/return.d.ts.map +1 -0
  31. package/api/computing/return.js +48 -41
  32. package/api/computing/return.js.map +1 -1
  33. package/api/computing/spread.d.ts +1 -0
  34. package/api/computing/spread.d.ts.map +1 -0
  35. package/api/computing/spread.js +66 -59
  36. package/api/computing/spread.js.map +1 -1
  37. package/api/computing/throw.d.ts +1 -0
  38. package/api/computing/throw.d.ts.map +1 -0
  39. package/api/computing/throw.js +204 -178
  40. package/api/computing/throw.js.map +1 -1
  41. package/api/computing/yield.d.ts +1 -0
  42. package/api/computing/yield.d.ts.map +1 -0
  43. package/api/computing/yield.js +56 -48
  44. package/api/computing/yield.js.map +1 -1
  45. package/api/definition/array.d.ts +1 -0
  46. package/api/definition/array.d.ts.map +1 -0
  47. package/api/definition/array.js +139 -124
  48. package/api/definition/array.js.map +1 -1
  49. package/api/definition/bind.d.ts +1 -0
  50. package/api/definition/bind.d.ts.map +1 -0
  51. package/api/definition/bind.js +81 -71
  52. package/api/definition/bind.js.map +1 -1
  53. package/api/definition/comment.d.ts +1 -0
  54. package/api/definition/comment.d.ts.map +1 -0
  55. package/api/definition/comment.js +40 -33
  56. package/api/definition/comment.js.map +1 -1
  57. package/api/definition/function.d.ts +1 -0
  58. package/api/definition/function.d.ts.map +1 -0
  59. package/api/definition/function.js +484 -447
  60. package/api/definition/function.js.map +1 -1
  61. package/api/definition/member.d.ts +1 -0
  62. package/api/definition/member.d.ts.map +1 -0
  63. package/api/definition/member.js +100 -90
  64. package/api/definition/member.js.map +1 -1
  65. package/api/definition/object.d.ts +1 -0
  66. package/api/definition/object.d.ts.map +1 -0
  67. package/api/definition/object.js +230 -202
  68. package/api/definition/object.js.map +1 -1
  69. package/api/definition/statement.d.ts +1 -0
  70. package/api/definition/statement.d.ts.map +1 -0
  71. package/api/definition/statement.js +52 -45
  72. package/api/definition/statement.js.map +1 -1
  73. package/api/definition/values.d.ts +1 -0
  74. package/api/definition/values.d.ts.map +1 -0
  75. package/api/definition/values.js +210 -167
  76. package/api/definition/values.js.map +1 -1
  77. package/api/deserialize/deserialize.d.ts +2 -1
  78. package/api/deserialize/deserialize.d.ts.map +1 -0
  79. package/api/deserialize/deserialize.js +5 -7
  80. package/api/deserialize/deserialize.js.map +1 -1
  81. package/api/deserialize/type-store.d.ts +1 -0
  82. package/api/deserialize/type-store.d.ts.map +1 -0
  83. package/api/expression.d.ts +1 -0
  84. package/api/expression.d.ts.map +1 -0
  85. package/api/index.d.ts +1 -0
  86. package/api/index.d.ts.map +1 -0
  87. package/api/module/common.d.ts +1 -0
  88. package/api/module/common.d.ts.map +1 -0
  89. package/api/module/common.js +59 -51
  90. package/api/module/common.js.map +1 -1
  91. package/api/module/export.d.ts +1 -0
  92. package/api/module/export.d.ts.map +1 -0
  93. package/api/module/export.js +327 -294
  94. package/api/module/export.js.map +1 -1
  95. package/api/module/import.d.ts +1 -0
  96. package/api/module/import.d.ts.map +1 -0
  97. package/api/module/import.js +298 -258
  98. package/api/module/import.js.map +1 -1
  99. package/api/operators/assignment.d.ts +1 -0
  100. package/api/operators/assignment.d.ts.map +1 -0
  101. package/api/operators/assignment.js +84 -75
  102. package/api/operators/assignment.js.map +1 -1
  103. package/api/operators/await.d.ts +1 -0
  104. package/api/operators/await.d.ts.map +1 -0
  105. package/api/operators/await.js +50 -43
  106. package/api/operators/await.js.map +1 -1
  107. package/api/operators/binary.d.ts +1 -0
  108. package/api/operators/binary.d.ts.map +1 -0
  109. package/api/operators/binary.js +74 -64
  110. package/api/operators/binary.js.map +1 -1
  111. package/api/operators/chaining.d.ts +1 -0
  112. package/api/operators/chaining.d.ts.map +1 -0
  113. package/api/operators/chaining.js +52 -45
  114. package/api/operators/chaining.js.map +1 -1
  115. package/api/operators/comma.d.ts +1 -0
  116. package/api/operators/comma.d.ts.map +1 -0
  117. package/api/operators/comma.js +49 -42
  118. package/api/operators/comma.js.map +1 -1
  119. package/api/operators/grouping.d.ts +1 -0
  120. package/api/operators/grouping.d.ts.map +1 -0
  121. package/api/operators/grouping.js +47 -40
  122. package/api/operators/grouping.js.map +1 -1
  123. package/api/operators/logical.d.ts +1 -0
  124. package/api/operators/logical.d.ts.map +1 -0
  125. package/api/operators/logical.js +47 -37
  126. package/api/operators/logical.js.map +1 -1
  127. package/api/operators/pipeline.d.ts +1 -0
  128. package/api/operators/pipeline.d.ts.map +1 -0
  129. package/api/operators/pipeline.js +91 -82
  130. package/api/operators/pipeline.js.map +1 -1
  131. package/api/operators/ternary.d.ts +1 -0
  132. package/api/operators/ternary.d.ts.map +1 -0
  133. package/api/operators/ternary.js +65 -56
  134. package/api/operators/ternary.js.map +1 -1
  135. package/api/operators/types.d.ts +1 -0
  136. package/api/operators/types.d.ts.map +1 -0
  137. package/api/operators/unary.d.ts +1 -0
  138. package/api/operators/unary.d.ts.map +1 -0
  139. package/api/operators/unary.js +93 -82
  140. package/api/operators/unary.js.map +1 -1
  141. package/api/operators/update.d.ts +1 -0
  142. package/api/operators/update.d.ts.map +1 -0
  143. package/api/operators/update.js +74 -62
  144. package/api/operators/update.js.map +1 -1
  145. package/api/program.d.ts +1 -0
  146. package/api/program.d.ts.map +1 -0
  147. package/api/program.js +49 -41
  148. package/api/program.js.map +1 -1
  149. package/api/statement/control/block.d.ts +1 -0
  150. package/api/statement/control/block.d.ts.map +1 -0
  151. package/api/statement/control/block.js +61 -54
  152. package/api/statement/control/block.js.map +1 -1
  153. package/api/statement/control/empty.d.ts +1 -1
  154. package/api/statement/control/empty.d.ts.map +1 -0
  155. package/api/statement/control/empty.js +39 -34
  156. package/api/statement/control/empty.js.map +1 -1
  157. package/api/statement/control/if.d.ts +1 -0
  158. package/api/statement/control/if.d.ts.map +1 -0
  159. package/api/statement/control/if.js +75 -66
  160. package/api/statement/control/if.js.map +1 -1
  161. package/api/statement/control/switch.d.ts +1 -0
  162. package/api/statement/control/switch.d.ts.map +1 -0
  163. package/api/statement/control/switch.js +168 -144
  164. package/api/statement/control/switch.js.map +1 -1
  165. package/api/statement/control/terminate.d.ts +1 -2
  166. package/api/statement/control/terminate.d.ts.map +1 -0
  167. package/api/statement/control/terminate.js +105 -81
  168. package/api/statement/control/terminate.js.map +1 -1
  169. package/api/statement/control/with.d.ts +1 -0
  170. package/api/statement/control/with.d.ts.map +1 -0
  171. package/api/statement/control/with.js +68 -60
  172. package/api/statement/control/with.js.map +1 -1
  173. package/api/statement/declarations/declares.d.ts +1 -0
  174. package/api/statement/declarations/declares.d.ts.map +1 -0
  175. package/api/statement/declarations/declares.js +140 -123
  176. package/api/statement/declarations/declares.js.map +1 -1
  177. package/api/statement/iterations/for.d.ts +1 -0
  178. package/api/statement/iterations/for.d.ts.map +1 -0
  179. package/api/statement/iterations/for.js +320 -280
  180. package/api/statement/iterations/for.js.map +1 -1
  181. package/api/statement/iterations/while.d.ts +1 -0
  182. package/api/statement/iterations/while.d.ts.map +1 -0
  183. package/api/statement/iterations/while.js +144 -127
  184. package/api/statement/iterations/while.js.map +1 -1
  185. package/api/utils.d.ts +1 -0
  186. package/api/utils.d.ts.map +1 -0
  187. package/index.d.ts +1 -0
  188. package/index.d.ts.map +1 -0
  189. package/package.json +4 -4
  190. package/scope/event.d.ts +1 -0
  191. package/scope/event.d.ts.map +1 -0
  192. package/scope/finalizer.d.ts +1 -0
  193. package/scope/finalizer.d.ts.map +1 -0
  194. package/scope/index.d.ts +1 -0
  195. package/scope/index.d.ts.map +1 -0
  196. package/scope/pool.d.ts +1 -0
  197. package/scope/pool.d.ts.map +1 -0
  198. package/scope/proxy.d.ts +1 -0
  199. package/scope/proxy.d.ts.map +1 -0
  200. package/scope/proxy.js +1 -0
  201. package/scope/proxy.js.map +1 -1
  202. package/scope/scope.d.ts +1 -0
  203. package/scope/scope.d.ts.map +1 -0
  204. package/scope/scope.js +17 -11
  205. package/scope/scope.js.map +1 -1
  206. package/scope/stack.d.ts +1 -0
  207. package/scope/stack.d.ts.map +1 -0
  208. package/scope/stack.js +21 -13
  209. package/scope/stack.js.map +1 -1
  210. package/v8/enums.d.ts +1 -0
  211. package/v8/enums.d.ts.map +1 -0
  212. package/v8/enums.js +15 -13
  213. package/v8/enums.js.map +1 -1
  214. package/v8/factory.d.ts +1 -0
  215. package/v8/factory.d.ts.map +1 -0
  216. package/v8/factory.js +3 -1
  217. package/v8/factory.js.map +1 -1
  218. package/v8/index.d.ts +1 -0
  219. package/v8/index.d.ts.map +1 -0
  220. package/v8/inline.d.ts +1 -0
  221. package/v8/inline.d.ts.map +1 -0
  222. package/v8/inline.js +9 -5
  223. package/v8/inline.js.map +1 -1
  224. package/v8/language.d.ts +1 -0
  225. package/v8/language.d.ts.map +1 -0
  226. package/v8/node.d.ts +1 -0
  227. package/v8/node.d.ts.map +1 -0
  228. package/v8/parser.d.ts +1 -0
  229. package/v8/parser.d.ts.map +1 -0
  230. package/v8/parser.js +5 -5
  231. package/v8/parser.js.map +1 -1
  232. package/v8/stream.d.ts +1 -0
  233. package/v8/stream.d.ts.map +1 -0
  234. package/v8/stream.js +19 -8
  235. package/v8/stream.js.map +1 -1
  236. package/v8/token.d.ts +1 -0
  237. package/v8/token.d.ts.map +1 -0
  238. package/v8/token.js +365 -359
  239. package/v8/token.js.map +1 -1
  240. package/visit/index.d.ts +1 -0
  241. package/visit/index.d.ts.map +1 -0
  242. package/visit/visitor.d.ts +1 -0
  243. package/visit/visitor.d.ts.map +1 -0
package/v8/language.d.ts CHANGED
@@ -5,3 +5,4 @@ export declare enum LanguageMode {
5
5
  export declare function isSloppy(mode: LanguageMode): boolean;
6
6
  export declare function isStrict(mode: LanguageMode): boolean;
7
7
  export declare function getLanguageMode(isModule: boolean): LanguageMode;
8
+ //# sourceMappingURL=language.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language.d.ts","sourceRoot":"","sources":["../../../src/expressions/v8/language.ts"],"names":[],"mappings":"AAAA,oBAAY,YAAY;IACvB,MAAM,IAAA;IACN,MAAM,IAAA;CACN;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,YAAY,WAE1C;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,YAAY,WAE1C;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,gBAEhD"}
package/v8/node.d.ts CHANGED
@@ -139,3 +139,4 @@ export interface NodeFactory {
139
139
  isGroupingExpression(node: ExpressionNode): node is GroupingExpression;
140
140
  isSpreadElement(node: ExpressionNode): node is SpreadElement;
141
141
  }
142
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/expressions/v8/node.ts"],"names":[],"mappings":"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"}
package/v8/parser.d.ts CHANGED
@@ -59,3 +59,4 @@ export declare class JavaScriptParser extends JavaScriptInlineParser {
59
59
  protected parseExportStar(start: PositionMark): ExpressionNode | undefined;
60
60
  protected parseWithStatement(): WithStatement;
61
61
  }
62
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/expressions/v8/parser.ts"],"names":[],"mappings":"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"}
package/v8/parser.js CHANGED
@@ -13,7 +13,7 @@ export class JavaScriptParser extends JavaScriptInlineParser {
13
13
  * @returns
14
14
  */
15
15
  static parse(source, { mode, factory, addLocation } = {}) {
16
- mode ?? (mode = LanguageMode.Strict);
16
+ mode ??= LanguageMode.Strict;
17
17
  const stream = (typeof source === 'string') || Array.isArray(source)
18
18
  ? TokenStream.getTokenStream(source, mode) : source;
19
19
  if (factory == undefined) {
@@ -133,16 +133,16 @@ export class JavaScriptParser extends JavaScriptInlineParser {
133
133
  if (!classInfo.hasStaticComputedNames && propInfo.isStatic && propInfo.isComputedName) {
134
134
  classInfo.hasStaticComputedNames = true;
135
135
  }
136
- isConstructor && (isConstructor = classInfo.hasSeenConstructor);
136
+ isConstructor &&= classInfo.hasSeenConstructor;
137
137
  const isField = propertyKind == ClassLiteralPropertyKind.FIELD;
138
138
  if (propInfo.isPrivate) {
139
139
  if (isConstructor) {
140
140
  throw new Error(this.errorMessage('private constructor is not allowed'));
141
141
  }
142
- classInfo.requiresBrand || (classInfo.requiresBrand = !isField && !propInfo.isStatic);
142
+ classInfo.requiresBrand ||= (!isField && !propInfo.isStatic);
143
143
  const isMethod = propertyKind == ClassLiteralPropertyKind.METHOD;
144
- classInfo.hasPrivateMethods || (classInfo.hasPrivateMethods = isMethod);
145
- classInfo.hasStaticPrivateMethods || (classInfo.hasStaticPrivateMethods = isMethod && propInfo.isStatic);
144
+ classInfo.hasPrivateMethods ||= isMethod;
145
+ classInfo.hasStaticPrivateMethods ||= isMethod && propInfo.isStatic;
146
146
  this.declarePrivateClassMember(propInfo.name, property, propertyKind, propInfo.isStatic, classInfo);
147
147
  continue;
148
148
  }
package/v8/parser.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/expressions/v8/parser.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ExpressionNode } from '../api/expression.js';\nimport type { NodeFactory } from './node.js';\nimport {\n\tAccessorProperty,\n\tClass,\n\tClassBody,\n\tClassDeclaration,\n\tClassExpression,\n\tMethodDefinition,\n\tPropertyDefinition,\n\tStaticBlock\n} from '../api/class/class.js';\nimport { FunctionExpression } from '../api/definition/function.js';\nimport { Identifier, Literal } from '../api/definition/values.js';\nimport { ImportAttribute, ModuleSpecifier } from '../api/module/common.js';\nimport { ExportDefaultDeclaration, ExportSpecifier } from '../api/module/export.js';\nimport { ImportSpecifier } from '../api/module/import.js';\nimport { Program } from '../api/program.js';\nimport {\n\tClassInfo,\n\tClassLiteralProperty,\n\tClassLiteralPropertyKind,\n\tclassPropertyKindFor,\n\tcreateClassInfo,\n\tFunctionKind,\n\tFunctionSyntaxKind,\n\tisAccessor,\n\tParseFunctionFlag,\n\tPropertyKind,\n\tPropertyKindInfo,\n\tPropertyPosition,\n\tVariableDeclarationContext\n} from './enums.js';\nimport { InlineParserOptions, JavaScriptInlineParser, PositionMark } from './inline.js';\nimport { TokenStream } from './stream.js';\nimport { Token, TokenExpression } from './token.js';\n\nimport { WithStatement } from '../api/statement/control/with.js';\nimport { ExpressionNodeFactory, ExpressionNodeSourcePosition } from './factory.js';\nimport { isStrict, LanguageMode } from './language.js';\n\nexport type ParserOptions = { mode?: LanguageMode, factory?: NodeFactory, addLocation?: boolean };\n\nexport class JavaScriptParser extends JavaScriptInlineParser {\n\t/**\n\t * parser js with\n\t * @param source \n\t * @returns \n\t */\n\tstatic parse(source: string | TokenExpression[] | TokenStream, { mode, factory, addLocation }: ParserOptions = {}): Program {\n\t\tmode ??= LanguageMode.Strict;\n\t\tconst stream = (typeof source === 'string') || Array.isArray(source)\n\t\t\t? TokenStream.getTokenStream(source, mode) : source;\n\t\tif (factory == undefined) {\n\t\t\tconst sourcePositionFactory = addLocation && typeof source === 'string' ? new ExpressionNodeSourcePosition(source) : undefined;\n\t\t\tfactory = new ExpressionNodeFactory(sourcePositionFactory);\n\t\t}\n\t\tconst parser = new JavaScriptParser(stream, factory, false);\n\t\treturn parser.scan();\n\t}\n\n\t/**\n\t * parse inline code like that used in html 2 or 1 way binding\n\t */\n\tstatic parseScript<T extends ExpressionNode>(source: string | TokenExpression[] | TokenStream, options?: InlineParserOptions): T {\n\t\treturn JavaScriptInlineParser.parse(source, options) as T;\n\t}\n\n\toverride scan(): Program {\n\t\tconst range = this.createStartPosition();\n\t\tconst isModule = isStrict(this.languageMode);\n\t\tif (isModule) {\n\t\t\tthis.setFunctionKind(FunctionKind.Module);\n\t\t}\n\t\tconst body = isModule ? this.parseModuleItemList() : this.parseStatementList(Token.EOS);\n\t\tthis.updateRangeEnd(range);\n\t\treturn this.factory.createProgram(isModule ? 'module' : 'script', body, range);\n\t}\n\tprotected override parseNewTargetExpression(start?: PositionMark): ExpressionNode {\n\t\tthis.consume(Token.PERIOD);\n\t\tconst target: ExpressionNode = this.parsePropertyOrPrivatePropertyName();\n\t\tif (target.toString() !== 'target') {\n\t\t\tthrow new Error(this.errorMessage(`Expression (new.${target.toString()}) not supported.`));\n\t\t}\n\t\treturn this.factory.createMetaProperty(\n\t\t\tthis.factory.createIdentifier('new', start?.range),\n\t\t\tthis.factory.createIdentifier('target', target.range),\n\t\t\tthis.createRange(start)\n\t\t);\n\t}\n\tprotected override parseClassExpression(): ClassExpression {\n\t\tthis.consume(Token.CLASS);\n\t\tlet name: ExpressionNode | undefined;\n\t\tlet isStrictReserved = false;\n\t\tif (this.peekAnyIdentifier()) {\n\t\t\tname = this.parseAndClassifyIdentifier(this.next());\n\t\t\tisStrictReserved = Token.isStrictReservedWord(this.current().token);\n\t\t}\n\t\tconst classLiteral = this.parseClassLiteral(name, isStrictReserved);\n\t\treturn this.factory.createClassExpression(classLiteral.getBody(), classLiteral.getDecorators(), classLiteral.getId()!, classLiteral.getSuperClass());\n\t}\n\tprotected override parseClassDeclaration(names: string[] | undefined, defaultExport: boolean, start: PositionMark): ClassDeclaration {\n\t\t// ClassDeclaration ::\n\t\t// 'class' Identifier ('extends' LeftHandExpression)? '{' ClassBody '}'\n\t\t// 'class' ('extends' LeftHandExpression)? '{' ClassBody '}'\n\t\t//\n\t\t// The anonymous form is allowed iff [default_export] is true.\n\t\t//\n\t\t// 'class' is expected to be consumed by the caller.\n\t\t//\n\t\t// A ClassDeclaration\n\t\t//\n\t\t// class C { ... }\n\t\t//\n\t\t// has the same semantics as:\n\t\t//\n\t\t// let C = class C { ... };\n\t\t//\n\t\t// so rewrite it as such.\n\n\t\tconst nextToken = this.peek().token;\n\t\tconst isStrictReserved = Token.isStrictReservedWord(nextToken);\n\t\tlet name: ExpressionNode | undefined;\n\t\tlet variableName: string | undefined;\n\t\tif (defaultExport && (nextToken == Token.EXTENDS || nextToken == Token.LBRACE)) {\n\t\t\tname = new Literal('default');\n\t\t\tvariableName = '.default';\n\t\t} else {\n\t\t\tconst identifier = this.parseIdentifier();\n\t\t\tvariableName = identifier.getName() as string;\n\t\t\tname = identifier;\n\t\t}\n\t\tconst classLiteral = this.parseClassLiteral(name, isStrictReserved);\n\t\tconst range = this.createRange(start);\n\t\treturn this.factory.createClassDeclaration(\n\t\t\tclassLiteral.getBody(),\n\t\t\tclassLiteral.getDecorators(),\n\t\t\tclassLiteral.getId()!,\n\t\t\tclassLiteral.getSuperClass(),\n\t\t\trange\n\t\t);\n\t}\n\tprotected override parseClassLiteral(name: ExpressionNode | undefined, nameIsStrictReserved: boolean): Class {\n\t\tconst isAnonymous = !!!name;\n\n\t\t// All parts of a ClassDeclaration and ClassExpression are strict code.\n\t\tif (!isAnonymous) {\n\t\t\tif (nameIsStrictReserved) {\n\t\t\t\tthrow new Error(this.errorMessage(`Unexpected Strict Reserved class name`));\n\t\t\t}\n\t\t\tif (this.isEvalOrArguments(name!)) {\n\t\t\t\tthrow new Error(this.errorMessage(`Strict Eval Arguments not allowed for class name`));\n\t\t\t}\n\t\t}\n\n\t\tconst classInfo: ClassInfo = createClassInfo();\n\t\tclassInfo.isAnonymous = isAnonymous;\n\n\t\tif (this.check(Token.EXTENDS)) {\n\t\t\tclassInfo.extends = this.parseLeftHandSideExpression();\n\t\t}\n\n\t\tconst bodyStart = this.expect(Token.LBRACE);\n\n\t\tconst hasExtends = !!classInfo.extends;\n\n\t\twhile (this.peek().isNotType(Token.RBRACE)) {\n\t\t\tif (this.check(Token.SEMICOLON)) continue;\n\n\t\t\t// Either we're parsing a `static { }` initialization block or a property.\n\t\t\tif (this.peek().isType(Token.STATIC) && this.peekAhead().isType(Token.LBRACE)) {\n\t\t\t\tconst staticBlock = this.parseClassStaticBlock(classInfo);\n\t\t\t\tclassInfo.staticElements.push(staticBlock);\n\t\t\t\tclassInfo.hasStaticBlocks = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// FuncNameInferrerState fni_state(& fni_);\n\t\t\t// If we haven't seen the constructor yet, it potentially is the next\n\t\t\t// property.\n\t\t\tlet isConstructor = !classInfo.hasSeenConstructor;\n\t\t\tconst propInfo = new PropertyKindInfo();\n\t\t\tpropInfo.position = PropertyPosition.ClassLiteral;\n\n\t\t\tconst property = this.parseClassPropertyDefinition(classInfo, propInfo, hasExtends);\n\n\t\t\t// if (has_error()) return impl() . FailureExpression();\n\n\t\t\tconst propertyKind = classPropertyKindFor(propInfo.kind);\n\t\t\tif (!classInfo.hasStaticComputedNames && propInfo.isStatic && propInfo.isComputedName) {\n\t\t\t\tclassInfo.hasStaticComputedNames = true;\n\t\t\t}\n\t\t\tisConstructor &&= classInfo.hasSeenConstructor;\n\n\t\t\tconst isField = propertyKind == ClassLiteralPropertyKind.FIELD;\n\n\t\t\tif (propInfo.isPrivate) {\n\t\t\t\tif (isConstructor) {\n\t\t\t\t\tthrow new Error(this.errorMessage('private constructor is not allowed'));\n\t\t\t\t}\n\t\t\t\tclassInfo.requiresBrand ||= (!isField && !propInfo.isStatic);\n\t\t\t\tconst isMethod = propertyKind == ClassLiteralPropertyKind.METHOD;\n\t\t\t\tclassInfo.hasPrivateMethods ||= isMethod;\n\t\t\t\tclassInfo.hasStaticPrivateMethods ||= isMethod && propInfo.isStatic;\n\t\t\t\tthis.declarePrivateClassMember(propInfo.name, property as MethodDefinition | PropertyDefinition, propertyKind, propInfo.isStatic, classInfo);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (isField) {\n\t\t\t\tif (propInfo.isComputedName) {\n\t\t\t\t\tclassInfo.computedFieldCount++;\n\t\t\t\t}\n\t\t\t\tthis.declarePublicClassField(property as PropertyDefinition, propInfo.isStatic, propInfo.isComputedName, classInfo);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tthis.declarePublicClassMethod(name, property as MethodDefinition, isConstructor, classInfo);\n\t\t}\n\n\t\tconst bodyEnd = this.expect(Token.RBRACE);\n\t\tconst classBody = this.rewriteClassLiteral(classInfo, name, [bodyStart.range[0], bodyEnd.range[1]]);\n\t\treturn new Class(classBody, [], name as Identifier, classInfo.extends);\n\t}\n\tprotected declarePublicClassMethod(name: ExpressionNode | undefined, property: MethodDefinition, isConstructor: boolean, classInfo: ClassInfo): void {\n\t\t// throw new Error('Method not implemented.');\n\t\tif (isConstructor) {\n\t\t\tif (classInfo.constructor) {\n\t\t\t\tthrow new SyntaxError(this.errorMessage('A class may only have one constructor.'));\n\t\t\t}\n\t\t\tclassInfo.constructor = property;\n\t\t\t// set the class name as the constructor name\n\t\t\tReflect.set(classInfo.constructor, 'id', name);\n\t\t\treturn;\n\t\t}\n\t\tclassInfo.publicMembers.push(property);\n\t}\n\tprotected declarePublicClassField(property: PropertyDefinition, isStatic: boolean, isComputedName: boolean, classInfo: ClassInfo) {\n\t\tif (isStatic) {\n\t\t\tclassInfo.staticElements.push(property);\n\t\t} else {\n\t\t\tclassInfo.instanceFields.push(property);\n\t\t}\n\n\t\t// if (isComputedName) {\n\t\t// \tclassInfo.publicMembers.push(property);\n\t\t// }\n\n\t}\n\tprotected declarePrivateClassMember(propertyName: string, property: MethodDefinition | PropertyDefinition, kind: ClassLiteralPropertyKind, isStatic: boolean, classInfo: ClassInfo) {\n\t\tclassInfo.privateMembers.push(property);\n\t}\n\t// protected createPrivateNameVariable(mode: VariableMode, staticFlag: StaticFlag, propertyName: string) {\n\t// \tthrow new Error('Method not implemented.');\n\t// }\n\tprotected parseClassPropertyDefinition(classInfo: ClassInfo, propInfo: PropertyKindInfo, hasExtends: boolean) {\n\t\tif (!classInfo) {\n\t\t\tthrow new Error(this.errorMessage('class info is undefined'));\n\t\t}\n\t\tif (propInfo.position !== PropertyPosition.ClassLiteral) {\n\t\t\tthrow new Error(this.errorMessage('expected property position ClassLiteral'));\n\t\t}\n\n\t\tconst nameToken = this.peek();\n\t\tlet nameExpression: ExpressionNode;\n\t\tif (nameToken.isType(Token.STATIC)) {\n\t\t\tthis.consume(Token.STATIC);\n\t\t\tif (this.peek().isType(Token.LPAREN)) {\n\t\t\t\tpropInfo.kind = PropertyKind.Method;\n\t\t\t\tnameExpression = this.parseIdentifier();\n\t\t\t\tpropInfo.name = (nameExpression as Identifier).getName() as string;\n\t\t\t} else if (this.peek().isType(Token.ASSIGN)\n\t\t\t\t|| this.peek().isType(Token.SEMICOLON)\n\t\t\t\t|| this.peek().isType(Token.RBRACK)) {\n\t\t\t\tnameExpression = this.parseIdentifier();\n\t\t\t\tpropInfo.name = (nameExpression as Identifier).getName() as string;\n\t\t\t} else {\n\t\t\t\tpropInfo.isStatic = true;\n\t\t\t\tnameExpression = this.parseProperty(propInfo);\n\t\t\t}\n\t\t} else {\n\t\t\tnameExpression = this.parseProperty(propInfo);\n\t\t}\n\n\t\tswitch (propInfo.kind) {\n\t\t\tcase PropertyKind.Assign:\n\t\t\tcase PropertyKind.ClassField:\n\t\t\tcase PropertyKind.ShorthandOrClassField:\n\t\t\tcase PropertyKind.NotSet: {\n\t\t\t\t// This case is a name followed by a\n\t\t\t\t// name or other property. Here we have\n\t\t\t\t// to assume that's an uninitialized\n\t\t\t\t// field followed by a line break\n\t\t\t\t// followed by a property, with ASI\n\t\t\t\t// adding the semicolon. If not, there\n\t\t\t\t// will be a syntax error after parsing\n\t\t\t\t// the first name as an uninitialized\n\t\t\t\t// field.\n\t\t\t\tpropInfo.kind = PropertyKind.ClassField;\n\n\t\t\t\t// if (!propInfo.isComputedName) {\n\t\t\t\t// \tthis.checkClassFieldName(propInfo.name, propInfo.isStatic);\n\t\t\t\t// }\n\n\t\t\t\tconst initializer = this.parseMemberInitializer(classInfo, propInfo.isStatic);\n\t\t\t\tthis.expectSemicolon();\n\n\t\t\t\tconst result: ExpressionNode = this.newClassLiteralProperty(\n\t\t\t\t\tnameExpression,\n\t\t\t\t\tinitializer,\n\t\t\t\t\tClassLiteralPropertyKind.FIELD,\n\t\t\t\t\tpropInfo.isStatic,\n\t\t\t\t\tpropInfo.isComputedName,\n\t\t\t\t\tpropInfo.isPrivate,\n\t\t\t\t\tpropInfo.rangeStart\n\t\t\t\t);\n\t\t\t\tthis.setFunctionNameFromPropertyName(result, propInfo.name);\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\tcase PropertyKind.Method: {\n\t\t\t\t// MethodDefinition\n\t\t\t\t// PropertyName '(' StrictFormalParameters ')' '{' FunctionBody '}'\n\t\t\t\t// '*' PropertyName '(' StrictFormalParameters ')' '{' FunctionBody '}'\n\t\t\t\t// async PropertyName '(' StrictFormalParameters ')'\n\t\t\t\t// '{' FunctionBody '}'\n\t\t\t\t// async '*' PropertyName '(' StrictFormalParameters ')'\n\t\t\t\t// '{' FunctionBody '}'\n\n\t\t\t\tif (!propInfo.isComputedName) {\n\t\t\t\t\tthis.checkClassMethodName(propInfo, classInfo);\n\t\t\t\t}\n\n\t\t\t\tlet kind: FunctionKind = this.methodKindFor(propInfo.isStatic, propInfo.funcFlag);\n\n\t\t\t\tif (!propInfo.isStatic && propInfo.name.toString() === 'constructor') {\n\t\t\t\t\tclassInfo.hasSeenConstructor = true;\n\t\t\t\t\tkind = hasExtends ? FunctionKind.DerivedConstructor : FunctionKind.BaseConstructor;\n\t\t\t\t}\n\n\t\t\t\tconst value = this.parseFunctionLiteral(kind, FunctionSyntaxKind.AccessorOrMethod, nameExpression as Identifier, propInfo.rangeStart);\n\n\t\t\t\tconst result = this.newClassLiteralProperty(\n\t\t\t\t\tnameExpression, value, ClassLiteralProperty.Kind.METHOD,\n\t\t\t\t\tpropInfo.isStatic, propInfo.isComputedName,\n\t\t\t\t\tpropInfo.isPrivate,\n\t\t\t\t\tpropInfo.rangeStart\n\t\t\t\t);\n\t\t\t\tthis.setFunctionNameFromPropertyName(result, propInfo.name);\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\tcase PropertyKind.AccessorGetter:\n\t\t\tcase PropertyKind.AccessorSetter: {\n\t\t\t\tif (propInfo.funcFlag !== ParseFunctionFlag.IsNormal) {\n\t\t\t\t\tthrow new Error(this.errorMessage('accessor is not normal function'));\n\t\t\t\t}\n\t\t\t\tconst isGet = propInfo.kind == PropertyKind.AccessorGetter;\n\n\t\t\t\tif (!propInfo.isComputedName) {\n\t\t\t\t\tthis.checkClassMethodName(propInfo, classInfo);\n\t\t\t\t\t// Make sure the name expression is a string since we need a Name for\n\t\t\t\t\t// Runtime_DefineAccessorPropertyUnchecked and since we can determine\n\t\t\t\t\t// this statically we can skip the extra runtime check.\n\t\t\t\t\tnameExpression = new Literal<string>(propInfo.name);\n\t\t\t\t}\n\n\t\t\t\tlet kind: FunctionKind;\n\t\t\t\tif (propInfo.isStatic) {\n\t\t\t\t\tkind = isGet ? FunctionKind.StaticGetterFunction\n\t\t\t\t\t\t: FunctionKind.StaticSetterFunction;\n\t\t\t\t} else {\n\t\t\t\t\tkind = isGet ? FunctionKind.GetterFunction\n\t\t\t\t\t\t: FunctionKind.SetterFunction;\n\t\t\t\t}\n\n\t\t\t\tconst value = this.parseFunctionLiteral(kind, FunctionSyntaxKind.AccessorOrMethod, nameExpression as Identifier, propInfo.rangeStart);\n\n\t\t\t\tconst propertyKind: ClassLiteralPropertyKind = isGet ? ClassLiteralProperty.Kind.GETTER : ClassLiteralProperty.Kind.SETTER;\n\t\t\t\tconst result = this.newClassLiteralProperty(\n\t\t\t\t\tnameExpression, value, propertyKind,\n\t\t\t\t\tpropInfo.isStatic, propInfo.isComputedName,\n\t\t\t\t\tpropInfo.isPrivate,\n\t\t\t\t\tpropInfo.rangeStart\n\t\t\t\t);\n\t\t\t\tconst prefix = isGet ? 'get ' : 'set ';\n\t\t\t\tthis.setFunctionNameFromPropertyName(result, propInfo.name, prefix);\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\tcase PropertyKind.Value:\n\t\t\tcase PropertyKind.Shorthand:\n\t\t\tcase PropertyKind.Spread:\n\t\t\t\t// throw new Error(this.errorMessage('Report Unexpected Token'));\n\t\t\t\treturn this.factory.createNull(propInfo.rangeStart?.range);\n\t\t}\n\t\tthrow new Error(this.errorMessage('UNREACHABLE'));\n\t}\n\tprotected checkClassMethodName(propInfo: PropertyKindInfo, classInfo: ClassInfo) {\n\t\tif (!(propInfo.kind == PropertyKind.Method || isAccessor(propInfo.kind))) {\n\t\t\tthrow new Error(this.errorMessage('not kind of method or setter or getter'));\n\t\t}\n\t\tif (propInfo.isPrivate && propInfo.name.toString() === 'constructor') {\n\t\t\tthrow new Error(this.errorMessage('constructor is private'));\n\t\t} else if (propInfo.isStatic && propInfo.name.toString() === 'prototype') {\n\t\t\tthrow new Error(this.errorMessage('static prototype'));\n\t\t} else if (propInfo.name.toString() === 'constructor') {\n\t\t\tif (propInfo.funcFlag !== ParseFunctionFlag.IsNormal || isAccessor(propInfo.kind)) {\n\t\t\t\tif (propInfo.funcFlag === ParseFunctionFlag.IsGenerator) {\n\t\t\t\t\tthrow new Error(this.errorMessage('constructor is generator'));\n\t\t\t\t} else if (propInfo.funcFlag === ParseFunctionFlag.IsAsync) {\n\t\t\t\t\tthrow new Error(this.errorMessage('constructor is async'));\n\t\t\t\t}\n\t\t\t\tif (classInfo.hasSeenConstructor) {\n\t\t\t\t\tthrow new Error(this.errorMessage('duplicate constructor'));\n\t\t\t\t}\n\t\t\t}\n\t\t\tclassInfo.hasSeenConstructor = true;\n\t\t}\n\t}\n\tprotected parseClassStaticBlock(classInfo: ClassInfo): StaticBlock {\n\t\tthis.consume(Token.STATIC);\n\t\t// Each static block has its own var and lexical scope, so make a new var\n\t\t// block scope instead of using the synthetic members initializer function\n\t\t// scope.\n\t\tthis.setStatue(true, FunctionKind.ClassStaticInitializerFunction);\n\t\tconst block = this.parseBlock();\n\t\tthis.restoreStatue();\n\t\tclassInfo.hasStaticElements = true;\n\t\treturn this.factory.createClassStaticBlockDeclaration(block.getBody(), block.range);\n\t}\n\tprotected newClassLiteralProperty(\n\t\tnameExpression: ExpressionNode,\n\t\tinitializer: ExpressionNode | undefined,\n\t\tkind: ClassLiteralPropertyKind,\n\t\tisStatic: boolean,\n\t\tisComputedName: boolean,\n\t\tisPrivate: boolean,\n\t\tstart: PositionMark) {\n\t\tconst range = this.createRange(start);\n\t\tswitch (kind) {\n\t\t\tcase ClassLiteralPropertyKind.METHOD:\n\t\t\t\tif (nameExpression.toString() === 'constructor') {\n\t\t\t\t\treturn this.factory.createMethodSignature('constructor', nameExpression, initializer as FunctionExpression, [], isComputedName, isStatic, range);\n\t\t\t\t}\n\t\t\t\treturn this.factory.createMethodSignature('method', nameExpression, initializer as FunctionExpression, [], isComputedName, isStatic, range);\n\t\t\tcase ClassLiteralPropertyKind.GETTER:\n\t\t\t\treturn this.factory.createMethodSignature('get', nameExpression, initializer as FunctionExpression, [], isComputedName, isStatic, range);\n\t\t\tcase ClassLiteralPropertyKind.SETTER:\n\t\t\t\treturn this.factory.createMethodSignature('set', nameExpression, initializer as FunctionExpression, [], isComputedName, isStatic, range);\n\t\t\tcase ClassLiteralPropertyKind.FIELD:\n\t\t\t\treturn this.factory.createPropertySignature(nameExpression, [], isComputedName, isStatic, initializer, range);\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t\tthrow new Error(this.errorMessage('UNREACHABLE'));\n\t}\n\tprotected parseMemberInitializer(classInfo: ClassInfo, isStatic: boolean): ExpressionNode | undefined {\n\t\tconst kind = isStatic\n\t\t\t? FunctionKind.ClassStaticInitializerFunction\n\t\t\t: FunctionKind.ClassMembersInitializerFunction;\n\t\tlet initializer: ExpressionNode | undefined = undefined;\n\t\tif (this.check(Token.ASSIGN)) {\n\t\t\tthis.setStatue(true, kind);\n\t\t\tinitializer = this.parseAssignmentExpression();\n\t\t\tthis.restoreStatue();\n\t\t}\n\t\tif (isStatic) {\n\t\t\tclassInfo.hasStaticElements = true;\n\t\t} else {\n\t\t\tclassInfo.hasInstanceMembers = true;\n\t\t}\n\t\treturn initializer;\n\t}\n\tprotected setFunctionNameFromPropertyName(property: ExpressionNode, name: string, prefix?: string): void {\n\t\t// TODO: no need for this now\n\t\t// check later when needed\n\t\t// the ClassExpression* handle this\n\t}\n\tprotected parseSuperExpression(): ExpressionNode {\n\t\tconst superToken = this.consume(Token.SUPER);\n\t\tif (Token.isProperty(this.peek().token)) {\n\t\t\tif (this.peek().isType(Token.PERIOD) && this.peekAhead().isType(Token.PRIVATE_NAME)) {\n\t\t\t\tthis.consume(Token.PERIOD);\n\t\t\t\tthis.consume(Token.PRIVATE_NAME);\n\t\t\t\tthrow new Error(this.errorMessage('Unexpected Private Field'));\n\t\t\t}\n\t\t\tif (this.peek().isType(Token.QUESTION_PERIOD)) {\n\t\t\t\tthis.consume(Token.QUESTION_PERIOD);\n\t\t\t\tthrow new Error(this.errorMessage('Optional Chaining No Super'));\n\t\t\t}\n\t\t\treturn this.factory.createSuper(superToken.range);\n\t\t}\n\t\tthrow new Error(this.errorMessage('Unexpected Super'));\n\t}\n\tprotected rewriteClassLiteral(classInfo: ClassInfo, name?: ExpressionNode, range?: [number, number]): ClassBody {\n\t\tconst body: (MethodDefinition | PropertyDefinition | AccessorProperty | StaticBlock)[] = [];\n\t\tif (classInfo.hasSeenConstructor) {\n\t\t\tbody.push(classInfo.constructor as MethodDefinition);\n\t\t}\n\t\tbody.push(...classInfo.staticElements);\n\t\tbody.push(...classInfo.instanceFields);\n\t\tbody.push(...classInfo.publicMembers);\n\t\tbody.push(...classInfo.privateMembers);\n\t\treturn this.factory.createClassBody(body, range);\n\t}\n\tprotected parseModuleItemList(): ExpressionNode[] {\n\t\t// ecma262/#prod-Module\n\t\t// Module :\n\t\t// ModuleBody?\n\t\t//\n\t\t// ecma262/#prod-ModuleItemList\n\t\t// ModuleBody :\n\t\t// ModuleItem*\n\t\tconst body: ExpressionNode[] = [];\n\t\twhile (this.peek().isNotType(Token.EOS)) {\n\t\t\tconst stat = this.parseModuleItem();\n\t\t\tif (!stat) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (this.factory.isEmptyStatement(stat)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tbody.push(stat);\n\t\t}\n\t\treturn body;\n\t}\n\tprotected parseModuleItem(): ExpressionNode | undefined {\n\t\t// ecma262/#prod-ModuleItem\n\t\t// ModuleItem :\n\t\t// ImportDeclaration\n\t\t// ExportDeclaration\n\t\t// StatementListItem\n\n\t\tconst next = this.peek();\n\t\tif (next.isType(Token.EXPORT)) {\n\t\t\treturn this.parseExportDeclaration();\n\t\t}\n\t\tif (next.isType(Token.IMPORT)) {\n\t\t\t// We must be careful not to parse a dynamic import expression as an import\n\t\t\t// declaration. Same for import.meta expressions.\n\t\t\tconst peekAhead = this.peekAhead();\n\t\t\tif (peekAhead.isNotType(Token.LPAREN) && peekAhead.isNotType(Token.PERIOD)) {\n\t\t\t\treturn this.parseImportDeclaration();\n\t\t\t\t// return factory() -> EmptyStatement();\n\t\t\t}\n\t\t}\n\n\t\treturn this.parseStatementListItem();\n\t}\n\tprotected parseExportDeclaration(): ExpressionNode | undefined {\n\t\t// ExportDeclaration:\n\t\t// 'export' '*' 'from' ModuleSpecifier ';'\n\t\t// 'export' '*' 'from' ModuleSpecifier [no LineTerminator here]\n\t\t// AssertClause ';'\n\t\t// 'export' '*' 'as' IdentifierName 'from' ModuleSpecifier ';'\n\t\t// 'export' '*' 'as' IdentifierName 'from' ModuleSpecifier\n\t\t// [no LineTerminator here] AssertClause ';'\n\t\t// 'export' '*' 'as' ModuleExportName 'from' ModuleSpecifier ';'\n\t\t// 'export' '*' 'as' ModuleExportName 'from' ModuleSpecifier ';'\n\t\t// [no LineTerminator here] AssertClause ';'\n\t\t// 'export' ExportClause ('from' ModuleSpecifier)? ';'\n\t\t// 'export' ExportClause ('from' ModuleSpecifier [no LineTerminator here]\n\t\t// AssertClause)? ';'\n\t\t// 'export' VariableStatement\n\t\t// 'export' Declaration\n\t\t// 'export' 'default' ... (handled in ParseExportDefault)\n\t\t//\n\t\t// ModuleExportName :\n\t\t// StringLiteral\n\n\t\tconst start = this.expect(Token.EXPORT);\n\t\tlet result: ExpressionNode | undefined;\n\t\tconst names: string[] = [];\n\n\t\t// Statement * result = nullptr;\n\t\t// ZonePtrList <const AstRawString> names(1, zone());\n\t\t// Scanner::Location loc = scanner() -> peek_location();\n\t\tswitch (this.peek().token) {\n\t\t\tcase Token.DEFAULT:\n\t\t\t\treturn this.parseExportDefault(start);\n\n\t\t\tcase Token.MUL:\n\t\t\t\treturn this.parseExportStar(start);\n\n\t\t\tcase Token.LBRACE: {\n\t\t\t\t// There are two cases here:\n\t\t\t\t//\n\t\t\t\t// 'export' ExportClause ';'\n\t\t\t\t// and\n\t\t\t\t// 'export' ExportClause FromClause ';'\n\t\t\t\t//\n\t\t\t\t// In the first case, the exported identifiers in ExportClause must\n\t\t\t\t// not be reserved words, while in the latter they may be. We\n\t\t\t\t// pass in a location that gets filled with the first reserved word\n\t\t\t\t// encountered, and then throw a SyntaxError if we are in the\n\t\t\t\t// non-FromClause case.\n\n\t\t\t\t// Scanner::Location reserved_loc = Scanner:: Location:: invalid();\n\t\t\t\t// Scanner::Location string_literal_local_name_loc =\n\t\t\t\t// Scanner:: Location:: invalid();\n\t\t\t\t// ZoneChunkList < ExportClauseData >* export_data =\n\t\t\t\t// ParseExportClause(& reserved_loc, & string_literal_local_name_loc);\n\n\t\t\t\tconst exportData = this.parseExportClause();\n\t\t\t\tlet moduleSpecifier: Literal<string> | undefined;\n\t\t\t\tlet importAssertions: ImportAttribute[] | undefined;\n\n\t\t\t\tif (this.checkContextualKeyword('from')) {\n\t\t\t\t\t// Scanner::Location specifier_loc = scanner() -> peek_location();\n\t\t\t\t\tmoduleSpecifier = this.parseModuleSpecifier();\n\t\t\t\t\timportAssertions = this.parseImportAssertClause();\n\t\t\t\t\tthis.expectSemicolon();\n\n\t\t\t\t\t// if (exportData.isEmpty()) {\n\t\t\t\t\t// \t// module() -> AddEmptyImport(module_specifier, import_assertions, specifier_loc, zone());\n\t\t\t\t\t// } else {\n\t\t\t\t\t// \t// for (const ExportClauseData& data : * export_data) {\n\t\t\t\t\t// \t// \tmodule() -> AddExport(data.local_name, data.export_name,\n\t\t\t\t\t// \t// \t\tmodule_specifier, import_assertions,\n\t\t\t\t\t// \t// \t\tdata.location, specifier_loc, zone());\n\t\t\t\t\t// \t// }\n\t\t\t\t\t// }\n\t\t\t\t} else {\n\t\t\t\t\t// if (reserved_loc.IsValid()) {\n\t\t\t\t\t// \t// No FromClause, so reserved words are invalid in ExportClause.\n\t\t\t\t\t// \tReportMessageAt(reserved_loc, MessageTemplate:: kUnexpectedReserved);\n\t\t\t\t\t// \treturn nullptr;\n\t\t\t\t\t// } else if (string_literal_local_name_loc.IsValid()) {\n\t\t\t\t\t// \tReportMessageAt(string_literal_local_name_loc,\n\t\t\t\t\t// \t\tMessageTemplate:: kModuleExportNameWithoutFromClause);\n\t\t\t\t\t// \treturn nullptr;\n\t\t\t\t\t// }\n\n\t\t\t\t\tthis.expectSemicolon();\n\n\t\t\t\t\t// for (const ExportClauseData& data : * export_data) {\n\t\t\t\t\t// \tmodule() -> AddExport(data.local_name, data.export_name, data.location,\n\t\t\t\t\t// \t\tzone());\n\t\t\t\t\t// }\n\t\t\t\t}\n\t\t\t\treturn this.factory.createNamespaceExportDeclaration(exportData, undefined, moduleSpecifier, importAssertions, this.createRange(start));\n\t\t\t\t// return factory() -> EmptyStatement();\n\t\t\t}\n\n\t\t\tcase Token.FUNCTION: {\n\t\t\t\tconst declaration = this.parseFunctionDeclaration();\n\t\t\t\tconst identifier = declaration.getId()!;\n\t\t\t\tconst specifier = this.factory.createExportSpecifier(identifier, identifier, identifier.range);\n\t\t\t\tresult = this.factory.createNamespaceExportDeclaration([specifier], declaration, undefined, undefined, this.createRange(start));\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase Token.CLASS: {\n\t\t\t\tconst classToken = this.consume(Token.CLASS);\n\t\t\t\tconst declaration = this.parseClassDeclaration(names, false, classToken);\n\t\t\t\tconst identifier = declaration.getId()!;\n\t\t\t\tconst specifier = this.factory.createExportSpecifier(identifier, identifier, identifier.range);\n\t\t\t\tresult = this.factory.createNamespaceExportDeclaration([specifier], declaration, undefined, undefined, this.createRange(start));\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase Token.VAR:\n\t\t\tcase Token.LET:\n\t\t\tcase Token.CONST:\n\t\t\t\tconst declaration = this.parseVariableStatement(VariableDeclarationContext.StatementListItem, names);\n\t\t\t\tconst specifiers = declaration.getDeclarations()\n\t\t\t\t\t.map(node => this.factory.createExportSpecifier(node.getId() as Identifier, node.getId() as Identifier, node.getId().range));\n\t\t\t\tresult = this.factory.createNamespaceExportDeclaration(specifiers, declaration, undefined, undefined, this.createRange(start));\n\t\t\t\tbreak;\n\n\t\t\tcase Token.ASYNC:\n\t\t\t\tconst asyncToken = this.consume(Token.ASYNC);\n\t\t\t\tif (this.peek().isType(Token.FUNCTION) && !this.scanner.hasLineTerminatorBeforeNext()) {\n\t\t\t\t\tconst declaration = this.parseAsyncFunctionDeclaration(names, false, asyncToken);\n\t\t\t\t\tconst identifier = declaration.getId()!;\n\t\t\t\t\tconst specifier = this.factory.createExportSpecifier(identifier, identifier, identifier.range);\n\t\t\t\t\tresult = this.factory.createNamespaceExportDeclaration([specifier], declaration, undefined, undefined, this.createRange(start));\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\tdefault:\n\t\t\t\tthrow new SyntaxError(this.errorMessage('Unexpected Token'));\n\t\t}\n\t\t// loc.end_pos = scanner() -> location().end_pos;\n\n\t\t// SourceTextModuleDescriptor * descriptor = module();\n\t\t// for (const AstRawString* name : names) {\n\t\t// \tdescriptor -> AddExport(name, name, loc, zone());\n\t\t// }\n\n\t\treturn result;\n\t}\n\tprotected parseImportDeclaration(): ExpressionNode | undefined {\n\t\t// ImportDeclaration :\n\t\t// 'import' ImportClause 'from' ModuleSpecifier ';'\n\t\t// 'import' ModuleSpecifier ';'\n\t\t// 'import' ImportClause 'from' ModuleSpecifier [no LineTerminator here]\n\t\t// AssertClause ';'\n\t\t// 'import' ModuleSpecifier [no LineTerminator here] AssertClause';'\n\t\t//\n\t\t// ImportClause :\n\t\t// ImportedDefaultBinding\n\t\t// NameSpaceImport\n\t\t// NamedImports\n\t\t// ImportedDefaultBinding ',' NameSpaceImport\n\t\t// ImportedDefaultBinding ',' NamedImports\n\t\t//\n\t\t// NameSpaceImport :\n\t\t// '*' 'as' ImportedBinding\n\n\t\tconst start = this.expect(Token.IMPORT);\n\n\t\tconst tok = this.peek();\n\n\t\t// 'import' ModuleSpecifier ';'\n\t\tif (tok.isType(Token.STRING)) {\n\t\t\t// Scanner::Location specifier_loc = scanner() -> peek_location();\n\t\t\tconst moduleSpecifier = this.parseModuleSpecifier();\n\t\t\tconst importAssertions = this.parseImportAssertClause();\n\t\t\tthis.expectSemicolon();\n\n\t\t\t// module() -> AddEmptyImport(module_specifier, import_assertions, specifier_loc,zone());\n\t\t\treturn this.factory.createImportDeclaration(moduleSpecifier, undefined, importAssertions, this.createRange(start));\n\t\t}\n\n\t\t// Parse ImportedDefaultBinding if present.\n\t\tlet importDefaultBinding: Identifier | undefined;\n\t\t// Scanner::Location import_default_binding_loc;\n\t\tif (tok.isNotType(Token.MUL) && tok.isNotType(Token.LBRACE)) {\n\t\t\timportDefaultBinding = this.parseNonRestrictedIdentifier();\n\t\t\t// DeclareUnboundVariable(import_default_binding, VariableMode:: kConst,kNeedsInitialization, pos);\n\t\t}\n\n\t\t// Parse NameSpaceImport or NamedImports if present.\n\t\tlet moduleNamespaceBinding: Identifier | undefined;\n\t\tlet namedImports: ModuleSpecifier[] | undefined;\n\t\t// Scanner::Location module_namespace_binding_loc;\n\t\t// const ZonePtrList<const NamedImport >* named_imports = nullptr;\n\t\tif (importDefaultBinding == undefined || this.check(Token.COMMA)) {\n\t\t\tswitch (this.peek().token) {\n\t\t\t\tcase Token.MUL: {\n\t\t\t\t\tthis.consume(Token.MUL);\n\t\t\t\t\tthis.expectContextualKeyword('as');\n\t\t\t\t\tmoduleNamespaceBinding = this.parseNonRestrictedIdentifier();\n\t\t\t\t\t// ExpectContextualKeyword(ast_value_factory() -> as_string());\n\t\t\t\t\t// module_namespace_binding = ParseNonRestrictedIdentifier();\n\t\t\t\t\t// module_namespace_binding_loc = scanner() -> location();\n\t\t\t\t\t// DeclareUnboundVariable(module_namespace_binding, VariableMode:: kConst, kCreatedInitialized, pos);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase Token.LBRACE:\n\t\t\t\t\tnamedImports = this.parseNamedImports();\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new SyntaxError(this.errorMessage('Unexpected Token'));\n\t\t\t}\n\t\t}\n\t\tthis.expectContextualKeyword('from');\n\t\t// ExpectContextualKeyword(ast_value_factory() -> from_string());\n\t\t// Scanner::Location specifier_loc = scanner() -> peek_location();\n\t\tconst moduleSpecifier = this.parseModuleSpecifier();\n\t\tconst importAssertions = this.parseImportAssertClause();\n\t\tthis.expectSemicolon();\n\n\t\t// Now that we have all the information, we can make the appropriate\n\t\t// declarations.\n\n\t\t// TODO(neis): Would prefer to call DeclareVariable for each case below rather\n\t\t// than above and in ParseNamedImports, but then a possible error message\n\t\t// would point to the wrong location. Maybe have a DeclareAt version of\n\t\t// Declare that takes a location?\n\n\t\tconst specifiers: ModuleSpecifier[] = [];\n\t\tif (moduleNamespaceBinding) {\n\t\t\tspecifiers.push(this.factory.createImportNamespaceSpecifier(moduleNamespaceBinding, moduleNamespaceBinding.range));\n\t\t}\n\t\tif (importDefaultBinding) {\n\t\t\tspecifiers.push(this.factory.createImportDefaultSpecifier(importDefaultBinding, importDefaultBinding.range));\n\t\t}\n\t\tif (namedImports?.length) {\n\t\t\tspecifiers.push(...namedImports);\n\t\t}\n\t\treturn this.factory.createImportDeclaration(moduleSpecifier, specifiers.length ? specifiers : undefined, importAssertions, this.createRange(start));\n\t}\n\tprotected parseImportExpressions(): ExpressionNode {\n\t\tconst start = this.consume(Token.IMPORT);\n\t\tif (this.check(Token.PERIOD)) {\n\t\t\tconst peek = this.peek();\n\t\t\tthis.expectContextualKeyword('meta');\n\t\t\treturn this.factory.createMetaProperty(\n\t\t\t\tthis.factory.createIdentifier('import', start.range),\n\t\t\t\tthis.factory.createIdentifier('meta', peek.range),\n\t\t\t\tthis.createRange(start)\n\t\t\t);\n\t\t}\n\n\t\tif (this.peek().isNotType(Token.LPAREN)) {\n\t\t\tthrow new SyntaxError(this.errorMessage('Unexpected Token'));\n\t\t}\n\n\t\tthis.consume(Token.LPAREN);\n\t\tif (this.peek().isType(Token.RPAREN)) {\n\t\t\tthrow new SyntaxError(this.errorMessage('Import Missing Specifier'));\n\t\t}\n\t\tthis.setAcceptIN(true);\n\t\tconst specifier = this.parseAssignmentExpressionCoverGrammar();\n\n\t\tif (this.check(Token.COMMA)) {\n\t\t\tif (this.check(Token.RPAREN)) {\n\t\t\t\t// A trailing comma allowed after the specifier.\n\t\t\t\treturn this.factory.createImportExpression(specifier as Literal<string>, undefined, this.createRange(start));\n\t\t\t} else {\n\t\t\t\tconst importAssertions = this.parseAssignmentExpressionCoverGrammar();\n\t\t\t\tthis.check(Token.COMMA); // A trailing comma is allowed after the import\n\t\t\t\t// assertions.\n\t\t\t\tthis.expect(Token.RPAREN);\n\t\t\t\treturn this.factory.createImportExpression(specifier as Literal<string>, importAssertions, this.createRange(start));\n\t\t\t}\n\t\t}\n\n\t\tthis.expect(Token.RPAREN);\n\t\tthis.restoreAcceptIN();\n\t\treturn this.factory.createImportExpression(specifier as Literal<string>, undefined, this.createRange(start));\n\t}\n\tprotected parseVariableStatement(varContext: VariableDeclarationContext, names: string[]) {\n\t\t// VariableStatement ::\n\t\t// VariableDeclarations ';'\n\n\t\t// The scope of a var declared variable anywhere inside a function\n\t\t// is the entire function (ECMA-262, 3rd, 10.1.3, and 12.2). Thus we can\n\t\t// transform a source-level var declaration into a (Function) Scope\n\t\t// declaration, and rewrite the source-level initialization into an assignment\n\t\t// statement. We use a block to collect multiple assignments.\n\t\t//\n\t\t// We mark the block as initializer block because we don't want the\n\t\t// rewriter to add a '.result' assignment to such a block (to get compliant\n\t\t// behavior for code such as print(eval('var x = 7')), and for cosmetic\n\t\t// reasons when pretty-printing. Also, unless an assignment (initialization)\n\t\t// is inside an initializer block, it is ignored.\n\t\tconst declarations = this.parseVariableDeclarations(varContext);\n\t\tthis.expectSemicolon();\n\t\tnames.push(...declarations.getDeclarations().map(d => d.getId().toString()));\n\t\treturn declarations;\n\t}\n\tprotected parseImportAssertClause(): ImportAttribute[] | undefined {\n\t\t// AssertClause :\n\t\t// assert '{' '}'\n\t\t// assert '{' AssertEntries '}'\n\n\t\t// AssertEntries :\n\t\t// IdentifierName: AssertionKey\n\t\t// IdentifierName: AssertionKey , AssertEntries\n\n\t\t// AssertionKey :\n\t\t// IdentifierName\n\t\t// StringLiteral\n\n\t\t// auto import_assertions = zone() -> New<ImportAssertions>(zone());\n\n\t\t// if (!FLAG_harmony_import_assertions) {\n\t\t// \treturn import_assertions;\n\t\t// }\n\n\t\t// Assert clause is optional, and cannot be preceded by a LineTerminator.\n\t\tif (this.scanner.hasLineTerminatorBeforeNext() || !this.checkContextualKeyword('assert')) {\n\t\t\treturn undefined;\n\t\t}\n\t\tthis.expect(Token.LBRACE);\n\t\tconst counts = {} as { [key: string]: number };\n\t\tconst importAssertions: ImportAttribute[] = [];\n\t\twhile (this.peek().isNotType(Token.RBRACE)) {\n\t\t\tlet attributeKey = this.checkAndGetValue(Token.STRING);\n\t\t\tif (!attributeKey) {\n\t\t\t\tattributeKey = this.parsePropertyOrPrivatePropertyName();\n\t\t\t}\n\t\t\tthis.expect(Token.COLON);\n\t\t\tconst attributeValue = this.expectAndGetValue(Token.STRING);\n\t\t\timportAssertions.push(this.factory.createAssertEntry(attributeKey as Identifier, attributeValue as Literal<string>, this.createRange(attributeKey)));\n\t\t\tcounts[attributeKey.toString()] = (counts[attributeKey.toString()] ?? 0) + 1;\n\t\t\tif (counts[attributeKey.toString()] > 1) {\n\t\t\t\t// \t// It is a syntax error if two AssertEntries have the same key.\n\t\t\t\tthrow new SyntaxError(this.errorMessage('Import Assertion Duplicate Key'));\n\t\t\t}\n\n\t\t\tif (this.peek().isType(Token.RBRACE)) break;\n\t\t\tif (!this.check(Token.COMMA)) {\n\t\t\t\tthrow new SyntaxError('Unexpected Token');\n\t\t\t}\n\t\t}\n\t\tthis.expect(Token.RBRACE);\n\t\treturn importAssertions;\n\t}\n\tprotected parseModuleSpecifier(): Literal<string> {\n\t\t// ModuleSpecifier :\n\t\t// StringLiteral\n\n\t\treturn this.expectAndGetValue(Token.STRING) as Literal<string>;\n\t}\n\tprotected parseExportClause() {\n\t\t// ExportClause :\n\t\t// '{' '}'\n\t\t// '{' ExportsList '}'\n\t\t// '{' ExportsList ',' '}'\n\t\t//\n\t\t// ExportsList :\n\t\t// ExportSpecifier\n\t\t// ExportsList ',' ExportSpecifier\n\t\t//\n\t\t// ExportSpecifier :\n\t\t// IdentifierName\n\t\t// IdentifierName 'as' IdentifierName\n\t\t// IdentifierName 'as' ModuleExportName\n\t\t// ModuleExportName\n\t\t// ModuleExportName 'as' ModuleExportName\n\t\t//\n\t\t// ModuleExportName :\n\t\t// StringLiteral\n\t\t// ZoneChunkList < ExportClauseData >* export_data = zone() -> New<ZoneChunkList<ExportClauseData>>(zone());\n\n\t\tthis.expect(Token.LBRACE);\n\n\t\tconst exportData: ExportSpecifier[] = [];\n\t\tlet nameTok = this.peek();\n\t\twhile (nameTok.isNotType(Token.RBRACE)) {\n\t\t\tconst localName = this.parseExportSpecifierName();\n\t\t\tlet exportName;\n\t\t\tif (this.checkContextualKeyword('as')) {\n\t\t\t\texportName = this.parseExportSpecifierName();\n\t\t\t} else {\n\t\t\t\texportName = localName;\n\t\t\t}\n\t\t\texportData.push(this.factory.createExportSpecifier(exportName as Identifier, localName as Identifier));\n\t\t\tif (this.peek().isType(Token.RBRACE)) break;\n\t\t\tif (!this.check(Token.COMMA)) {\n\t\t\t\tthrow new SyntaxError('Unexpected Token');\n\t\t\t}\n\t\t}\n\t\tthis.expect(Token.RBRACE);\n\t\treturn exportData;\n\t}\n\tprotected parseExportSpecifierName() {\n\t\tconst next = this.next();\n\n\t\t// IdentifierName\n\t\tif (next.isType(Token.IDENTIFIER) || Token.isPropertyName(next.token)) {\n\t\t\treturn next.getValue() as Identifier;\n\t\t}\n\n\t\t// ModuleExportName\n\t\tif (next.isType(Token.STRING)) {\n\t\t\tconst exportName = next.getValue() as Literal<string>;\n\t\t\treturn exportName;\n\t\t}\n\t\tthrow new SyntaxError(this.errorMessage('Unexpected Token'));\n\t}\n\tprotected parseNamedImports(): ImportSpecifier[] {\n\t\t// NamedImports :\n\t\t// '{' '}'\n\t\t// '{' ImportsList '}'\n\t\t// '{' ImportsList ',' '}'\n\t\t//\n\t\t// ImportsList :\n\t\t// ImportSpecifier\n\t\t// ImportsList ',' ImportSpecifier\n\t\t//\n\t\t// ImportSpecifier :\n\t\t// BindingIdentifier\n\t\t// IdentifierName 'as' BindingIdentifier\n\t\t// ModuleExportName 'as' BindingIdentifier\n\n\t\tthis.expect(Token.LBRACE);\n\t\tconst result: ImportSpecifier[] = [];\n\n\t\t// auto result = zone() -> New < ZonePtrList <const NamedImport>> (1, zone());\n\t\twhile (this.peek().isNotType(Token.RBRACE)) {\n\t\t\tconst importName = this.parseExportSpecifierName() as Identifier;\n\t\t\tlet localName = importName;\n\t\t\t// In the presence of 'as', the left-side of the 'as' can\n\t\t\t// be any IdentifierName. But without 'as', it must be a valid\n\t\t\t// BindingIdentifier.\n\t\t\tif (this.checkContextualKeyword('as')) {\n\t\t\t\tlocalName = this.parsePropertyOrPrivatePropertyName() as Identifier;\n\t\t\t}\n\t\t\tif (!Token.isValidIdentifier(this.current().token, LanguageMode.Strict, false, isStrict(this.languageMode))) {\n\t\t\t\tthrow new SyntaxError(this.errorMessage('Unexpected Reserved Keyword'));\n\t\t\t} else if (this.isEvalOrArguments(localName)) {\n\t\t\t\tthrow new SyntaxError(this.errorMessage('Strict Eval Arguments'));\n\t\t\t}\n\n\t\t\tresult.push(this.factory.createImportSpecifier(localName, importName, this.createRange(importName)));\n\n\t\t\t// DeclareUnboundVariable(localName, VariableMode:: kConst, kNeedsInitialization, position());\n\n\t\t\t// NamedImport * import = zone() -> New<NamedImport>(import_name, local_name, location);\n\t\t\t// result-> Add(import, zone());\n\n\t\t\tif (this.peek().isType(Token.RBRACE)) break;\n\t\t\tthis.expect(Token.COMMA);\n\t\t}\n\n\t\tthis.expect(Token.RBRACE);\n\t\treturn result;\n\t}\n\n\tprotected parseExportDefault(start: PositionMark): ExportDefaultDeclaration {\n\t\t// Supports the following productions, starting after the 'default' token:\n\t\t// 'export' 'default' HoistableDeclaration\n\t\t// 'export' 'default' ClassDeclaration\n\t\t// 'export' 'default' AssignmentExpression[In] ';'\n\n\t\tthis.expect(Token.DEFAULT);\n\t\t// Scanner::Location default_loc = scanner() -> location();\n\n\t\t// ZonePtrList <const AstRawString> localNames(1, zone());\n\t\tconst localNames: string[] = [];\n\t\tlet result: ExpressionNode;\n\t\tswitch (this.peek().token) {\n\t\t\tcase Token.FUNCTION:\n\t\t\t\tresult = this.parseHoistableDeclaration(localNames, true, this.peek());\n\t\t\t\tbreak;\n\n\t\t\tcase Token.CLASS:\n\t\t\t\tconst classToken = this.consume(Token.CLASS);\n\t\t\t\tresult = this.parseClassDeclaration(localNames, true, classToken);\n\t\t\t\tbreak;\n\n\t\t\tcase Token.ASYNC:\n\t\t\t\tif (this.peekAhead().isType(Token.FUNCTION) && !this.scanner.hasLineTerminatorBeforeNext()) {\n\t\t\t\t\tconst asyncStart = this.consume(Token.ASYNC);\n\t\t\t\t\tresult = this.parseHoistableDeclaration(localNames, true, asyncStart);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\tdefault: {\n\t\t\t\t// int pos = position();\n\t\t\t\t// AcceptINScope scope(this, true);\n\t\t\t\tthis.setAcceptIN(true);\n\t\t\t\tresult = this.parseAssignmentExpression();\n\t\t\t\t// SetFunctionName(value, ast_value_factory() -> default_string());\n\n\t\t\t\t// const AstRawString* local_name = ast_value_factory() -> dot_default_string();\n\t\t\t\t// localNames.Add(local_name, zone());\n\n\t\t\t\t// It's fine to declare this as VariableMode::kConst because the user has\n\t\t\t\t// no way of writing to it.\n\t\t\t\t// VariableProxy * proxy = DeclareBoundVariable(local_name, VariableMode:: kConst, pos);\n\t\t\t\t// proxy ->var() -> set_initializer_position(position());\n\n\t\t\t\t// Assignment * assignment = factory() -> NewAssignment(Token.INIT, proxy, value, kNoSourcePosition);\n\t\t\t\t// result = IgnoreCompletion( factory() -> NewExpressionStatement(assignment, kNoSourcePosition));\n\n\t\t\t\tthis.expectSemicolon();\n\t\t\t\tthis.restoreAcceptIN();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// if (!result) {\n\t\t// \tDCHECK_EQ(localNames.length(), 1);\n\t\t// \tmodule() -> AddExport(localNames.first(), ast_value_factory() -> default_string(), default_loc, zone());\n\t\t// }\n\n\t\treturn this.factory.createExportDefault(result, this.createRange(start));\n\t}\n\tprotected parseExportStar(start: PositionMark): ExpressionNode | undefined {\n\t\tthis.consume(Token.MUL);\n\n\t\tif (!this.peekContextualKeyword('as')) {\n\t\t\t// 'export' '*' 'from' ModuleSpecifier ';'\n\t\t\t// Scanner::Location loc = scanner() -> location();\n\t\t\tthis.expectContextualKeyword('from');\n\t\t\t// Scanner::Location specifier_loc = scanner() -> peek_location();\n\t\t\tconst moduleSpecifier = this.parseModuleSpecifier();\n\t\t\tconst importAssertions = this.parseImportAssertClause();\n\t\t\tthis.expectSemicolon();\n\t\t\t// module() -> AddStarExport(module_specifier, import_assertions, loc,specifier_loc, zone());\n\t\t\treturn this.factory.createExportAllDeclaration(moduleSpecifier, undefined, importAssertions, this.createRange(start));\n\t\t}\n\n\t\t// 'export' '*' 'as' IdentifierName 'from' ModuleSpecifier ';'\n\t\t//\n\t\t// Desugaring:\n\t\t// export * as x from \"...\";\n\t\t// ~>\n\t\t// import * as .x from \"...\"; export {.x as x};\n\t\t//\n\t\t// Note that the desugared internal namespace export name (.x above) will\n\t\t// never conflict with a string literal export name, as literal string export\n\t\t// names in local name positions (i.e. left of 'as' or in a clause without\n\t\t// 'as') are disallowed without a following 'from' clause.\n\n\t\tthis.expectContextualKeyword('as');\n\t\tconst exportName = this.parseExportSpecifierName();\n\t\t// Scanner::Location export_name_loc = scanner() -> location();\n\t\t// const localName = this.nextInternalNamespaceExportName();\n\t\t// Scanner::Location local_name_loc = Scanner:: Location:: invalid();\n\t\t// DeclareUnboundVariable(local_name, VariableMode:: kConst, kCreatedInitialized,pos);\n\n\t\tthis.expectContextualKeyword('from');\n\t\tconst moduleSpecifier = this.parseModuleSpecifier();\n\t\tconst importAssertions = this.parseImportAssertClause();\n\t\tthis.expectSemicolon();\n\n\t\t// const specifiers = [new ExportSpecifier(exportName as Identifier, exportName as Identifier)];\n\n\t\t// module() -> AddStarImport(local_name, module_specifier, import_assertions,local_name_loc, specifier_loc, zone());\n\t\t// module() -> AddExport(local_name, export_name, export_name_loc, zone());\n\t\treturn this.factory.createExportAllDeclaration(moduleSpecifier, exportName as Identifier, importAssertions, this.createRange(start));\n\t}\n\n\tprotected parseWithStatement(): WithStatement {\n\t\t// WithStatement ::\n\t\t// 'with' '(' Expression ')' Statement\n\n\t\tconst start = this.consume(Token.WITH);\n\t\tif (isStrict(this.languageMode)) {\n\t\t\tthrow new SyntaxError(this.errorMessage('With is not allowed in Strict mode.'));\n\t\t}\n\t\tthis.expect(Token.LPAREN);\n\t\tconst object = this.parseExpression();\n\t\tthis.expect(Token.RPAREN);\n\t\tconst body = this.parseStatement();\n\t\tconst range = this.createRange(start);\n\t\treturn this.factory.createWithStatement(object, body, range);\n\t}\n}\n"]}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/expressions/v8/parser.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ExpressionNode } from '../api/expression.js';\nimport type { NodeFactory } from './node.js';\nimport {\n\tAccessorProperty,\n\tClass,\n\tClassBody,\n\tClassDeclaration,\n\tClassExpression,\n\tMethodDefinition,\n\tPropertyDefinition,\n\tStaticBlock\n} from '../api/class/class.js';\nimport { FunctionExpression } from '../api/definition/function.js';\nimport { Identifier, Literal } from '../api/definition/values.js';\nimport { ImportAttribute, ModuleSpecifier } from '../api/module/common.js';\nimport { ExportDefaultDeclaration, ExportSpecifier } from '../api/module/export.js';\nimport { ImportSpecifier } from '../api/module/import.js';\nimport { Program } from '../api/program.js';\nimport {\n\tClassInfo,\n\tClassLiteralProperty,\n\tClassLiteralPropertyKind,\n\tclassPropertyKindFor,\n\tcreateClassInfo,\n\tFunctionKind,\n\tFunctionSyntaxKind,\n\tisAccessor,\n\tParseFunctionFlag,\n\tPropertyKind,\n\tPropertyKindInfo,\n\tPropertyPosition,\n\tVariableDeclarationContext\n} from './enums.js';\nimport { InlineParserOptions, JavaScriptInlineParser, PositionMark } from './inline.js';\nimport { TokenStream } from './stream.js';\nimport { Token, TokenExpression } from './token.js';\n\nimport { WithStatement } from '../api/statement/control/with.js';\nimport { ExpressionNodeFactory, ExpressionNodeSourcePosition } from './factory.js';\nimport { isStrict, LanguageMode } from './language.js';\n\nexport type ParserOptions = { mode?: LanguageMode, factory?: NodeFactory, addLocation?: boolean };\n\nexport class JavaScriptParser extends JavaScriptInlineParser {\n\t/**\n\t * parser js with\n\t * @param source \n\t * @returns \n\t */\n\tstatic parse(source: string | TokenExpression[] | TokenStream, { mode, factory, addLocation }: ParserOptions = {}): Program {\n\t\tmode ??= LanguageMode.Strict;\n\t\tconst stream = (typeof source === 'string') || Array.isArray(source)\n\t\t\t? TokenStream.getTokenStream(source, mode) : source;\n\t\tif (factory == undefined) {\n\t\t\tconst sourcePositionFactory = addLocation && typeof source === 'string' ? new ExpressionNodeSourcePosition(source) : undefined;\n\t\t\tfactory = new ExpressionNodeFactory(sourcePositionFactory);\n\t\t}\n\t\tconst parser = new JavaScriptParser(stream, factory, false);\n\t\treturn parser.scan();\n\t}\n\n\t/**\n\t * parse inline code like that used in html 2 or 1 way binding\n\t */\n\tstatic parseScript<T extends ExpressionNode>(source: string | TokenExpression[] | TokenStream, options?: InlineParserOptions): T {\n\t\treturn JavaScriptInlineParser.parse(source, options) as T;\n\t}\n\n\toverride scan(): Program {\n\t\tconst range = this.createStartPosition();\n\t\tconst isModule = isStrict(this.languageMode);\n\t\tif (isModule) {\n\t\t\tthis.setFunctionKind(FunctionKind.Module);\n\t\t}\n\t\tconst body = isModule ? this.parseModuleItemList() : this.parseStatementList(Token.EOS);\n\t\tthis.updateRangeEnd(range);\n\t\treturn this.factory.createProgram(isModule ? 'module' : 'script', body, range);\n\t}\n\tprotected override parseNewTargetExpression(start?: PositionMark): ExpressionNode {\n\t\tthis.consume(Token.PERIOD);\n\t\tconst target: ExpressionNode = this.parsePropertyOrPrivatePropertyName();\n\t\tif (target.toString() !== 'target') {\n\t\t\tthrow new Error(this.errorMessage(`Expression (new.${target.toString()}) not supported.`));\n\t\t}\n\t\treturn this.factory.createMetaProperty(\n\t\t\tthis.factory.createIdentifier('new', start?.range),\n\t\t\tthis.factory.createIdentifier('target', target.range),\n\t\t\tthis.createRange(start)\n\t\t);\n\t}\n\tprotected override parseClassExpression(): ClassExpression {\n\t\tthis.consume(Token.CLASS);\n\t\tlet name: ExpressionNode | undefined;\n\t\tlet isStrictReserved = false;\n\t\tif (this.peekAnyIdentifier()) {\n\t\t\tname = this.parseAndClassifyIdentifier(this.next());\n\t\t\tisStrictReserved = Token.isStrictReservedWord(this.current().token);\n\t\t}\n\t\tconst classLiteral = this.parseClassLiteral(name, isStrictReserved);\n\t\treturn this.factory.createClassExpression(classLiteral.getBody(), classLiteral.getDecorators(), classLiteral.getId()!, classLiteral.getSuperClass());\n\t}\n\tprotected override parseClassDeclaration(names: string[] | undefined, defaultExport: boolean, start: PositionMark): ClassDeclaration {\n\t\t// ClassDeclaration ::\n\t\t// 'class' Identifier ('extends' LeftHandExpression)? '{' ClassBody '}'\n\t\t// 'class' ('extends' LeftHandExpression)? '{' ClassBody '}'\n\t\t//\n\t\t// The anonymous form is allowed iff [default_export] is true.\n\t\t//\n\t\t// 'class' is expected to be consumed by the caller.\n\t\t//\n\t\t// A ClassDeclaration\n\t\t//\n\t\t// class C { ... }\n\t\t//\n\t\t// has the same semantics as:\n\t\t//\n\t\t// let C = class C { ... };\n\t\t//\n\t\t// so rewrite it as such.\n\n\t\tconst nextToken = this.peek().token;\n\t\tconst isStrictReserved = Token.isStrictReservedWord(nextToken);\n\t\tlet name: ExpressionNode | undefined;\n\t\tlet variableName: string | undefined;\n\t\tif (defaultExport && (nextToken == Token.EXTENDS || nextToken == Token.LBRACE)) {\n\t\t\tname = new Literal('default');\n\t\t\tvariableName = '.default';\n\t\t} else {\n\t\t\tconst identifier = this.parseIdentifier();\n\t\t\tvariableName = identifier.getName() as string;\n\t\t\tname = identifier;\n\t\t}\n\t\tconst classLiteral = this.parseClassLiteral(name, isStrictReserved);\n\t\tconst range = this.createRange(start);\n\t\treturn this.factory.createClassDeclaration(\n\t\t\tclassLiteral.getBody(),\n\t\t\tclassLiteral.getDecorators(),\n\t\t\tclassLiteral.getId()!,\n\t\t\tclassLiteral.getSuperClass(),\n\t\t\trange\n\t\t);\n\t}\n\tprotected override parseClassLiteral(name: ExpressionNode | undefined, nameIsStrictReserved: boolean): Class {\n\t\tconst isAnonymous = !!!name;\n\n\t\t// All parts of a ClassDeclaration and ClassExpression are strict code.\n\t\tif (!isAnonymous) {\n\t\t\tif (nameIsStrictReserved) {\n\t\t\t\tthrow new Error(this.errorMessage(`Unexpected Strict Reserved class name`));\n\t\t\t}\n\t\t\tif (this.isEvalOrArguments(name!)) {\n\t\t\t\tthrow new Error(this.errorMessage(`Strict Eval Arguments not allowed for class name`));\n\t\t\t}\n\t\t}\n\n\t\tconst classInfo: ClassInfo = createClassInfo();\n\t\tclassInfo.isAnonymous = isAnonymous;\n\n\t\tif (this.check(Token.EXTENDS)) {\n\t\t\tclassInfo.extends = this.parseLeftHandSideExpression();\n\t\t}\n\n\t\tconst bodyStart = this.expect(Token.LBRACE);\n\n\t\tconst hasExtends = !!classInfo.extends;\n\n\t\twhile (this.peek().isNotType(Token.RBRACE)) {\n\t\t\tif (this.check(Token.SEMICOLON)) continue;\n\n\t\t\t// Either we're parsing a `static { }` initialization block or a property.\n\t\t\tif (this.peek().isType(Token.STATIC) && this.peekAhead().isType(Token.LBRACE)) {\n\t\t\t\tconst staticBlock = this.parseClassStaticBlock(classInfo);\n\t\t\t\tclassInfo.staticElements.push(staticBlock);\n\t\t\t\tclassInfo.hasStaticBlocks = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// FuncNameInferrerState fni_state(& fni_);\n\t\t\t// If we haven't seen the constructor yet, it potentially is the next\n\t\t\t// property.\n\t\t\tlet isConstructor = !classInfo.hasSeenConstructor;\n\t\t\tconst propInfo = new PropertyKindInfo();\n\t\t\tpropInfo.position = PropertyPosition.ClassLiteral;\n\n\t\t\tconst property = this.parseClassPropertyDefinition(classInfo, propInfo, hasExtends);\n\n\t\t\t// if (has_error()) return impl() . FailureExpression();\n\n\t\t\tconst propertyKind = classPropertyKindFor(propInfo.kind);\n\t\t\tif (!classInfo.hasStaticComputedNames && propInfo.isStatic && propInfo.isComputedName) {\n\t\t\t\tclassInfo.hasStaticComputedNames = true;\n\t\t\t}\n\t\t\tisConstructor &&= classInfo.hasSeenConstructor;\n\n\t\t\tconst isField = propertyKind == ClassLiteralPropertyKind.FIELD;\n\n\t\t\tif (propInfo.isPrivate) {\n\t\t\t\tif (isConstructor) {\n\t\t\t\t\tthrow new Error(this.errorMessage('private constructor is not allowed'));\n\t\t\t\t}\n\t\t\t\tclassInfo.requiresBrand ||= (!isField && !propInfo.isStatic);\n\t\t\t\tconst isMethod = propertyKind == ClassLiteralPropertyKind.METHOD;\n\t\t\t\tclassInfo.hasPrivateMethods ||= isMethod;\n\t\t\t\tclassInfo.hasStaticPrivateMethods ||= isMethod && propInfo.isStatic;\n\t\t\t\tthis.declarePrivateClassMember(propInfo.name, property as MethodDefinition | PropertyDefinition, propertyKind, propInfo.isStatic, classInfo);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (isField) {\n\t\t\t\tif (propInfo.isComputedName) {\n\t\t\t\t\tclassInfo.computedFieldCount++;\n\t\t\t\t}\n\t\t\t\tthis.declarePublicClassField(property as PropertyDefinition, propInfo.isStatic, propInfo.isComputedName, classInfo);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tthis.declarePublicClassMethod(name, property as MethodDefinition, isConstructor, classInfo);\n\t\t}\n\n\t\tconst bodyEnd = this.expect(Token.RBRACE);\n\t\tconst classBody = this.rewriteClassLiteral(classInfo, name, [bodyStart.range[0], bodyEnd.range[1]]);\n\t\treturn new Class(classBody, [], name as Identifier, classInfo.extends);\n\t}\n\tprotected declarePublicClassMethod(name: ExpressionNode | undefined, property: MethodDefinition, isConstructor: boolean, classInfo: ClassInfo): void {\n\t\t// throw new Error('Method not implemented.');\n\t\tif (isConstructor) {\n\t\t\tif (classInfo.constructor) {\n\t\t\t\tthrow new SyntaxError(this.errorMessage('A class may only have one constructor.'));\n\t\t\t}\n\t\t\tclassInfo.constructor = property;\n\t\t\t// set the class name as the constructor name\n\t\t\tReflect.set(classInfo.constructor, 'id', name);\n\t\t\treturn;\n\t\t}\n\t\tclassInfo.publicMembers.push(property);\n\t}\n\tprotected declarePublicClassField(property: PropertyDefinition, isStatic: boolean, isComputedName: boolean, classInfo: ClassInfo) {\n\t\tif (isStatic) {\n\t\t\tclassInfo.staticElements.push(property);\n\t\t} else {\n\t\t\tclassInfo.instanceFields.push(property);\n\t\t}\n\n\t\t// if (isComputedName) {\n\t\t// \tclassInfo.publicMembers.push(property);\n\t\t// }\n\n\t}\n\tprotected declarePrivateClassMember(propertyName: string, property: MethodDefinition | PropertyDefinition, kind: ClassLiteralPropertyKind, isStatic: boolean, classInfo: ClassInfo) {\n\t\tclassInfo.privateMembers.push(property);\n\t}\n\t// protected createPrivateNameVariable(mode: VariableMode, staticFlag: StaticFlag, propertyName: string) {\n\t// \tthrow new Error('Method not implemented.');\n\t// }\n\tprotected parseClassPropertyDefinition(classInfo: ClassInfo, propInfo: PropertyKindInfo, hasExtends: boolean) {\n\t\tif (!classInfo) {\n\t\t\tthrow new Error(this.errorMessage('class info is undefined'));\n\t\t}\n\t\tif (propInfo.position !== PropertyPosition.ClassLiteral) {\n\t\t\tthrow new Error(this.errorMessage('expected property position ClassLiteral'));\n\t\t}\n\n\t\tconst nameToken = this.peek();\n\t\tlet nameExpression: ExpressionNode;\n\t\tif (nameToken.isType(Token.STATIC)) {\n\t\t\tthis.consume(Token.STATIC);\n\t\t\tif (this.peek().isType(Token.LPAREN)) {\n\t\t\t\tpropInfo.kind = PropertyKind.Method;\n\t\t\t\tnameExpression = this.parseIdentifier();\n\t\t\t\tpropInfo.name = (nameExpression as Identifier).getName() as string;\n\t\t\t} else if (this.peek().isType(Token.ASSIGN)\n\t\t\t\t|| this.peek().isType(Token.SEMICOLON)\n\t\t\t\t|| this.peek().isType(Token.RBRACK)) {\n\t\t\t\tnameExpression = this.parseIdentifier();\n\t\t\t\tpropInfo.name = (nameExpression as Identifier).getName() as string;\n\t\t\t} else {\n\t\t\t\tpropInfo.isStatic = true;\n\t\t\t\tnameExpression = this.parseProperty(propInfo);\n\t\t\t}\n\t\t} else {\n\t\t\tnameExpression = this.parseProperty(propInfo);\n\t\t}\n\n\t\tswitch (propInfo.kind) {\n\t\t\tcase PropertyKind.Assign:\n\t\t\tcase PropertyKind.ClassField:\n\t\t\tcase PropertyKind.ShorthandOrClassField:\n\t\t\tcase PropertyKind.NotSet: {\n\t\t\t\t// This case is a name followed by a\n\t\t\t\t// name or other property. Here we have\n\t\t\t\t// to assume that's an uninitialized\n\t\t\t\t// field followed by a line break\n\t\t\t\t// followed by a property, with ASI\n\t\t\t\t// adding the semicolon. If not, there\n\t\t\t\t// will be a syntax error after parsing\n\t\t\t\t// the first name as an uninitialized\n\t\t\t\t// field.\n\t\t\t\tpropInfo.kind = PropertyKind.ClassField;\n\n\t\t\t\t// if (!propInfo.isComputedName) {\n\t\t\t\t// \tthis.checkClassFieldName(propInfo.name, propInfo.isStatic);\n\t\t\t\t// }\n\n\t\t\t\tconst initializer = this.parseMemberInitializer(classInfo, propInfo.isStatic);\n\t\t\t\tthis.expectSemicolon();\n\n\t\t\t\tconst result: ExpressionNode = this.newClassLiteralProperty(\n\t\t\t\t\tnameExpression,\n\t\t\t\t\tinitializer,\n\t\t\t\t\tClassLiteralPropertyKind.FIELD,\n\t\t\t\t\tpropInfo.isStatic,\n\t\t\t\t\tpropInfo.isComputedName,\n\t\t\t\t\tpropInfo.isPrivate,\n\t\t\t\t\tpropInfo.rangeStart\n\t\t\t\t);\n\t\t\t\tthis.setFunctionNameFromPropertyName(result, propInfo.name);\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\tcase PropertyKind.Method: {\n\t\t\t\t// MethodDefinition\n\t\t\t\t// PropertyName '(' StrictFormalParameters ')' '{' FunctionBody '}'\n\t\t\t\t// '*' PropertyName '(' StrictFormalParameters ')' '{' FunctionBody '}'\n\t\t\t\t// async PropertyName '(' StrictFormalParameters ')'\n\t\t\t\t// '{' FunctionBody '}'\n\t\t\t\t// async '*' PropertyName '(' StrictFormalParameters ')'\n\t\t\t\t// '{' FunctionBody '}'\n\n\t\t\t\tif (!propInfo.isComputedName) {\n\t\t\t\t\tthis.checkClassMethodName(propInfo, classInfo);\n\t\t\t\t}\n\n\t\t\t\tlet kind: FunctionKind = this.methodKindFor(propInfo.isStatic, propInfo.funcFlag);\n\n\t\t\t\tif (!propInfo.isStatic && propInfo.name.toString() === 'constructor') {\n\t\t\t\t\tclassInfo.hasSeenConstructor = true;\n\t\t\t\t\tkind = hasExtends ? FunctionKind.DerivedConstructor : FunctionKind.BaseConstructor;\n\t\t\t\t}\n\n\t\t\t\tconst value = this.parseFunctionLiteral(kind, FunctionSyntaxKind.AccessorOrMethod, nameExpression as Identifier, propInfo.rangeStart);\n\n\t\t\t\tconst result = this.newClassLiteralProperty(\n\t\t\t\t\tnameExpression, value, ClassLiteralProperty.Kind.METHOD,\n\t\t\t\t\tpropInfo.isStatic, propInfo.isComputedName,\n\t\t\t\t\tpropInfo.isPrivate,\n\t\t\t\t\tpropInfo.rangeStart\n\t\t\t\t);\n\t\t\t\tthis.setFunctionNameFromPropertyName(result, propInfo.name);\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\tcase PropertyKind.AccessorGetter:\n\t\t\tcase PropertyKind.AccessorSetter: {\n\t\t\t\tif (propInfo.funcFlag !== ParseFunctionFlag.IsNormal) {\n\t\t\t\t\tthrow new Error(this.errorMessage('accessor is not normal function'));\n\t\t\t\t}\n\t\t\t\tconst isGet = propInfo.kind == PropertyKind.AccessorGetter;\n\n\t\t\t\tif (!propInfo.isComputedName) {\n\t\t\t\t\tthis.checkClassMethodName(propInfo, classInfo);\n\t\t\t\t\t// Make sure the name expression is a string since we need a Name for\n\t\t\t\t\t// Runtime_DefineAccessorPropertyUnchecked and since we can determine\n\t\t\t\t\t// this statically we can skip the extra runtime check.\n\t\t\t\t\tnameExpression = new Literal<string>(propInfo.name);\n\t\t\t\t}\n\n\t\t\t\tlet kind: FunctionKind;\n\t\t\t\tif (propInfo.isStatic) {\n\t\t\t\t\tkind = isGet ? FunctionKind.StaticGetterFunction\n\t\t\t\t\t\t: FunctionKind.StaticSetterFunction;\n\t\t\t\t} else {\n\t\t\t\t\tkind = isGet ? FunctionKind.GetterFunction\n\t\t\t\t\t\t: FunctionKind.SetterFunction;\n\t\t\t\t}\n\n\t\t\t\tconst value = this.parseFunctionLiteral(kind, FunctionSyntaxKind.AccessorOrMethod, nameExpression as Identifier, propInfo.rangeStart);\n\n\t\t\t\tconst propertyKind: ClassLiteralPropertyKind = isGet ? ClassLiteralProperty.Kind.GETTER : ClassLiteralProperty.Kind.SETTER;\n\t\t\t\tconst result = this.newClassLiteralProperty(\n\t\t\t\t\tnameExpression, value, propertyKind,\n\t\t\t\t\tpropInfo.isStatic, propInfo.isComputedName,\n\t\t\t\t\tpropInfo.isPrivate,\n\t\t\t\t\tpropInfo.rangeStart\n\t\t\t\t);\n\t\t\t\tconst prefix = isGet ? 'get ' : 'set ';\n\t\t\t\tthis.setFunctionNameFromPropertyName(result, propInfo.name, prefix);\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\tcase PropertyKind.Value:\n\t\t\tcase PropertyKind.Shorthand:\n\t\t\tcase PropertyKind.Spread:\n\t\t\t\t// throw new Error(this.errorMessage('Report Unexpected Token'));\n\t\t\t\treturn this.factory.createNull(propInfo.rangeStart?.range);\n\t\t}\n\t\tthrow new Error(this.errorMessage('UNREACHABLE'));\n\t}\n\tprotected checkClassMethodName(propInfo: PropertyKindInfo, classInfo: ClassInfo) {\n\t\tif (!(propInfo.kind == PropertyKind.Method || isAccessor(propInfo.kind))) {\n\t\t\tthrow new Error(this.errorMessage('not kind of method or setter or getter'));\n\t\t}\n\t\tif (propInfo.isPrivate && propInfo.name.toString() === 'constructor') {\n\t\t\tthrow new Error(this.errorMessage('constructor is private'));\n\t\t} else if (propInfo.isStatic && propInfo.name.toString() === 'prototype') {\n\t\t\tthrow new Error(this.errorMessage('static prototype'));\n\t\t} else if (propInfo.name.toString() === 'constructor') {\n\t\t\tif (propInfo.funcFlag !== ParseFunctionFlag.IsNormal || isAccessor(propInfo.kind)) {\n\t\t\t\tif (propInfo.funcFlag === ParseFunctionFlag.IsGenerator) {\n\t\t\t\t\tthrow new Error(this.errorMessage('constructor is generator'));\n\t\t\t\t} else if (propInfo.funcFlag === ParseFunctionFlag.IsAsync) {\n\t\t\t\t\tthrow new Error(this.errorMessage('constructor is async'));\n\t\t\t\t}\n\t\t\t\tif (classInfo.hasSeenConstructor) {\n\t\t\t\t\tthrow new Error(this.errorMessage('duplicate constructor'));\n\t\t\t\t}\n\t\t\t}\n\t\t\tclassInfo.hasSeenConstructor = true;\n\t\t}\n\t}\n\tprotected parseClassStaticBlock(classInfo: ClassInfo): StaticBlock {\n\t\tthis.consume(Token.STATIC);\n\t\t// Each static block has its own var and lexical scope, so make a new var\n\t\t// block scope instead of using the synthetic members initializer function\n\t\t// scope.\n\t\tthis.setStatue(true, FunctionKind.ClassStaticInitializerFunction);\n\t\tconst block = this.parseBlock();\n\t\tthis.restoreStatue();\n\t\tclassInfo.hasStaticElements = true;\n\t\treturn this.factory.createClassStaticBlockDeclaration(block.getBody(), block.range);\n\t}\n\tprotected newClassLiteralProperty(\n\t\tnameExpression: ExpressionNode,\n\t\tinitializer: ExpressionNode | undefined,\n\t\tkind: ClassLiteralPropertyKind,\n\t\tisStatic: boolean,\n\t\tisComputedName: boolean,\n\t\tisPrivate: boolean,\n\t\tstart: PositionMark) {\n\t\tconst range = this.createRange(start);\n\t\tswitch (kind) {\n\t\t\tcase ClassLiteralPropertyKind.METHOD:\n\t\t\t\tif (nameExpression.toString() === 'constructor') {\n\t\t\t\t\treturn this.factory.createMethodSignature('constructor', nameExpression, initializer as FunctionExpression, [], isComputedName, isStatic, range);\n\t\t\t\t}\n\t\t\t\treturn this.factory.createMethodSignature('method', nameExpression, initializer as FunctionExpression, [], isComputedName, isStatic, range);\n\t\t\tcase ClassLiteralPropertyKind.GETTER:\n\t\t\t\treturn this.factory.createMethodSignature('get', nameExpression, initializer as FunctionExpression, [], isComputedName, isStatic, range);\n\t\t\tcase ClassLiteralPropertyKind.SETTER:\n\t\t\t\treturn this.factory.createMethodSignature('set', nameExpression, initializer as FunctionExpression, [], isComputedName, isStatic, range);\n\t\t\tcase ClassLiteralPropertyKind.FIELD:\n\t\t\t\treturn this.factory.createPropertySignature(nameExpression, [], isComputedName, isStatic, initializer, range);\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t\tthrow new Error(this.errorMessage('UNREACHABLE'));\n\t}\n\tprotected parseMemberInitializer(classInfo: ClassInfo, isStatic: boolean): ExpressionNode | undefined {\n\t\tconst kind = isStatic\n\t\t\t? FunctionKind.ClassStaticInitializerFunction\n\t\t\t: FunctionKind.ClassMembersInitializerFunction;\n\t\tlet initializer: ExpressionNode | undefined = undefined;\n\t\tif (this.check(Token.ASSIGN)) {\n\t\t\tthis.setStatue(true, kind);\n\t\t\tinitializer = this.parseAssignmentExpression();\n\t\t\tthis.restoreStatue();\n\t\t}\n\t\tif (isStatic) {\n\t\t\tclassInfo.hasStaticElements = true;\n\t\t} else {\n\t\t\tclassInfo.hasInstanceMembers = true;\n\t\t}\n\t\treturn initializer;\n\t}\n\tprotected setFunctionNameFromPropertyName(property: ExpressionNode, name: string, prefix?: string): void {\n\t\t// TODO: no need for this now\n\t\t// check later when needed\n\t\t// the ClassExpression* handle this\n\t}\n\tprotected parseSuperExpression(): ExpressionNode {\n\t\tconst superToken = this.consume(Token.SUPER);\n\t\tif (Token.isProperty(this.peek().token)) {\n\t\t\tif (this.peek().isType(Token.PERIOD) && this.peekAhead().isType(Token.PRIVATE_NAME)) {\n\t\t\t\tthis.consume(Token.PERIOD);\n\t\t\t\tthis.consume(Token.PRIVATE_NAME);\n\t\t\t\tthrow new Error(this.errorMessage('Unexpected Private Field'));\n\t\t\t}\n\t\t\tif (this.peek().isType(Token.QUESTION_PERIOD)) {\n\t\t\t\tthis.consume(Token.QUESTION_PERIOD);\n\t\t\t\tthrow new Error(this.errorMessage('Optional Chaining No Super'));\n\t\t\t}\n\t\t\treturn this.factory.createSuper(superToken.range);\n\t\t}\n\t\tthrow new Error(this.errorMessage('Unexpected Super'));\n\t}\n\tprotected rewriteClassLiteral(classInfo: ClassInfo, name?: ExpressionNode, range?: [number, number]): ClassBody {\n\t\tconst body: (MethodDefinition | PropertyDefinition | AccessorProperty | StaticBlock)[] = [];\n\t\tif (classInfo.hasSeenConstructor) {\n\t\t\tbody.push(classInfo.constructor as MethodDefinition);\n\t\t}\n\t\tbody.push(...classInfo.staticElements);\n\t\tbody.push(...classInfo.instanceFields);\n\t\tbody.push(...classInfo.publicMembers);\n\t\tbody.push(...classInfo.privateMembers);\n\t\treturn this.factory.createClassBody(body, range);\n\t}\n\tprotected parseModuleItemList(): ExpressionNode[] {\n\t\t// ecma262/#prod-Module\n\t\t// Module :\n\t\t// ModuleBody?\n\t\t//\n\t\t// ecma262/#prod-ModuleItemList\n\t\t// ModuleBody :\n\t\t// ModuleItem*\n\t\tconst body: ExpressionNode[] = [];\n\t\twhile (this.peek().isNotType(Token.EOS)) {\n\t\t\tconst stat = this.parseModuleItem();\n\t\t\tif (!stat) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (this.factory.isEmptyStatement(stat)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tbody.push(stat);\n\t\t}\n\t\treturn body;\n\t}\n\tprotected parseModuleItem(): ExpressionNode | undefined {\n\t\t// ecma262/#prod-ModuleItem\n\t\t// ModuleItem :\n\t\t// ImportDeclaration\n\t\t// ExportDeclaration\n\t\t// StatementListItem\n\n\t\tconst next = this.peek();\n\t\tif (next.isType(Token.EXPORT)) {\n\t\t\treturn this.parseExportDeclaration();\n\t\t}\n\t\tif (next.isType(Token.IMPORT)) {\n\t\t\t// We must be careful not to parse a dynamic import expression as an import\n\t\t\t// declaration. Same for import.meta expressions.\n\t\t\tconst peekAhead = this.peekAhead();\n\t\t\tif (peekAhead.isNotType(Token.LPAREN) && peekAhead.isNotType(Token.PERIOD)) {\n\t\t\t\treturn this.parseImportDeclaration();\n\t\t\t\t// return factory() -> EmptyStatement();\n\t\t\t}\n\t\t}\n\n\t\treturn this.parseStatementListItem();\n\t}\n\tprotected parseExportDeclaration(): ExpressionNode | undefined {\n\t\t// ExportDeclaration:\n\t\t// 'export' '*' 'from' ModuleSpecifier ';'\n\t\t// 'export' '*' 'from' ModuleSpecifier [no LineTerminator here]\n\t\t// AssertClause ';'\n\t\t// 'export' '*' 'as' IdentifierName 'from' ModuleSpecifier ';'\n\t\t// 'export' '*' 'as' IdentifierName 'from' ModuleSpecifier\n\t\t// [no LineTerminator here] AssertClause ';'\n\t\t// 'export' '*' 'as' ModuleExportName 'from' ModuleSpecifier ';'\n\t\t// 'export' '*' 'as' ModuleExportName 'from' ModuleSpecifier ';'\n\t\t// [no LineTerminator here] AssertClause ';'\n\t\t// 'export' ExportClause ('from' ModuleSpecifier)? ';'\n\t\t// 'export' ExportClause ('from' ModuleSpecifier [no LineTerminator here]\n\t\t// AssertClause)? ';'\n\t\t// 'export' VariableStatement\n\t\t// 'export' Declaration\n\t\t// 'export' 'default' ... (handled in ParseExportDefault)\n\t\t//\n\t\t// ModuleExportName :\n\t\t// StringLiteral\n\n\t\tconst start = this.expect(Token.EXPORT);\n\t\tlet result: ExpressionNode | undefined;\n\t\tconst names: string[] = [];\n\n\t\t// Statement * result = nullptr;\n\t\t// ZonePtrList <const AstRawString> names(1, zone());\n\t\t// Scanner::Location loc = scanner() -> peek_location();\n\t\tswitch (this.peek().token) {\n\t\t\tcase Token.DEFAULT:\n\t\t\t\treturn this.parseExportDefault(start);\n\n\t\t\tcase Token.MUL:\n\t\t\t\treturn this.parseExportStar(start);\n\n\t\t\tcase Token.LBRACE: {\n\t\t\t\t// There are two cases here:\n\t\t\t\t//\n\t\t\t\t// 'export' ExportClause ';'\n\t\t\t\t// and\n\t\t\t\t// 'export' ExportClause FromClause ';'\n\t\t\t\t//\n\t\t\t\t// In the first case, the exported identifiers in ExportClause must\n\t\t\t\t// not be reserved words, while in the latter they may be. We\n\t\t\t\t// pass in a location that gets filled with the first reserved word\n\t\t\t\t// encountered, and then throw a SyntaxError if we are in the\n\t\t\t\t// non-FromClause case.\n\n\t\t\t\t// Scanner::Location reserved_loc = Scanner:: Location:: invalid();\n\t\t\t\t// Scanner::Location string_literal_local_name_loc =\n\t\t\t\t// Scanner:: Location:: invalid();\n\t\t\t\t// ZoneChunkList < ExportClauseData >* export_data =\n\t\t\t\t// ParseExportClause(& reserved_loc, & string_literal_local_name_loc);\n\n\t\t\t\tconst exportData = this.parseExportClause();\n\t\t\t\tlet moduleSpecifier: Literal<string> | undefined;\n\t\t\t\tlet importAssertions: ImportAttribute[] | undefined;\n\n\t\t\t\tif (this.checkContextualKeyword('from')) {\n\t\t\t\t\t// Scanner::Location specifier_loc = scanner() -> peek_location();\n\t\t\t\t\tmoduleSpecifier = this.parseModuleSpecifier();\n\t\t\t\t\timportAssertions = this.parseImportAssertClause();\n\t\t\t\t\tthis.expectSemicolon();\n\n\t\t\t\t\t// if (exportData.isEmpty()) {\n\t\t\t\t\t// \t// module() -> AddEmptyImport(module_specifier, import_assertions, specifier_loc, zone());\n\t\t\t\t\t// } else {\n\t\t\t\t\t// \t// for (const ExportClauseData& data : * export_data) {\n\t\t\t\t\t// \t// \tmodule() -> AddExport(data.local_name, data.export_name,\n\t\t\t\t\t// \t// \t\tmodule_specifier, import_assertions,\n\t\t\t\t\t// \t// \t\tdata.location, specifier_loc, zone());\n\t\t\t\t\t// \t// }\n\t\t\t\t\t// }\n\t\t\t\t} else {\n\t\t\t\t\t// if (reserved_loc.IsValid()) {\n\t\t\t\t\t// \t// No FromClause, so reserved words are invalid in ExportClause.\n\t\t\t\t\t// \tReportMessageAt(reserved_loc, MessageTemplate:: kUnexpectedReserved);\n\t\t\t\t\t// \treturn nullptr;\n\t\t\t\t\t// } else if (string_literal_local_name_loc.IsValid()) {\n\t\t\t\t\t// \tReportMessageAt(string_literal_local_name_loc,\n\t\t\t\t\t// \t\tMessageTemplate:: kModuleExportNameWithoutFromClause);\n\t\t\t\t\t// \treturn nullptr;\n\t\t\t\t\t// }\n\n\t\t\t\t\tthis.expectSemicolon();\n\n\t\t\t\t\t// for (const ExportClauseData& data : * export_data) {\n\t\t\t\t\t// \tmodule() -> AddExport(data.local_name, data.export_name, data.location,\n\t\t\t\t\t// \t\tzone());\n\t\t\t\t\t// }\n\t\t\t\t}\n\t\t\t\treturn this.factory.createNamespaceExportDeclaration(exportData, undefined, moduleSpecifier, importAssertions, this.createRange(start));\n\t\t\t\t// return factory() -> EmptyStatement();\n\t\t\t}\n\n\t\t\tcase Token.FUNCTION: {\n\t\t\t\tconst declaration = this.parseFunctionDeclaration();\n\t\t\t\tconst identifier = declaration.getId()!;\n\t\t\t\tconst specifier = this.factory.createExportSpecifier(identifier, identifier, identifier.range);\n\t\t\t\tresult = this.factory.createNamespaceExportDeclaration([specifier], declaration, undefined, undefined, this.createRange(start));\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase Token.CLASS: {\n\t\t\t\tconst classToken = this.consume(Token.CLASS);\n\t\t\t\tconst declaration = this.parseClassDeclaration(names, false, classToken);\n\t\t\t\tconst identifier = declaration.getId()!;\n\t\t\t\tconst specifier = this.factory.createExportSpecifier(identifier, identifier, identifier.range);\n\t\t\t\tresult = this.factory.createNamespaceExportDeclaration([specifier], declaration, undefined, undefined, this.createRange(start));\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase Token.VAR:\n\t\t\tcase Token.LET:\n\t\t\tcase Token.CONST:\n\t\t\t\tconst declaration = this.parseVariableStatement(VariableDeclarationContext.StatementListItem, names);\n\t\t\t\tconst specifiers = declaration.getDeclarations()\n\t\t\t\t\t.map(node => this.factory.createExportSpecifier(node.getId() as Identifier, node.getId() as Identifier, node.getId().range));\n\t\t\t\tresult = this.factory.createNamespaceExportDeclaration(specifiers, declaration, undefined, undefined, this.createRange(start));\n\t\t\t\tbreak;\n\n\t\t\tcase Token.ASYNC:\n\t\t\t\tconst asyncToken = this.consume(Token.ASYNC);\n\t\t\t\tif (this.peek().isType(Token.FUNCTION) && !this.scanner.hasLineTerminatorBeforeNext()) {\n\t\t\t\t\tconst declaration = this.parseAsyncFunctionDeclaration(names, false, asyncToken);\n\t\t\t\t\tconst identifier = declaration.getId()!;\n\t\t\t\t\tconst specifier = this.factory.createExportSpecifier(identifier, identifier, identifier.range);\n\t\t\t\t\tresult = this.factory.createNamespaceExportDeclaration([specifier], declaration, undefined, undefined, this.createRange(start));\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\tdefault:\n\t\t\t\tthrow new SyntaxError(this.errorMessage('Unexpected Token'));\n\t\t}\n\t\t// loc.end_pos = scanner() -> location().end_pos;\n\n\t\t// SourceTextModuleDescriptor * descriptor = module();\n\t\t// for (const AstRawString* name : names) {\n\t\t// \tdescriptor -> AddExport(name, name, loc, zone());\n\t\t// }\n\n\t\treturn result;\n\t}\n\tprotected parseImportDeclaration(): ExpressionNode | undefined {\n\t\t// ImportDeclaration :\n\t\t// 'import' ImportClause 'from' ModuleSpecifier ';'\n\t\t// 'import' ModuleSpecifier ';'\n\t\t// 'import' ImportClause 'from' ModuleSpecifier [no LineTerminator here]\n\t\t// AssertClause ';'\n\t\t// 'import' ModuleSpecifier [no LineTerminator here] AssertClause';'\n\t\t//\n\t\t// ImportClause :\n\t\t// ImportedDefaultBinding\n\t\t// NameSpaceImport\n\t\t// NamedImports\n\t\t// ImportedDefaultBinding ',' NameSpaceImport\n\t\t// ImportedDefaultBinding ',' NamedImports\n\t\t//\n\t\t// NameSpaceImport :\n\t\t// '*' 'as' ImportedBinding\n\n\t\tconst start = this.expect(Token.IMPORT);\n\n\t\tconst tok = this.peek();\n\n\t\t// 'import' ModuleSpecifier ';'\n\t\tif (tok.isType(Token.STRING)) {\n\t\t\t// Scanner::Location specifier_loc = scanner() -> peek_location();\n\t\t\tconst moduleSpecifier = this.parseModuleSpecifier();\n\t\t\tconst importAssertions = this.parseImportAssertClause();\n\t\t\tthis.expectSemicolon();\n\n\t\t\t// module() -> AddEmptyImport(module_specifier, import_assertions, specifier_loc,zone());\n\t\t\treturn this.factory.createImportDeclaration(moduleSpecifier, undefined, importAssertions, this.createRange(start));\n\t\t}\n\n\t\t// Parse ImportedDefaultBinding if present.\n\t\tlet importDefaultBinding: Identifier | undefined;\n\t\t// Scanner::Location import_default_binding_loc;\n\t\tif (tok.isNotType(Token.MUL) && tok.isNotType(Token.LBRACE)) {\n\t\t\timportDefaultBinding = this.parseNonRestrictedIdentifier();\n\t\t\t// DeclareUnboundVariable(import_default_binding, VariableMode:: kConst,kNeedsInitialization, pos);\n\t\t}\n\n\t\t// Parse NameSpaceImport or NamedImports if present.\n\t\tlet moduleNamespaceBinding: Identifier | undefined;\n\t\tlet namedImports: ModuleSpecifier[] | undefined;\n\t\t// Scanner::Location module_namespace_binding_loc;\n\t\t// const ZonePtrList<const NamedImport >* named_imports = nullptr;\n\t\tif (importDefaultBinding == undefined || this.check(Token.COMMA)) {\n\t\t\tswitch (this.peek().token) {\n\t\t\t\tcase Token.MUL: {\n\t\t\t\t\tthis.consume(Token.MUL);\n\t\t\t\t\tthis.expectContextualKeyword('as');\n\t\t\t\t\tmoduleNamespaceBinding = this.parseNonRestrictedIdentifier();\n\t\t\t\t\t// ExpectContextualKeyword(ast_value_factory() -> as_string());\n\t\t\t\t\t// module_namespace_binding = ParseNonRestrictedIdentifier();\n\t\t\t\t\t// module_namespace_binding_loc = scanner() -> location();\n\t\t\t\t\t// DeclareUnboundVariable(module_namespace_binding, VariableMode:: kConst, kCreatedInitialized, pos);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase Token.LBRACE:\n\t\t\t\t\tnamedImports = this.parseNamedImports();\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new SyntaxError(this.errorMessage('Unexpected Token'));\n\t\t\t}\n\t\t}\n\t\tthis.expectContextualKeyword('from');\n\t\t// ExpectContextualKeyword(ast_value_factory() -> from_string());\n\t\t// Scanner::Location specifier_loc = scanner() -> peek_location();\n\t\tconst moduleSpecifier = this.parseModuleSpecifier();\n\t\tconst importAssertions = this.parseImportAssertClause();\n\t\tthis.expectSemicolon();\n\n\t\t// Now that we have all the information, we can make the appropriate\n\t\t// declarations.\n\n\t\t// TODO(neis): Would prefer to call DeclareVariable for each case below rather\n\t\t// than above and in ParseNamedImports, but then a possible error message\n\t\t// would point to the wrong location. Maybe have a DeclareAt version of\n\t\t// Declare that takes a location?\n\n\t\tconst specifiers: ModuleSpecifier[] = [];\n\t\tif (moduleNamespaceBinding) {\n\t\t\tspecifiers.push(this.factory.createImportNamespaceSpecifier(moduleNamespaceBinding, moduleNamespaceBinding.range));\n\t\t}\n\t\tif (importDefaultBinding) {\n\t\t\tspecifiers.push(this.factory.createImportDefaultSpecifier(importDefaultBinding, importDefaultBinding.range));\n\t\t}\n\t\tif (namedImports?.length) {\n\t\t\tspecifiers.push(...namedImports);\n\t\t}\n\t\treturn this.factory.createImportDeclaration(moduleSpecifier, specifiers.length ? specifiers : undefined, importAssertions, this.createRange(start));\n\t}\n\tprotected parseImportExpressions(): ExpressionNode {\n\t\tconst start = this.consume(Token.IMPORT);\n\t\tif (this.check(Token.PERIOD)) {\n\t\t\tconst peek = this.peek();\n\t\t\tthis.expectContextualKeyword('meta');\n\t\t\treturn this.factory.createMetaProperty(\n\t\t\t\tthis.factory.createIdentifier('import', start.range),\n\t\t\t\tthis.factory.createIdentifier('meta', peek.range),\n\t\t\t\tthis.createRange(start)\n\t\t\t);\n\t\t}\n\n\t\tif (this.peek().isNotType(Token.LPAREN)) {\n\t\t\tthrow new SyntaxError(this.errorMessage('Unexpected Token'));\n\t\t}\n\n\t\tthis.consume(Token.LPAREN);\n\t\tif (this.peek().isType(Token.RPAREN)) {\n\t\t\tthrow new SyntaxError(this.errorMessage('Import Missing Specifier'));\n\t\t}\n\t\tthis.setAcceptIN(true);\n\t\tconst specifier = this.parseAssignmentExpressionCoverGrammar();\n\n\t\tif (this.check(Token.COMMA)) {\n\t\t\tif (this.check(Token.RPAREN)) {\n\t\t\t\t// A trailing comma allowed after the specifier.\n\t\t\t\treturn this.factory.createImportExpression(specifier as Literal<string>, undefined, this.createRange(start));\n\t\t\t} else {\n\t\t\t\tconst importAssertions = this.parseAssignmentExpressionCoverGrammar();\n\t\t\t\tthis.check(Token.COMMA); // A trailing comma is allowed after the import\n\t\t\t\t// assertions.\n\t\t\t\tthis.expect(Token.RPAREN);\n\t\t\t\treturn this.factory.createImportExpression(specifier as Literal<string>, importAssertions, this.createRange(start));\n\t\t\t}\n\t\t}\n\n\t\tthis.expect(Token.RPAREN);\n\t\tthis.restoreAcceptIN();\n\t\treturn this.factory.createImportExpression(specifier as Literal<string>, undefined, this.createRange(start));\n\t}\n\tprotected parseVariableStatement(varContext: VariableDeclarationContext, names: string[]) {\n\t\t// VariableStatement ::\n\t\t// VariableDeclarations ';'\n\n\t\t// The scope of a var declared variable anywhere inside a function\n\t\t// is the entire function (ECMA-262, 3rd, 10.1.3, and 12.2). Thus we can\n\t\t// transform a source-level var declaration into a (Function) Scope\n\t\t// declaration, and rewrite the source-level initialization into an assignment\n\t\t// statement. We use a block to collect multiple assignments.\n\t\t//\n\t\t// We mark the block as initializer block because we don't want the\n\t\t// rewriter to add a '.result' assignment to such a block (to get compliant\n\t\t// behavior for code such as print(eval('var x = 7')), and for cosmetic\n\t\t// reasons when pretty-printing. Also, unless an assignment (initialization)\n\t\t// is inside an initializer block, it is ignored.\n\t\tconst declarations = this.parseVariableDeclarations(varContext);\n\t\tthis.expectSemicolon();\n\t\tnames.push(...declarations.getDeclarations().map(d => d.getId().toString()));\n\t\treturn declarations;\n\t}\n\tprotected parseImportAssertClause(): ImportAttribute[] | undefined {\n\t\t// AssertClause :\n\t\t// assert '{' '}'\n\t\t// assert '{' AssertEntries '}'\n\n\t\t// AssertEntries :\n\t\t// IdentifierName: AssertionKey\n\t\t// IdentifierName: AssertionKey , AssertEntries\n\n\t\t// AssertionKey :\n\t\t// IdentifierName\n\t\t// StringLiteral\n\n\t\t// auto import_assertions = zone() -> New<ImportAssertions>(zone());\n\n\t\t// if (!FLAG_harmony_import_assertions) {\n\t\t// \treturn import_assertions;\n\t\t// }\n\n\t\t// Assert clause is optional, and cannot be preceded by a LineTerminator.\n\t\tif (this.scanner.hasLineTerminatorBeforeNext() || !this.checkContextualKeyword('assert')) {\n\t\t\treturn undefined;\n\t\t}\n\t\tthis.expect(Token.LBRACE);\n\t\tconst counts = {} as { [key: string]: number };\n\t\tconst importAssertions: ImportAttribute[] = [];\n\t\twhile (this.peek().isNotType(Token.RBRACE)) {\n\t\t\tlet attributeKey = this.checkAndGetValue(Token.STRING);\n\t\t\tif (!attributeKey) {\n\t\t\t\tattributeKey = this.parsePropertyOrPrivatePropertyName();\n\t\t\t}\n\t\t\tthis.expect(Token.COLON);\n\t\t\tconst attributeValue = this.expectAndGetValue(Token.STRING);\n\t\t\timportAssertions.push(this.factory.createAssertEntry(attributeKey as Identifier, attributeValue as Literal<string>, this.createRange(attributeKey)));\n\t\t\tcounts[attributeKey.toString()] = (counts[attributeKey.toString()] ?? 0) + 1;\n\t\t\tif (counts[attributeKey.toString()] > 1) {\n\t\t\t\t// \t// It is a syntax error if two AssertEntries have the same key.\n\t\t\t\tthrow new SyntaxError(this.errorMessage('Import Assertion Duplicate Key'));\n\t\t\t}\n\n\t\t\tif (this.peek().isType(Token.RBRACE)) break;\n\t\t\tif (!this.check(Token.COMMA)) {\n\t\t\t\tthrow new SyntaxError('Unexpected Token');\n\t\t\t}\n\t\t}\n\t\tthis.expect(Token.RBRACE);\n\t\treturn importAssertions;\n\t}\n\tprotected parseModuleSpecifier(): Literal<string> {\n\t\t// ModuleSpecifier :\n\t\t// StringLiteral\n\n\t\treturn this.expectAndGetValue(Token.STRING) as Literal<string>;\n\t}\n\tprotected parseExportClause() {\n\t\t// ExportClause :\n\t\t// '{' '}'\n\t\t// '{' ExportsList '}'\n\t\t// '{' ExportsList ',' '}'\n\t\t//\n\t\t// ExportsList :\n\t\t// ExportSpecifier\n\t\t// ExportsList ',' ExportSpecifier\n\t\t//\n\t\t// ExportSpecifier :\n\t\t// IdentifierName\n\t\t// IdentifierName 'as' IdentifierName\n\t\t// IdentifierName 'as' ModuleExportName\n\t\t// ModuleExportName\n\t\t// ModuleExportName 'as' ModuleExportName\n\t\t//\n\t\t// ModuleExportName :\n\t\t// StringLiteral\n\t\t// ZoneChunkList < ExportClauseData >* export_data = zone() -> New<ZoneChunkList<ExportClauseData>>(zone());\n\n\t\tthis.expect(Token.LBRACE);\n\n\t\tconst exportData: ExportSpecifier[] = [];\n\t\tlet nameTok = this.peek();\n\t\twhile (nameTok.isNotType(Token.RBRACE)) {\n\t\t\tconst localName = this.parseExportSpecifierName();\n\t\t\tlet exportName;\n\t\t\tif (this.checkContextualKeyword('as')) {\n\t\t\t\texportName = this.parseExportSpecifierName();\n\t\t\t} else {\n\t\t\t\texportName = localName;\n\t\t\t}\n\t\t\texportData.push(this.factory.createExportSpecifier(exportName as Identifier, localName as Identifier));\n\t\t\tif (this.peek().isType(Token.RBRACE)) break;\n\t\t\tif (!this.check(Token.COMMA)) {\n\t\t\t\tthrow new SyntaxError('Unexpected Token');\n\t\t\t}\n\t\t}\n\t\tthis.expect(Token.RBRACE);\n\t\treturn exportData;\n\t}\n\tprotected parseExportSpecifierName() {\n\t\tconst next = this.next();\n\n\t\t// IdentifierName\n\t\tif (next.isType(Token.IDENTIFIER) || Token.isPropertyName(next.token)) {\n\t\t\treturn next.getValue() as Identifier;\n\t\t}\n\n\t\t// ModuleExportName\n\t\tif (next.isType(Token.STRING)) {\n\t\t\tconst exportName = next.getValue() as Literal<string>;\n\t\t\treturn exportName;\n\t\t}\n\t\tthrow new SyntaxError(this.errorMessage('Unexpected Token'));\n\t}\n\tprotected parseNamedImports(): ImportSpecifier[] {\n\t\t// NamedImports :\n\t\t// '{' '}'\n\t\t// '{' ImportsList '}'\n\t\t// '{' ImportsList ',' '}'\n\t\t//\n\t\t// ImportsList :\n\t\t// ImportSpecifier\n\t\t// ImportsList ',' ImportSpecifier\n\t\t//\n\t\t// ImportSpecifier :\n\t\t// BindingIdentifier\n\t\t// IdentifierName 'as' BindingIdentifier\n\t\t// ModuleExportName 'as' BindingIdentifier\n\n\t\tthis.expect(Token.LBRACE);\n\t\tconst result: ImportSpecifier[] = [];\n\n\t\t// auto result = zone() -> New < ZonePtrList <const NamedImport>> (1, zone());\n\t\twhile (this.peek().isNotType(Token.RBRACE)) {\n\t\t\tconst importName = this.parseExportSpecifierName() as Identifier;\n\t\t\tlet localName = importName;\n\t\t\t// In the presence of 'as', the left-side of the 'as' can\n\t\t\t// be any IdentifierName. But without 'as', it must be a valid\n\t\t\t// BindingIdentifier.\n\t\t\tif (this.checkContextualKeyword('as')) {\n\t\t\t\tlocalName = this.parsePropertyOrPrivatePropertyName() as Identifier;\n\t\t\t}\n\t\t\tif (!Token.isValidIdentifier(this.current().token, LanguageMode.Strict, false, isStrict(this.languageMode))) {\n\t\t\t\tthrow new SyntaxError(this.errorMessage('Unexpected Reserved Keyword'));\n\t\t\t} else if (this.isEvalOrArguments(localName)) {\n\t\t\t\tthrow new SyntaxError(this.errorMessage('Strict Eval Arguments'));\n\t\t\t}\n\n\t\t\tresult.push(this.factory.createImportSpecifier(localName, importName, this.createRange(importName)));\n\n\t\t\t// DeclareUnboundVariable(localName, VariableMode:: kConst, kNeedsInitialization, position());\n\n\t\t\t// NamedImport * import = zone() -> New<NamedImport>(import_name, local_name, location);\n\t\t\t// result-> Add(import, zone());\n\n\t\t\tif (this.peek().isType(Token.RBRACE)) break;\n\t\t\tthis.expect(Token.COMMA);\n\t\t}\n\n\t\tthis.expect(Token.RBRACE);\n\t\treturn result;\n\t}\n\n\tprotected parseExportDefault(start: PositionMark): ExportDefaultDeclaration {\n\t\t// Supports the following productions, starting after the 'default' token:\n\t\t// 'export' 'default' HoistableDeclaration\n\t\t// 'export' 'default' ClassDeclaration\n\t\t// 'export' 'default' AssignmentExpression[In] ';'\n\n\t\tthis.expect(Token.DEFAULT);\n\t\t// Scanner::Location default_loc = scanner() -> location();\n\n\t\t// ZonePtrList <const AstRawString> localNames(1, zone());\n\t\tconst localNames: string[] = [];\n\t\tlet result: ExpressionNode;\n\t\tswitch (this.peek().token) {\n\t\t\tcase Token.FUNCTION:\n\t\t\t\tresult = this.parseHoistableDeclaration(localNames, true, this.peek());\n\t\t\t\tbreak;\n\n\t\t\tcase Token.CLASS:\n\t\t\t\tconst classToken = this.consume(Token.CLASS);\n\t\t\t\tresult = this.parseClassDeclaration(localNames, true, classToken);\n\t\t\t\tbreak;\n\n\t\t\tcase Token.ASYNC:\n\t\t\t\tif (this.peekAhead().isType(Token.FUNCTION) && !this.scanner.hasLineTerminatorBeforeNext()) {\n\t\t\t\t\tconst asyncStart = this.consume(Token.ASYNC);\n\t\t\t\t\tresult = this.parseHoistableDeclaration(localNames, true, asyncStart);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\tdefault: {\n\t\t\t\t// int pos = position();\n\t\t\t\t// AcceptINScope scope(this, true);\n\t\t\t\tthis.setAcceptIN(true);\n\t\t\t\tresult = this.parseAssignmentExpression();\n\t\t\t\t// SetFunctionName(value, ast_value_factory() -> default_string());\n\n\t\t\t\t// const AstRawString* local_name = ast_value_factory() -> dot_default_string();\n\t\t\t\t// localNames.Add(local_name, zone());\n\n\t\t\t\t// It's fine to declare this as VariableMode::kConst because the user has\n\t\t\t\t// no way of writing to it.\n\t\t\t\t// VariableProxy * proxy = DeclareBoundVariable(local_name, VariableMode:: kConst, pos);\n\t\t\t\t// proxy ->var() -> set_initializer_position(position());\n\n\t\t\t\t// Assignment * assignment = factory() -> NewAssignment(Token.INIT, proxy, value, kNoSourcePosition);\n\t\t\t\t// result = IgnoreCompletion( factory() -> NewExpressionStatement(assignment, kNoSourcePosition));\n\n\t\t\t\tthis.expectSemicolon();\n\t\t\t\tthis.restoreAcceptIN();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// if (!result) {\n\t\t// \tDCHECK_EQ(localNames.length(), 1);\n\t\t// \tmodule() -> AddExport(localNames.first(), ast_value_factory() -> default_string(), default_loc, zone());\n\t\t// }\n\n\t\treturn this.factory.createExportDefault(result, this.createRange(start));\n\t}\n\tprotected parseExportStar(start: PositionMark): ExpressionNode | undefined {\n\t\tthis.consume(Token.MUL);\n\n\t\tif (!this.peekContextualKeyword('as')) {\n\t\t\t// 'export' '*' 'from' ModuleSpecifier ';'\n\t\t\t// Scanner::Location loc = scanner() -> location();\n\t\t\tthis.expectContextualKeyword('from');\n\t\t\t// Scanner::Location specifier_loc = scanner() -> peek_location();\n\t\t\tconst moduleSpecifier = this.parseModuleSpecifier();\n\t\t\tconst importAssertions = this.parseImportAssertClause();\n\t\t\tthis.expectSemicolon();\n\t\t\t// module() -> AddStarExport(module_specifier, import_assertions, loc,specifier_loc, zone());\n\t\t\treturn this.factory.createExportAllDeclaration(moduleSpecifier, undefined, importAssertions, this.createRange(start));\n\t\t}\n\n\t\t// 'export' '*' 'as' IdentifierName 'from' ModuleSpecifier ';'\n\t\t//\n\t\t// Desugaring:\n\t\t// export * as x from \"...\";\n\t\t// ~>\n\t\t// import * as .x from \"...\"; export {.x as x};\n\t\t//\n\t\t// Note that the desugared internal namespace export name (.x above) will\n\t\t// never conflict with a string literal export name, as literal string export\n\t\t// names in local name positions (i.e. left of 'as' or in a clause without\n\t\t// 'as') are disallowed without a following 'from' clause.\n\n\t\tthis.expectContextualKeyword('as');\n\t\tconst exportName = this.parseExportSpecifierName();\n\t\t// Scanner::Location export_name_loc = scanner() -> location();\n\t\t// const localName = this.nextInternalNamespaceExportName();\n\t\t// Scanner::Location local_name_loc = Scanner:: Location:: invalid();\n\t\t// DeclareUnboundVariable(local_name, VariableMode:: kConst, kCreatedInitialized,pos);\n\n\t\tthis.expectContextualKeyword('from');\n\t\tconst moduleSpecifier = this.parseModuleSpecifier();\n\t\tconst importAssertions = this.parseImportAssertClause();\n\t\tthis.expectSemicolon();\n\n\t\t// const specifiers = [new ExportSpecifier(exportName as Identifier, exportName as Identifier)];\n\n\t\t// module() -> AddStarImport(local_name, module_specifier, import_assertions,local_name_loc, specifier_loc, zone());\n\t\t// module() -> AddExport(local_name, export_name, export_name_loc, zone());\n\t\treturn this.factory.createExportAllDeclaration(moduleSpecifier, exportName as Identifier, importAssertions, this.createRange(start));\n\t}\n\n\tprotected parseWithStatement(): WithStatement {\n\t\t// WithStatement ::\n\t\t// 'with' '(' Expression ')' Statement\n\n\t\tconst start = this.consume(Token.WITH);\n\t\tif (isStrict(this.languageMode)) {\n\t\t\tthrow new SyntaxError(this.errorMessage('With is not allowed in Strict mode.'));\n\t\t}\n\t\tthis.expect(Token.LPAREN);\n\t\tconst object = this.parseExpression();\n\t\tthis.expect(Token.RPAREN);\n\t\tconst body = this.parseStatement();\n\t\tconst range = this.createRange(start);\n\t\treturn this.factory.createWithStatement(object, body, range);\n\t}\n}\n"]}
package/v8/stream.d.ts CHANGED
@@ -114,3 +114,4 @@ export declare class TokenStreamImpl extends TokenStream {
114
114
  };
115
115
  createError(message: String): string;
116
116
  }
117
+ //# sourceMappingURL=stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../../src/expressions/v8/stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAIpD,OAAO,EAAY,YAAY,EAAE,MAAM,eAAe,CAAC;AAIvD,eAAO,MAAM,eAAe,QAAsD,CAAC;AAEnF,eAAO,MAAM,oBAAoB,QAA0B,CAAC;AAE5D,eAAO,MAAM,mBAAmB,QAA6B,CAAC;AAE9D,MAAM,WAAW,kBAAmB,SAAQ,cAAc;CAAI;AAC9D,qBAAa,kBAAkB;IACX,OAAO,EAAE,MAAM,EAAE;IAAS,WAAW,EAAE,MAAM,EAAE;gBAA/C,OAAO,EAAE,MAAM,EAAE,EAAS,WAAW,EAAE,MAAM,EAAE;CAClE;AAED,MAAM,WAAW,qBAAsB,SAAQ,cAAc;CAAI;AACjE,qBAAa,qBAAqB;IACd,MAAM,EAAE,MAAM;IAAS,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;gBAA9C,MAAM,EAAE,MAAM,EAAS,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;CACjE;AAED,8BAAsB,WAAW;IAepB,SAAS,CAAC,IAAI;WAdZ,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,EAAE,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,WAAW;IASlG,SAAS,CAAC,GAAG,SAAK;IAClB,SAAS,CAAC,aAAa,SAAK;IAC5B,SAAS,CAAC,OAAO,EAAE,eAAe,CAAC;IACnC,SAAS,CAAC,YAAY,EAAE,eAAe,CAAC;IACxC,SAAS,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC;gBACX,IAAI,eAAsB;IAChD,eAAe,CAAC,IAAI,EAAE,YAAY;IAGlC,eAAe;IAGf,IAAI;IAIJ,OAAO,IAAI,IAAI;IAKf,KAAK,IAAI,IAAI;IAKb,SAAS,IAAI,eAAe,GAAG,SAAS;IAGxC,YAAY;IAGZ,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,OAAO;IAY9B,MAAM,IAAI,MAAM;IAGhB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIzB,WAAW,IAAI,MAAM;IAGrB,WAAW,CAAC,MAAM,GAAE,KAAiB,GAAG,WAAW;IAKnD,QAAQ,CAAC,MAAM,mBAAmB,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI;IAOpE,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI;IAU1D,sBAAsB,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI;IAc3E,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI;IAwBnE,QAAQ,IAAI,eAAe,EAAE;IAYpC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,eAAe,CAAC;IActD,iBAAiB,IAAI,OAAO;IAG5B,IAAI;IAMJ,SAAS;IAOT,YAAY;IAOZ,iBAAiB;IASjB,QAAQ,CAAC,IAAI,IAAI,eAAe;IAChC,QAAQ,CAAC,2BAA2B,IAAI,OAAO;IAC/C,QAAQ,CAAC,0BAA0B,IAAI,OAAO;IAC9C,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAC7C,QAAQ,CAAC,wBAAwB,IAAI,eAAe;CACpD;AAED,qBAAa,aAAc,SAAQ,WAAW;IACjC,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,eAAe,EAAE,EAAE,IAAI,CAAC,EAAE,YAAY;IAGlE,IAAI,IAAI,eAAe;IAOvB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAGpC,2BAA2B,IAAI,OAAO;IAGtC,0BAA0B,IAAI,OAAO;IAGrC,wBAAwB,IAAI,eAAe;CAG3C;AAED,qBAAa,eAAgB,SAAQ,WAAW;IAOnC,OAAO,CAAC,UAAU;IAN9B,MAAM,CAAC,YAAY,WAAkC;IACrD,MAAM,CAAC,cAAc,SAAoB;IACzC,MAAM,CAAC,cAAc,SAAoB;IACzC,MAAM,CAAC,YAAY,SAAmB;IACtC,MAAM,CAAC,YAAY,SAAe;gBAEd,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY;IAG3D,OAAO,CAAC,QAAQ;IAGhB,IAAI,IAAI,eAAe;IA4BvB,2BAA2B,IAAI,OAAO;IAKtC,0BAA0B,IAAI,OAAO;IAMrC,OAAO,CAAC,QAAQ;IAgEhB,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,gBAAgB;IA4EjB,wBAAwB,IAAI,eAAe;IAMlD,OAAO,CAAC,UAAU;IAmDlB,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,aAAa;IAkBrB,OAAO,CAAC,4BAA4B;IAmBpC,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,OAAO;IAWf,OAAO,CAAC,OAAO;IASf,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,UAAU;IA8FlB,OAAO,CAAC,YAAY;IAgBpB;;;OAGG;IACH,OAAO,CAAC,SAAS;IAwEjB,OAAO,CAAC,gBAAgB;IAGxB,OAAO,CAAC,6BAA6B;IAGrC,OAAO,CAAC,kBAAkB;IAGnB,iBAAiB;IA0DxB,OAAO,CAAC,QAAQ;IA4GhB,OAAO,CAAC,cAAc;IA4CtB,OAAO,CAAC,QAAQ;IAsFhB,OAAO,CAAC,UAAU;IAsPlB,OAAO,CAAC,WAAW;IA4JnB,SAAS,CAAC,cAAc;;;;IASjB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;CAqB3C"}
package/v8/stream.js CHANGED
@@ -9,6 +9,8 @@ export const IdentifierStartRegex = /[_$a-zA-Z\xA0-\uFFFF]/;
9
9
  export const IdentifierPartRegex = /[_$a-zA-Z0-9\xA0-\uFFFF]/;
10
10
  ;
11
11
  export class PreTemplateLiteral {
12
+ strings;
13
+ expressions;
12
14
  constructor(strings, expressions) {
13
15
  this.strings = strings;
14
16
  this.expressions = expressions;
@@ -16,12 +18,15 @@ export class PreTemplateLiteral {
16
18
  }
17
19
  ;
18
20
  export class TemplateStringLiteral {
21
+ string;
22
+ range;
19
23
  constructor(string, range) {
20
24
  this.string = string;
21
25
  this.range = range;
22
26
  }
23
27
  }
24
28
  export class TokenStream {
29
+ mode;
25
30
  static getTokenStream(source, mode) {
26
31
  if (Array.isArray(source)) {
27
32
  return new TokenStreamer(source, mode);
@@ -31,10 +36,13 @@ export class TokenStream {
31
36
  }
32
37
  throw new Error(`Can't build token stream for ${source}`);
33
38
  }
39
+ pos = 0;
40
+ savedPosition = 0;
41
+ current;
42
+ savedCurrent;
43
+ last;
34
44
  constructor(mode = LanguageMode.Strict) {
35
45
  this.mode = mode;
36
- this.pos = 0;
37
- this.savedPosition = 0;
38
46
  }
39
47
  setLanguageMode(mode) {
40
48
  this.mode = mode;
@@ -205,6 +213,7 @@ export class TokenStream {
205
213
  }
206
214
  }
207
215
  export class TokenStreamer extends TokenStream {
216
+ tokens;
208
217
  constructor(tokens, mode) {
209
218
  super(mode);
210
219
  this.tokens = tokens;
@@ -229,7 +238,13 @@ export class TokenStreamer extends TokenStream {
229
238
  return this.next();
230
239
  }
231
240
  }
232
- export class TokenStreamImpl extends TokenStream {
241
+ class TokenStreamImpl extends TokenStream {
242
+ expression;
243
+ static REGEXP_FLAGS = ['g', 'i', 'm', 's', 'u', 'y'];
244
+ static UnicodePattern = /^[0-9a-f]{4}$/i;
245
+ static DecimalPattern = /^[0-9a-f]{2}$/i;
246
+ static AsciiPattern = /^[0-7]{1,3}$/i;
247
+ static OctalPattern = /^[0-7]+$/i;
233
248
  constructor(expression, mode) {
234
249
  super(mode);
235
250
  this.expression = expression;
@@ -1658,9 +1673,5 @@ export class TokenStreamImpl extends TokenStream {
1658
1673
  `;
1659
1674
  }
1660
1675
  }
1661
- TokenStreamImpl.REGEXP_FLAGS = ['g', 'i', 'm', 's', 'u', 'y'];
1662
- TokenStreamImpl.UnicodePattern = /^[0-9a-f]{4}$/i;
1663
- TokenStreamImpl.DecimalPattern = /^[0-9a-f]{2}$/i;
1664
- TokenStreamImpl.AsciiPattern = /^[0-7]{1,3}$/i;
1665
- TokenStreamImpl.OctalPattern = /^[0-7]+$/i;
1676
+ export { TokenStreamImpl };
1666
1677
  //# sourceMappingURL=stream.js.map