tsc-ts 0.0.3 → 0.0.5
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 +46 -0
- package/dist/api/compiler/ast-utilities.d.ts +82 -0
- package/dist/api/compiler/ast-utilities.js +462 -0
- package/dist/api/compiler/ast.d.ts +2350 -0
- package/dist/api/compiler/ast.js +11206 -0
- package/dist/api/compiler/astnav.d.ts +37 -0
- package/dist/api/compiler/astnav.js +767 -0
- package/dist/api/compiler/binder-utilities.d.ts +182 -0
- package/dist/api/compiler/binder-utilities.js +1240 -0
- package/dist/api/compiler/binder.d.ts +33 -0
- package/dist/api/compiler/binder.js +2358 -0
- package/dist/api/compiler/character-codes.d.ts +161 -0
- package/dist/api/compiler/character-codes.js +160 -0
- package/dist/api/compiler/checker-calls.d.ts +46 -0
- package/dist/api/compiler/checker-calls.js +1640 -0
- package/dist/api/compiler/checker-classes.d.ts +30 -0
- package/dist/api/compiler/checker-classes.js +582 -0
- package/dist/api/compiler/checker-contextual.d.ts +77 -0
- package/dist/api/compiler/checker-contextual.js +1136 -0
- package/dist/api/compiler/checker-declaration-order.d.ts +12 -0
- package/dist/api/compiler/checker-declaration-order.js +356 -0
- package/dist/api/compiler/checker-declarations.d.ts +33 -0
- package/dist/api/compiler/checker-declarations.js +888 -0
- package/dist/api/compiler/checker-declared-types.d.ts +48 -0
- package/dist/api/compiler/checker-declared-types.js +787 -0
- package/dist/api/compiler/checker-decorators.d.ts +26 -0
- package/dist/api/compiler/checker-decorators.js +562 -0
- package/dist/api/compiler/checker-deprecation.d.ts +33 -0
- package/dist/api/compiler/checker-deprecation.js +315 -0
- package/dist/api/compiler/checker-destructuring.d.ts +34 -0
- package/dist/api/compiler/checker-destructuring.js +584 -0
- package/dist/api/compiler/checker-elaboration.d.ts +15 -0
- package/dist/api/compiler/checker-elaboration.js +290 -0
- package/dist/api/compiler/checker-emit-helpers.d.ts +58 -0
- package/dist/api/compiler/checker-emit-helpers.js +154 -0
- package/dist/api/compiler/checker-emit-resolver.d.ts +75 -0
- package/dist/api/compiler/checker-emit-resolver.js +579 -0
- package/dist/api/compiler/checker-evaluator.d.ts +27 -0
- package/dist/api/compiler/checker-evaluator.js +188 -0
- package/dist/api/compiler/checker-expressions.d.ts +67 -0
- package/dist/api/compiler/checker-expressions.js +1351 -0
- package/dist/api/compiler/checker-features.d.ts +6 -0
- package/dist/api/compiler/checker-features.js +354 -0
- package/dist/api/compiler/checker-flow.d.ts +86 -0
- package/dist/api/compiler/checker-flow.js +169 -0
- package/dist/api/compiler/checker-functions.d.ts +43 -0
- package/dist/api/compiler/checker-functions.js +1002 -0
- package/dist/api/compiler/checker-generated-code.d.ts +25 -0
- package/dist/api/compiler/checker-generated-code.js +168 -0
- package/dist/api/compiler/checker-globals.d.ts +14 -0
- package/dist/api/compiler/checker-globals.js +37 -0
- package/dist/api/compiler/checker-grammar.d.ts +35 -0
- package/dist/api/compiler/checker-grammar.js +2573 -0
- package/dist/api/compiler/checker-heritage.d.ts +28 -0
- package/dist/api/compiler/checker-heritage.js +900 -0
- package/dist/api/compiler/checker-inference.d.ts +179 -0
- package/dist/api/compiler/checker-inference.js +2105 -0
- package/dist/api/compiler/checker-iteration.d.ts +115 -0
- package/dist/api/compiler/checker-iteration.js +857 -0
- package/dist/api/compiler/checker-javascript.d.ts +42 -0
- package/dist/api/compiler/checker-javascript.js +441 -0
- package/dist/api/compiler/checker-jsdoc.d.ts +30 -0
- package/dist/api/compiler/checker-jsdoc.js +320 -0
- package/dist/api/compiler/checker-jsx.d.ts +94 -0
- package/dist/api/compiler/checker-jsx.js +1433 -0
- package/dist/api/compiler/checker-literals.d.ts +6 -0
- package/dist/api/compiler/checker-literals.js +43 -0
- package/dist/api/compiler/checker-members.d.ts +198 -0
- package/dist/api/compiler/checker-members.js +2126 -0
- package/dist/api/compiler/checker-modules.d.ts +85 -0
- package/dist/api/compiler/checker-modules.js +2141 -0
- package/dist/api/compiler/checker-narrowing.d.ts +120 -0
- package/dist/api/compiler/checker-narrowing.js +2797 -0
- package/dist/api/compiler/checker-object-literals.d.ts +14 -0
- package/dist/api/compiler/checker-object-literals.js +479 -0
- package/dist/api/compiler/checker-operators.d.ts +33 -0
- package/dist/api/compiler/checker-operators.js +1040 -0
- package/dist/api/compiler/checker-overloads.d.ts +7 -0
- package/dist/api/compiler/checker-overloads.js +270 -0
- package/dist/api/compiler/checker-property-access.d.ts +34 -0
- package/dist/api/compiler/checker-property-access.js +672 -0
- package/dist/api/compiler/checker-services.d.ts +49 -0
- package/dist/api/compiler/checker-services.js +995 -0
- package/dist/api/compiler/checker-signatures.d.ts +55 -0
- package/dist/api/compiler/checker-signatures.js +788 -0
- package/dist/api/compiler/checker-source-file.d.ts +27 -0
- package/dist/api/compiler/checker-source-file.js +619 -0
- package/dist/api/compiler/checker-statements.d.ts +18 -0
- package/dist/api/compiler/checker-statements.js +226 -0
- package/dist/api/compiler/checker-super.d.ts +13 -0
- package/dist/api/compiler/checker-super.js +241 -0
- package/dist/api/compiler/checker-symbol-types.d.ts +67 -0
- package/dist/api/compiler/checker-symbol-types.js +1885 -0
- package/dist/api/compiler/checker-symbols.d.ts +181 -0
- package/dist/api/compiler/checker-symbols.js +1782 -0
- package/dist/api/compiler/checker-type-factory.d.ts +142 -0
- package/dist/api/compiler/checker-type-factory.js +2501 -0
- package/dist/api/compiler/checker-type-nodes.d.ts +26 -0
- package/dist/api/compiler/checker-type-nodes.js +828 -0
- package/dist/api/compiler/checker-type-operators.d.ts +109 -0
- package/dist/api/compiler/checker-type-operators.js +1842 -0
- package/dist/api/compiler/checker-types.d.ts +1027 -0
- package/dist/api/compiler/checker-types.js +1697 -0
- package/dist/api/compiler/checker-unused.d.ts +19 -0
- package/dist/api/compiler/checker-unused.js +524 -0
- package/dist/api/compiler/checker-utilities.d.ts +33 -0
- package/dist/api/compiler/checker-utilities.js +141 -0
- package/dist/api/compiler/checker.d.ts +491 -0
- package/dist/api/compiler/checker.js +912 -0
- package/dist/api/compiler/command-line.d.ts +32 -0
- package/dist/api/compiler/command-line.js +383 -0
- package/dist/api/compiler/compile-program.d.ts +118 -0
- package/dist/api/compiler/compile-program.js +384 -0
- package/dist/api/compiler/diagnostic-locales.d.ts +22 -0
- package/dist/api/compiler/diagnostic-locales.js +64 -0
- package/dist/api/compiler/diagnostic-messages.d.ts +2166 -0
- package/dist/api/compiler/diagnostic-messages.js +184 -0
- package/dist/api/compiler/diagnostics.d.ts +167 -0
- package/dist/api/compiler/diagnostics.js +820 -0
- package/dist/api/compiler/emitter.d.ts +71 -0
- package/dist/api/compiler/emitter.js +327 -0
- package/dist/api/compiler/file-include.d.ts +117 -0
- package/dist/api/compiler/file-include.js +536 -0
- package/dist/api/compiler/file-loader.d.ts +261 -0
- package/dist/api/compiler/file-loader.js +1257 -0
- package/dist/api/compiler/file-system.d.ts +51 -0
- package/dist/api/compiler/file-system.js +132 -0
- package/dist/api/compiler/flow.d.ts +60 -0
- package/dist/api/compiler/flow.js +45 -0
- package/dist/api/compiler/instantiation.d.ts +74 -0
- package/dist/api/compiler/instantiation.js +799 -0
- package/dist/api/compiler/jsdoc.d.ts +75 -0
- package/dist/api/compiler/jsdoc.js +1229 -0
- package/dist/api/compiler/link-tables.d.ts +36 -0
- package/dist/api/compiler/link-tables.js +83 -0
- package/dist/api/compiler/locale-data.d.ts +24 -0
- package/dist/api/compiler/locale-data.js +183 -0
- package/dist/api/compiler/locale.d.ts +4 -0
- package/dist/api/compiler/locale.js +317 -0
- package/dist/api/compiler/locales/cs-CZ.d.ts +2 -0
- package/dist/api/compiler/locales/cs-CZ.js +3 -0
- package/dist/api/compiler/locales/de-DE.d.ts +2 -0
- package/dist/api/compiler/locales/de-DE.js +3 -0
- package/dist/api/compiler/locales/es-ES.d.ts +2 -0
- package/dist/api/compiler/locales/es-ES.js +3 -0
- package/dist/api/compiler/locales/fr-FR.d.ts +2 -0
- package/dist/api/compiler/locales/fr-FR.js +3 -0
- package/dist/api/compiler/locales/it-IT.d.ts +2 -0
- package/dist/api/compiler/locales/it-IT.js +3 -0
- package/dist/api/compiler/locales/ja-JP.d.ts +2 -0
- package/dist/api/compiler/locales/ja-JP.js +3 -0
- package/dist/api/compiler/locales/ko-KR.d.ts +2 -0
- package/dist/api/compiler/locales/ko-KR.js +3 -0
- package/dist/api/compiler/locales/pl-PL.d.ts +2 -0
- package/dist/api/compiler/locales/pl-PL.js +3 -0
- package/dist/api/compiler/locales/pt-BR.d.ts +2 -0
- package/dist/api/compiler/locales/pt-BR.js +3 -0
- package/dist/api/compiler/locales/ru-RU.d.ts +2 -0
- package/dist/api/compiler/locales/ru-RU.js +3 -0
- package/dist/api/compiler/locales/tr-TR.d.ts +2 -0
- package/dist/api/compiler/locales/tr-TR.js +3 -0
- package/dist/api/compiler/locales/zh-CN.d.ts +2 -0
- package/dist/api/compiler/locales/zh-CN.js +3 -0
- package/dist/api/compiler/locales/zh-TW.d.ts +2 -0
- package/dist/api/compiler/locales/zh-TW.js +3 -0
- package/dist/api/compiler/module-resolution-types.d.ts +83 -0
- package/dist/api/compiler/module-resolution-types.js +176 -0
- package/dist/api/compiler/module-resolution.d.ts +71 -0
- package/dist/api/compiler/module-resolution.js +1598 -0
- package/dist/api/compiler/module-specifiers.d.ts +64 -0
- package/dist/api/compiler/module-specifiers.js +1101 -0
- package/dist/api/compiler/name-resolver.d.ts +43 -0
- package/dist/api/compiler/name-resolver.js +509 -0
- package/dist/api/compiler/node-builder-names.d.ts +32 -0
- package/dist/api/compiler/node-builder-names.js +854 -0
- package/dist/api/compiler/node-builder-pseudo.d.ts +36 -0
- package/dist/api/compiler/node-builder-pseudo.js +744 -0
- package/dist/api/compiler/node-builder-reuse.d.ts +4 -0
- package/dist/api/compiler/node-builder-reuse.js +647 -0
- package/dist/api/compiler/node-builder.d.ts +270 -0
- package/dist/api/compiler/node-builder.js +2645 -0
- package/dist/api/compiler/option-declarations.d.ts +90 -0
- package/dist/api/compiler/option-declarations.js +1460 -0
- package/dist/api/compiler/options.d.ts +289 -0
- package/dist/api/compiler/options.js +1197 -0
- package/dist/api/compiler/output-paths.d.ts +42 -0
- package/dist/api/compiler/output-paths.js +195 -0
- package/dist/api/compiler/package-json.d.ts +175 -0
- package/dist/api/compiler/package-json.js +1015 -0
- package/dist/api/compiler/parallel-parse.d.ts +219 -0
- package/dist/api/compiler/parallel-parse.js +537 -0
- package/dist/api/compiler/parser.d.ts +587 -0
- package/dist/api/compiler/parser.js +6407 -0
- package/dist/api/compiler/path.d.ts +91 -0
- package/dist/api/compiler/path.js +705 -0
- package/dist/api/compiler/printer/async-helpers.d.ts +22 -0
- package/dist/api/compiler/printer/async-helpers.js +91 -0
- package/dist/api/compiler/printer/auto-generate.d.ts +13 -0
- package/dist/api/compiler/printer/auto-generate.js +20 -0
- package/dist/api/compiler/printer/decorator-helpers.d.ts +24 -0
- package/dist/api/compiler/printer/decorator-helpers.js +118 -0
- package/dist/api/compiler/printer/emit-context.d.ts +154 -0
- package/dist/api/compiler/printer/emit-context.js +576 -0
- package/dist/api/compiler/printer/emit-flags.d.ts +60 -0
- package/dist/api/compiler/printer/emit-flags.js +2 -0
- package/dist/api/compiler/printer/factory-base.d.ts +171 -0
- package/dist/api/compiler/printer/factory-base.js +1505 -0
- package/dist/api/compiler/printer/factory.d.ts +147 -0
- package/dist/api/compiler/printer/factory.js +542 -0
- package/dist/api/compiler/printer/helpers.d.ts +27 -0
- package/dist/api/compiler/printer/helpers.js +164 -0
- package/dist/api/compiler/printer/name-generator.d.ts +41 -0
- package/dist/api/compiler/printer/name-generator.js +283 -0
- package/dist/api/compiler/printer/printer.d.ts +411 -0
- package/dist/api/compiler/printer/printer.js +4517 -0
- package/dist/api/compiler/printer/text-writer.d.ts +46 -0
- package/dist/api/compiler/printer/text-writer.js +172 -0
- package/dist/api/compiler/printer/utilities.d.ts +82 -0
- package/dist/api/compiler/printer/utilities.js +817 -0
- package/dist/api/compiler/program-checker.d.ts +156 -0
- package/dist/api/compiler/program-checker.js +526 -0
- package/dist/api/compiler/program-utilities.d.ts +52 -0
- package/dist/api/compiler/program-utilities.js +365 -0
- package/dist/api/compiler/program.d.ts +180 -0
- package/dist/api/compiler/program.js +1011 -0
- package/dist/api/compiler/pseudo-bigint.d.ts +5 -0
- package/dist/api/compiler/pseudo-bigint.js +61 -0
- package/dist/api/compiler/regexp-checker.d.ts +38 -0
- package/dist/api/compiler/regexp-checker.js +942 -0
- package/dist/api/compiler/relations.d.ts +263 -0
- package/dist/api/compiler/relations.js +4002 -0
- package/dist/api/compiler/reparser.d.ts +48 -0
- package/dist/api/compiler/reparser.js +1323 -0
- package/dist/api/compiler/scanner.d.ts +256 -0
- package/dist/api/compiler/scanner.js +2853 -0
- package/dist/api/compiler/side-state.d.ts +16 -0
- package/dist/api/compiler/side-state.js +89 -0
- package/dist/api/compiler/sourcemap.d.ts +55 -0
- package/dist/api/compiler/sourcemap.js +340 -0
- package/dist/api/compiler/spelling.d.ts +14 -0
- package/dist/api/compiler/spelling.js +128 -0
- package/dist/api/compiler/symbol-accessibility.d.ts +57 -0
- package/dist/api/compiler/symbol-accessibility.js +894 -0
- package/dist/api/compiler/symbol.d.ts +240 -0
- package/dist/api/compiler/symbol.js +228 -0
- package/dist/api/compiler/symlinks.d.ts +32 -0
- package/dist/api/compiler/symlinks.js +114 -0
- package/dist/api/compiler/syntax-kind.d.ts +389 -0
- package/dist/api/compiler/syntax-kind.js +2 -0
- package/dist/api/compiler/timeline.d.ts +9 -0
- package/dist/api/compiler/timeline.js +54 -0
- package/dist/api/compiler/transformers/alias-references.d.ts +39 -0
- package/dist/api/compiler/transformers/alias-references.js +676 -0
- package/dist/api/compiler/transformers/async-utilities.d.ts +51 -0
- package/dist/api/compiler/transformers/async-utilities.js +260 -0
- package/dist/api/compiler/transformers/async.d.ts +53 -0
- package/dist/api/compiler/transformers/async.js +645 -0
- package/dist/api/compiler/transformers/class-fields.d.ts +206 -0
- package/dist/api/compiler/transformers/class-fields.js +2418 -0
- package/dist/api/compiler/transformers/class-utilities.d.ts +46 -0
- package/dist/api/compiler/transformers/class-utilities.js +261 -0
- package/dist/api/compiler/transformers/commonjs-module.d.ts +103 -0
- package/dist/api/compiler/transformers/commonjs-module.js +1180 -0
- package/dist/api/compiler/transformers/const-enum-inliner.d.ts +11 -0
- package/dist/api/compiler/transformers/const-enum-inliner.js +36 -0
- package/dist/api/compiler/transformers/declarations-diagnostics.d.ts +52 -0
- package/dist/api/compiler/transformers/declarations-diagnostics.js +538 -0
- package/dist/api/compiler/transformers/declarations-pseudo.d.ts +160 -0
- package/dist/api/compiler/transformers/declarations-pseudo.js +797 -0
- package/dist/api/compiler/transformers/declarations-resolver.d.ts +152 -0
- package/dist/api/compiler/transformers/declarations-resolver.js +35 -0
- package/dist/api/compiler/transformers/declarations-syntactic.d.ts +119 -0
- package/dist/api/compiler/transformers/declarations-syntactic.js +1582 -0
- package/dist/api/compiler/transformers/declarations-tracker.d.ts +46 -0
- package/dist/api/compiler/transformers/declarations-tracker.js +197 -0
- package/dist/api/compiler/transformers/declarations.d.ts +175 -0
- package/dist/api/compiler/transformers/declarations.js +2380 -0
- package/dist/api/compiler/transformers/decorator-metadata.d.ts +54 -0
- package/dist/api/compiler/transformers/decorator-metadata.js +554 -0
- package/dist/api/compiler/transformers/decorator-utilities.d.ts +38 -0
- package/dist/api/compiler/transformers/decorator-utilities.js +238 -0
- package/dist/api/compiler/transformers/destructuring.d.ts +25 -0
- package/dist/api/compiler/transformers/destructuring.js +626 -0
- package/dist/api/compiler/transformers/downlevel.d.ts +6 -0
- package/dist/api/compiler/transformers/downlevel.js +45 -0
- package/dist/api/compiler/transformers/emit-resolver.d.ts +61 -0
- package/dist/api/compiler/transformers/emit-resolver.js +197 -0
- package/dist/api/compiler/transformers/es-decorators.d.ts +118 -0
- package/dist/api/compiler/transformers/es-decorators.js +1901 -0
- package/dist/api/compiler/transformers/exponentiation.d.ts +11 -0
- package/dist/api/compiler/transformers/exponentiation.js +76 -0
- package/dist/api/compiler/transformers/external-module-info.d.ts +35 -0
- package/dist/api/compiler/transformers/external-module-info.js +351 -0
- package/dist/api/compiler/transformers/for-await.d.ts +43 -0
- package/dist/api/compiler/transformers/for-await.js +469 -0
- package/dist/api/compiler/transformers/import-elision.d.ts +16 -0
- package/dist/api/compiler/transformers/import-elision.js +124 -0
- package/dist/api/compiler/transformers/jsx-entities.d.ts +1 -0
- package/dist/api/compiler/transformers/jsx-entities.js +256 -0
- package/dist/api/compiler/transformers/jsx.d.ts +71 -0
- package/dist/api/compiler/transformers/jsx.js +700 -0
- package/dist/api/compiler/transformers/legacy-decorators.d.ts +56 -0
- package/dist/api/compiler/transformers/legacy-decorators.js +564 -0
- package/dist/api/compiler/transformers/logical-assignment.d.ts +14 -0
- package/dist/api/compiler/transformers/logical-assignment.js +62 -0
- package/dist/api/compiler/transformers/module-utilities.d.ts +9 -0
- package/dist/api/compiler/transformers/module-utilities.js +36 -0
- package/dist/api/compiler/transformers/module.d.ts +49 -0
- package/dist/api/compiler/transformers/module.js +296 -0
- package/dist/api/compiler/transformers/named-evaluation.d.ts +26 -0
- package/dist/api/compiler/transformers/named-evaluation.js +266 -0
- package/dist/api/compiler/transformers/nullish-coalescing.d.ts +9 -0
- package/dist/api/compiler/transformers/nullish-coalescing.js +26 -0
- package/dist/api/compiler/transformers/object-rest-spread.d.ts +34 -0
- package/dist/api/compiler/transformers/object-rest-spread.js +411 -0
- package/dist/api/compiler/transformers/optional-catch.d.ts +9 -0
- package/dist/api/compiler/transformers/optional-catch.js +20 -0
- package/dist/api/compiler/transformers/optional-chain.d.ts +14 -0
- package/dist/api/compiler/transformers/optional-chain.js +188 -0
- package/dist/api/compiler/transformers/reference-resolver.d.ts +128 -0
- package/dist/api/compiler/transformers/reference-resolver.js +1155 -0
- package/dist/api/compiler/transformers/runtime-syntax.d.ts +71 -0
- package/dist/api/compiler/transformers/runtime-syntax.js +753 -0
- package/dist/api/compiler/transformers/subtree-facts.d.ts +9 -0
- package/dist/api/compiler/transformers/subtree-facts.js +203 -0
- package/dist/api/compiler/transformers/syntax-facts.d.ts +51 -0
- package/dist/api/compiler/transformers/syntax-facts.js +254 -0
- package/dist/api/compiler/transformers/tagged-template.d.ts +17 -0
- package/dist/api/compiler/transformers/tagged-template.js +148 -0
- package/dist/api/compiler/transformers/transformer.d.ts +17 -0
- package/dist/api/compiler/transformers/transformer.js +54 -0
- package/dist/api/compiler/transformers/type-eraser.d.ts +21 -0
- package/dist/api/compiler/transformers/type-eraser.js +346 -0
- package/dist/api/compiler/transformers/type-serialization.d.ts +20 -0
- package/dist/api/compiler/transformers/type-serialization.js +347 -0
- package/dist/api/compiler/transformers/using.d.ts +56 -0
- package/dist/api/compiler/transformers/using.js +453 -0
- package/dist/api/compiler/transformers/utilities.d.ts +50 -0
- package/dist/api/compiler/transformers/utilities.js +347 -0
- package/dist/api/compiler/transformers/visitor-base.d.ts +6 -0
- package/dist/api/compiler/transformers/visitor-base.js +817 -0
- package/dist/api/compiler/transformers/visitor-hooks.d.ts +29 -0
- package/dist/api/compiler/transformers/visitor-hooks.js +189 -0
- package/dist/api/compiler/tsconfig.d.ts +177 -0
- package/dist/api/compiler/tsconfig.js +1311 -0
- package/dist/api/compiler/type-printer.d.ts +15 -0
- package/dist/api/compiler/type-printer.js +74 -0
- package/dist/api/compiler/types.d.ts +87 -0
- package/dist/api/compiler/types.js +23 -0
- package/dist/api/compiler/unicode-identifiers.d.ts +2 -0
- package/dist/api/compiler/unicode-identifiers.js +209 -0
- package/dist/api/compiler/unicode-properties.d.ts +8 -0
- package/dist/api/compiler/unicode-properties.js +531 -0
- package/dist/api/compiler/vfs-match.d.ts +24 -0
- package/dist/api/compiler/vfs-match.js +587 -0
- package/dist/api/library/ast.d.ts +74 -0
- package/dist/api/library/ast.generated.d.ts +1145 -0
- package/dist/api/library/ast.generated.js +3 -0
- package/dist/api/library/ast.js +5 -0
- package/dist/api/library/checker.d.ts +51 -0
- package/dist/api/library/checker.js +318 -0
- package/dist/api/library/compiler-options.generated.d.ts +108 -0
- package/dist/api/library/compiler-options.generated.js +3 -0
- package/dist/api/library/diagnostics.d.ts +13 -0
- package/dist/api/library/diagnostics.js +50 -0
- package/dist/api/library/disk.d.ts +13 -0
- package/dist/api/library/disk.js +66 -0
- package/dist/api/library/enums.generated.d.ts +891 -0
- package/dist/api/library/enums.generated.js +916 -0
- package/dist/api/library/errors.d.ts +13 -0
- package/dist/api/library/errors.js +24 -0
- package/dist/api/library/host.d.ts +24 -0
- package/dist/api/library/host.js +52 -0
- package/dist/api/library/index.d.ts +14 -0
- package/dist/api/library/index.js +15 -0
- package/dist/api/library/nodes.d.ts +51 -0
- package/dist/api/library/nodes.js +196 -0
- package/dist/api/library/options.d.ts +144 -0
- package/dist/api/library/options.js +308 -0
- package/dist/api/library/parse.d.ts +19 -0
- package/dist/api/library/parse.js +41 -0
- package/dist/api/library/program.d.ts +21 -0
- package/dist/api/library/program.js +234 -0
- package/dist/api/library/symbols.d.ts +8 -0
- package/dist/api/library/symbols.js +11 -0
- package/dist/api/library/types.d.ts +313 -0
- package/dist/api/library/types.js +6 -0
- package/package.json +22 -8
- package/src/compiler/ast-utilities.ts +548 -0
- package/src/compiler/ast.ts +12862 -0
- package/src/compiler/astnav.ts +799 -0
- package/src/compiler/binder-utilities.ts +1392 -0
- package/src/compiler/binder.ts +2703 -0
- package/src/compiler/build-info.ts +1197 -0
- package/src/compiler/character-codes.ts +323 -0
- package/src/compiler/checker-calls.ts +2155 -0
- package/src/compiler/checker-classes.ts +706 -0
- package/src/compiler/checker-contextual.ts +1457 -0
- package/src/compiler/checker-declaration-order.ts +438 -0
- package/src/compiler/checker-declarations.ts +1194 -0
- package/src/compiler/checker-declared-types.ts +919 -0
- package/src/compiler/checker-decorators.ts +694 -0
- package/src/compiler/checker-deprecation.ts +359 -0
- package/src/compiler/checker-destructuring.ts +805 -0
- package/src/compiler/checker-elaboration.ts +477 -0
- package/src/compiler/checker-emit-helpers.ts +224 -0
- package/src/compiler/checker-emit-resolver.ts +769 -0
- package/src/compiler/checker-evaluator.ts +243 -0
- package/src/compiler/checker-expressions.ts +1831 -0
- package/src/compiler/checker-features.ts +361 -0
- package/src/compiler/checker-flow.ts +394 -0
- package/src/compiler/checker-functions.ts +1296 -0
- package/src/compiler/checker-generated-code.ts +227 -0
- package/src/compiler/checker-globals.ts +52 -0
- package/src/compiler/checker-grammar.ts +3584 -0
- package/src/compiler/checker-heritage.ts +1233 -0
- package/src/compiler/checker-inference.ts +2576 -0
- package/src/compiler/checker-iteration.ts +1206 -0
- package/src/compiler/checker-javascript.ts +502 -0
- package/src/compiler/checker-jsdoc.ts +360 -0
- package/src/compiler/checker-jsx.ts +1924 -0
- package/src/compiler/checker-literals.ts +61 -0
- package/src/compiler/checker-members.ts +2436 -0
- package/src/compiler/checker-modules.ts +2886 -0
- package/src/compiler/checker-narrowing.ts +3230 -0
- package/src/compiler/checker-object-literals.ts +575 -0
- package/src/compiler/checker-operators.ts +1422 -0
- package/src/compiler/checker-overloads.ts +328 -0
- package/src/compiler/checker-property-access.ts +906 -0
- package/src/compiler/checker-services.ts +1149 -0
- package/src/compiler/checker-signatures.ts +1032 -0
- package/src/compiler/checker-source-file.ts +732 -0
- package/src/compiler/checker-statements.ts +292 -0
- package/src/compiler/checker-super.ts +261 -0
- package/src/compiler/checker-symbol-types.ts +2107 -0
- package/src/compiler/checker-symbols.ts +2150 -0
- package/src/compiler/checker-type-factory.ts +2579 -0
- package/src/compiler/checker-type-nodes.ts +1033 -0
- package/src/compiler/checker-type-operators.ts +2502 -0
- package/src/compiler/checker-types.ts +2340 -0
- package/src/compiler/checker-unused.ts +642 -0
- package/src/compiler/checker-utilities.ts +161 -0
- package/src/compiler/checker.ts +1116 -0
- package/src/compiler/command-line.ts +436 -0
- package/src/compiler/compile-program.ts +439 -0
- package/src/compiler/decoder.ts +1209 -0
- package/src/compiler/diagnostic-locales.ts +86 -0
- package/src/compiler/diagnostic-messages.ts +2349 -0
- package/src/compiler/diagnostics.ts +897 -0
- package/src/compiler/emitter.ts +434 -0
- package/src/compiler/encoder.ts +1945 -0
- package/src/compiler/file-include.ts +673 -0
- package/src/compiler/file-loader.ts +1528 -0
- package/src/compiler/file-system.ts +143 -0
- package/src/compiler/flow.ts +89 -0
- package/src/compiler/help.ts +473 -0
- package/src/compiler/incremental.ts +2784 -0
- package/src/compiler/init.ts +141 -0
- package/src/compiler/instantiation.ts +894 -0
- package/src/compiler/jsdoc.ts +1386 -0
- package/src/compiler/link-tables.ts +98 -0
- package/src/compiler/locale-data.ts +203 -0
- package/src/compiler/locale.ts +307 -0
- package/src/compiler/locales/cs-CZ.ts +5 -0
- package/src/compiler/locales/de-DE.ts +5 -0
- package/src/compiler/locales/es-ES.ts +5 -0
- package/src/compiler/locales/fr-FR.ts +5 -0
- package/src/compiler/locales/it-IT.ts +5 -0
- package/src/compiler/locales/ja-JP.ts +5 -0
- package/src/compiler/locales/ko-KR.ts +5 -0
- package/src/compiler/locales/pl-PL.ts +5 -0
- package/src/compiler/locales/pt-BR.ts +5 -0
- package/src/compiler/locales/ru-RU.ts +5 -0
- package/src/compiler/locales/tr-TR.ts +5 -0
- package/src/compiler/locales/zh-CN.ts +5 -0
- package/src/compiler/locales/zh-TW.ts +5 -0
- package/src/compiler/module-resolution-types.ts +243 -0
- package/src/compiler/module-resolution.ts +2072 -0
- package/src/compiler/module-specifiers.ts +1491 -0
- package/src/compiler/name-resolver.ts +646 -0
- package/src/compiler/node-builder-names.ts +1069 -0
- package/src/compiler/node-builder-pseudo.ts +892 -0
- package/src/compiler/node-builder-reuse.ts +764 -0
- package/src/compiler/node-builder.ts +3425 -0
- package/src/compiler/option-declarations.ts +1560 -0
- package/src/compiler/options.ts +1576 -0
- package/src/compiler/output-paths.ts +334 -0
- package/src/compiler/package-json.ts +1083 -0
- package/src/compiler/parallel-check.ts +1951 -0
- package/src/compiler/parallel-parse.ts +590 -0
- package/src/compiler/parse-thread.ts +140 -0
- package/src/compiler/parser.ts +7716 -0
- package/src/compiler/path.ts +717 -0
- package/src/compiler/printer/async-helpers.ts +183 -0
- package/src/compiler/printer/auto-generate.ts +27 -0
- package/src/compiler/printer/decorator-helpers.ts +218 -0
- package/src/compiler/printer/emit-context.ts +679 -0
- package/src/compiler/printer/emit-flags.ts +64 -0
- package/src/compiler/printer/factory-base.ts +2577 -0
- package/src/compiler/printer/factory.ts +764 -0
- package/src/compiler/printer/helpers.ts +291 -0
- package/src/compiler/printer/name-generator.ts +372 -0
- package/src/compiler/printer/printer.ts +5072 -0
- package/src/compiler/printer/text-writer.ts +183 -0
- package/src/compiler/printer/utilities.ts +884 -0
- package/src/compiler/program-checker.ts +592 -0
- package/src/compiler/program-utilities.ts +435 -0
- package/src/compiler/program.ts +1419 -0
- package/src/compiler/pseudo-bigint.ts +62 -0
- package/src/compiler/regexp-checker.ts +1142 -0
- package/src/compiler/relations.ts +5149 -0
- package/src/compiler/reparser.ts +1566 -0
- package/src/compiler/scanner.ts +2951 -0
- package/src/compiler/show-config.ts +239 -0
- package/src/compiler/side-state.ts +125 -0
- package/src/compiler/sourcemap.ts +366 -0
- package/src/compiler/spelling.ts +122 -0
- package/src/compiler/symbol-accessibility.ts +1071 -0
- package/src/compiler/symbol.ts +439 -0
- package/src/compiler/symlinks.ts +137 -0
- package/src/compiler/syntax-kind.ts +391 -0
- package/src/compiler/thread-entry.ts +191 -0
- package/src/compiler/timeline.ts +53 -0
- package/src/compiler/transformers/alias-references.ts +757 -0
- package/src/compiler/transformers/async-utilities.ts +335 -0
- package/src/compiler/transformers/async.ts +838 -0
- package/src/compiler/transformers/class-fields.ts +2967 -0
- package/src/compiler/transformers/class-utilities.ts +324 -0
- package/src/compiler/transformers/commonjs-module.ts +1621 -0
- package/src/compiler/transformers/const-enum-inliner.ts +50 -0
- package/src/compiler/transformers/declarations-diagnostics.ts +832 -0
- package/src/compiler/transformers/declarations-pseudo.ts +966 -0
- package/src/compiler/transformers/declarations-resolver.ts +249 -0
- package/src/compiler/transformers/declarations-syntactic.ts +1859 -0
- package/src/compiler/transformers/declarations-tracker.ts +269 -0
- package/src/compiler/transformers/declarations.ts +3120 -0
- package/src/compiler/transformers/decorator-metadata.ts +697 -0
- package/src/compiler/transformers/decorator-utilities.ts +283 -0
- package/src/compiler/transformers/destructuring.ts +708 -0
- package/src/compiler/transformers/downlevel.ts +50 -0
- package/src/compiler/transformers/emit-resolver.ts +258 -0
- package/src/compiler/transformers/es-decorators.ts +2682 -0
- package/src/compiler/transformers/exponentiation.ts +80 -0
- package/src/compiler/transformers/external-module-info.ts +412 -0
- package/src/compiler/transformers/for-await.ts +687 -0
- package/src/compiler/transformers/import-elision.ts +152 -0
- package/src/compiler/transformers/jsx-entities.ts +256 -0
- package/src/compiler/transformers/jsx.ts +824 -0
- package/src/compiler/transformers/legacy-decorators.ts +726 -0
- package/src/compiler/transformers/logical-assignment.ts +75 -0
- package/src/compiler/transformers/module-utilities.ts +42 -0
- package/src/compiler/transformers/module.ts +474 -0
- package/src/compiler/transformers/named-evaluation.ts +389 -0
- package/src/compiler/transformers/nullish-coalescing.ts +35 -0
- package/src/compiler/transformers/object-rest-spread.ts +577 -0
- package/src/compiler/transformers/optional-catch.ts +29 -0
- package/src/compiler/transformers/optional-chain.ts +246 -0
- package/src/compiler/transformers/reference-resolver.ts +1201 -0
- package/src/compiler/transformers/runtime-syntax.ts +942 -0
- package/src/compiler/transformers/subtree-facts.ts +245 -0
- package/src/compiler/transformers/syntax-facts.ts +353 -0
- package/src/compiler/transformers/tagged-template.ts +167 -0
- package/src/compiler/transformers/transformer.ts +56 -0
- package/src/compiler/transformers/type-eraser.ts +520 -0
- package/src/compiler/transformers/type-serialization.ts +374 -0
- package/src/compiler/transformers/using.ts +613 -0
- package/src/compiler/transformers/utilities.ts +419 -0
- package/src/compiler/transformers/visitor-base.ts +1601 -0
- package/src/compiler/transformers/visitor-hooks.ts +252 -0
- package/src/compiler/tsc-build.ts +1418 -0
- package/src/compiler/tsc-cli.ts +666 -0
- package/src/compiler/tsc-compile.ts +437 -0
- package/src/compiler/tsc-watch.ts +854 -0
- package/src/compiler/tsconfig.ts +1574 -0
- package/src/compiler/type-printer.ts +110 -0
- package/src/compiler/types.ts +115 -0
- package/src/compiler/unicode-identifiers.ts +212 -0
- package/src/compiler/unicode-properties.ts +537 -0
- package/src/compiler/vfs-match.ts +597 -0
- package/src/compiler/xxh3.ts +650 -0
- package/src/library/ast.generated.ts +1685 -0
- package/src/library/ast.ts +104 -0
- package/src/library/checker.ts +384 -0
- package/src/library/compiler-options.generated.ts +114 -0
- package/src/library/diagnostics.ts +72 -0
- package/src/library/disk.ts +73 -0
- package/src/library/enums.generated.ts +1024 -0
- package/src/library/errors.ts +26 -0
- package/src/library/host.ts +63 -0
- package/src/library/index.ts +71 -0
- package/src/library/nodes.ts +232 -0
- package/src/library/options.ts +449 -0
- package/src/library/parse.ts +63 -0
- package/src/library/program.ts +293 -0
- package/src/library/symbols.ts +15 -0
- package/src/library/types.ts +359 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { type Node, ParameterDeclaration, Tristate } from './ast.js';
|
|
2
|
+
import { type DiagnosticMessage } from './diagnostics.js';
|
|
3
|
+
import { type CompilerOptions } from './options.js';
|
|
4
|
+
import { Symbol, SymbolFlags, type SymbolTable } from './symbol.js';
|
|
5
|
+
export declare class NameResolver {
|
|
6
|
+
readonly compilerOptions: CompilerOptions;
|
|
7
|
+
/** The global symbol table; empty unless the checker sets it. */
|
|
8
|
+
globals: SymbolTable;
|
|
9
|
+
argumentsSymbol: Symbol | undefined;
|
|
10
|
+
requireSymbol: Symbol | undefined;
|
|
11
|
+
constructor(compilerOptions: CompilerOptions);
|
|
12
|
+
/** The symbol of `name` in `symbols` with a `meaning`. Ignores aliases and merging by default. */
|
|
13
|
+
lookup(symbols: SymbolTable, name: string, meaning: SymbolFlags): Symbol | undefined;
|
|
14
|
+
/** The (merged) symbol of a declaration. */
|
|
15
|
+
getSymbolOfDeclaration(node: Node): Symbol | undefined;
|
|
16
|
+
/** Reports an error; the default reports nothing. */
|
|
17
|
+
error(_location: Node, _message: DiagnosticMessage, _args: readonly string[]): void;
|
|
18
|
+
symbolReferenced(_symbol: Symbol, _meaning: SymbolFlags): void;
|
|
19
|
+
/** Whether a function's parameters need their own scope, cached per function; Unknown if not cached. */
|
|
20
|
+
getRequiresScopeChangeCache(_node: Node): Tristate;
|
|
21
|
+
setRequiresScopeChangeCache(_node: Node, _value: Tristate): void;
|
|
22
|
+
/** Handles a reference from a property initializer to a constructor local; true to resolve to nothing. */
|
|
23
|
+
onPropertyWithInvalidInitializer(_location: Node, _name: string, _declaration: Node, _result: Symbol | undefined): boolean;
|
|
24
|
+
/** Reports a failed lookup; `location` is undefined for global lookups. */
|
|
25
|
+
onFailedToResolveSymbol(_location: Node | undefined, _name: string, _meaning: SymbolFlags, _message: DiagnosticMessage): void;
|
|
26
|
+
/** Checks a successful lookup; `location` is undefined for global lookups. */
|
|
27
|
+
onSuccessfullyResolvedSymbol(_location: Node | undefined, _result: Symbol, _meaning: SymbolFlags, _lastLocation: Node | undefined, _associatedDeclarationForContainingInitializerOrBindingName: Node | undefined, _withinDeferredContext: boolean): void;
|
|
28
|
+
/** The symbol for `arguments`; the default is a transient property symbol. */
|
|
29
|
+
getArgumentsSymbol(): Symbol;
|
|
30
|
+
/**
|
|
31
|
+
* Resolves `name` with `meaning` from `location`. With a `nameNotFoundMessage`, reports
|
|
32
|
+
* through the hooks; `isUse` counts it as a reference.
|
|
33
|
+
*/
|
|
34
|
+
resolve(location: Node | undefined, name: string, meaning: SymbolFlags, nameNotFoundMessage: DiagnosticMessage | undefined, isUse: boolean, excludeGlobals: boolean): Symbol | undefined;
|
|
35
|
+
/**
|
|
36
|
+
* Whether a parameter default refers outside the function: names declared in the body
|
|
37
|
+
* aren't in scope there unless emit moves the parameter into the body.
|
|
38
|
+
*/
|
|
39
|
+
useOuterVariableScopeInParameter(result: Symbol, location: Node, lastLocation: Node): boolean;
|
|
40
|
+
requiresScopeChange(node: ParameterDeclaration): boolean;
|
|
41
|
+
}
|
|
42
|
+
/** The local symbol of an `export default` declaration. */
|
|
43
|
+
export declare function getLocalSymbolForExportDefault(symbol: Symbol): Symbol | undefined;
|
|
@@ -0,0 +1,509 @@
|
|
|
1
|
+
// Name resolution: finds the symbol a name refers to by walking up the scopes from a location.
|
|
2
|
+
//
|
|
3
|
+
// The checker subclasses `NameResolver` to resolve aliases and merged symbols, report errors
|
|
4
|
+
// and record uses; the defaults here only read the binder's tables.
|
|
5
|
+
import { BindingElement, ConditionalTypeNode, HeritageClause, ModuleDeclaration, NodeVisitor, getAsteriskToken, getBody, getLocalSymbol, getLocals, getModuleSpecifier, getName, getParameters, getSymbol, getText, getType, } from './ast.js';
|
|
6
|
+
import { isFunctionLike, isFunctionLikeDeclarationKind, isInJSFile, isRequireCall } from './ast-utilities.js';
|
|
7
|
+
import { findConstructorDeclaration, getDeclarationOfKind, getImmediatelyInvokedFunctionExpression, getSourceFileOfNode, hasSyntacticModifier, hasStaticModifier, isClassElement, isClassLike, isConstAssertion, isExternalOrCommonJSModule, isGlobalSourceFile, isNullishCoalesce, isOptionalChain, isPartOfParameterDeclaration, isStatic, isTypeNodeKind, } from './binder-utilities.js';
|
|
8
|
+
import { getEmitScriptTarget, getIsolatedModules, getUseDefineForClassFields, } from './options.js';
|
|
9
|
+
import { Symbol } from './symbol.js';
|
|
10
|
+
export class NameResolver {
|
|
11
|
+
compilerOptions;
|
|
12
|
+
/** The global symbol table; empty unless the checker sets it. */
|
|
13
|
+
globals;
|
|
14
|
+
argumentsSymbol;
|
|
15
|
+
requireSymbol;
|
|
16
|
+
constructor(compilerOptions) {
|
|
17
|
+
this.compilerOptions = compilerOptions;
|
|
18
|
+
this.globals = new Map();
|
|
19
|
+
this.argumentsSymbol = undefined;
|
|
20
|
+
this.requireSymbol = undefined;
|
|
21
|
+
}
|
|
22
|
+
// Hooks
|
|
23
|
+
/** The symbol of `name` in `symbols` with a `meaning`. Ignores aliases and merging by default. */
|
|
24
|
+
lookup(symbols, name, meaning) {
|
|
25
|
+
if (meaning === 0 /* SymbolFlags.None */)
|
|
26
|
+
return undefined;
|
|
27
|
+
const symbol = symbols.get(name);
|
|
28
|
+
return symbol !== undefined && (symbol.flags & meaning) !== 0 ? symbol : undefined;
|
|
29
|
+
}
|
|
30
|
+
/** The (merged) symbol of a declaration. */
|
|
31
|
+
getSymbolOfDeclaration(node) {
|
|
32
|
+
return symbolOfNode(node);
|
|
33
|
+
}
|
|
34
|
+
/** Reports an error; the default reports nothing. */
|
|
35
|
+
error(_location, _message, _args) { }
|
|
36
|
+
symbolReferenced(_symbol, _meaning) { }
|
|
37
|
+
/** Whether a function's parameters need their own scope, cached per function; Unknown if not cached. */
|
|
38
|
+
getRequiresScopeChangeCache(_node) {
|
|
39
|
+
return 0 /* Tristate.Unknown */;
|
|
40
|
+
}
|
|
41
|
+
setRequiresScopeChangeCache(_node, _value) { }
|
|
42
|
+
/** Handles a reference from a property initializer to a constructor local; true to resolve to nothing. */
|
|
43
|
+
onPropertyWithInvalidInitializer(_location, _name, _declaration, _result) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
/** Reports a failed lookup; `location` is undefined for global lookups. */
|
|
47
|
+
onFailedToResolveSymbol(_location, _name, _meaning, _message) { }
|
|
48
|
+
/** Checks a successful lookup; `location` is undefined for global lookups. */
|
|
49
|
+
onSuccessfullyResolvedSymbol(_location, _result, _meaning, _lastLocation, _associatedDeclarationForContainingInitializerOrBindingName, _withinDeferredContext) { }
|
|
50
|
+
/** The symbol for `arguments`; the default is a transient property symbol. */
|
|
51
|
+
getArgumentsSymbol() {
|
|
52
|
+
let symbol = this.argumentsSymbol;
|
|
53
|
+
if (symbol === undefined) {
|
|
54
|
+
symbol = new Symbol(4 /* SymbolFlags.Property */ | 33554432 /* SymbolFlags.Transient */, 'arguments');
|
|
55
|
+
this.argumentsSymbol = symbol;
|
|
56
|
+
}
|
|
57
|
+
return symbol;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Resolves `name` with `meaning` from `location`. With a `nameNotFoundMessage`, reports
|
|
61
|
+
* through the hooks; `isUse` counts it as a reference.
|
|
62
|
+
*/
|
|
63
|
+
resolve(location, name, meaning, nameNotFoundMessage, isUse, excludeGlobals) {
|
|
64
|
+
let result;
|
|
65
|
+
let lastLocation;
|
|
66
|
+
let lastSelfReferenceLocation;
|
|
67
|
+
let propertyWithInvalidInitializer;
|
|
68
|
+
let associatedDeclarationForContainingInitializerOrBindingName;
|
|
69
|
+
let withinDeferredContext = false;
|
|
70
|
+
// For did-you-mean suggestions, which start at the original location.
|
|
71
|
+
const originalLocation = location;
|
|
72
|
+
const nameIsConst = name === 'const';
|
|
73
|
+
let current = location;
|
|
74
|
+
loop: while (current !== undefined) {
|
|
75
|
+
// `const` in `as const` is the expression's constant type, not a lookup.
|
|
76
|
+
if (nameIsConst && isConstAssertion(current))
|
|
77
|
+
return undefined;
|
|
78
|
+
// From the name of a namespace or enum, skip its own scope: its locals could conflict.
|
|
79
|
+
if ((current.kind === 268 /* SyntaxKind.ModuleDeclaration */ || current.kind === 267 /* SyntaxKind.EnumDeclaration */) &&
|
|
80
|
+
lastLocation !== undefined &&
|
|
81
|
+
getName(current) === lastLocation) {
|
|
82
|
+
lastLocation = current;
|
|
83
|
+
current = current.parent;
|
|
84
|
+
if (current === undefined)
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
const locals = getLocalsOf(current);
|
|
88
|
+
// Locals of a global source file are merged into the globals.
|
|
89
|
+
if (locals !== undefined && !isGlobalSourceFile(current)) {
|
|
90
|
+
result = this.lookup(locals, name, meaning);
|
|
91
|
+
if (result !== undefined) {
|
|
92
|
+
let useResult = true;
|
|
93
|
+
if (isFunctionLike(current) && lastLocation !== undefined && lastLocation !== getBody(current)) {
|
|
94
|
+
// Type parameters are in scope in the whole signature, but local types only in the
|
|
95
|
+
// body; parameters only in the body, parameter list and return type. JSDoc types
|
|
96
|
+
// are parented above type parameters, so this doesn't apply to them.
|
|
97
|
+
if ((meaning & result.flags & 788968 /* SymbolFlags.Type */) !== 0 && lastLocation.kind !== 315 /* SyntaxKind.JSDoc */) {
|
|
98
|
+
useResult =
|
|
99
|
+
(result.flags & 262144 /* SymbolFlags.TypeParameter */) !== 0 &&
|
|
100
|
+
((lastLocation.flags & 16 /* NodeFlags.Synthesized */) !== 0 ||
|
|
101
|
+
lastLocation === getType(current) ||
|
|
102
|
+
lastLocation.kind === 170 /* SyntaxKind.Parameter */ ||
|
|
103
|
+
lastLocation.kind === 333 /* SyntaxKind.JSDocParameterTag */ ||
|
|
104
|
+
lastLocation.kind === 334 /* SyntaxKind.JSDocReturnTag */ ||
|
|
105
|
+
lastLocation.kind === 169 /* SyntaxKind.TypeParameter */);
|
|
106
|
+
}
|
|
107
|
+
if ((meaning & result.flags & 3 /* SymbolFlags.Variable */) !== 0) {
|
|
108
|
+
if (this.useOuterVariableScopeInParameter(result, current, lastLocation))
|
|
109
|
+
useResult = false;
|
|
110
|
+
else if ((result.flags & 1 /* SymbolFlags.FunctionScopedVariable */) !== 0) {
|
|
111
|
+
// Initializers referencing later parameters are checked separately.
|
|
112
|
+
useResult =
|
|
113
|
+
lastLocation.kind === 170 /* SyntaxKind.Parameter */ ||
|
|
114
|
+
(lastLocation.flags & 16 /* NodeFlags.Synthesized */) !== 0 ||
|
|
115
|
+
(lastLocation === getType(current) && isInParameter(result.valueDeclaration));
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
else if (current instanceof ConditionalTypeNode) {
|
|
120
|
+
// `infer T` is only in scope in the true branch.
|
|
121
|
+
useResult = lastLocation === current.trueType;
|
|
122
|
+
}
|
|
123
|
+
if (useResult)
|
|
124
|
+
break loop;
|
|
125
|
+
result = undefined;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
withinDeferredContext = withinDeferredContext || isDeferredContext(current, lastLocation);
|
|
129
|
+
switch (current.kind) {
|
|
130
|
+
case 307 /* SyntaxKind.SourceFile */:
|
|
131
|
+
case 268 /* SyntaxKind.ModuleDeclaration */: {
|
|
132
|
+
if (current.kind === 307 /* SyntaxKind.SourceFile */ && !isExternalOrCommonJSModule(current))
|
|
133
|
+
break;
|
|
134
|
+
const moduleSymbol = this.getSymbolOfDeclaration(current);
|
|
135
|
+
if (moduleSymbol === undefined)
|
|
136
|
+
break;
|
|
137
|
+
const moduleExports = moduleSymbol.exports ?? emptyTable;
|
|
138
|
+
if (current.kind === 307 /* SyntaxKind.SourceFile */ ||
|
|
139
|
+
((current.flags & 8388608 /* NodeFlags.Ambient */) !== 0 && !isGlobalScopeAugmentationNode(current))) {
|
|
140
|
+
// An external module: the local name of its default export is in scope.
|
|
141
|
+
result = moduleExports.get("default" /* InternalSymbolName.Default */);
|
|
142
|
+
if (result !== undefined) {
|
|
143
|
+
const localSymbol = getLocalSymbolForExportDefault(result);
|
|
144
|
+
if (localSymbol !== undefined && (result.flags & meaning) !== 0 && localSymbol.name === name)
|
|
145
|
+
break loop;
|
|
146
|
+
result = undefined;
|
|
147
|
+
}
|
|
148
|
+
// A name exported only by an export specifier isn't in scope. This checks the
|
|
149
|
+
// flags without resolving the alias, which could be circular.
|
|
150
|
+
const moduleExport = moduleExports.get(name);
|
|
151
|
+
if (moduleExport !== undefined &&
|
|
152
|
+
moduleExport.flags === 2097152 /* SymbolFlags.Alias */ &&
|
|
153
|
+
(getDeclarationOfKind(moduleExport, 282 /* SyntaxKind.ExportSpecifier */) !== undefined ||
|
|
154
|
+
getDeclarationOfKind(moduleExport, 281 /* SyntaxKind.NamespaceExport */) !== undefined))
|
|
155
|
+
break;
|
|
156
|
+
}
|
|
157
|
+
if (name !== "default" /* InternalSymbolName.Default */) {
|
|
158
|
+
result = this.lookup(moduleExports, name, meaning & 2623475 /* SymbolFlags.ModuleMember */);
|
|
159
|
+
if (result !== undefined) {
|
|
160
|
+
if (current.kind === 307 /* SyntaxKind.SourceFile */ &&
|
|
161
|
+
current.commonJSModuleIndicator !== undefined &&
|
|
162
|
+
(result.flags & 788968 /* SymbolFlags.Type */) === 0)
|
|
163
|
+
result = undefined;
|
|
164
|
+
else
|
|
165
|
+
break loop;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
break;
|
|
169
|
+
}
|
|
170
|
+
case 267 /* SyntaxKind.EnumDeclaration */: {
|
|
171
|
+
const enumSymbol = this.getSymbolOfDeclaration(current);
|
|
172
|
+
if (enumSymbol === undefined)
|
|
173
|
+
break;
|
|
174
|
+
result = this.lookup(enumSymbol.exports ?? emptyTable, name, meaning & 8 /* SymbolFlags.EnumMember */);
|
|
175
|
+
if (result !== undefined) {
|
|
176
|
+
if (nameNotFoundMessage !== undefined &&
|
|
177
|
+
getIsolatedModules(this.compilerOptions) &&
|
|
178
|
+
(current.flags & 8388608 /* NodeFlags.Ambient */) === 0 &&
|
|
179
|
+
result.valueDeclaration !== undefined &&
|
|
180
|
+
getSourceFileOfNode(current) !== getSourceFileOfNode(result.valueDeclaration)) {
|
|
181
|
+
const flagName = this.compilerOptions.verbatimModuleSyntax === true ? 'verbatimModuleSyntax' : 'isolatedModules';
|
|
182
|
+
this.error(originalLocation, 230 /* Diagnostics.Cannot_access_0_from_another_file_without_qualification_when_1_is_enabled_Use_2_instead */, [name, flagName, enumSymbol.name + '.' + name]);
|
|
183
|
+
}
|
|
184
|
+
break loop;
|
|
185
|
+
}
|
|
186
|
+
break;
|
|
187
|
+
}
|
|
188
|
+
case 173 /* SyntaxKind.PropertyDeclaration */:
|
|
189
|
+
if (!isStatic(current)) {
|
|
190
|
+
const ctor = findConstructorDeclaration(current.parent);
|
|
191
|
+
if (ctor !== undefined) {
|
|
192
|
+
const ctorLocals = getLocalsOf(ctor);
|
|
193
|
+
// Remembered to report later.
|
|
194
|
+
if (ctorLocals !== undefined && this.lookup(ctorLocals, name, meaning & 111551 /* SymbolFlags.Value */) !== undefined)
|
|
195
|
+
propertyWithInvalidInitializer = current;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
break;
|
|
199
|
+
case 264 /* SyntaxKind.ClassDeclaration */:
|
|
200
|
+
case 232 /* SyntaxKind.ClassExpression */:
|
|
201
|
+
case 265 /* SyntaxKind.InterfaceDeclaration */: {
|
|
202
|
+
const classSymbol = this.getSymbolOfDeclaration(current);
|
|
203
|
+
result =
|
|
204
|
+
classSymbol === undefined
|
|
205
|
+
? undefined
|
|
206
|
+
: this.lookup(classSymbol.members ?? emptyTable, name, meaning & 788968 /* SymbolFlags.Type */);
|
|
207
|
+
if (result !== undefined) {
|
|
208
|
+
// Ignore type parameters declared elsewhere.
|
|
209
|
+
if (!isTypeParameterSymbolDeclaredInContainer(result, current)) {
|
|
210
|
+
result = undefined;
|
|
211
|
+
break;
|
|
212
|
+
}
|
|
213
|
+
// Type parameters aren't in scope in static members.
|
|
214
|
+
if (lastLocation !== undefined && isStatic(lastLocation)) {
|
|
215
|
+
if (nameNotFoundMessage !== undefined)
|
|
216
|
+
this.error(originalLocation, 480 /* Diagnostics.Static_members_cannot_reference_class_type_parameters */, noArgs);
|
|
217
|
+
return undefined;
|
|
218
|
+
}
|
|
219
|
+
break loop;
|
|
220
|
+
}
|
|
221
|
+
if (current.kind === 232 /* SyntaxKind.ClassExpression */ && (meaning & 32 /* SymbolFlags.Class */) !== 0) {
|
|
222
|
+
const className = getName(current);
|
|
223
|
+
if (className !== undefined && name === getText(className)) {
|
|
224
|
+
result = symbolOfNode(current);
|
|
225
|
+
break loop;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
break;
|
|
229
|
+
}
|
|
230
|
+
case 234 /* SyntaxKind.ExpressionWithTypeArguments */: {
|
|
231
|
+
const heritage = current.parent;
|
|
232
|
+
if (lastLocation === current.expression &&
|
|
233
|
+
heritage instanceof HeritageClause &&
|
|
234
|
+
heritage.token === 95 /* SyntaxKind.ExtendsKeyword */) {
|
|
235
|
+
const container = heritage.parent;
|
|
236
|
+
if (isClassLike(container)) {
|
|
237
|
+
const classSymbol = this.getSymbolOfDeclaration(container);
|
|
238
|
+
result =
|
|
239
|
+
classSymbol === undefined
|
|
240
|
+
? undefined
|
|
241
|
+
: this.lookup(classSymbol.members ?? emptyTable, name, meaning & 788968 /* SymbolFlags.Type */);
|
|
242
|
+
if (result !== undefined) {
|
|
243
|
+
if (nameNotFoundMessage !== undefined)
|
|
244
|
+
this.error(originalLocation, 716 /* Diagnostics.Base_class_expressions_cannot_reference_class_type_parameters */, noArgs);
|
|
245
|
+
return undefined;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
break;
|
|
250
|
+
}
|
|
251
|
+
case 168 /* SyntaxKind.ComputedPropertyName */: {
|
|
252
|
+
// A class's computed property names can't reference its own type parameters.
|
|
253
|
+
const grandparent = current.parent.parent;
|
|
254
|
+
if (isClassLike(grandparent) || grandparent.kind === 265 /* SyntaxKind.InterfaceDeclaration */) {
|
|
255
|
+
const containerSymbol = this.getSymbolOfDeclaration(grandparent);
|
|
256
|
+
result =
|
|
257
|
+
containerSymbol === undefined
|
|
258
|
+
? undefined
|
|
259
|
+
: this.lookup(containerSymbol.members ?? emptyTable, name, meaning & 788968 /* SymbolFlags.Type */);
|
|
260
|
+
if (result !== undefined) {
|
|
261
|
+
if (nameNotFoundMessage !== undefined)
|
|
262
|
+
this.error(originalLocation, 633 /* Diagnostics.A_computed_property_name_cannot_reference_a_type_parameter_from_its_containing_type */, noArgs);
|
|
263
|
+
return undefined;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
break;
|
|
267
|
+
}
|
|
268
|
+
case 175 /* SyntaxKind.MethodDeclaration */:
|
|
269
|
+
case 177 /* SyntaxKind.Constructor */:
|
|
270
|
+
case 178 /* SyntaxKind.GetAccessor */:
|
|
271
|
+
case 179 /* SyntaxKind.SetAccessor */:
|
|
272
|
+
case 263 /* SyntaxKind.FunctionDeclaration */:
|
|
273
|
+
if ((meaning & 3 /* SymbolFlags.Variable */) !== 0 && name === 'arguments') {
|
|
274
|
+
result = this.getArgumentsSymbol();
|
|
275
|
+
break loop;
|
|
276
|
+
}
|
|
277
|
+
break;
|
|
278
|
+
case 219 /* SyntaxKind.FunctionExpression */: {
|
|
279
|
+
if ((meaning & 3 /* SymbolFlags.Variable */) !== 0 && name === 'arguments') {
|
|
280
|
+
result = this.getArgumentsSymbol();
|
|
281
|
+
break loop;
|
|
282
|
+
}
|
|
283
|
+
const functionName = current.name;
|
|
284
|
+
if ((meaning & 16 /* SymbolFlags.Function */) !== 0 && functionName !== undefined && name === functionName.text) {
|
|
285
|
+
result = symbolOfNode(current);
|
|
286
|
+
break loop;
|
|
287
|
+
}
|
|
288
|
+
break;
|
|
289
|
+
}
|
|
290
|
+
case 171 /* SyntaxKind.Decorator */: {
|
|
291
|
+
// Decorators resolve at the class: a parameter's at its class member, a member's at the class.
|
|
292
|
+
let parent = current.parent;
|
|
293
|
+
if (parent !== undefined && parent.kind === 170 /* SyntaxKind.Parameter */) {
|
|
294
|
+
current = parent;
|
|
295
|
+
parent = current.parent;
|
|
296
|
+
}
|
|
297
|
+
if (parent !== undefined && (isClassElement(parent) || parent.kind === 264 /* SyntaxKind.ClassDeclaration */))
|
|
298
|
+
current = parent;
|
|
299
|
+
break;
|
|
300
|
+
}
|
|
301
|
+
case 170 /* SyntaxKind.Parameter */: {
|
|
302
|
+
const parameter = current;
|
|
303
|
+
if (lastLocation !== undefined &&
|
|
304
|
+
(lastLocation === parameter.initializer ||
|
|
305
|
+
(lastLocation === parameter.name && isBindingPattern(lastLocation))) &&
|
|
306
|
+
associatedDeclarationForContainingInitializerOrBindingName === undefined)
|
|
307
|
+
associatedDeclarationForContainingInitializerOrBindingName = current;
|
|
308
|
+
break;
|
|
309
|
+
}
|
|
310
|
+
case 209 /* SyntaxKind.BindingElement */: {
|
|
311
|
+
const element = current;
|
|
312
|
+
if (lastLocation !== undefined &&
|
|
313
|
+
(lastLocation === element.initializer ||
|
|
314
|
+
(lastLocation === element.name && isBindingPattern(lastLocation))) &&
|
|
315
|
+
isPartOfParameterDeclaration(current) &&
|
|
316
|
+
associatedDeclarationForContainingInitializerOrBindingName === undefined)
|
|
317
|
+
associatedDeclarationForContainingInitializerOrBindingName = current;
|
|
318
|
+
break;
|
|
319
|
+
}
|
|
320
|
+
case 196 /* SyntaxKind.InferType */:
|
|
321
|
+
if ((meaning & 262144 /* SymbolFlags.TypeParameter */) !== 0) {
|
|
322
|
+
const typeParameter = current.typeParameter;
|
|
323
|
+
if (name === typeParameter.name.text) {
|
|
324
|
+
result = symbolOfNode(typeParameter);
|
|
325
|
+
break loop;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
break;
|
|
329
|
+
case 282 /* SyntaxKind.ExportSpecifier */: {
|
|
330
|
+
// `export { a as b } from "m"`: `a` resolves outside this module.
|
|
331
|
+
const specifier = current;
|
|
332
|
+
const exportDeclaration = current.parent.parent;
|
|
333
|
+
if (lastLocation !== undefined &&
|
|
334
|
+
lastLocation === specifier.propertyName &&
|
|
335
|
+
getModuleSpecifier(exportDeclaration) !== undefined)
|
|
336
|
+
current = exportDeclaration.parent;
|
|
337
|
+
break;
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
if (isSelfReferenceLocation(current, lastLocation))
|
|
341
|
+
lastSelfReferenceLocation = current;
|
|
342
|
+
lastLocation = current;
|
|
343
|
+
current = current.parent;
|
|
344
|
+
}
|
|
345
|
+
// A use from inside the declaration it resolves to is a self-reference, not a use.
|
|
346
|
+
if (isUse &&
|
|
347
|
+
result !== undefined &&
|
|
348
|
+
(lastSelfReferenceLocation === undefined || result !== symbolOfNode(lastSelfReferenceLocation)))
|
|
349
|
+
this.symbolReferenced(result, meaning);
|
|
350
|
+
if (result === undefined && !excludeGlobals)
|
|
351
|
+
result = this.lookup(this.globals, name, meaning | 1073741824 /* SymbolFlags.GlobalLookup */);
|
|
352
|
+
if (result === undefined &&
|
|
353
|
+
originalLocation !== undefined &&
|
|
354
|
+
isInJSFile(originalLocation) &&
|
|
355
|
+
originalLocation.parent !== undefined &&
|
|
356
|
+
isRequireCall(originalLocation.parent, false))
|
|
357
|
+
return this.requireSymbol;
|
|
358
|
+
if (nameNotFoundMessage !== undefined) {
|
|
359
|
+
if (propertyWithInvalidInitializer !== undefined &&
|
|
360
|
+
this.onPropertyWithInvalidInitializer(originalLocation, name, propertyWithInvalidInitializer, result))
|
|
361
|
+
return undefined;
|
|
362
|
+
if (result === undefined)
|
|
363
|
+
this.onFailedToResolveSymbol(originalLocation, name, meaning, nameNotFoundMessage);
|
|
364
|
+
else
|
|
365
|
+
this.onSuccessfullyResolvedSymbol(originalLocation, result, meaning, lastLocation, associatedDeclarationForContainingInitializerOrBindingName, withinDeferredContext);
|
|
366
|
+
}
|
|
367
|
+
return result;
|
|
368
|
+
}
|
|
369
|
+
/**
|
|
370
|
+
* Whether a parameter default refers outside the function: names declared in the body
|
|
371
|
+
* aren't in scope there unless emit moves the parameter into the body.
|
|
372
|
+
*/
|
|
373
|
+
useOuterVariableScopeInParameter(result, location, lastLocation) {
|
|
374
|
+
if (lastLocation.kind !== 170 /* SyntaxKind.Parameter */)
|
|
375
|
+
return false;
|
|
376
|
+
const body = getBody(location);
|
|
377
|
+
const declaration = result.valueDeclaration;
|
|
378
|
+
if (body === undefined || declaration === undefined || declaration.pos < body.pos || declaration.end > body.end)
|
|
379
|
+
return false;
|
|
380
|
+
// Static fields in class expressions, optional chains and `??` before ES2020, and object
|
|
381
|
+
// rest in binding patterns before ES2017 move parameters into the body.
|
|
382
|
+
let requiresScopeChange = this.getRequiresScopeChangeCache(location);
|
|
383
|
+
if (requiresScopeChange === 0 /* Tristate.Unknown */) {
|
|
384
|
+
requiresScopeChange = 1 /* Tristate.False */;
|
|
385
|
+
for (const parameter of getParameters(location).nodes)
|
|
386
|
+
if (this.requiresScopeChange(parameter))
|
|
387
|
+
requiresScopeChange = 2 /* Tristate.True */;
|
|
388
|
+
this.setRequiresScopeChangeCache(location, requiresScopeChange);
|
|
389
|
+
}
|
|
390
|
+
return requiresScopeChange !== 2 /* Tristate.True */;
|
|
391
|
+
}
|
|
392
|
+
requiresScopeChange(node) {
|
|
393
|
+
const visitor = new ScopeChangeFinder(this.compilerOptions);
|
|
394
|
+
return (visitor.requiresScopeChange(node.name) ||
|
|
395
|
+
(node.initializer !== undefined && visitor.requiresScopeChange(node.initializer)));
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
/** Finds syntax that makes emit move a parameter into the function body. */
|
|
399
|
+
class ScopeChangeFinder extends NodeVisitor {
|
|
400
|
+
options;
|
|
401
|
+
constructor(options) {
|
|
402
|
+
super();
|
|
403
|
+
this.options = options;
|
|
404
|
+
}
|
|
405
|
+
visitNode(node) {
|
|
406
|
+
return this.requiresScopeChange(node);
|
|
407
|
+
}
|
|
408
|
+
requiresScopeChange(node) {
|
|
409
|
+
switch (node.kind) {
|
|
410
|
+
case 220 /* SyntaxKind.ArrowFunction */:
|
|
411
|
+
case 219 /* SyntaxKind.FunctionExpression */:
|
|
412
|
+
case 263 /* SyntaxKind.FunctionDeclaration */:
|
|
413
|
+
case 177 /* SyntaxKind.Constructor */:
|
|
414
|
+
return false;
|
|
415
|
+
case 175 /* SyntaxKind.MethodDeclaration */:
|
|
416
|
+
case 178 /* SyntaxKind.GetAccessor */:
|
|
417
|
+
case 179 /* SyntaxKind.SetAccessor */:
|
|
418
|
+
case 303 /* SyntaxKind.PropertyAssignment */:
|
|
419
|
+
return this.requiresScopeChange(getName(node));
|
|
420
|
+
case 173 /* SyntaxKind.PropertyDeclaration */:
|
|
421
|
+
if (hasStaticModifier(node))
|
|
422
|
+
return !getEmitStandardClassFields(this.options);
|
|
423
|
+
return this.requiresScopeChange(getName(node));
|
|
424
|
+
}
|
|
425
|
+
if (isNullishCoalesce(node) || isOptionalChain(node))
|
|
426
|
+
return getEmitScriptTarget(this.options) < 7 /* ScriptTarget.ES2020 */;
|
|
427
|
+
if (node instanceof BindingElement &&
|
|
428
|
+
node.dotDotDotToken !== undefined &&
|
|
429
|
+
node.parent.kind === 207 /* SyntaxKind.ObjectBindingPattern */)
|
|
430
|
+
return getEmitScriptTarget(this.options) < 4 /* ScriptTarget.ES2017 */;
|
|
431
|
+
if (isTypeNodeKind(node.kind))
|
|
432
|
+
return false;
|
|
433
|
+
return node.forEachChild(this);
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
const noArgs = [];
|
|
437
|
+
const emptyTable = new Map();
|
|
438
|
+
/** Whether class fields are emitted as standard `[[Define]]` fields. */
|
|
439
|
+
function getEmitStandardClassFields(options) {
|
|
440
|
+
return getUseDefineForClassFields(options) && getEmitScriptTarget(options) >= 9 /* ScriptTarget.ES2022 */;
|
|
441
|
+
}
|
|
442
|
+
function symbolOfNode(node) {
|
|
443
|
+
return getSymbol(node);
|
|
444
|
+
}
|
|
445
|
+
function getLocalsOf(node) {
|
|
446
|
+
return getLocals(node);
|
|
447
|
+
}
|
|
448
|
+
function isBindingPattern(node) {
|
|
449
|
+
return node.kind === 207 /* SyntaxKind.ObjectBindingPattern */ || node.kind === 208 /* SyntaxKind.ArrayBindingPattern */;
|
|
450
|
+
}
|
|
451
|
+
function isGlobalScopeAugmentationNode(node) {
|
|
452
|
+
return node instanceof ModuleDeclaration && node.keyword === 162 /* SyntaxKind.GlobalKeyword */;
|
|
453
|
+
}
|
|
454
|
+
function isInParameter(declaration) {
|
|
455
|
+
for (let current = declaration; current !== undefined; current = current.parent)
|
|
456
|
+
if (current.kind === 170 /* SyntaxKind.Parameter */)
|
|
457
|
+
return true;
|
|
458
|
+
return false;
|
|
459
|
+
}
|
|
460
|
+
/** The local symbol of an `export default` declaration. */
|
|
461
|
+
export function getLocalSymbolForExportDefault(symbol) {
|
|
462
|
+
const declarations = symbol.declarations;
|
|
463
|
+
if (declarations.length === 0 || !hasSyntacticModifier(declarations[0], 2048 /* ModifierFlags.Default */))
|
|
464
|
+
return undefined;
|
|
465
|
+
for (const declaration of declarations) {
|
|
466
|
+
const localSymbol = getLocalSymbol(declaration);
|
|
467
|
+
if (localSymbol !== undefined)
|
|
468
|
+
return localSymbol;
|
|
469
|
+
}
|
|
470
|
+
return undefined;
|
|
471
|
+
}
|
|
472
|
+
/** Whether a reference at `location` runs later than its scope's own code, like in a function body. */
|
|
473
|
+
function isDeferredContext(location, lastLocation) {
|
|
474
|
+
if (location.kind !== 220 /* SyntaxKind.ArrowFunction */ && location.kind !== 219 /* SyntaxKind.FunctionExpression */) {
|
|
475
|
+
// Instance property initializers run in the constructor; a declaration's name runs in its scope.
|
|
476
|
+
return (location.kind === 187 /* SyntaxKind.TypeQuery */ ||
|
|
477
|
+
((isFunctionLikeDeclarationKind(location.kind) ||
|
|
478
|
+
(location.kind === 173 /* SyntaxKind.PropertyDeclaration */ && !isStatic(location))) &&
|
|
479
|
+
(lastLocation === undefined || lastLocation !== getName(location))));
|
|
480
|
+
}
|
|
481
|
+
if (lastLocation !== undefined && lastLocation === getName(location))
|
|
482
|
+
return false;
|
|
483
|
+
// Immediately invoked generators and async functions aren't part of the containing flow.
|
|
484
|
+
if (getAsteriskToken(location) !== undefined || hasSyntacticModifier(location, 1024 /* ModifierFlags.Async */))
|
|
485
|
+
return true;
|
|
486
|
+
return getImmediatelyInvokedFunctionExpression(location) === undefined;
|
|
487
|
+
}
|
|
488
|
+
function isTypeParameterSymbolDeclaredInContainer(symbol, container) {
|
|
489
|
+
for (const declaration of symbol.declarations)
|
|
490
|
+
if (declaration.kind === 169 /* SyntaxKind.TypeParameter */ && declaration.parent === container)
|
|
491
|
+
return true;
|
|
492
|
+
return false;
|
|
493
|
+
}
|
|
494
|
+
function isSelfReferenceLocation(node, lastLocation) {
|
|
495
|
+
switch (node.kind) {
|
|
496
|
+
case 170 /* SyntaxKind.Parameter */:
|
|
497
|
+
return lastLocation !== undefined && lastLocation === getName(node);
|
|
498
|
+
case 263 /* SyntaxKind.FunctionDeclaration */:
|
|
499
|
+
case 264 /* SyntaxKind.ClassDeclaration */:
|
|
500
|
+
case 265 /* SyntaxKind.InterfaceDeclaration */:
|
|
501
|
+
case 267 /* SyntaxKind.EnumDeclaration */:
|
|
502
|
+
case 266 /* SyntaxKind.TypeAliasDeclaration */:
|
|
503
|
+
case 345 /* SyntaxKind.JSTypeAliasDeclaration */:
|
|
504
|
+
case 268 /* SyntaxKind.ModuleDeclaration */:
|
|
505
|
+
// `namespace N { N; }`
|
|
506
|
+
return true;
|
|
507
|
+
}
|
|
508
|
+
return false;
|
|
509
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type Node, type NodeList, SourceFile } from './ast.js';
|
|
2
|
+
import type { Checker } from './checker.js';
|
|
3
|
+
import { ModuleSpecifierPreferences } from './module-specifiers.js';
|
|
4
|
+
import { ModuleKind } from './options.js';
|
|
5
|
+
import { type Symbol, SymbolFlags } from './symbol.js';
|
|
6
|
+
import { type NodeBuilder } from './node-builder.js';
|
|
7
|
+
/** The chain of symbols naming `symbol`, reported to the tracker. */
|
|
8
|
+
export declare function lookupSymbolChain(b: NodeBuilder, symbol: Symbol, meaning: SymbolFlags, yieldModuleSymbol: boolean): Symbol[];
|
|
9
|
+
/** A type node naming `symbol` with `mask`: a type reference, `typeof`, indexed access or `import("…")`. */
|
|
10
|
+
export declare function symbolToTypeNode(b: NodeBuilder, symbol: Symbol, mask: SymbolFlags, typeArguments: NodeList | undefined): Node | undefined;
|
|
11
|
+
/** `ref`'s names appended to the reference `root`, for an outer type parameter group. */
|
|
12
|
+
export declare function appendReferenceToType(b: NodeBuilder, root: Node, ref: Node): Node;
|
|
13
|
+
/** An entity name for `symbol`; with `expectsIdentifier`, a qualified name is an error unless allowed. */
|
|
14
|
+
export declare function symbolToName(b: NodeBuilder, symbol: Symbol, meaning: SymbolFlags, expectsIdentifier: boolean): Node;
|
|
15
|
+
/** The symbol's name qualified by its parents' names, without looking up a chain. */
|
|
16
|
+
export declare function symbolToEntityNameNode(b: NodeBuilder, symbol: Symbol): Node;
|
|
17
|
+
export declare function symbolToExpression(b: NodeBuilder, symbol: Symbol, meaning: SymbolFlags): Node;
|
|
18
|
+
/**
|
|
19
|
+
* A readable name for a symbol, not for the right of a `.`: quoted if from a string literal,
|
|
20
|
+
* and a number as written (`0o11`, not `9`).
|
|
21
|
+
*/
|
|
22
|
+
export declare function getNameOfSymbolAsWritten(b: NodeBuilder, symbol: Symbol): string;
|
|
23
|
+
/** The name node of a property. */
|
|
24
|
+
export declare function getPropertyNameNodeForSymbol(b: NodeBuilder, symbol: Symbol): Node;
|
|
25
|
+
/**
|
|
26
|
+
* The specifier an `import("…")` type names a module with: an ambient module's name, the file
|
|
27
|
+
* name without an enclosing file, else what module specifier generation gives for the enclosing
|
|
28
|
+
* file. `overrideImportMode` is `None` for the mode of the enclosing import or file.
|
|
29
|
+
*/
|
|
30
|
+
export declare function getSpecifierForModuleSymbol(b: NodeBuilder, symbol: Symbol, overrideImportMode: ModuleKind): string;
|
|
31
|
+
/** Specifiers `importingFile` can import the module `moduleSymbol` with, best first. */
|
|
32
|
+
export declare function getModuleSpecifiers(c: Checker, moduleSymbol: Symbol, importingFile: SourceFile, preferences: ModuleSpecifierPreferences, overrideImportMode: ModuleKind): string[];
|