tsc-ts 0.0.9 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/bin/tsc-ts.js +70 -1
- package/dist/api/compiler/ast-utilities.d.ts +19 -1
- package/dist/api/compiler/ast-utilities.js +180 -95
- package/dist/api/compiler/ast.d.ts +22 -15
- package/dist/api/compiler/ast.js +1026 -995
- package/dist/api/compiler/astnav.js +15 -15
- package/dist/api/compiler/binder-utilities.js +186 -186
- package/dist/api/compiler/binder.js +290 -263
- package/dist/api/compiler/character-codes.js +2 -2
- package/dist/api/compiler/checker-calls.js +178 -124
- package/dist/api/compiler/checker-classes.d.ts +14 -3
- package/dist/api/compiler/checker-classes.js +134 -90
- package/dist/api/compiler/checker-contextual.js +64 -61
- package/dist/api/compiler/checker-declaration-order.js +79 -79
- package/dist/api/compiler/checker-declarations.d.ts +1 -0
- package/dist/api/compiler/checker-declarations.js +160 -136
- package/dist/api/compiler/checker-declared-types.js +67 -65
- package/dist/api/compiler/checker-decorators.js +77 -77
- package/dist/api/compiler/checker-deprecation.d.ts +8 -3
- package/dist/api/compiler/checker-deprecation.js +76 -55
- package/dist/api/compiler/checker-destructuring.js +47 -45
- package/dist/api/compiler/checker-elaboration.js +24 -24
- package/dist/api/compiler/checker-emit-helpers.js +4 -4
- package/dist/api/compiler/checker-emit-resolver.d.ts +4 -2
- package/dist/api/compiler/checker-emit-resolver.js +25 -13
- package/dist/api/compiler/checker-evaluator.js +9 -9
- package/dist/api/compiler/checker-expressions.js +244 -211
- package/dist/api/compiler/checker-functions.js +113 -107
- package/dist/api/compiler/checker-generated-code.d.ts +0 -11
- package/dist/api/compiler/checker-generated-code.js +28 -52
- package/dist/api/compiler/checker-grammar.d.ts +1 -0
- package/dist/api/compiler/checker-grammar.js +472 -440
- package/dist/api/compiler/checker-heritage.js +91 -93
- package/dist/api/compiler/checker-inference.d.ts +77 -5
- package/dist/api/compiler/checker-inference.js +487 -107
- package/dist/api/compiler/checker-iteration.d.ts +0 -10
- package/dist/api/compiler/checker-iteration.js +35 -52
- package/dist/api/compiler/checker-javascript.js +14 -14
- package/dist/api/compiler/checker-jsdoc.d.ts +8 -10
- package/dist/api/compiler/checker-jsdoc.js +67 -58
- package/dist/api/compiler/checker-jsx.js +105 -88
- package/dist/api/compiler/checker-members.d.ts +9 -2
- package/dist/api/compiler/checker-members.js +212 -75
- package/dist/api/compiler/checker-modules.d.ts +15 -6
- package/dist/api/compiler/checker-modules.js +469 -309
- package/dist/api/compiler/checker-narrowing.js +273 -189
- package/dist/api/compiler/checker-object-literals.js +25 -22
- package/dist/api/compiler/checker-operators.js +126 -118
- package/dist/api/compiler/checker-overloads.js +27 -27
- package/dist/api/compiler/checker-property-access.js +59 -55
- package/dist/api/compiler/checker-services.d.ts +1 -0
- package/dist/api/compiler/checker-services.js +222 -210
- package/dist/api/compiler/checker-signatures.js +65 -49
- package/dist/api/compiler/checker-source-file.d.ts +5 -0
- package/dist/api/compiler/checker-source-file.js +154 -130
- package/dist/api/compiler/checker-statements.js +33 -32
- package/dist/api/compiler/checker-super.js +50 -50
- package/dist/api/compiler/checker-symbol-types.js +109 -93
- package/dist/api/compiler/checker-symbols.d.ts +13 -1
- package/dist/api/compiler/checker-symbols.js +264 -149
- package/dist/api/compiler/checker-type-factory.d.ts +5 -0
- package/dist/api/compiler/checker-type-factory.js +145 -36
- package/dist/api/compiler/checker-type-nodes.d.ts +1 -0
- package/dist/api/compiler/checker-type-nodes.js +179 -141
- package/dist/api/compiler/checker-type-operators.d.ts +2 -0
- package/dist/api/compiler/checker-type-operators.js +110 -63
- package/dist/api/compiler/checker-types.d.ts +80 -3
- package/dist/api/compiler/checker-types.js +121 -2
- package/dist/api/compiler/checker-unused.js +114 -118
- package/dist/api/compiler/checker-utilities.js +11 -11
- package/dist/api/compiler/checker.d.ts +104 -31
- package/dist/api/compiler/checker.js +181 -33
- package/dist/api/compiler/command-line.d.ts +1 -3
- package/dist/api/compiler/command-line.js +47 -44
- package/dist/api/compiler/compile-program.d.ts +42 -3
- package/dist/api/compiler/compile-program.js +139 -27
- package/dist/api/compiler/diagnostic-messages.d.ts +1849 -1774
- package/dist/api/compiler/diagnostic-messages.js +128 -122
- package/dist/api/compiler/diagnostics.d.ts +22 -0
- package/dist/api/compiler/diagnostics.js +93 -11
- package/dist/api/compiler/emitter.d.ts +7 -1
- package/dist/api/compiler/emitter.js +53 -11
- package/dist/api/compiler/file-include.d.ts +2 -1
- package/dist/api/compiler/file-include.js +11 -7
- package/dist/api/compiler/file-loader.d.ts +21 -1
- package/dist/api/compiler/file-loader.js +201 -48
- package/dist/api/compiler/instantiation.d.ts +7 -0
- package/dist/api/compiler/instantiation.js +101 -49
- package/dist/api/compiler/jsdoc.js +23 -23
- package/dist/api/compiler/link-tables.d.ts +48 -18
- package/dist/api/compiler/link-tables.js +80 -37
- package/dist/api/compiler/locales/cs-CZ.d.ts +1 -1
- package/dist/api/compiler/locales/cs-CZ.js +1 -1
- package/dist/api/compiler/locales/de-DE.d.ts +1 -1
- package/dist/api/compiler/locales/de-DE.js +1 -1
- package/dist/api/compiler/locales/es-ES.d.ts +1 -1
- package/dist/api/compiler/locales/es-ES.js +1 -1
- package/dist/api/compiler/locales/fr-FR.d.ts +1 -1
- package/dist/api/compiler/locales/fr-FR.js +1 -1
- package/dist/api/compiler/locales/it-IT.d.ts +1 -1
- package/dist/api/compiler/locales/it-IT.js +1 -1
- package/dist/api/compiler/locales/ja-JP.d.ts +1 -1
- package/dist/api/compiler/locales/ja-JP.js +1 -1
- package/dist/api/compiler/locales/ko-KR.d.ts +1 -1
- package/dist/api/compiler/locales/ko-KR.js +1 -1
- package/dist/api/compiler/locales/pl-PL.d.ts +1 -1
- package/dist/api/compiler/locales/pl-PL.js +1 -1
- package/dist/api/compiler/locales/pt-BR.d.ts +1 -1
- package/dist/api/compiler/locales/pt-BR.js +1 -1
- package/dist/api/compiler/locales/ru-RU.d.ts +1 -1
- package/dist/api/compiler/locales/ru-RU.js +1 -1
- package/dist/api/compiler/locales/tr-TR.d.ts +1 -1
- package/dist/api/compiler/locales/tr-TR.js +1 -1
- package/dist/api/compiler/locales/zh-CN.d.ts +1 -1
- package/dist/api/compiler/locales/zh-CN.js +1 -1
- package/dist/api/compiler/locales/zh-TW.d.ts +1 -1
- package/dist/api/compiler/locales/zh-TW.js +1 -1
- package/dist/api/compiler/module-resolution-types.js +6 -6
- package/dist/api/compiler/module-resolution.d.ts +10 -1
- package/dist/api/compiler/module-resolution.js +115 -84
- package/dist/api/compiler/module-specifiers.d.ts +15 -0
- package/dist/api/compiler/module-specifiers.js +24 -18
- package/dist/api/compiler/name-resolver.js +74 -65
- package/dist/api/compiler/node-builder-names.d.ts +11 -3
- package/dist/api/compiler/node-builder-names.js +210 -90
- package/dist/api/compiler/node-builder-pseudo.js +29 -31
- package/dist/api/compiler/node-builder-reuse.js +23 -22
- package/dist/api/compiler/node-builder.d.ts +18 -1
- package/dist/api/compiler/node-builder.js +191 -102
- package/dist/api/compiler/option-declarations.d.ts +2 -6
- package/dist/api/compiler/option-declarations.js +315 -375
- package/dist/api/compiler/options.d.ts +15 -33
- package/dist/api/compiler/options.js +21 -54
- package/dist/api/compiler/output-paths.d.ts +4 -1
- package/dist/api/compiler/output-paths.js +6 -11
- package/dist/api/compiler/package-json.d.ts +3 -3
- package/dist/api/compiler/package-json.js +11 -10
- package/dist/api/compiler/parallel-parse.d.ts +3 -2
- package/dist/api/compiler/parallel-parse.js +17 -5
- package/dist/api/compiler/parser.d.ts +40 -19
- package/dist/api/compiler/parser.js +308 -216
- package/dist/api/compiler/path.d.ts +9 -0
- package/dist/api/compiler/path.js +20 -3
- package/dist/api/compiler/printer/emit-context.d.ts +5 -1
- package/dist/api/compiler/printer/emit-context.js +20 -1
- package/dist/api/compiler/printer/factory-base.d.ts +2 -2
- package/dist/api/compiler/printer/factory-base.js +7 -3
- package/dist/api/compiler/printer/factory.js +3 -1
- package/dist/api/compiler/printer/helpers.js +10 -1
- package/dist/api/compiler/printer/name-generator.d.ts +1 -1
- package/dist/api/compiler/printer/name-generator.js +35 -16
- package/dist/api/compiler/printer/printer.d.ts +49 -2
- package/dist/api/compiler/printer/printer.js +539 -293
- package/dist/api/compiler/printer/utilities.js +149 -147
- package/dist/api/compiler/program-checker.d.ts +12 -2
- package/dist/api/compiler/program-checker.js +88 -34
- package/dist/api/compiler/program-utilities.d.ts +3 -1
- package/dist/api/compiler/program-utilities.js +28 -15
- package/dist/api/compiler/program.d.ts +4 -6
- package/dist/api/compiler/program.js +74 -87
- package/dist/api/compiler/pseudo-bigint.d.ts +2 -0
- package/dist/api/compiler/pseudo-bigint.js +18 -0
- package/dist/api/compiler/regexp-checker.d.ts +1 -1
- package/dist/api/compiler/regexp-checker.js +93 -76
- package/dist/api/compiler/relations.d.ts +27 -4
- package/dist/api/compiler/relations.js +347 -180
- package/dist/api/compiler/reparser.js +60 -56
- package/dist/api/compiler/scanner.d.ts +19 -2
- package/dist/api/compiler/scanner.js +123 -108
- package/dist/api/compiler/shared-results.d.ts +463 -0
- package/dist/api/compiler/shared-results.js +2128 -0
- package/dist/api/compiler/sourcemap.js +2 -2
- package/dist/api/compiler/symbol-accessibility.js +87 -74
- package/dist/api/compiler/symbol.d.ts +23 -14
- package/dist/api/compiler/symbol.js +23 -11
- package/dist/api/compiler/syntax-kind.d.ts +198 -197
- package/dist/api/compiler/transformers/alias-references.js +247 -139
- package/dist/api/compiler/transformers/async-utilities.js +25 -25
- package/dist/api/compiler/transformers/async.d.ts +0 -1
- package/dist/api/compiler/transformers/async.js +64 -77
- package/dist/api/compiler/transformers/class-fields.d.ts +1 -0
- package/dist/api/compiler/transformers/class-fields.js +81 -78
- package/dist/api/compiler/transformers/commonjs-module.js +18 -15
- package/dist/api/compiler/transformers/const-enum-inliner.js +1 -1
- package/dist/api/compiler/transformers/declarations-diagnostics.js +247 -244
- package/dist/api/compiler/transformers/declarations-pseudo.js +100 -100
- package/dist/api/compiler/transformers/declarations-resolver.d.ts +0 -3
- package/dist/api/compiler/transformers/declarations-syntactic.d.ts +1 -2
- package/dist/api/compiler/transformers/declarations-syntactic.js +134 -156
- package/dist/api/compiler/transformers/declarations-tracker.js +18 -18
- package/dist/api/compiler/transformers/declarations.d.ts +4 -1
- package/dist/api/compiler/transformers/declarations.js +305 -238
- package/dist/api/compiler/transformers/decorator-metadata.d.ts +1 -1
- package/dist/api/compiler/transformers/decorator-metadata.js +53 -45
- package/dist/api/compiler/transformers/decorator-utilities.js +24 -24
- package/dist/api/compiler/transformers/destructuring.js +19 -18
- package/dist/api/compiler/transformers/emit-resolver.js +1 -1
- package/dist/api/compiler/transformers/es-decorators.js +55 -55
- package/dist/api/compiler/transformers/external-module-info.js +3 -3
- package/dist/api/compiler/transformers/for-await.js +25 -25
- package/dist/api/compiler/transformers/import-elision.js +14 -14
- package/dist/api/compiler/transformers/jsx.js +12 -12
- package/dist/api/compiler/transformers/legacy-decorators.js +17 -17
- package/dist/api/compiler/transformers/module.js +8 -8
- package/dist/api/compiler/transformers/named-evaluation.js +4 -4
- package/dist/api/compiler/transformers/object-rest-spread.js +20 -20
- package/dist/api/compiler/transformers/optional-chain.js +10 -10
- package/dist/api/compiler/transformers/reference-resolver.d.ts +12 -1
- package/dist/api/compiler/transformers/reference-resolver.js +131 -69
- package/dist/api/compiler/transformers/runtime-syntax.js +35 -31
- package/dist/api/compiler/transformers/subtree-facts.js +47 -47
- package/dist/api/compiler/transformers/syntax-facts.js +56 -58
- package/dist/api/compiler/transformers/type-eraser.js +73 -66
- package/dist/api/compiler/transformers/type-serialization.js +24 -24
- package/dist/api/compiler/transformers/using.js +12 -12
- package/dist/api/compiler/transformers/utilities.js +77 -77
- package/dist/api/compiler/transformers/visitor-base.js +172 -172
- package/dist/api/compiler/transformers/visitor-hooks.js +6 -2
- package/dist/api/compiler/tsconfig.d.ts +10 -2
- package/dist/api/compiler/tsconfig.js +136 -48
- package/dist/api/compiler/type-printer.js +40 -3
- package/dist/api/compiler/types.d.ts +2 -1
- package/dist/api/library/ast.generated.d.ts +42 -39
- package/dist/api/library/ast.generated.js +1 -1
- package/dist/api/library/compiler-options.generated.d.ts +111 -100
- package/dist/api/library/compiler-options.generated.js +1 -1
- package/dist/api/library/disk.js +12 -1
- package/dist/api/library/enums.generated.d.ts +206 -206
- package/dist/api/library/enums.generated.js +206 -206
- package/dist/api/library/nodes.js +26 -26
- package/package.json +9 -9
- package/src/compiler/ast-utilities.ts +99 -7
- package/src/compiler/ast.ts +58 -26
- package/src/compiler/binder.ts +39 -4
- package/src/compiler/character-codes.ts +2 -2
- package/src/compiler/checker-calls.ts +79 -9
- package/src/compiler/checker-classes.ts +78 -24
- package/src/compiler/checker-contextual.ts +6 -1
- package/src/compiler/checker-declarations.ts +31 -4
- package/src/compiler/checker-declared-types.ts +8 -5
- package/src/compiler/checker-decorators.ts +1 -1
- package/src/compiler/checker-deprecation.ts +29 -8
- package/src/compiler/checker-destructuring.ts +10 -3
- package/src/compiler/checker-emit-helpers.ts +1 -0
- package/src/compiler/checker-emit-resolver.ts +16 -6
- package/src/compiler/checker-expressions.ts +79 -46
- package/src/compiler/checker-functions.ts +21 -6
- package/src/compiler/checker-generated-code.ts +2 -22
- package/src/compiler/checker-grammar.ts +136 -62
- package/src/compiler/checker-heritage.ts +22 -21
- package/src/compiler/checker-inference.ts +514 -82
- package/src/compiler/checker-iteration.ts +18 -31
- package/src/compiler/checker-javascript.ts +1 -1
- package/src/compiler/checker-jsdoc.ts +50 -27
- package/src/compiler/checker-jsx.ts +26 -4
- package/src/compiler/checker-members.ts +200 -56
- package/src/compiler/checker-modules.ts +332 -65
- package/src/compiler/checker-narrowing.ts +98 -19
- package/src/compiler/checker-object-literals.ts +3 -0
- package/src/compiler/checker-operators.ts +11 -4
- package/src/compiler/checker-property-access.ts +7 -2
- package/src/compiler/checker-services.ts +39 -12
- package/src/compiler/checker-signatures.ts +15 -1
- package/src/compiler/checker-source-file.ts +39 -13
- package/src/compiler/checker-statements.ts +3 -2
- package/src/compiler/checker-symbol-types.ts +29 -6
- package/src/compiler/checker-symbols.ts +158 -15
- package/src/compiler/checker-type-factory.ts +124 -23
- package/src/compiler/checker-type-nodes.ts +46 -3
- package/src/compiler/checker-type-operators.ts +83 -26
- package/src/compiler/checker-types.ts +147 -4
- package/src/compiler/checker-unused.ts +9 -14
- package/src/compiler/checker.ts +203 -39
- package/src/compiler/command-line.ts +28 -28
- package/src/compiler/compile-program.ts +167 -27
- package/src/compiler/decoder.ts +13 -4
- package/src/compiler/diagnostic-messages.ts +1973 -1892
- package/src/compiler/diagnostics.ts +84 -3
- package/src/compiler/emitter.ts +57 -8
- package/src/compiler/encoder.ts +23 -8
- package/src/compiler/file-include.ts +9 -3
- package/src/compiler/file-loader.ts +197 -38
- package/src/compiler/help.ts +10 -14
- package/src/compiler/incremental.ts +165 -30
- package/src/compiler/init.ts +2 -7
- package/src/compiler/instantiation.ts +77 -22
- package/src/compiler/jsdoc.ts +3 -1
- package/src/compiler/link-tables.ts +82 -37
- package/src/compiler/locales/cs-CZ.ts +1 -1
- package/src/compiler/locales/de-DE.ts +1 -1
- package/src/compiler/locales/es-ES.ts +1 -1
- package/src/compiler/locales/fr-FR.ts +1 -1
- package/src/compiler/locales/it-IT.ts +1 -1
- package/src/compiler/locales/ja-JP.ts +1 -1
- package/src/compiler/locales/ko-KR.ts +1 -1
- package/src/compiler/locales/pl-PL.ts +1 -1
- package/src/compiler/locales/pt-BR.ts +1 -1
- package/src/compiler/locales/ru-RU.ts +1 -1
- package/src/compiler/locales/tr-TR.ts +1 -1
- package/src/compiler/locales/zh-CN.ts +1 -1
- package/src/compiler/locales/zh-TW.ts +1 -1
- package/src/compiler/module-resolution.ts +44 -8
- package/src/compiler/module-specifiers.ts +62 -20
- package/src/compiler/name-resolver.ts +9 -1
- package/src/compiler/node-builder-names.ts +236 -54
- package/src/compiler/node-builder-pseudo.ts +4 -7
- package/src/compiler/node-builder-reuse.ts +5 -4
- package/src/compiler/node-builder.ts +130 -31
- package/src/compiler/option-declarations.ts +33 -103
- package/src/compiler/options.ts +23 -62
- package/src/compiler/output-paths.ts +5 -18
- package/src/compiler/package-entrypoints.ts +345 -0
- package/src/compiler/package-json.ts +4 -4
- package/src/compiler/parallel-check.ts +326 -52
- package/src/compiler/parallel-emit.ts +320 -0
- package/src/compiler/parallel-parse.ts +16 -5
- package/src/compiler/parse-thread.ts +3 -0
- package/src/compiler/parser.ts +156 -39
- package/src/compiler/path.ts +22 -2
- package/src/compiler/printer/emit-context.ts +21 -0
- package/src/compiler/printer/factory-base.ts +10 -3
- package/src/compiler/printer/factory.ts +4 -1
- package/src/compiler/printer/helpers.ts +10 -1
- package/src/compiler/printer/name-generator.ts +24 -2
- package/src/compiler/printer/printer.ts +266 -30
- package/src/compiler/printer/utilities.ts +8 -2
- package/src/compiler/program-checker.ts +57 -5
- package/src/compiler/program-utilities.ts +23 -10
- package/src/compiler/program.ts +18 -26
- package/src/compiler/pseudo-bigint.ts +17 -0
- package/src/compiler/regexp-checker.ts +63 -30
- package/src/compiler/relations.ts +240 -77
- package/src/compiler/reparser.ts +7 -2
- package/src/compiler/scanner.ts +109 -79
- package/src/compiler/shared-results.ts +2414 -0
- package/src/compiler/show-config.ts +18 -1
- package/src/compiler/sourcemap.ts +2 -2
- package/src/compiler/symbol-accessibility.ts +26 -3
- package/src/compiler/symbol.ts +46 -24
- package/src/compiler/syntax-kind.ts +188 -187
- package/src/compiler/thread-entry.ts +64 -4
- package/src/compiler/transformers/alias-references.ts +123 -4
- package/src/compiler/transformers/async.ts +2 -17
- package/src/compiler/transformers/class-fields.ts +13 -12
- package/src/compiler/transformers/commonjs-module.ts +11 -7
- package/src/compiler/transformers/declarations-diagnostics.ts +5 -3
- package/src/compiler/transformers/declarations-pseudo.ts +2 -4
- package/src/compiler/transformers/declarations-resolver.ts +0 -3
- package/src/compiler/transformers/declarations-syntactic.ts +1 -21
- package/src/compiler/transformers/declarations.ts +134 -48
- package/src/compiler/transformers/decorator-metadata.ts +9 -1
- package/src/compiler/transformers/destructuring.ts +4 -3
- package/src/compiler/transformers/external-module-info.ts +1 -1
- package/src/compiler/transformers/jsx.ts +2 -1
- package/src/compiler/transformers/reference-resolver.ts +83 -19
- package/src/compiler/transformers/runtime-syntax.ts +6 -1
- package/src/compiler/transformers/syntax-facts.ts +2 -7
- package/src/compiler/transformers/type-eraser.ts +10 -1
- package/src/compiler/transformers/type-serialization.ts +3 -2
- package/src/compiler/transformers/visitor-base.ts +2 -1
- package/src/compiler/transformers/visitor-hooks.ts +9 -4
- package/src/compiler/tsc-build.ts +66 -9
- package/src/compiler/tsc-cli.ts +7 -0
- package/src/compiler/tsc-compile.ts +284 -4
- package/src/compiler/tsc-watch.ts +74 -45
- package/src/compiler/tsconfig.ts +176 -19
- package/src/compiler/type-printer.ts +36 -2
- package/src/compiler/types.ts +2 -1
- package/src/library/ast.generated.ts +57 -41
- package/src/library/compiler-options.generated.ts +117 -103
- package/src/library/disk.ts +10 -1
- package/src/library/enums.generated.ts +196 -196
package/src/compiler/scanner.ts
CHANGED
|
@@ -98,6 +98,7 @@ const textToKeyword: Map<string, SyntaxKind> = new Map<string, SyntaxKind>([
|
|
|
98
98
|
['return', SyntaxKind.ReturnKeyword],
|
|
99
99
|
['satisfies', SyntaxKind.SatisfiesKeyword],
|
|
100
100
|
['set', SyntaxKind.SetKeyword],
|
|
101
|
+
['source', SyntaxKind.SourceKeyword],
|
|
101
102
|
['static', SyntaxKind.StaticKeyword],
|
|
102
103
|
['string', SyntaxKind.StringKeyword],
|
|
103
104
|
['super', SyntaxKind.SuperKeyword],
|
|
@@ -1316,15 +1317,10 @@ export class Scanner {
|
|
|
1316
1317
|
case CharacterCodes.at:
|
|
1317
1318
|
this.pos = (this.pos + 1) | 0;
|
|
1318
1319
|
return (this.token = SyntaxKind.AtToken);
|
|
1319
|
-
case CharacterCodes.backslash:
|
|
1320
|
-
|
|
1321
|
-
if (codePoint >= 0 && isIdentifierStart(codePoint)) {
|
|
1322
|
-
const head = String.fromCodePoint(this.scanUnicodeEscape(true));
|
|
1323
|
-
this.setValue(head + this.scanIdentifierParts());
|
|
1320
|
+
case CharacterCodes.backslash:
|
|
1321
|
+
if (this.scanIdentifier(0, IdentifierVariant.Standard))
|
|
1324
1322
|
return (this.token = getIdentifierToken(this.tokenValue));
|
|
1325
|
-
}
|
|
1326
1323
|
return this.scanInvalidCharacter();
|
|
1327
|
-
}
|
|
1328
1324
|
case CharacterCodes.hash:
|
|
1329
1325
|
if ((chars[this.pos + 1] | 0) === CharacterCodes.exclamation) {
|
|
1330
1326
|
if (this.pos === 0) {
|
|
@@ -1332,27 +1328,17 @@ export class Scanner {
|
|
|
1332
1328
|
continue;
|
|
1333
1329
|
}
|
|
1334
1330
|
this.errorAt(Diagnostics.X_can_only_be_used_at_the_start_of_a_file, this.pos, 2, noArgs);
|
|
1335
|
-
this.pos = (this.pos +
|
|
1331
|
+
this.pos = (this.pos + 2) | 0;
|
|
1336
1332
|
return (this.token = SyntaxKind.Unknown);
|
|
1337
1333
|
}
|
|
1338
|
-
if (
|
|
1339
|
-
this.pos = (this.pos + 1) | 0;
|
|
1340
|
-
const codePoint = this.peekUnicodeEscape();
|
|
1341
|
-
if (codePoint >= 0 && isIdentifierStart(codePoint)) {
|
|
1342
|
-
const head = '#' + String.fromCodePoint(this.scanUnicodeEscape(true));
|
|
1343
|
-
this.setValue(head + this.scanIdentifierParts());
|
|
1344
|
-
return (this.token = SyntaxKind.PrivateIdentifier);
|
|
1345
|
-
}
|
|
1346
|
-
this.pos = (this.pos - 1) | 0;
|
|
1347
|
-
}
|
|
1348
|
-
if (!this.scanIdentifier(1)) {
|
|
1334
|
+
if (!this.scanIdentifier(1, IdentifierVariant.Standard)) {
|
|
1349
1335
|
this.errorAt(Diagnostics.Invalid_character, this.pos - 1, 1, noArgs);
|
|
1350
1336
|
this.setValue('#');
|
|
1351
1337
|
}
|
|
1352
1338
|
return (this.token = SyntaxKind.PrivateIdentifier);
|
|
1353
1339
|
default: {
|
|
1354
1340
|
if (ch < 0) return (this.token = SyntaxKind.EndOfFile);
|
|
1355
|
-
if (this.scanIdentifier(0)) return (this.token = this.identifierKind());
|
|
1341
|
+
if (this.scanIdentifier(0, IdentifierVariant.Standard)) return (this.token = this.identifierKind());
|
|
1356
1342
|
const codePoint = this.codePoint();
|
|
1357
1343
|
if (codePoint === CharacterCodes.replacementCharacter) {
|
|
1358
1344
|
this.errorAt(Diagnostics.File_appears_to_be_binary, 0, 0, noArgs);
|
|
@@ -1534,14 +1520,36 @@ export class Scanner {
|
|
|
1534
1520
|
this.commentDirectives.push(new CommentDirective(start, end, kind));
|
|
1535
1521
|
}
|
|
1536
1522
|
|
|
1537
|
-
/**
|
|
1538
|
-
|
|
1523
|
+
/**
|
|
1524
|
+
* @internal Scans an identifier after `prefixLength` units; sets the token value. `variant`
|
|
1525
|
+
* decides the identifier parts: JSX and JSDoc names also take `-`, and regular expression group
|
|
1526
|
+
* names take a surrogate pair written as two `\u` escapes.
|
|
1527
|
+
*/
|
|
1528
|
+
scanIdentifier(prefixLength: number, variant: IdentifierVariant): boolean {
|
|
1539
1529
|
const text = this.text;
|
|
1540
1530
|
const chars = this.chars;
|
|
1541
1531
|
const start = this.pos;
|
|
1542
1532
|
this.pos = (this.pos + prefixLength) | 0;
|
|
1533
|
+
const identifierStart = this.pos;
|
|
1543
1534
|
let ch = this.char();
|
|
1544
|
-
if (
|
|
1535
|
+
if (variant === IdentifierVariant.JSX) {
|
|
1536
|
+
if (isASCIILetter(ch) || ch === CharacterCodes._ || ch === CharacterCodes.$) {
|
|
1537
|
+
// ASCII names, as the general loop below scans them.
|
|
1538
|
+
let pos = (this.pos + 1) | 0;
|
|
1539
|
+
const end = this.end;
|
|
1540
|
+
while (pos < end) {
|
|
1541
|
+
const c = chars[pos] | 0;
|
|
1542
|
+
if (!isASCIIIdentifierPart(c) && c !== CharacterCodes.minus) break;
|
|
1543
|
+
pos = (pos + 1) | 0;
|
|
1544
|
+
}
|
|
1545
|
+
const next = pos < end ? chars[pos] | 0 : CharacterCodes.EOF;
|
|
1546
|
+
if (next <= CharacterCodes.maxAsciiCharacter && next !== CharacterCodes.backslash) {
|
|
1547
|
+
this.pos = pos;
|
|
1548
|
+
this.setValueSlice(start, pos);
|
|
1549
|
+
return true;
|
|
1550
|
+
}
|
|
1551
|
+
}
|
|
1552
|
+
} else if (isASCIILetter(ch) || ch === CharacterCodes._ || ch === CharacterCodes.$) {
|
|
1545
1553
|
// Fast path for ASCII identifiers, which also hashes the units for interning.
|
|
1546
1554
|
let pos = (this.pos + 1) | 0;
|
|
1547
1555
|
const end = this.end;
|
|
@@ -1563,33 +1571,47 @@ export class Scanner {
|
|
|
1563
1571
|
this.hashEnd = pos;
|
|
1564
1572
|
return true;
|
|
1565
1573
|
}
|
|
1566
|
-
this.pos = (start + prefixLength) | 0;
|
|
1567
1574
|
}
|
|
1575
|
+
this.pos = identifierStart;
|
|
1576
|
+
const languageVariant = variant === IdentifierVariant.JSX ? LanguageVariant.JSX : LanguageVariant.Standard;
|
|
1568
1577
|
ch = this.codePoint();
|
|
1569
|
-
if (
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1578
|
+
if (isIdentifierStart(ch)) {
|
|
1579
|
+
do {
|
|
1580
|
+
this.pos = (this.pos + charSize(ch)) | 0;
|
|
1581
|
+
ch = this.codePoint();
|
|
1582
|
+
} while (isIdentifierPart(ch, languageVariant));
|
|
1583
|
+
if (ch === CharacterCodes.backslash)
|
|
1584
|
+
this.setValue(text.substring(start, this.pos) + this.scanIdentifierParts(variant));
|
|
1585
|
+
else this.setValueSlice(start, this.pos);
|
|
1586
|
+
return true;
|
|
1587
|
+
}
|
|
1588
|
+
if (ch === CharacterCodes.backslash) {
|
|
1589
|
+
const escaped = this.scanIdentifierEscape(true, variant);
|
|
1590
|
+
if (escaped >= 0) {
|
|
1591
|
+
const head = text.substring(start, identifierStart) + String.fromCodePoint(escaped);
|
|
1592
|
+
this.setValue(head + this.scanIdentifierParts(variant));
|
|
1593
|
+
return true;
|
|
1594
|
+
}
|
|
1595
|
+
}
|
|
1596
|
+
return false;
|
|
1577
1597
|
}
|
|
1578
1598
|
|
|
1579
1599
|
/** Scans identifier parts including `\u` escapes and returns their cooked text. */
|
|
1580
|
-
private scanIdentifierParts(): string {
|
|
1600
|
+
private scanIdentifierParts(variant: IdentifierVariant): string {
|
|
1601
|
+
const languageVariant = variant === IdentifierVariant.JSX ? LanguageVariant.JSX : LanguageVariant.Standard;
|
|
1581
1602
|
let result = '';
|
|
1582
1603
|
let start = this.pos;
|
|
1583
1604
|
for (;;) {
|
|
1584
1605
|
const ch = this.codePoint();
|
|
1585
|
-
if (isIdentifierPart(ch)) {
|
|
1606
|
+
if (isIdentifierPart(ch, languageVariant)) {
|
|
1586
1607
|
this.pos = (this.pos + charSize(ch)) | 0;
|
|
1587
1608
|
continue;
|
|
1588
1609
|
}
|
|
1589
1610
|
if (ch === CharacterCodes.backslash) {
|
|
1590
|
-
const
|
|
1591
|
-
|
|
1592
|
-
|
|
1611
|
+
const escapeStart = this.pos;
|
|
1612
|
+
const escaped = this.scanIdentifierEscape(false, variant);
|
|
1613
|
+
if (escaped >= 0) {
|
|
1614
|
+
result += this.text.substring(start, escapeStart) + String.fromCodePoint(escaped);
|
|
1593
1615
|
start = this.pos;
|
|
1594
1616
|
continue;
|
|
1595
1617
|
}
|
|
@@ -1599,6 +1621,39 @@ export class Scanner {
|
|
|
1599
1621
|
return start === this.pos ? result : result + this.text.substring(start, this.pos);
|
|
1600
1622
|
}
|
|
1601
1623
|
|
|
1624
|
+
/**
|
|
1625
|
+
* At `\`: scans a `\u` escape of an identifier start (`isStart`) or part and returns its code point,
|
|
1626
|
+
* or returns -1 and leaves the scanner unchanged.
|
|
1627
|
+
*/
|
|
1628
|
+
private scanIdentifierEscape(isStart: boolean, variant: IdentifierVariant): number {
|
|
1629
|
+
const languageVariant = variant === IdentifierVariant.JSX ? LanguageVariant.JSX : LanguageVariant.Standard;
|
|
1630
|
+
const escaped = this.peekUnicodeEscape();
|
|
1631
|
+
if (escaped >= 0 && (isStart ? isIdentifierStart(escaped) : isIdentifierPart(escaped, languageVariant)))
|
|
1632
|
+
return this.scanUnicodeEscape(true);
|
|
1633
|
+
// Group names in regular expressions, in Unicode mode or not, take `\u` HexLeadSurrogate `\u`
|
|
1634
|
+
// HexTrailSurrogate as part of RegExpIdentifierName (tc39/ecma262#1869), but not the braced form.
|
|
1635
|
+
if (
|
|
1636
|
+
variant === IdentifierVariant.RegExpGroupName &&
|
|
1637
|
+
this.peek(2) !== CharacterCodes.openBrace &&
|
|
1638
|
+
escaped >= 0xd800 &&
|
|
1639
|
+
escaped <= 0xdbff
|
|
1640
|
+
) {
|
|
1641
|
+
const pos = this.pos;
|
|
1642
|
+
const flags = this.tokenFlags;
|
|
1643
|
+
this.scanUnicodeEscape(false);
|
|
1644
|
+
if (this.peek(2) !== CharacterCodes.openBrace) {
|
|
1645
|
+
const low = this.scanLowSurrogateEscape();
|
|
1646
|
+
if (low >= 0) {
|
|
1647
|
+
const codePoint = (escaped - 0xd800) * 0x400 + (low - 0xdc00) + 0x10000;
|
|
1648
|
+
if (isStart ? isIdentifierStart(codePoint) : isIdentifierPart(codePoint, languageVariant)) return codePoint;
|
|
1649
|
+
}
|
|
1650
|
+
}
|
|
1651
|
+
this.pos = pos | 0;
|
|
1652
|
+
this.tokenFlags = flags;
|
|
1653
|
+
}
|
|
1654
|
+
return -1;
|
|
1655
|
+
}
|
|
1656
|
+
|
|
1602
1657
|
private scanInvalidCharacter(): SyntaxKind {
|
|
1603
1658
|
const size = charSize(this.codePoint());
|
|
1604
1659
|
this.errorAt(Diagnostics.Invalid_character, this.pos, size, noArgs);
|
|
@@ -2080,7 +2135,7 @@ export class Scanner {
|
|
|
2080
2135
|
}
|
|
2081
2136
|
if (isIdentifierStart(this.codePoint())) {
|
|
2082
2137
|
const idStart = this.pos;
|
|
2083
|
-
const id = this.scanIdentifierParts();
|
|
2138
|
+
const id = this.scanIdentifierParts(IdentifierVariant.Standard);
|
|
2084
2139
|
if (result !== SyntaxKind.BigIntLiteral && id.length === 1 && this.chars[idStart] === CharacterCodes.n) {
|
|
2085
2140
|
if ((this.tokenFlags & TokenFlags.Scientific) !== 0) {
|
|
2086
2141
|
this.errorAt(Diagnostics.A_bigint_literal_cannot_use_exponential_notation, start, this.pos - start, noArgs);
|
|
@@ -2472,17 +2527,8 @@ export class Scanner {
|
|
|
2472
2527
|
/** Extends an identifier or keyword with `-` and further parts, as JSX names allow. */
|
|
2473
2528
|
scanJsxIdentifier(): SyntaxKind {
|
|
2474
2529
|
if (!tokenIsIdentifierOrKeyword(this.token)) return this.token;
|
|
2475
|
-
|
|
2476
|
-
|
|
2477
|
-
if (this.char() === CharacterCodes.minus) {
|
|
2478
|
-
value += '-';
|
|
2479
|
-
this.pos = (this.pos + 1) | 0;
|
|
2480
|
-
continue;
|
|
2481
|
-
}
|
|
2482
|
-
const pos = this.pos;
|
|
2483
|
-
value += this.scanIdentifierParts();
|
|
2484
|
-
if (this.pos === pos) break;
|
|
2485
|
-
}
|
|
2530
|
+
// An identifier or keyword is scanned: append a following `-` and the rest of the name.
|
|
2531
|
+
const value = this.getTokenValue() + this.scanIdentifierParts(IdentifierVariant.JSX);
|
|
2486
2532
|
this.setValue(value);
|
|
2487
2533
|
return (this.token = getIdentifierToken(value));
|
|
2488
2534
|
}
|
|
@@ -2556,7 +2602,6 @@ export class Scanner {
|
|
|
2556
2602
|
scanJSDocToken(): SyntaxKind {
|
|
2557
2603
|
this.fullStartPos = this.pos | 0;
|
|
2558
2604
|
this.tokenFlags = TokenFlags.None;
|
|
2559
|
-
const text = this.text;
|
|
2560
2605
|
const chars = this.chars;
|
|
2561
2606
|
if (this.pos >= this.end) return (this.token = SyntaxKind.EndOfFile);
|
|
2562
2607
|
this.tokenStart = this.pos | 0;
|
|
@@ -2605,39 +2650,24 @@ export class Scanner {
|
|
|
2605
2650
|
return (this.token = SyntaxKind.BacktickToken);
|
|
2606
2651
|
case CharacterCodes.hash:
|
|
2607
2652
|
return (this.token = SyntaxKind.HashToken);
|
|
2608
|
-
case CharacterCodes.backslash: {
|
|
2609
|
-
this.pos = (this.pos - 1) | 0;
|
|
2610
|
-
const codePoint = this.peekUnicodeEscape();
|
|
2611
|
-
if (codePoint >= 0 && isIdentifierStart(codePoint)) {
|
|
2612
|
-
const head = String.fromCodePoint(this.scanUnicodeEscape(true));
|
|
2613
|
-
this.setValue(head + this.scanIdentifierParts());
|
|
2614
|
-
return (this.token = getIdentifierToken(this.tokenValue));
|
|
2615
|
-
}
|
|
2616
|
-
this.pos = (this.pos + 1) | 0;
|
|
2617
|
-
return (this.token = SyntaxKind.Unknown);
|
|
2618
|
-
}
|
|
2619
|
-
}
|
|
2620
|
-
if (!isIdentifierStart(ch)) return (this.token = SyntaxKind.Unknown);
|
|
2621
|
-
let last = ch;
|
|
2622
|
-
while (this.pos < this.end) {
|
|
2623
|
-
const unit = this.chars[this.pos] | 0;
|
|
2624
|
-
if (unit < 0x80) {
|
|
2625
|
-
last = unit;
|
|
2626
|
-
if (!isASCIIIdentifierPart(unit) && unit !== CharacterCodes.minus) break;
|
|
2627
|
-
this.pos = (this.pos + 1) | 0;
|
|
2628
|
-
continue;
|
|
2629
|
-
}
|
|
2630
|
-
last = this.codePointAt(this.pos, this.end);
|
|
2631
|
-
if (!isIdentifierPart(last) && last !== CharacterCodes.minus) break;
|
|
2632
|
-
this.pos = (this.pos + charSize(last)) | 0;
|
|
2633
2653
|
}
|
|
2634
|
-
|
|
2635
|
-
|
|
2636
|
-
|
|
2637
|
-
|
|
2654
|
+
// JSDoc names take `-`, as JSX names do.
|
|
2655
|
+
this.pos = this.tokenStart;
|
|
2656
|
+
if (this.scanIdentifier(0, IdentifierVariant.JSX)) return (this.token = this.identifierKind());
|
|
2657
|
+
this.pos = (this.tokenStart + charSize(ch)) | 0;
|
|
2658
|
+
return (this.token = SyntaxKind.Unknown);
|
|
2638
2659
|
}
|
|
2639
2660
|
}
|
|
2640
2661
|
|
|
2662
|
+
/** Which characters an identifier scan takes after its start. */
|
|
2663
|
+
export const enum IdentifierVariant {
|
|
2664
|
+
Standard,
|
|
2665
|
+
/** JSX and JSDoc names, which take `-`. */
|
|
2666
|
+
JSX,
|
|
2667
|
+
/** Regular expression group names, which take a surrogate pair written as two `\u` escapes. */
|
|
2668
|
+
RegExpGroupName,
|
|
2669
|
+
}
|
|
2670
|
+
|
|
2641
2671
|
const mergeConflictMarkerLength = 7;
|
|
2642
2672
|
|
|
2643
2673
|
function utf8Length(ch: number): number {
|