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
|
@@ -166,7 +166,7 @@ function setValueDeclaration(symbol, node) {
|
|
|
166
166
|
if (current === undefined ||
|
|
167
167
|
(!((node.flags & 8388608 /* NodeFlags.Ambient */) !== 0 && (current.flags & 8388608 /* NodeFlags.Ambient */) === 0) &&
|
|
168
168
|
current.kind !== node.kind &&
|
|
169
|
-
current.kind ===
|
|
169
|
+
current.kind === 269 /* SyntaxKind.ModuleDeclaration */))
|
|
170
170
|
symbol.valueDeclaration = node;
|
|
171
171
|
return true;
|
|
172
172
|
}
|
|
@@ -327,7 +327,7 @@ export class ReferenceResolver {
|
|
|
327
327
|
getReferencedExportContainer(node, prefixLocals) {
|
|
328
328
|
const parent = node.parent;
|
|
329
329
|
const startInDeclarationContainer = parent !== undefined &&
|
|
330
|
-
(parent.kind ===
|
|
330
|
+
(parent.kind === 269 /* SyntaxKind.ModuleDeclaration */ || parent.kind === 268 /* SyntaxKind.EnumDeclaration */) &&
|
|
331
331
|
isSameNode(getName(parent), node);
|
|
332
332
|
let symbol = this.getReferencedValueSymbol(node, startInDeclarationContainer);
|
|
333
333
|
if (symbol === undefined)
|
|
@@ -349,10 +349,10 @@ export class ReferenceResolver {
|
|
|
349
349
|
const valueDeclaration = parentSymbol.valueDeclaration;
|
|
350
350
|
if ((parentSymbol.flags & 512 /* SymbolFlags.ValueModule */) !== 0 &&
|
|
351
351
|
valueDeclaration !== undefined &&
|
|
352
|
-
valueDeclaration.kind ===
|
|
352
|
+
valueDeclaration.kind === 308 /* SyntaxKind.SourceFile */)
|
|
353
353
|
return valueDeclaration === getSourceFileOfNode(node) ? valueDeclaration : undefined;
|
|
354
354
|
for (let current = node.parent; current !== undefined; current = current.parent) {
|
|
355
|
-
if ((current.kind ===
|
|
355
|
+
if ((current.kind === 269 /* SyntaxKind.ModuleDeclaration */ || current.kind === 268 /* SyntaxKind.EnumDeclaration */) &&
|
|
356
356
|
this.getSymbolOfDeclaration(current) === parentSymbol)
|
|
357
357
|
return current;
|
|
358
358
|
}
|
|
@@ -433,28 +433,41 @@ export class ReferenceResolver {
|
|
|
433
433
|
if (imported === undefined || moduleDeclaration === undefined)
|
|
434
434
|
return false;
|
|
435
435
|
const moduleSymbol = this.resolveModuleSpecifier(declaration, getModuleSpecifierOf(moduleDeclaration));
|
|
436
|
-
return moduleSymbol !== undefined && this.isExportedThroughTypeOnlyStar(moduleSymbol, imported
|
|
436
|
+
return moduleSymbol !== undefined && this.isExportedThroughTypeOnlyStar(moduleSymbol, imported);
|
|
437
437
|
}
|
|
438
|
-
/**
|
|
439
|
-
|
|
440
|
-
|
|
438
|
+
/**
|
|
439
|
+
* Whether a module's export `name` comes from another module through an `export type *`, as tsgo's
|
|
440
|
+
* getExportsOfModuleWorker decides: a module reached through a type-only `export *` has its exports marked, and a
|
|
441
|
+
* module reached without one, even if already visited, clears the mark of its own exports.
|
|
442
|
+
*/
|
|
443
|
+
isExportedThroughTypeOnlyStar(moduleSymbol, name) {
|
|
444
|
+
if (name === "default" /* InternalSymbolName.Default */)
|
|
441
445
|
return false;
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
446
|
+
const walk = new TypeOnlyStarWalk(name);
|
|
447
|
+
this.visitExportStars(walk, moduleSymbol, false, false);
|
|
448
|
+
return walk.typeOnly && !walk.nonTypeOnly;
|
|
449
|
+
}
|
|
450
|
+
/** Visits a module of an `export *` walk; returns whether it exports the walk's name. */
|
|
451
|
+
visitExportStars(walk, symbol, starIsTypeOnly, isTypeOnly) {
|
|
452
|
+
const exports = symbol === undefined ? undefined : symbol.exports;
|
|
453
|
+
if (!isTypeOnly && exports !== undefined && exports.has(walk.name))
|
|
454
|
+
walk.nonTypeOnly = true;
|
|
455
|
+
if (symbol === undefined || exports === undefined || walk.visited.has(symbol))
|
|
445
456
|
return false;
|
|
457
|
+
walk.visited.add(symbol);
|
|
458
|
+
let found = exports.has(walk.name);
|
|
446
459
|
const star = exports.get("\uFFFEexport" /* InternalSymbolName.ExportStar */);
|
|
447
|
-
if (star
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
return
|
|
460
|
+
if (star !== undefined)
|
|
461
|
+
for (const declaration of getDeclarations(star)) {
|
|
462
|
+
if (!(declaration instanceof ExportDeclaration))
|
|
463
|
+
continue;
|
|
464
|
+
const target = this.resolveExternalModuleSymbol(this.resolveModuleSpecifier(declaration, declaration.moduleSpecifier));
|
|
465
|
+
if (this.visitExportStars(walk, target, declaration.isTypeOnly, isTypeOnly || declaration.isTypeOnly))
|
|
466
|
+
found = true;
|
|
467
|
+
}
|
|
468
|
+
if (starIsTypeOnly && found)
|
|
469
|
+
walk.typeOnly = true;
|
|
470
|
+
return found;
|
|
458
471
|
}
|
|
459
472
|
/** Whether a symbol is declared in the global scope. */
|
|
460
473
|
isGlobalSymbol(symbol) {
|
|
@@ -605,7 +618,7 @@ export class ReferenceResolver {
|
|
|
605
618
|
}
|
|
606
619
|
if (node instanceof ExportAssignment) {
|
|
607
620
|
const expression = node.expression;
|
|
608
|
-
if (expression.kind === 79 /* SyntaxKind.Identifier */ || expression.kind ===
|
|
621
|
+
if (expression.kind === 79 /* SyntaxKind.Identifier */ || expression.kind === 213 /* SyntaxKind.PropertyAccessExpression */)
|
|
609
622
|
return this.resolveEntityName(expression, 111551 /* SymbolFlags.Value */ | 788968 /* SymbolFlags.Type */ | 1920 /* SymbolFlags.Namespace */, true);
|
|
610
623
|
return getSymbol(node);
|
|
611
624
|
}
|
|
@@ -614,7 +627,7 @@ export class ReferenceResolver {
|
|
|
614
627
|
/** The module an implicit import of `file`, such as the JSX runtime, refers to. */
|
|
615
628
|
resolveImplicitImport(file, name) {
|
|
616
629
|
const specifier = new StringLiteral(name, 0 /* TokenFlags.None */);
|
|
617
|
-
const declaration = new ImportDeclaration(
|
|
630
|
+
const declaration = new ImportDeclaration(274 /* SyntaxKind.ImportDeclaration */, undefined, undefined, specifier, undefined);
|
|
618
631
|
specifier.parent = declaration;
|
|
619
632
|
declaration.parent = file;
|
|
620
633
|
return this.resolveModuleSpecifier(specifier, specifier);
|
|
@@ -698,7 +711,7 @@ export class ReferenceResolver {
|
|
|
698
711
|
const resolved = this.resolveName(name, name.text, meaning | 2097152 /* SymbolFlags.Alias */);
|
|
699
712
|
symbol = resolved === undefined ? undefined : this.getMergedSymbol(resolved);
|
|
700
713
|
}
|
|
701
|
-
else if (name.kind ===
|
|
714
|
+
else if (name.kind === 168 /* SyntaxKind.QualifiedName */ || name.kind === 213 /* SyntaxKind.PropertyAccessExpression */) {
|
|
702
715
|
const left = entityNameLeft(name);
|
|
703
716
|
const right = entityNameRight(name);
|
|
704
717
|
if (left === undefined || !(right instanceof Identifier))
|
|
@@ -730,6 +743,40 @@ export class ReferenceResolver {
|
|
|
730
743
|
return symbol;
|
|
731
744
|
}
|
|
732
745
|
// Constant values
|
|
746
|
+
/**
|
|
747
|
+
* The symbol an entity name expression such as `E.A` refers to as an expression: tsgo takes the symbol its checker
|
|
748
|
+
* resolves the expression to, where each name on the left is a value, so a local `let E` hides a const enum `E`.
|
|
749
|
+
*/
|
|
750
|
+
resolveValueEntityName(name) {
|
|
751
|
+
let symbol;
|
|
752
|
+
if (name instanceof Identifier) {
|
|
753
|
+
const resolved = this.resolveName(name, name.text, 111551 /* SymbolFlags.Value */ | 2097152 /* SymbolFlags.Alias */);
|
|
754
|
+
symbol = resolved === undefined ? undefined : this.getMergedSymbol(resolved);
|
|
755
|
+
}
|
|
756
|
+
else if (name instanceof PropertyAccessExpression) {
|
|
757
|
+
const left = this.resolveValueEntityName(name.expression);
|
|
758
|
+
const right = name.name;
|
|
759
|
+
if (left === undefined || !(right instanceof Identifier))
|
|
760
|
+
return undefined;
|
|
761
|
+
let member = left.exports === undefined ? undefined : left.exports.get(right.text);
|
|
762
|
+
// A namespace merged with an alias also has the members of what the alias names, as its type does.
|
|
763
|
+
if (member === undefined && (left.flags & 2097152 /* SymbolFlags.Alias */) !== 0) {
|
|
764
|
+
const target = this.resolveAlias(left);
|
|
765
|
+
const targetExports = target === undefined ? undefined : target.exports;
|
|
766
|
+
if (targetExports !== undefined)
|
|
767
|
+
member = targetExports.get(right.text);
|
|
768
|
+
}
|
|
769
|
+
if (member === undefined || (member.flags & (111551 /* SymbolFlags.Value */ | 2097152 /* SymbolFlags.Alias */)) === 0)
|
|
770
|
+
return undefined;
|
|
771
|
+
symbol = this.getMergedSymbol(member);
|
|
772
|
+
}
|
|
773
|
+
else
|
|
774
|
+
return undefined;
|
|
775
|
+
if (symbol === undefined || (symbol.flags & 2097152 /* SymbolFlags.Alias */) === 0)
|
|
776
|
+
return symbol;
|
|
777
|
+
const target = this.resolveAlias(symbol);
|
|
778
|
+
return target === undefined ? undefined : this.getMergedSymbol(target);
|
|
779
|
+
}
|
|
733
780
|
/** The value of an enum member, computing the values of its whole declaration. */
|
|
734
781
|
getEnumMemberValue(member) {
|
|
735
782
|
const declaration = member.parent;
|
|
@@ -745,12 +792,12 @@ export class ReferenceResolver {
|
|
|
745
792
|
let symbol;
|
|
746
793
|
if (node instanceof PropertyAccessExpression) {
|
|
747
794
|
if (isEntityNameExpressionNode(node))
|
|
748
|
-
symbol = this.
|
|
795
|
+
symbol = this.resolveValueEntityName(node);
|
|
749
796
|
}
|
|
750
797
|
else if (node instanceof ElementAccessExpression) {
|
|
751
798
|
const argument = stringLiteralText(node.argumentExpression);
|
|
752
799
|
if (isEntityNameExpressionNode(node.expression) && argument !== undefined) {
|
|
753
|
-
const root = this.
|
|
800
|
+
const root = this.resolveValueEntityName(node.expression);
|
|
754
801
|
const exports = root === undefined ? undefined : root.exports;
|
|
755
802
|
const member = exports === undefined ? undefined : exports.get(argument);
|
|
756
803
|
if (member !== undefined)
|
|
@@ -1003,7 +1050,7 @@ function isDeclaredBeforeUse(declaration, usage) {
|
|
|
1003
1050
|
if ((usage.flags & (4194304 /* NodeFlags.JSDoc */ | 8388608 /* NodeFlags.Ambient */)) !== 0)
|
|
1004
1051
|
return true;
|
|
1005
1052
|
if (declaration.pos <= usage.pos) {
|
|
1006
|
-
if (declaration.kind ===
|
|
1053
|
+
if (declaration.kind === 210 /* SyntaxKind.BindingElement */) {
|
|
1007
1054
|
const root = getRootDeclaration(declaration);
|
|
1008
1055
|
return root === declaration || isDeclaredBeforeUse(root, usage);
|
|
1009
1056
|
}
|
|
@@ -1033,12 +1080,12 @@ function isInInitializerOf(declaration, usage) {
|
|
|
1033
1080
|
function getDeclarationContainer(node) {
|
|
1034
1081
|
for (let current = getRootDeclaration(node); current !== undefined; current = current.parent) {
|
|
1035
1082
|
switch (current.kind) {
|
|
1036
|
-
case
|
|
1037
|
-
case
|
|
1038
|
-
case
|
|
1039
|
-
case
|
|
1040
|
-
case
|
|
1041
|
-
case
|
|
1083
|
+
case 262 /* SyntaxKind.VariableDeclaration */:
|
|
1084
|
+
case 263 /* SyntaxKind.VariableDeclarationList */:
|
|
1085
|
+
case 278 /* SyntaxKind.ImportSpecifier */:
|
|
1086
|
+
case 277 /* SyntaxKind.NamedImports */:
|
|
1087
|
+
case 276 /* SyntaxKind.NamespaceImport */:
|
|
1088
|
+
case 275 /* SyntaxKind.ImportClause */:
|
|
1042
1089
|
continue;
|
|
1043
1090
|
}
|
|
1044
1091
|
return current.parent;
|
|
@@ -1054,16 +1101,16 @@ function isNonLocalAlias(symbol, excludes) {
|
|
|
1054
1101
|
}
|
|
1055
1102
|
function isAliasSymbolDeclaration(node) {
|
|
1056
1103
|
switch (node.kind) {
|
|
1057
|
-
case
|
|
1058
|
-
case
|
|
1059
|
-
case
|
|
1060
|
-
case
|
|
1061
|
-
case
|
|
1062
|
-
case
|
|
1104
|
+
case 273 /* SyntaxKind.ImportEqualsDeclaration */:
|
|
1105
|
+
case 272 /* SyntaxKind.NamespaceExportDeclaration */:
|
|
1106
|
+
case 276 /* SyntaxKind.NamespaceImport */:
|
|
1107
|
+
case 282 /* SyntaxKind.NamespaceExport */:
|
|
1108
|
+
case 278 /* SyntaxKind.ImportSpecifier */:
|
|
1109
|
+
case 283 /* SyntaxKind.ExportSpecifier */:
|
|
1063
1110
|
return true;
|
|
1064
|
-
case
|
|
1111
|
+
case 275 /* SyntaxKind.ImportClause */:
|
|
1065
1112
|
return node instanceof ImportClause && node.name !== undefined;
|
|
1066
|
-
case
|
|
1113
|
+
case 279 /* SyntaxKind.ExportAssignment */:
|
|
1067
1114
|
return true;
|
|
1068
1115
|
}
|
|
1069
1116
|
return false;
|
|
@@ -1076,28 +1123,43 @@ export function getDeclarationOfAliasSymbol(symbol) {
|
|
|
1076
1123
|
}
|
|
1077
1124
|
return undefined;
|
|
1078
1125
|
}
|
|
1126
|
+
/** The state of `isExportedThroughTypeOnlyStar`'s walk over the `export *` declarations of modules for one name. */
|
|
1127
|
+
class TypeOnlyStarWalk {
|
|
1128
|
+
name;
|
|
1129
|
+
visited;
|
|
1130
|
+
/** Whether a module reached through a type-only `export *` exports the name. */
|
|
1131
|
+
typeOnly;
|
|
1132
|
+
/** Whether a module reached without one exports the name itself. */
|
|
1133
|
+
nonTypeOnly;
|
|
1134
|
+
constructor(name) {
|
|
1135
|
+
this.name = name;
|
|
1136
|
+
this.visited = new Set();
|
|
1137
|
+
this.typeOnly = false;
|
|
1138
|
+
this.nonTypeOnly = false;
|
|
1139
|
+
}
|
|
1140
|
+
}
|
|
1079
1141
|
function isTypeOnlyAlias(symbol) {
|
|
1080
1142
|
let node = getDeclarationOfAliasSymbol(symbol);
|
|
1081
1143
|
while (node !== undefined) {
|
|
1082
1144
|
switch (node.kind) {
|
|
1083
|
-
case
|
|
1084
|
-
case
|
|
1145
|
+
case 273 /* SyntaxKind.ImportEqualsDeclaration */:
|
|
1146
|
+
case 280 /* SyntaxKind.ExportDeclaration */:
|
|
1085
1147
|
return getIsTypeOnly(node);
|
|
1086
|
-
case
|
|
1148
|
+
case 275 /* SyntaxKind.ImportClause */:
|
|
1087
1149
|
if (node instanceof ImportClause && node.phaseModifier === 156 /* SyntaxKind.TypeKeyword */)
|
|
1088
1150
|
return true;
|
|
1089
1151
|
node = node.parent;
|
|
1090
1152
|
continue;
|
|
1091
|
-
case
|
|
1092
|
-
case
|
|
1153
|
+
case 278 /* SyntaxKind.ImportSpecifier */:
|
|
1154
|
+
case 283 /* SyntaxKind.ExportSpecifier */:
|
|
1093
1155
|
if (getIsTypeOnly(node))
|
|
1094
1156
|
return true;
|
|
1095
1157
|
node = node.parent;
|
|
1096
1158
|
continue;
|
|
1097
|
-
case
|
|
1098
|
-
case
|
|
1099
|
-
case
|
|
1100
|
-
case
|
|
1159
|
+
case 276 /* SyntaxKind.NamespaceImport */:
|
|
1160
|
+
case 282 /* SyntaxKind.NamespaceExport */:
|
|
1161
|
+
case 277 /* SyntaxKind.NamedImports */:
|
|
1162
|
+
case 281 /* SyntaxKind.NamedExports */:
|
|
1101
1163
|
node = node.parent;
|
|
1102
1164
|
continue;
|
|
1103
1165
|
}
|
|
@@ -1107,24 +1169,24 @@ function isTypeOnlyAlias(symbol) {
|
|
|
1107
1169
|
}
|
|
1108
1170
|
function isValueDeclarationKind(kind) {
|
|
1109
1171
|
switch (kind) {
|
|
1110
|
-
case
|
|
1111
|
-
case
|
|
1112
|
-
case
|
|
1113
|
-
case
|
|
1114
|
-
case
|
|
1115
|
-
case
|
|
1116
|
-
case
|
|
1117
|
-
case
|
|
1118
|
-
case
|
|
1119
|
-
case
|
|
1120
|
-
case
|
|
1121
|
-
case
|
|
1122
|
-
case
|
|
1123
|
-
case
|
|
1124
|
-
case
|
|
1125
|
-
case
|
|
1126
|
-
case
|
|
1127
|
-
case
|
|
1172
|
+
case 262 /* SyntaxKind.VariableDeclaration */:
|
|
1173
|
+
case 171 /* SyntaxKind.Parameter */:
|
|
1174
|
+
case 210 /* SyntaxKind.BindingElement */:
|
|
1175
|
+
case 174 /* SyntaxKind.PropertyDeclaration */:
|
|
1176
|
+
case 304 /* SyntaxKind.PropertyAssignment */:
|
|
1177
|
+
case 305 /* SyntaxKind.ShorthandPropertyAssignment */:
|
|
1178
|
+
case 307 /* SyntaxKind.EnumMember */:
|
|
1179
|
+
case 212 /* SyntaxKind.ObjectLiteralExpression */:
|
|
1180
|
+
case 264 /* SyntaxKind.FunctionDeclaration */:
|
|
1181
|
+
case 220 /* SyntaxKind.FunctionExpression */:
|
|
1182
|
+
case 221 /* SyntaxKind.ArrowFunction */:
|
|
1183
|
+
case 265 /* SyntaxKind.ClassDeclaration */:
|
|
1184
|
+
case 233 /* SyntaxKind.ClassExpression */:
|
|
1185
|
+
case 268 /* SyntaxKind.EnumDeclaration */:
|
|
1186
|
+
case 176 /* SyntaxKind.MethodDeclaration */:
|
|
1187
|
+
case 179 /* SyntaxKind.GetAccessor */:
|
|
1188
|
+
case 180 /* SyntaxKind.SetAccessor */:
|
|
1189
|
+
case 269 /* SyntaxKind.ModuleDeclaration */:
|
|
1128
1190
|
return true;
|
|
1129
1191
|
}
|
|
1130
1192
|
return false;
|
|
@@ -4,8 +4,9 @@ import { Block, CatchClause, PrivateIdentifier, getBody, getName, getParameters,
|
|
|
4
4
|
import { ModuleKind, getEmitModuleKind, shouldPreserveConstEnums } from '../options.js';
|
|
5
5
|
import { isPrologueDirective } from '../printer/utilities.js';
|
|
6
6
|
import { AssignmentFactory, convertVariableDeclarationToAssignment, flattenDestructuringAssignment, } from './destructuring.js';
|
|
7
|
+
import { nodeIsDecorated } from './decorator-utilities.js';
|
|
7
8
|
import { Transformer } from './transformer.js';
|
|
8
|
-
import { getInnermostModuleDeclaration, hasDecorators, hasSyntacticModifier, isIdentifierReference, isInstantiatedModule, isParameterPropertyDeclaration, isSameNode, } from './utilities.js';
|
|
9
|
+
import { getInnermostModuleDeclaration, hasDecorators, hasSyntacticModifier, isIdentifierReference, isInstantiatedModule, isParameterPropertyDeclaration, isSameNode, modifierFlagsOf, } from './utilities.js';
|
|
9
10
|
const typeScriptModifiers = 128 /* ModifierFlags.Ambient */ |
|
|
10
11
|
1 /* ModifierFlags.Public */ |
|
|
11
12
|
2 /* ModifierFlags.Private */ |
|
|
@@ -62,21 +63,21 @@ export class RuntimeSyntax extends Transformer {
|
|
|
62
63
|
}
|
|
63
64
|
enterScope(node) {
|
|
64
65
|
switch (node.kind) {
|
|
65
|
-
case
|
|
66
|
+
case 308 /* SyntaxKind.SourceFile */:
|
|
66
67
|
this.currentScope = node;
|
|
67
68
|
if (node instanceof SourceFile)
|
|
68
69
|
this.currentSourceFile = node;
|
|
69
70
|
this.firstDeclarations = undefined;
|
|
70
71
|
break;
|
|
71
|
-
case
|
|
72
|
-
case
|
|
73
|
-
case
|
|
72
|
+
case 271 /* SyntaxKind.CaseBlock */:
|
|
73
|
+
case 270 /* SyntaxKind.ModuleBlock */:
|
|
74
|
+
case 243 /* SyntaxKind.Block */:
|
|
74
75
|
this.currentScope = node;
|
|
75
76
|
this.firstDeclarations = undefined;
|
|
76
77
|
break;
|
|
77
|
-
case
|
|
78
|
-
case
|
|
79
|
-
case
|
|
78
|
+
case 264 /* SyntaxKind.FunctionDeclaration */:
|
|
79
|
+
case 265 /* SyntaxKind.ClassDeclaration */:
|
|
80
|
+
case 245 /* SyntaxKind.VariableStatement */:
|
|
80
81
|
this.recordDeclarationInScope(node);
|
|
81
82
|
break;
|
|
82
83
|
}
|
|
@@ -92,46 +93,46 @@ export class RuntimeSyntax extends Transformer {
|
|
|
92
93
|
case 148 /* SyntaxKind.ReadonlyKeyword */:
|
|
93
94
|
case 164 /* SyntaxKind.OverrideKeyword */:
|
|
94
95
|
return undefined;
|
|
95
|
-
case
|
|
96
|
+
case 268 /* SyntaxKind.EnumDeclaration */:
|
|
96
97
|
if (node instanceof EnumDeclaration)
|
|
97
98
|
return this.visitEnumDeclaration(node);
|
|
98
99
|
break;
|
|
99
|
-
case
|
|
100
|
+
case 269 /* SyntaxKind.ModuleDeclaration */:
|
|
100
101
|
if (node instanceof ModuleDeclaration)
|
|
101
102
|
return this.visitModuleDeclaration(node);
|
|
102
103
|
break;
|
|
103
|
-
case
|
|
104
|
+
case 265 /* SyntaxKind.ClassDeclaration */:
|
|
104
105
|
if (node instanceof ClassDeclaration)
|
|
105
106
|
return this.visitClassDeclaration(node);
|
|
106
107
|
break;
|
|
107
|
-
case
|
|
108
|
+
case 233 /* SyntaxKind.ClassExpression */:
|
|
108
109
|
if (node instanceof ClassExpression)
|
|
109
110
|
return this.factory.updateClassExpression(node, this.visitModifiers(this.extractModifiers(node.modifiers, ~exportDefault)), node.name, undefined, this.visitNodes(node.heritageClauses), this.classMembers(node.members));
|
|
110
111
|
break;
|
|
111
|
-
case
|
|
112
|
+
case 178 /* SyntaxKind.Constructor */:
|
|
112
113
|
if (node instanceof ConstructorDeclaration)
|
|
113
114
|
return this.visitConstructor(node);
|
|
114
115
|
break;
|
|
115
|
-
case
|
|
116
|
+
case 264 /* SyntaxKind.FunctionDeclaration */:
|
|
116
117
|
if (node instanceof FunctionDeclaration)
|
|
117
118
|
return this.visitFunctionDeclaration(node);
|
|
118
119
|
break;
|
|
119
|
-
case
|
|
120
|
+
case 245 /* SyntaxKind.VariableStatement */:
|
|
120
121
|
if (node instanceof VariableStatement)
|
|
121
122
|
return this.visitVariableStatement(node);
|
|
122
123
|
break;
|
|
123
|
-
case
|
|
124
|
-
case
|
|
125
|
-
case
|
|
124
|
+
case 280 /* SyntaxKind.ExportDeclaration */:
|
|
125
|
+
case 274 /* SyntaxKind.ImportDeclaration */:
|
|
126
|
+
case 275 /* SyntaxKind.ImportClause */:
|
|
126
127
|
// ES imports and exports are illegal in a namespace.
|
|
127
128
|
if (this.inNamespaceBody())
|
|
128
129
|
return undefined;
|
|
129
130
|
return this.visitEachChild(node);
|
|
130
|
-
case
|
|
131
|
+
case 273 /* SyntaxKind.ImportEqualsDeclaration */:
|
|
131
132
|
if (node instanceof ImportEqualsDeclaration) {
|
|
132
133
|
const external = node.moduleReference instanceof ExternalModuleReference;
|
|
133
134
|
if (this.currentNamespace !== undefined && this.currentScope !== undefined) {
|
|
134
|
-
const inBlock = this.currentScope.kind ===
|
|
135
|
+
const inBlock = this.currentScope.kind === 243 /* SyntaxKind.Block */;
|
|
135
136
|
if (external !== inBlock)
|
|
136
137
|
return undefined;
|
|
137
138
|
}
|
|
@@ -142,7 +143,7 @@ export class RuntimeSyntax extends Transformer {
|
|
|
142
143
|
if (node instanceof Identifier && isIdentifierReference(node, this.parentNode))
|
|
143
144
|
return this.visitExpressionIdentifier(node);
|
|
144
145
|
return node;
|
|
145
|
-
case
|
|
146
|
+
case 305 /* SyntaxKind.ShorthandPropertyAssignment */:
|
|
146
147
|
if (node instanceof ShorthandPropertyAssignment)
|
|
147
148
|
return this.visitShorthandPropertyAssignment(node);
|
|
148
149
|
break;
|
|
@@ -152,7 +153,7 @@ export class RuntimeSyntax extends Transformer {
|
|
|
152
153
|
inNamespaceBody() {
|
|
153
154
|
return (this.currentNamespace !== undefined &&
|
|
154
155
|
this.currentScope !== undefined &&
|
|
155
|
-
this.currentScope.kind !==
|
|
156
|
+
this.currentScope.kind !== 243 /* SyntaxKind.Block */);
|
|
156
157
|
}
|
|
157
158
|
// Scopes
|
|
158
159
|
recordDeclarationInScope(node) {
|
|
@@ -187,7 +188,7 @@ export class RuntimeSyntax extends Transformer {
|
|
|
187
188
|
}
|
|
188
189
|
isExportOfNamespace(node) {
|
|
189
190
|
return (this.currentNamespace !== undefined &&
|
|
190
|
-
(this.currentScope === undefined || this.currentScope.kind !==
|
|
191
|
+
(this.currentScope === undefined || this.currentScope.kind !== 243 /* SyntaxKind.Block */) &&
|
|
191
192
|
hasSyntacticModifier(node, 32 /* ModifierFlags.Export */));
|
|
192
193
|
}
|
|
193
194
|
// Names
|
|
@@ -463,7 +464,10 @@ export class RuntimeSyntax extends Transformer {
|
|
|
463
464
|
const visitedName = this.visitNode(node.name);
|
|
464
465
|
let name = visitedName instanceof Identifier ? visitedName : undefined;
|
|
465
466
|
if (name === undefined &&
|
|
466
|
-
(exported ||
|
|
467
|
+
(exported ||
|
|
468
|
+
childIsDecorated(this.options.experimentalDecorators === true, node.members) ||
|
|
469
|
+
((modifierFlagsOf(node) & exportDefault) !== exportDefault &&
|
|
470
|
+
nodeIsDecorated(this.options.experimentalDecorators === true, node, undefined, undefined))))
|
|
467
471
|
name = this.factory.createGeneratedNameForNode(node, 0, '', '');
|
|
468
472
|
const updated = this.factory.updateClassDeclaration(node, modifiers, name, undefined, this.visitNodes(node.heritageClauses), this.classMembers(node.members));
|
|
469
473
|
if (!exported)
|
|
@@ -691,9 +695,9 @@ function childIsDecorated(legacy, members) {
|
|
|
691
695
|
return false;
|
|
692
696
|
}
|
|
693
697
|
function hasDecoratedParameter(member) {
|
|
694
|
-
if (member.kind !==
|
|
695
|
-
member.kind !==
|
|
696
|
-
member.kind !==
|
|
698
|
+
if (member.kind !== 176 /* SyntaxKind.MethodDeclaration */ &&
|
|
699
|
+
member.kind !== 180 /* SyntaxKind.SetAccessor */ &&
|
|
700
|
+
member.kind !== 178 /* SyntaxKind.Constructor */)
|
|
697
701
|
return false;
|
|
698
702
|
const parameters = getParameters(member);
|
|
699
703
|
if (parameters === undefined || getBody(member) === undefined)
|
|
@@ -707,11 +711,11 @@ function memberCanBeDecorated(legacy, member) {
|
|
|
707
711
|
if (legacy && getName(member) instanceof PrivateIdentifier)
|
|
708
712
|
return false;
|
|
709
713
|
switch (member.kind) {
|
|
710
|
-
case
|
|
714
|
+
case 174 /* SyntaxKind.PropertyDeclaration */:
|
|
711
715
|
return legacy || !hasSyntacticModifier(member, 64 /* ModifierFlags.Abstract */ | 128 /* ModifierFlags.Ambient */);
|
|
712
|
-
case
|
|
713
|
-
case
|
|
714
|
-
case
|
|
716
|
+
case 179 /* SyntaxKind.GetAccessor */:
|
|
717
|
+
case 180 /* SyntaxKind.SetAccessor */:
|
|
718
|
+
case 176 /* SyntaxKind.MethodDeclaration */:
|
|
715
719
|
return getBody(member) !== undefined;
|
|
716
720
|
}
|
|
717
721
|
return false;
|