tsc-ts 0.0.10 → 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 +1 -1
- 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 +20 -15
- package/dist/api/compiler/ast.js +1023 -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 +173 -123
- 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 +469 -438
- 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 -113
- 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 +210 -74
- 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 +137 -34
- 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 +93 -31
- package/dist/api/compiler/checker.js +143 -35
- 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 +19 -4
- package/dist/api/compiler/compile-program.js +45 -26
- package/dist/api/compiler/diagnostic-messages.d.ts +1849 -1774
- package/dist/api/compiler/diagnostic-messages.js +128 -122
- package/dist/api/compiler/diagnostics.js +7 -7
- 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 +10 -0
- package/dist/api/compiler/file-loader.js +138 -41
- 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/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 +3 -1
- package/dist/api/compiler/printer/emit-context.js +16 -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 +1 -0
- package/dist/api/compiler/printer/printer.js +303 -281
- package/dist/api/compiler/printer/utilities.js +149 -147
- package/dist/api/compiler/program-checker.d.ts +8 -2
- package/dist/api/compiler/program-checker.js +84 -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 +2 -0
- package/dist/api/compiler/program.js +69 -57
- 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 +337 -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 +22 -13
- package/dist/api/compiler/symbol.js +15 -1
- 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 +55 -26
- package/src/compiler/binder.ts +39 -4
- package/src/compiler/character-codes.ts +2 -2
- package/src/compiler/checker-calls.ts +76 -8
- 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 +133 -60
- package/src/compiler/checker-heritage.ts +22 -21
- package/src/compiler/checker-inference.ts +514 -87
- 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 +197 -55
- 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 +120 -21
- 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 +168 -41
- package/src/compiler/command-line.ts +28 -28
- package/src/compiler/compile-program.ts +51 -25
- package/src/compiler/decoder.ts +13 -4
- package/src/compiler/diagnostic-messages.ts +1973 -1892
- 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 +139 -32
- package/src/compiler/help.ts +10 -14
- package/src/compiler/incremental.ts +86 -18
- 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 +197 -8
- package/src/compiler/parallel-emit.ts +1 -1
- package/src/compiler/parser.ts +156 -39
- package/src/compiler/path.ts +22 -2
- package/src/compiler/printer/emit-context.ts +16 -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 +35 -14
- package/src/compiler/printer/utilities.ts +8 -2
- package/src/compiler/program-checker.ts +53 -5
- package/src/compiler/program-utilities.ts +23 -10
- package/src/compiler/program.ts +13 -1
- package/src/compiler/pseudo-bigint.ts +17 -0
- package/src/compiler/regexp-checker.ts +63 -30
- package/src/compiler/relations.ts +233 -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 +31 -14
- package/src/compiler/syntax-kind.ts +188 -187
- package/src/compiler/thread-entry.ts +19 -2
- 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 +3 -0
- package/src/compiler/tsc-cli.ts +2 -0
- package/src/compiler/tsc-compile.ts +7 -2
- 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
|
@@ -3,11 +3,12 @@
|
|
|
3
3
|
import { sideOf } from './side-state.js';
|
|
4
4
|
import { getInferredTypeParameterConstraint } from './checker-inference.js';
|
|
5
5
|
import { getExpression, getInitializer, getLocals, getName, getText, getType, getTypeArguments as getTypeArgumentNodes, getTypeParameters as getTypeParameterNodes, getHeritageClauses, } from './ast.js';
|
|
6
|
-
import { getSourceFileOfNode, isEnumConst, isObjectLiteralMethod } from './binder-utilities.js';
|
|
6
|
+
import { getSourceFileOfNode, hasDynamicName, isEnumConst, isObjectLiteralMethod } from './binder-utilities.js';
|
|
7
|
+
import { getHeritageClauseElementName } from './ast-utilities.js';
|
|
7
8
|
import { createDiagnosticForNode } from './checker.js';
|
|
8
9
|
import { elaborateNeverIntersection } from './checker-property-access.js';
|
|
9
10
|
import { TypeAlias, emptyTypes, newTypeMapper, ReferenceCache, } from './checker-types.js';
|
|
10
|
-
import { createArrayTypeEx, getFreshTypeOfLiteralType, getNumberEnumLiteralType, getStringEnumLiteralType, getTargetType, getTypeArguments, getUnionType, getUnionTypeEx, isErrorType, newObjectType, typeListKey, typesOf, typeListHash, } from './checker-type-factory.js';
|
|
11
|
+
import { createArrayTypeEx, getFreshTypeOfLiteralType, getNumberEnumLiteralType, getStringEnumLiteralType, getTargetType, getTypeArguments, getUnionType, getUnionTypeEx, isErrorType, newObjectType, typeListKey, typesOf, typeListHash, compareTypes, } from './checker-type-factory.js';
|
|
11
12
|
import { getFirstIdentifier, getMergedSymbol, getParentOfSymbol, getSymbolOfDeclaration, popTypeResolution, pushTypeResolution, resolveEntityName, } from './checker-symbols.js';
|
|
12
13
|
import { getTypeFromTypeNode, getTypeFromClassOrInterfaceReference, isTypeAlias } from './checker-type-nodes.js';
|
|
13
14
|
import { instantiateType } from './instantiation.js';
|
|
@@ -84,14 +85,14 @@ export function getDeclaredTypeOfClassOrInterface(c, symbol) {
|
|
|
84
85
|
}
|
|
85
86
|
function isThislessInterface(c, symbol) {
|
|
86
87
|
for (const declaration of getDeclarations(symbol)) {
|
|
87
|
-
if (declaration.kind !==
|
|
88
|
+
if (declaration.kind !== 266 /* SyntaxKind.InterfaceDeclaration */)
|
|
88
89
|
continue;
|
|
89
90
|
if ((declaration.flags & 128 /* NodeFlags.ContainsThis */) !== 0)
|
|
90
91
|
return false;
|
|
91
92
|
for (const node of getExtendsHeritageClauseElements(declaration)) {
|
|
92
|
-
const
|
|
93
|
-
if (isEntityNameExpression(
|
|
94
|
-
const baseSymbol = resolveEntityName(c,
|
|
93
|
+
const name = getHeritageClauseElementName(node);
|
|
94
|
+
if (name.kind === 168 /* SyntaxKind.QualifiedName */ || isEntityNameExpression(name)) {
|
|
95
|
+
const baseSymbol = resolveEntityName(c, name, 788968 /* SymbolFlags.Type */, true, false, undefined);
|
|
95
96
|
if (baseSymbol === undefined ||
|
|
96
97
|
(baseSymbol.flags & 64 /* SymbolFlags.Interface */) === 0 ||
|
|
97
98
|
getDeclaredTypeOfClassOrInterface(c, baseSymbol).thisType !== undefined)
|
|
@@ -104,7 +105,7 @@ function isThislessInterface(c, symbol) {
|
|
|
104
105
|
export function isEntityNameExpression(node) {
|
|
105
106
|
if (node.kind === 79 /* SyntaxKind.Identifier */)
|
|
106
107
|
return true;
|
|
107
|
-
if (node.kind ===
|
|
108
|
+
if (node.kind === 213 /* SyntaxKind.PropertyAccessExpression */) {
|
|
108
109
|
const name = getName(node);
|
|
109
110
|
return name !== undefined && name.kind === 79 /* SyntaxKind.Identifier */ && isEntityNameExpression(getExpression(node));
|
|
110
111
|
}
|
|
@@ -129,7 +130,7 @@ export function getExtendsHeritageClauseElement(node) {
|
|
|
129
130
|
}
|
|
130
131
|
export function getClassLikeDeclarationOfSymbol(symbol) {
|
|
131
132
|
for (const d of getDeclarations(symbol))
|
|
132
|
-
if (d.kind ===
|
|
133
|
+
if (d.kind === 265 /* SyntaxKind.ClassDeclaration */ || d.kind === 233 /* SyntaxKind.ClassExpression */)
|
|
133
134
|
return d;
|
|
134
135
|
return undefined;
|
|
135
136
|
}
|
|
@@ -138,14 +139,14 @@ function getOuterTypeParametersOfClassOrInterface(c, symbol) {
|
|
|
138
139
|
if ((symbol.flags & (32 /* SymbolFlags.Class */ | 16 /* SymbolFlags.Function */)) === 0) {
|
|
139
140
|
declaration = undefined;
|
|
140
141
|
for (const d of getDeclarations(symbol)) {
|
|
141
|
-
if (d.kind ===
|
|
142
|
+
if (d.kind === 266 /* SyntaxKind.InterfaceDeclaration */) {
|
|
142
143
|
declaration = d;
|
|
143
144
|
break;
|
|
144
145
|
}
|
|
145
|
-
if (d.kind ===
|
|
146
|
+
if (d.kind === 262 /* SyntaxKind.VariableDeclaration */) {
|
|
146
147
|
const initializer = getInitializer(d);
|
|
147
148
|
if (initializer !== undefined &&
|
|
148
|
-
(initializer.kind ===
|
|
149
|
+
(initializer.kind === 220 /* SyntaxKind.FunctionExpression */ || initializer.kind === 221 /* SyntaxKind.ArrowFunction */)) {
|
|
149
150
|
declaration = d;
|
|
150
151
|
break;
|
|
151
152
|
}
|
|
@@ -161,26 +162,26 @@ export function getOuterTypeParameters(c, node, includeThisTypes) {
|
|
|
161
162
|
for (let current = node.parent; current !== undefined; current = current.parent) {
|
|
162
163
|
const kind = current.kind;
|
|
163
164
|
switch (kind) {
|
|
164
|
-
case
|
|
165
|
-
case
|
|
166
|
-
case
|
|
167
|
-
case
|
|
168
|
-
case
|
|
169
|
-
case
|
|
170
|
-
case
|
|
171
|
-
case
|
|
172
|
-
case
|
|
173
|
-
case
|
|
174
|
-
case
|
|
175
|
-
case
|
|
176
|
-
case
|
|
177
|
-
case
|
|
178
|
-
case
|
|
179
|
-
case
|
|
165
|
+
case 265 /* SyntaxKind.ClassDeclaration */:
|
|
166
|
+
case 233 /* SyntaxKind.ClassExpression */:
|
|
167
|
+
case 266 /* SyntaxKind.InterfaceDeclaration */:
|
|
168
|
+
case 181 /* SyntaxKind.CallSignature */:
|
|
169
|
+
case 182 /* SyntaxKind.ConstructSignature */:
|
|
170
|
+
case 175 /* SyntaxKind.MethodSignature */:
|
|
171
|
+
case 186 /* SyntaxKind.FunctionType */:
|
|
172
|
+
case 187 /* SyntaxKind.ConstructorType */:
|
|
173
|
+
case 264 /* SyntaxKind.FunctionDeclaration */:
|
|
174
|
+
case 176 /* SyntaxKind.MethodDeclaration */:
|
|
175
|
+
case 220 /* SyntaxKind.FunctionExpression */:
|
|
176
|
+
case 221 /* SyntaxKind.ArrowFunction */:
|
|
177
|
+
case 267 /* SyntaxKind.TypeAliasDeclaration */:
|
|
178
|
+
case 346 /* SyntaxKind.JSTypeAliasDeclaration */:
|
|
179
|
+
case 202 /* SyntaxKind.MappedType */:
|
|
180
|
+
case 196 /* SyntaxKind.ConditionalType */: {
|
|
180
181
|
const outer = getOuterTypeParameters(c, current, includeThisTypes);
|
|
181
182
|
// A contextually typed function has the type parameters of its contextual signature.
|
|
182
|
-
if ((kind ===
|
|
183
|
-
kind ===
|
|
183
|
+
if ((kind === 220 /* SyntaxKind.FunctionExpression */ ||
|
|
184
|
+
kind === 221 /* SyntaxKind.ArrowFunction */ ||
|
|
184
185
|
isObjectLiteralMethod(current)) &&
|
|
185
186
|
isContextSensitive(c, current)) {
|
|
186
187
|
const signatures = getSignaturesOfType(c, getTypeOfSymbol(c, getSymbolOfDeclaration(c, current)), 0 /* SignatureKind.Call */);
|
|
@@ -190,21 +191,21 @@ export function getOuterTypeParameters(c, node, includeThisTypes) {
|
|
|
190
191
|
return outer;
|
|
191
192
|
}
|
|
192
193
|
}
|
|
193
|
-
if (kind ===
|
|
194
|
+
if (kind === 202 /* SyntaxKind.MappedType */) {
|
|
194
195
|
const typeParameter = current.typeParameter;
|
|
195
196
|
outer.push(getDeclaredTypeOfTypeParameter(c, getSymbolOfDeclaration(c, typeParameter)));
|
|
196
197
|
return outer;
|
|
197
198
|
}
|
|
198
|
-
if (kind ===
|
|
199
|
+
if (kind === 196 /* SyntaxKind.ConditionalType */) {
|
|
199
200
|
for (const t of getInferTypeParameters(c, current))
|
|
200
201
|
outer.push(t);
|
|
201
202
|
return outer;
|
|
202
203
|
}
|
|
203
204
|
appendTypeParameters(c, outer, getTypeParameterNodes(current)?.nodes);
|
|
204
205
|
if (includeThisTypes &&
|
|
205
|
-
(kind ===
|
|
206
|
-
kind ===
|
|
207
|
-
kind ===
|
|
206
|
+
(kind === 265 /* SyntaxKind.ClassDeclaration */ ||
|
|
207
|
+
kind === 233 /* SyntaxKind.ClassExpression */ ||
|
|
208
|
+
kind === 266 /* SyntaxKind.InterfaceDeclaration */)) {
|
|
208
209
|
const thisType = getDeclaredTypeOfClassOrInterface(c, getSymbolOfDeclaration(c, current)).thisType;
|
|
209
210
|
if (thisType !== undefined)
|
|
210
211
|
outer.push(thisType);
|
|
@@ -222,6 +223,7 @@ export function getInferTypeParameters(c, node) {
|
|
|
222
223
|
for (const symbol of locals.values())
|
|
223
224
|
if ((symbol.flags & 262144 /* SymbolFlags.TypeParameter */) !== 0)
|
|
224
225
|
result.push(getDeclaredTypeOfSymbol(c, symbol));
|
|
226
|
+
result.sort((t1, t2) => compareTypes(c, t1, t2));
|
|
225
227
|
return result;
|
|
226
228
|
}
|
|
227
229
|
export function getLocalTypeParametersOfClassOrInterfaceOrTypeAlias(c, symbol) {
|
|
@@ -229,9 +231,9 @@ export function getLocalTypeParametersOfClassOrInterfaceOrTypeAlias(c, symbol) {
|
|
|
229
231
|
}
|
|
230
232
|
function appendLocalTypeParameters(c, types, symbol) {
|
|
231
233
|
for (const node of getDeclarations(symbol)) {
|
|
232
|
-
if (node.kind ===
|
|
233
|
-
node.kind ===
|
|
234
|
-
node.kind ===
|
|
234
|
+
if (node.kind === 266 /* SyntaxKind.InterfaceDeclaration */ ||
|
|
235
|
+
node.kind === 265 /* SyntaxKind.ClassDeclaration */ ||
|
|
236
|
+
node.kind === 233 /* SyntaxKind.ClassExpression */ ||
|
|
235
237
|
isTypeAlias(node))
|
|
236
238
|
appendTypeParameters(c, types, getTypeParameterNodes(node)?.nodes);
|
|
237
239
|
}
|
|
@@ -261,7 +263,7 @@ export function getDeclaredTypeOfTypeAlias(c, symbol) {
|
|
|
261
263
|
return c.errorType;
|
|
262
264
|
let declaration;
|
|
263
265
|
for (const d of getDeclarations(symbol))
|
|
264
|
-
if (d.kind ===
|
|
266
|
+
if (d.kind === 267 /* SyntaxKind.TypeAliasDeclaration */ || d.kind === 346 /* SyntaxKind.JSTypeAliasDeclaration */) {
|
|
265
267
|
declaration = d;
|
|
266
268
|
break;
|
|
267
269
|
}
|
|
@@ -281,7 +283,7 @@ export function getDeclaredTypeOfTypeAlias(c, symbol) {
|
|
|
281
283
|
}
|
|
282
284
|
else {
|
|
283
285
|
const errorNode = declaration !== undefined ? (getName(declaration) ?? declaration) : undefined;
|
|
284
|
-
c.error(errorNode,
|
|
286
|
+
c.error(errorNode, 629 /* Diagnostics.Type_alias_0_circularly_references_itself */, symbolToString(c, symbol));
|
|
285
287
|
type = c.errorType;
|
|
286
288
|
}
|
|
287
289
|
if (links.declaredType === undefined)
|
|
@@ -294,10 +296,10 @@ export function getDeclaredTypeOfEnum(c, symbol) {
|
|
|
294
296
|
return links.declaredType;
|
|
295
297
|
const memberTypes = [];
|
|
296
298
|
for (const declaration of getDeclarations(symbol)) {
|
|
297
|
-
if (declaration.kind !==
|
|
299
|
+
if (declaration.kind !== 268 /* SyntaxKind.EnumDeclaration */)
|
|
298
300
|
continue;
|
|
299
301
|
for (const member of declaration.members.nodes) {
|
|
300
|
-
if (
|
|
302
|
+
if (hasDynamicName(member))
|
|
301
303
|
continue;
|
|
302
304
|
const memberSymbol = getSymbolOfDeclaration(c, member);
|
|
303
305
|
computeEnumMemberValues(c, declaration);
|
|
@@ -325,7 +327,7 @@ export function getDeclaredTypeOfEnum(c, symbol) {
|
|
|
325
327
|
}
|
|
326
328
|
export function hasBindableName(node) {
|
|
327
329
|
const name = getName(node);
|
|
328
|
-
return name === undefined || name.kind !==
|
|
330
|
+
return name === undefined || name.kind !== 169 /* SyntaxKind.ComputedPropertyName */ || isLiteralComputed(name);
|
|
329
331
|
}
|
|
330
332
|
function isLiteralComputed(name) {
|
|
331
333
|
const e = getExpression(name);
|
|
@@ -374,14 +376,14 @@ export function computeEnumMemberValues(c, node) {
|
|
|
374
376
|
function computeEnumMemberValue(c, member, hasAuto, autoValue, previous) {
|
|
375
377
|
const links = c.nodeLinks(member);
|
|
376
378
|
const name = getName(member);
|
|
377
|
-
if (name.kind ===
|
|
379
|
+
if (name.kind === 169 /* SyntaxKind.ComputedPropertyName */ && !isLiteralComputed(name))
|
|
378
380
|
c.error(name, 121 /* Diagnostics.Computed_property_names_are_not_allowed_in_enums */);
|
|
379
381
|
else if (name.kind === 9 /* SyntaxKind.BigIntLiteral */)
|
|
380
|
-
c.error(name,
|
|
382
|
+
c.error(name, 627 /* Diagnostics.An_enum_member_cannot_have_a_numeric_name */);
|
|
381
383
|
else {
|
|
382
|
-
const text = name.kind ===
|
|
384
|
+
const text = name.kind === 169 /* SyntaxKind.ComputedPropertyName */ ? getText(getExpression(name)) : getText(name);
|
|
383
385
|
if (isNumericLiteralName(text) && text !== 'Infinity' && text !== '-Infinity' && text !== 'NaN')
|
|
384
|
-
c.error(name,
|
|
386
|
+
c.error(name, 627 /* Diagnostics.An_enum_member_cannot_have_a_numeric_name */);
|
|
385
387
|
}
|
|
386
388
|
const initializer = getInitializer(member);
|
|
387
389
|
if (initializer !== undefined) {
|
|
@@ -403,7 +405,7 @@ function computeEnumMemberValue(c, member, hasAuto, autoValue, previous) {
|
|
|
403
405
|
const previousLinks = c.nodeLinks(previous);
|
|
404
406
|
if (previousLinks.enumValueKind !== 1 /* EvaluatedKind.Number */ ||
|
|
405
407
|
(previousLinks.enumValueFlags & 2 /* EvaluatedFlags.ResolvedOtherFiles */) !== 0)
|
|
406
|
-
c.error(name,
|
|
408
|
+
c.error(name, 1891 /* Diagnostics.Enum_member_following_a_non_literal_numeric_member_must_have_an_initializer_when_isolatedModules_is_enabled */);
|
|
407
409
|
}
|
|
408
410
|
links.enumValueKind = 1 /* EvaluatedKind.Number */;
|
|
409
411
|
links.enumNumberValue = autoValue;
|
|
@@ -419,20 +421,20 @@ function computeConstantEnumMemberValue(c, member, initializer) {
|
|
|
419
421
|
if (result.kind !== 0 /* EvaluatedKind.None */) {
|
|
420
422
|
if (isConstEnum && result.kind === 1 /* EvaluatedKind.Number */ && !Number.isFinite(result.numberValue))
|
|
421
423
|
c.error(initializer, result.numberValue !== result.numberValue
|
|
422
|
-
?
|
|
423
|
-
:
|
|
424
|
+
? 649 /* Diagnostics.X_const_enum_member_initializer_was_evaluated_to_disallowed_value_NaN */
|
|
425
|
+
: 648 /* Diagnostics.X_const_enum_member_initializer_was_evaluated_to_a_non_finite_value */);
|
|
424
426
|
// A transpiler emits a string member without a reverse mapping only when it sees a string.
|
|
425
427
|
if (c.isolatedModules &&
|
|
426
428
|
result.kind === 2 /* EvaluatedKind.String */ &&
|
|
427
429
|
(result.flags & 1 /* EvaluatedFlags.SyntacticallyString */) === 0)
|
|
428
|
-
c.error(initializer,
|
|
430
|
+
c.error(initializer, 1890 /* Diagnostics.X_0_has_a_string_type_but_must_have_syntactically_recognizable_string_syntax_when_isolatedModules_is_enabled */, getText(getName(member.parent)) + '.' + getText(getName(member)));
|
|
429
431
|
}
|
|
430
432
|
else if (isConstEnum)
|
|
431
|
-
c.error(initializer,
|
|
433
|
+
c.error(initializer, 645 /* Diagnostics.X_const_enum_member_initializers_must_be_constant_expressions */);
|
|
432
434
|
else if ((member.parent.flags & 8388608 /* NodeFlags.Ambient */) !== 0)
|
|
433
435
|
c.error(initializer, 51 /* Diagnostics.In_ambient_enum_declarations_member_initializer_must_be_constant_expression */);
|
|
434
436
|
else
|
|
435
|
-
checkTypeAssignableTo(c, checkExpression(c, initializer), c.numberType, initializer,
|
|
437
|
+
checkTypeAssignableTo(c, checkExpression(c, initializer), c.numberType, initializer, 1870 /* Diagnostics.Type_0_is_not_assignable_to_type_1_as_required_for_computed_enum_member_values */);
|
|
436
438
|
}
|
|
437
439
|
export function isNumericLiteralName(name) {
|
|
438
440
|
// A name is numeric when it round-trips through Number.
|
|
@@ -456,7 +458,7 @@ export function getBaseTypes(c, t) {
|
|
|
456
458
|
}
|
|
457
459
|
if (!popTypeResolution(c))
|
|
458
460
|
for (const declaration of getDeclarations(t.symbol))
|
|
459
|
-
if (declaration.kind ===
|
|
461
|
+
if (declaration.kind === 265 /* SyntaxKind.ClassDeclaration */ || declaration.kind === 266 /* SyntaxKind.InterfaceDeclaration */)
|
|
460
462
|
reportCircularBaseType(c, declaration, t);
|
|
461
463
|
// Circular defaults may leave members partially resolved; reset them.
|
|
462
464
|
membersHolder(c, t).objectFlags &= ~2097152 /* ObjectFlags.MembersResolved */;
|
|
@@ -492,7 +494,7 @@ function resolveBaseTypesOfClass(c, t) {
|
|
|
492
494
|
else {
|
|
493
495
|
const constructors = getInstantiatedConstructorsForTypeArguments(c, baseConstructorType, getTypeArgumentNodes(baseTypeNode)?.nodes, baseTypeNode);
|
|
494
496
|
if (constructors.length === 0) {
|
|
495
|
-
c.error(getExpression(baseTypeNode),
|
|
497
|
+
c.error(getExpression(baseTypeNode), 675 /* Diagnostics.No_base_constructor_has_the_specified_number_of_type_arguments */);
|
|
496
498
|
return;
|
|
497
499
|
}
|
|
498
500
|
baseType = getReturnTypeOfSignature(c, constructors[0]);
|
|
@@ -502,12 +504,12 @@ function resolveBaseTypesOfClass(c, t) {
|
|
|
502
504
|
const reducedBaseType = getReducedType(c, baseType);
|
|
503
505
|
if (!isValidBaseType(c, reducedBaseType)) {
|
|
504
506
|
const errorNode = getExpression(baseTypeNode);
|
|
505
|
-
const diagnostic = createDiagnosticForNode(errorNode,
|
|
507
|
+
const diagnostic = createDiagnosticForNode(errorNode, 676 /* Diagnostics.Base_constructor_return_type_0_is_not_an_object_type_or_intersection_of_object_types_with_statically_known_members */, [typeToString(c, reducedBaseType)]);
|
|
506
508
|
c.addDiagnostic(diagnostic.addMessageChain(elaborateNeverIntersection(c, undefined, errorNode, baseType)));
|
|
507
509
|
return;
|
|
508
510
|
}
|
|
509
511
|
if (t.id === reducedBaseType.id || hasBaseType(c, reducedBaseType, t)) {
|
|
510
|
-
c.error(t.symbol.valueDeclaration,
|
|
512
|
+
c.error(t.symbol.valueDeclaration, 495 /* Diagnostics.Type_0_recursively_references_itself_as_a_base_type */, typeToString(c, t));
|
|
511
513
|
return;
|
|
512
514
|
}
|
|
513
515
|
sideOf(c, t).resolvedBaseTypes = [reducedBaseType];
|
|
@@ -530,7 +532,7 @@ function isInJS(node) {
|
|
|
530
532
|
}
|
|
531
533
|
function resolveBaseTypesOfInterface(c, t) {
|
|
532
534
|
for (const declaration of getDeclarations(t.symbol)) {
|
|
533
|
-
if (declaration.kind !==
|
|
535
|
+
if (declaration.kind !== 266 /* SyntaxKind.InterfaceDeclaration */)
|
|
534
536
|
continue;
|
|
535
537
|
for (const node of getExtendsHeritageClauseElements(declaration)) {
|
|
536
538
|
const baseType = getReducedType(c, getTypeFromTypeNode(c, node));
|
|
@@ -548,7 +550,7 @@ function resolveBaseTypesOfInterface(c, t) {
|
|
|
548
550
|
reportCircularBaseType(c, declaration, t);
|
|
549
551
|
}
|
|
550
552
|
else
|
|
551
|
-
c.error(node,
|
|
553
|
+
c.error(node, 497 /* Diagnostics.An_interface_can_only_extend_an_object_type_or_intersection_of_object_types_with_statically_known_members */);
|
|
552
554
|
}
|
|
553
555
|
}
|
|
554
556
|
}
|
|
@@ -561,7 +563,7 @@ function areAllOuterTypeParametersApplied(c, t) {
|
|
|
561
563
|
return outer[last].symbol !== getTypeArguments(c, t)[last].symbol;
|
|
562
564
|
}
|
|
563
565
|
function reportCircularBaseType(c, node, t) {
|
|
564
|
-
c.error(node,
|
|
566
|
+
c.error(node, 495 /* Diagnostics.Type_0_recursively_references_itself_as_a_base_type */, typeToString(c, t, undefined, 1 << 1));
|
|
565
567
|
}
|
|
566
568
|
export function isValidBaseType(c, t) {
|
|
567
569
|
if ((t.flags & 524288 /* TypeFlags.TypeParameter */) !== 0) {
|
|
@@ -613,7 +615,7 @@ export function getBaseConstructorTypeOfClass(c, t) {
|
|
|
613
615
|
if ((baseConstructorType.flags & (1048576 /* TypeFlags.Object */ | 268435456 /* TypeFlags.Intersection */)) !== 0)
|
|
614
616
|
resolveStructuredTypeMembers(c, baseConstructorType);
|
|
615
617
|
if (!popTypeResolution(c)) {
|
|
616
|
-
c.error(t.symbol.valueDeclaration,
|
|
618
|
+
c.error(t.symbol.valueDeclaration, 673 /* Diagnostics.X_0_is_referenced_directly_or_indirectly_in_its_own_base_expression */, symbolToString(c, t.symbol));
|
|
617
619
|
if (side.resolvedBaseConstructorType === undefined)
|
|
618
620
|
side.resolvedBaseConstructorType = c.errorType;
|
|
619
621
|
return side.resolvedBaseConstructorType;
|
|
@@ -621,7 +623,7 @@ export function getBaseConstructorTypeOfClass(c, t) {
|
|
|
621
623
|
if ((baseConstructorType.flags & 1 /* TypeFlags.Any */) === 0 &&
|
|
622
624
|
baseConstructorType !== c.nullWideningType &&
|
|
623
625
|
!isConstructorType(c, baseConstructorType)) {
|
|
624
|
-
c.error(getExpression(baseTypeNode),
|
|
626
|
+
c.error(getExpression(baseTypeNode), 674 /* Diagnostics.Type_0_is_not_a_constructor_function_type */, typeToString(c, baseConstructorType));
|
|
625
627
|
if (side.resolvedBaseConstructorType === undefined)
|
|
626
628
|
side.resolvedBaseConstructorType = c.errorType;
|
|
627
629
|
return side.resolvedBaseConstructorType;
|
|
@@ -668,7 +670,7 @@ export function hasNonCircularBaseConstraint(c, t) {
|
|
|
668
670
|
export function getConstraintDeclaration(t) {
|
|
669
671
|
if (t.symbol !== undefined)
|
|
670
672
|
for (const d of getDeclarations(t.symbol))
|
|
671
|
-
if (d.kind ===
|
|
673
|
+
if (d.kind === 170 /* SyntaxKind.TypeParameter */) {
|
|
672
674
|
const constraint = d.constraint;
|
|
673
675
|
if (constraint !== undefined)
|
|
674
676
|
return constraint;
|
|
@@ -697,7 +699,7 @@ export function getConstraintFromTypeParameter(c, t) {
|
|
|
697
699
|
if ((constraint.flags & 1 /* TypeFlags.Any */) !== 0 && !isErrorType(c, constraint))
|
|
698
700
|
// Mapped type keys use string | number | symbol; others unknown.
|
|
699
701
|
constraint =
|
|
700
|
-
declaration.parent.parent.kind ===
|
|
702
|
+
declaration.parent.parent.kind === 202 /* SyntaxKind.MappedType */ ? c.stringNumberSymbolType : c.unknownType;
|
|
701
703
|
}
|
|
702
704
|
else
|
|
703
705
|
constraint = getInferredTypeParameterConstraint(c, t);
|
|
@@ -725,7 +727,7 @@ export function getResolvedTypeParameterDefault(c, t) {
|
|
|
725
727
|
let defaultType = c.noConstraintType;
|
|
726
728
|
if (t.symbol !== undefined)
|
|
727
729
|
for (const d of getDeclarations(t.symbol))
|
|
728
|
-
if (d.kind ===
|
|
730
|
+
if (d.kind === 170 /* SyntaxKind.TypeParameter */) {
|
|
729
731
|
const node = d.defaultType;
|
|
730
732
|
if (node !== undefined) {
|
|
731
733
|
defaultType = getTypeFromTypeNode(c, node);
|
|
@@ -757,7 +759,7 @@ function hasTypeParameterDefault(t) {
|
|
|
757
759
|
return false;
|
|
758
760
|
for (let i = 0; i < declarationCount(symbol); i++) {
|
|
759
761
|
const d = declarationAt(symbol, i);
|
|
760
|
-
if (d.kind ===
|
|
762
|
+
if (d.kind === 170 /* SyntaxKind.TypeParameter */ && d.defaultType !== undefined)
|
|
761
763
|
return true;
|
|
762
764
|
}
|
|
763
765
|
return false;
|