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
|
@@ -5,7 +5,7 @@ import { FunctionTypeNode, GetAccessorDeclaration, Identifier, KeywordTypeNode,
|
|
|
5
5
|
import { isFunctionLike } from './ast-utilities.js';
|
|
6
6
|
import { getSourceFileOfNode, isEntityNameExpression } from './binder-utilities.js';
|
|
7
7
|
import { getContextualType, instantiateContextualType } from './checker-contextual.js';
|
|
8
|
-
import {
|
|
8
|
+
import { getTypeOfExpression, isConstContext, isLiteralOfContextualType } from './checker-expressions.js';
|
|
9
9
|
import { getTypeWithFacts } from './checker-flow.js';
|
|
10
10
|
import { getPropertiesOfType, getPropertyOfType } from './checker-members.js';
|
|
11
11
|
import { getReturnTypeOfSignature, getSignatureFromDeclaration, getSingleCallSignature, getTypePredicateOfSignature, } from './checker-signatures.js';
|
|
@@ -31,7 +31,7 @@ export function newPseudoChecker(c) {
|
|
|
31
31
|
return new PseudoChecker(c.strictNullChecks, new Map(), new NoNames(c.compilerOptions));
|
|
32
32
|
}
|
|
33
33
|
function isDeclaration(node) {
|
|
34
|
-
if (node.kind ===
|
|
34
|
+
if (node.kind === 170 /* SyntaxKind.TypeParameter */)
|
|
35
35
|
return node.parent !== undefined;
|
|
36
36
|
return isDeclarationNode(node);
|
|
37
37
|
}
|
|
@@ -54,7 +54,8 @@ export function getRegularTypeOfExpression(c, node) {
|
|
|
54
54
|
if ((parent instanceof QualifiedName && parent.right === node) ||
|
|
55
55
|
(parent instanceof PropertyAccessExpression && parent.name === node))
|
|
56
56
|
expr = parent;
|
|
57
|
-
|
|
57
|
+
// Rechecks the expression, as tsgo does, unless its type needed control flow analysis.
|
|
58
|
+
return getRegularTypeOfLiteralType(c, getTypeOfExpression(c, expr));
|
|
58
59
|
}
|
|
59
60
|
function keyword(b, kind) {
|
|
60
61
|
return b.created(new KeywordTypeNode(kind));
|
|
@@ -110,17 +111,17 @@ export function pseudoTypeToNode(b, t) {
|
|
|
110
111
|
return b.serializeReturnTypeForSignatureEx(getSignatureFromDeclaration(c, node), false);
|
|
111
112
|
const parent = node.parent;
|
|
112
113
|
// The declaration's type is widened as the checker widens it.
|
|
113
|
-
if (parent.kind ===
|
|
114
|
+
if (parent.kind === 255 /* SyntaxKind.ReturnStatement */) {
|
|
114
115
|
const enclosing = getContainingFunction(node);
|
|
115
116
|
if (isAccessorKind(enclosing))
|
|
116
117
|
return b.serializeTypeForDeclaration(enclosing, undefined, undefined, false);
|
|
117
118
|
return b.serializeReturnTypeForSignatureEx(getSignatureFromDeclaration(c, enclosing), false);
|
|
118
119
|
}
|
|
119
|
-
if (parent.kind ===
|
|
120
|
+
if (parent.kind === 221 /* SyntaxKind.ArrowFunction */ && getBody(parent) === node)
|
|
120
121
|
return b.serializeReturnTypeForSignatureEx(getSignatureFromDeclaration(c, parent), false);
|
|
121
122
|
if (isDeclaration(parent))
|
|
122
123
|
return b.serializeTypeForDeclaration(parent, undefined, undefined, false);
|
|
123
|
-
return b.typeToTypeNode(
|
|
124
|
+
return b.typeToTypeNode(getTypeOfExpression(c, node));
|
|
124
125
|
}
|
|
125
126
|
case 2 /* PseudoTypeKind.NoResult */: {
|
|
126
127
|
const node = t.declaration;
|
|
@@ -309,7 +310,7 @@ function pseudoParameterToNode(b, p) {
|
|
|
309
310
|
const parameter = b.created(new ParameterDeclaration(undefined, p.rest ? b.token(25 /* SyntaxKind.DotDotDotToken */) : undefined,
|
|
310
311
|
// Parameter names are always written from scratch.
|
|
311
312
|
b.parameterToParameterDeclarationName(getSymbol(original), original), p.optional ? b.token(57 /* SyntaxKind.QuestionToken */) : undefined, pseudoTypeToNode(b, p.type), undefined));
|
|
312
|
-
if (original.kind ===
|
|
313
|
+
if (original.kind === 171 /* SyntaxKind.Parameter */)
|
|
313
314
|
b.setCommentRange(parameter, original);
|
|
314
315
|
return parameter;
|
|
315
316
|
}
|
|
@@ -605,7 +606,7 @@ export function pseudoReturnTypeMatchesPredicate(b, rt, predicate) {
|
|
|
605
606
|
const predicateIsAsserts = predicate.kind === 2 /* TypePredicateKind.AssertsThis */ || predicate.kind === 3 /* TypePredicateKind.AssertsIdentifier */;
|
|
606
607
|
if (isAsserts !== predicateIsAsserts)
|
|
607
608
|
return false;
|
|
608
|
-
const isThis = node.parameterName.kind ===
|
|
609
|
+
const isThis = node.parameterName.kind === 199 /* SyntaxKind.ThisType */;
|
|
609
610
|
const predicateIsThis = predicate.kind === 0 /* TypePredicateKind.This */ || predicate.kind === 2 /* TypePredicateKind.AssertsThis */;
|
|
610
611
|
if (isThis !== predicateIsThis)
|
|
611
612
|
return false;
|
|
@@ -622,9 +623,6 @@ export function pseudoReturnTypeMatchesPredicate(b, rt, predicate) {
|
|
|
622
623
|
return false;
|
|
623
624
|
return true;
|
|
624
625
|
}
|
|
625
|
-
function getTypeOfExpressionForPseudo(c, node) {
|
|
626
|
-
return checkExpressionCached(c, node);
|
|
627
|
-
}
|
|
628
626
|
/** The type a pseudo-type denotes, for the kinds that map to one directly. */
|
|
629
627
|
export function pseudoTypeToType(b, t) {
|
|
630
628
|
const c = b.c;
|
|
@@ -695,9 +693,9 @@ export function requiresAddingImplicitUndefinedForDeclaration(c, declaration, sy
|
|
|
695
693
|
if ((declaration.flags & 16 /* NodeFlags.Synthesized */) !== 0)
|
|
696
694
|
return false;
|
|
697
695
|
switch (declaration.kind) {
|
|
698
|
-
case
|
|
699
|
-
case
|
|
700
|
-
case
|
|
696
|
+
case 174 /* SyntaxKind.PropertyDeclaration */:
|
|
697
|
+
case 173 /* SyntaxKind.PropertySignature */:
|
|
698
|
+
case 341 /* SyntaxKind.JSDocPropertyTag */: {
|
|
701
699
|
const symbol = symbolIn ?? getSymbolOfDeclaration(c, declaration);
|
|
702
700
|
if (symbol === undefined)
|
|
703
701
|
return false;
|
|
@@ -705,11 +703,11 @@ export function requiresAddingImplicitUndefinedForDeclaration(c, declaration, sy
|
|
|
705
703
|
return ((symbol.flags & 4 /* SymbolFlags.Property */) !== 0 &&
|
|
706
704
|
(symbol.flags & 16777216 /* SymbolFlags.Optional */) !== 0 &&
|
|
707
705
|
hasQuestionToken(declaration) &&
|
|
708
|
-
(symbol.checkFlags &
|
|
706
|
+
(symbol.checkFlags & 65536 /* CheckFlags.ReverseMapped */) !== 0 &&
|
|
709
707
|
c.symbolLinks(symbol).reverseMappedMappedType !== undefined &&
|
|
710
708
|
containsNonMissingUndefinedType(c, t));
|
|
711
709
|
}
|
|
712
|
-
case
|
|
710
|
+
case 171 /* SyntaxKind.Parameter */:
|
|
713
711
|
return requiresAddingImplicitUndefined(c, declaration, enclosingDeclaration);
|
|
714
712
|
}
|
|
715
713
|
return false;
|
|
@@ -717,26 +715,26 @@ export function requiresAddingImplicitUndefinedForDeclaration(c, declaration, sy
|
|
|
717
715
|
/** Declarations whose type the builder writes from the declaration, as tsgo's `HasInferredType`. */
|
|
718
716
|
export function hasInferredTypeKind(node) {
|
|
719
717
|
switch (node.kind) {
|
|
720
|
-
case
|
|
721
|
-
case
|
|
722
|
-
case
|
|
723
|
-
case
|
|
724
|
-
case
|
|
725
|
-
case
|
|
726
|
-
case
|
|
727
|
-
case
|
|
728
|
-
case
|
|
729
|
-
case
|
|
730
|
-
case
|
|
731
|
-
case
|
|
732
|
-
case
|
|
733
|
-
case
|
|
718
|
+
case 171 /* SyntaxKind.Parameter */:
|
|
719
|
+
case 173 /* SyntaxKind.PropertySignature */:
|
|
720
|
+
case 174 /* SyntaxKind.PropertyDeclaration */:
|
|
721
|
+
case 210 /* SyntaxKind.BindingElement */:
|
|
722
|
+
case 213 /* SyntaxKind.PropertyAccessExpression */:
|
|
723
|
+
case 214 /* SyntaxKind.ElementAccessExpression */:
|
|
724
|
+
case 228 /* SyntaxKind.BinaryExpression */:
|
|
725
|
+
case 215 /* SyntaxKind.CallExpression */:
|
|
726
|
+
case 262 /* SyntaxKind.VariableDeclaration */:
|
|
727
|
+
case 279 /* SyntaxKind.ExportAssignment */:
|
|
728
|
+
case 304 /* SyntaxKind.PropertyAssignment */:
|
|
729
|
+
case 305 /* SyntaxKind.ShorthandPropertyAssignment */:
|
|
730
|
+
case 334 /* SyntaxKind.JSDocParameterTag */:
|
|
731
|
+
case 341 /* SyntaxKind.JSDocPropertyTag */:
|
|
734
732
|
return true;
|
|
735
733
|
}
|
|
736
734
|
return false;
|
|
737
735
|
}
|
|
738
736
|
export function isAccessorKind(node) {
|
|
739
|
-
return node.kind ===
|
|
737
|
+
return node.kind === 179 /* SyntaxKind.GetAccessor */ || node.kind === 180 /* SyntaxKind.SetAccessor */;
|
|
740
738
|
}
|
|
741
739
|
/** Whether a declaration is marked optional with `?`, as tsgo's `HasQuestionToken`. */
|
|
742
740
|
export function hasQuestionToken(node) {
|
|
@@ -16,6 +16,7 @@ import { BuilderTracker, TrackedSymbol, canReuseExistingJSTypeNode } from './nod
|
|
|
16
16
|
import { getSpecifierForModuleSymbol, lookupSymbolChain, symbolToTypeNode } from './node-builder-names.js';
|
|
17
17
|
import { getExternalModuleFileFromDeclaration } from './checker-modules.js';
|
|
18
18
|
import { getResolutionModeOverride } from './program-utilities.js';
|
|
19
|
+
import { getMappedType } from './checker-types.js';
|
|
19
20
|
/** Errors and names tracked while reusing a node, replayed only if the reuse succeeds. */
|
|
20
21
|
class RecoveryBoundary {
|
|
21
22
|
hadError = false;
|
|
@@ -162,7 +163,7 @@ class ExistingNodeReuser extends VisitorBase {
|
|
|
162
163
|
if (result !== undefined)
|
|
163
164
|
result = b.setTextRange(result, node);
|
|
164
165
|
if (bound.hadError) {
|
|
165
|
-
if (isTypeNode(node) && node.kind !==
|
|
166
|
+
if (isTypeNode(node) && node.kind !== 184 /* SyntaxKind.TypePredicate */) {
|
|
166
167
|
bound.hadError = hadError;
|
|
167
168
|
b.trackedSymbols.length = trackedTop;
|
|
168
169
|
bound.deferredReports.length = reportsTop;
|
|
@@ -178,7 +179,7 @@ class ExistingNodeReuser extends VisitorBase {
|
|
|
178
179
|
const b = this.b;
|
|
179
180
|
if (node instanceof JSDocTypeExpression)
|
|
180
181
|
return this.visitNode(node.type);
|
|
181
|
-
if (node.kind ===
|
|
182
|
+
if (node.kind === 311 /* SyntaxKind.JSDocAllType */)
|
|
182
183
|
return b.keyword(132 /* SyntaxKind.AnyKeyword */);
|
|
183
184
|
if (node instanceof JSDocNullableType)
|
|
184
185
|
return b.created(new UnionTypeNode(b.list([
|
|
@@ -196,12 +197,12 @@ class ExistingNodeReuser extends VisitorBase {
|
|
|
196
197
|
for (const t of node.jsdocPropertyTags ?? []) {
|
|
197
198
|
if (!(t instanceof JSDocParameterOrPropertyTag))
|
|
198
199
|
continue;
|
|
199
|
-
if (t.kind !==
|
|
200
|
+
if (t.kind !== 341 /* SyntaxKind.JSDocPropertyTag */ && t.kind !== 334 /* SyntaxKind.JSDocParameterTag */)
|
|
200
201
|
continue;
|
|
201
202
|
const n = t.name;
|
|
202
203
|
const targetName = n instanceof QualifiedName ? n.right : n;
|
|
203
204
|
const name = this.visitNode(targetName);
|
|
204
|
-
const optional = t.isBracketed || (t.typeExpression !== undefined && t.typeExpression.kind ===
|
|
205
|
+
const optional = t.isBracketed || (t.typeExpression !== undefined && t.typeExpression.kind === 314 /* SyntaxKind.JSDocOptionalType */);
|
|
205
206
|
const type = t.typeExpression === undefined ? undefined : this.visitNode(t.typeExpression);
|
|
206
207
|
members.push(b.created(new PropertySignatureDeclaration(undefined, name, optional ? b.token(57 /* SyntaxKind.QuestionToken */) : undefined, type, undefined)));
|
|
207
208
|
}
|
|
@@ -273,7 +274,7 @@ class ExistingNodeReuser extends VisitorBase {
|
|
|
273
274
|
if ((sym.flags & 1 /* SymbolFlags.FunctionScopedVariable */) !== 0 &&
|
|
274
275
|
sym.valueDeclaration !== undefined &&
|
|
275
276
|
(isPartOfParameterDeclaration(sym.valueDeclaration) ||
|
|
276
|
-
sym.valueDeclaration.kind ===
|
|
277
|
+
sym.valueDeclaration.kind === 334 /* SyntaxKind.JSDocParameterTag */))
|
|
277
278
|
return new TrackedName(false, this.attachSymbolToLeftmostIdentifier(leftmost, node, sym));
|
|
278
279
|
let introducesError = false;
|
|
279
280
|
if ((sym.flags & 262144 /* SymbolFlags.TypeParameter */) === 0 &&
|
|
@@ -331,7 +332,7 @@ class ExistingNodeReuser extends VisitorBase {
|
|
|
331
332
|
if ((symbol.flags & 262144 /* SymbolFlags.TypeParameter */) !== 0) {
|
|
332
333
|
const declaredType = getDeclaredTypeOfSymbol(b.c, symbol);
|
|
333
334
|
// A type parameter remapped by the scope.
|
|
334
|
-
if (b.mapper !== undefined && b.mapper
|
|
335
|
+
if (b.mapper !== undefined && getMappedType(declaredType, b.mapper) !== declaredType)
|
|
335
336
|
return undefined;
|
|
336
337
|
}
|
|
337
338
|
if (!canReuseExistingJSTypeNode(b, node, b.getTypeFromTypeNode(node, false)))
|
|
@@ -368,7 +369,7 @@ class ExistingNodeReuser extends VisitorBase {
|
|
|
368
369
|
return replacement;
|
|
369
370
|
}
|
|
370
371
|
// `this` types are copied as they are.
|
|
371
|
-
if (node.kind ===
|
|
372
|
+
if (node.kind === 199 /* SyntaxKind.ThisType */)
|
|
372
373
|
return node;
|
|
373
374
|
if (node instanceof TypeParameterDeclaration) {
|
|
374
375
|
const name = this.trackExistingEntityName(node.name);
|
|
@@ -438,15 +439,15 @@ class ExistingNodeReuser extends VisitorBase {
|
|
|
438
439
|
return factory.updateImportTypeNode(node, node.isTypeOf, argument, node.attributes === undefined ? undefined : asImportAttributes(this.visitNode(node.attributes)), this.visitNode(node.qualifier), this.visitNodes(node.typeArguments));
|
|
439
440
|
}
|
|
440
441
|
const name = getName(node);
|
|
441
|
-
if (name !== undefined && name.kind ===
|
|
442
|
+
if (name !== undefined && name.kind === 169 /* SyntaxKind.ComputedPropertyName */ && !hasLateBindableName(b.c, node)) {
|
|
442
443
|
if (!hasDynamicName(node))
|
|
443
444
|
return this.visitEachChild(node);
|
|
444
445
|
return undefined;
|
|
445
446
|
}
|
|
446
447
|
if ((isFunctionLike(node) && getType(node) === undefined) ||
|
|
447
|
-
((node.kind ===
|
|
448
|
-
node.kind ===
|
|
449
|
-
node.kind ===
|
|
448
|
+
((node.kind === 174 /* SyntaxKind.PropertyDeclaration */ ||
|
|
449
|
+
node.kind === 173 /* SyntaxKind.PropertySignature */ ||
|
|
450
|
+
node.kind === 171 /* SyntaxKind.Parameter */) &&
|
|
450
451
|
getType(node) === undefined &&
|
|
451
452
|
getInitializer(node) === undefined)) {
|
|
452
453
|
// Untyped declarations get `any`.
|
|
@@ -485,9 +486,9 @@ class ExistingNodeReuser extends VisitorBase {
|
|
|
485
486
|
return factory.updateConditionalTypeNode(node, checkType, extendsType, trueType, falseType);
|
|
486
487
|
}
|
|
487
488
|
// Tuples, type literals and mapped types are written on one line.
|
|
488
|
-
if (node.kind ===
|
|
489
|
-
((b.flags & 1024 /* NodeBuilderFlags.MultilineObjectLiterals */) === 0 && node.kind ===
|
|
490
|
-
node.kind ===
|
|
489
|
+
if (node.kind === 191 /* SyntaxKind.TupleType */ ||
|
|
490
|
+
((b.flags & 1024 /* NodeBuilderFlags.MultilineObjectLiterals */) === 0 && node.kind === 189 /* SyntaxKind.TypeLiteral */) ||
|
|
491
|
+
node.kind === 202 /* SyntaxKind.MappedType */) {
|
|
491
492
|
let result = this.visitEachChild(node);
|
|
492
493
|
if (result === node)
|
|
493
494
|
result = b.setTextRange(node.deepClone(), node);
|
|
@@ -593,11 +594,11 @@ function getModuleSpecifierOverride(b, parent, literal) {
|
|
|
593
594
|
? lookupSymbolChain(b, nodeSymbol, meaning, true)[0]
|
|
594
595
|
: undefined;
|
|
595
596
|
if (parentSymbol !== undefined && isExternalModuleSymbol(parentSymbol))
|
|
596
|
-
name = getSpecifierForModuleSymbol(b, parentSymbol, mode);
|
|
597
|
+
name = getSpecifierForModuleSymbol(b, parentSymbol, mode).specifier;
|
|
597
598
|
else {
|
|
598
599
|
const targetFile = getExternalModuleFileFromDeclaration(c, parent);
|
|
599
600
|
if (targetFile !== undefined && targetFile.symbol !== undefined)
|
|
600
|
-
name = getSpecifierForModuleSymbol(b, targetFile.symbol, mode);
|
|
601
|
+
name = getSpecifierForModuleSymbol(b, targetFile.symbol, mode).specifier;
|
|
601
602
|
}
|
|
602
603
|
if (name.includes('/node_modules/')) {
|
|
603
604
|
b.encounteredError = true;
|
|
@@ -606,7 +607,7 @@ function getModuleSpecifierOverride(b, parent, literal) {
|
|
|
606
607
|
return name !== originalName ? name : '';
|
|
607
608
|
}
|
|
608
609
|
function isExternalModuleSymbol(symbol) {
|
|
609
|
-
return
|
|
610
|
+
return symbol.isExternalModule();
|
|
610
611
|
}
|
|
611
612
|
function isLiteralImportType(node) {
|
|
612
613
|
return node.argument instanceof LiteralTypeNode && node.argument.literal.kind === 10 /* SyntaxKind.StringLiteral */;
|
|
@@ -614,7 +615,7 @@ function isLiteralImportType(node) {
|
|
|
614
615
|
function isEntityNameExpressionNode(node) {
|
|
615
616
|
if (node.kind === 79 /* SyntaxKind.Identifier */)
|
|
616
617
|
return true;
|
|
617
|
-
if (node.kind ===
|
|
618
|
+
if (node.kind === 213 /* SyntaxKind.PropertyAccessExpression */) {
|
|
618
619
|
const name = getName(node);
|
|
619
620
|
return (name !== undefined &&
|
|
620
621
|
name.kind === 79 /* SyntaxKind.Identifier */ &&
|
|
@@ -625,12 +626,12 @@ function isEntityNameExpressionNode(node) {
|
|
|
625
626
|
function isDeclarationName(node) {
|
|
626
627
|
const parent = node.parent;
|
|
627
628
|
return (parent !== undefined &&
|
|
628
|
-
node.kind !==
|
|
629
|
+
node.kind !== 308 /* SyntaxKind.SourceFile */ &&
|
|
629
630
|
getName(parent) === node &&
|
|
630
|
-
parent.kind !==
|
|
631
|
+
parent.kind !== 185 /* SyntaxKind.TypeReference */);
|
|
631
632
|
}
|
|
632
633
|
function isTypeNode(node) {
|
|
633
|
-
return ((node.kind >=
|
|
634
|
+
return ((node.kind >= 184 /* SyntaxKind.FirstTypeNode */ && node.kind <= 207 /* SyntaxKind.LastTypeNode */) ||
|
|
634
635
|
node.kind === 132 /* SyntaxKind.AnyKeyword */ ||
|
|
635
636
|
node.kind === 159 /* SyntaxKind.UnknownKeyword */ ||
|
|
636
637
|
node.kind === 150 /* SyntaxKind.NumberKeyword */ ||
|
|
@@ -643,5 +644,5 @@ function isTypeNode(node) {
|
|
|
643
644
|
node.kind === 157 /* SyntaxKind.UndefinedKeyword */ ||
|
|
644
645
|
node.kind === 146 /* SyntaxKind.NeverKeyword */ ||
|
|
645
646
|
node.kind === 141 /* SyntaxKind.IntrinsicKeyword */ ||
|
|
646
|
-
node.kind ===
|
|
647
|
+
node.kind === 235 /* SyntaxKind.ExpressionWithTypeArguments */);
|
|
647
648
|
}
|
|
@@ -14,6 +14,15 @@ export declare class TrackedSymbol {
|
|
|
14
14
|
readonly meaning: SymbolFlags;
|
|
15
15
|
constructor(symbol: Symbol, enclosingDeclaration: Node | undefined, meaning: SymbolFlags);
|
|
16
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* The caches of tsgo's node builder that outlive one request: an emit resolver keeps one node builder, so the types
|
|
19
|
+
* serialized for one declaration are reused, as copies without positions, by the next ones in the file.
|
|
20
|
+
*/
|
|
21
|
+
export declare class NodeBuilderCaches {
|
|
22
|
+
readonly serializedTypes: Map<number, Map<string, SerializedTypeEntry>>;
|
|
23
|
+
readonly fakeScopes: Map<Node, string>;
|
|
24
|
+
constructor();
|
|
25
|
+
}
|
|
17
26
|
declare class SerializedTypeEntry {
|
|
18
27
|
readonly node: Node;
|
|
19
28
|
readonly truncating: boolean;
|
|
@@ -100,6 +109,8 @@ export declare class NodeBuilder {
|
|
|
100
109
|
pseudo: PseudoChecker | undefined;
|
|
101
110
|
/** Set for declaration emit, which writes unions in an order that doesn't depend on the checker's history. */
|
|
102
111
|
declarationOrder: boolean;
|
|
112
|
+
/** When set, the symbol each identifier naming a symbol refers to. */
|
|
113
|
+
idToSymbol: Map<Node, Symbol> | undefined;
|
|
103
114
|
constructor(c: Checker, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags, internalFlags: NodeBuilderInternalFlags, tracker: SymbolTracker | undefined, context?: EmitContext | undefined);
|
|
104
115
|
get reportedDiagnostic(): boolean;
|
|
105
116
|
set reportedDiagnostic(value: boolean);
|
|
@@ -116,6 +127,8 @@ export declare class NodeBuilder {
|
|
|
116
127
|
get serializedTypes(): Map<number, Map<string, SerializedTypeEntry>>;
|
|
117
128
|
/** The kind of fake scope a block stands for: `params` or `typeParams`. */
|
|
118
129
|
get fakeScopes(): Map<Node, string>;
|
|
130
|
+
/** Uses `caches` for the types this builder serializes and its fake scopes, sharing them with other builders. */
|
|
131
|
+
useCaches(caches: NodeBuilderCaches): void;
|
|
119
132
|
/** `result`, or undefined if serialization failed. */
|
|
120
133
|
finish<T>(result: T | undefined): T | undefined;
|
|
121
134
|
/** Reports a symbol the builder names; without a location it's only recorded. */
|
|
@@ -127,6 +140,8 @@ export declare class NodeBuilder {
|
|
|
127
140
|
keyword(kind: SyntaxKind): Node;
|
|
128
141
|
token(kind: SyntaxKind): Token;
|
|
129
142
|
identifier(text: string): Identifier;
|
|
143
|
+
/** An identifier naming `symbol`, recorded in `idToSymbol`. */
|
|
144
|
+
symbolIdentifier(text: string, symbol: Symbol): Identifier;
|
|
130
145
|
stringLiteral(text: string, isSingleQuote: boolean): StringLiteral;
|
|
131
146
|
typeReference(name: Node, typeArguments: NodeList | undefined): Node;
|
|
132
147
|
/** `...`, or `any /*elided*\/` without truncation. */
|
|
@@ -157,6 +172,8 @@ export declare class NodeBuilder {
|
|
|
157
172
|
/** Writes `t` with `transform`, eliding its circular references; cached per enclosing declaration. */
|
|
158
173
|
visitAndTransformType(t: Type, transform: TransformKind): Node | undefined;
|
|
159
174
|
private typeToTypeNodeOrCircularityElision;
|
|
175
|
+
/** The placeholder for a circular reference; outside of display, it is an error. */
|
|
176
|
+
private createCyclicStructurePlaceholder;
|
|
160
177
|
private conditionalTypeToTypeNode;
|
|
161
178
|
private getParentSymbolOfTypeParameter;
|
|
162
179
|
private typeReferenceToTypeNode;
|
|
@@ -249,7 +266,7 @@ export declare function getTupleElementLabel(c: Checker, flags: ElementFlags, la
|
|
|
249
266
|
* The type node TypeScript would write for `type`. As in tsgo, the builder has a pseudochecker, so types
|
|
250
267
|
* of declarations are written from what the source wrote where that denotes the type.
|
|
251
268
|
*/
|
|
252
|
-
export declare function typeToTypeNode(c: Checker, type: Type, enclosingDeclaration: Node | undefined, flags: number, internalFlags?: NodeBuilderInternalFlags, tracker?: SymbolTracker | undefined): Node | undefined;
|
|
269
|
+
export declare function typeToTypeNode(c: Checker, type: Type, enclosingDeclaration: Node | undefined, flags: number, internalFlags?: NodeBuilderInternalFlags, tracker?: SymbolTracker | undefined, idToSymbol?: Map<Node, Symbol> | undefined): Node | undefined;
|
|
253
270
|
/** The declaration of kind `kind` TypeScript would write for `signature`, with a pseudochecker as `typeToTypeNode`. */
|
|
254
271
|
export declare function signatureToSignatureDeclaration(c: Checker, signature: Signature, kind: SyntaxKind, enclosingDeclaration: Node | undefined, flags: number, internalFlags?: NodeBuilderInternalFlags, tracker?: SymbolTracker | undefined): Node | undefined;
|
|
255
272
|
/**
|