@jalvin/compiler 2.0.31 → 2.0.33

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 (57) hide show
  1. package/dist/codegen/index.d.ts +179 -0
  2. package/dist/codegen/index.d.ts.map +1 -0
  3. package/dist/codegen/index.js +2207 -0
  4. package/dist/codegen/index.js.map +1 -0
  5. package/dist/codegen.d.ts +1 -1
  6. package/dist/codegen.d.ts.map +1 -1
  7. package/dist/codegen.js +14 -17
  8. package/dist/codegen.js.map +1 -1
  9. package/dist/codegen_freestanding_c.d.ts +9 -0
  10. package/dist/codegen_freestanding_c.d.ts.map +1 -0
  11. package/dist/codegen_freestanding_c.js +321 -0
  12. package/dist/codegen_freestanding_c.js.map +1 -0
  13. package/dist/diagnostics.d.ts +2 -0
  14. package/dist/diagnostics.d.ts.map +1 -1
  15. package/dist/diagnostics.js +3 -1
  16. package/dist/diagnostics.js.map +1 -1
  17. package/dist/lexer/chars.d.ts +5 -0
  18. package/dist/lexer/chars.d.ts.map +1 -0
  19. package/dist/lexer/chars.js +20 -0
  20. package/dist/lexer/chars.js.map +1 -0
  21. package/dist/lexer/index.d.ts +37 -0
  22. package/dist/lexer/index.d.ts.map +1 -0
  23. package/dist/lexer/index.js +630 -0
  24. package/dist/lexer/index.js.map +1 -0
  25. package/dist/lexer/tokens.d.ts +135 -0
  26. package/dist/lexer/tokens.d.ts.map +1 -0
  27. package/dist/lexer/tokens.js +89 -0
  28. package/dist/lexer/tokens.js.map +1 -0
  29. package/dist/parser/constants.d.ts +3 -0
  30. package/dist/parser/constants.d.ts.map +1 -0
  31. package/dist/parser/constants.js +7 -0
  32. package/dist/parser/constants.js.map +1 -0
  33. package/dist/parser/helpers.d.ts +2 -0
  34. package/dist/parser/helpers.d.ts.map +1 -0
  35. package/dist/parser/helpers.js +9 -0
  36. package/dist/parser/helpers.js.map +1 -0
  37. package/dist/parser/index.d.ts +118 -0
  38. package/dist/parser/index.d.ts.map +1 -0
  39. package/dist/parser/index.js +2387 -0
  40. package/dist/parser/index.js.map +1 -0
  41. package/dist/typechecker/globals.d.ts +2 -0
  42. package/dist/typechecker/globals.d.ts.map +1 -0
  43. package/dist/typechecker/globals.js +15 -0
  44. package/dist/typechecker/globals.js.map +1 -0
  45. package/dist/typechecker/index.d.ts +146 -0
  46. package/dist/typechecker/index.d.ts.map +1 -0
  47. package/dist/typechecker/index.js +2288 -0
  48. package/dist/typechecker/index.js.map +1 -0
  49. package/dist/typechecker/types.d.ts +66 -0
  50. package/dist/typechecker/types.d.ts.map +1 -0
  51. package/dist/typechecker/types.js +39 -0
  52. package/dist/typechecker/types.js.map +1 -0
  53. package/dist/typechecker.d.ts +12 -0
  54. package/dist/typechecker.d.ts.map +1 -1
  55. package/dist/typechecker.js +243 -149
  56. package/dist/typechecker.js.map +1 -1
  57. package/package.json +10 -15
