tsc-ts 0.0.9 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/bin/tsc-ts.js +70 -1
- package/dist/api/compiler/ast-utilities.d.ts +19 -1
- package/dist/api/compiler/ast-utilities.js +180 -95
- package/dist/api/compiler/ast.d.ts +22 -15
- package/dist/api/compiler/ast.js +1026 -995
- package/dist/api/compiler/astnav.js +15 -15
- package/dist/api/compiler/binder-utilities.js +186 -186
- package/dist/api/compiler/binder.js +290 -263
- package/dist/api/compiler/character-codes.js +2 -2
- package/dist/api/compiler/checker-calls.js +178 -124
- package/dist/api/compiler/checker-classes.d.ts +14 -3
- package/dist/api/compiler/checker-classes.js +134 -90
- package/dist/api/compiler/checker-contextual.js +64 -61
- package/dist/api/compiler/checker-declaration-order.js +79 -79
- package/dist/api/compiler/checker-declarations.d.ts +1 -0
- package/dist/api/compiler/checker-declarations.js +160 -136
- package/dist/api/compiler/checker-declared-types.js +67 -65
- package/dist/api/compiler/checker-decorators.js +77 -77
- package/dist/api/compiler/checker-deprecation.d.ts +8 -3
- package/dist/api/compiler/checker-deprecation.js +76 -55
- package/dist/api/compiler/checker-destructuring.js +47 -45
- package/dist/api/compiler/checker-elaboration.js +24 -24
- package/dist/api/compiler/checker-emit-helpers.js +4 -4
- package/dist/api/compiler/checker-emit-resolver.d.ts +4 -2
- package/dist/api/compiler/checker-emit-resolver.js +25 -13
- package/dist/api/compiler/checker-evaluator.js +9 -9
- package/dist/api/compiler/checker-expressions.js +244 -211
- package/dist/api/compiler/checker-functions.js +113 -107
- package/dist/api/compiler/checker-generated-code.d.ts +0 -11
- package/dist/api/compiler/checker-generated-code.js +28 -52
- package/dist/api/compiler/checker-grammar.d.ts +1 -0
- package/dist/api/compiler/checker-grammar.js +472 -440
- package/dist/api/compiler/checker-heritage.js +91 -93
- package/dist/api/compiler/checker-inference.d.ts +77 -5
- package/dist/api/compiler/checker-inference.js +487 -107
- package/dist/api/compiler/checker-iteration.d.ts +0 -10
- package/dist/api/compiler/checker-iteration.js +35 -52
- package/dist/api/compiler/checker-javascript.js +14 -14
- package/dist/api/compiler/checker-jsdoc.d.ts +8 -10
- package/dist/api/compiler/checker-jsdoc.js +67 -58
- package/dist/api/compiler/checker-jsx.js +105 -88
- package/dist/api/compiler/checker-members.d.ts +9 -2
- package/dist/api/compiler/checker-members.js +212 -75
- package/dist/api/compiler/checker-modules.d.ts +15 -6
- package/dist/api/compiler/checker-modules.js +469 -309
- package/dist/api/compiler/checker-narrowing.js +273 -189
- package/dist/api/compiler/checker-object-literals.js +25 -22
- package/dist/api/compiler/checker-operators.js +126 -118
- package/dist/api/compiler/checker-overloads.js +27 -27
- package/dist/api/compiler/checker-property-access.js +59 -55
- package/dist/api/compiler/checker-services.d.ts +1 -0
- package/dist/api/compiler/checker-services.js +222 -210
- package/dist/api/compiler/checker-signatures.js +65 -49
- package/dist/api/compiler/checker-source-file.d.ts +5 -0
- package/dist/api/compiler/checker-source-file.js +154 -130
- package/dist/api/compiler/checker-statements.js +33 -32
- package/dist/api/compiler/checker-super.js +50 -50
- package/dist/api/compiler/checker-symbol-types.js +109 -93
- package/dist/api/compiler/checker-symbols.d.ts +13 -1
- package/dist/api/compiler/checker-symbols.js +264 -149
- package/dist/api/compiler/checker-type-factory.d.ts +5 -0
- package/dist/api/compiler/checker-type-factory.js +145 -36
- package/dist/api/compiler/checker-type-nodes.d.ts +1 -0
- package/dist/api/compiler/checker-type-nodes.js +179 -141
- package/dist/api/compiler/checker-type-operators.d.ts +2 -0
- package/dist/api/compiler/checker-type-operators.js +110 -63
- package/dist/api/compiler/checker-types.d.ts +80 -3
- package/dist/api/compiler/checker-types.js +121 -2
- package/dist/api/compiler/checker-unused.js +114 -118
- package/dist/api/compiler/checker-utilities.js +11 -11
- package/dist/api/compiler/checker.d.ts +104 -31
- package/dist/api/compiler/checker.js +181 -33
- package/dist/api/compiler/command-line.d.ts +1 -3
- package/dist/api/compiler/command-line.js +47 -44
- package/dist/api/compiler/compile-program.d.ts +42 -3
- package/dist/api/compiler/compile-program.js +139 -27
- package/dist/api/compiler/diagnostic-messages.d.ts +1849 -1774
- package/dist/api/compiler/diagnostic-messages.js +128 -122
- package/dist/api/compiler/diagnostics.d.ts +22 -0
- package/dist/api/compiler/diagnostics.js +93 -11
- package/dist/api/compiler/emitter.d.ts +7 -1
- package/dist/api/compiler/emitter.js +53 -11
- package/dist/api/compiler/file-include.d.ts +2 -1
- package/dist/api/compiler/file-include.js +11 -7
- package/dist/api/compiler/file-loader.d.ts +21 -1
- package/dist/api/compiler/file-loader.js +201 -48
- package/dist/api/compiler/instantiation.d.ts +7 -0
- package/dist/api/compiler/instantiation.js +101 -49
- package/dist/api/compiler/jsdoc.js +23 -23
- package/dist/api/compiler/link-tables.d.ts +48 -18
- package/dist/api/compiler/link-tables.js +80 -37
- package/dist/api/compiler/locales/cs-CZ.d.ts +1 -1
- package/dist/api/compiler/locales/cs-CZ.js +1 -1
- package/dist/api/compiler/locales/de-DE.d.ts +1 -1
- package/dist/api/compiler/locales/de-DE.js +1 -1
- package/dist/api/compiler/locales/es-ES.d.ts +1 -1
- package/dist/api/compiler/locales/es-ES.js +1 -1
- package/dist/api/compiler/locales/fr-FR.d.ts +1 -1
- package/dist/api/compiler/locales/fr-FR.js +1 -1
- package/dist/api/compiler/locales/it-IT.d.ts +1 -1
- package/dist/api/compiler/locales/it-IT.js +1 -1
- package/dist/api/compiler/locales/ja-JP.d.ts +1 -1
- package/dist/api/compiler/locales/ja-JP.js +1 -1
- package/dist/api/compiler/locales/ko-KR.d.ts +1 -1
- package/dist/api/compiler/locales/ko-KR.js +1 -1
- package/dist/api/compiler/locales/pl-PL.d.ts +1 -1
- package/dist/api/compiler/locales/pl-PL.js +1 -1
- package/dist/api/compiler/locales/pt-BR.d.ts +1 -1
- package/dist/api/compiler/locales/pt-BR.js +1 -1
- package/dist/api/compiler/locales/ru-RU.d.ts +1 -1
- package/dist/api/compiler/locales/ru-RU.js +1 -1
- package/dist/api/compiler/locales/tr-TR.d.ts +1 -1
- package/dist/api/compiler/locales/tr-TR.js +1 -1
- package/dist/api/compiler/locales/zh-CN.d.ts +1 -1
- package/dist/api/compiler/locales/zh-CN.js +1 -1
- package/dist/api/compiler/locales/zh-TW.d.ts +1 -1
- package/dist/api/compiler/locales/zh-TW.js +1 -1
- package/dist/api/compiler/module-resolution-types.js +6 -6
- package/dist/api/compiler/module-resolution.d.ts +10 -1
- package/dist/api/compiler/module-resolution.js +115 -84
- package/dist/api/compiler/module-specifiers.d.ts +15 -0
- package/dist/api/compiler/module-specifiers.js +24 -18
- package/dist/api/compiler/name-resolver.js +74 -65
- package/dist/api/compiler/node-builder-names.d.ts +11 -3
- package/dist/api/compiler/node-builder-names.js +210 -90
- package/dist/api/compiler/node-builder-pseudo.js +29 -31
- package/dist/api/compiler/node-builder-reuse.js +23 -22
- package/dist/api/compiler/node-builder.d.ts +18 -1
- package/dist/api/compiler/node-builder.js +191 -102
- package/dist/api/compiler/option-declarations.d.ts +2 -6
- package/dist/api/compiler/option-declarations.js +315 -375
- package/dist/api/compiler/options.d.ts +15 -33
- package/dist/api/compiler/options.js +21 -54
- package/dist/api/compiler/output-paths.d.ts +4 -1
- package/dist/api/compiler/output-paths.js +6 -11
- package/dist/api/compiler/package-json.d.ts +3 -3
- package/dist/api/compiler/package-json.js +11 -10
- package/dist/api/compiler/parallel-parse.d.ts +3 -2
- package/dist/api/compiler/parallel-parse.js +17 -5
- package/dist/api/compiler/parser.d.ts +40 -19
- package/dist/api/compiler/parser.js +308 -216
- package/dist/api/compiler/path.d.ts +9 -0
- package/dist/api/compiler/path.js +20 -3
- package/dist/api/compiler/printer/emit-context.d.ts +5 -1
- package/dist/api/compiler/printer/emit-context.js +20 -1
- package/dist/api/compiler/printer/factory-base.d.ts +2 -2
- package/dist/api/compiler/printer/factory-base.js +7 -3
- package/dist/api/compiler/printer/factory.js +3 -1
- package/dist/api/compiler/printer/helpers.js +10 -1
- package/dist/api/compiler/printer/name-generator.d.ts +1 -1
- package/dist/api/compiler/printer/name-generator.js +35 -16
- package/dist/api/compiler/printer/printer.d.ts +49 -2
- package/dist/api/compiler/printer/printer.js +539 -293
- package/dist/api/compiler/printer/utilities.js +149 -147
- package/dist/api/compiler/program-checker.d.ts +12 -2
- package/dist/api/compiler/program-checker.js +88 -34
- package/dist/api/compiler/program-utilities.d.ts +3 -1
- package/dist/api/compiler/program-utilities.js +28 -15
- package/dist/api/compiler/program.d.ts +4 -6
- package/dist/api/compiler/program.js +74 -87
- package/dist/api/compiler/pseudo-bigint.d.ts +2 -0
- package/dist/api/compiler/pseudo-bigint.js +18 -0
- package/dist/api/compiler/regexp-checker.d.ts +1 -1
- package/dist/api/compiler/regexp-checker.js +93 -76
- package/dist/api/compiler/relations.d.ts +27 -4
- package/dist/api/compiler/relations.js +347 -180
- package/dist/api/compiler/reparser.js +60 -56
- package/dist/api/compiler/scanner.d.ts +19 -2
- package/dist/api/compiler/scanner.js +123 -108
- package/dist/api/compiler/shared-results.d.ts +463 -0
- package/dist/api/compiler/shared-results.js +2128 -0
- package/dist/api/compiler/sourcemap.js +2 -2
- package/dist/api/compiler/symbol-accessibility.js +87 -74
- package/dist/api/compiler/symbol.d.ts +23 -14
- package/dist/api/compiler/symbol.js +23 -11
- package/dist/api/compiler/syntax-kind.d.ts +198 -197
- package/dist/api/compiler/transformers/alias-references.js +247 -139
- package/dist/api/compiler/transformers/async-utilities.js +25 -25
- package/dist/api/compiler/transformers/async.d.ts +0 -1
- package/dist/api/compiler/transformers/async.js +64 -77
- package/dist/api/compiler/transformers/class-fields.d.ts +1 -0
- package/dist/api/compiler/transformers/class-fields.js +81 -78
- package/dist/api/compiler/transformers/commonjs-module.js +18 -15
- package/dist/api/compiler/transformers/const-enum-inliner.js +1 -1
- package/dist/api/compiler/transformers/declarations-diagnostics.js +247 -244
- package/dist/api/compiler/transformers/declarations-pseudo.js +100 -100
- package/dist/api/compiler/transformers/declarations-resolver.d.ts +0 -3
- package/dist/api/compiler/transformers/declarations-syntactic.d.ts +1 -2
- package/dist/api/compiler/transformers/declarations-syntactic.js +134 -156
- package/dist/api/compiler/transformers/declarations-tracker.js +18 -18
- package/dist/api/compiler/transformers/declarations.d.ts +4 -1
- package/dist/api/compiler/transformers/declarations.js +305 -238
- package/dist/api/compiler/transformers/decorator-metadata.d.ts +1 -1
- package/dist/api/compiler/transformers/decorator-metadata.js +53 -45
- package/dist/api/compiler/transformers/decorator-utilities.js +24 -24
- package/dist/api/compiler/transformers/destructuring.js +19 -18
- package/dist/api/compiler/transformers/emit-resolver.js +1 -1
- package/dist/api/compiler/transformers/es-decorators.js +55 -55
- package/dist/api/compiler/transformers/external-module-info.js +3 -3
- package/dist/api/compiler/transformers/for-await.js +25 -25
- package/dist/api/compiler/transformers/import-elision.js +14 -14
- package/dist/api/compiler/transformers/jsx.js +12 -12
- package/dist/api/compiler/transformers/legacy-decorators.js +17 -17
- package/dist/api/compiler/transformers/module.js +8 -8
- package/dist/api/compiler/transformers/named-evaluation.js +4 -4
- package/dist/api/compiler/transformers/object-rest-spread.js +20 -20
- package/dist/api/compiler/transformers/optional-chain.js +10 -10
- package/dist/api/compiler/transformers/reference-resolver.d.ts +12 -1
- package/dist/api/compiler/transformers/reference-resolver.js +131 -69
- package/dist/api/compiler/transformers/runtime-syntax.js +35 -31
- package/dist/api/compiler/transformers/subtree-facts.js +47 -47
- package/dist/api/compiler/transformers/syntax-facts.js +56 -58
- package/dist/api/compiler/transformers/type-eraser.js +73 -66
- package/dist/api/compiler/transformers/type-serialization.js +24 -24
- package/dist/api/compiler/transformers/using.js +12 -12
- package/dist/api/compiler/transformers/utilities.js +77 -77
- package/dist/api/compiler/transformers/visitor-base.js +172 -172
- package/dist/api/compiler/transformers/visitor-hooks.js +6 -2
- package/dist/api/compiler/tsconfig.d.ts +10 -2
- package/dist/api/compiler/tsconfig.js +136 -48
- package/dist/api/compiler/type-printer.js +40 -3
- package/dist/api/compiler/types.d.ts +2 -1
- package/dist/api/library/ast.generated.d.ts +42 -39
- package/dist/api/library/ast.generated.js +1 -1
- package/dist/api/library/compiler-options.generated.d.ts +111 -100
- package/dist/api/library/compiler-options.generated.js +1 -1
- package/dist/api/library/disk.js +12 -1
- package/dist/api/library/enums.generated.d.ts +206 -206
- package/dist/api/library/enums.generated.js +206 -206
- package/dist/api/library/nodes.js +26 -26
- package/package.json +9 -9
- package/src/compiler/ast-utilities.ts +99 -7
- package/src/compiler/ast.ts +58 -26
- package/src/compiler/binder.ts +39 -4
- package/src/compiler/character-codes.ts +2 -2
- package/src/compiler/checker-calls.ts +79 -9
- package/src/compiler/checker-classes.ts +78 -24
- package/src/compiler/checker-contextual.ts +6 -1
- package/src/compiler/checker-declarations.ts +31 -4
- package/src/compiler/checker-declared-types.ts +8 -5
- package/src/compiler/checker-decorators.ts +1 -1
- package/src/compiler/checker-deprecation.ts +29 -8
- package/src/compiler/checker-destructuring.ts +10 -3
- package/src/compiler/checker-emit-helpers.ts +1 -0
- package/src/compiler/checker-emit-resolver.ts +16 -6
- package/src/compiler/checker-expressions.ts +79 -46
- package/src/compiler/checker-functions.ts +21 -6
- package/src/compiler/checker-generated-code.ts +2 -22
- package/src/compiler/checker-grammar.ts +136 -62
- package/src/compiler/checker-heritage.ts +22 -21
- package/src/compiler/checker-inference.ts +514 -82
- package/src/compiler/checker-iteration.ts +18 -31
- package/src/compiler/checker-javascript.ts +1 -1
- package/src/compiler/checker-jsdoc.ts +50 -27
- package/src/compiler/checker-jsx.ts +26 -4
- package/src/compiler/checker-members.ts +200 -56
- package/src/compiler/checker-modules.ts +332 -65
- package/src/compiler/checker-narrowing.ts +98 -19
- package/src/compiler/checker-object-literals.ts +3 -0
- package/src/compiler/checker-operators.ts +11 -4
- package/src/compiler/checker-property-access.ts +7 -2
- package/src/compiler/checker-services.ts +39 -12
- package/src/compiler/checker-signatures.ts +15 -1
- package/src/compiler/checker-source-file.ts +39 -13
- package/src/compiler/checker-statements.ts +3 -2
- package/src/compiler/checker-symbol-types.ts +29 -6
- package/src/compiler/checker-symbols.ts +158 -15
- package/src/compiler/checker-type-factory.ts +124 -23
- package/src/compiler/checker-type-nodes.ts +46 -3
- package/src/compiler/checker-type-operators.ts +83 -26
- package/src/compiler/checker-types.ts +147 -4
- package/src/compiler/checker-unused.ts +9 -14
- package/src/compiler/checker.ts +203 -39
- package/src/compiler/command-line.ts +28 -28
- package/src/compiler/compile-program.ts +167 -27
- package/src/compiler/decoder.ts +13 -4
- package/src/compiler/diagnostic-messages.ts +1973 -1892
- package/src/compiler/diagnostics.ts +84 -3
- package/src/compiler/emitter.ts +57 -8
- package/src/compiler/encoder.ts +23 -8
- package/src/compiler/file-include.ts +9 -3
- package/src/compiler/file-loader.ts +197 -38
- package/src/compiler/help.ts +10 -14
- package/src/compiler/incremental.ts +165 -30
- package/src/compiler/init.ts +2 -7
- package/src/compiler/instantiation.ts +77 -22
- package/src/compiler/jsdoc.ts +3 -1
- package/src/compiler/link-tables.ts +82 -37
- package/src/compiler/locales/cs-CZ.ts +1 -1
- package/src/compiler/locales/de-DE.ts +1 -1
- package/src/compiler/locales/es-ES.ts +1 -1
- package/src/compiler/locales/fr-FR.ts +1 -1
- package/src/compiler/locales/it-IT.ts +1 -1
- package/src/compiler/locales/ja-JP.ts +1 -1
- package/src/compiler/locales/ko-KR.ts +1 -1
- package/src/compiler/locales/pl-PL.ts +1 -1
- package/src/compiler/locales/pt-BR.ts +1 -1
- package/src/compiler/locales/ru-RU.ts +1 -1
- package/src/compiler/locales/tr-TR.ts +1 -1
- package/src/compiler/locales/zh-CN.ts +1 -1
- package/src/compiler/locales/zh-TW.ts +1 -1
- package/src/compiler/module-resolution.ts +44 -8
- package/src/compiler/module-specifiers.ts +62 -20
- package/src/compiler/name-resolver.ts +9 -1
- package/src/compiler/node-builder-names.ts +236 -54
- package/src/compiler/node-builder-pseudo.ts +4 -7
- package/src/compiler/node-builder-reuse.ts +5 -4
- package/src/compiler/node-builder.ts +130 -31
- package/src/compiler/option-declarations.ts +33 -103
- package/src/compiler/options.ts +23 -62
- package/src/compiler/output-paths.ts +5 -18
- package/src/compiler/package-entrypoints.ts +345 -0
- package/src/compiler/package-json.ts +4 -4
- package/src/compiler/parallel-check.ts +326 -52
- package/src/compiler/parallel-emit.ts +320 -0
- package/src/compiler/parallel-parse.ts +16 -5
- package/src/compiler/parse-thread.ts +3 -0
- package/src/compiler/parser.ts +156 -39
- package/src/compiler/path.ts +22 -2
- package/src/compiler/printer/emit-context.ts +21 -0
- package/src/compiler/printer/factory-base.ts +10 -3
- package/src/compiler/printer/factory.ts +4 -1
- package/src/compiler/printer/helpers.ts +10 -1
- package/src/compiler/printer/name-generator.ts +24 -2
- package/src/compiler/printer/printer.ts +266 -30
- package/src/compiler/printer/utilities.ts +8 -2
- package/src/compiler/program-checker.ts +57 -5
- package/src/compiler/program-utilities.ts +23 -10
- package/src/compiler/program.ts +18 -26
- package/src/compiler/pseudo-bigint.ts +17 -0
- package/src/compiler/regexp-checker.ts +63 -30
- package/src/compiler/relations.ts +240 -77
- package/src/compiler/reparser.ts +7 -2
- package/src/compiler/scanner.ts +109 -79
- package/src/compiler/shared-results.ts +2414 -0
- package/src/compiler/show-config.ts +18 -1
- package/src/compiler/sourcemap.ts +2 -2
- package/src/compiler/symbol-accessibility.ts +26 -3
- package/src/compiler/symbol.ts +46 -24
- package/src/compiler/syntax-kind.ts +188 -187
- package/src/compiler/thread-entry.ts +64 -4
- package/src/compiler/transformers/alias-references.ts +123 -4
- package/src/compiler/transformers/async.ts +2 -17
- package/src/compiler/transformers/class-fields.ts +13 -12
- package/src/compiler/transformers/commonjs-module.ts +11 -7
- package/src/compiler/transformers/declarations-diagnostics.ts +5 -3
- package/src/compiler/transformers/declarations-pseudo.ts +2 -4
- package/src/compiler/transformers/declarations-resolver.ts +0 -3
- package/src/compiler/transformers/declarations-syntactic.ts +1 -21
- package/src/compiler/transformers/declarations.ts +134 -48
- package/src/compiler/transformers/decorator-metadata.ts +9 -1
- package/src/compiler/transformers/destructuring.ts +4 -3
- package/src/compiler/transformers/external-module-info.ts +1 -1
- package/src/compiler/transformers/jsx.ts +2 -1
- package/src/compiler/transformers/reference-resolver.ts +83 -19
- package/src/compiler/transformers/runtime-syntax.ts +6 -1
- package/src/compiler/transformers/syntax-facts.ts +2 -7
- package/src/compiler/transformers/type-eraser.ts +10 -1
- package/src/compiler/transformers/type-serialization.ts +3 -2
- package/src/compiler/transformers/visitor-base.ts +2 -1
- package/src/compiler/transformers/visitor-hooks.ts +9 -4
- package/src/compiler/tsc-build.ts +66 -9
- package/src/compiler/tsc-cli.ts +7 -0
- package/src/compiler/tsc-compile.ts +284 -4
- package/src/compiler/tsc-watch.ts +74 -45
- package/src/compiler/tsconfig.ts +176 -19
- package/src/compiler/type-printer.ts +36 -2
- package/src/compiler/types.ts +2 -1
- package/src/library/ast.generated.ts +57 -41
- package/src/library/compiler-options.generated.ts +117 -103
- package/src/library/disk.ts +10 -1
- package/src/library/enums.generated.ts +196 -196
|
@@ -17,6 +17,7 @@ import {
|
|
|
17
17
|
TypeFlags,
|
|
18
18
|
ObjectFlags,
|
|
19
19
|
type TypeReference,
|
|
20
|
+
getMappedType,
|
|
20
21
|
} from './checker-types.js';
|
|
21
22
|
import {
|
|
22
23
|
createTypeFromGenericGlobalType,
|
|
@@ -127,30 +128,18 @@ function anyIterationTypes(c: Checker): IterationTypes {
|
|
|
127
128
|
return new IterationTypes(c.anyType, c.anyType, c.anyType);
|
|
128
129
|
}
|
|
129
130
|
|
|
130
|
-
/**
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
/** Reports the not-iterable errors deferred while checking a file. */
|
|
146
|
-
export function produceDeferredIterationErrors(c: Checker): void {
|
|
147
|
-
const errors = c.deferredIterationErrors;
|
|
148
|
-
if (errors.length === 0) return;
|
|
149
|
-
c.deferredIterationErrors = [];
|
|
150
|
-
for (const e of errors) {
|
|
151
|
-
const diagnostic = reportTypeNotIterableError(c, e.errorNode, e.type, e.allowAsyncIterables);
|
|
152
|
-
for (const d of e.related) diagnostic.addRelatedInfo(d);
|
|
153
|
-
}
|
|
131
|
+
/** Defers a not-iterable error, so printing its type can't resolve types that are being resolved. */
|
|
132
|
+
function deferTypeNotIterableError(
|
|
133
|
+
c: Checker,
|
|
134
|
+
errorNode: Node,
|
|
135
|
+
t: Type,
|
|
136
|
+
allowAsyncIterables: boolean,
|
|
137
|
+
related: Diagnostic[],
|
|
138
|
+
): void {
|
|
139
|
+
c.deferDiagnostic(errorNode, () => {
|
|
140
|
+
const diagnostic = reportTypeNotIterableError(c, errorNode, t, allowAsyncIterables);
|
|
141
|
+
for (const d of related) diagnostic.addRelatedInfo(d);
|
|
142
|
+
});
|
|
154
143
|
}
|
|
155
144
|
|
|
156
145
|
// ---- Global types
|
|
@@ -493,8 +482,7 @@ function getIterationTypesOfIterableWorker(
|
|
|
493
482
|
for (const constituent of typesOf(t)) {
|
|
494
483
|
const iterationTypes = getIterationTypesOfIterableWorker(c, constituent, use, undefined);
|
|
495
484
|
if (!iterationTypes.hasTypes()) {
|
|
496
|
-
if (errorNode !== undefined
|
|
497
|
-
c.deferredIterationErrors.push(new DeferredIterationError(errorNode, t, allowAsync, []));
|
|
485
|
+
if (errorNode !== undefined) deferTypeNotIterableError(c, errorNode, t, allowAsync, []);
|
|
498
486
|
return noIterationTypes();
|
|
499
487
|
}
|
|
500
488
|
all.push(iterationTypes);
|
|
@@ -524,8 +512,7 @@ function getIterationTypesOfIterableWorker(
|
|
|
524
512
|
return allowAsync ? getAsyncFromSyncIterationTypes(c, iterationTypes, errorNode) : iterationTypes;
|
|
525
513
|
}
|
|
526
514
|
}
|
|
527
|
-
if (errorNode !== undefined
|
|
528
|
-
c.deferredIterationErrors.push(new DeferredIterationError(errorNode, t, allowAsync, diagnostics));
|
|
515
|
+
if (errorNode !== undefined) deferTypeNotIterableError(c, errorNode, t, allowAsync, diagnostics);
|
|
529
516
|
return noIterationTypes();
|
|
530
517
|
}
|
|
531
518
|
|
|
@@ -725,9 +712,9 @@ function getIterationTypesOfMethod(
|
|
|
725
712
|
const mapper = (methodType as ObjectType).mapper;
|
|
726
713
|
if (mapper !== undefined)
|
|
727
714
|
return new IterationTypes(
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
methodName === 'next' ?
|
|
715
|
+
getMappedType(typeParameters[0]!, mapper),
|
|
716
|
+
getMappedType(typeParameters[1]!, mapper),
|
|
717
|
+
methodName === 'next' ? getMappedType(typeParameters[2]!, mapper) : undefined,
|
|
731
718
|
);
|
|
732
719
|
}
|
|
733
720
|
}
|
|
@@ -406,7 +406,7 @@ export function isCommonJSRequire(c: Checker, node: Node): boolean {
|
|
|
406
406
|
|
|
407
407
|
/** The type of the module a `require("m")` call names. */
|
|
408
408
|
export function resolveExternalModuleTypeByLiteral(c: Checker, name: Node): Type {
|
|
409
|
-
const moduleSymbol = resolveExternalModuleName(c, name, name, false);
|
|
409
|
+
const moduleSymbol = resolveExternalModuleName(c, name, name, false, undefined);
|
|
410
410
|
if (moduleSymbol !== undefined) {
|
|
411
411
|
const resolved = resolveExternalModuleSymbol(c, moduleSymbol, false);
|
|
412
412
|
if (resolved !== undefined) return getTypeOfSymbol(c, resolved);
|
|
@@ -24,7 +24,13 @@ import {
|
|
|
24
24
|
getText,
|
|
25
25
|
getType,
|
|
26
26
|
} from './ast.js';
|
|
27
|
-
import {
|
|
27
|
+
import {
|
|
28
|
+
getSourceFileOfNode,
|
|
29
|
+
getSourceTextOfNode,
|
|
30
|
+
isEntityNameExpression,
|
|
31
|
+
isTypeNodeKind,
|
|
32
|
+
} from './binder-utilities.js';
|
|
33
|
+
import { isTypeAssignableTo, isTypeIdenticalTo } from './relations.js';
|
|
28
34
|
import { getAttachedJSDoc, getJSDoc } from './parser.js';
|
|
29
35
|
import { isInJSFile } from './ast-utilities.js';
|
|
30
36
|
import { Diagnostics } from './diagnostics.js';
|
|
@@ -44,6 +50,7 @@ import {
|
|
|
44
50
|
import { getContextualCallSignature } from './checker-contextual.js';
|
|
45
51
|
import { entityNameToString, getResolvedSymbol } from './checker-expressions.js';
|
|
46
52
|
import { isArrayType } from './checker-type-factory.js';
|
|
53
|
+
import { checkSourceElement } from './checker-source-file.js';
|
|
47
54
|
|
|
48
55
|
/** The type a JSDoc type reference to a JavaScript-style name means, if it is one. */
|
|
49
56
|
export function getIntendedTypeFromJSDocTypeReference(c: Checker, node: Node): Type | undefined {
|
|
@@ -142,6 +149,12 @@ export function getReturnTypeOfFullSignature(c: Checker, fn: Node): Type | undef
|
|
|
142
149
|
return signature !== undefined ? getReturnTypeOfSignature(c, signature) : undefined;
|
|
143
150
|
}
|
|
144
151
|
|
|
152
|
+
/** Checks the type of a JSDoc `@type` on a function as a type node. */
|
|
153
|
+
export function checkJSDocFullSignatureType(c: Checker, fn: Node): void {
|
|
154
|
+
const typeNode = getFullSignatureTypeNode(fn);
|
|
155
|
+
if (typeNode !== undefined) checkSourceElement(c, typeNode);
|
|
156
|
+
}
|
|
157
|
+
|
|
145
158
|
/** A JSDoc `@type` on a function needs a call signature taking at least its parameters. */
|
|
146
159
|
export function checkJSDocFullSignature(c: Checker, fn: Node): void {
|
|
147
160
|
const typeNode = getFullSignatureTypeNode(fn);
|
|
@@ -322,39 +335,49 @@ function getIdentifierFromEntityNameExpression(node: Node): Node | undefined {
|
|
|
322
335
|
return undefined;
|
|
323
336
|
}
|
|
324
337
|
|
|
325
|
-
/**
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
/** The `@augments` or `@extends` tag of a class whose class name differs from its `extends` clause. */
|
|
341
|
-
export function findMismatchedAugmentsTag(
|
|
342
|
-
classLike: Node,
|
|
343
|
-
extendsType: ExpressionWithTypeArguments,
|
|
344
|
-
): AugmentsMismatch | undefined {
|
|
345
|
-
const jsDoc = getAttachedJSDoc(classLike);
|
|
346
|
-
if (jsDoc === undefined) return undefined;
|
|
338
|
+
/**
|
|
339
|
+
* Reports an `@augments` or `@extends` tag of a JavaScript class whose class doesn't match the
|
|
340
|
+
* `extends` clause: for an entity name, a different type; for another expression, a type the base
|
|
341
|
+
* type isn't assignable to.
|
|
342
|
+
*/
|
|
343
|
+
export function checkJSDocAugmentsTagMatchesExtends(
|
|
344
|
+
c: Checker,
|
|
345
|
+
node: Node,
|
|
346
|
+
baseTypeNode: ExpressionWithTypeArguments,
|
|
347
|
+
baseType: Type,
|
|
348
|
+
): void {
|
|
349
|
+
if (!isInJSFile(node)) return;
|
|
350
|
+
const jsDoc = getAttachedJSDoc(node);
|
|
351
|
+
if (jsDoc === undefined) return;
|
|
347
352
|
for (const j of jsDoc) {
|
|
348
353
|
const tags = (j as JSDoc).tags;
|
|
349
354
|
if (tags === undefined) continue;
|
|
350
355
|
for (const tag of tags.nodes) {
|
|
351
356
|
if (tag.kind !== SyntaxKind.JSDocAugmentsTag) continue;
|
|
352
357
|
const augments = tag as JSDocAugmentsTag;
|
|
353
|
-
const
|
|
358
|
+
const sourceType = getTypeFromTypeNode(c, augments.className);
|
|
354
359
|
const sourceName = getIdentifierFromEntityNameExpression(augments.className.expression);
|
|
355
|
-
if (
|
|
356
|
-
|
|
360
|
+
if (isEntityNameExpression(baseTypeNode.expression, false)) {
|
|
361
|
+
if (isTypeIdenticalTo(c, sourceType, baseType)) continue;
|
|
362
|
+
const targetName = getIdentifierFromEntityNameExpression(baseTypeNode.expression);
|
|
363
|
+
if (targetName !== undefined && sourceName !== undefined)
|
|
364
|
+
c.error(
|
|
365
|
+
sourceName,
|
|
366
|
+
Diagnostics.JSDoc_0_1_does_not_match_the_extends_2_clause,
|
|
367
|
+
getText(augments.tagName),
|
|
368
|
+
getText(sourceName),
|
|
369
|
+
getText(targetName),
|
|
370
|
+
);
|
|
371
|
+
} else if (sourceName !== undefined && !isTypeAssignableTo(c, baseType, sourceType)) {
|
|
372
|
+
const expression = baseTypeNode.expression;
|
|
373
|
+
c.error(
|
|
374
|
+
sourceName,
|
|
375
|
+
Diagnostics.JSDoc_0_1_does_not_match_the_extends_2_clause,
|
|
376
|
+
getText(augments.tagName),
|
|
377
|
+
getText(sourceName),
|
|
378
|
+
getSourceTextOfNode(getSourceFileOfNode(expression), expression),
|
|
379
|
+
);
|
|
380
|
+
}
|
|
357
381
|
}
|
|
358
382
|
}
|
|
359
|
-
return undefined;
|
|
360
383
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// JSX: element and fragment types, the `JSX` namespace, intrinsic elements, attributes and children.
|
|
2
|
-
import {
|
|
2
|
+
import { checkDeprecatedSignature } from './checker-deprecation.js';
|
|
3
3
|
import {
|
|
4
4
|
type BinaryExpression,
|
|
5
5
|
type JsxAttribute,
|
|
@@ -14,6 +14,7 @@ import {
|
|
|
14
14
|
type JsxText,
|
|
15
15
|
type Node,
|
|
16
16
|
type NodeList,
|
|
17
|
+
NodeVisitor,
|
|
17
18
|
type PropertyAccessExpression,
|
|
18
19
|
type QualifiedName,
|
|
19
20
|
type SourceFile,
|
|
@@ -287,7 +288,7 @@ function entityNameToString(node: Node): string {
|
|
|
287
288
|
return entityNameToString(access.expression) + '.' + entityNameToString(access.name);
|
|
288
289
|
}
|
|
289
290
|
case SyntaxKind.QualifiedName:
|
|
290
|
-
return entityNameToString((node as QualifiedName).left) + '.' + (node as QualifiedName).right
|
|
291
|
+
return entityNameToString((node as QualifiedName).left) + '.' + getText((node as QualifiedName).right);
|
|
291
292
|
case SyntaxKind.JsxNamespacedName:
|
|
292
293
|
return jsxNameText(node);
|
|
293
294
|
}
|
|
@@ -450,13 +451,17 @@ export function getJsxNamespaceContainerForImplicitImport(c: Checker, location:
|
|
|
450
451
|
links.jsxImplicitImportContainer = c.unknownSymbol;
|
|
451
452
|
return undefined;
|
|
452
453
|
}
|
|
454
|
+
// A missing module is reported once, at the first JSX tag of the file, whichever tag is checked first.
|
|
455
|
+
const finder = new FirstJsxTagFinder();
|
|
456
|
+
file.forEachChild(finder);
|
|
453
457
|
const mod = resolveExternalModule(
|
|
454
458
|
c,
|
|
455
459
|
specifier,
|
|
456
460
|
getText(specifier),
|
|
457
461
|
Diagnostics.This_JSX_tag_requires_the_module_path_0_to_exist_but_none_could_be_found_Make_sure_you_have_types_for_the_appropriate_package_installed,
|
|
458
|
-
location,
|
|
462
|
+
finder.tag ?? location,
|
|
459
463
|
false,
|
|
464
|
+
undefined,
|
|
460
465
|
);
|
|
461
466
|
const resolved = mod !== undefined && mod !== c.unknownSymbol ? resolveSymbol(c, mod) : undefined;
|
|
462
467
|
const result = resolved !== undefined ? getMergedSymbol(c, resolved) : undefined;
|
|
@@ -464,6 +469,23 @@ export function getJsxNamespaceContainerForImplicitImport(c: Checker, location:
|
|
|
464
469
|
return result;
|
|
465
470
|
}
|
|
466
471
|
|
|
472
|
+
/** The first JSX element or self-closing element of a file, or the opening tag of its first fragment. */
|
|
473
|
+
class FirstJsxTagFinder extends NodeVisitor {
|
|
474
|
+
tag: Node | undefined = undefined;
|
|
475
|
+
|
|
476
|
+
visitNode(node: Node): boolean {
|
|
477
|
+
if (node.kind === SyntaxKind.JsxElement || node.kind === SyntaxKind.JsxSelfClosingElement) {
|
|
478
|
+
this.tag = node;
|
|
479
|
+
return true;
|
|
480
|
+
}
|
|
481
|
+
if (node.kind === SyntaxKind.JsxFragment) {
|
|
482
|
+
this.tag = (node as JsxFragment).openingFragment;
|
|
483
|
+
return true;
|
|
484
|
+
}
|
|
485
|
+
return node.forEachChild(this);
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
|
|
467
489
|
/** The `JSX` namespace for `location`: the factory's, the runtime module's, or the global one. */
|
|
468
490
|
export function getJsxNamespaceAt(c: Checker, location: Node): Symbol | undefined {
|
|
469
491
|
const links = elementLinks(c, location);
|
|
@@ -967,7 +989,6 @@ export function createJsxAttributesTypeFromAttributesProperty(
|
|
|
967
989
|
if (allAttributesTable !== undefined) allAttributesTable.set(attributeSymbol.name, attributeSymbol);
|
|
968
990
|
if (jsxNameText((attributeDecl as JsxAttribute).name) === jsxChildrenPropertyName)
|
|
969
991
|
explicitlySpecifyChildrenAttribute = true;
|
|
970
|
-
if (contextualType !== undefined) checkDeprecatedJsxAttribute(c, contextualType, attributeDecl as JsxAttribute);
|
|
971
992
|
if (
|
|
972
993
|
contextualType !== undefined &&
|
|
973
994
|
(checkMode & CheckMode.Inferential) !== 0 &&
|
|
@@ -1343,6 +1364,7 @@ export function checkJsx(c: Checker, node: Node, checkMode: CheckMode): Type {
|
|
|
1343
1364
|
case SyntaxKind.JsxFragment:
|
|
1344
1365
|
return checkJsxFragment(c, node as JsxFragment);
|
|
1345
1366
|
case SyntaxKind.JsxAttributes:
|
|
1367
|
+
checkNodeDeferred(c, node);
|
|
1346
1368
|
return createJsxAttributesTypeFromAttributesProperty(c, node.parent!, checkMode);
|
|
1347
1369
|
}
|
|
1348
1370
|
return c.errorType;
|