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
|
@@ -10,7 +10,6 @@ import { Diagnostic } from './diagnostics.js';
|
|
|
10
10
|
import { getMergedSymbol, getSymbolOfDeclaration } from './checker-symbols.js';
|
|
11
11
|
import { getResolvedSymbol } from './checker-expressions.js';
|
|
12
12
|
import { skipTrivia } from './scanner.js';
|
|
13
|
-
import { getContainingFunctionOrClassStaticBlock } from './checker-grammar.js';
|
|
14
13
|
import { nodeCanBeDecorated } from './checker-decorators.js';
|
|
15
14
|
import { symbolToString } from './type-printer.js';
|
|
16
15
|
import { getLiteralTypeFromPropertyName } from './checker-type-operators.js';
|
|
@@ -31,38 +30,38 @@ function accessKind(node) {
|
|
|
31
30
|
if (parent === undefined)
|
|
32
31
|
return 0 /* AccessKind.Read */;
|
|
33
32
|
switch (parent.kind) {
|
|
34
|
-
case
|
|
35
|
-
case
|
|
33
|
+
case 219 /* SyntaxKind.ParenthesizedExpression */:
|
|
34
|
+
case 211 /* SyntaxKind.ArrayLiteralExpression */:
|
|
36
35
|
return accessKind(parent);
|
|
37
|
-
case
|
|
38
|
-
case
|
|
39
|
-
const operator = parent.kind ===
|
|
36
|
+
case 226 /* SyntaxKind.PrefixUnaryExpression */:
|
|
37
|
+
case 227 /* SyntaxKind.PostfixUnaryExpression */: {
|
|
38
|
+
const operator = parent.kind === 226 /* SyntaxKind.PrefixUnaryExpression */
|
|
40
39
|
? parent.operator
|
|
41
40
|
: parent.operator;
|
|
42
41
|
return operator === 45 /* SyntaxKind.PlusPlusToken */ || operator === 46 /* SyntaxKind.MinusMinusToken */
|
|
43
42
|
? 2 /* AccessKind.ReadWrite */
|
|
44
43
|
: 0 /* AccessKind.Read */;
|
|
45
44
|
}
|
|
46
|
-
case
|
|
45
|
+
case 228 /* SyntaxKind.BinaryExpression */: {
|
|
47
46
|
const binary = parent;
|
|
48
47
|
if (binary.left !== node || !isAssignmentOperator(binary.operatorToken.kind))
|
|
49
48
|
return 0 /* AccessKind.Read */;
|
|
50
49
|
return binary.operatorToken.kind === 63 /* SyntaxKind.EqualsToken */ ? 1 /* AccessKind.Write */ : 2 /* AccessKind.ReadWrite */;
|
|
51
50
|
}
|
|
52
|
-
case
|
|
51
|
+
case 213 /* SyntaxKind.PropertyAccessExpression */:
|
|
53
52
|
return parent.name !== node ? 0 /* AccessKind.Read */ : accessKind(parent);
|
|
54
|
-
case
|
|
53
|
+
case 304 /* SyntaxKind.PropertyAssignment */: {
|
|
55
54
|
const parentAccess = accessKind(parent.parent);
|
|
56
55
|
// In `({ x: name } = { x: 1 })`, the left `x` is a read and `name` a write.
|
|
57
56
|
return node === parent.name ? reverseAccessKind(parentAccess) : parentAccess;
|
|
58
57
|
}
|
|
59
|
-
case
|
|
58
|
+
case 305 /* SyntaxKind.ShorthandPropertyAssignment */:
|
|
60
59
|
// The local variable is the one accessed: public properties aren't checked for use.
|
|
61
60
|
return node === parent.objectAssignmentInitializer
|
|
62
61
|
? 0 /* AccessKind.Read */
|
|
63
62
|
: accessKind(parent.parent);
|
|
64
|
-
case
|
|
65
|
-
case
|
|
63
|
+
case 251 /* SyntaxKind.ForInStatement */:
|
|
64
|
+
case 252 /* SyntaxKind.ForOfStatement */:
|
|
66
65
|
return node === parent.initializer ? 1 /* AccessKind.Write */ : 0 /* AccessKind.Read */;
|
|
67
66
|
}
|
|
68
67
|
return 0 /* AccessKind.Read */;
|
|
@@ -86,7 +85,7 @@ export function isSelfTypeAccess(c, name, parent) {
|
|
|
86
85
|
}
|
|
87
86
|
function isEntityNameExpression(node) {
|
|
88
87
|
let current = node;
|
|
89
|
-
while (current.kind ===
|
|
88
|
+
while (current.kind === 213 /* SyntaxKind.PropertyAccessExpression */) {
|
|
90
89
|
if (getName(current).kind !== 79 /* SyntaxKind.Identifier */)
|
|
91
90
|
return false;
|
|
92
91
|
current = current.expression;
|
|
@@ -95,7 +94,7 @@ function isEntityNameExpression(node) {
|
|
|
95
94
|
}
|
|
96
95
|
function getFirstIdentifierOfExpression(node) {
|
|
97
96
|
let current = node;
|
|
98
|
-
while (current.kind ===
|
|
97
|
+
while (current.kind === 213 /* SyntaxKind.PropertyAccessExpression */)
|
|
99
98
|
current = current.expression;
|
|
100
99
|
return current;
|
|
101
100
|
}
|
|
@@ -129,7 +128,7 @@ export function markPropertyAsReferenced(c, prop, nodeForCheckWriteOnly, isSelfT
|
|
|
129
128
|
}
|
|
130
129
|
/** Marks the property a destructuring name selects from `objectType` as referenced. */
|
|
131
130
|
export function markDestructuredPropertyAsReferenced(c, objectType, name, location, isSelfTypeAccess) {
|
|
132
|
-
if (name.kind ===
|
|
131
|
+
if (name.kind === 208 /* SyntaxKind.ObjectBindingPattern */ || name.kind === 209 /* SyntaxKind.ArrayBindingPattern */)
|
|
133
132
|
return;
|
|
134
133
|
const nameType = getLiteralTypeFromPropertyName(c, name);
|
|
135
134
|
if (nameType === undefined || !isTypeUsableAsPropertyName(nameType))
|
|
@@ -140,13 +139,13 @@ export function markDestructuredPropertyAsReferenced(c, objectType, name, locati
|
|
|
140
139
|
}
|
|
141
140
|
function isFunctionLikeDeclaration(node) {
|
|
142
141
|
switch (node.kind) {
|
|
143
|
-
case
|
|
144
|
-
case
|
|
145
|
-
case
|
|
146
|
-
case
|
|
147
|
-
case
|
|
148
|
-
case
|
|
149
|
-
case
|
|
142
|
+
case 264 /* SyntaxKind.FunctionDeclaration */:
|
|
143
|
+
case 176 /* SyntaxKind.MethodDeclaration */:
|
|
144
|
+
case 178 /* SyntaxKind.Constructor */:
|
|
145
|
+
case 179 /* SyntaxKind.GetAccessor */:
|
|
146
|
+
case 180 /* SyntaxKind.SetAccessor */:
|
|
147
|
+
case 220 /* SyntaxKind.FunctionExpression */:
|
|
148
|
+
case 221 /* SyntaxKind.ArrowFunction */:
|
|
150
149
|
return true;
|
|
151
150
|
}
|
|
152
151
|
return false;
|
|
@@ -171,7 +170,7 @@ class PotentiallyUnusedCollector extends NodeVisitor {
|
|
|
171
170
|
}
|
|
172
171
|
visitNode(node) {
|
|
173
172
|
// The body of a `with` statement isn't checked.
|
|
174
|
-
if (node.kind ===
|
|
173
|
+
if (node.kind === 256 /* SyntaxKind.WithStatement */)
|
|
175
174
|
this.visitNode(getExpression(node));
|
|
176
175
|
else if (!this.isUnchecked(node))
|
|
177
176
|
node.forEachChild(this);
|
|
@@ -180,90 +179,87 @@ class PotentiallyUnusedCollector extends NodeVisitor {
|
|
|
180
179
|
return false;
|
|
181
180
|
}
|
|
182
181
|
/**
|
|
183
|
-
* Whether the checker skips the children of `node`: a
|
|
184
|
-
*
|
|
185
|
-
*
|
|
182
|
+
* Whether the checker skips the children of `node`: a decorator of a declaration that can't be decorated
|
|
183
|
+
* is reported as an error and not checked further. (The expression of a `return` outside a function
|
|
184
|
+
* body, or in a class static block, is still checked.)
|
|
186
185
|
*/
|
|
187
186
|
isUnchecked(node) {
|
|
188
|
-
if (node.kind
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
if (node.kind === 171 /* SyntaxKind.Decorator */) {
|
|
193
|
-
const declaration = node.parent;
|
|
194
|
-
return !nodeCanBeDecorated(this.legacyDecorators, declaration, declaration.parent, declaration.parent?.parent);
|
|
195
|
-
}
|
|
196
|
-
return false;
|
|
187
|
+
if (node.kind !== 172 /* SyntaxKind.Decorator */)
|
|
188
|
+
return false;
|
|
189
|
+
const declaration = node.parent;
|
|
190
|
+
return !nodeCanBeDecorated(this.legacyDecorators, declaration, declaration.parent, declaration.parent?.parent);
|
|
197
191
|
}
|
|
198
192
|
}
|
|
199
193
|
function isPotentiallyUnusedContainer(node) {
|
|
200
194
|
switch (node.kind) {
|
|
201
|
-
case
|
|
195
|
+
case 308 /* SyntaxKind.SourceFile */:
|
|
202
196
|
return isExternalOrCommonJSModule(node);
|
|
203
|
-
case
|
|
204
|
-
case
|
|
205
|
-
case
|
|
206
|
-
case
|
|
207
|
-
case
|
|
197
|
+
case 243 /* SyntaxKind.Block */:
|
|
198
|
+
case 271 /* SyntaxKind.CaseBlock */:
|
|
199
|
+
case 250 /* SyntaxKind.ForStatement */:
|
|
200
|
+
case 251 /* SyntaxKind.ForInStatement */:
|
|
201
|
+
case 252 /* SyntaxKind.ForOfStatement */:
|
|
202
|
+
case 177 /* SyntaxKind.ClassStaticBlockDeclaration */: {
|
|
208
203
|
const locals = getLocals(node);
|
|
209
204
|
return locals !== undefined && locals.size !== 0;
|
|
210
205
|
}
|
|
211
|
-
case
|
|
206
|
+
case 269 /* SyntaxKind.ModuleDeclaration */:
|
|
212
207
|
return getBody(node) !== undefined && !isGlobalScopeAugmentation(node);
|
|
213
|
-
case
|
|
214
|
-
case
|
|
208
|
+
case 267 /* SyntaxKind.TypeAliasDeclaration */:
|
|
209
|
+
case 346 /* SyntaxKind.JSTypeAliasDeclaration */: {
|
|
215
210
|
const type = node.type;
|
|
216
211
|
return type === undefined || type.kind !== 141 /* SyntaxKind.IntrinsicKeyword */;
|
|
217
212
|
}
|
|
218
|
-
case
|
|
219
|
-
case
|
|
220
|
-
case
|
|
221
|
-
case
|
|
222
|
-
case
|
|
223
|
-
case
|
|
224
|
-
case
|
|
225
|
-
case
|
|
226
|
-
case
|
|
227
|
-
case
|
|
228
|
-
case
|
|
229
|
-
case
|
|
230
|
-
case
|
|
231
|
-
case
|
|
232
|
-
case
|
|
233
|
-
case
|
|
213
|
+
case 265 /* SyntaxKind.ClassDeclaration */:
|
|
214
|
+
case 233 /* SyntaxKind.ClassExpression */:
|
|
215
|
+
case 266 /* SyntaxKind.InterfaceDeclaration */:
|
|
216
|
+
case 197 /* SyntaxKind.InferType */:
|
|
217
|
+
case 178 /* SyntaxKind.Constructor */:
|
|
218
|
+
case 220 /* SyntaxKind.FunctionExpression */:
|
|
219
|
+
case 264 /* SyntaxKind.FunctionDeclaration */:
|
|
220
|
+
case 221 /* SyntaxKind.ArrowFunction */:
|
|
221
|
+
case 176 /* SyntaxKind.MethodDeclaration */:
|
|
222
|
+
case 179 /* SyntaxKind.GetAccessor */:
|
|
223
|
+
case 180 /* SyntaxKind.SetAccessor */:
|
|
224
|
+
case 175 /* SyntaxKind.MethodSignature */:
|
|
225
|
+
case 181 /* SyntaxKind.CallSignature */:
|
|
226
|
+
case 182 /* SyntaxKind.ConstructSignature */:
|
|
227
|
+
case 186 /* SyntaxKind.FunctionType */:
|
|
228
|
+
case 187 /* SyntaxKind.ConstructorType */:
|
|
234
229
|
return true;
|
|
235
230
|
}
|
|
236
231
|
return false;
|
|
237
232
|
}
|
|
238
233
|
function checkUnusedIdentifiersOfNode(c, node) {
|
|
239
234
|
switch (node.kind) {
|
|
240
|
-
case
|
|
241
|
-
case
|
|
235
|
+
case 265 /* SyntaxKind.ClassDeclaration */:
|
|
236
|
+
case 233 /* SyntaxKind.ClassExpression */:
|
|
242
237
|
checkUnusedClassMembers(c, node);
|
|
243
238
|
checkUnusedTypeParameters(c, node);
|
|
244
239
|
return;
|
|
245
|
-
case
|
|
246
|
-
case
|
|
247
|
-
case
|
|
248
|
-
case
|
|
249
|
-
case
|
|
250
|
-
case
|
|
251
|
-
case
|
|
240
|
+
case 308 /* SyntaxKind.SourceFile */:
|
|
241
|
+
case 269 /* SyntaxKind.ModuleDeclaration */:
|
|
242
|
+
case 243 /* SyntaxKind.Block */:
|
|
243
|
+
case 271 /* SyntaxKind.CaseBlock */:
|
|
244
|
+
case 250 /* SyntaxKind.ForStatement */:
|
|
245
|
+
case 251 /* SyntaxKind.ForInStatement */:
|
|
246
|
+
case 252 /* SyntaxKind.ForOfStatement */:
|
|
247
|
+
case 177 /* SyntaxKind.ClassStaticBlockDeclaration */:
|
|
252
248
|
checkUnusedLocalsAndParameters(c, node);
|
|
253
249
|
return;
|
|
254
|
-
case
|
|
255
|
-
case
|
|
256
|
-
case
|
|
257
|
-
case
|
|
258
|
-
case
|
|
259
|
-
case
|
|
260
|
-
case
|
|
250
|
+
case 178 /* SyntaxKind.Constructor */:
|
|
251
|
+
case 220 /* SyntaxKind.FunctionExpression */:
|
|
252
|
+
case 264 /* SyntaxKind.FunctionDeclaration */:
|
|
253
|
+
case 221 /* SyntaxKind.ArrowFunction */:
|
|
254
|
+
case 176 /* SyntaxKind.MethodDeclaration */:
|
|
255
|
+
case 179 /* SyntaxKind.GetAccessor */:
|
|
256
|
+
case 180 /* SyntaxKind.SetAccessor */:
|
|
261
257
|
// Parameters are reported on implementations only, not overloads.
|
|
262
258
|
if (getBody(node) !== undefined)
|
|
263
259
|
checkUnusedLocalsAndParameters(c, node);
|
|
264
260
|
checkUnusedTypeParameters(c, node);
|
|
265
261
|
return;
|
|
266
|
-
case
|
|
262
|
+
case 197 /* SyntaxKind.InferType */:
|
|
267
263
|
checkUnusedInferTypeParameter(c, node);
|
|
268
264
|
return;
|
|
269
265
|
}
|
|
@@ -287,21 +283,21 @@ function reportUnused(c, location, kind, diagnostic) {
|
|
|
287
283
|
}
|
|
288
284
|
function reportUnusedVariable(c, location, diagnostic) {
|
|
289
285
|
let current = location;
|
|
290
|
-
while (current.kind ===
|
|
291
|
-
current.kind ===
|
|
292
|
-
current.kind ===
|
|
286
|
+
while (current.kind === 210 /* SyntaxKind.BindingElement */ ||
|
|
287
|
+
current.kind === 208 /* SyntaxKind.ObjectBindingPattern */ ||
|
|
288
|
+
current.kind === 209 /* SyntaxKind.ArrayBindingPattern */)
|
|
293
289
|
current = current.parent;
|
|
294
|
-
reportUnused(c, current, current.kind ===
|
|
290
|
+
reportUnused(c, current, current.kind === 171 /* SyntaxKind.Parameter */ ? 1 /* UnusedKind.Parameter */ : 0 /* UnusedKind.Local */, diagnostic);
|
|
295
291
|
}
|
|
296
292
|
function checkUnusedClassMembers(c, node) {
|
|
297
293
|
for (const member of getMembers(node).nodes) {
|
|
298
294
|
switch (member.kind) {
|
|
299
|
-
case
|
|
300
|
-
case
|
|
301
|
-
case
|
|
302
|
-
case
|
|
295
|
+
case 176 /* SyntaxKind.MethodDeclaration */:
|
|
296
|
+
case 174 /* SyntaxKind.PropertyDeclaration */:
|
|
297
|
+
case 179 /* SyntaxKind.GetAccessor */:
|
|
298
|
+
case 180 /* SyntaxKind.SetAccessor */: {
|
|
303
299
|
// An unused accessor pair is reported on the getter.
|
|
304
|
-
if (member.kind ===
|
|
300
|
+
if (member.kind === 180 /* SyntaxKind.SetAccessor */ && (getSymbol(member).flags & 32768 /* SymbolFlags.GetAccessor */) !== 0)
|
|
305
301
|
break;
|
|
306
302
|
const symbol = getSymbolOfDeclaration(c, member);
|
|
307
303
|
const name = getName(member);
|
|
@@ -309,18 +305,18 @@ function checkUnusedClassMembers(c, node) {
|
|
|
309
305
|
((getModifierFlags(member) & 2 /* ModifierFlags.Private */) !== 0 ||
|
|
310
306
|
(name !== undefined && name.kind === 80 /* SyntaxKind.PrivateIdentifier */)) &&
|
|
311
307
|
(member.flags & 8388608 /* NodeFlags.Ambient */) === 0)
|
|
312
|
-
reportUnused(c, member, 0 /* UnusedKind.Local */, createDiagnosticForNode(name,
|
|
308
|
+
reportUnused(c, member, 0 /* UnusedKind.Local */, createDiagnosticForNode(name, 1309 /* Diagnostics.X_0_is_declared_but_its_value_is_never_read */, [
|
|
313
309
|
symbolToString(c, symbol),
|
|
314
310
|
]));
|
|
315
311
|
break;
|
|
316
312
|
}
|
|
317
|
-
case
|
|
313
|
+
case 178 /* SyntaxKind.Constructor */:
|
|
318
314
|
for (const parameter of getParameters(member).nodes) {
|
|
319
315
|
const symbol = getSymbol(parameter);
|
|
320
316
|
if (symbol !== undefined &&
|
|
321
317
|
!isReferenced(c, symbol) &&
|
|
322
318
|
hasSyntacticModifier(parameter, 2 /* ModifierFlags.Private */))
|
|
323
|
-
reportUnused(c, parameter, 0 /* UnusedKind.Local */, createDiagnosticForNode(getName(parameter),
|
|
319
|
+
reportUnused(c, parameter, 0 /* UnusedKind.Local */, createDiagnosticForNode(getName(parameter), 1314 /* Diagnostics.Property_0_is_declared_but_its_value_is_never_read */, [symbol.name]));
|
|
324
320
|
}
|
|
325
321
|
break;
|
|
326
322
|
}
|
|
@@ -344,14 +340,14 @@ function checkUnusedLocalsAndParameters(c, node) {
|
|
|
344
340
|
continue;
|
|
345
341
|
for (const declaration of getDeclarations(local)) {
|
|
346
342
|
switch (declaration.kind) {
|
|
347
|
-
case
|
|
348
|
-
case
|
|
349
|
-
case
|
|
343
|
+
case 262 /* SyntaxKind.VariableDeclaration */:
|
|
344
|
+
case 171 /* SyntaxKind.Parameter */:
|
|
345
|
+
case 210 /* SyntaxKind.BindingElement */:
|
|
350
346
|
variableParents.add(getRootDeclaration(declaration).parent);
|
|
351
347
|
break;
|
|
352
|
-
case
|
|
353
|
-
case
|
|
354
|
-
case
|
|
348
|
+
case 275 /* SyntaxKind.ImportClause */:
|
|
349
|
+
case 278 /* SyntaxKind.ImportSpecifier */:
|
|
350
|
+
case 276 /* SyntaxKind.NamespaceImport */:
|
|
355
351
|
if (!isIdentifierThatStartsWithUnderscore(getName(declaration))) {
|
|
356
352
|
const importClause = importClauseFromImported(declaration);
|
|
357
353
|
const unuseds = importClauses.get(importClause);
|
|
@@ -362,13 +358,13 @@ function checkUnusedLocalsAndParameters(c, node) {
|
|
|
362
358
|
}
|
|
363
359
|
break;
|
|
364
360
|
default:
|
|
365
|
-
if (declaration.kind !==
|
|
361
|
+
if (declaration.kind !== 170 /* SyntaxKind.TypeParameter */ && !isAmbientModule(declaration))
|
|
366
362
|
reportUnusedLocal(c, declaration, local.name);
|
|
367
363
|
}
|
|
368
364
|
}
|
|
369
365
|
}
|
|
370
366
|
for (const declaration of variableParents) {
|
|
371
|
-
if (declaration.kind ===
|
|
367
|
+
if (declaration.kind === 263 /* SyntaxKind.VariableDeclarationList */)
|
|
372
368
|
reportUnusedVariables(c, declaration, declaration.declarations.nodes);
|
|
373
369
|
else
|
|
374
370
|
reportUnusedVariableDeclarations(c, getParameters(declaration).nodes);
|
|
@@ -378,20 +374,20 @@ function checkUnusedLocalsAndParameters(c, node) {
|
|
|
378
374
|
}
|
|
379
375
|
function reportUnusedLocal(c, node, name) {
|
|
380
376
|
const message = isTypeDeclaration(node)
|
|
381
|
-
?
|
|
382
|
-
:
|
|
377
|
+
? 1360 /* Diagnostics.X_0_is_declared_but_never_used */
|
|
378
|
+
: 1309 /* Diagnostics.X_0_is_declared_but_its_value_is_never_read */;
|
|
383
379
|
reportUnused(c, node, 0 /* UnusedKind.Local */, createDiagnosticForNode(getName(node) ?? node, message, [name]));
|
|
384
380
|
}
|
|
385
381
|
function reportUnusedVariables(c, node, declarations) {
|
|
386
382
|
if (declarations.length > 1 && areUnreferencedVariableDeclarations(c, declarations))
|
|
387
|
-
reportUnusedVariable(c, node, createDiagnosticForNode(node,
|
|
383
|
+
reportUnusedVariable(c, node, createDiagnosticForNode(node, 1363 /* Diagnostics.All_variables_are_unused */, []));
|
|
388
384
|
else
|
|
389
385
|
reportUnusedVariableDeclarations(c, declarations);
|
|
390
386
|
}
|
|
391
387
|
function reportUnusedBindingElements(c, node) {
|
|
392
388
|
const declarations = getElements(node).nodes;
|
|
393
389
|
if (declarations.length > 1 && areUnreferencedVariableDeclarations(c, declarations))
|
|
394
|
-
reportUnusedVariable(c, node, createDiagnosticForNode(node,
|
|
390
|
+
reportUnusedVariable(c, node, createDiagnosticForNode(node, 1362 /* Diagnostics.All_destructured_elements_are_unused */, []));
|
|
395
391
|
else
|
|
396
392
|
reportUnusedVariableDeclarations(c, declarations);
|
|
397
393
|
}
|
|
@@ -402,14 +398,14 @@ function reportUnusedVariableDeclarations(c, declarations) {
|
|
|
402
398
|
isParameterPropertyDeclaration(declaration, declaration.parent) ||
|
|
403
399
|
isThisParameter(declaration))
|
|
404
400
|
continue;
|
|
405
|
-
if (name.kind ===
|
|
401
|
+
if (name.kind === 208 /* SyntaxKind.ObjectBindingPattern */ || name.kind === 209 /* SyntaxKind.ArrayBindingPattern */)
|
|
406
402
|
reportUnusedBindingElements(c, name);
|
|
407
403
|
else if (isUnreferencedVariableDeclaration(c, declaration))
|
|
408
|
-
reportUnusedVariable(c, declaration, createDiagnosticForNode(name,
|
|
404
|
+
reportUnusedVariable(c, declaration, createDiagnosticForNode(name, 1309 /* Diagnostics.X_0_is_declared_but_its_value_is_never_read */, [getText(name)]));
|
|
409
405
|
}
|
|
410
406
|
}
|
|
411
407
|
function isThisParameter(node) {
|
|
412
|
-
if (node.kind !==
|
|
408
|
+
if (node.kind !== 171 /* SyntaxKind.Parameter */)
|
|
413
409
|
return false;
|
|
414
410
|
const name = getName(node);
|
|
415
411
|
return name !== undefined && name.kind === 79 /* SyntaxKind.Identifier */ && getText(name) === 'this';
|
|
@@ -424,39 +420,39 @@ function isUnreferencedVariableDeclaration(c, node) {
|
|
|
424
420
|
const name = getName(node);
|
|
425
421
|
if (name === undefined)
|
|
426
422
|
return true;
|
|
427
|
-
if (name.kind ===
|
|
423
|
+
if (name.kind === 208 /* SyntaxKind.ObjectBindingPattern */ || name.kind === 209 /* SyntaxKind.ArrayBindingPattern */)
|
|
428
424
|
return areUnreferencedVariableDeclarations(c, getElements(name).nodes);
|
|
429
425
|
if ((referenceKindsOfDeclaration(c, node) & 3 /* SymbolFlags.Variable */) !== 0)
|
|
430
426
|
return false;
|
|
431
427
|
const parent = node.parent;
|
|
432
|
-
if (node.kind ===
|
|
428
|
+
if (node.kind === 210 /* SyntaxKind.BindingElement */ && parent.kind === 208 /* SyntaxKind.ObjectBindingPattern */) {
|
|
433
429
|
// In `{ a, ...b }`, `a` counts as used: it removes a property from `b`.
|
|
434
430
|
const elements = getElements(parent).nodes;
|
|
435
431
|
const lastElement = elements[elements.length - 1];
|
|
436
432
|
if (node !== lastElement && getDotDotDotToken(lastElement) !== undefined)
|
|
437
433
|
return false;
|
|
438
434
|
}
|
|
439
|
-
const underscoreExempt = node.kind ===
|
|
440
|
-
(node.kind ===
|
|
435
|
+
const underscoreExempt = node.kind === 171 /* SyntaxKind.Parameter */ ||
|
|
436
|
+
(node.kind === 262 /* SyntaxKind.VariableDeclaration */ &&
|
|
441
437
|
(isForInOrOfStatement(parent.parent) || (getCombinedNodeFlags(node) & 4 /* NodeFlags.Using */) !== 0)) ||
|
|
442
|
-
(node.kind ===
|
|
443
|
-
!(parent.kind ===
|
|
438
|
+
(node.kind === 210 /* SyntaxKind.BindingElement */ &&
|
|
439
|
+
!(parent.kind === 208 /* SyntaxKind.ObjectBindingPattern */ && getPropertyName(node) === undefined));
|
|
444
440
|
return !(underscoreExempt && isIdentifierThatStartsWithUnderscore(name));
|
|
445
441
|
}
|
|
446
442
|
function isForInOrOfStatement(node) {
|
|
447
|
-
return node.kind ===
|
|
443
|
+
return node.kind === 251 /* SyntaxKind.ForInStatement */ || node.kind === 252 /* SyntaxKind.ForOfStatement */;
|
|
448
444
|
}
|
|
449
445
|
function reportUnusedImports(c, node, unuseds) {
|
|
450
446
|
let declarationCount = node.name !== undefined ? 1 : 0;
|
|
451
447
|
const namedBindings = node.namedBindings;
|
|
452
448
|
if (namedBindings !== undefined) {
|
|
453
|
-
if (namedBindings.kind ===
|
|
449
|
+
if (namedBindings.kind === 276 /* SyntaxKind.NamespaceImport */)
|
|
454
450
|
declarationCount++;
|
|
455
451
|
else
|
|
456
452
|
declarationCount += getElements(namedBindings).nodes.length;
|
|
457
453
|
}
|
|
458
454
|
if (declarationCount > 1 && declarationCount === unuseds.length)
|
|
459
|
-
reportUnused(c, node, 0 /* UnusedKind.Local */, createDiagnosticForNode(node.parent,
|
|
455
|
+
reportUnused(c, node, 0 /* UnusedKind.Local */, createDiagnosticForNode(node.parent, 1356 /* Diagnostics.All_imports_in_import_declaration_are_unused */, []));
|
|
460
456
|
else
|
|
461
457
|
for (const unused of unuseds)
|
|
462
458
|
reportUnusedLocal(c, unused, getText(getName(unused)));
|
|
@@ -466,9 +462,9 @@ function isIdentifierThatStartsWithUnderscore(node) {
|
|
|
466
462
|
}
|
|
467
463
|
function importClauseFromImported(node) {
|
|
468
464
|
switch (node.kind) {
|
|
469
|
-
case
|
|
465
|
+
case 275 /* SyntaxKind.ImportClause */:
|
|
470
466
|
return node;
|
|
471
|
-
case
|
|
467
|
+
case 276 /* SyntaxKind.NamespaceImport */:
|
|
472
468
|
return node.parent;
|
|
473
469
|
}
|
|
474
470
|
return node.parent.parent;
|
|
@@ -476,7 +472,7 @@ function importClauseFromImported(node) {
|
|
|
476
472
|
function checkUnusedInferTypeParameter(c, node) {
|
|
477
473
|
const typeParameter = node.typeParameter;
|
|
478
474
|
if (isUnreferencedTypeParameter(c, typeParameter))
|
|
479
|
-
reportUnused(c, node, 1 /* UnusedKind.Parameter */, createDiagnosticForNode(typeParameter.name,
|
|
475
|
+
reportUnused(c, node, 1 /* UnusedKind.Parameter */, createDiagnosticForNode(typeParameter.name, 1360 /* Diagnostics.X_0_is_declared_but_never_used */, [
|
|
480
476
|
getText(typeParameter.name),
|
|
481
477
|
]));
|
|
482
478
|
}
|
|
@@ -498,12 +494,12 @@ function checkUnusedTypeParameters(c, node) {
|
|
|
498
494
|
const file = getSourceFileOfNode(node);
|
|
499
495
|
const text = file.text;
|
|
500
496
|
const end = Math.min(text.length, skipTrivia(text, typeParameterList.end) + 1);
|
|
501
|
-
reportUnused(c, node, 1 /* UnusedKind.Parameter */, new Diagnostic(file.diagnosticFile(), typeParameterList.pos - 1, end,
|
|
497
|
+
reportUnused(c, node, 1 /* UnusedKind.Parameter */, new Diagnostic(file.diagnosticFile(), typeParameterList.pos - 1, end, 1369 /* Diagnostics.All_type_parameters_are_unused */));
|
|
502
498
|
return;
|
|
503
499
|
}
|
|
504
500
|
for (const typeParameter of typeParameters)
|
|
505
501
|
if (isUnreferencedTypeParameter(c, typeParameter))
|
|
506
|
-
reportUnused(c, node, 1 /* UnusedKind.Parameter */, createDiagnosticForNode(typeParameter,
|
|
502
|
+
reportUnused(c, node, 1 /* UnusedKind.Parameter */, createDiagnosticForNode(typeParameter, 1360 /* Diagnostics.X_0_is_declared_but_never_used */, [
|
|
507
503
|
getText(getName(typeParameter)),
|
|
508
504
|
]));
|
|
509
505
|
}
|
|
@@ -45,7 +45,7 @@ export function isValidIndexKeyType(c, t) {
|
|
|
45
45
|
function isEntityNameExpression(node) {
|
|
46
46
|
if (node.kind === 79 /* SyntaxKind.Identifier */)
|
|
47
47
|
return true;
|
|
48
|
-
if (node.kind ===
|
|
48
|
+
if (node.kind === 213 /* SyntaxKind.PropertyAccessExpression */) {
|
|
49
49
|
const name = getName(node);
|
|
50
50
|
return name !== undefined && name.kind === 79 /* SyntaxKind.Identifier */ && isEntityNameExpression(getExpression(node));
|
|
51
51
|
}
|
|
@@ -53,9 +53,9 @@ function isEntityNameExpression(node) {
|
|
|
53
53
|
}
|
|
54
54
|
function isLateBindableAST(node) {
|
|
55
55
|
let expr;
|
|
56
|
-
if (node.kind ===
|
|
56
|
+
if (node.kind === 169 /* SyntaxKind.ComputedPropertyName */)
|
|
57
57
|
expr = getExpression(node);
|
|
58
|
-
else if (node.kind ===
|
|
58
|
+
else if (node.kind === 214 /* SyntaxKind.ElementAccessExpression */)
|
|
59
59
|
expr = node.argumentExpression;
|
|
60
60
|
return expr !== undefined && isEntityNameExpression(expr);
|
|
61
61
|
}
|
|
@@ -68,7 +68,7 @@ export function hasLateBindableName(c, node) {
|
|
|
68
68
|
export function isLateBindableName(c, name) {
|
|
69
69
|
if (!isLateBindableAST(name))
|
|
70
70
|
return false;
|
|
71
|
-
if (name.kind ===
|
|
71
|
+
if (name.kind === 169 /* SyntaxKind.ComputedPropertyName */)
|
|
72
72
|
return isTypeUsableAsPropertyName(checkComputedPropertyName(c, name));
|
|
73
73
|
return isTypeUsableAsPropertyName(checkExpressionCached(c, name.argumentExpression));
|
|
74
74
|
}
|
|
@@ -78,14 +78,14 @@ export function getLateBindableNameOfDeclaration(node) {
|
|
|
78
78
|
}
|
|
79
79
|
export function hasLateBindableIndexSignature(c, node) {
|
|
80
80
|
const name = getName(node);
|
|
81
|
-
if (name === undefined || !isLateBindableAST(name) || name.kind !==
|
|
81
|
+
if (name === undefined || !isLateBindableAST(name) || name.kind !== 169 /* SyntaxKind.ComputedPropertyName */)
|
|
82
82
|
return false;
|
|
83
83
|
return isTypeAssignableTo(c, checkComputedPropertyName(c, name), c.stringNumberSymbolType);
|
|
84
84
|
}
|
|
85
85
|
/** Whether a declaration's name is a computed name that isn't a literal. */
|
|
86
86
|
export function hasDynamicName(node) {
|
|
87
87
|
const name = getName(node);
|
|
88
|
-
if (name === undefined || name.kind !==
|
|
88
|
+
if (name === undefined || name.kind !== 169 /* SyntaxKind.ComputedPropertyName */)
|
|
89
89
|
return false;
|
|
90
90
|
const e = getExpression(name);
|
|
91
91
|
return !(e.kind === 10 /* SyntaxKind.StringLiteral */ ||
|
|
@@ -98,15 +98,15 @@ export function getFunctionFlags(node) {
|
|
|
98
98
|
return 4 /* FunctionFlags.Invalid */;
|
|
99
99
|
let flags = 0 /* FunctionFlags.Normal */;
|
|
100
100
|
switch (node.kind) {
|
|
101
|
-
case
|
|
102
|
-
case
|
|
103
|
-
case
|
|
101
|
+
case 264 /* SyntaxKind.FunctionDeclaration */:
|
|
102
|
+
case 220 /* SyntaxKind.FunctionExpression */:
|
|
103
|
+
case 176 /* SyntaxKind.MethodDeclaration */:
|
|
104
104
|
if (getAsteriskToken(node) !== undefined)
|
|
105
105
|
flags |= 1 /* FunctionFlags.Generator */;
|
|
106
106
|
if (hasSyntacticModifier(node, 1024 /* ModifierFlags.Async */))
|
|
107
107
|
flags |= 2 /* FunctionFlags.Async */;
|
|
108
108
|
break;
|
|
109
|
-
case
|
|
109
|
+
case 221 /* SyntaxKind.ArrowFunction */:
|
|
110
110
|
if (hasSyntacticModifier(node, 1024 /* ModifierFlags.Async */))
|
|
111
111
|
flags |= 2 /* FunctionFlags.Async */;
|
|
112
112
|
break;
|
|
@@ -117,7 +117,7 @@ export function getFunctionFlags(node) {
|
|
|
117
117
|
}
|
|
118
118
|
export function isBindingPattern(node) {
|
|
119
119
|
return (node !== undefined &&
|
|
120
|
-
(node.kind ===
|
|
120
|
+
(node.kind === 208 /* SyntaxKind.ObjectBindingPattern */ || node.kind === 209 /* SyntaxKind.ArrayBindingPattern */));
|
|
121
121
|
}
|
|
122
122
|
/** The index of the node with `node`'s range among `nodes`, which are in source order; -1 if none. */
|
|
123
123
|
export function indexOfNode(nodes, node) {
|