tsc-ts 0.0.10 → 0.1.1
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 +1 -1
- 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 +29 -18
- package/dist/api/compiler/ast.js +1040 -1007
- 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 +173 -123
- package/dist/api/compiler/checker-classes.d.ts +14 -3
- package/dist/api/compiler/checker-classes.js +136 -91
- package/dist/api/compiler/checker-contextual.d.ts +20 -0
- package/dist/api/compiler/checker-contextual.js +175 -62
- 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 +258 -212
- 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 +469 -438
- 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 -113
- 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 +107 -89
- package/dist/api/compiler/checker-members.d.ts +9 -2
- package/dist/api/compiler/checker-members.js +210 -74
- 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 +190 -46
- 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 +97 -31
- package/dist/api/compiler/checker.js +149 -35
- 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 +24 -4
- package/dist/api/compiler/compile-program.js +53 -26
- package/dist/api/compiler/diagnostic-messages.d.ts +1849 -1774
- package/dist/api/compiler/diagnostic-messages.js +128 -122
- package/dist/api/compiler/diagnostics.js +7 -7
- package/dist/api/compiler/emitter.d.ts +7 -1
- package/dist/api/compiler/emitter.js +53 -11
- package/dist/api/compiler/expr-record.d.ts +11 -0
- package/dist/api/compiler/expr-record.js +53 -0
- 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 +10 -0
- package/dist/api/compiler/file-loader.js +138 -41
- package/dist/api/compiler/identifier-name.d.ts +9 -0
- package/dist/api/compiler/identifier-name.js +10 -0
- package/dist/api/compiler/instantiation.d.ts +7 -0
- package/dist/api/compiler/instantiation.js +101 -49
- package/dist/api/compiler/jsdoc.js +27 -25
- 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/parser.d.ts +42 -20
- package/dist/api/compiler/parser.js +318 -224
- 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 +3 -1
- package/dist/api/compiler/printer/emit-context.js +16 -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 +6 -3
- 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 +1 -0
- package/dist/api/compiler/printer/printer.js +306 -283
- package/dist/api/compiler/printer/utilities.js +149 -147
- package/dist/api/compiler/program-checker.d.ts +8 -2
- package/dist/api/compiler/program-checker.js +84 -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 +2 -0
- package/dist/api/compiler/program.js +69 -57
- 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 +337 -180
- package/dist/api/compiler/reparser.js +64 -59
- package/dist/api/compiler/scanner.d.ts +27 -2
- package/dist/api/compiler/scanner.js +181 -150
- package/dist/api/compiler/shared-results.d.ts +696 -0
- package/dist/api/compiler/shared-results.js +2905 -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 +22 -13
- package/dist/api/compiler/symbol.js +15 -1
- 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 +307 -239
- 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 +74 -38
- package/src/compiler/binder.ts +39 -4
- package/src/compiler/cgroup.ts +157 -0
- package/src/compiler/character-codes.ts +2 -2
- package/src/compiler/checker-calls.ts +76 -8
- package/src/compiler/checker-classes.ts +80 -25
- package/src/compiler/checker-contextual.ts +110 -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 +95 -47
- package/src/compiler/checker-functions.ts +21 -6
- package/src/compiler/checker-generated-code.ts +2 -22
- package/src/compiler/checker-grammar.ts +133 -60
- package/src/compiler/checker-heritage.ts +22 -21
- package/src/compiler/checker-inference.ts +514 -87
- 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 +28 -5
- package/src/compiler/checker-members.ts +197 -55
- 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 +173 -35
- 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 +175 -41
- package/src/compiler/command-line.ts +28 -28
- package/src/compiler/compile-program.ts +59 -25
- package/src/compiler/decoder.ts +15 -5
- package/src/compiler/diagnostic-messages.ts +1973 -1892
- package/src/compiler/doctor-report.ts +133 -0
- package/src/compiler/emitter.ts +57 -8
- package/src/compiler/encoder.ts +23 -8
- package/src/compiler/expr-record.ts +59 -0
- package/src/compiler/file-include.ts +9 -3
- package/src/compiler/file-loader.ts +139 -32
- package/src/compiler/help.ts +10 -14
- package/src/compiler/identifier-name.ts +13 -0
- package/src/compiler/incremental.ts +86 -18
- package/src/compiler/init.ts +2 -7
- package/src/compiler/instantiation.ts +77 -22
- package/src/compiler/jsdoc.ts +7 -3
- 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 +543 -147
- package/src/compiler/parallel-emit.ts +4 -4
- package/src/compiler/parser.ts +166 -47
- package/src/compiler/path.ts +22 -2
- package/src/compiler/printer/emit-context.ts +16 -0
- package/src/compiler/printer/factory-base.ts +10 -3
- package/src/compiler/printer/factory.ts +7 -3
- package/src/compiler/printer/helpers.ts +10 -1
- package/src/compiler/printer/name-generator.ts +24 -2
- package/src/compiler/printer/printer.ts +39 -16
- package/src/compiler/printer/utilities.ts +8 -2
- package/src/compiler/program-checker.ts +53 -5
- package/src/compiler/program-utilities.ts +23 -10
- package/src/compiler/program.ts +13 -1
- package/src/compiler/pseudo-bigint.ts +17 -0
- package/src/compiler/regexp-checker.ts +63 -30
- package/src/compiler/relations.ts +233 -77
- package/src/compiler/reparser.ts +14 -5
- package/src/compiler/run-config.ts +1383 -0
- package/src/compiler/run-record-read.ts +87 -0
- package/src/compiler/run-records.ts +575 -0
- package/src/compiler/scanner.ts +166 -120
- package/src/compiler/shared-results.ts +3144 -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 +31 -14
- package/src/compiler/syntax-kind.ts +188 -187
- package/src/compiler/thread-entry.ts +22 -3
- 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 +136 -49
- 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 +67 -6
- package/src/compiler/tsc-cli.ts +35 -4
- package/src/compiler/tsc-compile.ts +220 -10
- package/src/compiler/tsc-watch.ts +97 -47
- 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
|
@@ -25,7 +25,7 @@ export function checkResolvedBlockScopedVariable(c, resolved, errorLocation) {
|
|
|
25
25
|
let declaration;
|
|
26
26
|
for (let i = 0; i < declarationCount(result); i++) {
|
|
27
27
|
const d = declarationAt(result, i);
|
|
28
|
-
if (isBlockOrCatchScoped(d) || isClassLike(d) || d.kind ===
|
|
28
|
+
if (isBlockOrCatchScoped(d) || isClassLike(d) || d.kind === 268 /* SyntaxKind.EnumDeclaration */) {
|
|
29
29
|
declaration = d;
|
|
30
30
|
break;
|
|
31
31
|
}
|
|
@@ -37,13 +37,13 @@ export function checkResolvedBlockScopedVariable(c, resolved, errorLocation) {
|
|
|
37
37
|
const declarationName = declarationNameToString(getSourceFileOfNode(declaration), getNameOfDeclaration(declaration));
|
|
38
38
|
let diagnostic = undefined;
|
|
39
39
|
if ((result.flags & 2 /* SymbolFlags.BlockScopedVariable */) !== 0)
|
|
40
|
-
diagnostic = c.error(errorLocation,
|
|
40
|
+
diagnostic = c.error(errorLocation, 623 /* Diagnostics.Block_scoped_variable_0_used_before_its_declaration */, declarationName);
|
|
41
41
|
else if ((result.flags & 32 /* SymbolFlags.Class */) !== 0)
|
|
42
|
-
diagnostic = c.error(errorLocation,
|
|
42
|
+
diagnostic = c.error(errorLocation, 624 /* Diagnostics.Class_0_used_before_its_declaration */, declarationName);
|
|
43
43
|
else if ((result.flags & 256 /* SymbolFlags.RegularEnum */) !== 0 || c.isolatedModules)
|
|
44
|
-
diagnostic = c.error(errorLocation,
|
|
44
|
+
diagnostic = c.error(errorLocation, 625 /* Diagnostics.Enum_0_used_before_its_declaration */, declarationName);
|
|
45
45
|
if (diagnostic !== undefined)
|
|
46
|
-
diagnostic.addRelatedInfo(createDiagnosticForNode(declaration,
|
|
46
|
+
diagnostic.addRelatedInfo(createDiagnosticForNode(declaration, 867 /* Diagnostics.X_0_is_declared_here */, [declarationName]));
|
|
47
47
|
}
|
|
48
48
|
/** Reports a class property read in an initializer before it's initialized. */
|
|
49
49
|
export function checkPropertyNotUsedBeforeDeclaration(c, prop, node, right) {
|
|
@@ -56,33 +56,33 @@ export function checkPropertyNotUsedBeforeDeclaration(c, prop, node, right) {
|
|
|
56
56
|
!isOptionalPropertyDeclaration(valueDeclaration) &&
|
|
57
57
|
!(isAccessExpression(node) && isAccessExpression(getExpression(node))) &&
|
|
58
58
|
!isBlockScopedNameDeclaredBeforeUse(c, valueDeclaration, right) &&
|
|
59
|
-
!(valueDeclaration.kind ===
|
|
59
|
+
!(valueDeclaration.kind === 176 /* SyntaxKind.MethodDeclaration */ && isStatic(valueDeclaration)) &&
|
|
60
60
|
(getUseDefineForClassFields(c) || !isPropertyDeclaredInAncestorClass(c, prop)))
|
|
61
|
-
diagnostic = c.error(right,
|
|
62
|
-
else if (valueDeclaration.kind ===
|
|
63
|
-
node.parent.kind !==
|
|
61
|
+
diagnostic = c.error(right, 868 /* Diagnostics.Property_0_is_used_before_its_initialization */, declarationName);
|
|
62
|
+
else if (valueDeclaration.kind === 265 /* SyntaxKind.ClassDeclaration */ &&
|
|
63
|
+
node.parent.kind !== 185 /* SyntaxKind.TypeReference */ &&
|
|
64
64
|
(valueDeclaration.flags & 8388608 /* NodeFlags.Ambient */) === 0 &&
|
|
65
65
|
!isBlockScopedNameDeclaredBeforeUse(c, valueDeclaration, right))
|
|
66
|
-
diagnostic = c.error(right,
|
|
66
|
+
diagnostic = c.error(right, 624 /* Diagnostics.Class_0_used_before_its_declaration */, declarationName);
|
|
67
67
|
if (diagnostic !== undefined)
|
|
68
|
-
diagnostic.addRelatedInfo(createDiagnosticForNode(valueDeclaration,
|
|
68
|
+
diagnostic.addRelatedInfo(createDiagnosticForNode(valueDeclaration, 867 /* Diagnostics.X_0_is_declared_here */, [declarationName]));
|
|
69
69
|
}
|
|
70
70
|
export function isInPropertyInitializerOrClassStaticBlock(node, ignoreArrowFunctions) {
|
|
71
71
|
for (let current = node; current !== undefined; current = current.parent) {
|
|
72
72
|
switch (current.kind) {
|
|
73
|
-
case
|
|
74
|
-
case
|
|
73
|
+
case 174 /* SyntaxKind.PropertyDeclaration */:
|
|
74
|
+
case 177 /* SyntaxKind.ClassStaticBlockDeclaration */:
|
|
75
75
|
return true;
|
|
76
|
-
case
|
|
77
|
-
case
|
|
76
|
+
case 188 /* SyntaxKind.TypeQuery */:
|
|
77
|
+
case 289 /* SyntaxKind.JsxClosingElement */:
|
|
78
78
|
return false;
|
|
79
|
-
case
|
|
79
|
+
case 221 /* SyntaxKind.ArrowFunction */:
|
|
80
80
|
if (!ignoreArrowFunctions)
|
|
81
81
|
return false;
|
|
82
82
|
break;
|
|
83
|
-
case
|
|
83
|
+
case 243 /* SyntaxKind.Block */: {
|
|
84
84
|
const parent = current.parent;
|
|
85
|
-
if (isFunctionLike(parent) && parent.kind !==
|
|
85
|
+
if (isFunctionLike(parent) && parent.kind !== 221 /* SyntaxKind.ArrowFunction */)
|
|
86
86
|
return false;
|
|
87
87
|
}
|
|
88
88
|
}
|
|
@@ -90,7 +90,7 @@ export function isInPropertyInitializerOrClassStaticBlock(node, ignoreArrowFunct
|
|
|
90
90
|
return false;
|
|
91
91
|
}
|
|
92
92
|
function isOptionalPropertyDeclaration(node) {
|
|
93
|
-
if (node.kind !==
|
|
93
|
+
if (node.kind !== 174 /* SyntaxKind.PropertyDeclaration */)
|
|
94
94
|
return false;
|
|
95
95
|
const postfix = getPostfixToken(node);
|
|
96
96
|
return postfix !== undefined && postfix.kind === 57 /* SyntaxKind.QuestionToken */;
|
|
@@ -120,25 +120,25 @@ export function isBlockScopedNameDeclaredBeforeUse(c, declaration, usage) {
|
|
|
120
120
|
if ((usage.flags & 4194304 /* NodeFlags.JSDoc */) !== 0 || isPartOfTypeQuery(usage) || isInAmbientOrTypeNode(usage))
|
|
121
121
|
return true;
|
|
122
122
|
if (declaration.pos <= usage.pos &&
|
|
123
|
-
!(declaration.kind ===
|
|
123
|
+
!(declaration.kind === 174 /* SyntaxKind.PropertyDeclaration */ &&
|
|
124
124
|
isThisProperty(usage.parent) &&
|
|
125
125
|
getInitializer(declaration) === undefined &&
|
|
126
126
|
declaration.postfixToken?.kind !== 53 /* SyntaxKind.ExclamationToken */)) {
|
|
127
|
-
if (declaration.kind ===
|
|
127
|
+
if (declaration.kind === 210 /* SyntaxKind.BindingElement */) {
|
|
128
128
|
// Binding elements may use earlier siblings only (`var [a = b, b = b] = ...` is an error).
|
|
129
|
-
const errorBindingElement = findAncestorOfKind(usage,
|
|
129
|
+
const errorBindingElement = findAncestorOfKind(usage, 210 /* SyntaxKind.BindingElement */);
|
|
130
130
|
if (errorBindingElement !== undefined)
|
|
131
|
-
return (findAncestorOfKind(errorBindingElement,
|
|
132
|
-
findAncestorOfKind(declaration,
|
|
131
|
+
return (findAncestorOfKind(errorBindingElement, 210 /* SyntaxKind.BindingElement */) !==
|
|
132
|
+
findAncestorOfKind(declaration, 210 /* SyntaxKind.BindingElement */) || declaration.pos < errorBindingElement.pos);
|
|
133
133
|
// `var [a] = a` uses the variable before its declaration.
|
|
134
|
-
return isBlockScopedNameDeclaredBeforeUse(c, findAncestorOfKind(declaration,
|
|
134
|
+
return isBlockScopedNameDeclaredBeforeUse(c, findAncestorOfKind(declaration, 262 /* SyntaxKind.VariableDeclaration */), usage);
|
|
135
135
|
}
|
|
136
|
-
if (declaration.kind ===
|
|
136
|
+
if (declaration.kind === 262 /* SyntaxKind.VariableDeclaration */)
|
|
137
137
|
// `var a = a` uses the variable in its own initializer.
|
|
138
138
|
return !isImmediatelyUsedInInitializerOfBlockScopedVariable(declaration, usage, declContainer);
|
|
139
139
|
if (isClassLike(declaration))
|
|
140
140
|
return !isUsedInClassComputedNameOrDecorator(c, declaration, usage);
|
|
141
|
-
if (declaration.kind ===
|
|
141
|
+
if (declaration.kind === 174 /* SyntaxKind.PropertyDeclaration */)
|
|
142
142
|
// A self-referencing property initializer, as in `x = this.x`.
|
|
143
143
|
return !isPropertyImmediatelyReferencedWithinDeclaration(declaration, usage, false);
|
|
144
144
|
if (isParameterPropertyDeclaration(declaration, declaration.parent))
|
|
@@ -151,12 +151,12 @@ export function isBlockScopedNameDeclaredBeforeUse(c, declaration, usage) {
|
|
|
151
151
|
// Uses after the declaration are legal when deferred: in export specifiers and `export =`,
|
|
152
152
|
// functions, and instance property initializers referencing other members.
|
|
153
153
|
const parent = usage.parent;
|
|
154
|
-
if (parent.kind ===
|
|
154
|
+
if (parent.kind === 283 /* SyntaxKind.ExportSpecifier */ || isExportEquals(parent) || isExportEquals(usage))
|
|
155
155
|
return true;
|
|
156
156
|
if (isUsedInFunctionOrInstanceProperty(c, usage, declaration, declContainer)) {
|
|
157
157
|
if (getEmitStandardClassFields(c) &&
|
|
158
158
|
getContainingClass(declaration) !== undefined &&
|
|
159
|
-
(declaration.kind ===
|
|
159
|
+
(declaration.kind === 174 /* SyntaxKind.PropertyDeclaration */ ||
|
|
160
160
|
isParameterPropertyDeclaration(declaration, declaration.parent)))
|
|
161
161
|
return !isPropertyImmediatelyReferencedWithinDeclaration(declaration, usage, true);
|
|
162
162
|
return true;
|
|
@@ -164,7 +164,7 @@ export function isBlockScopedNameDeclaredBeforeUse(c, declaration, usage) {
|
|
|
164
164
|
return false;
|
|
165
165
|
}
|
|
166
166
|
function isExportEquals(node) {
|
|
167
|
-
return node.kind ===
|
|
167
|
+
return node.kind === 279 /* SyntaxKind.ExportAssignment */ && node.isExportEquals;
|
|
168
168
|
}
|
|
169
169
|
/**
|
|
170
170
|
* Whether a use of a class within its own declaration happens before the class exists: in a
|
|
@@ -174,24 +174,24 @@ function isUsedInClassComputedNameOrDecorator(c, declaration, usage) {
|
|
|
174
174
|
const legacyDecorators = c.compilerOptions.experimentalDecorators === true;
|
|
175
175
|
let container = usage;
|
|
176
176
|
while (container !== undefined && container !== declaration) {
|
|
177
|
-
if (container.kind ===
|
|
177
|
+
if (container.kind === 169 /* SyntaxKind.ComputedPropertyName */ && container.parent.parent === declaration)
|
|
178
178
|
break;
|
|
179
|
-
if (!legacyDecorators && container.kind ===
|
|
179
|
+
if (!legacyDecorators && container.kind === 172 /* SyntaxKind.Decorator */) {
|
|
180
180
|
const decorated = container.parent;
|
|
181
181
|
if (decorated === declaration ||
|
|
182
|
-
((decorated.kind ===
|
|
183
|
-
decorated.kind ===
|
|
184
|
-
decorated.kind ===
|
|
185
|
-
decorated.kind ===
|
|
182
|
+
((decorated.kind === 176 /* SyntaxKind.MethodDeclaration */ ||
|
|
183
|
+
decorated.kind === 179 /* SyntaxKind.GetAccessor */ ||
|
|
184
|
+
decorated.kind === 180 /* SyntaxKind.SetAccessor */ ||
|
|
185
|
+
decorated.kind === 174 /* SyntaxKind.PropertyDeclaration */) &&
|
|
186
186
|
decorated.parent === declaration) ||
|
|
187
|
-
(decorated.kind ===
|
|
187
|
+
(decorated.kind === 171 /* SyntaxKind.Parameter */ && decorated.parent.parent === declaration))
|
|
188
188
|
break;
|
|
189
189
|
}
|
|
190
190
|
container = container.parent;
|
|
191
191
|
}
|
|
192
192
|
if (container === undefined || container === declaration)
|
|
193
193
|
return false;
|
|
194
|
-
if (!legacyDecorators && container.kind ===
|
|
194
|
+
if (!legacyDecorators && container.kind === 172 /* SyntaxKind.Decorator */) {
|
|
195
195
|
let n = usage;
|
|
196
196
|
while (n !== undefined && n !== container) {
|
|
197
197
|
if (isFunctionLike(n) && getImmediatelyInvokedFunctionExpression(n) === undefined)
|
|
@@ -215,36 +215,36 @@ function isInAmbientOrTypeNode(node) {
|
|
|
215
215
|
if ((node.flags & 8388608 /* NodeFlags.Ambient */) !== 0)
|
|
216
216
|
return true;
|
|
217
217
|
for (let current = node; current !== undefined; current = current.parent)
|
|
218
|
-
if (current.kind ===
|
|
219
|
-
current.kind ===
|
|
220
|
-
current.kind ===
|
|
218
|
+
if (current.kind === 266 /* SyntaxKind.InterfaceDeclaration */ ||
|
|
219
|
+
current.kind === 267 /* SyntaxKind.TypeAliasDeclaration */ ||
|
|
220
|
+
current.kind === 189 /* SyntaxKind.TypeLiteral */)
|
|
221
221
|
return true;
|
|
222
222
|
return false;
|
|
223
223
|
}
|
|
224
224
|
export function getEnclosingBlockScopeContainer(node) {
|
|
225
225
|
for (let current = node.parent; current !== undefined; current = current.parent) {
|
|
226
226
|
switch (current.kind) {
|
|
227
|
-
case
|
|
228
|
-
case
|
|
229
|
-
case
|
|
230
|
-
case
|
|
231
|
-
case
|
|
232
|
-
case
|
|
233
|
-
case
|
|
234
|
-
case
|
|
235
|
-
case
|
|
236
|
-
case
|
|
237
|
-
case
|
|
238
|
-
case
|
|
239
|
-
case
|
|
240
|
-
case
|
|
241
|
-
case
|
|
242
|
-
case
|
|
227
|
+
case 308 /* SyntaxKind.SourceFile */:
|
|
228
|
+
case 271 /* SyntaxKind.CaseBlock */:
|
|
229
|
+
case 301 /* SyntaxKind.CatchClause */:
|
|
230
|
+
case 269 /* SyntaxKind.ModuleDeclaration */:
|
|
231
|
+
case 250 /* SyntaxKind.ForStatement */:
|
|
232
|
+
case 251 /* SyntaxKind.ForInStatement */:
|
|
233
|
+
case 252 /* SyntaxKind.ForOfStatement */:
|
|
234
|
+
case 178 /* SyntaxKind.Constructor */:
|
|
235
|
+
case 176 /* SyntaxKind.MethodDeclaration */:
|
|
236
|
+
case 179 /* SyntaxKind.GetAccessor */:
|
|
237
|
+
case 180 /* SyntaxKind.SetAccessor */:
|
|
238
|
+
case 264 /* SyntaxKind.FunctionDeclaration */:
|
|
239
|
+
case 220 /* SyntaxKind.FunctionExpression */:
|
|
240
|
+
case 221 /* SyntaxKind.ArrowFunction */:
|
|
241
|
+
case 174 /* SyntaxKind.PropertyDeclaration */:
|
|
242
|
+
case 177 /* SyntaxKind.ClassStaticBlockDeclaration */:
|
|
243
243
|
return current;
|
|
244
|
-
case
|
|
244
|
+
case 243 /* SyntaxKind.Block */: {
|
|
245
245
|
// Function bodies aren't block scope containers of their own.
|
|
246
246
|
const parent = current.parent;
|
|
247
|
-
if (!isFunctionLike(parent) && parent.kind !==
|
|
247
|
+
if (!isFunctionLike(parent) && parent.kind !== 177 /* SyntaxKind.ClassStaticBlockDeclaration */)
|
|
248
248
|
return current;
|
|
249
249
|
}
|
|
250
250
|
}
|
|
@@ -260,25 +260,25 @@ function isUsedInFunctionOrInstanceProperty(c, usage, declaration, declContainer
|
|
|
260
260
|
return true;
|
|
261
261
|
continue;
|
|
262
262
|
}
|
|
263
|
-
if (current.kind ===
|
|
263
|
+
if (current.kind === 177 /* SyntaxKind.ClassStaticBlockDeclaration */) {
|
|
264
264
|
if (declaration.pos < usage.pos)
|
|
265
265
|
return true;
|
|
266
266
|
continue;
|
|
267
267
|
}
|
|
268
268
|
const parent = current.parent;
|
|
269
|
-
if (parent !== undefined && parent.kind ===
|
|
269
|
+
if (parent !== undefined && parent.kind === 174 /* SyntaxKind.PropertyDeclaration */ && getInitializer(parent) === current) {
|
|
270
270
|
if (isStatic(parent)) {
|
|
271
|
-
if (declaration.kind ===
|
|
271
|
+
if (declaration.kind === 176 /* SyntaxKind.MethodDeclaration */)
|
|
272
272
|
return true;
|
|
273
273
|
// A static property assigned in a static block before the initializer.
|
|
274
|
-
if (declaration.kind ===
|
|
274
|
+
if (declaration.kind === 174 /* SyntaxKind.PropertyDeclaration */ &&
|
|
275
275
|
getContainingClass(usage) === getContainingClass(declaration)) {
|
|
276
276
|
const propName = getName(declaration);
|
|
277
277
|
if (propName.kind === 79 /* SyntaxKind.Identifier */ || propName.kind === 80 /* SyntaxKind.PrivateIdentifier */) {
|
|
278
278
|
const symbol = getSymbolOfDeclaration(c, declaration);
|
|
279
279
|
const staticBlocks = [];
|
|
280
280
|
for (const m of getMembers(declaration.parent).nodes)
|
|
281
|
-
if (m.kind ===
|
|
281
|
+
if (m.kind === 177 /* SyntaxKind.ClassStaticBlockDeclaration */)
|
|
282
282
|
staticBlocks.push(m);
|
|
283
283
|
if (symbol !== undefined &&
|
|
284
284
|
isPropertyInitializedInStaticBlocks(c, propName, getTypeOfSymbol(c, symbol), staticBlocks, declaration.parent.pos, current.pos))
|
|
@@ -287,16 +287,16 @@ function isUsedInFunctionOrInstanceProperty(c, usage, declaration, declContainer
|
|
|
287
287
|
}
|
|
288
288
|
}
|
|
289
289
|
else {
|
|
290
|
-
const isDeclarationInstanceProperty = declaration.kind ===
|
|
290
|
+
const isDeclarationInstanceProperty = declaration.kind === 174 /* SyntaxKind.PropertyDeclaration */ && !isStatic(declaration);
|
|
291
291
|
if (!isDeclarationInstanceProperty || getContainingClass(usage) !== getContainingClass(declaration))
|
|
292
292
|
return true;
|
|
293
293
|
}
|
|
294
294
|
}
|
|
295
|
-
if (parent !== undefined && parent.kind ===
|
|
295
|
+
if (parent !== undefined && parent.kind === 172 /* SyntaxKind.Decorator */ && getExpression(parent) === current) {
|
|
296
296
|
const decorated = parent.parent;
|
|
297
|
-
if (decorated.kind ===
|
|
297
|
+
if (decorated.kind === 171 /* SyntaxKind.Parameter */)
|
|
298
298
|
return isUsedInFunctionOrInstanceProperty(c, decorated.parent.parent, declaration, declContainer);
|
|
299
|
-
if (decorated.kind ===
|
|
299
|
+
if (decorated.kind === 176 /* SyntaxKind.MethodDeclaration */)
|
|
300
300
|
return isUsedInFunctionOrInstanceProperty(c, decorated.parent, declaration, declContainer);
|
|
301
301
|
}
|
|
302
302
|
}
|
|
@@ -305,15 +305,15 @@ function isUsedInFunctionOrInstanceProperty(c, usage, declaration, declContainer
|
|
|
305
305
|
function isImmediatelyUsedInInitializerOfBlockScopedVariable(declaration, usage, declContainer) {
|
|
306
306
|
const grandparent = declaration.parent.parent;
|
|
307
307
|
switch (grandparent.kind) {
|
|
308
|
-
case
|
|
309
|
-
case
|
|
310
|
-
case
|
|
308
|
+
case 245 /* SyntaxKind.VariableStatement */:
|
|
309
|
+
case 250 /* SyntaxKind.ForStatement */:
|
|
310
|
+
case 252 /* SyntaxKind.ForOfStatement */:
|
|
311
311
|
// The use is within the declaration: its initializer or a binding element.
|
|
312
312
|
if (isSameScopeDescendentOf(usage, declaration, declContainer))
|
|
313
313
|
return true;
|
|
314
314
|
}
|
|
315
315
|
// In `for (... in/of expr)`, the use is within the expression.
|
|
316
|
-
return ((grandparent.kind ===
|
|
316
|
+
return ((grandparent.kind === 251 /* SyntaxKind.ForInStatement */ || grandparent.kind === 252 /* SyntaxKind.ForOfStatement */) &&
|
|
317
317
|
isSameScopeDescendentOf(usage, getExpression(grandparent), declContainer));
|
|
318
318
|
}
|
|
319
319
|
/** Whether `initial` is within `parent` without crossing `stopAt` or a function that isn't an IIFE. */
|
|
@@ -337,19 +337,19 @@ function isPropertyImmediatelyReferencedWithinDeclaration(declaration, usage, st
|
|
|
337
337
|
return false;
|
|
338
338
|
for (let node = usage; node !== undefined && node !== declaration; node = node.parent) {
|
|
339
339
|
switch (node.kind) {
|
|
340
|
-
case
|
|
340
|
+
case 221 /* SyntaxKind.ArrowFunction */:
|
|
341
341
|
return false;
|
|
342
|
-
case
|
|
342
|
+
case 174 /* SyntaxKind.PropertyDeclaration */:
|
|
343
343
|
// Even when stopping at any property declaration, it must be in the same class.
|
|
344
344
|
return (stopAtAnyPropertyDeclaration &&
|
|
345
|
-
((declaration.kind ===
|
|
345
|
+
((declaration.kind === 174 /* SyntaxKind.PropertyDeclaration */ && node.parent === declaration.parent) ||
|
|
346
346
|
(isParameterPropertyDeclaration(declaration, declaration.parent) &&
|
|
347
347
|
node.parent === declaration.parent.parent)));
|
|
348
|
-
case
|
|
348
|
+
case 243 /* SyntaxKind.Block */:
|
|
349
349
|
switch (node.parent.kind) {
|
|
350
|
-
case
|
|
351
|
-
case
|
|
352
|
-
case
|
|
350
|
+
case 176 /* SyntaxKind.MethodDeclaration */:
|
|
351
|
+
case 179 /* SyntaxKind.GetAccessor */:
|
|
352
|
+
case 180 /* SyntaxKind.SetAccessor */:
|
|
353
353
|
return false;
|
|
354
354
|
}
|
|
355
355
|
}
|
|
@@ -5,6 +5,7 @@ export declare function checkVariableStatement(c: Checker, node: Node): void;
|
|
|
5
5
|
export declare function checkVariableDeclarationList(c: Checker, node: Node): void;
|
|
6
6
|
/** Checks a variable, parameter, property or binding element declaration. */
|
|
7
7
|
export declare function checkVariableLikeDeclaration(c: Checker, node: Node): void;
|
|
8
|
+
export declare function isVariableLike(node: Node): boolean;
|
|
8
9
|
export declare function checkFunctionDeclaration(c: Checker, node: Node): void;
|
|
9
10
|
export declare function checkTypeParameter(c: Checker, node: Node): void;
|
|
10
11
|
/** Variance annotations are only allowed on type aliases of object, function, constructor and mapped types. */
|