@@ -0,0 +1,135 @@
1
+ import type { Span } from "../ast.js";
2
+ export declare const enum TokenKind {
3
+ IntLiteral = "IntLiteral",
4
+ LongLiteral = "LongLiteral",
5
+ FloatLiteral = "FloatLiteral",
6
+ DoubleLiteral = "DoubleLiteral",
7
+ BooleanLiteral = "BooleanLiteral",
8
+ NullLiteral = "NullLiteral",
9
+ StringLiteral = "StringLiteral",
10
+ RawStringLiteral = "RawStringLiteral",
11
+ StringTemplateStart = "StringTemplateStart",// " or $"
12
+ StringTemplatePart = "StringTemplatePart",// text inside template
13
+ StringTemplateExprStart = "StringTemplateExprStart",// ${
14
+ StringTemplateExprEnd = "StringTemplateExprEnd",// }
15
+ StringTemplateEnd = "StringTemplateEnd",// "
16
+ Identifier = "Identifier",
17
+ KwFun = "KwFun",
18
+ KwComponent = "KwComponent",
19
+ KwVal = "KwVal",
20
+ KwVar = "KwVar",
21
+ KwClass = "KwClass",
22
+ KwData = "KwData",
23
+ KwSealed = "KwSealed",
24
+ KwObject = "KwObject",
25
+ KwInterface = "KwInterface",
26
+ KwEnum = "KwEnum",
27
+ KwWhen = "KwWhen",
28
+ KwIf = "KwIf",
29
+ KwElse = "KwElse",
30
+ KwFor = "KwFor",
31
+ KwWhile = "KwWhile",
32
+ KwDo = "KwDo",
33
+ KwReturn = "KwReturn",
34
+ KwBreak = "KwBreak",
35
+ KwContinue = "KwContinue",
36
+ KwImport = "KwImport",
37
+ KwPackage = "KwPackage",
38
+ KwIs = "KwIs",
39
+ KwAs = "KwAs",
40
+ KwIn = "KwIn",
41
+ KwBy = "KwBy",
42
+ KwOverride = "KwOverride",
43
+ KwOpen = "KwOpen",
44
+ KwAbstract = "KwAbstract",
45
+ KwCompanion = "KwCompanion",
46
+ KwInit = "KwInit",
47
+ KwConstructor = "KwConstructor",
48
+ KwThis = "KwThis",
49
+ KwSuper = "KwSuper",
50
+ KwLaunch = "KwLaunch",
51
+ KwAsync = "KwAsync",
52
+ KwSuspend = "KwSuspend",
53
+ KwAwait = "KwAwait",
54
+ KwThrow = "KwThrow",
55
+ KwTry = "KwTry",
56
+ KwCatch = "KwCatch",
57
+ KwFinally = "KwFinally",
58
+ KwTypealias = "KwTypealias",
59
+ KwOperator = "KwOperator",
60
+ KwInfix = "KwInfix",
61
+ KwInline = "KwInline",
62
+ KwReified = "KwReified",
63
+ KwExternal = "KwExternal",
64
+ KwInternal = "KwInternal",
65
+ KwPrivate = "KwPrivate",
66
+ KwProtected = "KwProtected",
67
+ KwPublic = "KwPublic",
68
+ KwTailrec = "KwTailrec",
69
+ KwConst = "KwConst",
70
+ KwLateinit = "KwLateinit",
71
+ KwFinal = "KwFinal",
72
+ Plus = "Plus",
73
+ Minus = "Minus",
74
+ Star = "Star",
75
+ Slash = "Slash",
76
+ Percent = "Percent",
77
+ Eq = "Eq",
78
+ EqEq = "EqEq",
79
+ BangEq = "BangEq",
80
+ EqEqEq = "EqEqEq",
81
+ BangEqEq = "BangEqEq",
82
+ Lt = "Lt",
83
+ Gt = "Gt",
84
+ LtEq = "LtEq",
85
+ GtEq = "GtEq",
86
+ AmpAmp = "AmpAmp",
87
+ PipePipe = "PipePipe",
88
+ Bang = "Bang",
89
+ Question = "Question",
90
+ QuestionColon = "QuestionColon",// ?:
91
+ QuestionDot = "QuestionDot",// ?.
92
+ BangBang = "BangBang",// !!
93
+ Arrow = "Arrow",// ->
94
+ FatArrow = "FatArrow",// =>
95
+ DotDot = "DotDot",// ..
96
+ DotDotLt = "DotDotLt",// ..<
97
+ Dot = "Dot",
98
+ Comma = "Comma",
99
+ Colon = "Colon",
100
+ ColonColon = "ColonColon",// ::
101
+ Semicolon = "Semicolon",
102
+ At = "At",
103
+ Hash = "Hash",
104
+ Amp = "Amp",
105
+ Pipe = "Pipe",
106
+ Caret = "Caret",
107
+ Tilde = "Tilde",
108
+ PlusEq = "PlusEq",
109
+ MinusEq = "MinusEq",
110
+ StarEq = "StarEq",
111
+ SlashEq = "SlashEq",
112
+ PercentEq = "PercentEq",
113
+ PlusPlus = "PlusPlus",
114
+ MinusMinus = "MinusMinus",
115
+ Underscore = "Underscore",
116
+ LBrace = "LBrace",
117
+ RBrace = "RBrace",
118
+ LParen = "LParen",
119
+ RParen = "RParen",
120
+ LBracket = "LBracket",
121
+ RBracket = "RBracket",
122
+ EOF = "EOF"
123
+ }
124
+ export interface Token {
125
+ readonly kind: TokenKind;
126
+ readonly span: Span;
127
+ /** Raw source text of this token */
128
+ readonly text: string;
129
+ /** Parsed value for literals */
130
+ readonly value?: string | number | bigint | boolean | null;
131
+ }
132
+ export declare const KEYWORDS: Readonly<Record<string, TokenKind>>;
133
+ /** Tokens after which a newline triggers automatic semicolon insertion */
134
+ export declare const ASI_SET: Set<TokenKind>;
135
+ //# sourceMappingURL=tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/lexer/tokens.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ASI_SET = exports.KEYWORDS = void 0;
4
+ // ---------------------------------------------------------------------------
5
+ // Keyword map
6
+ // ---------------------------------------------------------------------------
7
+ exports.KEYWORDS = {
8
+ fun: "KwFun" /* TokenKind.KwFun */,
9
+ component: "KwComponent" /* TokenKind.KwComponent */,
10
+ val: "KwVal" /* TokenKind.KwVal */,
11
+ var: "KwVar" /* TokenKind.KwVar */,
12
+ class: "KwClass" /* TokenKind.KwClass */,
13
+ data: "KwData" /* TokenKind.KwData */,
14
+ sealed: "KwSealed" /* TokenKind.KwSealed */,
15
+ object: "KwObject" /* TokenKind.KwObject */,
16
+ interface: "KwInterface" /* TokenKind.KwInterface */,
17
+ enum: "KwEnum" /* TokenKind.KwEnum */,
18
+ when: "KwWhen" /* TokenKind.KwWhen */,
19
+ if: "KwIf" /* TokenKind.KwIf */,
20
+ else: "KwElse" /* TokenKind.KwElse */,
21
+ for: "KwFor" /* TokenKind.KwFor */,
22
+ while: "KwWhile" /* TokenKind.KwWhile */,
23
+ do: "KwDo" /* TokenKind.KwDo */,
24
+ return: "KwReturn" /* TokenKind.KwReturn */,
25
+ break: "KwBreak" /* TokenKind.KwBreak */,
26
+ continue: "KwContinue" /* TokenKind.KwContinue */,
27
+ import: "KwImport" /* TokenKind.KwImport */,
28
+ package: "KwPackage" /* TokenKind.KwPackage */,
29
+ is: "KwIs" /* TokenKind.KwIs */,
30
+ as: "KwAs" /* TokenKind.KwAs */,
31
+ in: "KwIn" /* TokenKind.KwIn */,
32
+ by: "KwBy" /* TokenKind.KwBy */,
33
+ override: "KwOverride" /* TokenKind.KwOverride */,
34
+ open: "KwOpen" /* TokenKind.KwOpen */,
35
+ abstract: "KwAbstract" /* TokenKind.KwAbstract */,
36
+ companion: "KwCompanion" /* TokenKind.KwCompanion */,
37
+ init: "KwInit" /* TokenKind.KwInit */,
38
+ constructor: "KwConstructor" /* TokenKind.KwConstructor */,
39
+ this: "KwThis" /* TokenKind.KwThis */,
40
+ super: "KwSuper" /* TokenKind.KwSuper */,
41
+ launch: "KwLaunch" /* TokenKind.KwLaunch */,
42
+ async: "KwAsync" /* TokenKind.KwAsync */,
43
+ suspend: "KwSuspend" /* TokenKind.KwSuspend */,
44
+ await: "KwAwait" /* TokenKind.KwAwait */,
45
+ throw: "KwThrow" /* TokenKind.KwThrow */,
46
+ try: "KwTry" /* TokenKind.KwTry */,
47
+ catch: "KwCatch" /* TokenKind.KwCatch */,
48
+ finally: "KwFinally" /* TokenKind.KwFinally */,
49
+ typealias: "KwTypealias" /* TokenKind.KwTypealias */,
50
+ operator: "KwOperator" /* TokenKind.KwOperator */,
51
+ infix: "KwInfix" /* TokenKind.KwInfix */,
52
+ inline: "KwInline" /* TokenKind.KwInline */,
53
+ reified: "KwReified" /* TokenKind.KwReified */,
54
+ external: "KwExternal" /* TokenKind.KwExternal */,
55
+ internal: "KwInternal" /* TokenKind.KwInternal */,
56
+ private: "KwPrivate" /* TokenKind.KwPrivate */,
57
+ protected: "KwProtected" /* TokenKind.KwProtected */,
58
+ public: "KwPublic" /* TokenKind.KwPublic */,
59
+ tailrec: "KwTailrec" /* TokenKind.KwTailrec */,
60
+ const: "KwConst" /* TokenKind.KwConst */,
61
+ lateinit: "KwLateinit" /* TokenKind.KwLateinit */,
62
+ final: "KwFinal" /* TokenKind.KwFinal */,
63
+ true: "BooleanLiteral" /* TokenKind.BooleanLiteral */,
64
+ false: "BooleanLiteral" /* TokenKind.BooleanLiteral */,
65
+ null: "NullLiteral" /* TokenKind.NullLiteral */,
66
+ };
67
+ /** Tokens after which a newline triggers automatic semicolon insertion */
68
+ exports.ASI_SET = new Set([
69
+ "Identifier" /* TokenKind.Identifier */,
70
+ "IntLiteral" /* TokenKind.IntLiteral */,
71
+ "LongLiteral" /* TokenKind.LongLiteral */,
72
+ "FloatLiteral" /* TokenKind.FloatLiteral */,
73
+ "DoubleLiteral" /* TokenKind.DoubleLiteral */,
74
+ "BooleanLiteral" /* TokenKind.BooleanLiteral */,
75
+ "NullLiteral" /* TokenKind.NullLiteral */,
76
+ "StringLiteral" /* TokenKind.StringLiteral */,
77
+ "RawStringLiteral" /* TokenKind.RawStringLiteral */,
78
+ "StringTemplateEnd" /* TokenKind.StringTemplateEnd */,
79
+ "RParen" /* TokenKind.RParen */,
80
+ "RBrace" /* TokenKind.RBrace */,
81
+ "RBracket" /* TokenKind.RBracket */,
82
+ "KwReturn" /* TokenKind.KwReturn */,
83
+ "KwBreak" /* TokenKind.KwBreak */,
84
+ "KwContinue" /* TokenKind.KwContinue */,
85
+ "KwThis" /* TokenKind.KwThis */,
86
+ "KwSuper" /* TokenKind.KwSuper */,
87
+ "BangBang" /* TokenKind.BangBang */,
88
+ ]);
89
+ //# sourceMappingURL=tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/lexer/tokens.ts"],"names":[],"mappings":";;;AAyJA,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAEjE,QAAA,QAAQ,GAAwC;IAC3D,GAAG,+BAAiB;IACpB,SAAS,2CAAuB;IAChC,GAAG,+BAAiB;IACpB,GAAG,+BAAiB;IACpB,KAAK,mCAAmB;IACxB,IAAI,iCAAkB;IACtB,MAAM,qCAAoB;IAC1B,MAAM,qCAAoB;IAC1B,SAAS,2CAAuB;IAChC,IAAI,iCAAkB;IACtB,IAAI,iCAAkB;IACtB,EAAE,6BAAgB;IAClB,IAAI,iCAAkB;IACtB,GAAG,+BAAiB;IACpB,KAAK,mCAAmB;IACxB,EAAE,6BAAgB;IAClB,MAAM,qCAAoB;IAC1B,KAAK,mCAAmB;IACxB,QAAQ,yCAAsB;IAC9B,MAAM,qCAAoB;IAC1B,OAAO,uCAAqB;IAC5B,EAAE,6BAAgB;IAClB,EAAE,6BAAgB;IAClB,EAAE,6BAAgB;IAClB,EAAE,6BAAgB;IAClB,QAAQ,yCAAsB;IAC9B,IAAI,iCAAkB;IACtB,QAAQ,yCAAsB;IAC9B,SAAS,2CAAuB;IAChC,IAAI,iCAAkB;IACtB,WAAW,+CAAyB;IACpC,IAAI,iCAAkB;IACtB,KAAK,mCAAmB;IACxB,MAAM,qCAAoB;IAC1B,KAAK,mCAAmB;IACxB,OAAO,uCAAqB;IAC5B,KAAK,mCAAmB;IACxB,KAAK,mCAAmB;IACxB,GAAG,+BAAiB;IACpB,KAAK,mCAAmB;IACxB,OAAO,uCAAqB;IAC5B,SAAS,2CAAuB;IAChC,QAAQ,yCAAsB;IAC9B,KAAK,mCAAmB;IACxB,MAAM,qCAAoB;IAC1B,OAAO,uCAAqB;IAC5B,QAAQ,yCAAsB;IAC9B,QAAQ,yCAAsB;IAC9B,OAAO,uCAAqB;IAC5B,SAAS,2CAAuB;IAChC,MAAM,qCAAoB;IAC1B,OAAO,uCAAqB;IAC5B,KAAK,mCAAmB;IACxB,QAAQ,yCAAsB;IAC9B,KAAK,mCAAmB;IACxB,IAAI,iDAA0B;IAC9B,KAAK,iDAA0B;IAC/B,IAAI,2CAAuB;CAC5B,CAAC;AAEF,0EAA0E;AAC7D,QAAA,OAAO,GAAG,IAAI,GAAG,CAAY;;;;;;;;;;;;;;;;;;;;CAoBzC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Hard guard against runaway expression recursion during error recovery. */
2
+ export declare const MAX_EXPR_DEPTH = 200;
3
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/parser/constants.ts"],"names":[],"mappings":"AAEA,6EAA6E;AAC7E,eAAO,MAAM,cAAc,MAAM,CAAC"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ // Parser-wide constants.
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.MAX_EXPR_DEPTH = void 0;
5
+ /** Hard guard against runaway expression recursion during error recovery. */
6
+ exports.MAX_EXPR_DEPTH = 200;
7
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/parser/constants.ts"],"names":[],"mappings":";AAAA,yBAAyB;;;AAEzB,6EAA6E;AAChE,QAAA,cAAc,GAAG,GAAG,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function isIdentifierText(text: string): boolean;
2
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/parser/helpers.ts"],"names":[],"mappings":"AAIA,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEtD"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ // Small parser helpers that are independent from parser state.
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.isIdentifierText = isIdentifierText;
5
+ const IDENT_RE = /^[a-zA-Z_][a-zA-Z0-9_]*$/;
6
+ function isIdentifierText(text) {
7
+ return IDENT_RE.test(text);
8
+ }
9
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/parser/helpers.ts"],"names":[],"mappings":";AAAA,+DAA+D;;AAI/D,4CAEC;AAJD,MAAM,QAAQ,GAAG,0BAA0B,CAAC;AAE5C,SAAgB,gBAAgB,CAAC,IAAY;IAC3C,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,118 @@
1
+ import * as AST from "../ast.js";
2
+ import { type Token } from "../lexer.js";
3
+ import { DiagnosticBag } from "../diagnostics.js";
4
+ export declare class Parser {
5
+ private pos;
6
+ private readonly tokens;
7
+ private readonly diag;
8
+ private readonly file;
9
+ private readonly source;
10
+ private depth;
11
+ constructor(tokens: Token[], file: string, diag: DiagnosticBag, source?: string);
12
+ parseProgram(): AST.Program;
13
+ private parsePackageDecl;
14
+ private parseImportDecl;
15
+ private parseTopLevelDecl;
16
+ private parseModifiers;
17
+ private parseFunOrExtension;
18
+ private parseComponentDecl;
19
+ private parseClassDecl;
20
+ private parseDataClassDecl;
21
+ private parseSealedClassDecl;
22
+ private parseInterfaceDecl;
23
+ private parseObjectDecl;
24
+ private parseTypeAliasDecl;
25
+ private parseEnumClassDecl;
26
+ private parseDestructuringDecl;
27
+ private isDeclarationKeyword;
28
+ private parsePropertyDeclTopLevel;
29
+ private parseClassBody;
30
+ private parseClassMember;
31
+ private parseInitBlock;
32
+ private parseSecondaryConstructor;
33
+ private parseCompanionObject;
34
+ private parsePropertyDecl;
35
+ private parsePropertyAccessor;
36
+ private parsePrimaryConstructor;
37
+ private parsePrimaryConstructorOpt;
38
+ private parseParamList;
39
+ private parseParam;
40
+ private parseSuperTypes;
41
+ private parseSuperTypeEntry;
42
+ private parseTypeRef;
43
+ private tryParseTypeRef;
44
+ private parseTypeRefInner;
45
+ private parseFunctionType;
46
+ /** Lookahead: scan past matching parens to see if followed by `->` */
47
+ private looksLikeFunctionType;
48
+ private parseTypeArgs;
49
+ private parseTypeParams;
50
+ private parseBlock;
51
+ private parseStmt;
52
+ private parseLocalProperty;
53
+ private parseReturnStmt;
54
+ private parseThrowStmt;
55
+ private parseBreakStmt;
56
+ private parseContinueStmt;
57
+ private parseIfStmt;
58
+ private parseWhenStmt;
59
+ private parseWhenBranch;
60
+ private parseWhenCondition;
61
+ private parseForStmt;
62
+ private parseForBinding;
63
+ private parseWhileStmt;
64
+ private parseDoWhileStmt;
65
+ private parseTryCatchStmt;
66
+ private parseCatchClause;
67
+ private parseLabeledStmt;
68
+ private parseExpr;
69
+ private parseAssign;
70
+ private parseElvis;
71
+ private parseOr;
72
+ private parseAnd;
73
+ private parseEquality;
74
+ private parseComparison;
75
+ private parseRange;
76
+ private parseInfix;
77
+ private parseAdditive;
78
+ private parseMultiplicative;
79
+ private parseUnary;
80
+ private parsePostfix;
81
+ private parsePrimary;
82
+ private parseJsxElement;
83
+ private parseStringLiteralExpr;
84
+ private parseIfExpr;
85
+ private parseWhenExpr;
86
+ private parseTryCatchExpr;
87
+ private parseLaunchExpr;
88
+ private parseAsyncExpr;
89
+ private parseObjectExpr;
90
+ private parseLambda;
91
+ /** Heuristically determine if this lambda has explicit parameters before `->` or `=>` */
92
+ private detectLambdaParams;
93
+ /** Heuristic lookahead: return true if we are at `(params) =>` (arrow function). */
94
+ private looksLikeArrowFunction;
95
+ /** Parse `(params) => body` as a LambdaExpr (JS-style arrow function). */
96
+ private parseArrowFunction;
97
+ private parseCallArgs;
98
+ private parseCallArg;
99
+ private current;
100
+ private advance;
101
+ private prevSpan;
102
+ private check;
103
+ private checkNext;
104
+ private checkIdent;
105
+ private peekKindAt;
106
+ private expect;
107
+ private expectIdentifier;
108
+ private expectIdentOrKeyword;
109
+ private eatSemicolon;
110
+ private parseDottedName;
111
+ /**
112
+ * A trailing `{` is the start of a new statement (not a trailing lambda)
113
+ * when preceded by a newline-induced semicolon.
114
+ */
115
+ private isStartOfNewStatement;
116
+ }
117
+ export declare function parse(tokens: Token[], file: string, diag: DiagnosticBag, source?: string): AST.Program;
118
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parser/index.ts"],"names":[],"mappings":"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"}