tsc-ts 0.0.4 → 0.0.6
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 +34 -2
- 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 +2351 -0
- package/dist/api/compiler/ast.js +11212 -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 +1241 -0
- package/dist/api/compiler/binder.d.ts +33 -0
- package/dist/api/compiler/binder.js +2359 -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 +1641 -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 +357 -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 +788 -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 +314 -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 +291 -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 +580 -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 +2587 -0
- package/dist/api/compiler/checker-heritage.d.ts +28 -0
- package/dist/api/compiler/checker-heritage.js +901 -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 +442 -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 +200 -0
- package/dist/api/compiler/checker-members.js +2148 -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 +483 -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 +271 -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 +789 -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 +51 -0
- package/dist/api/compiler/checker-symbol-types.js +955 -0
- package/dist/api/compiler/checker-symbols.d.ts +181 -0
- package/dist/api/compiler/checker-symbols.js +1784 -0
- package/dist/api/compiler/checker-type-factory.d.ts +142 -0
- package/dist/api/compiler/checker-type-factory.js +2542 -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 +1093 -0
- package/dist/api/compiler/checker-types.js +1874 -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 +512 -0
- package/dist/api/compiler/checker.js +932 -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 +161 -0
- package/dist/api/compiler/diagnostics.js +784 -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 +144 -0
- package/dist/api/compiler/file-include.js +599 -0
- package/dist/api/compiler/file-loader.d.ts +290 -0
- package/dist/api/compiler/file-loader.js +1323 -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 +835 -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 +105 -0
- package/dist/api/compiler/link-tables.js +319 -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 +745 -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 +221 -0
- package/dist/api/compiler/parallel-parse.js +541 -0
- package/dist/api/compiler/parser.d.ts +604 -0
- package/dist/api/compiler/parser.js +6426 -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 +157 -0
- package/dist/api/compiler/printer/emit-context.js +582 -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 +529 -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 +1019 -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 +991 -0
- package/dist/api/compiler/symbol.d.ts +282 -0
- package/dist/api/compiler/symbol.js +339 -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 +677 -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 +539 -0
- package/dist/api/compiler/transformers/declarations-pseudo.d.ts +160 -0
- package/dist/api/compiler/transformers/declarations-pseudo.js +799 -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 +198 -0
- package/dist/api/compiler/transformers/declarations.d.ts +175 -0
- package/dist/api/compiler/transformers/declarations.js +2381 -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 +129 -0
- package/dist/api/compiler/transformers/reference-resolver.js +1157 -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 +10 -0
- package/dist/api/compiler/transformers/subtree-facts.js +205 -0
- package/dist/api/compiler/transformers/syntax-facts.d.ts +52 -0
- package/dist/api/compiler/transformers/syntax-facts.js +258 -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 +12870 -0
- package/src/compiler/astnav.ts +799 -0
- package/src/compiler/binder-utilities.ts +1392 -0
- package/src/compiler/binder.ts +2707 -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 +1201 -0
- package/src/compiler/checker-declared-types.ts +919 -0
- package/src/compiler/checker-decorators.ts +694 -0
- package/src/compiler/checker-deprecation.ts +355 -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 +3596 -0
- package/src/compiler/checker-heritage.ts +1240 -0
- package/src/compiler/checker-inference.ts +2584 -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 +1928 -0
- package/src/compiler/checker-literals.ts +61 -0
- package/src/compiler/checker-members.ts +2480 -0
- package/src/compiler/checker-modules.ts +2896 -0
- package/src/compiler/checker-narrowing.ts +3230 -0
- package/src/compiler/checker-object-literals.ts +591 -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 +1187 -0
- package/src/compiler/checker-symbols.ts +2157 -0
- package/src/compiler/checker-type-factory.ts +2616 -0
- package/src/compiler/checker-type-nodes.ts +1033 -0
- package/src/compiler/checker-type-operators.ts +2510 -0
- package/src/compiler/checker-types.ts +2520 -0
- package/src/compiler/checker-unused.ts +642 -0
- package/src/compiler/checker-utilities.ts +161 -0
- package/src/compiler/checker.ts +1138 -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 +858 -0
- package/src/compiler/emitter.ts +434 -0
- package/src/compiler/encoder.ts +1945 -0
- package/src/compiler/file-include.ts +741 -0
- package/src/compiler/file-loader.ts +1597 -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 +2818 -0
- package/src/compiler/init.ts +141 -0
- package/src/compiler/instantiation.ts +938 -0
- package/src/compiler/jsdoc.ts +1386 -0
- package/src/compiler/link-tables.ts +343 -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 +1071 -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 +3433 -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 +1954 -0
- package/src/compiler/parallel-parse.ts +595 -0
- package/src/compiler/parse-thread.ts +136 -0
- package/src/compiler/parser.ts +7766 -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 +684 -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 +594 -0
- package/src/compiler/program-utilities.ts +435 -0
- package/src/compiler/program.ts +1426 -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 +1166 -0
- package/src/compiler/symbol.ts +557 -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 +833 -0
- package/src/compiler/transformers/declarations-pseudo.ts +969 -0
- package/src/compiler/transformers/declarations-resolver.ts +249 -0
- package/src/compiler/transformers/declarations-syntactic.ts +1867 -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 +1213 -0
- package/src/compiler/transformers/runtime-syntax.ts +942 -0
- package/src/compiler/transformers/subtree-facts.ts +253 -0
- package/src/compiler/transformers/syntax-facts.ts +358 -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 +1422 -0
- package/src/compiler/tsc-cli.ts +669 -0
- package/src/compiler/tsc-compile.ts +446 -0
- package/src/compiler/tsc-watch.ts +922 -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,320 @@
|
|
|
1
|
+
// JSDoc semantics: the intended types of JSDoc type references like `String`, `function` and
|
|
2
|
+
// `Object<K, V>`, functions typed by a JSDoc `@type` tag, and `@param` tags without parameters.
|
|
3
|
+
import { ArrowFunction, FunctionDeclaration, FunctionExpression, MethodDeclaration, NodeVisitor, getBody, getDotDotDotToken, getExpression, getInitializer, getName, getParameters, getText, getType, } from './ast.js';
|
|
4
|
+
import { getSourceFileOfNode, isTypeNodeKind } from './binder-utilities.js';
|
|
5
|
+
import { getAttachedJSDoc, getJSDoc } from './parser.js';
|
|
6
|
+
import { isInJSFile } from './ast-utilities.js';
|
|
7
|
+
import { getGlobalTypeAliasSymbol } from './checker-symbols.js';
|
|
8
|
+
import { checkNoTypeArguments, getTypeAliasInstantiation, getTypeFromTypeNode } from './checker-type-nodes.js';
|
|
9
|
+
import { createPromiseType } from './checker-iteration.js';
|
|
10
|
+
import { isValidIndexKeyType } from './checker-utilities.js';
|
|
11
|
+
import { getRestTypeAtPosition, getReturnTypeOfSignature, getSingleCallSignature, getTypeAtPosition, } from './checker-signatures.js';
|
|
12
|
+
import { getContextualCallSignature } from './checker-contextual.js';
|
|
13
|
+
import { entityNameToString, getResolvedSymbol } from './checker-expressions.js';
|
|
14
|
+
import { isArrayType } from './checker-type-factory.js';
|
|
15
|
+
/** The type a JSDoc type reference to a JavaScript-style name means, if it is one. */
|
|
16
|
+
export function getIntendedTypeFromJSDocTypeReference(c, node) {
|
|
17
|
+
if ((node.flags & 4194304 /* NodeFlags.JSDoc */) === 0 || node.kind !== 184 /* SyntaxKind.TypeReference */)
|
|
18
|
+
return undefined;
|
|
19
|
+
const reference = node;
|
|
20
|
+
const typeName = reference.typeName;
|
|
21
|
+
if (typeName.kind !== 79 /* SyntaxKind.Identifier */)
|
|
22
|
+
return undefined;
|
|
23
|
+
const typeArguments = reference.typeArguments !== undefined ? reference.typeArguments.nodes : [];
|
|
24
|
+
switch (getText(typeName)) {
|
|
25
|
+
case 'String':
|
|
26
|
+
checkNoTypeArguments(c, node, undefined);
|
|
27
|
+
return c.stringType;
|
|
28
|
+
case 'Number':
|
|
29
|
+
checkNoTypeArguments(c, node, undefined);
|
|
30
|
+
return c.numberType;
|
|
31
|
+
case 'BigInt':
|
|
32
|
+
checkNoTypeArguments(c, node, undefined);
|
|
33
|
+
return c.bigintType;
|
|
34
|
+
case 'Boolean':
|
|
35
|
+
checkNoTypeArguments(c, node, undefined);
|
|
36
|
+
return c.booleanType;
|
|
37
|
+
case 'Void':
|
|
38
|
+
checkNoTypeArguments(c, node, undefined);
|
|
39
|
+
return c.voidType;
|
|
40
|
+
case 'Undefined':
|
|
41
|
+
checkNoTypeArguments(c, node, undefined);
|
|
42
|
+
return c.undefinedType;
|
|
43
|
+
case 'Null':
|
|
44
|
+
checkNoTypeArguments(c, node, undefined);
|
|
45
|
+
return c.nullType;
|
|
46
|
+
case 'Function':
|
|
47
|
+
case 'function':
|
|
48
|
+
checkNoTypeArguments(c, node, undefined);
|
|
49
|
+
return c.globalFunctionType;
|
|
50
|
+
case 'array':
|
|
51
|
+
if (typeArguments.length === 0 && !c.noImplicitAny)
|
|
52
|
+
return c.anyArrayType;
|
|
53
|
+
break;
|
|
54
|
+
case 'promise':
|
|
55
|
+
if (typeArguments.length === 0 && !c.noImplicitAny)
|
|
56
|
+
return createPromiseType(c, c.anyType);
|
|
57
|
+
break;
|
|
58
|
+
case 'Object':
|
|
59
|
+
if (typeArguments.length === 2) {
|
|
60
|
+
const recordSymbol = getGlobalTypeAliasSymbol(c, 'Record', 2, true);
|
|
61
|
+
if (recordSymbol !== undefined) {
|
|
62
|
+
const indexType = getTypeFromTypeNode(c, typeArguments[0]);
|
|
63
|
+
if (isValidIndexKeyType(c, indexType))
|
|
64
|
+
return getTypeAliasInstantiation(c, recordSymbol, [indexType, getTypeFromTypeNode(c, typeArguments[1])], undefined);
|
|
65
|
+
}
|
|
66
|
+
return c.anyType;
|
|
67
|
+
}
|
|
68
|
+
if (!c.noImplicitAny) {
|
|
69
|
+
checkNoTypeArguments(c, node, undefined);
|
|
70
|
+
return c.anyType;
|
|
71
|
+
}
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
return undefined;
|
|
75
|
+
}
|
|
76
|
+
// ---- Functions typed by `@type`
|
|
77
|
+
/** The JSDoc `@type` of a function, method or arrow function in a JavaScript file. */
|
|
78
|
+
export function getFullSignatureTypeNode(node) {
|
|
79
|
+
if (!isInJSFile(node))
|
|
80
|
+
return undefined;
|
|
81
|
+
if (node instanceof FunctionDeclaration)
|
|
82
|
+
return node.fullSignature;
|
|
83
|
+
if (node instanceof MethodDeclaration)
|
|
84
|
+
return node.fullSignature;
|
|
85
|
+
if (node instanceof FunctionExpression)
|
|
86
|
+
return node.fullSignature;
|
|
87
|
+
if (node instanceof ArrowFunction)
|
|
88
|
+
return node.fullSignature;
|
|
89
|
+
return undefined;
|
|
90
|
+
}
|
|
91
|
+
/** The signature a JSDoc `@type` tag gives a function. */
|
|
92
|
+
export function getSignatureOfFullSignatureType(c, node) {
|
|
93
|
+
const typeNode = getFullSignatureTypeNode(node);
|
|
94
|
+
return typeNode !== undefined ? getSingleCallSignature(c, getTypeFromTypeNode(c, typeNode)) : undefined;
|
|
95
|
+
}
|
|
96
|
+
/** The type of a parameter of a function typed by a JSDoc `@type` tag. */
|
|
97
|
+
export function getParameterTypeOfFullSignature(c, fn, parameter) {
|
|
98
|
+
const signature = getSignatureOfFullSignatureType(c, fn);
|
|
99
|
+
if (signature === undefined)
|
|
100
|
+
return undefined;
|
|
101
|
+
const pos = getParameters(fn).nodes.indexOf(parameter);
|
|
102
|
+
return getDotDotDotToken(parameter) !== undefined
|
|
103
|
+
? getRestTypeAtPosition(c, signature, pos, false)
|
|
104
|
+
: getTypeAtPosition(c, signature, pos);
|
|
105
|
+
}
|
|
106
|
+
/** The return type of a function typed by a JSDoc `@type` tag. */
|
|
107
|
+
export function getReturnTypeOfFullSignature(c, fn) {
|
|
108
|
+
const signature = getSignatureOfFullSignatureType(c, fn);
|
|
109
|
+
return signature !== undefined ? getReturnTypeOfSignature(c, signature) : undefined;
|
|
110
|
+
}
|
|
111
|
+
/** A JSDoc `@type` on a function needs a call signature taking at least its parameters. */
|
|
112
|
+
export function checkJSDocFullSignature(c, fn) {
|
|
113
|
+
const typeNode = getFullSignatureTypeNode(fn);
|
|
114
|
+
if (typeNode === undefined)
|
|
115
|
+
return;
|
|
116
|
+
if (getContextualCallSignature(c, getTypeFromTypeNode(c, typeNode), fn) === undefined)
|
|
117
|
+
c.error(typeNode, 1759 /* Diagnostics.A_JSDoc_type_tag_on_a_function_must_have_a_signature_with_the_correct_number_of_arguments */);
|
|
118
|
+
}
|
|
119
|
+
// ---- `@param` tags
|
|
120
|
+
/** The tags of the last JSDoc comment of `node` or of the declaration or statement it heads. */
|
|
121
|
+
function getAllJSDocTags(node) {
|
|
122
|
+
if ((node.flags & 4194304 /* NodeFlags.JSDoc */) !== 0)
|
|
123
|
+
return [];
|
|
124
|
+
const file = getSourceFileOfNode(node);
|
|
125
|
+
for (let current = node; current !== undefined; current = getNextJSDocCommentLocation(current)) {
|
|
126
|
+
const jsDoc = getJSDoc(file, current);
|
|
127
|
+
if (jsDoc.length === 0)
|
|
128
|
+
continue;
|
|
129
|
+
const tags = jsDoc[jsDoc.length - 1].tags;
|
|
130
|
+
if (tags !== undefined)
|
|
131
|
+
return tags.nodes;
|
|
132
|
+
}
|
|
133
|
+
return [];
|
|
134
|
+
}
|
|
135
|
+
function getNextJSDocCommentLocation(node) {
|
|
136
|
+
const parent = node.parent;
|
|
137
|
+
if (parent === undefined)
|
|
138
|
+
return undefined;
|
|
139
|
+
switch (parent.kind) {
|
|
140
|
+
case 303 /* SyntaxKind.PropertyAssignment */:
|
|
141
|
+
case 278 /* SyntaxKind.ExportAssignment */:
|
|
142
|
+
case 173 /* SyntaxKind.PropertyDeclaration */:
|
|
143
|
+
case 261 /* SyntaxKind.VariableDeclaration */:
|
|
144
|
+
case 239 /* SyntaxKind.SatisfiesExpression */:
|
|
145
|
+
case 254 /* SyntaxKind.ReturnStatement */:
|
|
146
|
+
case 244 /* SyntaxKind.VariableStatement */:
|
|
147
|
+
case 245 /* SyntaxKind.ExpressionStatement */:
|
|
148
|
+
return parent;
|
|
149
|
+
case 262 /* SyntaxKind.VariableDeclarationList */:
|
|
150
|
+
return parent.declarations.nodes[0] === node ? parent : undefined;
|
|
151
|
+
}
|
|
152
|
+
return undefined;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Reports `@param` tags of a JavaScript function naming no parameter, and qualified `@param` names
|
|
156
|
+
* without a parent `@param {object}`.
|
|
157
|
+
*/
|
|
158
|
+
export function checkUnmatchedJSDocParameters(c, node) {
|
|
159
|
+
// Only JavaScript files report unmatched tags. In a TypeScript file with `@param` tags, tsgo still resolves the
|
|
160
|
+
// `arguments` references of the body (containsArgumentsReference), which can report errors, such as TS2448 for a
|
|
161
|
+
// `const arguments`. The JSDoc of a TypeScript function is parsed only when its file has an identifier `arguments`.
|
|
162
|
+
const isJs = isInJSFile(node);
|
|
163
|
+
if (!isJs && !fileMentionsArguments(c, node))
|
|
164
|
+
return;
|
|
165
|
+
const jsdocParameters = [];
|
|
166
|
+
for (const tag of getAllJSDocTags(node)) {
|
|
167
|
+
if (tag.kind !== 333 /* SyntaxKind.JSDocParameterTag */)
|
|
168
|
+
continue;
|
|
169
|
+
const name = tag.name;
|
|
170
|
+
if (name.kind === 79 /* SyntaxKind.Identifier */ && getText(name).length === 0)
|
|
171
|
+
continue;
|
|
172
|
+
jsdocParameters.push(tag);
|
|
173
|
+
}
|
|
174
|
+
if (jsdocParameters.length === 0)
|
|
175
|
+
return;
|
|
176
|
+
const parameters = new Set();
|
|
177
|
+
const excludedParameters = new Set();
|
|
178
|
+
const params = getParameters(node).nodes;
|
|
179
|
+
for (let i = 0; i < params.length; i++) {
|
|
180
|
+
const name = getName(params[i]);
|
|
181
|
+
if (name.kind === 79 /* SyntaxKind.Identifier */)
|
|
182
|
+
parameters.add(getText(name));
|
|
183
|
+
if (name.kind === 207 /* SyntaxKind.ObjectBindingPattern */ || name.kind === 208 /* SyntaxKind.ArrayBindingPattern */)
|
|
184
|
+
excludedParameters.add(i);
|
|
185
|
+
}
|
|
186
|
+
if (containsArgumentsReference(c, node)) {
|
|
187
|
+
if (!isJs)
|
|
188
|
+
return;
|
|
189
|
+
const lastIndex = jsdocParameters.length - 1;
|
|
190
|
+
const last = jsdocParameters[lastIndex];
|
|
191
|
+
if (last.name.kind !== 79 /* SyntaxKind.Identifier */)
|
|
192
|
+
return;
|
|
193
|
+
if (excludedParameters.has(lastIndex) || parameters.has(getText(last.name)))
|
|
194
|
+
return;
|
|
195
|
+
const typeExpression = last.typeExpression;
|
|
196
|
+
const typeNode = typeExpression !== undefined ? getType(typeExpression) : undefined;
|
|
197
|
+
if (typeNode === undefined || isArrayType(c, getTypeFromTypeNode(c, typeNode)))
|
|
198
|
+
return;
|
|
199
|
+
c.error(last.name, 1758 /* Diagnostics.JSDoc_param_tag_has_name_0_but_there_is_no_parameter_with_that_name_It_would_match_arguments_if_it_had_an_array_type */, getText(last.name));
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
if (!isJs)
|
|
203
|
+
return;
|
|
204
|
+
for (let index = 0; index < jsdocParameters.length; index++) {
|
|
205
|
+
const tag = jsdocParameters[index];
|
|
206
|
+
const name = tag.name;
|
|
207
|
+
if (excludedParameters.has(index) || (name.kind === 79 /* SyntaxKind.Identifier */ && parameters.has(getText(name))))
|
|
208
|
+
continue;
|
|
209
|
+
if (name.kind === 167 /* SyntaxKind.QualifiedName */)
|
|
210
|
+
c.error(name, 1761 /* Diagnostics.Qualified_name_0_is_not_allowed_without_a_leading_param_object_1 */, entityNameToString(name), entityNameToString(name.left));
|
|
211
|
+
else if (!tag.isNameFirst)
|
|
212
|
+
c.error(name, 1753 /* Diagnostics.JSDoc_param_tag_has_name_0_but_there_is_no_parameter_with_that_name */, getText(name));
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
/** Finds a reference to `arguments` outside nested functions and types. */
|
|
216
|
+
class ArgumentsReferenceFinder extends NodeVisitor {
|
|
217
|
+
c;
|
|
218
|
+
constructor(c) {
|
|
219
|
+
super();
|
|
220
|
+
this.c = c;
|
|
221
|
+
}
|
|
222
|
+
visitNode(node) {
|
|
223
|
+
switch (node.kind) {
|
|
224
|
+
case 79 /* SyntaxKind.Identifier */:
|
|
225
|
+
return getText(node) === 'arguments' && getResolvedSymbol(this.c, node) === this.c.argumentsSymbol;
|
|
226
|
+
case 173 /* SyntaxKind.PropertyDeclaration */:
|
|
227
|
+
case 175 /* SyntaxKind.MethodDeclaration */:
|
|
228
|
+
case 178 /* SyntaxKind.GetAccessor */:
|
|
229
|
+
case 179 /* SyntaxKind.SetAccessor */: {
|
|
230
|
+
const name = getName(node);
|
|
231
|
+
if (name !== undefined && name.kind === 168 /* SyntaxKind.ComputedPropertyName */)
|
|
232
|
+
return this.visitNode(name);
|
|
233
|
+
break;
|
|
234
|
+
}
|
|
235
|
+
case 212 /* SyntaxKind.PropertyAccessExpression */:
|
|
236
|
+
case 213 /* SyntaxKind.ElementAccessExpression */:
|
|
237
|
+
return this.visitNode(getExpression(node));
|
|
238
|
+
case 303 /* SyntaxKind.PropertyAssignment */:
|
|
239
|
+
return this.visitNode(getInitializer(node));
|
|
240
|
+
}
|
|
241
|
+
if (startsNewLexicalEnvironment(node) || isTypeNodeKind(node.kind))
|
|
242
|
+
return false;
|
|
243
|
+
return node.forEachChild(this);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
function startsNewLexicalEnvironment(node) {
|
|
247
|
+
switch (node.kind) {
|
|
248
|
+
case 177 /* SyntaxKind.Constructor */:
|
|
249
|
+
case 219 /* SyntaxKind.FunctionExpression */:
|
|
250
|
+
case 263 /* SyntaxKind.FunctionDeclaration */:
|
|
251
|
+
case 220 /* SyntaxKind.ArrowFunction */:
|
|
252
|
+
case 175 /* SyntaxKind.MethodDeclaration */:
|
|
253
|
+
case 178 /* SyntaxKind.GetAccessor */:
|
|
254
|
+
case 179 /* SyntaxKind.SetAccessor */:
|
|
255
|
+
case 268 /* SyntaxKind.ModuleDeclaration */:
|
|
256
|
+
case 307 /* SyntaxKind.SourceFile */:
|
|
257
|
+
return true;
|
|
258
|
+
}
|
|
259
|
+
return false;
|
|
260
|
+
}
|
|
261
|
+
/** Whether the file of `node` has an identifier `arguments`; cached in the links of the source file. */
|
|
262
|
+
function fileMentionsArguments(c, node) {
|
|
263
|
+
const file = getSourceFileOfNode(node);
|
|
264
|
+
const links = c.nodeLinks(file);
|
|
265
|
+
if (links.mentionsArguments === 0)
|
|
266
|
+
links.mentionsArguments = file.identifierTexts.includes('arguments') ? 2 : 1;
|
|
267
|
+
return links.mentionsArguments === 2;
|
|
268
|
+
}
|
|
269
|
+
function containsArgumentsReference(c, node) {
|
|
270
|
+
const body = getBody(node);
|
|
271
|
+
if (body === undefined)
|
|
272
|
+
return false;
|
|
273
|
+
const links = c.nodeLinks(node);
|
|
274
|
+
if (links.containsArgumentsReference === 0)
|
|
275
|
+
links.containsArgumentsReference = new ArgumentsReferenceFinder(c).visitNode(body) ? 2 : 1;
|
|
276
|
+
return links.containsArgumentsReference === 2;
|
|
277
|
+
}
|
|
278
|
+
// ---- `@augments`
|
|
279
|
+
/** The rightmost identifier of `a.b.c`, or `a` itself. */
|
|
280
|
+
function getIdentifierFromEntityNameExpression(node) {
|
|
281
|
+
if (node.kind === 79 /* SyntaxKind.Identifier */)
|
|
282
|
+
return node;
|
|
283
|
+
if (node.kind === 212 /* SyntaxKind.PropertyAccessExpression */)
|
|
284
|
+
return getName(node);
|
|
285
|
+
return undefined;
|
|
286
|
+
}
|
|
287
|
+
/** An `@augments` or `@extends` tag naming another class than the `extends` clause. */
|
|
288
|
+
export class AugmentsMismatch {
|
|
289
|
+
name;
|
|
290
|
+
tagName;
|
|
291
|
+
className;
|
|
292
|
+
extendsName;
|
|
293
|
+
constructor(name, tagName, className, extendsName) {
|
|
294
|
+
this.name = name;
|
|
295
|
+
this.tagName = tagName;
|
|
296
|
+
this.className = className;
|
|
297
|
+
this.extendsName = extendsName;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
/** The `@augments` or `@extends` tag of a class whose class name differs from its `extends` clause. */
|
|
301
|
+
export function findMismatchedAugmentsTag(classLike, extendsType) {
|
|
302
|
+
const jsDoc = getAttachedJSDoc(classLike);
|
|
303
|
+
if (jsDoc === undefined)
|
|
304
|
+
return undefined;
|
|
305
|
+
for (const j of jsDoc) {
|
|
306
|
+
const tags = j.tags;
|
|
307
|
+
if (tags === undefined)
|
|
308
|
+
continue;
|
|
309
|
+
for (const tag of tags.nodes) {
|
|
310
|
+
if (tag.kind !== 323 /* SyntaxKind.JSDocAugmentsTag */)
|
|
311
|
+
continue;
|
|
312
|
+
const augments = tag;
|
|
313
|
+
const targetName = getIdentifierFromEntityNameExpression(extendsType.expression);
|
|
314
|
+
const sourceName = getIdentifierFromEntityNameExpression(augments.className.expression);
|
|
315
|
+
if (targetName !== undefined && sourceName !== undefined && getText(targetName) !== getText(sourceName))
|
|
316
|
+
return new AugmentsMismatch(sourceName, getText(augments.tagName), getText(sourceName), getText(targetName));
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
return undefined;
|
|
320
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { type JsxAttributes, type Node, type SourceFile } from './ast.js';
|
|
2
|
+
import { Diagnostic } from './diagnostics.js';
|
|
3
|
+
import { type Checker } from './checker.js';
|
|
4
|
+
import { CheckMode, type Signature, type Type } from './checker-types.js';
|
|
5
|
+
import { type Relation } from './relations.js';
|
|
6
|
+
import { ContextFlags } from './checker-contextual.js';
|
|
7
|
+
import { type InferenceContext } from './checker-inference.js';
|
|
8
|
+
import { type Symbol } from './symbol.js';
|
|
9
|
+
declare const enum JsxFlags {
|
|
10
|
+
None = 0,
|
|
11
|
+
/** An element from a named property of `JSX.IntrinsicElements`. */
|
|
12
|
+
IntrinsicNamedElement = 1,
|
|
13
|
+
/** An element from the string index signature of `JSX.IntrinsicElements`. */
|
|
14
|
+
IntrinsicIndexedElement = 2
|
|
15
|
+
}
|
|
16
|
+
/** Per-element JSX state. */
|
|
17
|
+
declare class JsxElementLinks {
|
|
18
|
+
jsxFlags: JsxFlags;
|
|
19
|
+
resolvedJsxElementAttributesType: Type | undefined;
|
|
20
|
+
resolvedSymbol: Symbol | undefined;
|
|
21
|
+
/** The resolved `JSX` namespace; `unknownSymbol` when the local lookup failed. */
|
|
22
|
+
jsxNamespace: Symbol | undefined;
|
|
23
|
+
}
|
|
24
|
+
/** Per-file JSX state: pragmas, factories and the implicit runtime import. */
|
|
25
|
+
declare class JsxFileLinks {
|
|
26
|
+
localJsxNamespace: string;
|
|
27
|
+
localJsxFactory: Node | undefined;
|
|
28
|
+
localJsxFragmentNamespace: string;
|
|
29
|
+
localJsxFragmentFactory: Node | undefined;
|
|
30
|
+
jsxFragmentType: Type | undefined;
|
|
31
|
+
/** `unknownSymbol` when there is no implicit import container. */
|
|
32
|
+
jsxImplicitImportContainer: Symbol | undefined;
|
|
33
|
+
}
|
|
34
|
+
/** The checker's JSX caches. */
|
|
35
|
+
export declare class JsxState {
|
|
36
|
+
readonly elementLinks: Map<Node, JsxElementLinks>;
|
|
37
|
+
readonly fileLinks: Map<SourceFile, JsxFileLinks>;
|
|
38
|
+
/** getJsxIntrinsicConstructorType by attributes and element type ids. */
|
|
39
|
+
readonly intrinsicConstructorTypes: Map<string, Type>;
|
|
40
|
+
jsxNamespace: string;
|
|
41
|
+
jsxFactoryEntity: Node | undefined;
|
|
42
|
+
}
|
|
43
|
+
export declare function isJsxOpeningLikeElement(node: Node): boolean;
|
|
44
|
+
/** Whether a tag name refers to an intrinsic element: a lowercase or dashed identifier, or `ns:name`. */
|
|
45
|
+
export declare function isJsxIntrinsicTagName(tagName: Node): boolean;
|
|
46
|
+
export declare function getTagNameOf(node: Node): Node;
|
|
47
|
+
export declare function getAttributesOf(node: Node): JsxAttributes;
|
|
48
|
+
/** Children that produce values: non-empty expressions, non-whitespace text and elements. */
|
|
49
|
+
export declare function getSemanticJsxChildren(children: readonly Node[]): Node[];
|
|
50
|
+
/** The name of the factory namespace in scope at `location`, such as `React`. */
|
|
51
|
+
export declare function getJsxNamespace(c: Checker, location: Node | undefined): string;
|
|
52
|
+
/** The module of the automatic runtime's implicit import, such as `react/jsx-runtime`. */
|
|
53
|
+
export declare function getJsxNamespaceContainerForImplicitImport(c: Checker, location: Node): Symbol | undefined;
|
|
54
|
+
/** The `JSX` namespace for `location`: the factory's, the runtime module's, or the global one. */
|
|
55
|
+
export declare function getJsxNamespaceAt(c: Checker, location: Node): Symbol | undefined;
|
|
56
|
+
export declare function getJsxType(c: Checker, name: string, location: Node): Type;
|
|
57
|
+
/** `JSX.Element`, or the error type when it doesn't exist. */
|
|
58
|
+
export declare function getJsxElementTypeAt(c: Checker, location: Node): Type;
|
|
59
|
+
export declare function getJsxElementChildrenPropertyName(c: Checker, ns: Symbol | undefined): string;
|
|
60
|
+
/**
|
|
61
|
+
* The `JSX.IntrinsicElements` property or index signature for an intrinsic tag, recording which in the
|
|
62
|
+
* element's flags; `unknownSymbol` when neither exists.
|
|
63
|
+
*/
|
|
64
|
+
export declare function getIntrinsicTagSymbol(c: Checker, node: Node): Symbol;
|
|
65
|
+
/** The props type a signature expects of an element's attributes. */
|
|
66
|
+
export declare function getEffectiveFirstArgumentForJsxSignature(c: Checker, signature: Signature, node: Node): Type;
|
|
67
|
+
export declare function checkJsxAttribute(c: Checker, node: Node, checkMode: CheckMode): Type;
|
|
68
|
+
export declare function checkJsxChildren(c: Checker, node: Node, checkMode: CheckMode): Type[];
|
|
69
|
+
/** The object type of an element's attributes and children, like an object literal's. */
|
|
70
|
+
export declare function createJsxAttributesTypeFromAttributesProperty(c: Checker, openingLikeElement: Node, checkMode: CheckMode): Type;
|
|
71
|
+
export declare function isTupleLikeType(c: Checker, t: Type): boolean;
|
|
72
|
+
export declare function isArrayOrTupleLikeType(c: Checker, t: Type): boolean;
|
|
73
|
+
/** The attributes argument of an element, if it has attributes or children. */
|
|
74
|
+
export declare function getEffectiveJsxArguments(node: Node): Node[];
|
|
75
|
+
/** Whether `signature` accepts the element's attributes, reporting why not when `reportErrors`. */
|
|
76
|
+
export declare function checkApplicableSignatureForJsxCallLikeElement(c: Checker, node: Node, signature: Signature, relation: Relation, checkMode: CheckMode, reportErrors: boolean, diagnosticOutput: Diagnostic[] | undefined): boolean;
|
|
77
|
+
export declare function resolveJsxOpeningLikeElement(c: Checker, node: Node, checkMode: CheckMode): Signature;
|
|
78
|
+
/** The signature an element resolves to, computed once. */
|
|
79
|
+
export declare function getResolvedJsxSignature(c: Checker, node: Node): Signature;
|
|
80
|
+
/** Infers a generic component's type arguments from the element's attributes. */
|
|
81
|
+
export declare function inferJsxTypeArguments(c: Checker, node: Node, signature: Signature, checkMode: CheckMode, context: InferenceContext): Type[];
|
|
82
|
+
/** Checks a JSX expression, element, fragment or attributes node. */
|
|
83
|
+
export declare function checkJsx(c: Checker, node: Node, checkMode: CheckMode): Type;
|
|
84
|
+
/** The deferred check of an element: its signature, closing tag and children. */
|
|
85
|
+
export declare function checkJsxElementDeferred(c: Checker, node: Node): void;
|
|
86
|
+
export declare function getContextualTypeForJsxExpression(c: Checker, node: Node, contextFlags: ContextFlags): Type | undefined;
|
|
87
|
+
export declare function getContextualTypeForJsxAttribute(c: Checker, attribute: Node, contextFlags: ContextFlags): Type | undefined;
|
|
88
|
+
export declare function getContextualJsxElementAttributesType(c: Checker, node: Node, contextFlags: ContextFlags): Type | undefined;
|
|
89
|
+
export declare function isJsxAttributesContextSensitive(c: Checker, node: Node): boolean;
|
|
90
|
+
/** Reports attribute and children errors at the attributes and children themselves. */
|
|
91
|
+
export declare function elaborateJsxComponents(c: Checker, node: Node, source: Type, target: Type, relation: Relation, diagnosticOutput: Diagnostic[] | undefined): boolean;
|
|
92
|
+
/** Suggests `htmlFor` for `for`, `className` for `class`, or a similar property name. */
|
|
93
|
+
export declare function getSuggestedSymbolForNonexistentJSXAttribute(c: Checker, name: string, containingType: Type): Symbol | undefined;
|
|
94
|
+
export {};
|