tsc-ts 0.0.4 → 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 +33 -1
- 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 +3 -2
- package/dist/api/library/ast.generated.d.ts +127 -139
- package/dist/api/library/checker.d.ts +51 -0
- package/dist/api/library/checker.js +318 -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/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 +5 -1
- package/dist/api/library/index.js +4 -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/types.d.ts +14 -1
- package/package.json +12 -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 +141 -167
- package/src/library/ast.ts +4 -1
- package/src/library/checker.ts +384 -0
- package/src/library/diagnostics.ts +72 -0
- package/src/library/disk.ts +73 -0
- package/src/library/errors.ts +26 -0
- package/src/library/host.ts +63 -0
- package/src/library/index.ts +21 -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/types.ts +14 -1
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
// Statements.
|
|
2
|
+
import { getExpression, getStatements, getName, } from './ast.js';
|
|
3
|
+
import { createDiagnosticForNode } from './checker.js';
|
|
4
|
+
import { getReturnTypeFromAnnotation, getReturnTypeOfSignature, getSignatureFromDeclaration, } from './checker-signatures.js';
|
|
5
|
+
import { checkExpression, checkExpressionCached, checkNonNullExpression, checkTypeAssignableToAndOptionallyElaborate, } from './checker-expressions.js';
|
|
6
|
+
import { checkIteratedTypeOrElementType } from './checker-iteration.js';
|
|
7
|
+
import { checkDestructuringAssignment } from './checker-destructuring.js';
|
|
8
|
+
import { checkReferenceExpression, checkTestingKnownTruthyType, checkTruthinessExpression, isTypeEqualityComparableTo, } from './checker-operators.js';
|
|
9
|
+
import { checkTypeComparableTo, isTypeAssignableTo } from './relations.js';
|
|
10
|
+
import { isReachableFlowNode } from './checker-narrowing.js';
|
|
11
|
+
import { getIndexType, isTypeAssignableToKindEx as isTypeAssignableToKind } from './checker-type-operators.js';
|
|
12
|
+
import { getExtractStringType } from './checker-symbol-types.js';
|
|
13
|
+
import { checkSourceElement } from './checker-source-file.js';
|
|
14
|
+
import { checkVariableDeclarationList, checkVariableLikeDeclaration } from './checker-declarations.js';
|
|
15
|
+
import { checkReturnExpression, isUnwrappedReturnTypeUndefinedVoidOrAny } from './checker-functions.js';
|
|
16
|
+
import { unwrapReturnType } from './checker-iteration.js';
|
|
17
|
+
import { getFunctionFlags, isBindingPattern } from './checker-utilities.js';
|
|
18
|
+
import { getContainingFunctionOrClassStaticBlock } from './checker-grammar.js';
|
|
19
|
+
import { ScriptTarget } from './options.js';
|
|
20
|
+
import { checkExternalEmitHelpers } from './checker-emit-helpers.js';
|
|
21
|
+
import { typeToString } from './type-printer.js';
|
|
22
|
+
import { getNonNullableType, hasTypeFacts } from './checker-flow.js';
|
|
23
|
+
export function checkBlock(c, node) {
|
|
24
|
+
for (const s of getStatements(node).nodes)
|
|
25
|
+
checkSourceElement(c, s);
|
|
26
|
+
}
|
|
27
|
+
export function checkExpressionStatement(c, node) {
|
|
28
|
+
checkExpression(c, getExpression(node));
|
|
29
|
+
}
|
|
30
|
+
export function checkIfStatement(c, node) {
|
|
31
|
+
const s = node;
|
|
32
|
+
const t = checkTruthinessExpression(c, s.expression, 0 /* CheckMode.Normal */);
|
|
33
|
+
checkTestingKnownTruthyType(c, s.expression, t, s.thenStatement);
|
|
34
|
+
checkSourceElement(c, s.thenStatement);
|
|
35
|
+
if (s.thenStatement.kind === 243 /* SyntaxKind.EmptyStatement */)
|
|
36
|
+
c.error(s.thenStatement, 249 /* Diagnostics.The_body_of_an_if_statement_cannot_be_the_empty_statement */);
|
|
37
|
+
checkSourceElement(c, s.elseStatement);
|
|
38
|
+
}
|
|
39
|
+
export function checkDoStatement(c, node) {
|
|
40
|
+
const s = node;
|
|
41
|
+
checkSourceElement(c, s.statement);
|
|
42
|
+
checkTruthinessExpression(c, s.expression, 0 /* CheckMode.Normal */);
|
|
43
|
+
}
|
|
44
|
+
export function checkWhileStatement(c, node) {
|
|
45
|
+
const s = node;
|
|
46
|
+
checkTruthinessExpression(c, s.expression, 0 /* CheckMode.Normal */);
|
|
47
|
+
checkSourceElement(c, s.statement);
|
|
48
|
+
}
|
|
49
|
+
export function checkForStatement(c, node) {
|
|
50
|
+
const s = node;
|
|
51
|
+
const initializer = s.initializer;
|
|
52
|
+
if (initializer !== undefined) {
|
|
53
|
+
if (initializer.kind === 262 /* SyntaxKind.VariableDeclarationList */)
|
|
54
|
+
checkVariableDeclarationList(c, initializer);
|
|
55
|
+
else
|
|
56
|
+
checkExpression(c, initializer);
|
|
57
|
+
}
|
|
58
|
+
if (s.condition !== undefined)
|
|
59
|
+
checkTruthinessExpression(c, s.condition, 0 /* CheckMode.Normal */);
|
|
60
|
+
if (s.incrementor !== undefined)
|
|
61
|
+
checkExpression(c, s.incrementor);
|
|
62
|
+
checkSourceElement(c, s.statement);
|
|
63
|
+
}
|
|
64
|
+
export function checkForInStatement(c, node) {
|
|
65
|
+
const s = node;
|
|
66
|
+
const expressionType = checkExpression(c, s.expression);
|
|
67
|
+
const rightType = hasTypeFacts(c, expressionType, 50331648 /* TypeFacts.IsUndefinedOrNull */)
|
|
68
|
+
? getNonNullableType(c, expressionType)
|
|
69
|
+
: expressionType;
|
|
70
|
+
if (s.initializer.kind === 262 /* SyntaxKind.VariableDeclarationList */) {
|
|
71
|
+
const declarations = s.initializer.declarations.nodes;
|
|
72
|
+
if (declarations.length !== 0 && isBindingPattern(getName(declarations[0])))
|
|
73
|
+
c.error(getName(declarations[0]), 651 /* Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern */);
|
|
74
|
+
for (const d of declarations)
|
|
75
|
+
checkVariableLikeDeclaration(c, d);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
// The variable must be a reference that the keys of the object, as strings, are assignable to.
|
|
79
|
+
const varExpr = s.initializer;
|
|
80
|
+
const leftType = checkExpression(c, varExpr);
|
|
81
|
+
if (varExpr.kind === 210 /* SyntaxKind.ArrayLiteralExpression */ || varExpr.kind === 211 /* SyntaxKind.ObjectLiteralExpression */)
|
|
82
|
+
c.error(varExpr, 651 /* Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern */);
|
|
83
|
+
else if (!isTypeAssignableTo(c, getIndexTypeOrString(c, rightType), leftType))
|
|
84
|
+
c.error(varExpr, 576 /* Diagnostics.The_left_hand_side_of_a_for_in_statement_must_be_of_type_string_or_any */);
|
|
85
|
+
else
|
|
86
|
+
checkReferenceExpression(c, varExpr, 577 /* Diagnostics.The_left_hand_side_of_a_for_in_statement_must_be_a_variable_or_a_property_access */, 912 /* Diagnostics.The_left_hand_side_of_a_for_in_statement_may_not_be_an_optional_property_access */);
|
|
87
|
+
}
|
|
88
|
+
if ((rightType.flags & 262144 /* TypeFlags.Never */) !== 0 ||
|
|
89
|
+
!isTypeAssignableToKind(c, rightType, 131072 /* TypeFlags.NonPrimitive */ | 117964800 /* TypeFlags.InstantiableNonPrimitive */, false))
|
|
90
|
+
c.error(s.expression, 578 /* Diagnostics.The_right_hand_side_of_a_for_in_statement_must_be_of_type_any_an_object_type_or_a_type_parameter_but_here_has_type_0 */, typeToString(c, rightType));
|
|
91
|
+
checkSourceElement(c, s.statement);
|
|
92
|
+
}
|
|
93
|
+
function getIndexTypeOrString(c, t) {
|
|
94
|
+
const indexType = getExtractStringType(c, getIndexType(c, t));
|
|
95
|
+
return (indexType.flags & 262144 /* TypeFlags.Never */) !== 0 ? c.stringType : indexType;
|
|
96
|
+
}
|
|
97
|
+
export function checkForOfStatement(c, node) {
|
|
98
|
+
const s = node;
|
|
99
|
+
// for await..of in an async function before ES2018 uses __asyncValues.
|
|
100
|
+
if (s.awaitModifier !== undefined) {
|
|
101
|
+
const container = getContainingFunctionOrClassStaticBlock(node);
|
|
102
|
+
if ((container === undefined || container.kind !== 176 /* SyntaxKind.ClassStaticBlockDeclaration */) &&
|
|
103
|
+
(getFunctionFlags(container) & (4 /* FunctionFlags.Invalid */ | 2 /* FunctionFlags.Async */)) === 2 /* FunctionFlags.Async */ &&
|
|
104
|
+
c.languageVersion < ScriptTarget.ES2018)
|
|
105
|
+
checkExternalEmitHelpers(c, node, 256 /* ExternalEmitHelpers.ForAwaitOfIncludes */);
|
|
106
|
+
}
|
|
107
|
+
// A declaration checks the right side through its type; an expression is checked as a
|
|
108
|
+
// destructuring assignment or a reference the iterated type must be assignable to.
|
|
109
|
+
if (s.initializer.kind === 262 /* SyntaxKind.VariableDeclarationList */) {
|
|
110
|
+
for (const d of s.initializer.declarations.nodes)
|
|
111
|
+
checkVariableLikeDeclaration(c, d);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
const varExpr = s.initializer;
|
|
115
|
+
const iteratedType = checkRightHandSideOfForOf(c, s);
|
|
116
|
+
if (varExpr.kind === 210 /* SyntaxKind.ArrayLiteralExpression */ || varExpr.kind === 211 /* SyntaxKind.ObjectLiteralExpression */)
|
|
117
|
+
checkDestructuringAssignment(c, varExpr, iteratedType, 0 /* CheckMode.Normal */, false);
|
|
118
|
+
else {
|
|
119
|
+
const leftType = checkExpression(c, varExpr);
|
|
120
|
+
checkReferenceExpression(c, varExpr, 647 /* Diagnostics.The_left_hand_side_of_a_for_of_statement_must_be_a_variable_or_a_property_access */, 913 /* Diagnostics.The_left_hand_side_of_a_for_of_statement_may_not_be_an_optional_property_access */);
|
|
121
|
+
checkTypeAssignableToAndOptionallyElaborate(c, iteratedType, leftType, varExpr, s.expression);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
checkSourceElement(c, s.statement);
|
|
125
|
+
}
|
|
126
|
+
/** The element type a `for...of` produces. */
|
|
127
|
+
export function checkRightHandSideOfForOf(c, statement) {
|
|
128
|
+
const s = statement;
|
|
129
|
+
const use = s.awaitModifier !== undefined ? 15 /* IterationUse.ForAwaitOf */ : 13 /* IterationUse.ForOf */;
|
|
130
|
+
return checkIteratedTypeOrElementType(c, use, checkNonNullExpression(c, s.expression), c.undefinedType, s.expression);
|
|
131
|
+
}
|
|
132
|
+
export function checkReturnStatement(c, node) {
|
|
133
|
+
const s = node;
|
|
134
|
+
const container = getContainingFunction(node);
|
|
135
|
+
// Returns outside functions and in static blocks are grammar errors.
|
|
136
|
+
if (container === undefined)
|
|
137
|
+
return;
|
|
138
|
+
const signature = getSignatureFromDeclaration(c, container);
|
|
139
|
+
const returnType = getReturnTypeOfSignature(c, signature);
|
|
140
|
+
const functionFlags = getFunctionFlags(container);
|
|
141
|
+
const exprNode = s.expression;
|
|
142
|
+
if (c.strictNullChecks || exprNode !== undefined || (returnType.flags & 262144 /* TypeFlags.Never */) !== 0) {
|
|
143
|
+
const exprType = exprNode !== undefined ? checkExpressionCached(c, exprNode) : c.undefinedType;
|
|
144
|
+
if (container.kind === 179 /* SyntaxKind.SetAccessor */) {
|
|
145
|
+
if (exprNode !== undefined)
|
|
146
|
+
c.error(node, 579 /* Diagnostics.Setters_cannot_return_a_value */);
|
|
147
|
+
}
|
|
148
|
+
else if (container.kind === 177 /* SyntaxKind.Constructor */) {
|
|
149
|
+
if (exprNode !== undefined &&
|
|
150
|
+
!checkTypeAssignableToAndOptionallyElaborate(c, exprType, returnType, node, exprNode))
|
|
151
|
+
c.error(node, 580 /* Diagnostics.Return_type_of_constructor_signature_must_be_assignable_to_the_instance_type_of_the_class */);
|
|
152
|
+
}
|
|
153
|
+
else if (getReturnTypeFromAnnotation(c, container) !== undefined) {
|
|
154
|
+
const unwrappedReturnType = unwrapReturnType(c, returnType, functionFlags);
|
|
155
|
+
checkReturnExpression(c, container, unwrappedReturnType, node, exprNode, exprType, false);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
else if (container.kind !== 177 /* SyntaxKind.Constructor */ &&
|
|
159
|
+
c.compilerOptions.noImplicitReturns === true &&
|
|
160
|
+
!isUnwrappedReturnTypeUndefinedVoidOrAny(c, container, returnType))
|
|
161
|
+
// The function has a return type, but this return statement has no expression.
|
|
162
|
+
c.error(node, 1701 /* Diagnostics.Not_all_code_paths_return_a_value */);
|
|
163
|
+
}
|
|
164
|
+
function getContainingFunction(node) {
|
|
165
|
+
let current = node.parent;
|
|
166
|
+
while (current !== undefined) {
|
|
167
|
+
switch (current.kind) {
|
|
168
|
+
case 263 /* SyntaxKind.FunctionDeclaration */:
|
|
169
|
+
case 219 /* SyntaxKind.FunctionExpression */:
|
|
170
|
+
case 220 /* SyntaxKind.ArrowFunction */:
|
|
171
|
+
case 175 /* SyntaxKind.MethodDeclaration */:
|
|
172
|
+
case 178 /* SyntaxKind.GetAccessor */:
|
|
173
|
+
case 179 /* SyntaxKind.SetAccessor */:
|
|
174
|
+
case 177 /* SyntaxKind.Constructor */:
|
|
175
|
+
return current;
|
|
176
|
+
case 176 /* SyntaxKind.ClassStaticBlockDeclaration */:
|
|
177
|
+
case 307 /* SyntaxKind.SourceFile */:
|
|
178
|
+
return undefined;
|
|
179
|
+
}
|
|
180
|
+
current = current.parent;
|
|
181
|
+
}
|
|
182
|
+
return undefined;
|
|
183
|
+
}
|
|
184
|
+
export function checkSwitchStatement(c, node) {
|
|
185
|
+
const s = node;
|
|
186
|
+
const expressionType = checkExpression(c, s.expression);
|
|
187
|
+
for (const clause of s.caseBlock.clauses.nodes) {
|
|
188
|
+
const caseClause = clause;
|
|
189
|
+
if (caseClause.expression !== undefined) {
|
|
190
|
+
const caseType = checkExpression(c, caseClause.expression);
|
|
191
|
+
// Without equality comparability, the reversed comparison reports the error.
|
|
192
|
+
if (!isTypeEqualityComparableTo(c, expressionType, caseType))
|
|
193
|
+
checkTypeComparableTo(c, caseType, expressionType, caseClause.expression, undefined);
|
|
194
|
+
}
|
|
195
|
+
for (const statement of caseClause.statements.nodes)
|
|
196
|
+
checkSourceElement(c, statement);
|
|
197
|
+
if (c.compilerOptions.noFallthroughCasesInSwitch === true &&
|
|
198
|
+
caseClause.fallthroughFlowNode !== undefined &&
|
|
199
|
+
isReachableFlowNode(c, caseClause.fallthroughFlowNode))
|
|
200
|
+
c.error(clause, 1700 /* Diagnostics.Fallthrough_case_in_switch */);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
export function checkLabeledStatement(c, node) {
|
|
204
|
+
const { label, statement } = node;
|
|
205
|
+
// The binder marks the labels that no break or continue statement references.
|
|
206
|
+
if ((label.flags & 134217728 /* NodeFlags.Unreachable */) !== 0 && c.compilerOptions.allowUnusedLabels !== true)
|
|
207
|
+
c.addErrorOrSuggestion(c.compilerOptions.allowUnusedLabels === false, createDiagnosticForNode(label, 1699 /* Diagnostics.Unused_label */, []));
|
|
208
|
+
checkSourceElement(c, statement);
|
|
209
|
+
}
|
|
210
|
+
export function checkThrowStatement(c, node) {
|
|
211
|
+
const expr = getExpression(node);
|
|
212
|
+
if (expr !== undefined)
|
|
213
|
+
checkExpression(c, expr);
|
|
214
|
+
}
|
|
215
|
+
export function checkTryStatement(c, node) {
|
|
216
|
+
const s = node;
|
|
217
|
+
checkBlock(c, s.tryBlock);
|
|
218
|
+
const catchClause = s.catchClause;
|
|
219
|
+
if (catchClause !== undefined) {
|
|
220
|
+
if (catchClause.variableDeclaration !== undefined)
|
|
221
|
+
checkVariableLikeDeclaration(c, catchClause.variableDeclaration);
|
|
222
|
+
checkBlock(c, catchClause.block);
|
|
223
|
+
}
|
|
224
|
+
if (s.finallyBlock !== undefined)
|
|
225
|
+
checkBlock(c, s.finallyBlock);
|
|
226
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type Node } from './ast.js';
|
|
2
|
+
import { type DiagnosticMessage } from './diagnostics.js';
|
|
3
|
+
import type { Checker } from './checker.js';
|
|
4
|
+
import { type Type } from './checker-types.js';
|
|
5
|
+
/** The type of `super` in `super(...)`, `super.x` or `super[x]`, reporting where it can't be used. */
|
|
6
|
+
export declare function checkSuperExpression(c: Checker, node: Node): Type;
|
|
7
|
+
/** The member or function `super` at `node` belongs to. */
|
|
8
|
+
export declare function getSuperContainer(node: Node, stopOnFunctions: boolean): Node | undefined;
|
|
9
|
+
/** Reports `node` in a derived class constructor when it may run before `super(...)`. */
|
|
10
|
+
export declare function checkThisBeforeSuper(c: Checker, node: Node, container: Node, message: DiagnosticMessage): void;
|
|
11
|
+
export declare function classDeclarationExtendsNull(c: Checker, classDeclaration: Node): boolean;
|
|
12
|
+
/** Reports `this` in a static property initializer of a class with legacy decorators. */
|
|
13
|
+
export declare function checkThisInStaticClassFieldInitializerInDecoratedClass(c: Checker, thisExpression: Node, container: Node): void;
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
// `super` expressions and `this` before `super(...)` in derived class constructors.
|
|
2
|
+
import { ScriptTarget } from './options.js';
|
|
3
|
+
import { markSuperPropertyInStaticInitializer } from './checker-generated-code.js';
|
|
4
|
+
import { getExpression, getFlowNode, getInitializer, getModifiers } from './ast.js';
|
|
5
|
+
import { isClassElement, isClassLike, isStatic } from './binder-utilities.js';
|
|
6
|
+
import { getBranchLabelAntecedents } from './checker-narrowing.js';
|
|
7
|
+
import { getBaseConstructorTypeOfClass, getBaseTypes, getDeclaredTypeOfSymbol, getExtendsHeritageClauseElement, } from './checker-declared-types.js';
|
|
8
|
+
import { getTypeWithThisArgument } from './checker-members.js';
|
|
9
|
+
import { getSymbolOfDeclaration } from './checker-symbols.js';
|
|
10
|
+
/** The type of `super` in `super(...)`, `super.x` or `super[x]`, reporting where it can't be used. */
|
|
11
|
+
export function checkSuperExpression(c, node) {
|
|
12
|
+
const parent = node.parent;
|
|
13
|
+
const isCallExpression = parent.kind === 214 /* SyntaxKind.CallExpression */ && getExpression(parent) === node;
|
|
14
|
+
const immediateContainer = getSuperContainer(node, true);
|
|
15
|
+
let container = immediateContainer;
|
|
16
|
+
// `super` property accesses in arrow functions belong to the enclosing container.
|
|
17
|
+
if (!isCallExpression)
|
|
18
|
+
while (container !== undefined && container.kind === 220 /* SyntaxKind.ArrowFunction */)
|
|
19
|
+
container = getSuperContainer(container, true);
|
|
20
|
+
if (container === undefined || !isLegalUsageOfSuperExpression(container, isCallExpression)) {
|
|
21
|
+
if (isInComputedPropertyNameBefore(node, container))
|
|
22
|
+
c.error(node, 632 /* Diagnostics.X_super_cannot_be_referenced_in_a_computed_property_name */);
|
|
23
|
+
else if (isCallExpression)
|
|
24
|
+
c.error(node, 514 /* Diagnostics.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors */);
|
|
25
|
+
else if (container === undefined ||
|
|
26
|
+
container.parent === undefined ||
|
|
27
|
+
!(isClassLike(container.parent) || container.parent.kind === 211 /* SyntaxKind.ObjectLiteralExpression */))
|
|
28
|
+
c.error(node, 794 /* Diagnostics.X_super_can_only_be_referenced_in_members_of_derived_classes_or_object_literal_expressions */);
|
|
29
|
+
else
|
|
30
|
+
c.error(node, 515 /* Diagnostics.X_super_property_access_is_permitted_only_in_a_constructor_member_function_or_member_accessor_of_a_derived_class */);
|
|
31
|
+
return c.errorType;
|
|
32
|
+
}
|
|
33
|
+
if (!isCallExpression && immediateContainer.kind === 177 /* SyntaxKind.Constructor */)
|
|
34
|
+
checkThisBeforeSuper(c, node, container, 1814 /* Diagnostics.X_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class */);
|
|
35
|
+
// `super` in an object literal is `any`.
|
|
36
|
+
if (container.parent.kind === 211 /* SyntaxKind.ObjectLiteralExpression */)
|
|
37
|
+
return c.anyType;
|
|
38
|
+
const classLikeDeclaration = container.parent;
|
|
39
|
+
if (getExtendsHeritageClauseElement(classLikeDeclaration) === undefined) {
|
|
40
|
+
c.error(node, 512 /* Diagnostics.X_super_can_only_be_referenced_in_a_derived_class */);
|
|
41
|
+
return c.errorType;
|
|
42
|
+
}
|
|
43
|
+
if (classDeclarationExtendsNull(c, classLikeDeclaration))
|
|
44
|
+
return isCallExpression ? c.errorType : c.nullWideningType;
|
|
45
|
+
const symbol = getSymbolOfDeclaration(c, classLikeDeclaration);
|
|
46
|
+
if (symbol === undefined)
|
|
47
|
+
return c.errorType;
|
|
48
|
+
const classType = getDeclaredTypeOfSymbol(c, symbol);
|
|
49
|
+
const baseTypes = getBaseTypes(c, classType);
|
|
50
|
+
if (baseTypes.length === 0)
|
|
51
|
+
return c.errorType;
|
|
52
|
+
if (container.kind === 177 /* SyntaxKind.Constructor */ && isInConstructorArgumentInitializer(node, container)) {
|
|
53
|
+
c.error(node, 513 /* Diagnostics.X_super_cannot_be_referenced_in_constructor_arguments */);
|
|
54
|
+
return c.errorType;
|
|
55
|
+
}
|
|
56
|
+
if (isStatic(container) || isCallExpression) {
|
|
57
|
+
if (!isCallExpression &&
|
|
58
|
+
c.languageVersion <= ScriptTarget.ES2021 &&
|
|
59
|
+
(container.kind === 173 /* SyntaxKind.PropertyDeclaration */ || container.kind === 176 /* SyntaxKind.ClassStaticBlockDeclaration */))
|
|
60
|
+
markSuperPropertyInStaticInitializer(c, node);
|
|
61
|
+
return getBaseConstructorTypeOfClass(c, classType);
|
|
62
|
+
}
|
|
63
|
+
return getTypeWithThisArgument(c, baseTypes[0], classType.thisType, false);
|
|
64
|
+
}
|
|
65
|
+
function isLegalUsageOfSuperExpression(container, isCallExpression) {
|
|
66
|
+
// Super calls are only permitted in constructors of derived classes.
|
|
67
|
+
if (isCallExpression)
|
|
68
|
+
return container.kind === 177 /* SyntaxKind.Constructor */;
|
|
69
|
+
// Super property accesses are permitted in members directly within a class or object literal.
|
|
70
|
+
const parent = container.parent;
|
|
71
|
+
if (parent === undefined || !(isClassLike(parent) || parent.kind === 211 /* SyntaxKind.ObjectLiteralExpression */))
|
|
72
|
+
return false;
|
|
73
|
+
switch (container.kind) {
|
|
74
|
+
case 175 /* SyntaxKind.MethodDeclaration */:
|
|
75
|
+
case 174 /* SyntaxKind.MethodSignature */:
|
|
76
|
+
case 178 /* SyntaxKind.GetAccessor */:
|
|
77
|
+
case 179 /* SyntaxKind.SetAccessor */:
|
|
78
|
+
case 173 /* SyntaxKind.PropertyDeclaration */:
|
|
79
|
+
return true;
|
|
80
|
+
case 176 /* SyntaxKind.ClassStaticBlockDeclaration */:
|
|
81
|
+
return isStatic(container);
|
|
82
|
+
case 172 /* SyntaxKind.PropertySignature */:
|
|
83
|
+
case 177 /* SyntaxKind.Constructor */:
|
|
84
|
+
return !isStatic(container);
|
|
85
|
+
}
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
/** Whether `node` is in a computed property name below `container`. */
|
|
89
|
+
function isInComputedPropertyNameBefore(node, container) {
|
|
90
|
+
for (let current = node.parent; current !== undefined && current !== container; current = current.parent)
|
|
91
|
+
if (current.kind === 168 /* SyntaxKind.ComputedPropertyName */)
|
|
92
|
+
return true;
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
function isInConstructorArgumentInitializer(node, constructorDeclaration) {
|
|
96
|
+
for (let current = node; current !== undefined; current = current.parent) {
|
|
97
|
+
if (isFunctionLikeDeclarationKind(current.kind))
|
|
98
|
+
return false;
|
|
99
|
+
if (current.kind === 170 /* SyntaxKind.Parameter */ && current.parent === constructorDeclaration)
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
function isFunctionLikeDeclarationKind(kind) {
|
|
105
|
+
switch (kind) {
|
|
106
|
+
case 263 /* SyntaxKind.FunctionDeclaration */:
|
|
107
|
+
case 175 /* SyntaxKind.MethodDeclaration */:
|
|
108
|
+
case 177 /* SyntaxKind.Constructor */:
|
|
109
|
+
case 178 /* SyntaxKind.GetAccessor */:
|
|
110
|
+
case 179 /* SyntaxKind.SetAccessor */:
|
|
111
|
+
case 219 /* SyntaxKind.FunctionExpression */:
|
|
112
|
+
case 220 /* SyntaxKind.ArrowFunction */:
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
/** The member or function `super` at `node` belongs to. */
|
|
118
|
+
export function getSuperContainer(node, stopOnFunctions) {
|
|
119
|
+
for (let current = node.parent; current !== undefined; current = current.parent) {
|
|
120
|
+
switch (current.kind) {
|
|
121
|
+
case 168 /* SyntaxKind.ComputedPropertyName */:
|
|
122
|
+
current = current.parent;
|
|
123
|
+
break;
|
|
124
|
+
case 263 /* SyntaxKind.FunctionDeclaration */:
|
|
125
|
+
case 219 /* SyntaxKind.FunctionExpression */:
|
|
126
|
+
case 220 /* SyntaxKind.ArrowFunction */:
|
|
127
|
+
if (stopOnFunctions)
|
|
128
|
+
return current;
|
|
129
|
+
break;
|
|
130
|
+
case 173 /* SyntaxKind.PropertyDeclaration */:
|
|
131
|
+
case 172 /* SyntaxKind.PropertySignature */:
|
|
132
|
+
case 175 /* SyntaxKind.MethodDeclaration */:
|
|
133
|
+
case 174 /* SyntaxKind.MethodSignature */:
|
|
134
|
+
case 177 /* SyntaxKind.Constructor */:
|
|
135
|
+
case 178 /* SyntaxKind.GetAccessor */:
|
|
136
|
+
case 179 /* SyntaxKind.SetAccessor */:
|
|
137
|
+
case 176 /* SyntaxKind.ClassStaticBlockDeclaration */:
|
|
138
|
+
return current;
|
|
139
|
+
case 171 /* SyntaxKind.Decorator */: {
|
|
140
|
+
// Decorators are applied outside the body of their class or method.
|
|
141
|
+
const decorated = current.parent;
|
|
142
|
+
if (decorated.kind === 170 /* SyntaxKind.Parameter */ && isClassElement(decorated.parent))
|
|
143
|
+
current = decorated.parent;
|
|
144
|
+
else if (isClassElement(decorated))
|
|
145
|
+
current = decorated;
|
|
146
|
+
break;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return undefined;
|
|
151
|
+
}
|
|
152
|
+
/** Reports `node` in a derived class constructor when it may run before `super(...)`. */
|
|
153
|
+
export function checkThisBeforeSuper(c, node, container, message) {
|
|
154
|
+
const containingClassDeclaration = container.parent;
|
|
155
|
+
// Classes without `extends`, or extending `null`, don't call `super`.
|
|
156
|
+
if (getExtendsHeritageClauseElement(containingClassDeclaration) === undefined)
|
|
157
|
+
return;
|
|
158
|
+
if (classDeclarationExtendsNull(c, containingClassDeclaration))
|
|
159
|
+
return;
|
|
160
|
+
const flow = getFlowNode(node);
|
|
161
|
+
if (flow !== undefined && !isPostSuperFlowNode(c, flow, false))
|
|
162
|
+
c.error(node, message);
|
|
163
|
+
}
|
|
164
|
+
export function classDeclarationExtendsNull(c, classDeclaration) {
|
|
165
|
+
const symbol = getSymbolOfDeclaration(c, classDeclaration);
|
|
166
|
+
if (symbol === undefined)
|
|
167
|
+
return false;
|
|
168
|
+
const classType = getDeclaredTypeOfSymbol(c, symbol);
|
|
169
|
+
if ((classType.objectFlags & 3 /* ObjectFlags.ClassOrInterface */) === 0 || (classType.flags & 1048576 /* TypeFlags.Object */) === 0)
|
|
170
|
+
return false;
|
|
171
|
+
return getBaseConstructorTypeOfClass(c, classType) === c.nullWideningType;
|
|
172
|
+
}
|
|
173
|
+
/** Whether every path to `start` passes a `super(...)` call. */
|
|
174
|
+
function isPostSuperFlowNode(c, start, noCacheCheckIn) {
|
|
175
|
+
let flow = start;
|
|
176
|
+
let noCacheCheck = noCacheCheckIn;
|
|
177
|
+
for (;;) {
|
|
178
|
+
const flags = flow.flags;
|
|
179
|
+
if ((flags & 4096 /* FlowFlags.Shared */) !== 0) {
|
|
180
|
+
if (!noCacheCheck) {
|
|
181
|
+
const cached = c.flowNodePostSuper.get(flow);
|
|
182
|
+
if (cached !== undefined)
|
|
183
|
+
return cached;
|
|
184
|
+
const postSuper = isPostSuperFlowNode(c, flow, true);
|
|
185
|
+
c.flowNodePostSuper.set(flow, postSuper);
|
|
186
|
+
return postSuper;
|
|
187
|
+
}
|
|
188
|
+
noCacheCheck = false;
|
|
189
|
+
}
|
|
190
|
+
if ((flags & (16 /* FlowFlags.Assignment */ | 96 /* FlowFlags.Condition */ | 256 /* FlowFlags.ArrayMutation */ | 128 /* FlowFlags.SwitchClause */)) !== 0)
|
|
191
|
+
flow = flow.antecedent;
|
|
192
|
+
else if ((flags & 512 /* FlowFlags.Call */) !== 0) {
|
|
193
|
+
if (getExpression(flow.node).kind === 107 /* SyntaxKind.SuperKeyword */)
|
|
194
|
+
return true;
|
|
195
|
+
flow = flow.antecedent;
|
|
196
|
+
}
|
|
197
|
+
else if ((flags & 4 /* FlowFlags.BranchLabel */) !== 0) {
|
|
198
|
+
for (const antecedent of getBranchLabelAntecedents(c, flow))
|
|
199
|
+
if (!isPostSuperFlowNode(c, antecedent, false))
|
|
200
|
+
return false;
|
|
201
|
+
return true;
|
|
202
|
+
}
|
|
203
|
+
else if ((flags & 8 /* FlowFlags.LoopLabel */) !== 0) {
|
|
204
|
+
// A loop is post-super when the path into its top is.
|
|
205
|
+
flow = flow.antecedents[0];
|
|
206
|
+
}
|
|
207
|
+
else if ((flags & 1024 /* FlowFlags.ReduceLabel */) !== 0) {
|
|
208
|
+
c.flowReduceLabels.push(flow);
|
|
209
|
+
const result = isPostSuperFlowNode(c, flow.antecedent, false);
|
|
210
|
+
c.flowReduceLabels.pop();
|
|
211
|
+
return result;
|
|
212
|
+
}
|
|
213
|
+
// Unreachable nodes count as post-super to silence errors.
|
|
214
|
+
else
|
|
215
|
+
return (flags & 1 /* FlowFlags.Unreachable */) !== 0;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
/** Reports `this` in a static property initializer of a class with legacy decorators. */
|
|
219
|
+
export function checkThisInStaticClassFieldInitializerInDecoratedClass(c, thisExpression, container) {
|
|
220
|
+
if (container.kind !== 173 /* SyntaxKind.PropertyDeclaration */ || !isStatic(container) || !c.legacyDecorators)
|
|
221
|
+
return;
|
|
222
|
+
const initializer = getInitializer(container);
|
|
223
|
+
if (initializer !== undefined &&
|
|
224
|
+
initializer.pos <= thisExpression.pos &&
|
|
225
|
+
thisExpression.pos <= initializer.end &&
|
|
226
|
+
hasDecoratorModifier(container.parent))
|
|
227
|
+
c.error(thisExpression, 947 /* Diagnostics.Cannot_use_this_in_a_static_property_initializer_of_a_decorated_class */);
|
|
228
|
+
}
|
|
229
|
+
function hasDecoratorModifier(node) {
|
|
230
|
+
const modifiers = getModifiersOf(node);
|
|
231
|
+
if (modifiers === undefined)
|
|
232
|
+
return false;
|
|
233
|
+
for (const modifier of modifiers)
|
|
234
|
+
if (modifier.kind === 171 /* SyntaxKind.Decorator */)
|
|
235
|
+
return true;
|
|
236
|
+
return false;
|
|
237
|
+
}
|
|
238
|
+
function getModifiersOf(node) {
|
|
239
|
+
const list = getModifiers(node);
|
|
240
|
+
return list !== undefined ? list.nodes : undefined;
|
|
241
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { CheckMode } from './checker-types.js';
|
|
2
|
+
import { type Node, type SourceFile } from './ast.js';
|
|
3
|
+
import { hasStaticModifier } from './binder-utilities.js';
|
|
4
|
+
import { type Symbol } from './symbol.js';
|
|
5
|
+
import { type Checker } from './checker.js';
|
|
6
|
+
import { type Type, TypeFlags, type UnionType } from './checker-types.js';
|
|
7
|
+
import { filterType } from './checker-type-factory.js';
|
|
8
|
+
import { getDeclarationOfAliasSymbol } from './checker-symbols.js';
|
|
9
|
+
export declare function getTypeOfSymbol(c: Checker, symbol: Symbol): Type;
|
|
10
|
+
export declare function getTypeOfParameter(c: Checker, symbol: Symbol): Type;
|
|
11
|
+
export declare function getNonMissingTypeOfSymbol(c: Checker, symbol: Symbol): Type;
|
|
12
|
+
export declare function getWriteTypeOfSymbol(c: Checker, symbol: Symbol): Type;
|
|
13
|
+
export declare function getWidenedTypeForVariableLikeDeclaration(c: Checker, declaration: Node, reportErrors: boolean): Type;
|
|
14
|
+
/** Whether a parameter, property or method is declared with `?`. */
|
|
15
|
+
export declare function isOptionalDeclaration(node: Node): boolean;
|
|
16
|
+
/** The declared or inferred type of a variable-like declaration; undefined when nothing can be inferred. */
|
|
17
|
+
export declare function getTypeForVariableLikeDeclaration(c: Checker, declaration: Node, includeOptionality: boolean, checkMode?: CheckMode): Type | undefined;
|
|
18
|
+
export declare function widenTypeInferredFromInitializer(c: Checker, declaration: Node, t: Type): Type;
|
|
19
|
+
export declare function getWidenedLiteralTypeForInitializer(c: Checker, declaration: Node, t: Type): Type;
|
|
20
|
+
export declare function widenTypeForVariableLikeDeclaration(c: Checker, t: Type | undefined, declaration: Node, reportErrors: boolean): Type;
|
|
21
|
+
export declare function declarationBelongsToPrivateAmbientMember(declaration: Node): boolean;
|
|
22
|
+
export declare function isPrivateWithinAmbient(node: Node): boolean;
|
|
23
|
+
/** What a widened type is the type of, for the implicit any messages. */
|
|
24
|
+
export declare const enum WideningKind {
|
|
25
|
+
Normal = 0,
|
|
26
|
+
FunctionReturn = 1,
|
|
27
|
+
GeneratorNext = 2,
|
|
28
|
+
GeneratorYield = 3
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Implicit-any widening of null/undefined, which strictNullChecks avoids. A function's inferred
|
|
32
|
+
* types report it only without a contextual signature, or when the contextual type is generic.
|
|
33
|
+
*/
|
|
34
|
+
export declare function reportErrorsFromWidening(c: Checker, declaration: Node, t: Type, wideningKind: WideningKind): void;
|
|
35
|
+
export declare function reportImplicitAny(c: Checker, declaration: Node, t: Type, wideningKind?: WideningKind): void;
|
|
36
|
+
export declare function getWidenedType(c: Checker, t: Type): Type;
|
|
37
|
+
/**
|
|
38
|
+
* By name, the first property of the unions of `file`'s object literals that leave the name missing.
|
|
39
|
+
* Without a checker, as on a parse thread, array literals are taken to have the global Array type, and
|
|
40
|
+
* the result is undefined where an enum the scan can't resolve decides which literals subtype reduction
|
|
41
|
+
* leaves out (`enumKeyOfMemberAccess`); the checker then scans the file itself.
|
|
42
|
+
*/
|
|
43
|
+
export declare function scanSiblingProperties(file: SourceFile, c: Checker | undefined): Map<string, Node> | undefined;
|
|
44
|
+
/** The first property of each name among the files of one of tsgo's checkers, scanned in order. */
|
|
45
|
+
export declare class SlotSiblingProperties {
|
|
46
|
+
readonly members: Map<string, Node>;
|
|
47
|
+
/** The index of the file of each name's property. */
|
|
48
|
+
readonly fileIndexes: Map<string, number>;
|
|
49
|
+
/** The index of the next file of the checker to scan. */
|
|
50
|
+
next: number;
|
|
51
|
+
constructor(first: number);
|
|
52
|
+
}
|
|
53
|
+
export declare function addOptionality(c: Checker, t: Type, isProperty: boolean, isOptional: boolean): Type;
|
|
54
|
+
export declare function getOptionalType(c: Checker, t: Type, isProperty: boolean): Type;
|
|
55
|
+
export declare function addOptionalTypeMarker(c: Checker, t: Type): Type;
|
|
56
|
+
export declare function removeOptionalTypeMarker(c: Checker, t: Type): Type;
|
|
57
|
+
export declare function removeMissingType(c: Checker, t: Type, isOptional: boolean): Type;
|
|
58
|
+
export declare function removeMissingOrUndefinedType(c: Checker, t: Type): Type;
|
|
59
|
+
export declare function getNullableType(c: Checker, t: Type, flags: TypeFlags): Type;
|
|
60
|
+
export declare function isReadonlySymbol(c: Checker, symbol: Symbol): boolean;
|
|
61
|
+
export declare function getAnnotatedAccessorTypeNode(accessor: Node | undefined): Node | undefined;
|
|
62
|
+
export declare function getWriteTypeOfAccessors(c: Checker, symbol: Symbol): Type;
|
|
63
|
+
export declare function getBaseTypeVariableOfClass(c: Checker, symbol: Symbol): Type | undefined;
|
|
64
|
+
export { getDeclarationOfAliasSymbol, filterType, hasStaticModifier };
|
|
65
|
+
export type { UnionType };
|
|
66
|
+
/** `Extract<t, string>`, or string without the global `Extract`. */
|
|
67
|
+
export declare function getExtractStringType(c: Checker, t: Type): Type;
|