From 6ce46d3b56dc9ebc2de726936878c032481fbe36 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Nov 2025 21:40:34 +0000 Subject: [PATCH 1/2] deps(deps): bump microsoft/typescript-go from `dedfbd9` to `c9d2894` Bumps [microsoft/typescript-go](https://github.com/microsoft/typescript-go) from `dedfbd9` to `c9d2894`. - [Commits](https://github.com/microsoft/typescript-go/compare/dedfbd997affbdd28d329da431f2b4d576c3a80e...c9d2894de3820f0ca814a7b445d14b551e80e549) --- updated-dependencies: - dependency-name: microsoft/typescript-go dependency-version: c9d2894de3820f0ca814a7b445d14b551e80e549 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- microsoft/typescript-go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/microsoft/typescript-go b/microsoft/typescript-go index dedfbd99..c9d2894d 160000 --- a/microsoft/typescript-go +++ b/microsoft/typescript-go @@ -1 +1 @@ -Subproject commit dedfbd997affbdd28d329da431f2b4d576c3a80e +Subproject commit c9d2894de3820f0ca814a7b445d14b551e80e549 From 6154e9bd7a35fe0ae9c52c5bae66a033b56a7bd6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 18 Nov 2025 10:37:44 +0800 Subject: [PATCH 2/2] chore(sync): mirror internal packages into pkg/ (auto) (#19) Co-authored-by: buke <1013738+buke@users.noreply.github.com> --- pkg/api/encoder/encoder_test.go | 18 + pkg/ast/ast.go | 9 + pkg/ast/nodeflags.go | 1 + pkg/ast/utilities.go | 24 + pkg/binder/binder.go | 132 +- pkg/checker/checker.go | 112 +- pkg/checker/emitresolver.go | 3 +- pkg/checker/exports.go | 4 + pkg/compiler/checkerpool.go | 6 +- pkg/core/compileroptions.go | 10 +- pkg/diagnosticwriter/diagnosticwriter.go | 161 +- pkg/execute/tsc/diagnostics.go | 14 +- pkg/fourslash/_scripts/convertFourslash.mts | 136 +- pkg/fourslash/_scripts/failingTests.txt | 126 +- pkg/fourslash/_scripts/makeManual.mts | 2 +- pkg/fourslash/_scripts/manualTests.txt | 2 + pkg/fourslash/_scripts/updateFailing.mts | 2 +- pkg/fourslash/baselineutil.go | 2 +- pkg/fourslash/fourslash.go | 318 +++- .../gen/annotateWithTypeFromJSDoc2_test.go | 19 + .../tests/gen/autoImportModuleNone1_test.go | 37 + .../tests/gen/autoImportModuleNone2_test.go | 48 + ...odeFixInferFromUsageBindingElement_test.go | 19 + ...xRemoveUnnecessaryAwait_mixedUnion_test.go | 24 + ...ecessaryAwait_notAvailableOnReturn_test.go | 20 + ...achableCode_noSuggestionIfDisabled_test.go | 18 + ...UnusedLabel_noSuggestionIfDisabled_test.go | 18 + ...nsDotInArrayLiteralInObjectLiteral_test.go | 31 + .../gen/findAllRefsModuleDotExports_test.go | 2 +- ...etJavaScriptSyntacticDiagnostics01_test.go | 19 + ...etJavaScriptSyntacticDiagnostics02_test.go | 22 + ...etJavaScriptSyntacticDiagnostics10_test.go | 19 + ...etJavaScriptSyntacticDiagnostics11_test.go | 19 + ...etJavaScriptSyntacticDiagnostics12_test.go | 19 + ...etJavaScriptSyntacticDiagnostics13_test.go | 19 + ...etJavaScriptSyntacticDiagnostics14_test.go | 19 + ...etJavaScriptSyntacticDiagnostics15_test.go | 19 + ...etJavaScriptSyntacticDiagnostics16_test.go | 19 + ...etJavaScriptSyntacticDiagnostics17_test.go | 19 + ...etJavaScriptSyntacticDiagnostics18_test.go | 27 + ...etJavaScriptSyntacticDiagnostics19_test.go | 19 + ...getJavaScriptSyntacticDiagnostics1_test.go | 19 + ...etJavaScriptSyntacticDiagnostics21_test.go | 20 + ...etJavaScriptSyntacticDiagnostics22_test.go | 19 + ...etJavaScriptSyntacticDiagnostics23_test.go | 26 + ...getJavaScriptSyntacticDiagnostics2_test.go | 19 + ...getJavaScriptSyntacticDiagnostics3_test.go | 19 + ...getJavaScriptSyntacticDiagnostics4_test.go | 19 + ...getJavaScriptSyntacticDiagnostics5_test.go | 19 + ...getJavaScriptSyntacticDiagnostics6_test.go | 19 + ...getJavaScriptSyntacticDiagnostics7_test.go | 19 + ...getJavaScriptSyntacticDiagnostics8_test.go | 19 + ...getJavaScriptSyntacticDiagnostics9_test.go | 19 + ...eclarationDiagnosticsNoServerError_test.go | 26 + pkg/fourslash/tests/gen/issue57429_test.go | 41 + pkg/fourslash/tests/gen/issue57585-2_test.go | 87 + .../tests/gen/jsDocAugmentsAndExtends_test.go | 43 + .../gen/jsdocDeprecated_suggestion22_test.go | 26 + .../gen/jsdocDeprecated_suggestion5_test.go | 33 + .../gen/jsdocDeprecated_suggestion7_test.go | 25 + .../tests/gen/jsdocParam_suggestion1_test.go | 30 + .../gen/jsxElementExtendsNoCrash1_test.go | 18 + .../gen/jsxElementExtendsNoCrash2_test.go | 18 + .../gen/jsxElementExtendsNoCrash3_test.go | 18 + ...eDeclarationDeprecated_suggestion2_test.go | 18 + ...torConvertToEsModule_notAtTopLevel_test.go | 22 + ...ertToEsModule_notInCommonjsProject_test.go | 19 + .../referencesForStatementKeywords_test.go | 2 +- ...ImportExtensionsProjectReferences1_test.go | 58 + ...ImportExtensionsProjectReferences2_test.go | 44 + ...ImportExtensionsProjectReferences3_test.go | 47 + .../gen/sideEffectImportsSuggestion1_test.go | 28 + .../tests/gen/suggestionNoDuplicates_test.go | 30 + ...OfUnusedVariableWithExternalModule_test.go | 45 + .../gen/tsconfigComputedPropertyError_test.go | 24 + ...fterStringCompletionsInNestedCall2_test.go | 80 + ...AfterStringCompletionsInNestedCall_test.go | 62 + .../parserCorruptionAfterMapInClass_test.go | 35 + .../quickInfoForOverloadOnConst1_test.go | 2 +- pkg/ls/codeactions.go | 2 +- pkg/ls/completions.go | 158 +- pkg/ls/definition.go | 15 +- pkg/ls/diagnostics.go | 17 +- pkg/ls/findallreferences.go | 6 +- pkg/ls/hover.go | 98 +- pkg/ls/lsutil/utilities.go | 2 +- pkg/ls/signaturehelp.go | 19 +- pkg/ls/string_completions.go | 18 +- pkg/ls/symbols.go | 4 +- pkg/ls/utilities.go | 2 +- pkg/lsp/lsproto/_generate/generate.mts | 166 ++ pkg/lsp/lsproto/jsonrpc.go | 36 +- pkg/lsp/lsproto/lsp.go | 63 + pkg/lsp/lsproto/lsp_generated.go | 1489 +++++++++++++++++ pkg/lsp/server.go | 235 +-- pkg/parser/reparser.go | 2 +- pkg/project/checkerpool.go | 2 +- pkg/project/untitled_test.go | 2 +- pkg/scanner/scanner.go | 9 +- pkg/scanner/utilities.go | 19 + pkg/testutil/parsetestutil/parsetestutil.go | 4 +- pkg/testutil/tsbaseline/error_baseline.go | 32 +- pkg/testutil/tsbaseline/js_emit_baseline.go | 8 +- .../tstransforms/importelision_test.go | 2 +- .../tstransforms/runtimesyntax.go | 2 +- pkg/transformers/tstransforms/typeeraser.go | 2 +- pkg/transformers/tstransforms/utilities.go | 6 - pkg/tsoptions/commandlineparser_test.go | 4 +- pkg/tsoptions/tsconfigparsing_test.go | 4 +- .../encodeSourceFileWithUnicodeEscapes.txt | 27 + .../compiler/erasableSyntaxOnlyJS.symbols | 4 +- ...SatisfiesOnExportEqualsDeclaration.symbols | 2 +- .../compiler/reachabilityChecks10.errors.txt | 11 + .../compiler/reachabilityChecks10.symbols | 16 + .../compiler/reachabilityChecks10.types | 22 + .../compiler/reachabilityChecks11.errors.txt | 104 ++ .../compiler/reachabilityChecks11.js | 153 ++ .../compiler/reachabilityChecks11.symbols | 124 ++ .../compiler/reachabilityChecks11.types | 139 ++ .../compiler/reachabilityChecks9.errors.txt | 37 + .../compiler/reachabilityChecks9.symbols | 65 + .../compiler/reachabilityChecks9.types | 87 + .../compiler/reachabilityChecksIgnored.js | 29 + .../reachabilityChecksIgnored.symbols | 29 + .../compiler/reachabilityChecksIgnored.types | 37 + .../unicodeSurrogatesInStringLiterals.js | 47 + .../unicodeSurrogatesInStringLiterals.symbols | 33 + .../unicodeSurrogatesInStringLiterals.types | 39 + .../emptyExportFindReferences.baseline.jsonc | 4 +- ...findAllRefsModuleDotExports.baseline.jsonc | 21 + ...erencesForStatementKeywords.baseline.jsonc | 526 ++++++ .../jsdocOnInheritedMembers1.baseline | 4 +- .../jsdocOnInheritedMembers2.baseline | 4 +- .../quickInfo/quickInfoCommentsClass.baseline | 8 +- .../quickInfoDisplayPartsClass.baseline | 4 +- ...kInfoDisplayPartsClassConstructor.baseline | 29 +- .../quickInfoDisplayPartsFunction.baseline | 29 +- ...uickInfoDisplayPartsLocalFunction.baseline | 29 +- .../quickInfoDisplayPartsTypeAlias.baseline | 4 +- .../quickInfoJsDocInheritage.baseline | 104 +- .../quickInfo/quickInfoJsDocTags16.baseline | 8 +- .../quickInfo/quickInfoJsDocTags4.baseline | 17 +- .../quickInfo/quickInfoJsDocTags5.baseline | 17 +- ...ckInfoJsDocTagsFunctionOverload01.baseline | 11 +- ...ckInfoJsDocTagsFunctionOverload03.baseline | 9 +- ...ckInfoJsDocTagsFunctionOverload05.baseline | 9 +- ...tJavaScriptSyntacticDiagnostics01.baseline | 11 + ...tJavaScriptSyntacticDiagnostics02.baseline | 23 + ...etJavaScriptSyntacticDiagnostics1.baseline | 8 + ...tJavaScriptSyntacticDiagnostics10.baseline | 8 + ...tJavaScriptSyntacticDiagnostics11.baseline | 8 + ...tJavaScriptSyntacticDiagnostics12.baseline | 8 + ...tJavaScriptSyntacticDiagnostics13.baseline | 8 + ...tJavaScriptSyntacticDiagnostics14.baseline | 8 + ...tJavaScriptSyntacticDiagnostics15.baseline | 8 + ...tJavaScriptSyntacticDiagnostics16.baseline | 8 + ...tJavaScriptSyntacticDiagnostics17.baseline | 8 + ...tJavaScriptSyntacticDiagnostics18.baseline | 19 + ...tJavaScriptSyntacticDiagnostics19.baseline | 8 + ...etJavaScriptSyntacticDiagnostics2.baseline | 8 + ...etJavaScriptSyntacticDiagnostics3.baseline | 8 + ...etJavaScriptSyntacticDiagnostics4.baseline | 11 + ...etJavaScriptSyntacticDiagnostics5.baseline | 8 + ...etJavaScriptSyntacticDiagnostics6.baseline | 8 + ...etJavaScriptSyntacticDiagnostics7.baseline | 8 + ...etJavaScriptSyntacticDiagnostics8.baseline | 8 + ...etJavaScriptSyntacticDiagnostics9.baseline | 11 + ...mportExtensionsProjectReferences1.baseline | 10 + ...mportExtensionsProjectReferences2.baseline | 7 + ...mportExtensionsProjectReferences3.baseline | 7 + ...terStringCompletionsInNestedCall2.baseline | 68 + .../checkJsTypeDefNoUnusedLocalMarked.symbols | 2 +- ...kJsTypeDefNoUnusedLocalMarked.symbols.diff | 2 +- .../commaOperatorLeftSideUnused.errors.txt | 5 +- ...ommaOperatorLeftSideUnused.errors.txt.diff | 25 - ...commonJsExportTypeDeclarationError.symbols | 2 +- ...nJsExportTypeDeclarationError.symbols.diff | 2 +- .../compiler/commonJsIsolatedModules.symbols | 2 +- .../commonJsIsolatedModules.symbols.diff | 2 +- ...nmentDefineProperrtyPotentialMerge.symbols | 6 +- ...DefineProperrtyPotentialMerge.symbols.diff | 6 +- .../submodule/compiler/evalAfter0.errors.txt | 10 + .../compiler/evalAfter0.errors.txt.diff | 14 - .../expandoFunctionContextualTypesJs.symbols | 4 +- ...andoFunctionContextualTypesJs.symbols.diff | 4 +- ...Script(verbatimmodulesyntax=false).symbols | 2 +- ...t(verbatimmodulesyntax=false).symbols.diff | 2 +- ...aScript(verbatimmodulesyntax=true).symbols | 2 +- ...pt(verbatimmodulesyntax=true).symbols.diff | 2 +- .../importNonExportedMember12.symbols | 2 +- .../importNonExportedMember12.symbols.diff | 2 +- .../compiler/javascriptCommonjsModule.symbols | 2 +- .../javascriptCommonjsModule.symbols.diff | 2 +- .../javascriptImportDefaultBadExport.symbols | 2 +- ...ascriptImportDefaultBadExport.symbols.diff | 2 +- ...DeclarationEmitExportAssignedArray.symbols | 2 +- ...rationEmitExportAssignedArray.symbols.diff | 2 +- ...edFunctionWithExtraTypedefsMembers.symbols | 2 +- ...ctionWithExtraTypedefsMembers.symbols.diff | 2 +- ...ExportAssignmentNonMutableLocation.symbols | 2 +- ...tAssignmentNonMutableLocation.symbols.diff | 2 +- ...MemberMergedWithModuleAugmentation.symbols | 2 +- ...rMergedWithModuleAugmentation.symbols.diff | 2 +- ...emberMergedWithModuleAugmentation2.symbols | 2 +- ...MergedWithModuleAugmentation2.symbols.diff | 2 +- ...emberMergedWithModuleAugmentation3.symbols | 4 +- ...MergedWithModuleAugmentation3.symbols.diff | 4 +- .../jsFileAlternativeUseOfOverloadTag.js | 64 +- .../jsFileAlternativeUseOfOverloadTag.js.diff | 66 +- ...opertyInitalizationInObjectLiteral.symbols | 2 +- ...yInitalizationInObjectLiteral.symbols.diff | 2 +- ...sPropertyCheckFromContainedLiteral.symbols | 4 +- ...ertyCheckFromContainedLiteral.symbols.diff | 4 +- .../compiler/modulePreserve4.symbols | 2 +- .../compiler/modulePreserve4.symbols.diff | 2 +- .../compiler/pushTypeGetTypeOfAlias.symbols | 2 +- .../pushTypeGetTypeOfAlias.symbols.diff | 2 +- .../compiler/reachabilityChecks1.errors.txt | 47 +- .../reachabilityChecks1.errors.txt.diff | 108 ++ .../requireOfJsonFileInJsFile.symbols | 2 +- .../requireOfJsonFileInJsFile.symbols.diff | 2 +- .../truthinessCallExpressionCoercion4.symbols | 4 +- ...hinessCallExpressionCoercion4.symbols.diff | 4 +- ...initializedModuleExportsAssignment.symbols | 2 +- ...alizedModuleExportsAssignment.symbols.diff | 2 +- .../conformance/callbackCrossModule.symbols | 2 +- .../callbackCrossModule.symbols.diff | 2 +- ...portsObjectAssignPrototypeProperty.symbols | 2 +- ...ObjectAssignPrototypeProperty.symbols.diff | 2 +- .../checkObjectDefineProperty.symbols | 2 +- .../checkObjectDefineProperty.symbols.diff | 2 +- .../conformance/commonJSAliasedExport.symbols | 4 +- .../commonJSAliasedExport.symbols.diff | 4 +- .../conformance/commonJSReexport.symbols | 4 +- .../conformance/commonJSReexport.symbols.diff | 4 +- .../conflictingCommonJSES2015Exports.symbols | 2 +- ...flictingCommonJSES2015Exports.symbols.diff | 2 +- .../conformance/constructorFunctions2.symbols | 2 +- .../constructorFunctions2.symbols.diff | 2 +- .../contextualTypedSpecialAssignment.symbols | 6 +- ...textualTypedSpecialAssignment.symbols.diff | 6 +- .../conformance/enumTagOnExports.symbols | 2 +- .../conformance/enumTagOnExports.symbols.diff | 2 +- .../conformance/enumTagOnExports2.symbols | 2 +- .../enumTagOnExports2.symbols.diff | 2 +- ...rtPropertyAssignmentNameResolution.symbols | 2 +- ...pertyAssignmentNameResolution.symbols.diff | 2 +- ...eWithCommonJSAssignmentDeclaration.symbols | 2 +- ...CommonJSAssignmentDeclaration.symbols.diff | 2 +- .../importAliasModuleExports.symbols | 2 +- .../importAliasModuleExports.symbols.diff | 2 +- ...DeclarationsClassExtendsVisibility.symbols | 6 +- ...rationsClassExtendsVisibility.symbols.diff | 6 +- .../jsDeclarationsClassStatic.symbols | 4 +- .../jsDeclarationsClassStatic.symbols.diff | 4 +- ...jsDeclarationsCommonjsRelativePath.symbols | 4 +- ...larationsCommonjsRelativePath.symbols.diff | 4 +- .../jsDeclarationsComputedNames.symbols | 2 +- .../jsDeclarationsComputedNames.symbols.diff | 2 +- .../jsDeclarationsCrossfileMerge.symbols | 4 +- .../jsDeclarationsCrossfileMerge.symbols.diff | 4 +- .../jsDeclarationsDocCommentsOnConsts.symbols | 2 +- ...clarationsDocCommentsOnConsts.symbols.diff | 2 +- ...tionsExportAssignedClassExpression.symbols | 2 +- ...ExportAssignedClassExpression.symbols.diff | 2 +- ...rtAssignedClassExpressionAnonymous.symbols | 2 +- ...ignedClassExpressionAnonymous.symbols.diff | 2 +- ...nedClassExpressionAnonymousWithSub.symbols | 6 +- ...assExpressionAnonymousWithSub.symbols.diff | 6 +- ...rtAssignedClassExpressionShadowing.symbols | 4 +- ...ignedClassExpressionShadowing.symbols.diff | 4 +- ...ationsExportAssignedClassInstance1.symbols | 2 +- ...sExportAssignedClassInstance1.symbols.diff | 2 +- ...ationsExportAssignedClassInstance2.symbols | 2 +- ...sExportAssignedClassInstance2.symbols.diff | 2 +- ...ationsExportAssignedClassInstance3.symbols | 4 +- ...sExportAssignedClassInstance3.symbols.diff | 4 +- ...sExportAssignedConstructorFunction.symbols | 4 +- ...rtAssignedConstructorFunction.symbols.diff | 4 +- ...AssignedConstructorFunctionWithSub.symbols | 8 +- ...nedConstructorFunctionWithSub.symbols.diff | 8 +- ...clarationsExportAssignedVisibility.symbols | 4 +- ...tionsExportAssignedVisibility.symbols.diff | 4 +- ...tAssignmentExpressionPlusSecondary.symbols | 4 +- ...gnmentExpressionPlusSecondary.symbols.diff | 4 +- ...onsExportAssignmentWithKeywordName.symbols | 2 +- ...portAssignmentWithKeywordName.symbols.diff | 2 +- ...onsExportDoubleAssignmentInClosure.symbols | 2 +- ...portDoubleAssignmentInClosure.symbols.diff | 2 +- .../jsDeclarationsExportForms.symbols | 8 +- .../jsDeclarationsExportForms.symbols.diff | 8 +- .../jsDeclarationsExportFormsErr.symbols | 2 +- .../jsDeclarationsExportFormsErr.symbols.diff | 2 +- ...jsDeclarationsExportSubAssignments.symbols | 4 +- ...larationsExportSubAssignments.symbols.diff | 4 +- ...jsDeclarationsExportedClassAliases.symbols | 4 +- ...larationsExportedClassAliases.symbols.diff | 4 +- ...FunctionClassesCjsExportAssignment.symbols | 6 +- ...ionClassesCjsExportAssignment.symbols.diff | 6 +- .../jsDeclarationsFunctionPrototypeStatic.js | 2 +- ...eclarationsFunctionPrototypeStatic.js.diff | 2 +- ...eclarationsFunctionPrototypeStatic.symbols | 2 +- ...ationsFunctionPrototypeStatic.symbols.diff | 2 +- ...sFunctionWithDefaultAssignedMember.symbols | 2 +- ...tionWithDefaultAssignedMember.symbols.diff | 2 +- .../jsDeclarationsFunctionsCjs.symbols | 36 +- .../jsDeclarationsFunctionsCjs.symbols.diff | 36 +- ...portAliasExposedWithinNamespaceCjs.symbols | 2 +- ...liasExposedWithinNamespaceCjs.symbols.diff | 2 +- .../conformance/jsDeclarationsJson.symbols | 2 +- .../jsDeclarationsJson.symbols.diff | 2 +- .../jsDeclarationsPackageJson.symbols | 2 +- .../jsDeclarationsPackageJson.symbols.diff | 2 +- ...tionsParameterTagReusesInputNodeInEmit1.js | 2 +- ...ParameterTagReusesInputNodeInEmit1.js.diff | 2 +- ...ParameterTagReusesInputNodeInEmit1.symbols | 2 +- ...eterTagReusesInputNodeInEmit1.symbols.diff | 2 +- ...ParameterTagReusesInputNodeInEmit2.symbols | 2 +- ...eterTagReusesInputNodeInEmit2.symbols.diff | 2 +- ...ionsReexportAliasesEsModuleInterop.symbols | 2 +- ...eexportAliasesEsModuleInterop.symbols.diff | 2 +- .../jsDeclarationsReexportedCjsAlias.symbols | 4 +- ...eclarationsReexportedCjsAlias.symbols.diff | 4 +- ...sReferenceToClassInstanceCrossFile.symbols | 4 +- ...renceToClassInstanceCrossFile.symbols.diff | 4 +- .../jsDeclarationsTypeAliases.symbols | 2 +- .../jsDeclarationsTypeAliases.symbols.diff | 2 +- ...onsTypeReassignmentFromDeclaration.symbols | 2 +- ...peReassignmentFromDeclaration.symbols.diff | 2 +- ...nsTypeReassignmentFromDeclaration2.symbols | 2 +- ...eReassignmentFromDeclaration2.symbols.diff | 2 +- .../jsDeclarationsTypeReferences.symbols | 2 +- .../jsDeclarationsTypeReferences.symbols.diff | 2 +- .../jsDeclarationsTypeReferences2.symbols | 2 +- ...jsDeclarationsTypeReferences2.symbols.diff | 2 +- .../jsDeclarationsTypeReferences3.symbols | 4 +- ...jsDeclarationsTypeReferences3.symbols.diff | 4 +- ...sDeclarationsTypedefAndImportTypes.symbols | 4 +- ...arationsTypedefAndImportTypes.symbols.diff | 4 +- .../jsDeclarationsTypedefAndLatebound.symbols | 2 +- ...clarationsTypedefAndLatebound.symbols.diff | 2 +- ...TypedefPropertyAndExportAssignment.symbols | 4 +- ...efPropertyAndExportAssignment.symbols.diff | 4 +- .../conformance/jsdocImportType.symbols | 2 +- .../conformance/jsdocImportType.symbols.diff | 2 +- .../conformance/jsdocImportType2.symbols | 2 +- .../conformance/jsdocImportType2.symbols.diff | 2 +- ...docImportTypeReferenceToClassAlias.symbols | 2 +- ...portTypeReferenceToClassAlias.symbols.diff | 2 +- .../jsdocTypeFromChainedAssignment2.symbols | 4 +- ...docTypeFromChainedAssignment2.symbols.diff | 4 +- .../jsdocTypeReferenceExports.symbols | 2 +- .../jsdocTypeReferenceExports.symbols.diff | 2 +- ...ReferenceToImportOfClassExpression.symbols | 4 +- ...enceToImportOfClassExpression.symbols.diff | 4 +- ...erenceToImportOfFunctionExpression.symbols | 4 +- ...eToImportOfFunctionExpression.symbols.diff | 4 +- ...BoundAssignmentDeclarationSupport2.symbols | 6 +- ...AssignmentDeclarationSupport2.symbols.diff | 6 +- ...BoundAssignmentDeclarationSupport3.symbols | 6 +- ...AssignmentDeclarationSupport3.symbols.diff | 6 +- ...BoundAssignmentDeclarationSupport4.symbols | 4 +- ...AssignmentDeclarationSupport4.symbols.diff | 4 +- ...BoundAssignmentDeclarationSupport5.symbols | 4 +- ...AssignmentDeclarationSupport5.symbols.diff | 4 +- ...BoundAssignmentDeclarationSupport6.symbols | 4 +- ...AssignmentDeclarationSupport6.symbols.diff | 4 +- ...BoundAssignmentDeclarationSupport7.symbols | 4 +- ...AssignmentDeclarationSupport7.symbols.diff | 4 +- .../conformance/moduleExportAlias.symbols | 38 +- .../moduleExportAlias.symbols.diff | 38 +- .../conformance/moduleExportAlias2.symbols | 2 +- .../moduleExportAlias2.symbols.diff | 2 +- .../conformance/moduleExportAlias3.symbols | 2 +- .../moduleExportAlias3.symbols.diff | 2 +- .../conformance/moduleExportAlias4.symbols | 4 +- .../moduleExportAlias4.symbols.diff | 4 +- .../conformance/moduleExportAlias5.symbols | 2 +- .../moduleExportAlias5.symbols.diff | 2 +- .../moduleExportAliasExports.symbols | 2 +- .../moduleExportAliasExports.symbols.diff | 2 +- .../moduleExportAliasImported.symbols | 2 +- .../moduleExportAliasImported.symbols.diff | 2 +- .../moduleExportAliasUnknown.symbols | 2 +- .../moduleExportAliasUnknown.symbols.diff | 2 +- .../moduleExportAssignment.symbols | 8 +- .../moduleExportAssignment.symbols.diff | 8 +- .../moduleExportAssignment2.symbols | 6 +- .../moduleExportAssignment2.symbols.diff | 6 +- .../moduleExportAssignment3.symbols | 4 +- .../moduleExportAssignment3.symbols.diff | 4 +- .../moduleExportAssignment4.symbols | 2 +- .../moduleExportAssignment4.symbols.diff | 2 +- .../moduleExportAssignment5.symbols | 4 +- .../moduleExportAssignment5.symbols.diff | 4 +- .../moduleExportAssignment7.symbols | 2 +- .../moduleExportAssignment7.symbols.diff | 2 +- .../moduleExportDuplicateAlias2.symbols | 8 +- .../moduleExportDuplicateAlias2.symbols.diff | 8 +- .../moduleExportNestedNamespaces.symbols | 6 +- .../moduleExportNestedNamespaces.symbols.diff | 6 +- ...uleExportPropertyAssignmentDefault.symbols | 4 +- ...portPropertyAssignmentDefault.symbols.diff | 4 +- ...ExportWithExportPropertyAssignment.symbols | 4 +- ...tWithExportPropertyAssignment.symbols.diff | 4 +- ...xportWithExportPropertyAssignment2.symbols | 4 +- ...WithExportPropertyAssignment2.symbols.diff | 4 +- ...xportWithExportPropertyAssignment3.symbols | 8 +- ...WithExportPropertyAssignment3.symbols.diff | 8 +- ...xportWithExportPropertyAssignment4.symbols | 8 +- ...WithExportPropertyAssignment4.symbols.diff | 8 +- ...duleExportsElementAccessAssignment.symbols | 6 +- ...xportsElementAccessAssignment.symbols.diff | 6 +- .../nestedDestructuringOfRequire.symbols | 2 +- .../nestedDestructuringOfRequire.symbols.diff | 2 +- .../neverReturningFunctions1.errors.txt | 8 +- .../neverReturningFunctions1.errors.txt.diff | 32 + ...wJsExportAssignment(module=node16).symbols | 4 +- ...portAssignment(module=node16).symbols.diff | 4 +- ...wJsExportAssignment(module=node18).symbols | 4 +- ...portAssignment(module=node18).symbols.diff | 4 +- ...wJsExportAssignment(module=node20).symbols | 4 +- ...portAssignment(module=node20).symbols.diff | 4 +- ...sExportAssignment(module=nodenext).symbols | 4 +- ...rtAssignment(module=nodenext).symbols.diff | 4 +- .../paramTagTypeResolution.symbols | 2 +- .../paramTagTypeResolution.symbols.diff | 2 +- .../conformance/reExportJsFromTs.symbols | 2 +- .../conformance/reExportJsFromTs.symbols.diff | 2 +- .../requireTwoPropertyAccesses.symbols | 2 +- .../requireTwoPropertyAccesses.symbols.diff | 2 +- .../conformance/templateInsideCallback.js | 2 +- .../templateInsideCallback.js.diff | 2 +- .../typeFromPropertyAssignment17.symbols | 2 +- .../typeFromPropertyAssignment17.symbols.diff | 2 +- .../conformance/typeTagModuleExports.symbols | 2 +- .../typeTagModuleExports.symbols.diff | 2 +- .../conformance/typedefCrossModule.symbols | 2 +- .../typedefCrossModule.symbols.diff | 2 +- .../conformance/typedefCrossModule2.symbols | 4 +- .../typedefCrossModule2.symbols.diff | 4 +- .../conformance/typedefCrossModule3.symbols | 2 +- .../typedefCrossModule3.symbols.diff | 2 +- .../conformance/typedefCrossModule4.symbols | 2 +- .../typedefCrossModule4.symbols.diff | 2 +- .../assertionTypePredicates2.errors.txt.diff | 0 ...ertionsAndNonReturningFunctions.types.diff | 0 .../assignmentToVoidZero1.errors.txt.diff | 0 .../assignmentToVoidZero1.types.diff | 0 ...asyncArrowFunction_allowJs.errors.txt.diff | 0 .../asyncArrowFunction_allowJs.types.diff | 0 ...cFunctionDeclaration16_es5.errors.txt.diff | 0 .../asyncFunctionDeclaration16_es5.types.diff | 0 ...tializedModuleExportsAssignment.types.diff | 0 ...rtylessConstructorFunction.errors.txt.diff | 0 ...PropertylessConstructorFunction.types.diff | 0 ...knownAnyInJs(strict=false).errors.txt.diff | 0 .../callbackOnConstructor.types.diff | 0 .../conformance/callbackTag2.errors.txt.diff | 0 .../conformance/callbackTag2.types.diff | 0 .../conformance/callbackTag4.types.diff | 0 .../callbackTagNamespace.types.diff | 0 ...xportsObjectAssignProperty.errors.txt.diff | 0 ...heckExportsObjectAssignProperty.types.diff | 0 ...DeclaredFunctionExpression.errors.txt.diff | 0 ...iableDeclaredFunctionExpression.types.diff | 0 testdata/submoduleAccepted.txt | 32 +- .../cases/compiler/reachabilityChecks10.ts | 7 + .../cases/compiler/reachabilityChecks11.ts | 76 + .../cases/compiler/reachabilityChecks9.ts | 29 + .../compiler/reachabilityChecksIgnored.ts | 17 + .../unicodeSurrogatesInStringLiterals.ts | 19 + 472 files changed, 7329 insertions(+), 1445 deletions(-) create mode 100644 pkg/fourslash/tests/gen/annotateWithTypeFromJSDoc2_test.go create mode 100644 pkg/fourslash/tests/gen/autoImportModuleNone1_test.go create mode 100644 pkg/fourslash/tests/gen/autoImportModuleNone2_test.go create mode 100644 pkg/fourslash/tests/gen/codeFixInferFromUsageBindingElement_test.go create mode 100644 pkg/fourslash/tests/gen/codeFixRemoveUnnecessaryAwait_mixedUnion_test.go create mode 100644 pkg/fourslash/tests/gen/codeFixRemoveUnnecessaryAwait_notAvailableOnReturn_test.go create mode 100644 pkg/fourslash/tests/gen/codeFixUnreachableCode_noSuggestionIfDisabled_test.go create mode 100644 pkg/fourslash/tests/gen/codeFixUnusedLabel_noSuggestionIfDisabled_test.go create mode 100644 pkg/fourslash/tests/gen/completionsDotInArrayLiteralInObjectLiteral_test.go create mode 100644 pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics01_test.go create mode 100644 pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics02_test.go create mode 100644 pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics10_test.go create mode 100644 pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics11_test.go create mode 100644 pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics12_test.go create mode 100644 pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics13_test.go create mode 100644 pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics14_test.go create mode 100644 pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics15_test.go create mode 100644 pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics16_test.go create mode 100644 pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics17_test.go create mode 100644 pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics18_test.go create mode 100644 pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics19_test.go create mode 100644 pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics1_test.go create mode 100644 pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics21_test.go create mode 100644 pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics22_test.go create mode 100644 pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics23_test.go create mode 100644 pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics2_test.go create mode 100644 pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics3_test.go create mode 100644 pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics4_test.go create mode 100644 pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics5_test.go create mode 100644 pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics6_test.go create mode 100644 pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics7_test.go create mode 100644 pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics8_test.go create mode 100644 pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics9_test.go create mode 100644 pkg/fourslash/tests/gen/importTypesDeclarationDiagnosticsNoServerError_test.go create mode 100644 pkg/fourslash/tests/gen/issue57429_test.go create mode 100644 pkg/fourslash/tests/gen/issue57585-2_test.go create mode 100644 pkg/fourslash/tests/gen/jsDocAugmentsAndExtends_test.go create mode 100644 pkg/fourslash/tests/gen/jsdocDeprecated_suggestion22_test.go create mode 100644 pkg/fourslash/tests/gen/jsdocDeprecated_suggestion5_test.go create mode 100644 pkg/fourslash/tests/gen/jsdocDeprecated_suggestion7_test.go create mode 100644 pkg/fourslash/tests/gen/jsdocParam_suggestion1_test.go create mode 100644 pkg/fourslash/tests/gen/jsxElementExtendsNoCrash1_test.go create mode 100644 pkg/fourslash/tests/gen/jsxElementExtendsNoCrash2_test.go create mode 100644 pkg/fourslash/tests/gen/jsxElementExtendsNoCrash3_test.go create mode 100644 pkg/fourslash/tests/gen/moduleDeclarationDeprecated_suggestion2_test.go create mode 100644 pkg/fourslash/tests/gen/refactorConvertToEsModule_notAtTopLevel_test.go create mode 100644 pkg/fourslash/tests/gen/refactorConvertToEsModule_notInCommonjsProject_test.go create mode 100644 pkg/fourslash/tests/gen/rewriteRelativeImportExtensionsProjectReferences1_test.go create mode 100644 pkg/fourslash/tests/gen/rewriteRelativeImportExtensionsProjectReferences2_test.go create mode 100644 pkg/fourslash/tests/gen/rewriteRelativeImportExtensionsProjectReferences3_test.go create mode 100644 pkg/fourslash/tests/gen/sideEffectImportsSuggestion1_test.go create mode 100644 pkg/fourslash/tests/gen/suggestionNoDuplicates_test.go create mode 100644 pkg/fourslash/tests/gen/suggestionOfUnusedVariableWithExternalModule_test.go create mode 100644 pkg/fourslash/tests/gen/tsconfigComputedPropertyError_test.go create mode 100644 pkg/fourslash/tests/gen/typeErrorAfterStringCompletionsInNestedCall2_test.go create mode 100644 pkg/fourslash/tests/gen/typeErrorAfterStringCompletionsInNestedCall_test.go create mode 100644 pkg/fourslash/tests/manual/parserCorruptionAfterMapInClass_test.go rename pkg/fourslash/tests/{gen => manual}/quickInfoForOverloadOnConst1_test.go (97%) create mode 100644 testdata/baselines/reference/api/encodeSourceFileWithUnicodeEscapes.txt create mode 100644 testdata/baselines/reference/compiler/reachabilityChecks10.errors.txt create mode 100644 testdata/baselines/reference/compiler/reachabilityChecks10.symbols create mode 100644 testdata/baselines/reference/compiler/reachabilityChecks10.types create mode 100644 testdata/baselines/reference/compiler/reachabilityChecks11.errors.txt create mode 100644 testdata/baselines/reference/compiler/reachabilityChecks11.js create mode 100644 testdata/baselines/reference/compiler/reachabilityChecks11.symbols create mode 100644 testdata/baselines/reference/compiler/reachabilityChecks11.types create mode 100644 testdata/baselines/reference/compiler/reachabilityChecks9.errors.txt create mode 100644 testdata/baselines/reference/compiler/reachabilityChecks9.symbols create mode 100644 testdata/baselines/reference/compiler/reachabilityChecks9.types create mode 100644 testdata/baselines/reference/compiler/reachabilityChecksIgnored.js create mode 100644 testdata/baselines/reference/compiler/reachabilityChecksIgnored.symbols create mode 100644 testdata/baselines/reference/compiler/reachabilityChecksIgnored.types create mode 100644 testdata/baselines/reference/compiler/unicodeSurrogatesInStringLiterals.js create mode 100644 testdata/baselines/reference/compiler/unicodeSurrogatesInStringLiterals.symbols create mode 100644 testdata/baselines/reference/compiler/unicodeSurrogatesInStringLiterals.types create mode 100644 testdata/baselines/reference/fourslash/findAllReferences/findAllRefsModuleDotExports.baseline.jsonc create mode 100644 testdata/baselines/reference/fourslash/findAllReferences/referencesForStatementKeywords.baseline.jsonc create mode 100644 testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics01.baseline create mode 100644 testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics02.baseline create mode 100644 testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics1.baseline create mode 100644 testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics10.baseline create mode 100644 testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics11.baseline create mode 100644 testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics12.baseline create mode 100644 testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics13.baseline create mode 100644 testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics14.baseline create mode 100644 testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics15.baseline create mode 100644 testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics16.baseline create mode 100644 testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics17.baseline create mode 100644 testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics18.baseline create mode 100644 testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics19.baseline create mode 100644 testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics2.baseline create mode 100644 testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics3.baseline create mode 100644 testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics4.baseline create mode 100644 testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics5.baseline create mode 100644 testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics6.baseline create mode 100644 testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics7.baseline create mode 100644 testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics8.baseline create mode 100644 testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics9.baseline create mode 100644 testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/rewriteRelativeImportExtensionsProjectReferences1.baseline create mode 100644 testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/rewriteRelativeImportExtensionsProjectReferences2.baseline create mode 100644 testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/rewriteRelativeImportExtensionsProjectReferences3.baseline create mode 100644 testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/typeErrorAfterStringCompletionsInNestedCall2.baseline delete mode 100644 testdata/baselines/reference/submodule/compiler/commaOperatorLeftSideUnused.errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/compiler/evalAfter0.errors.txt delete mode 100644 testdata/baselines/reference/submodule/compiler/evalAfter0.errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/compiler/reachabilityChecks1.errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/conformance/neverReturningFunctions1.errors.txt.diff rename testdata/baselines/reference/{submodule => submoduleAccepted}/conformance/assertionTypePredicates2.errors.txt.diff (100%) rename testdata/baselines/reference/{submodule => submoduleAccepted}/conformance/assertionsAndNonReturningFunctions.types.diff (100%) rename testdata/baselines/reference/{submodule => submoduleAccepted}/conformance/assignmentToVoidZero1.errors.txt.diff (100%) rename testdata/baselines/reference/{submodule => submoduleAccepted}/conformance/assignmentToVoidZero1.types.diff (100%) rename testdata/baselines/reference/{submodule => submoduleAccepted}/conformance/asyncArrowFunction_allowJs.errors.txt.diff (100%) rename testdata/baselines/reference/{submodule => submoduleAccepted}/conformance/asyncArrowFunction_allowJs.types.diff (100%) rename testdata/baselines/reference/{submodule => submoduleAccepted}/conformance/asyncFunctionDeclaration16_es5.errors.txt.diff (100%) rename testdata/baselines/reference/{submodule => submoduleAccepted}/conformance/asyncFunctionDeclaration16_es5.types.diff (100%) rename testdata/baselines/reference/{submodule => submoduleAccepted}/conformance/binderUninitializedModuleExportsAssignment.types.diff (100%) rename testdata/baselines/reference/{submodule => submoduleAccepted}/conformance/callOfPropertylessConstructorFunction.errors.txt.diff (100%) rename testdata/baselines/reference/{submodule => submoduleAccepted}/conformance/callOfPropertylessConstructorFunction.types.diff (100%) rename testdata/baselines/reference/{submodule => submoduleAccepted}/conformance/callWithMissingVoidUndefinedUnknownAnyInJs(strict=false).errors.txt.diff (100%) rename testdata/baselines/reference/{submodule => submoduleAccepted}/conformance/callbackOnConstructor.types.diff (100%) rename testdata/baselines/reference/{submodule => submoduleAccepted}/conformance/callbackTag2.errors.txt.diff (100%) rename testdata/baselines/reference/{submodule => submoduleAccepted}/conformance/callbackTag2.types.diff (100%) rename testdata/baselines/reference/{submodule => submoduleAccepted}/conformance/callbackTag4.types.diff (100%) rename testdata/baselines/reference/{submodule => submoduleAccepted}/conformance/callbackTagNamespace.types.diff (100%) rename testdata/baselines/reference/{submodule => submoduleAccepted}/conformance/checkExportsObjectAssignProperty.errors.txt.diff (100%) rename testdata/baselines/reference/{submodule => submoduleAccepted}/conformance/checkExportsObjectAssignProperty.types.diff (100%) rename testdata/baselines/reference/{submodule => submoduleAccepted}/conformance/checkJsdocParamOnVariableDeclaredFunctionExpression.errors.txt.diff (100%) rename testdata/baselines/reference/{submodule => submoduleAccepted}/conformance/checkJsdocParamOnVariableDeclaredFunctionExpression.types.diff (100%) create mode 100644 testdata/tests/cases/compiler/reachabilityChecks10.ts create mode 100644 testdata/tests/cases/compiler/reachabilityChecks11.ts create mode 100644 testdata/tests/cases/compiler/reachabilityChecks9.ts create mode 100644 testdata/tests/cases/compiler/reachabilityChecksIgnored.ts create mode 100644 testdata/tests/cases/compiler/unicodeSurrogatesInStringLiterals.ts diff --git a/pkg/api/encoder/encoder_test.go b/pkg/api/encoder/encoder_test.go index ca5df8fc..7e7a379f 100644 --- a/pkg/api/encoder/encoder_test.go +++ b/pkg/api/encoder/encoder_test.go @@ -35,6 +35,24 @@ func TestEncodeSourceFile(t *testing.T) { }) } +func TestEncodeSourceFileWithUnicodeEscapes(t *testing.T) { + t.Parallel() + sourceFile := parser.ParseSourceFile(ast.SourceFileParseOptions{ + FileName: "/test.ts", + Path: "/test.ts", + }, `let a = "😃"; let b = "\ud83d\ude03"; let c = "\udc00\ud83d\ude03"; let d = "\ud83d\ud83d\ude03"`, core.ScriptKindTS) + t.Run("baseline", func(t *testing.T) { + t.Parallel() + buf, err := encoder.EncodeSourceFile(sourceFile, "") + assert.NilError(t, err) + + str := formatEncodedSourceFile(buf) + baseline.Run(t, "encodeSourceFileWithUnicodeEscapes.txt", str, baseline.Options{ + Subfolder: "api", + }) + }) +} + func BenchmarkEncodeSourceFile(b *testing.B) { repo.SkipIfNoTypeScriptSubmodule(b) filePath := filepath.Join(repo.TypeScriptSubmodulePath, "src/compiler/checker.ts") diff --git a/pkg/ast/ast.go b/pkg/ast/ast.go index bd544d90..af2637e2 100644 --- a/pkg/ast/ast.go +++ b/pkg/ast/ast.go @@ -631,6 +631,15 @@ func (n *Node) Statements() []*Node { return nil } +func (n *Node) CanHaveStatements() bool { + switch n.Kind { + case KindSourceFile, KindBlock, KindModuleBlock, KindCaseClause, KindDefaultClause: + return true + default: + return false + } +} + func (n *Node) ModifierFlags() ModifierFlags { modifiers := n.Modifiers() if modifiers != nil { diff --git a/pkg/ast/nodeflags.go b/pkg/ast/nodeflags.go index 2feb4f2a..3261fc27 100644 --- a/pkg/ast/nodeflags.go +++ b/pkg/ast/nodeflags.go @@ -42,6 +42,7 @@ const ( NodeFlagsInWithStatement NodeFlags = 1 << 24 // If any ancestor of node was the `statement` of a WithStatement (not the `expression`) NodeFlagsJsonFile NodeFlags = 1 << 25 // If node was parsed in a Json NodeFlagsDeprecated NodeFlags = 1 << 26 // If has '@deprecated' JSDoc tag + NodeFlagsUnreachable NodeFlags = 1 << 27 // If node is unreachable according to the binder NodeFlagsBlockScoped = NodeFlagsLet | NodeFlagsConst | NodeFlagsUsing NodeFlagsConstant = NodeFlagsConst | NodeFlagsUsing diff --git a/pkg/ast/utilities.go b/pkg/ast/utilities.go index b842a057..92941d7d 100644 --- a/pkg/ast/utilities.go +++ b/pkg/ast/utilities.go @@ -2336,6 +2336,12 @@ func getModuleInstanceStateForAliasTarget(node *Node, ancestors []*Node, visited return ModuleInstanceStateInstantiated } +func IsInstantiatedModule(node *Node, preserveConstEnums bool) bool { + moduleState := GetModuleInstanceState(node) + return moduleState == ModuleInstanceStateInstantiated || + (preserveConstEnums && moduleState == ModuleInstanceStateConstEnumOnly) +} + func NodeHasName(statement *Node, id *Node) bool { name := statement.Name() if name != nil { @@ -3832,3 +3838,21 @@ func GetFirstConstructorWithBody(node *Node) *Node { } return nil } + +// Returns true for nodes that are considered executable for the purposes of unreachable code detection. +func IsPotentiallyExecutableNode(node *Node) bool { + if KindFirstStatement <= node.Kind && node.Kind <= KindLastStatement { + if IsVariableStatement(node) { + declarationList := node.AsVariableStatement().DeclarationList + if GetCombinedNodeFlags(declarationList)&NodeFlagsBlockScoped != 0 { + return true + } + declarations := declarationList.AsVariableDeclarationList().Declarations.Nodes + return core.Some(declarations, func(d *Node) bool { + return d.Initializer() != nil + }) + } + return true + } + return IsClassDeclaration(node) || IsEnumDeclaration(node) || IsModuleDeclaration(node) +} diff --git a/pkg/binder/binder.go b/pkg/binder/binder.go index 1f8a6a82..297b40a4 100644 --- a/pkg/binder/binder.go +++ b/pkg/binder/binder.go @@ -42,10 +42,9 @@ const ( ) type Binder struct { - file *ast.SourceFile - bindFunc func(*ast.Node) bool - unreachableFlow *ast.FlowNode - reportedUnreachableFlow *ast.FlowNode + file *ast.SourceFile + bindFunc func(*ast.Node) bool + unreachableFlow *ast.FlowNode container *ast.Node thisContainer *ast.Node @@ -122,7 +121,6 @@ func bindSourceFile(file *ast.SourceFile) { b.file = file b.inStrictMode = b.options().BindInStrictMode && !file.IsDeclarationFile || ast.IsExternalModule(file) b.unreachableFlow = b.newFlowNode(ast.FlowFlagsUnreachable) - b.reportedUnreachableFlow = b.newFlowNode(ast.FlowFlagsUnreachable) b.bind(file.AsNode()) file.SymbolCount = b.symbolCount file.ClassifiableNames = b.classifiableNames @@ -1535,18 +1533,25 @@ func (b *Binder) bindChildren(node *ast.Node) { // Most nodes aren't valid in an assignment pattern, so we clear the value here // and set it before we descend into nodes that could actually be part of an assignment pattern. b.inAssignmentPattern = false - if b.checkUnreachable(node) { + + if b.currentFlow == b.unreachableFlow { + if flowNodeData := node.FlowNodeData(); flowNodeData != nil { + flowNodeData.FlowNode = nil + } + if ast.IsPotentiallyExecutableNode(node) { + node.Flags |= ast.NodeFlagsUnreachable + } b.bindEachChild(node) b.inAssignmentPattern = saveInAssignmentPattern return } - kind := node.Kind - if kind >= ast.KindFirstStatement && kind <= ast.KindLastStatement && (b.options().AllowUnreachableCode != core.TSTrue || kind == ast.KindReturnStatement) { - hasFlowNodeData := node.FlowNodeData() - if hasFlowNodeData != nil { - hasFlowNodeData.FlowNode = b.currentFlow + + if ast.KindFirstStatement <= node.Kind && node.Kind <= ast.KindLastStatement { + if flowNodeData := node.FlowNodeData(); flowNodeData != nil { + flowNodeData.FlowNode = b.currentFlow } } + switch node.Kind { case ast.KindWhileStatement: b.bindWhileStatement(node) @@ -1657,94 +1662,6 @@ func (b *Binder) bindEachStatementFunctionsFirst(statements *ast.NodeList) { } } -func (b *Binder) checkUnreachable(node *ast.Node) bool { - if b.currentFlow.Flags&ast.FlowFlagsUnreachable == 0 { - return false - } - if b.currentFlow == b.unreachableFlow { - // report errors on all statements except empty ones - // report errors on class declarations - // report errors on enums with preserved emit - // report errors on instantiated modules - reportError := ast.IsStatementButNotDeclaration(node) && !ast.IsEmptyStatement(node) || - ast.IsClassDeclaration(node) || - isEnumDeclarationWithPreservedEmit(node, b.options()) || - ast.IsModuleDeclaration(node) && b.shouldReportErrorOnModuleDeclaration(node) - if reportError { - b.currentFlow = b.reportedUnreachableFlow - if b.options().AllowUnreachableCode != core.TSTrue { - // unreachable code is reported if - // - user has explicitly asked about it AND - // - statement is in not ambient context (statements in ambient context is already an error - // so we should not report extras) AND - // - node is not variable statement OR - // - node is block scoped variable statement OR - // - node is not block scoped variable statement and at least one variable declaration has initializer - // Rationale: we don't want to report errors on non-initialized var's since they are hoisted - // On the other side we do want to report errors on non-initialized 'lets' because of TDZ - isError := unreachableCodeIsError(b.options()) && node.Flags&ast.NodeFlagsAmbient == 0 && (!ast.IsVariableStatement(node) || - ast.GetCombinedNodeFlags(node.AsVariableStatement().DeclarationList)&ast.NodeFlagsBlockScoped != 0 || - core.Some(node.AsVariableStatement().DeclarationList.AsVariableDeclarationList().Declarations.Nodes, func(d *ast.Node) bool { - return d.Initializer() != nil - })) - b.errorOnEachUnreachableRange(node, isError) - } - } - } - return true -} - -func (b *Binder) shouldReportErrorOnModuleDeclaration(node *ast.Node) bool { - instanceState := ast.GetModuleInstanceState(node) - return instanceState == ast.ModuleInstanceStateInstantiated || (instanceState == ast.ModuleInstanceStateConstEnumOnly && b.options().ShouldPreserveConstEnums) -} - -func (b *Binder) errorOnEachUnreachableRange(node *ast.Node, isError bool) { - if b.isExecutableStatement(node) && ast.IsBlock(node.Parent) { - statements := node.Parent.Statements() - index := slices.Index(statements, node) - var first, last *ast.Node - for _, s := range statements[index:] { - if b.isExecutableStatement(s) { - if first == nil { - first = s - } - last = s - } else if first != nil { - b.errorOrSuggestionOnRange(isError, first, last, diagnostics.Unreachable_code_detected) - first = nil - } - } - if first != nil { - b.errorOrSuggestionOnRange(isError, first, last, diagnostics.Unreachable_code_detected) - } - } else { - b.errorOrSuggestionOnNode(isError, node, diagnostics.Unreachable_code_detected) - } -} - -// As opposed to a pure declaration like an `interface` -func (b *Binder) isExecutableStatement(s *ast.Node) bool { - // Don't remove statements that can validly be used before they appear. - return !ast.IsFunctionDeclaration(s) && !b.isPurelyTypeDeclaration(s) && !(ast.IsVariableStatement(s) && ast.GetCombinedNodeFlags(s)&ast.NodeFlagsBlockScoped == 0 && - core.Some(s.AsVariableStatement().DeclarationList.AsVariableDeclarationList().Declarations.Nodes, func(d *ast.Node) bool { - return d.Initializer() == nil - })) -} - -func (b *Binder) isPurelyTypeDeclaration(s *ast.Node) bool { - switch s.Kind { - case ast.KindInterfaceDeclaration, ast.KindTypeAliasDeclaration, ast.KindJSTypeAliasDeclaration: - return true - case ast.KindModuleDeclaration: - return ast.GetModuleInstanceState(s) != ast.ModuleInstanceStateInstantiated - case ast.KindEnumDeclaration: - return !isEnumDeclarationWithPreservedEmit(s, b.options()) - default: - return false - } -} - func (b *Binder) setContinueTarget(node *ast.Node, target *ast.FlowLabel) *ast.FlowLabel { label := b.activeLabelList for label != nil && node.Parent.Kind == ast.KindLabeledStatement { @@ -2131,8 +2048,9 @@ func (b *Binder) bindLabeledStatement(node *ast.Node) { } b.bind(stmt.Label) b.bind(stmt.Statement) - if !b.activeLabelList.referenced && b.options().AllowUnusedLabels != core.TSTrue { - b.errorOrSuggestionOnNode(unusedLabelIsError(b.options()), stmt.Label, diagnostics.Unused_label) + if !b.activeLabelList.referenced { + // Mark the label as unused; the checker will decide whether to report it + stmt.Label.Flags |= ast.NodeFlagsUnreachable } b.activeLabelList = b.activeLabelList.next b.addAntecedent(postStatementLabel, b.currentFlow) @@ -2454,10 +2372,6 @@ func (b *Binder) bindInitializer(node *ast.Node) { b.currentFlow = b.finishFlowLabel(exitFlow) } -func isEnumDeclarationWithPreservedEmit(node *ast.Node, options core.SourceFileAffectingCompilerOptions) bool { - return node.Kind == ast.KindEnumDeclaration && (!ast.IsEnumConst(node) || options.ShouldPreserveConstEnums) -} - func setFlowNode(node *ast.Node, flowNode *ast.FlowNode) { data := node.FlowNodeData() if data != nil { @@ -2749,14 +2663,6 @@ func isFunctionSymbol(symbol *ast.Symbol) bool { return false } -func unreachableCodeIsError(options core.SourceFileAffectingCompilerOptions) bool { - return options.AllowUnreachableCode == core.TSFalse -} - -func unusedLabelIsError(options core.SourceFileAffectingCompilerOptions) bool { - return options.AllowUnusedLabels == core.TSFalse -} - func isStatementCondition(node *ast.Node) bool { switch node.Parent.Kind { case ast.KindIfStatement, ast.KindWhileStatement, ast.KindDoStatement: diff --git a/pkg/checker/checker.go b/pkg/checker/checker.go index f164c5ed..f12ff3ef 100644 --- a/pkg/checker/checker.go +++ b/pkg/checker/checker.go @@ -857,9 +857,13 @@ type Checker struct { activeTypeMappersCaches []map[string]*Type ambientModulesOnce sync.Once ambientModules []*ast.Symbol + withinUnreachableCode bool + reportedUnreachableNodes collections.Set[*ast.Node] + + mu sync.Mutex } -func NewChecker(program Program) *Checker { +func NewChecker(program Program) (*Checker, *sync.Mutex) { program.BindSourceFiles() c := &Checker{} @@ -1071,7 +1075,7 @@ func NewChecker(program Program) *Checker { c.initializeClosures() c.initializeIterationResolvers() c.initializeChecker() - return c + return c, &c.mu } func createFileIndexMap(files []*ast.SourceFile) map[*ast.SourceFile]int { @@ -2142,6 +2146,7 @@ func (c *Checker) checkSourceFile(ctx context.Context, sourceFile *ast.SourceFil c.wasCanceled = true } c.ctx = nil + c.reportedUnreachableNodes.Clear() links.typeChecked = true } } @@ -2158,10 +2163,12 @@ func (c *Checker) checkSourceElements(nodes []*ast.Node) { func (c *Checker) checkSourceElement(node *ast.Node) bool { if node != nil { saveCurrentNode := c.currentNode + saveWithinUnreachableCode := c.withinUnreachableCode c.currentNode = node c.instantiationCount = 0 c.checkSourceElementWorker(node) c.currentNode = saveCurrentNode + c.withinUnreachableCode = saveWithinUnreachableCode } return false } @@ -2177,13 +2184,13 @@ func (c *Checker) checkSourceElementWorker(node *ast.Node) { } } } - kind := node.Kind - if kind >= ast.KindFirstStatement && kind <= ast.KindLastStatement { - flowNode := node.FlowNodeData().FlowNode - if flowNode != nil && !c.isReachableFlowNode(flowNode) { - c.errorOrSuggestion(c.compilerOptions.AllowUnreachableCode == core.TSFalse, node, diagnostics.Unreachable_code_detected) + + if !c.withinUnreachableCode && c.compilerOptions.AllowUnreachableCode != core.TSTrue { + if c.checkSourceElementUnreachable(node) { + c.withinUnreachableCode = true } } + switch node.Kind { case ast.KindTypeParameter: c.checkTypeParameter(node) @@ -2306,6 +2313,87 @@ func (c *Checker) checkSourceElementWorker(node *ast.Node) { } } +func (c *Checker) checkSourceElementUnreachable(node *ast.Node) bool { + if !ast.IsPotentiallyExecutableNode(node) { + return false + } + + if c.reportedUnreachableNodes.Has(node) { + return true + } + + if !c.isSourceElementUnreachable(node) { + return false + } + + c.reportedUnreachableNodes.Add(node) + + sourceFile := ast.GetSourceFileOfNode(node) + + start := node.Pos() + end := node.End() + + parent := node.Parent + if parent.CanHaveStatements() { + statements := parent.Statements() + if offset := slices.Index(statements, node); offset >= 0 { + // Scan backwards to find the first unreachable unreported node; + // this may happen when producing region diagnostics where not all nodes + // will have been visited. + // TODO: enable this code once we support region diagnostics again. + first := offset + // for i := offset - 1; i >= 0; i-- { + // prevNode := statements[i] + // if !ast.IsPotentiallyExecutableNode(prevNode) || c.reportedUnreachableNodes.Has(prevNode) || !c.isSourceElementUnreachable(prevNode) { + // break + // } + // firstUnreachableIndex = i + // c.reportedUnreachableNodes.Add(prevNode) + // } + + last := offset + for i := offset + 1; i < len(statements); i++ { + nextNode := statements[i] + if !ast.IsPotentiallyExecutableNode(nextNode) || !c.isSourceElementUnreachable(nextNode) { + break + } + last = i + c.reportedUnreachableNodes.Add(nextNode) + } + + start = statements[first].Pos() + end = statements[last].End() + } + } + + start = scanner.SkipTrivia(sourceFile.Text(), start) + + diagnostic := ast.NewDiagnostic(sourceFile, core.NewTextRange(start, end), diagnostics.Unreachable_code_detected) + c.addErrorOrSuggestion(c.compilerOptions.AllowUnreachableCode == core.TSFalse, diagnostic) + + return true +} + +func (c *Checker) isSourceElementUnreachable(node *ast.Node) bool { + // Precondition: ast.IsPotentiallyExecutableNode is true + if node.Flags&ast.NodeFlagsUnreachable != 0 { + // The binder has determined that this code is unreachable. + // Ignore const enums unless preserveConstEnums is set. + switch node.Kind { + case ast.KindEnumDeclaration: + return !ast.IsEnumConst(node) || c.compilerOptions.ShouldPreserveConstEnums() + case ast.KindModuleDeclaration: + return ast.IsInstantiatedModule(node, c.compilerOptions.ShouldPreserveConstEnums()) + default: + return true + } + } else if flowNode := node.FlowNodeData().FlowNode; flowNode != nil { + // For code the binder doesn't know is unreachable, use control flow / types. + return !c.isReachableFlowNode(flowNode) + } + return false +} + // Function and class expression bodies are checked after all statements in the enclosing body. This is // to ensure constructs like the following are permitted: // @@ -3966,7 +4054,7 @@ func (c *Checker) checkWithStatement(node *ast.Node) { c.checkExpression(node.Expression()) sourceFile := ast.GetSourceFileOfNode(node) if !c.hasParseDiagnostics(sourceFile) { - start := scanner.GetRangeOfTokenAtPosition(sourceFile, node.Pos()).Pos() + start := scanner.SkipTrivia(sourceFile.Text(), node.Pos()) end := node.Statement().Pos() c.grammarErrorAtPos(sourceFile.AsNode(), start, end-start, diagnostics.The_with_statement_is_not_supported_All_symbols_in_a_with_block_will_have_type_any) } @@ -4020,6 +4108,9 @@ func (c *Checker) checkLabeledStatement(node *ast.Node) { } } } + if labelNode.Flags&ast.NodeFlagsUnreachable != 0 && c.compilerOptions.AllowUnusedLabels != core.TSTrue { + c.errorOrSuggestion(c.compilerOptions.AllowUnusedLabels == core.TSFalse, labelNode, diagnostics.Unused_label) + } c.checkSourceElement(labeledStatement.Statement) } @@ -12572,7 +12663,7 @@ func (c *Checker) isIndirectCall(node *ast.Node) bool { right := node.AsBinaryExpression().Right return ast.IsParenthesizedExpression(node.Parent) && ast.IsNumericLiteral(left) && left.Text() == "0" && (ast.IsCallExpression(node.Parent.Parent) && node.Parent.Parent.Expression() == node.Parent || - ast.IsTaggedTemplateExpression(node.Parent.Parent) && (ast.IsAccessExpression(right) || ast.IsIdentifier(right) && right.Text() == "eval")) + ast.IsTaggedTemplateExpression(node.Parent.Parent)) && (ast.IsAccessExpression(right) || ast.IsIdentifier(right) && right.Text() == "eval") } func (c *Checker) checkInstanceOfExpression(left *ast.Expression, right *ast.Expression, leftType *Type, rightType *Type, checkMode CheckMode) *Type { @@ -30658,6 +30749,9 @@ func (c *Checker) getSymbolOfNameOrPropertyAccessExpression(name *ast.Node) *ast } meaning := core.IfElse(isJSDoc, ast.SymbolFlagsValue|ast.SymbolFlagsType|ast.SymbolFlagsNamespace, ast.SymbolFlagsValue) result := c.resolveEntityName(name, meaning, true /*ignoreErrors*/, true /*dontResolveAlias*/, nil /*location*/) + if result != nil && result.Flags&ast.SymbolFlagsModuleExports != 0 { + result = result.ValueDeclaration.Symbol() // Symbol of the module source file + } if result == nil && isJSDoc { if container := ast.FindAncestor(name, ast.IsClassOrInterfaceLike); container != nil { symbol := c.getSymbolOfDeclaration(container) diff --git a/pkg/checker/emitresolver.go b/pkg/checker/emitresolver.go index 73edb0b1..07a06739 100644 --- a/pkg/checker/emitresolver.go +++ b/pkg/checker/emitresolver.go @@ -34,7 +34,7 @@ type DeclarationFileLinks struct { type EmitResolver struct { checker *Checker - checkerMu sync.Mutex + checkerMu *sync.Mutex isValueAliasDeclaration func(node *ast.Node) bool aliasMarkingVisitor func(node *ast.Node) bool referenceResolver binder.ReferenceResolver @@ -47,6 +47,7 @@ func newEmitResolver(checker *Checker) *EmitResolver { e := &EmitResolver{checker: checker} e.isValueAliasDeclaration = e.isValueAliasDeclarationWorker e.aliasMarkingVisitor = e.aliasMarkingVisitorWorker + e.checkerMu = &checker.mu return e } diff --git a/pkg/checker/exports.go b/pkg/checker/exports.go index eb9b8774..bc1a740e 100644 --- a/pkg/checker/exports.go +++ b/pkg/checker/exports.go @@ -182,3 +182,7 @@ func (c *Checker) ResolveName(name string, location *ast.Node, meaning ast.Symbo func (c *Checker) GetSymbolFlags(symbol *ast.Symbol) ast.SymbolFlags { return c.getSymbolFlags(symbol) } + +func (c *Checker) GetBaseTypes(t *Type) []*Type { + return c.getBaseTypes(t) +} diff --git a/pkg/compiler/checkerpool.go b/pkg/compiler/checkerpool.go index e666ac83..39223aa3 100644 --- a/pkg/compiler/checkerpool.go +++ b/pkg/compiler/checkerpool.go @@ -26,7 +26,7 @@ type checkerPool struct { createCheckersOnce sync.Once checkers []*checker.Checker - locks []sync.Mutex + locks []*sync.Mutex fileAssociations map[*ast.SourceFile]*checker.Checker } @@ -37,7 +37,7 @@ func newCheckerPool(checkerCount int, program *Program) *checkerPool { program: program, checkerCount: checkerCount, checkers: make([]*checker.Checker, checkerCount), - locks: make([]sync.Mutex, checkerCount), + locks: make([]*sync.Mutex, checkerCount), } return pool @@ -74,7 +74,7 @@ func (p *checkerPool) createCheckers() { wg := core.NewWorkGroup(p.program.SingleThreaded()) for i := range p.checkerCount { wg.Queue(func() { - p.checkers[i] = checker.NewChecker(p.program) + p.checkers[i], p.locks[i] = checker.NewChecker(p.program) }) } diff --git a/pkg/core/compileroptions.go b/pkg/core/compileroptions.go index b97a21c9..ae9a55af 100644 --- a/pkg/core/compileroptions.go +++ b/pkg/core/compileroptions.go @@ -365,19 +365,13 @@ func (options *CompilerOptions) GetPathsBasePath(currentDirectory string) string // SourceFileAffectingCompilerOptions are the precomputed CompilerOptions values which // affect the parse and bind of a source file. type SourceFileAffectingCompilerOptions struct { - AllowUnreachableCode Tristate - AllowUnusedLabels Tristate - BindInStrictMode bool - ShouldPreserveConstEnums bool + BindInStrictMode bool } func (options *CompilerOptions) SourceFileAffecting() SourceFileAffectingCompilerOptions { options.sourceFileAffectingCompilerOptionsOnce.Do(func() { options.sourceFileAffectingCompilerOptions = SourceFileAffectingCompilerOptions{ - AllowUnreachableCode: options.AllowUnreachableCode, - AllowUnusedLabels: options.AllowUnusedLabels, - BindInStrictMode: options.AlwaysStrict.IsTrue() || options.Strict.IsTrue(), - ShouldPreserveConstEnums: options.ShouldPreserveConstEnums(), + BindInStrictMode: options.AlwaysStrict.IsTrue() || options.Strict.IsTrue(), } }) return options.sourceFileAffectingCompilerOptions diff --git a/pkg/diagnosticwriter/diagnosticwriter.go b/pkg/diagnosticwriter/diagnosticwriter.go index ec09bc9d..2f2dd92b 100644 --- a/pkg/diagnosticwriter/diagnosticwriter.go +++ b/pkg/diagnosticwriter/diagnosticwriter.go @@ -16,6 +16,87 @@ import ( "github.com/buke/typescript-go-internal/pkg/tspath" ) +type FileLike interface { + FileName() string + Text() string + ECMALineMap() []core.TextPos +} + +// Diagnostic interface abstracts over ast.Diagnostic and LSP diagnostics +type Diagnostic interface { + File() FileLike + Pos() int + End() int + Len() int + Code() int32 + Category() diagnostics.Category + Message() string + MessageChain() []Diagnostic + RelatedInformation() []Diagnostic +} + +// ASTDiagnostic wraps ast.Diagnostic to implement the Diagnostic interface +type ASTDiagnostic struct { + *ast.Diagnostic +} + +func (d *ASTDiagnostic) RelatedInformation() []Diagnostic { + related := d.Diagnostic.RelatedInformation() + result := make([]Diagnostic, len(related)) + for i, r := range related { + result[i] = &ASTDiagnostic{r} + } + return result +} + +func (d *ASTDiagnostic) File() FileLike { + if file := d.Diagnostic.File(); file != nil { + return file + } + return nil +} + +func (d *ASTDiagnostic) MessageChain() []Diagnostic { + chain := d.Diagnostic.MessageChain() + result := make([]Diagnostic, len(chain)) + for i, c := range chain { + result[i] = &ASTDiagnostic{c} + } + return result +} + +func WrapASTDiagnostic(d *ast.Diagnostic) *ASTDiagnostic { + return &ASTDiagnostic{d} +} + +func WrapASTDiagnostics(diags []*ast.Diagnostic) []*ASTDiagnostic { + result := make([]*ASTDiagnostic, len(diags)) + for i, d := range diags { + result[i] = WrapASTDiagnostic(d) + } + return result +} + +func FromASTDiagnostics(diags []*ast.Diagnostic) []Diagnostic { + result := make([]Diagnostic, len(diags)) + for i, d := range diags { + result[i] = WrapASTDiagnostic(d) + } + return result +} + +func ToDiagnostics[T Diagnostic](diags []T) []Diagnostic { + result := make([]Diagnostic, len(diags)) + for i, d := range diags { + result[i] = d + } + return result +} + +func CompareASTDiagnostics(a, b *ASTDiagnostic) int { + return ast.CompareDiagnostics(a.Diagnostic, b.Diagnostic) +} + type FormattingOptions struct { tspath.ComparePathsOptions NewLine string @@ -36,7 +117,7 @@ const ( ellipsis = "..." ) -func FormatDiagnosticsWithColorAndContext(output io.Writer, diags []*ast.Diagnostic, formatOpts *FormattingOptions) { +func FormatDiagnosticsWithColorAndContext(output io.Writer, diags []Diagnostic, formatOpts *FormattingOptions) { if len(diags) == 0 { return } @@ -48,10 +129,10 @@ func FormatDiagnosticsWithColorAndContext(output io.Writer, diags []*ast.Diagnos } } -func FormatDiagnosticWithColorAndContext(output io.Writer, diagnostic *ast.Diagnostic, formatOpts *FormattingOptions) { +func FormatDiagnosticWithColorAndContext(output io.Writer, diagnostic Diagnostic, formatOpts *FormattingOptions) { if diagnostic.File() != nil { file := diagnostic.File() - pos := diagnostic.Loc().Pos() + pos := diagnostic.Pos() WriteLocation(output, file, pos, formatOpts, writeWithStyleAndReset) fmt.Fprint(output, " - ") } @@ -83,7 +164,7 @@ func FormatDiagnosticWithColorAndContext(output io.Writer, diagnostic *ast.Diagn } } -func writeCodeSnippet(writer io.Writer, sourceFile *ast.SourceFile, start int, length int, squiggleColor string, indent string, formatOpts *FormattingOptions) { +func writeCodeSnippet(writer io.Writer, sourceFile FileLike, start int, length int, squiggleColor string, indent string, formatOpts *FormattingOptions) { firstLine, firstLineChar := scanner.GetECMALineAndCharacterOfPosition(sourceFile, start) lastLine, lastLineChar := scanner.GetECMALineAndCharacterOfPosition(sourceFile, start+length) if length == 0 { @@ -118,7 +199,7 @@ func writeCodeSnippet(writer io.Writer, sourceFile *ast.SourceFile, start int, l if i < lastLineOfFile { lineEnd = scanner.GetECMAPositionOfLineAndCharacter(sourceFile, i+1, 0) } else { - lineEnd = sourceFile.Loc.End() + lineEnd = len(sourceFile.Text()) } lineContent := strings.TrimRightFunc(sourceFile.Text()[lineStart:lineEnd], unicode.IsSpace) // trim from end @@ -167,13 +248,17 @@ func writeCodeSnippet(writer io.Writer, sourceFile *ast.SourceFile, start int, l } } -func FlattenDiagnosticMessage(d *ast.Diagnostic, newLine string) string { +func FlattenDiagnosticMessage(d Diagnostic, newLine string) string { var output strings.Builder WriteFlattenedDiagnosticMessage(&output, d, newLine) return output.String() } -func WriteFlattenedDiagnosticMessage(writer io.Writer, diagnostic *ast.Diagnostic, newline string) { +func WriteFlattenedASTDiagnosticMessage(writer io.Writer, diagnostic *ast.Diagnostic, newline string) { + WriteFlattenedDiagnosticMessage(writer, WrapASTDiagnostic(diagnostic), newline) +} + +func WriteFlattenedDiagnosticMessage(writer io.Writer, diagnostic Diagnostic, newline string) { fmt.Fprint(writer, diagnostic.Message()) for _, chain := range diagnostic.MessageChain() { @@ -181,7 +266,7 @@ func WriteFlattenedDiagnosticMessage(writer io.Writer, diagnostic *ast.Diagnosti } } -func flattenDiagnosticMessageChain(writer io.Writer, chain *ast.Diagnostic, newLine string, level int) { +func flattenDiagnosticMessageChain(writer io.Writer, chain Diagnostic, newLine string, level int) { fmt.Fprint(writer, newLine) for range level { fmt.Fprint(writer, " ") @@ -215,7 +300,7 @@ func writeWithStyleAndReset(output io.Writer, text string, formatStyle string) { fmt.Fprint(output, resetEscapeSequence) } -func WriteLocation(output io.Writer, file *ast.SourceFile, pos int, formatOpts *FormattingOptions, writeWithStyleAndReset FormattedWriter) { +func WriteLocation(output io.Writer, file FileLike, pos int, formatOpts *FormattingOptions, writeWithStyleAndReset FormattedWriter) { firstLine, firstChar := scanner.GetECMALineAndCharacterOfPosition(file, pos) var relativeFileName string if formatOpts != nil { @@ -235,12 +320,12 @@ func WriteLocation(output io.Writer, file *ast.SourceFile, pos int, formatOpts * type ErrorSummary struct { TotalErrorCount int - GlobalErrors []*ast.Diagnostic - ErrorsByFiles map[*ast.SourceFile][]*ast.Diagnostic - SortedFileList []*ast.SourceFile + GlobalErrors []Diagnostic + ErrorsByFile map[FileLike][]Diagnostic + SortedFiles []FileLike } -func WriteErrorSummaryText(output io.Writer, allDiagnostics []*ast.Diagnostic, formatOpts *FormattingOptions) { +func WriteErrorSummaryText(output io.Writer, allDiagnostics []Diagnostic, formatOpts *FormattingOptions) { // Roughly corresponds to 'getErrorSummaryText' from watch.ts errorSummary := getErrorSummary(allDiagnostics) @@ -249,12 +334,12 @@ func WriteErrorSummaryText(output io.Writer, allDiagnostics []*ast.Diagnostic, f return } - firstFile := &ast.SourceFile{} - if len(errorSummary.SortedFileList) > 0 { - firstFile = errorSummary.SortedFileList[0] + var firstFile FileLike + if len(errorSummary.SortedFiles) > 0 { + firstFile = errorSummary.SortedFiles[0] } - firstFileName := prettyPathForFileError(firstFile, errorSummary.ErrorsByFiles[firstFile], formatOpts) - numErroringFiles := len(errorSummary.ErrorsByFiles) + firstFileName := prettyPathForFileError(firstFile, errorSummary.ErrorsByFile[firstFile], formatOpts) + numErroringFiles := len(errorSummary.ErrorsByFile) var message string if totalErrorCount == 1 { @@ -287,10 +372,10 @@ func WriteErrorSummaryText(output io.Writer, allDiagnostics []*ast.Diagnostic, f } } -func getErrorSummary(diags []*ast.Diagnostic) *ErrorSummary { +func getErrorSummary(diags []Diagnostic) *ErrorSummary { var totalErrorCount int - var globalErrors []*ast.Diagnostic - var errorsByFiles map[*ast.SourceFile][]*ast.Diagnostic + var globalErrors []Diagnostic + var errorsByFile map[FileLike][]Diagnostic for _, diagnostic := range diags { if diagnostic.Category() != diagnostics.CategoryError { @@ -301,32 +386,32 @@ func getErrorSummary(diags []*ast.Diagnostic) *ErrorSummary { if diagnostic.File() == nil { globalErrors = append(globalErrors, diagnostic) } else { - if errorsByFiles == nil { - errorsByFiles = make(map[*ast.SourceFile][]*ast.Diagnostic) + if errorsByFile == nil { + errorsByFile = make(map[FileLike][]Diagnostic) } - errorsByFiles[diagnostic.File()] = append(errorsByFiles[diagnostic.File()], diagnostic) + errorsByFile[diagnostic.File()] = append(errorsByFile[diagnostic.File()], diagnostic) } } // !!! // Need an ordered map here, but sorting for consistency. - sortedFileList := slices.SortedFunc(maps.Keys(errorsByFiles), func(a, b *ast.SourceFile) int { + sortedFiles := slices.SortedFunc(maps.Keys(errorsByFile), func(a, b FileLike) int { return strings.Compare(a.FileName(), b.FileName()) }) return &ErrorSummary{ TotalErrorCount: totalErrorCount, GlobalErrors: globalErrors, - ErrorsByFiles: errorsByFiles, - SortedFileList: sortedFileList, + ErrorsByFile: errorsByFile, + SortedFiles: sortedFiles, } } func writeTabularErrorsDisplay(output io.Writer, errorSummary *ErrorSummary, formatOpts *FormattingOptions) { - sortedFiles := errorSummary.SortedFileList + sortedFiles := errorSummary.SortedFiles maxErrors := 0 - for _, errorsForFile := range errorSummary.ErrorsByFiles { + for _, errorsForFile := range errorSummary.ErrorsByFile { maxErrors = max(maxErrors, len(errorsForFile)) } @@ -344,7 +429,7 @@ func writeTabularErrorsDisplay(output io.Writer, errorSummary *ErrorSummary, for fmt.Fprint(output, formatOpts.NewLine) for _, file := range sortedFiles { - fileErrors := errorSummary.ErrorsByFiles[file] + fileErrors := errorSummary.ErrorsByFile[file] errorCount := len(fileErrors) fmt.Fprintf(output, "%*d ", leftPaddingGoal, errorCount) @@ -353,11 +438,11 @@ func writeTabularErrorsDisplay(output io.Writer, errorSummary *ErrorSummary, for } } -func prettyPathForFileError(file *ast.SourceFile, fileErrors []*ast.Diagnostic, formatOpts *FormattingOptions) string { +func prettyPathForFileError(file FileLike, fileErrors []Diagnostic, formatOpts *FormattingOptions) string { if file == nil || len(fileErrors) == 0 { return "" } - line := scanner.GetECMALineOfPosition(file, fileErrors[0].Loc().Pos()) + line := scanner.GetECMALineOfPosition(file, fileErrors[0].Pos()) fileName := file.FileName() if tspath.PathIsAbsolute(fileName) && tspath.PathIsAbsolute(formatOpts.CurrentDirectory) { fileName = tspath.ConvertToRelativePath(file.FileName(), formatOpts.ComparePathsOptions) @@ -370,15 +455,15 @@ func prettyPathForFileError(file *ast.SourceFile, fileErrors []*ast.Diagnostic, ) } -func WriteFormatDiagnostics(output io.Writer, diagnostics []*ast.Diagnostic, formatOpts *FormattingOptions) { +func WriteFormatDiagnostics(output io.Writer, diagnostics []Diagnostic, formatOpts *FormattingOptions) { for _, diagnostic := range diagnostics { WriteFormatDiagnostic(output, diagnostic, formatOpts) } } -func WriteFormatDiagnostic(output io.Writer, diagnostic *ast.Diagnostic, formatOpts *FormattingOptions) { +func WriteFormatDiagnostic(output io.Writer, diagnostic Diagnostic, formatOpts *FormattingOptions) { if diagnostic.File() != nil { - line, character := scanner.GetECMALineAndCharacterOfPosition(diagnostic.File(), diagnostic.Loc().Pos()) + line, character := scanner.GetECMALineAndCharacterOfPosition(diagnostic.File(), diagnostic.Pos()) fileName := diagnostic.File().FileName() relativeFileName := tspath.ConvertToRelativePath(fileName, formatOpts.ComparePathsOptions) fmt.Fprintf(output, "%s(%d,%d): ", relativeFileName, line+1, character+1) @@ -389,14 +474,14 @@ func WriteFormatDiagnostic(output io.Writer, diagnostic *ast.Diagnostic, formatO fmt.Fprint(output, formatOpts.NewLine) } -func FormatDiagnosticsStatusWithColorAndTime(output io.Writer, time string, diag *ast.Diagnostic, formatOpts *FormattingOptions) { +func FormatDiagnosticsStatusWithColorAndTime(output io.Writer, time string, diag Diagnostic, formatOpts *FormattingOptions) { fmt.Fprint(output, "[") writeWithStyleAndReset(output, time, foregroundColorEscapeGrey) fmt.Fprint(output, "] ") WriteFlattenedDiagnosticMessage(output, diag, formatOpts.NewLine) } -func FormatDiagnosticsStatusAndTime(output io.Writer, time string, diag *ast.Diagnostic, formatOpts *FormattingOptions) { +func FormatDiagnosticsStatusAndTime(output io.Writer, time string, diag Diagnostic, formatOpts *FormattingOptions) { fmt.Fprint(output, time, " - ") WriteFlattenedDiagnosticMessage(output, diag, formatOpts.NewLine) } @@ -406,7 +491,7 @@ var ScreenStartingCodes = []int32{ diagnostics.File_change_detected_Starting_incremental_compilation.Code(), } -func TryClearScreen(output io.Writer, diag *ast.Diagnostic, options *core.CompilerOptions) bool { +func TryClearScreen(output io.Writer, diag Diagnostic, options *core.CompilerOptions) bool { if !options.PreserveWatchOutput.IsTrue() && !options.ExtendedDiagnostics.IsTrue() && !options.Diagnostics.IsTrue() && diff --git a/pkg/execute/tsc/diagnostics.go b/pkg/execute/tsc/diagnostics.go index 86e155fe..d829ac0d 100644 --- a/pkg/execute/tsc/diagnostics.go +++ b/pkg/execute/tsc/diagnostics.go @@ -32,12 +32,12 @@ func CreateDiagnosticReporter(sys System, w io.Writer, options *core.CompilerOpt formatOpts := getFormatOptsOfSys(sys) if shouldBePretty(sys, options) { return func(diagnostic *ast.Diagnostic) { - diagnosticwriter.FormatDiagnosticWithColorAndContext(w, diagnostic, formatOpts) + diagnosticwriter.FormatDiagnosticWithColorAndContext(w, diagnosticwriter.WrapASTDiagnostic(diagnostic), formatOpts) fmt.Fprint(w, formatOpts.NewLine) } } return func(diagnostic *ast.Diagnostic) { - diagnosticwriter.WriteFormatDiagnostic(w, diagnostic, formatOpts) + diagnosticwriter.WriteFormatDiagnostic(w, diagnosticwriter.WrapASTDiagnostic(diagnostic), formatOpts) } } @@ -127,7 +127,7 @@ func CreateReportErrorSummary(sys System, options *core.CompilerOptions) Diagnos if shouldBePretty(sys, options) { formatOpts := getFormatOptsOfSys(sys) return func(diagnostics []*ast.Diagnostic) { - diagnosticwriter.WriteErrorSummaryText(sys.Writer(), diagnostics, formatOpts) + diagnosticwriter.WriteErrorSummaryText(sys.Writer(), diagnosticwriter.FromASTDiagnostics(diagnostics), formatOpts) } } return QuietDiagnosticsReporter @@ -141,11 +141,12 @@ func CreateBuilderStatusReporter(sys System, w io.Writer, options *core.Compiler formatOpts := getFormatOptsOfSys(sys) writeStatus := core.IfElse(shouldBePretty(sys, options), diagnosticwriter.FormatDiagnosticsStatusWithColorAndTime, diagnosticwriter.FormatDiagnosticsStatusAndTime) return func(diagnostic *ast.Diagnostic) { + writerDiagnostic := diagnosticwriter.WrapASTDiagnostic(diagnostic) if testing != nil { testing.OnBuildStatusReportStart(w) defer testing.OnBuildStatusReportEnd(w) } - writeStatus(w, sys.Now().Format("03:04:05 PM"), diagnostic, formatOpts) + writeStatus(w, sys.Now().Format("03:04:05 PM"), writerDiagnostic, formatOpts) fmt.Fprint(w, formatOpts.NewLine, formatOpts.NewLine) } } @@ -154,13 +155,14 @@ func CreateWatchStatusReporter(sys System, options *core.CompilerOptions, testin formatOpts := getFormatOptsOfSys(sys) writeStatus := core.IfElse(shouldBePretty(sys, options), diagnosticwriter.FormatDiagnosticsStatusWithColorAndTime, diagnosticwriter.FormatDiagnosticsStatusAndTime) return func(diagnostic *ast.Diagnostic) { + writerDiagnostic := diagnosticwriter.WrapASTDiagnostic(diagnostic) writer := sys.Writer() if testing != nil { testing.OnWatchStatusReportStart() defer testing.OnWatchStatusReportEnd() } - diagnosticwriter.TryClearScreen(writer, diagnostic, options) - writeStatus(writer, sys.Now().Format("03:04:05 PM"), diagnostic, formatOpts) + diagnosticwriter.TryClearScreen(writer, writerDiagnostic, options) + writeStatus(writer, sys.Now().Format("03:04:05 PM"), writerDiagnostic, formatOpts) fmt.Fprint(writer, formatOpts.NewLine, formatOpts.NewLine) } } diff --git a/pkg/fourslash/_scripts/convertFourslash.mts b/pkg/fourslash/_scripts/convertFourslash.mts index 53c52829..169151c1 100644 --- a/pkg/fourslash/_scripts/convertFourslash.mts +++ b/pkg/fourslash/_scripts/convertFourslash.mts @@ -213,6 +213,13 @@ function parseFourslashStatement(statement: ts.Statement): Cmd[] | undefined { case "renameInfoSucceeded": case "renameInfoFailed": return parseRenameInfo(func.text, callExpression.arguments); + case "getSemanticDiagnostics": + case "getSuggestionDiagnostics": + case "getSyntacticDiagnostics": + return parseVerifyDiagnostics(func.text, callExpression.arguments); + case "baselineSyntacticDiagnostics": + case "baselineSyntacticAndSemanticDiagnostics": + return [{ kind: "verifyBaselineDiagnostics" }]; } } // `goTo....` @@ -323,10 +330,11 @@ function parseGoToArgs(args: readonly ts.Expression[], funcName: string): GoToCm } let arg0; if (arg0 = getStringLiteralLike(args[0])) { + const text = arg0.text.replace("tests/cases/fourslash/server/", "").replace("tests/cases/fourslash/", ""); return [{ kind: "goTo", funcName: "file", - args: [getGoStringLiteral(arg0.text)], + args: [getGoStringLiteral(text)], }]; } else if (arg0 = getNumericLiteral(args[0])) { @@ -1260,6 +1268,105 @@ function parseBaselineInlayHints(args: readonly ts.Expression[]): [VerifyBaselin }]; } +function parseVerifyDiagnostics(funcName: string, args: readonly ts.Expression[]): [VerifyDiagnosticsCmd] | undefined { + if (!args[0] || !ts.isArrayLiteralExpression(args[0])) { + console.error(`Expected an array literal argument in verify.${funcName}`); + return undefined; + } + const goArgs: string[] = []; + for (const expr of args[0].elements) { + const diag = parseExpectedDiagnostic(expr); + if (diag === undefined) { + return undefined; + } + goArgs.push(diag); + } + return [{ + kind: "verifyDiagnostics", + arg: goArgs.length > 0 ? `[]*lsproto.Diagnostic{\n${goArgs.join(",\n")},\n}` : "nil", + isSuggestion: funcName === "getSuggestionDiagnostics", + }]; +} + +function parseExpectedDiagnostic(expr: ts.Expression): string | undefined { + if (!ts.isObjectLiteralExpression(expr)) { + console.error(`Expected object literal expression for expected diagnostic, got ${expr.getText()}`); + return undefined; + } + + const diagnosticProps: string[] = []; + + for (const prop of expr.properties) { + if (!ts.isPropertyAssignment(prop) || !ts.isIdentifier(prop.name)) { + console.error(`Expected property assignment with identifier name for expected diagnostic, got ${prop.getText()}`); + return undefined; + } + + const propName = prop.name.text; + const init = prop.initializer; + + switch (propName) { + case "message": { + let messageInit; + if (messageInit = getStringLiteralLike(init)) { + messageInit.text = messageInit.text.replace("/tests/cases/fourslash", ""); + diagnosticProps.push(`Message: ${getGoStringLiteral(messageInit.text)},`); + } + else { + console.error(`Expected string literal for diagnostic message, got ${init.getText()}`); + return undefined; + } + break; + } + case "code": { + let codeInit; + if (codeInit = getNumericLiteral(init)) { + diagnosticProps.push(`Code: &lsproto.IntegerOrString{Integer: PtrTo[int32](${codeInit.text})},`); + } + else { + console.error(`Expected numeric literal for diagnostic code, got ${init.getText()}`); + return undefined; + } + break; + } + case "range": { + // Handle range references like ranges[0] + const rangeArg = parseBaselineMarkerOrRangeArg(init); + if (rangeArg) { + diagnosticProps.push(`Range: ${rangeArg}.LSRange,`); + } + else { + console.error(`Expected range reference for diagnostic range, got ${init.getText()}`); + return undefined; + } + break; + } + case "reportsDeprecated": { + if (init.kind === ts.SyntaxKind.TrueKeyword) { + diagnosticProps.push(`Tags: &[]lsproto.DiagnosticTag{lsproto.DiagnosticTagDeprecated},`); + } + break; + } + case "reportsUnnecessary": { + if (init.kind === ts.SyntaxKind.TrueKeyword) { + diagnosticProps.push(`Tags: &[]lsproto.DiagnosticTag{lsproto.DiagnosticTagUnnecessary},`); + } + break; + } + default: + console.error(`Unrecognized property in expected diagnostic: ${propName}`); + return undefined; + } + } + + if (diagnosticProps.length === 0) { + console.error(`No valid properties found in diagnostic object`); + return undefined; + } + + return `&lsproto.Diagnostic{\n${diagnosticProps.join("\n")}\n}`; +} + function stringToTristate(s: string): string { switch (s) { case "true": @@ -1395,7 +1502,7 @@ function parseBaselineMarkerOrRangeArg(arg: ts.Expression): string | undefined { return result; } } - console.error(`Unrecognized argument in verify.baselineRename: ${arg.getText()}`); + console.error(`Unrecognized range argument: ${arg.getText()}`); return undefined; } @@ -1716,12 +1823,6 @@ interface VerifyBaselineFindAllReferencesCmd { ranges?: boolean; } -interface VerifyBaselineFindAllReferencesCmd { - kind: "verifyBaselineFindAllReferences"; - markers: string[]; - ranges?: boolean; -} - interface VerifyBaselineGoToDefinitionCmd { kind: "verifyBaselineGoToDefinition" | "verifyBaselineGoToType"; markers: string[]; @@ -1789,6 +1890,16 @@ interface VerifyRenameInfoCmd { preferences: string; } +interface VerifyDiagnosticsCmd { + kind: "verifyDiagnostics"; + arg: string; + isSuggestion: boolean; +} + +interface VerifyBaselineDiagnosticsCmd { + kind: "verifyBaselineDiagnostics"; +} + type Cmd = | VerifyCompletionsCmd | VerifyApplyCodeActionFromCompletionCmd @@ -1804,7 +1915,9 @@ type Cmd = | VerifyBaselineRenameCmd | VerifyRenameInfoCmd | VerifyBaselineInlayHintsCmd - | VerifyImportFixAtPositionCmd; + | VerifyImportFixAtPositionCmd + | VerifyDiagnosticsCmd + | VerifyBaselineDiagnosticsCmd; function generateVerifyCompletions({ marker, args, isNewIdentifierLocation, andApplyCodeActionArgs }: VerifyCompletionsCmd): string { let expectedList: string; @@ -1953,6 +2066,11 @@ function generateCmd(cmd: Cmd): string { return generateBaselineInlayHints(cmd); case "verifyImportFixAtPosition": return generateImportFixAtPosition(cmd); + case "verifyDiagnostics": + const funcName = cmd.isSuggestion ? "VerifySuggestionDiagnostics" : "VerifyNonSuggestionDiagnostics"; + return `f.${funcName}(t, ${cmd.arg})`; + case "verifyBaselineDiagnostics": + return `f.VerifyBaselineNonSuggestionDiagnostics(t)`; default: let neverCommand: never = cmd; throw new Error(`Unknown command kind: ${neverCommand as Cmd["kind"]}`); diff --git a/pkg/fourslash/_scripts/failingTests.txt b/pkg/fourslash/_scripts/failingTests.txt index a54667b7..fa8d1200 100644 --- a/pkg/fourslash/_scripts/failingTests.txt +++ b/pkg/fourslash/_scripts/failingTests.txt @@ -13,10 +13,10 @@ TestAutoImportCrossProject_symlinks_toDist TestAutoImportCrossProject_symlinks_toSrc TestAutoImportFileExcludePatterns3 TestAutoImportJsDocImport1 +TestAutoImportModuleNone1 TestAutoImportNodeNextJSRequire TestAutoImportPathsAliasesAndBarrels TestAutoImportPnpm -TestAutoImportProvider4 TestAutoImportProvider_exportMap1 TestAutoImportProvider_exportMap2 TestAutoImportProvider_exportMap3 @@ -32,6 +32,7 @@ TestAutoImportProvider_pnpm TestAutoImportProvider_wildcardExports1 TestAutoImportProvider_wildcardExports2 TestAutoImportProvider_wildcardExports3 +TestAutoImportProvider4 TestAutoImportSortCaseSensitivity1 TestAutoImportSymlinkCaseSensitive TestAutoImportTypeImport1 @@ -59,6 +60,16 @@ TestCompletionForComputedStringProperties TestCompletionForMetaProperty TestCompletionForObjectProperty TestCompletionForStringLiteral +TestCompletionForStringLiteral_details +TestCompletionForStringLiteral_quotePreference +TestCompletionForStringLiteral_quotePreference1 +TestCompletionForStringLiteral_quotePreference2 +TestCompletionForStringLiteral_quotePreference3 +TestCompletionForStringLiteral_quotePreference4 +TestCompletionForStringLiteral_quotePreference5 +TestCompletionForStringLiteral_quotePreference6 +TestCompletionForStringLiteral_quotePreference7 +TestCompletionForStringLiteral_quotePreference8 TestCompletionForStringLiteral4 TestCompletionForStringLiteralExport TestCompletionForStringLiteralImport1 @@ -80,16 +91,6 @@ TestCompletionForStringLiteralRelativeImport4 TestCompletionForStringLiteralRelativeImport6 TestCompletionForStringLiteralRelativeImportAllowJSTrue TestCompletionForStringLiteralWithDynamicImport -TestCompletionForStringLiteral_details -TestCompletionForStringLiteral_quotePreference -TestCompletionForStringLiteral_quotePreference1 -TestCompletionForStringLiteral_quotePreference2 -TestCompletionForStringLiteral_quotePreference3 -TestCompletionForStringLiteral_quotePreference4 -TestCompletionForStringLiteral_quotePreference5 -TestCompletionForStringLiteral_quotePreference6 -TestCompletionForStringLiteral_quotePreference7 -TestCompletionForStringLiteral_quotePreference8 TestCompletionImportMeta TestCompletionImportMetaWithGlobalDeclaration TestCompletionImportModuleSpecifierEndingDts @@ -127,16 +128,16 @@ TestCompletionListInUnclosedTaggedTemplate02 TestCompletionListInUnclosedTemplate01 TestCompletionListInUnclosedTemplate02 TestCompletionListInvalidMemberNames -TestCompletionListInvalidMemberNames2 TestCompletionListInvalidMemberNames_escapeQuote TestCompletionListInvalidMemberNames_startWithSpace TestCompletionListInvalidMemberNames_withExistingIdentifier +TestCompletionListInvalidMemberNames2 TestCompletionListOfGenericSymbol TestCompletionListOnAliases +TestCompletionListsStringLiteralTypeAsIndexedAccessTypeObject TestCompletionListStringParenthesizedExpression TestCompletionListStringParenthesizedType TestCompletionListWithoutVariableinitializer -TestCompletionListsStringLiteralTypeAsIndexedAccessTypeObject TestCompletionNoAutoInsertQuestionDotForThis TestCompletionNoAutoInsertQuestionDotForTypeParameter TestCompletionNoAutoInsertQuestionDotWithUserPreferencesOff @@ -148,7 +149,6 @@ TestCompletionOfAwaitPromise6 TestCompletionOfAwaitPromise7 TestCompletionOfInterfaceAndVar TestCompletionPreferredSuggestions1 -TestCompletionWithConditionalOperatorMissingColon TestCompletionsAfterJSDoc TestCompletionsBeforeRestArg1 TestCompletionsClassMemberImportTypeNodeParameter1 @@ -158,7 +158,6 @@ TestCompletionsClassMemberImportTypeNodeParameter4 TestCompletionsElementAccessNumeric TestCompletionsExportImport TestCompletionsGenericTypeWithMultipleBases1 -TestCompletionsImportOrExportSpecifier TestCompletionsImport_default_alreadyExistedWithRename TestCompletionsImport_default_anonymous TestCompletionsImport_details_withMisspelledName @@ -175,13 +174,14 @@ TestCompletionsImport_named_didNotExistBefore TestCompletionsImport_noSemicolons TestCompletionsImport_packageJsonImportsPreference TestCompletionsImport_quoteStyle -TestCompletionsImport_reExportDefault2 TestCompletionsImport_reExport_wrongName +TestCompletionsImport_reExportDefault2 TestCompletionsImport_require_addToExisting TestCompletionsImport_typeOnly TestCompletionsImport_umdDefaultNoCrash1 TestCompletionsImport_uriStyleNodeCoreModules2 TestCompletionsImport_windowsPathsProjectRelative +TestCompletionsImportOrExportSpecifier TestCompletionsInExport TestCompletionsInExport_moduleBlock TestCompletionsInRequire @@ -206,13 +206,13 @@ TestCompletionsOverridingMethod4 TestCompletionsOverridingMethod9 TestCompletionsOverridingMethodCrash1 TestCompletionsOverridingProperties1 -TestCompletionsPathsJsonModule -TestCompletionsPathsRelativeJsonModule TestCompletionsPaths_importType TestCompletionsPaths_kinds TestCompletionsPaths_pathMapping TestCompletionsPaths_pathMapping_nonTrailingWildcard1 TestCompletionsPaths_pathMapping_parentDirectory +TestCompletionsPathsJsonModule +TestCompletionsPathsRelativeJsonModule TestCompletionsRecommended_namespace TestCompletionsRecommended_union TestCompletionsRedeclareModuleAsGlobal @@ -220,9 +220,10 @@ TestCompletionsStringsWithTriggerCharacter TestCompletionsSymbolMembers TestCompletionsTriggerCharacter TestCompletionsTuple -TestCompletionsUniqueSymbol1 TestCompletionsUniqueSymbol_import +TestCompletionsUniqueSymbol1 TestCompletionsWithDeprecatedTag10 +TestCompletionWithConditionalOperatorMissingColon TestConstEnumQuickInfoAndCompletionList TestConstQuickInfoAndCompletionList TestContextuallyTypedFunctionExpressionGeneric1 @@ -230,11 +231,10 @@ TestDoubleUnderscoreCompletions TestEditJsdocType TestExportDefaultClass TestExportDefaultFunction -TestFindAllRefsModuleDotExports TestFindReferencesBindingPatternInJsdocNoCrash1 TestFindReferencesBindingPatternInJsdocNoCrash2 -TestGenericCombinatorWithConstraints1 TestGenericCombinators3 +TestGenericCombinatorWithConstraints1 TestGenericFunctionWithGenericParams1 TestGenericInterfacesWithConstraints1 TestGenericTypeWithMultipleBases1MultiFile @@ -258,25 +258,43 @@ TestGetJavaScriptQuickInfo8 TestGetJavaScriptSyntacticDiagnostics24 TestGetOccurrencesIfElseBroken TestHoverOverComment +TestImportCompletions_importsMap1 +TestImportCompletions_importsMap2 +TestImportCompletions_importsMap3 +TestImportCompletions_importsMap4 +TestImportCompletions_importsMap5 TestImportCompletionsPackageJsonExportsSpecifierEndsInTs TestImportCompletionsPackageJsonExportsTrailingSlash1 +TestImportCompletionsPackageJsonImports_ts TestImportCompletionsPackageJsonImportsConditions1 TestImportCompletionsPackageJsonImportsLength1 TestImportCompletionsPackageJsonImportsLength2 TestImportCompletionsPackageJsonImportsPattern -TestImportCompletionsPackageJsonImportsPattern2 TestImportCompletionsPackageJsonImportsPattern_capsInPath1 TestImportCompletionsPackageJsonImportsPattern_capsInPath2 TestImportCompletionsPackageJsonImportsPattern_js_ts TestImportCompletionsPackageJsonImportsPattern_ts TestImportCompletionsPackageJsonImportsPattern_ts_ts -TestImportCompletionsPackageJsonImports_ts -TestImportCompletions_importsMap1 -TestImportCompletions_importsMap2 -TestImportCompletions_importsMap3 -TestImportCompletions_importsMap4 -TestImportCompletions_importsMap5 +TestImportCompletionsPackageJsonImportsPattern2 TestImportFixesGlobalTypingsCache +TestImportNameCodeFix_avoidRelativeNodeModules +TestImportNameCodeFix_fileWithNoTrailingNewline +TestImportNameCodeFix_HeaderComment1 +TestImportNameCodeFix_HeaderComment2 +TestImportNameCodeFix_importType1 +TestImportNameCodeFix_importType2 +TestImportNameCodeFix_importType4 +TestImportNameCodeFix_importType7 +TestImportNameCodeFix_importType8 +TestImportNameCodeFix_jsx1 +TestImportNameCodeFix_order +TestImportNameCodeFix_order2 +TestImportNameCodeFix_pnpm1 +TestImportNameCodeFix_preferBaseUrl +TestImportNameCodeFix_reExportDefault +TestImportNameCodeFix_symlink +TestImportNameCodeFix_trailingComma +TestImportNameCodeFix_withJson TestImportNameCodeFixConvertTypeOnly1 TestImportNameCodeFixExistingImport10 TestImportNameCodeFixExistingImport11 @@ -297,24 +315,6 @@ TestImportNameCodeFixNewImportFileQuoteStyleMixed0 TestImportNameCodeFixNewImportFileQuoteStyleMixed1 TestImportNameCodeFixNewImportRootDirs0 TestImportNameCodeFixNewImportTypeRoots1 -TestImportNameCodeFix_HeaderComment1 -TestImportNameCodeFix_HeaderComment2 -TestImportNameCodeFix_avoidRelativeNodeModules -TestImportNameCodeFix_fileWithNoTrailingNewline -TestImportNameCodeFix_importType1 -TestImportNameCodeFix_importType2 -TestImportNameCodeFix_importType4 -TestImportNameCodeFix_importType7 -TestImportNameCodeFix_importType8 -TestImportNameCodeFix_jsx1 -TestImportNameCodeFix_order -TestImportNameCodeFix_order2 -TestImportNameCodeFix_pnpm1 -TestImportNameCodeFix_preferBaseUrl -TestImportNameCodeFix_reExportDefault -TestImportNameCodeFix_symlink -TestImportNameCodeFix_trailingComma -TestImportNameCodeFix_withJson TestImportTypeCompletions1 TestImportTypeCompletions3 TestImportTypeCompletions4 @@ -328,6 +328,8 @@ TestInstanceTypesForGenericType1 TestJavascriptModules20 TestJavascriptModulesTypeImport TestJsDocAugments +TestJsDocAugmentsAndExtends +TestJsdocCallbackTag TestJsDocExtends TestJsDocFunctionSignatures10 TestJsDocFunctionSignatures11 @@ -337,6 +339,9 @@ TestJsDocFunctionSignatures7 TestJsDocFunctionSignatures8 TestJsDocGenerics2 TestJsDocInheritDoc +TestJsdocLink2 +TestJsdocLink3 +TestJsdocLink6 TestJsDocPropertyDescription1 TestJsDocPropertyDescription10 TestJsDocPropertyDescription11 @@ -351,19 +356,15 @@ TestJsDocPropertyDescription8 TestJsDocPropertyDescription9 TestJsDocServices TestJsDocTagsWithHyphen -TestJsFileImportNoTypes2 -TestJsQuickInfoGenerallyAcceptableSize -TestJsRequireQuickInfo -TestJsdocCallbackTag -TestJsdocLink2 -TestJsdocLink3 -TestJsdocLink6 TestJsdocTemplatePrototypeCompletions TestJsdocThrowsTagCompletion TestJsdocTypedefTag TestJsdocTypedefTag2 TestJsdocTypedefTagNamespace TestJsdocTypedefTagServices +TestJsFileImportNoTypes2 +TestJsQuickInfoGenerallyAcceptableSize +TestJsRequireQuickInfo TestLetQuickInfoAndCompletionList TestLocalFunction TestMemberListInReopenedEnum @@ -373,9 +374,9 @@ TestMemberListOnContextualThis TestModuleNodeNextAutoImport2 TestModuleNodeNextAutoImport3 TestNgProxy1 +TestNodeModulesImportCompletions1 TestNoQuickInfoForLabel TestNoQuickInfoInWhitespace -TestNodeModulesImportCompletions1 TestNumericPropertyNames TestOverloadQuickInfo TestParameterWithDestructuring @@ -429,12 +430,14 @@ TestPathCompletionsTypesVersionsWildcard4 TestPathCompletionsTypesVersionsWildcard5 TestPathCompletionsTypesVersionsWildcard6 TestProtoVarVisibleWithOuterScopeUnderscoreProto +TestQuickInfo_notInsideComment +TestQuickinfo01 TestQuickInfoAlias TestQuickInfoAssertionNodeNotReusedWhenTypeNotEquivalent1 TestQuickInfoBindingPatternInJsdocNoCrash1 TestQuickInfoClassKeyword -TestQuickInfoContextualTyping TestQuickInfoContextuallyTypedSignatureOptionalParameterFromIntersection1 +TestQuickInfoContextualTyping TestQuickInfoDisplayPartsIife TestQuickInfoElementAccessDeclaration TestQuickInfoForConstTypeReference @@ -447,13 +450,15 @@ TestQuickInfoForGenericTaggedTemplateExpression TestQuickInfoForGetterAndSetter TestQuickInfoForIndexerResultWithConstraint TestQuickInfoForNamedTupleMember +TestQuickinfoForNamespaceMergeWithClassConstrainedToSelf TestQuickInfoForObjectBindingElementPropertyName04 TestQuickInfoForShorthandProperty TestQuickInfoForSyntaxErrorNoError +TestQuickInfoForTypeofParameter TestQuickInfoForTypeParameterInTypeAlias1 TestQuickInfoForTypeParameterInTypeAlias2 -TestQuickInfoForTypeofParameter TestQuickInfoForUMDModuleAlias +TestQuickinfoForUnionProperty TestQuickInfoFunctionKeyword TestQuickInfoGenerics TestQuickInfoGetterSetter @@ -464,10 +469,10 @@ TestQuickInfoInWithBlock TestQuickInfoJSDocBackticks TestQuickInfoJSDocFunctionNew TestQuickInfoJSDocFunctionThis -TestQuickInfoJSExport TestQuickInfoJsDocGetterSetterNoCrash1 TestQuickInfoJsDocNonDiscriminatedUnionSharedProp TestQuickInfoJsdocTypedefMissingType +TestQuickInfoJSExport TestQuickInfoMappedSpreadTypes TestQuickInfoMappedType TestQuickInfoMappedTypeRecursiveInference @@ -511,6 +516,7 @@ TestQuickInfoOnUndefined TestQuickInfoOnVarInArrowExpression TestQuickInfoPrivateIdentifierInTypeReferenceNoCrash1 TestQuickInfoPropertyTag +TestQuickInforForSucessiveInferencesIsNotAny TestQuickInfoSignatureOptionalParameterFromUnion1 TestQuickInfoSignatureRestParameterFromUnion1 TestQuickInfoSignatureRestParameterFromUnion2 @@ -525,14 +531,8 @@ TestQuickInfoTypeOfThisInStatics TestQuickInfoTypeOnlyNamespaceAndClass TestQuickInfoUnionOfNamespaces TestQuickInfoWidenedTypes -TestQuickInfo_notInsideComment -TestQuickInforForSucessiveInferencesIsNotAny -TestQuickinfo01 -TestQuickinfoForNamespaceMergeWithClassConstrainedToSelf -TestQuickinfoForUnionProperty TestQuickinfoWrongComment TestRecursiveInternalModuleImport -TestReferencesForStatementKeywords TestReferencesInEmptyFile TestRegexDetection TestRenameForAliasingExport02 diff --git a/pkg/fourslash/_scripts/makeManual.mts b/pkg/fourslash/_scripts/makeManual.mts index 09beb81c..dea3584c 100644 --- a/pkg/fourslash/_scripts/makeManual.mts +++ b/pkg/fourslash/_scripts/makeManual.mts @@ -56,7 +56,7 @@ function main() { if (!manualTests.includes(testName)) { manualTests.push(testName); - manualTests.sort(); + manualTests.sort((a, b) => a.localeCompare(b, "en-US")); fs.writeFileSync(manualTestsPath, [...manualTests, ""].join("\n"), "utf-8"); } } diff --git a/pkg/fourslash/_scripts/manualTests.txt b/pkg/fourslash/_scripts/manualTests.txt index 492d95e5..bc1045b9 100644 --- a/pkg/fourslash/_scripts/manualTests.txt +++ b/pkg/fourslash/_scripts/manualTests.txt @@ -2,6 +2,8 @@ completionListInClosedFunction05 completionsAtIncompleteObjectLiteralProperty completionsSelfDeclaring1 completionsWithDeprecatedTag4 +parserCorruptionAfterMapInClass +quickInfoForOverloadOnConst1 renameDefaultKeyword renameForDefaultExport01 tsxCompletion12 diff --git a/pkg/fourslash/_scripts/updateFailing.mts b/pkg/fourslash/_scripts/updateFailing.mts index 85de8e8c..5e56c019 100644 --- a/pkg/fourslash/_scripts/updateFailing.mts +++ b/pkg/fourslash/_scripts/updateFailing.mts @@ -31,7 +31,7 @@ function main() { failingTests.push(match[1]); } - fs.writeFileSync(failingTestsPath, failingTests.sort().join("\n") + "\n", "utf-8"); + fs.writeFileSync(failingTestsPath, failingTests.sort((a, b) => a.localeCompare(b, "en-US")).join("\n") + "\n", "utf-8"); convertFourslash(); } diff --git a/pkg/fourslash/baselineutil.go b/pkg/fourslash/baselineutil.go index 8735e484..fc3e67bd 100644 --- a/pkg/fourslash/baselineutil.go +++ b/pkg/fourslash/baselineutil.go @@ -47,7 +47,7 @@ func getBaselineFileName(t *testing.T, command string) string { func getBaselineExtension(command string) string { switch command { - case "QuickInfo", "SignatureHelp", "Smart Selection", "Inlay Hints": + case "QuickInfo", "SignatureHelp", "Smart Selection", "Inlay Hints", "Syntax and Semantic Diagnostics": return "baseline" case "Auto Imports": return "baseline.md" diff --git a/pkg/fourslash/fourslash.go b/pkg/fourslash/fourslash.go index 02156b19..ebee40ad 100644 --- a/pkg/fourslash/fourslash.go +++ b/pkg/fourslash/fourslash.go @@ -16,6 +16,8 @@ import ( "github.com/buke/typescript-go-internal/pkg/bundled" "github.com/buke/typescript-go-internal/pkg/collections" "github.com/buke/typescript-go-internal/pkg/core" + "github.com/buke/typescript-go-internal/pkg/diagnostics" + "github.com/buke/typescript-go-internal/pkg/diagnosticwriter" "github.com/buke/typescript-go-internal/pkg/ls" "github.com/buke/typescript-go-internal/pkg/ls/lsconv" "github.com/buke/typescript-go-internal/pkg/ls/lsutil" @@ -26,6 +28,7 @@ import ( "github.com/buke/typescript-go-internal/pkg/stringutil" "github.com/buke/typescript-go-internal/pkg/testutil/baseline" "github.com/buke/typescript-go-internal/pkg/testutil/harnessutil" + "github.com/buke/typescript-go-internal/pkg/testutil/tsbaseline" "github.com/buke/typescript-go-internal/pkg/tspath" "github.com/buke/typescript-go-internal/pkg/vfs" "github.com/buke/typescript-go-internal/pkg/vfs/vfstest" @@ -350,8 +353,7 @@ func getCapabilitiesWithDefaults(capabilities *lsproto.ClientCapabilities) *lspr func sendRequest[Params, Resp any](t *testing.T, f *FourslashTest, info lsproto.RequestInfo[Params, Resp], params Params) (*lsproto.Message, Resp, bool) { id := f.nextID() - req := lsproto.NewRequestMessage( - info.Method, + req := info.NewRequestMessage( lsproto.NewID(lsproto.IntegerOrString{Integer: &id}), params, ) @@ -365,19 +367,24 @@ func sendRequest[Params, Resp any](t *testing.T, f *FourslashTest, info lsproto. // !!! remove if `config` is handled in initialization and there are no other server-initiated requests if resp.Kind == lsproto.MessageKindRequest { req := resp.AsRequest() - switch req.Method { - case lsproto.MethodWorkspaceConfiguration: - req := lsproto.ResponseMessage{ - ID: req.ID, - JSONRPC: req.JSONRPC, - Result: []any{f.userPreferences}, - } - f.writeMsg(t, req.Message()) - resp = f.readMsg(t) - default: - // other types of requests not yet used in fourslash; implement them if needed - t.Fatalf("Unexpected request received: %s", req.Method) + + assert.Equal(t, req.Method, lsproto.MethodWorkspaceConfiguration, "Unexpected request received: %s", req.Method) + res := lsproto.ResponseMessage{ + ID: req.ID, + JSONRPC: req.JSONRPC, + Result: []any{f.userPreferences}, } + f.writeMsg(t, res.Message()) + req = f.readMsg(t).AsRequest() + + assert.Equal(t, req.Method, lsproto.MethodClientRegisterCapability, "Unexpected request received: %s", req.Method) + res = lsproto.ResponseMessage{ + ID: req.ID, + JSONRPC: req.JSONRPC, + Result: lsproto.Null{}, + } + f.writeMsg(t, res.Message()) + resp = f.readMsg(t) } if resp == nil { @@ -388,8 +395,7 @@ func sendRequest[Params, Resp any](t *testing.T, f *FourslashTest, info lsproto. } func sendNotification[Params any](t *testing.T, f *FourslashTest, info lsproto.NotificationInfo[Params], params Params) { - notification := lsproto.NewNotificationMessage( - info.Method, + notification := info.NewNotificationMessage( params, ) f.writeMsg(t, notification.Message()) @@ -413,9 +419,16 @@ func (f *FourslashTest) readMsg(t *testing.T) *lsproto.Message { } func (f *FourslashTest) Configure(t *testing.T, config *lsutil.UserPreferences) { + // !!! + // Callers to this function may need to consider + // sending a more specific configuration for 'javascript' + // or 'js/ts' as well. For now, we only send 'typescript', + // and most tests probably just want this. f.userPreferences = config sendNotification(t, f, lsproto.WorkspaceDidChangeConfigurationInfo, &lsproto.DidChangeConfigurationParams{ - Settings: config, + Settings: map[string]any{ + "typescript": config, + }, }) } @@ -556,6 +569,16 @@ func (f *FourslashTest) Ranges() []*RangeMarker { return f.testData.Ranges } +func (f *FourslashTest) getRangesInFile(fileName string) []*RangeMarker { + var rangesInFile []*RangeMarker + for _, rangeMarker := range f.testData.Ranges { + if rangeMarker.FileName() == fileName { + rangesInFile = append(rangesInFile, rangeMarker) + } + } + return rangesInFile +} + func (f *FourslashTest) ensureActiveFile(t *testing.T, filename string) { if f.activeFilename != filename { f.openFile(t, filename) @@ -913,8 +936,9 @@ func ignorePaths(paths ...string) cmp.Option { } var ( - completionIgnoreOpts = ignorePaths(".Kind", ".SortText", ".FilterText", ".Data") - autoImportIgnoreOpts = ignorePaths(".Kind", ".SortText", ".FilterText", ".Data", ".LabelDetails", ".Detail", ".AdditionalTextEdits") + completionIgnoreOpts = ignorePaths(".Kind", ".SortText", ".FilterText", ".Data") + autoImportIgnoreOpts = ignorePaths(".Kind", ".SortText", ".FilterText", ".Data", ".LabelDetails", ".Detail", ".AdditionalTextEdits") + diagnosticsIgnoreOpts = ignorePaths(".Severity", ".Source", ".RelatedInformation") ) func (f *FourslashTest) verifyCompletionItem(t *testing.T, prefix string, actual *lsproto.CompletionItem, expected *lsproto.CompletionItem) { @@ -1815,7 +1839,12 @@ func (f *FourslashTest) ReplaceLine(t *testing.T, lineIndex int, text string) { func (f *FourslashTest) selectLine(t *testing.T, lineIndex int) { script := f.getScriptInfo(f.activeFilename) start := script.lineMap.LineStarts[lineIndex] - end := script.lineMap.LineStarts[lineIndex+1] - 1 + var end core.TextPos + if lineIndex+1 >= len(script.lineMap.LineStarts) { + end = core.TextPos(len(script.content)) + } else { + end = script.lineMap.LineStarts[lineIndex+1] - 1 + } f.selectRange(t, core.NewTextRange(int(start), int(end))) } @@ -2474,6 +2503,255 @@ func (f *FourslashTest) VerifyBaselineInlayHints( f.addResultToBaseline(t, "Inlay Hints", strings.Join(annotations, "\n\n")) } +func (f *FourslashTest) VerifyDiagnostics(t *testing.T, expected []*lsproto.Diagnostic) { + f.verifyDiagnostics(t, expected, func(d *lsproto.Diagnostic) bool { return true }) +} + +// Similar to `VerifyDiagnostics`, but excludes suggestion diagnostics returned from server. +func (f *FourslashTest) VerifyNonSuggestionDiagnostics(t *testing.T, expected []*lsproto.Diagnostic) { + f.verifyDiagnostics(t, expected, func(d *lsproto.Diagnostic) bool { return !isSuggestionDiagnostic(d) }) +} + +// Similar to `VerifyDiagnostics`, but includes only suggestion diagnostics returned from server. +func (f *FourslashTest) VerifySuggestionDiagnostics(t *testing.T, expected []*lsproto.Diagnostic) { + f.verifyDiagnostics(t, expected, isSuggestionDiagnostic) +} + +func (f *FourslashTest) verifyDiagnostics(t *testing.T, expected []*lsproto.Diagnostic, filterDiagnostics func(*lsproto.Diagnostic) bool) { + actualDiagnostics := f.getDiagnostics(t, f.activeFilename) + actualDiagnostics = core.Filter(actualDiagnostics, filterDiagnostics) + emptyRange := lsproto.Range{} + expectedWithRanges := make([]*lsproto.Diagnostic, len(expected)) + for i, diag := range expected { + if diag.Range == emptyRange { + rangesInFile := f.getRangesInFile(f.activeFilename) + if len(rangesInFile) == 0 { + t.Fatalf("No ranges found in file %s to assign to diagnostic with empty range", f.activeFilename) + } + diagWithRange := *diag + diagWithRange.Range = rangesInFile[0].LSRange + expectedWithRanges[i] = &diagWithRange + } else { + expectedWithRanges[i] = diag + } + } + if len(actualDiagnostics) == 0 && len(expectedWithRanges) == 0 { + return + } + assertDeepEqual(t, actualDiagnostics, expectedWithRanges, "Diagnostics do not match expected", diagnosticsIgnoreOpts) +} + +func (f *FourslashTest) getDiagnostics(t *testing.T, fileName string) []*lsproto.Diagnostic { + params := &lsproto.DocumentDiagnosticParams{ + TextDocument: lsproto.TextDocumentIdentifier{ + Uri: lsconv.FileNameToDocumentURI(fileName), + }, + } + resMsg, result, resultOk := sendRequest(t, f, lsproto.TextDocumentDiagnosticInfo, params) + if resMsg == nil { + t.Fatal("Nil response received for diagnostics request") + } + if !resultOk { + t.Fatalf("Unexpected response type for diagnostics request: %T", resMsg.AsResponse().Result) + } + + if result.FullDocumentDiagnosticReport != nil { + return result.FullDocumentDiagnosticReport.Items + } + return nil +} + +func isSuggestionDiagnostic(diag *lsproto.Diagnostic) bool { + return diag.Tags != nil && len(*diag.Tags) > 0 || + (diag.Severity != nil && *diag.Severity == lsproto.DiagnosticSeverityHint) +} + +func (f *FourslashTest) VerifyBaselineNonSuggestionDiagnostics(t *testing.T) { + var diagnostics []*fourslashDiagnostic + var files []*harnessutil.TestFile + for fileName, scriptInfo := range f.scriptInfos { + if tspath.HasJSONFileExtension(fileName) { + continue + } + files = append(files, &harnessutil.TestFile{UnitName: fileName, Content: scriptInfo.content}) + lspDiagnostics := core.Filter( + f.getDiagnostics(t, fileName), + func(d *lsproto.Diagnostic) bool { return !isSuggestionDiagnostic(d) }, + ) + diagnostics = append(diagnostics, core.Map(lspDiagnostics, func(d *lsproto.Diagnostic) *fourslashDiagnostic { + return f.toDiagnostic(scriptInfo, d) + })...) + } + slices.SortFunc(files, func(a, b *harnessutil.TestFile) int { + return strings.Compare(a.UnitName, b.UnitName) + }) + result := tsbaseline.GetErrorBaseline(t, files, diagnostics, compareDiagnostics, false /*pretty*/) + f.addResultToBaseline(t, "Syntax and Semantic Diagnostics", result) +} + +type fourslashDiagnostic struct { + file *fourslashDiagnosticFile + loc core.TextRange + code int32 + category diagnostics.Category + message string + relatedDiagnostics []*fourslashDiagnostic + reportsUnnecessary bool + reportsDeprecated bool +} + +type fourslashDiagnosticFile struct { + file *harnessutil.TestFile + ecmaLineMap []core.TextPos +} + +var _ diagnosticwriter.FileLike = (*fourslashDiagnosticFile)(nil) + +func (f *fourslashDiagnosticFile) FileName() string { + return f.file.UnitName +} + +func (f *fourslashDiagnosticFile) Text() string { + return f.file.Content +} + +func (f *fourslashDiagnosticFile) ECMALineMap() []core.TextPos { + if f.ecmaLineMap == nil { + f.ecmaLineMap = core.ComputeECMALineStarts(f.file.Content) + } + return f.ecmaLineMap +} + +var _ diagnosticwriter.Diagnostic = (*fourslashDiagnostic)(nil) + +func (d *fourslashDiagnostic) File() diagnosticwriter.FileLike { + return d.file +} + +func (d *fourslashDiagnostic) Pos() int { + return d.loc.Pos() +} + +func (d *fourslashDiagnostic) End() int { + return d.loc.End() +} + +func (d *fourslashDiagnostic) Len() int { + return d.loc.Len() +} + +func (d *fourslashDiagnostic) Code() int32 { + return d.code +} + +func (d *fourslashDiagnostic) Category() diagnostics.Category { + return d.category +} + +func (d *fourslashDiagnostic) Message() string { + return d.message +} + +func (d *fourslashDiagnostic) MessageChain() []diagnosticwriter.Diagnostic { + return nil +} + +func (d *fourslashDiagnostic) RelatedInformation() []diagnosticwriter.Diagnostic { + relatedInfo := make([]diagnosticwriter.Diagnostic, 0, len(d.relatedDiagnostics)) + for _, relDiag := range d.relatedDiagnostics { + relatedInfo = append(relatedInfo, relDiag) + } + return relatedInfo +} + +func (f *FourslashTest) toDiagnostic(scriptInfo *scriptInfo, lspDiagnostic *lsproto.Diagnostic) *fourslashDiagnostic { + var category diagnostics.Category + switch *lspDiagnostic.Severity { + case lsproto.DiagnosticSeverityError: + category = diagnostics.CategoryError + case lsproto.DiagnosticSeverityWarning: + category = diagnostics.CategoryWarning + case lsproto.DiagnosticSeverityInformation: + category = diagnostics.CategoryMessage + case lsproto.DiagnosticSeverityHint: + category = diagnostics.CategorySuggestion + default: + category = diagnostics.CategoryError + } + code := *lspDiagnostic.Code.Integer + + var relatedDiagnostics []*fourslashDiagnostic + if lspDiagnostic.RelatedInformation != nil { + for _, info := range *lspDiagnostic.RelatedInformation { + relatedScriptInfo := f.getScriptInfo(info.Location.Uri.FileName()) + if relatedScriptInfo == nil { + continue + } + relatedDiagnostic := &fourslashDiagnostic{ + file: &fourslashDiagnosticFile{file: &harnessutil.TestFile{UnitName: relatedScriptInfo.fileName, Content: relatedScriptInfo.content}}, + loc: f.converters.FromLSPRange(relatedScriptInfo, info.Location.Range), + code: code, + category: category, + message: info.Message, + } + relatedDiagnostics = append(relatedDiagnostics, relatedDiagnostic) + } + } + + diagnostic := &fourslashDiagnostic{ + file: &fourslashDiagnosticFile{ + file: &harnessutil.TestFile{ + UnitName: scriptInfo.fileName, + Content: scriptInfo.content, + }, + }, + loc: f.converters.FromLSPRange(scriptInfo, lspDiagnostic.Range), + code: code, + category: category, + message: lspDiagnostic.Message, + relatedDiagnostics: relatedDiagnostics, + } + return diagnostic +} + +func compareDiagnostics(d1, d2 *fourslashDiagnostic) int { + c := strings.Compare(d1.file.FileName(), d2.file.FileName()) + if c != 0 { + return c + } + c = d1.Pos() - d2.Pos() + if c != 0 { + return c + } + c = d1.End() - d2.End() + if c != 0 { + return c + } + c = int(d1.code) - int(d2.code) + if c != 0 { + return c + } + c = strings.Compare(d1.message, d2.message) + if c != 0 { + return c + } + return compareRelatedDiagnostics(d1.relatedDiagnostics, d2.relatedDiagnostics) +} + +func compareRelatedDiagnostics(d1, d2 []*fourslashDiagnostic) int { + c := len(d2) - len(d1) + if c != 0 { + return c + } + for i := range d1 { + c = compareDiagnostics(d1[i], d2[i]) + if c != 0 { + return c + } + } + return 0 +} + func isLibFile(fileName string) bool { baseName := tspath.GetBaseFileName(fileName) if strings.HasPrefix(baseName, "lib.") && strings.HasSuffix(baseName, ".d.ts") { diff --git a/pkg/fourslash/tests/gen/annotateWithTypeFromJSDoc2_test.go b/pkg/fourslash/tests/gen/annotateWithTypeFromJSDoc2_test.go new file mode 100644 index 00000000..49b291d7 --- /dev/null +++ b/pkg/fourslash/tests/gen/annotateWithTypeFromJSDoc2_test.go @@ -0,0 +1,19 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestAnnotateWithTypeFromJSDoc2(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @Filename: test123.ts +/** @type {number} */ +var [|x|]: string;` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifySuggestionDiagnostics(t, nil) +} diff --git a/pkg/fourslash/tests/gen/autoImportModuleNone1_test.go b/pkg/fourslash/tests/gen/autoImportModuleNone1_test.go new file mode 100644 index 00000000..3eadd8b0 --- /dev/null +++ b/pkg/fourslash/tests/gen/autoImportModuleNone1_test.go @@ -0,0 +1,37 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + . "github.com/buke/typescript-go-internal/pkg/fourslash/tests/util" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestAutoImportModuleNone1(t *testing.T) { + t.Parallel() + t.Skip() + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @module: none +// @moduleResolution: bundler +// @target: es5 +// @Filename: /node_modules/dep/index.d.ts +export const x: number; +// @Filename: /index.ts + x/**/` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifyCompletions(t, "", &fourslash.CompletionsExpectedList{ + IsIncomplete: false, + ItemDefaults: &fourslash.CompletionsExpectedItemDefaults{ + CommitCharacters: &DefaultCommitCharacters, + EditRange: Ignored, + }, + Items: &fourslash.CompletionsExpectedItems{ + Excludes: []string{ + "x", + }, + }, + }) + f.ReplaceLine(t, 0, "import { x } from 'dep'; x;") + f.VerifyNonSuggestionDiagnostics(t, nil) +} diff --git a/pkg/fourslash/tests/gen/autoImportModuleNone2_test.go b/pkg/fourslash/tests/gen/autoImportModuleNone2_test.go new file mode 100644 index 00000000..bb9efc6c --- /dev/null +++ b/pkg/fourslash/tests/gen/autoImportModuleNone2_test.go @@ -0,0 +1,48 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + . "github.com/buke/typescript-go-internal/pkg/fourslash/tests/util" + "github.com/buke/typescript-go-internal/pkg/ls" + "github.com/buke/typescript-go-internal/pkg/lsp/lsproto" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestAutoImportModuleNone2(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @module: none +// @moduleResolution: bundler +// @target: es2015 +// @Filename: /node_modules/dep/index.d.ts +export const x: number; +// @Filename: /index.ts + x/**/` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifyCompletions(t, "", &fourslash.CompletionsExpectedList{ + IsIncomplete: false, + ItemDefaults: &fourslash.CompletionsExpectedItemDefaults{ + CommitCharacters: &DefaultCommitCharacters, + EditRange: Ignored, + }, + Items: &fourslash.CompletionsExpectedItems{ + Includes: []fourslash.CompletionsExpectedItem{ + &lsproto.CompletionItem{ + Label: "x", + Data: PtrTo(any(&ls.CompletionItemData{ + AutoImport: &ls.AutoImportData{ + ModuleSpecifier: "dep", + }, + })), + AdditionalTextEdits: fourslash.AnyTextEdits, + SortText: PtrTo(string(ls.SortTextAutoImportSuggestions)), + }, + }, + }, + }) + f.ReplaceLine(t, 0, "import { x } from 'dep'; x;") + f.VerifyNonSuggestionDiagnostics(t, nil) +} diff --git a/pkg/fourslash/tests/gen/codeFixInferFromUsageBindingElement_test.go b/pkg/fourslash/tests/gen/codeFixInferFromUsageBindingElement_test.go new file mode 100644 index 00000000..f489b445 --- /dev/null +++ b/pkg/fourslash/tests/gen/codeFixInferFromUsageBindingElement_test.go @@ -0,0 +1,19 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestCodeFixInferFromUsageBindingElement(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `function f([car, cdr]) { + return car + cdr + 1 +}` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifySuggestionDiagnostics(t, nil) +} diff --git a/pkg/fourslash/tests/gen/codeFixRemoveUnnecessaryAwait_mixedUnion_test.go b/pkg/fourslash/tests/gen/codeFixRemoveUnnecessaryAwait_mixedUnion_test.go new file mode 100644 index 00000000..653e5f59 --- /dev/null +++ b/pkg/fourslash/tests/gen/codeFixRemoveUnnecessaryAwait_mixedUnion_test.go @@ -0,0 +1,24 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestCodeFixRemoveUnnecessaryAwait_mixedUnion(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @target: esnext +async function fn1(a: Promise | void) { + await a; +} + +async function fn2 | void>(a: T) { + await a; +}` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifySuggestionDiagnostics(t, nil) +} diff --git a/pkg/fourslash/tests/gen/codeFixRemoveUnnecessaryAwait_notAvailableOnReturn_test.go b/pkg/fourslash/tests/gen/codeFixRemoveUnnecessaryAwait_notAvailableOnReturn_test.go new file mode 100644 index 00000000..fd724277 --- /dev/null +++ b/pkg/fourslash/tests/gen/codeFixRemoveUnnecessaryAwait_notAvailableOnReturn_test.go @@ -0,0 +1,20 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestCodeFixRemoveUnnecessaryAwait_notAvailableOnReturn(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @target: esnext +async function fn(): Promise { + return 0; +}` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifySuggestionDiagnostics(t, nil) +} diff --git a/pkg/fourslash/tests/gen/codeFixUnreachableCode_noSuggestionIfDisabled_test.go b/pkg/fourslash/tests/gen/codeFixUnreachableCode_noSuggestionIfDisabled_test.go new file mode 100644 index 00000000..32bccae0 --- /dev/null +++ b/pkg/fourslash/tests/gen/codeFixUnreachableCode_noSuggestionIfDisabled_test.go @@ -0,0 +1,18 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestCodeFixUnreachableCode_noSuggestionIfDisabled(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @allowUnreachableCode: true +if (false) 0;` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifySuggestionDiagnostics(t, nil) +} diff --git a/pkg/fourslash/tests/gen/codeFixUnusedLabel_noSuggestionIfDisabled_test.go b/pkg/fourslash/tests/gen/codeFixUnusedLabel_noSuggestionIfDisabled_test.go new file mode 100644 index 00000000..38aab24f --- /dev/null +++ b/pkg/fourslash/tests/gen/codeFixUnusedLabel_noSuggestionIfDisabled_test.go @@ -0,0 +1,18 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestCodeFixUnusedLabel_noSuggestionIfDisabled(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @allowUnusedLabels: true +foo: while (true) {}` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifySuggestionDiagnostics(t, nil) +} diff --git a/pkg/fourslash/tests/gen/completionsDotInArrayLiteralInObjectLiteral_test.go b/pkg/fourslash/tests/gen/completionsDotInArrayLiteralInObjectLiteral_test.go new file mode 100644 index 00000000..aa31e27e --- /dev/null +++ b/pkg/fourslash/tests/gen/completionsDotInArrayLiteralInObjectLiteral_test.go @@ -0,0 +1,31 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + . "github.com/buke/typescript-go-internal/pkg/fourslash/tests/util" + "github.com/buke/typescript-go-internal/pkg/lsp/lsproto" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestCompletionsDotInArrayLiteralInObjectLiteral(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `const o = { x: [[|.|][||]/**/` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifyNonSuggestionDiagnostics(t, []*lsproto.Diagnostic{ + { + Code: &lsproto.IntegerOrString{Integer: PtrTo[int32](1109)}, + Message: "Expression expected.", + Range: f.Ranges()[0].LSRange, + }, + { + Code: &lsproto.IntegerOrString{Integer: PtrTo[int32](1003)}, + Message: "Identifier expected.", + Range: f.Ranges()[1].LSRange, + }, + }) + f.VerifyCompletions(t, "", nil) +} diff --git a/pkg/fourslash/tests/gen/findAllRefsModuleDotExports_test.go b/pkg/fourslash/tests/gen/findAllRefsModuleDotExports_test.go index ba0cc58e..e5d3d4ba 100644 --- a/pkg/fourslash/tests/gen/findAllRefsModuleDotExports_test.go +++ b/pkg/fourslash/tests/gen/findAllRefsModuleDotExports_test.go @@ -9,7 +9,7 @@ import ( func TestFindAllRefsModuleDotExports(t *testing.T) { t.Parallel() - t.Skip() + defer testutil.RecoverAndFail(t, "Panic on fourslash test") const content = `// @allowJs: true // @Filename: /a.js diff --git a/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics01_test.go b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics01_test.go new file mode 100644 index 00000000..b19c0201 --- /dev/null +++ b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics01_test.go @@ -0,0 +1,19 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestGetJavaScriptSyntacticDiagnostics01(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @allowJs: true +// @Filename: a.js +var ===;` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifyBaselineNonSuggestionDiagnostics(t) +} diff --git a/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics02_test.go b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics02_test.go new file mode 100644 index 00000000..ad398452 --- /dev/null +++ b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics02_test.go @@ -0,0 +1,22 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestGetJavaScriptSyntacticDiagnostics02(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @allowJs: true +// @Filename: b.js +var a = "a"; +var b: boolean = true; +function foo(): string { } +var var = "c";` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifyBaselineNonSuggestionDiagnostics(t) +} diff --git a/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics10_test.go b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics10_test.go new file mode 100644 index 00000000..56916b4e --- /dev/null +++ b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics10_test.go @@ -0,0 +1,19 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestGetJavaScriptSyntacticDiagnostics10(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @allowJs: true +// @Filename: a.js +function F() { }` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifyBaselineNonSuggestionDiagnostics(t) +} diff --git a/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics11_test.go b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics11_test.go new file mode 100644 index 00000000..7cb072ad --- /dev/null +++ b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics11_test.go @@ -0,0 +1,19 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestGetJavaScriptSyntacticDiagnostics11(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @allowJs: true +// @Filename: a.js +function F(): number { }` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifyBaselineNonSuggestionDiagnostics(t) +} diff --git a/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics12_test.go b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics12_test.go new file mode 100644 index 00000000..76fe96c9 --- /dev/null +++ b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics12_test.go @@ -0,0 +1,19 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestGetJavaScriptSyntacticDiagnostics12(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @allowJs: true +// @Filename: a.js +declare var v;` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifyBaselineNonSuggestionDiagnostics(t) +} diff --git a/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics13_test.go b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics13_test.go new file mode 100644 index 00000000..8183ddd8 --- /dev/null +++ b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics13_test.go @@ -0,0 +1,19 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestGetJavaScriptSyntacticDiagnostics13(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @allowJs: true +// @Filename: a.js +var v: () => number;` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifyBaselineNonSuggestionDiagnostics(t) +} diff --git a/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics14_test.go b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics14_test.go new file mode 100644 index 00000000..9406b36b --- /dev/null +++ b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics14_test.go @@ -0,0 +1,19 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestGetJavaScriptSyntacticDiagnostics14(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @allowJs: true +// @Filename: a.js +Foo();` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifyBaselineNonSuggestionDiagnostics(t) +} diff --git a/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics15_test.go b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics15_test.go new file mode 100644 index 00000000..7fed149d --- /dev/null +++ b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics15_test.go @@ -0,0 +1,19 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestGetJavaScriptSyntacticDiagnostics15(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @allowJs: true +// @Filename: a.js +function F(public p) { }` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifyBaselineNonSuggestionDiagnostics(t) +} diff --git a/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics16_test.go b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics16_test.go new file mode 100644 index 00000000..ed240ad2 --- /dev/null +++ b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics16_test.go @@ -0,0 +1,19 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestGetJavaScriptSyntacticDiagnostics16(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @allowJs: true +// @Filename: a.js +function F(p?) { }` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifyBaselineNonSuggestionDiagnostics(t) +} diff --git a/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics17_test.go b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics17_test.go new file mode 100644 index 00000000..18db00b3 --- /dev/null +++ b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics17_test.go @@ -0,0 +1,19 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestGetJavaScriptSyntacticDiagnostics17(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @allowJs: true +// @Filename: a.js +function F(a: number) { }` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifyBaselineNonSuggestionDiagnostics(t) +} diff --git a/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics18_test.go b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics18_test.go new file mode 100644 index 00000000..08250f92 --- /dev/null +++ b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics18_test.go @@ -0,0 +1,27 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestGetJavaScriptSyntacticDiagnostics18(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @allowJs: true +// @Filename: a.js +class C { + x; // Regular property declaration allowed + static y; // static allowed + public z; // public not allowed +} +// @Filename: b.js +class C { + x: number; // Types not allowed +}` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifyBaselineNonSuggestionDiagnostics(t) +} diff --git a/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics19_test.go b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics19_test.go new file mode 100644 index 00000000..7d03b6a4 --- /dev/null +++ b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics19_test.go @@ -0,0 +1,19 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestGetJavaScriptSyntacticDiagnostics19(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @allowJs: true +// @Filename: a.js +enum E { }` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifyBaselineNonSuggestionDiagnostics(t) +} diff --git a/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics1_test.go b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics1_test.go new file mode 100644 index 00000000..b7b534d0 --- /dev/null +++ b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics1_test.go @@ -0,0 +1,19 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestGetJavaScriptSyntacticDiagnostics1(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @allowJs: true +// @Filename: a.js +import a = b;` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifyBaselineNonSuggestionDiagnostics(t) +} diff --git a/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics21_test.go b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics21_test.go new file mode 100644 index 00000000..0be8becc --- /dev/null +++ b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics21_test.go @@ -0,0 +1,20 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestGetJavaScriptSyntacticDiagnostics21(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @allowJs: true +// @experimentalDecorators: true +// @Filename: a.js +@internal class C {}` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifyNonSuggestionDiagnostics(t, nil) +} diff --git a/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics22_test.go b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics22_test.go new file mode 100644 index 00000000..40a9c17c --- /dev/null +++ b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics22_test.go @@ -0,0 +1,19 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestGetJavaScriptSyntacticDiagnostics22(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @allowJs: true +// @Filename: a.js +function foo(...a) {}` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifyNonSuggestionDiagnostics(t, nil) +} diff --git a/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics23_test.go b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics23_test.go new file mode 100644 index 00000000..a02bf54a --- /dev/null +++ b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics23_test.go @@ -0,0 +1,26 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestGetJavaScriptSyntacticDiagnostics23(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @allowJs: true +// @Filename: a.js +function Person(age) { + if (age >= 18) { + this.canVote = true; + } else { + this.canVote = false; + } +}` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifyNonSuggestionDiagnostics(t, nil) + f.VerifyNonSuggestionDiagnostics(t, nil) +} diff --git a/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics2_test.go b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics2_test.go new file mode 100644 index 00000000..a39cfdd4 --- /dev/null +++ b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics2_test.go @@ -0,0 +1,19 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestGetJavaScriptSyntacticDiagnostics2(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @allowJs: true +// @Filename: a.js +export = b;` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifyBaselineNonSuggestionDiagnostics(t) +} diff --git a/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics3_test.go b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics3_test.go new file mode 100644 index 00000000..18e5c882 --- /dev/null +++ b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics3_test.go @@ -0,0 +1,19 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestGetJavaScriptSyntacticDiagnostics3(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @allowJs: true +// @Filename: a.js +class C { }` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifyBaselineNonSuggestionDiagnostics(t) +} diff --git a/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics4_test.go b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics4_test.go new file mode 100644 index 00000000..30333fe1 --- /dev/null +++ b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics4_test.go @@ -0,0 +1,19 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestGetJavaScriptSyntacticDiagnostics4(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @allowJs: true +// @Filename: a.js +public class C { }` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifyBaselineNonSuggestionDiagnostics(t) +} diff --git a/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics5_test.go b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics5_test.go new file mode 100644 index 00000000..457dedbd --- /dev/null +++ b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics5_test.go @@ -0,0 +1,19 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestGetJavaScriptSyntacticDiagnostics5(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @allowJs: true +// @Filename: a.js +class C implements D { }` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifyBaselineNonSuggestionDiagnostics(t) +} diff --git a/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics6_test.go b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics6_test.go new file mode 100644 index 00000000..75b51e28 --- /dev/null +++ b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics6_test.go @@ -0,0 +1,19 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestGetJavaScriptSyntacticDiagnostics6(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @allowJs: true +// @Filename: a.js +interface I { }` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifyBaselineNonSuggestionDiagnostics(t) +} diff --git a/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics7_test.go b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics7_test.go new file mode 100644 index 00000000..a3405fcf --- /dev/null +++ b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics7_test.go @@ -0,0 +1,19 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestGetJavaScriptSyntacticDiagnostics7(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @allowJs: true +// @Filename: a.js +module M { }` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifyBaselineNonSuggestionDiagnostics(t) +} diff --git a/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics8_test.go b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics8_test.go new file mode 100644 index 00000000..01f32ecf --- /dev/null +++ b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics8_test.go @@ -0,0 +1,19 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestGetJavaScriptSyntacticDiagnostics8(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @allowJs: true +// @Filename: a.js +type a = b;` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifyBaselineNonSuggestionDiagnostics(t) +} diff --git a/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics9_test.go b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics9_test.go new file mode 100644 index 00000000..3f4506fa --- /dev/null +++ b/pkg/fourslash/tests/gen/getJavaScriptSyntacticDiagnostics9_test.go @@ -0,0 +1,19 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestGetJavaScriptSyntacticDiagnostics9(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @allowJs: true +// @Filename: a.js +public function F() { }` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifyBaselineNonSuggestionDiagnostics(t) +} diff --git a/pkg/fourslash/tests/gen/importTypesDeclarationDiagnosticsNoServerError_test.go b/pkg/fourslash/tests/gen/importTypesDeclarationDiagnosticsNoServerError_test.go new file mode 100644 index 00000000..d743b3a6 --- /dev/null +++ b/pkg/fourslash/tests/gen/importTypesDeclarationDiagnosticsNoServerError_test.go @@ -0,0 +1,26 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestImportTypesDeclarationDiagnosticsNoServerError(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @declaration: true +// @Filename: node_modules/foo/index.d.ts +export function f(): I; +export interface I { + x: number; +} +// @Filename: a.ts +import { f } from "foo"; +export const x = f();` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.GoToFileNumber(t, 1) + f.VerifyNonSuggestionDiagnostics(t, nil) +} diff --git a/pkg/fourslash/tests/gen/issue57429_test.go b/pkg/fourslash/tests/gen/issue57429_test.go new file mode 100644 index 00000000..9a86da42 --- /dev/null +++ b/pkg/fourslash/tests/gen/issue57429_test.go @@ -0,0 +1,41 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + . "github.com/buke/typescript-go-internal/pkg/fourslash/tests/util" + "github.com/buke/typescript-go-internal/pkg/lsp/lsproto" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestIssue57429(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @strict: true +function Builder(def: I) { + return def; +} + +interface IThing { + doThing: (args: { value: object }) => string + doAnotherThing: () => void +} + +Builder({ + doThing(args: { value: object }) { + const { v/*1*/alue } = this.[|args|] + return ` + "`" + `${value}` + "`" + ` + }, + doAnotherThing() { }, +})` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifyQuickInfoAt(t, "1", "const value: any", "") + f.VerifyNonSuggestionDiagnostics(t, []*lsproto.Diagnostic{ + { + Message: "Property 'args' does not exist on type 'IThing'.", + Code: &lsproto.IntegerOrString{Integer: PtrTo[int32](2339)}, + }, + }) +} diff --git a/pkg/fourslash/tests/gen/issue57585-2_test.go b/pkg/fourslash/tests/gen/issue57585-2_test.go new file mode 100644 index 00000000..548218b9 --- /dev/null +++ b/pkg/fourslash/tests/gen/issue57585-2_test.go @@ -0,0 +1,87 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestIssue57585_2(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @strict: true +// @target: esnext +// @lib: esnext +declare const EffectTypeId: unique symbol; + +type Covariant = (_: never) => A; + +interface VarianceStruct { + readonly _V: string; + readonly _A: Covariant; + readonly _E: Covariant; + readonly _R: Covariant; +} + +interface Variance { + readonly [EffectTypeId]: VarianceStruct; +} + +type Success> = [T] extends [ + Effect, +] + ? _A + : never; + +declare const YieldWrapTypeId: unique symbol; + +class YieldWrap { + readonly #value: T; + constructor(value: T) { + this.#value = value; + } + [YieldWrapTypeId](): T { + return this.#value; + } +} + +interface EffectGenerator> { + next(...args: ReadonlyArray): IteratorResult, Success>; +} + +interface Effect + extends Variance { + [Symbol.iterator](): EffectGenerator>; +} + +declare const gen: { + >, AEff>( + f: () => Generator, + ): Effect< + AEff, + [Eff] extends [never] + ? never + : [Eff] extends [YieldWrap>] + ? E + : never, + [Eff] extends [never] + ? never + : [Eff] extends [YieldWrap>] + ? R + : never + >; +}; + +declare const succeed: (value: A) => Effect; + +gen(function* () { + const a = yield* succeed(1); + const b/*1*/ = yield* succeed(2); + return a + b; +});` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifyQuickInfoAt(t, "1", "const b: number", "") + f.VerifyNonSuggestionDiagnostics(t, nil) +} diff --git a/pkg/fourslash/tests/gen/jsDocAugmentsAndExtends_test.go b/pkg/fourslash/tests/gen/jsDocAugmentsAndExtends_test.go new file mode 100644 index 00000000..f882c568 --- /dev/null +++ b/pkg/fourslash/tests/gen/jsDocAugmentsAndExtends_test.go @@ -0,0 +1,43 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + . "github.com/buke/typescript-go-internal/pkg/fourslash/tests/util" + "github.com/buke/typescript-go-internal/pkg/lsp/lsproto" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestJsDocAugmentsAndExtends(t *testing.T) { + t.Parallel() + t.Skip() + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @allowJs: true +// @checkJs: true +// @Filename: dummy.js +/** + * @augments {Thing} + * [|@extends {Thing}|] + */ +class MyStringThing extends Thing { + constructor() { + super(); + var x = this.mine; + x/**/; + } +} +// @Filename: declarations.d.ts +declare class Thing { + mine: T; +}` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.GoToMarker(t, "") + f.VerifyQuickInfoIs(t, "(local var) x: number", "") + f.VerifyNonSuggestionDiagnostics(t, []*lsproto.Diagnostic{ + { + Message: "Class declarations cannot have more than one '@augments' or '@extends' tag.", + Code: &lsproto.IntegerOrString{Integer: PtrTo[int32](8025)}, + }, + }) +} diff --git a/pkg/fourslash/tests/gen/jsdocDeprecated_suggestion22_test.go b/pkg/fourslash/tests/gen/jsdocDeprecated_suggestion22_test.go new file mode 100644 index 00000000..971d7a21 --- /dev/null +++ b/pkg/fourslash/tests/gen/jsdocDeprecated_suggestion22_test.go @@ -0,0 +1,26 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestJsdocDeprecated_suggestion22(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @filename: /a.ts +const foo: { + /** + * @deprecated + */ + (a: string, b: string): string; + (a: string, b: number): string; +} = (a: string, b: string | number) => a + b; + +[|foo|](1, 1);` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifySuggestionDiagnostics(t, nil) +} diff --git a/pkg/fourslash/tests/gen/jsdocDeprecated_suggestion5_test.go b/pkg/fourslash/tests/gen/jsdocDeprecated_suggestion5_test.go new file mode 100644 index 00000000..833c5a32 --- /dev/null +++ b/pkg/fourslash/tests/gen/jsdocDeprecated_suggestion5_test.go @@ -0,0 +1,33 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestJsdocDeprecated_suggestion5(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @checkJs: true +// @allowJs: true +// @Filename: jsdocDeprecated_suggestion5.js +/** @typedef {{ email: string, nickName?: string }} U2 */ +/** @type {U2} */ +const u2 = { email: "" } +/** + * @callback K + * @param {any} ctx + * @return {void} + */ +/** @type {K} */ +const cc = _k => {} +/** @enum {number} */ +const DOOM = { e: 1, m: 1 } +/** @type {DOOM} */ +const kneeDeep = DOOM.e` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifySuggestionDiagnostics(t, nil) +} diff --git a/pkg/fourslash/tests/gen/jsdocDeprecated_suggestion7_test.go b/pkg/fourslash/tests/gen/jsdocDeprecated_suggestion7_test.go new file mode 100644 index 00000000..01343327 --- /dev/null +++ b/pkg/fourslash/tests/gen/jsdocDeprecated_suggestion7_test.go @@ -0,0 +1,25 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestJsdocDeprecated_suggestion7(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `enum Direction { + Left = -1, + Right = 1, +} +type T = Direction.Left +/** @deprecated */ +const x = 1 +type x = string +var y: x = 'hi'` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifySuggestionDiagnostics(t, nil) +} diff --git a/pkg/fourslash/tests/gen/jsdocParam_suggestion1_test.go b/pkg/fourslash/tests/gen/jsdocParam_suggestion1_test.go new file mode 100644 index 00000000..cdd038c6 --- /dev/null +++ b/pkg/fourslash/tests/gen/jsdocParam_suggestion1_test.go @@ -0,0 +1,30 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestJsdocParam_suggestion1(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @Filename: a.ts +/** + * @param options - whatever + * @param options.zone - equally bad + */ +declare function bad(options: any): void + +/** + * @param {number} obtuse + */ +function worse(): void { + arguments +}` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.GoToFile(t, "a.ts") + f.VerifySuggestionDiagnostics(t, nil) +} diff --git a/pkg/fourslash/tests/gen/jsxElementExtendsNoCrash1_test.go b/pkg/fourslash/tests/gen/jsxElementExtendsNoCrash1_test.go new file mode 100644 index 00000000..4c5d7159 --- /dev/null +++ b/pkg/fourslash/tests/gen/jsxElementExtendsNoCrash1_test.go @@ -0,0 +1,18 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestJsxElementExtendsNoCrash1(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @filename: index.tsx +` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifySuggestionDiagnostics(t, nil) +} diff --git a/pkg/fourslash/tests/gen/jsxElementExtendsNoCrash2_test.go b/pkg/fourslash/tests/gen/jsxElementExtendsNoCrash2_test.go new file mode 100644 index 00000000..6598cf90 --- /dev/null +++ b/pkg/fourslash/tests/gen/jsxElementExtendsNoCrash2_test.go @@ -0,0 +1,18 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestJsxElementExtendsNoCrash2(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @filename: index.tsx +` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifySuggestionDiagnostics(t, nil) +} diff --git a/pkg/fourslash/tests/gen/jsxElementExtendsNoCrash3_test.go b/pkg/fourslash/tests/gen/jsxElementExtendsNoCrash3_test.go new file mode 100644 index 00000000..51b7b263 --- /dev/null +++ b/pkg/fourslash/tests/gen/jsxElementExtendsNoCrash3_test.go @@ -0,0 +1,18 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestJsxElementExtendsNoCrash3(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @filename: index.tsx +` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifySuggestionDiagnostics(t, nil) +} diff --git a/pkg/fourslash/tests/gen/moduleDeclarationDeprecated_suggestion2_test.go b/pkg/fourslash/tests/gen/moduleDeclarationDeprecated_suggestion2_test.go new file mode 100644 index 00000000..fe4bd448 --- /dev/null +++ b/pkg/fourslash/tests/gen/moduleDeclarationDeprecated_suggestion2_test.go @@ -0,0 +1,18 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestModuleDeclarationDeprecated_suggestion2(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @Filename: a.ts +declare module` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifySuggestionDiagnostics(t, nil) +} diff --git a/pkg/fourslash/tests/gen/refactorConvertToEsModule_notAtTopLevel_test.go b/pkg/fourslash/tests/gen/refactorConvertToEsModule_notAtTopLevel_test.go new file mode 100644 index 00000000..964802d7 --- /dev/null +++ b/pkg/fourslash/tests/gen/refactorConvertToEsModule_notAtTopLevel_test.go @@ -0,0 +1,22 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestRefactorConvertToEsModule_notAtTopLevel(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @allowJs: true +// @target: esnext +// @Filename: /a.js +(function() { + module.exports = 0; +})();` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifySuggestionDiagnostics(t, nil) +} diff --git a/pkg/fourslash/tests/gen/refactorConvertToEsModule_notInCommonjsProject_test.go b/pkg/fourslash/tests/gen/refactorConvertToEsModule_notInCommonjsProject_test.go new file mode 100644 index 00000000..5aa77143 --- /dev/null +++ b/pkg/fourslash/tests/gen/refactorConvertToEsModule_notInCommonjsProject_test.go @@ -0,0 +1,19 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestRefactorConvertToEsModule_notInCommonjsProject(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @allowJs: true +// @Filename: /a.js +exports.x = 0;` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifySuggestionDiagnostics(t, nil) +} diff --git a/pkg/fourslash/tests/gen/referencesForStatementKeywords_test.go b/pkg/fourslash/tests/gen/referencesForStatementKeywords_test.go index 52388d84..70442223 100644 --- a/pkg/fourslash/tests/gen/referencesForStatementKeywords_test.go +++ b/pkg/fourslash/tests/gen/referencesForStatementKeywords_test.go @@ -9,7 +9,7 @@ import ( func TestReferencesForStatementKeywords(t *testing.T) { t.Parallel() - t.Skip() + defer testutil.RecoverAndFail(t, "Panic on fourslash test") const content = `// @filename: /main.ts // import ... = ... diff --git a/pkg/fourslash/tests/gen/rewriteRelativeImportExtensionsProjectReferences1_test.go b/pkg/fourslash/tests/gen/rewriteRelativeImportExtensionsProjectReferences1_test.go new file mode 100644 index 00000000..c683adf7 --- /dev/null +++ b/pkg/fourslash/tests/gen/rewriteRelativeImportExtensionsProjectReferences1_test.go @@ -0,0 +1,58 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestRewriteRelativeImportExtensionsProjectReferences1(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @Filename: packages/common/tsconfig.json +{ + "compilerOptions": { + "composite": true, + "rootDir": "src", + "outDir": "dist", + "module": "nodenext", + "resolveJsonModule": false, + } +} +// @Filename: packages/common/package.json +{ + "name": "common", + "version": "1.0.0", + "type": "module", + "exports": { + ".": { + "source": "./src/index.ts", + "default": "./dist/index.js" + } + } +} +// @Filename: packages/common/src/index.ts +export {}; +// @Filename: packages/main/tsconfig.json +{ + "compilerOptions": { + "module": "nodenext", + "rewriteRelativeImportExtensions": true, + "rootDir": "src", + "outDir": "dist", + "resolveJsonModule": false, + }, + "references": [ + { "path": "../common" } + ] +} +// @Filename: packages/main/package.json +{ "type": "module" } +// @Filename: packages/main/src/index.ts +import {} from "../../common/src/index.ts";` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.GoToFile(t, "/packages/main/src/index.ts") + f.VerifyBaselineNonSuggestionDiagnostics(t) +} diff --git a/pkg/fourslash/tests/gen/rewriteRelativeImportExtensionsProjectReferences2_test.go b/pkg/fourslash/tests/gen/rewriteRelativeImportExtensionsProjectReferences2_test.go new file mode 100644 index 00000000..6edde880 --- /dev/null +++ b/pkg/fourslash/tests/gen/rewriteRelativeImportExtensionsProjectReferences2_test.go @@ -0,0 +1,44 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestRewriteRelativeImportExtensionsProjectReferences2(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @Filename: src/tsconfig-base.json +{ + "compilerOptions": { + "module": "nodenext", + "composite": true, + "rootDir": ".", + "outDir": "../dist", + "rewriteRelativeImportExtensions": true, + } +} +// @Filename: src/compiler/tsconfig.json +{ + "extends": "../tsconfig-base.json", + "compilerOptions": {} +} +// @Filename: src/compiler/parser.ts +export {}; +// @Filename: src/services/tsconfig.json +{ + "extends": "../tsconfig-base.json", + "compilerOptions": {}, + "references": [ + { "path": "../compiler" } + ] +} +// @Filename: src/services/services.ts +import {} from "../compiler/parser.ts";` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.GoToFile(t, "/src/services/services.ts") + f.VerifyBaselineNonSuggestionDiagnostics(t) +} diff --git a/pkg/fourslash/tests/gen/rewriteRelativeImportExtensionsProjectReferences3_test.go b/pkg/fourslash/tests/gen/rewriteRelativeImportExtensionsProjectReferences3_test.go new file mode 100644 index 00000000..d68ad954 --- /dev/null +++ b/pkg/fourslash/tests/gen/rewriteRelativeImportExtensionsProjectReferences3_test.go @@ -0,0 +1,47 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestRewriteRelativeImportExtensionsProjectReferences3(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @Filename: src/tsconfig-base.json +{ + "compilerOptions": { + "module": "nodenext", + "composite": true, + "rewriteRelativeImportExtensions": true, + } +} +// @Filename: src/compiler/tsconfig.json +{ + "extends": "../tsconfig-base.json", + "compilerOptions": { + "rootDir": ".", + "outDir": "../../dist/compiler", +} +// @Filename: src/compiler/parser.ts +export {}; +// @Filename: src/services/tsconfig.json +{ + "extends": "../tsconfig-base.json", + "compilerOptions": { + "rootDir": ".", + "outDir": "../../dist/services", + }, + "references": [ + { "path": "../compiler" } + ] +} +// @Filename: src/services/services.ts +import {} from "../compiler/parser.ts";` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.GoToFile(t, "/src/services/services.ts") + f.VerifyBaselineNonSuggestionDiagnostics(t) +} diff --git a/pkg/fourslash/tests/gen/sideEffectImportsSuggestion1_test.go b/pkg/fourslash/tests/gen/sideEffectImportsSuggestion1_test.go new file mode 100644 index 00000000..0c6ac7f4 --- /dev/null +++ b/pkg/fourslash/tests/gen/sideEffectImportsSuggestion1_test.go @@ -0,0 +1,28 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestSideEffectImportsSuggestion1(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @allowJs: true +// @noEmit: true +// @module: commonjs +// @noUncheckedSideEffectImports: true +// @filename: moduleA/a.js +import "b"; +import "c"; +// @filename: node_modules/b.ts +var a = 10; +// @filename: node_modules/c.js +exports.a = 10; +c = 10;` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifySuggestionDiagnostics(t, nil) +} diff --git a/pkg/fourslash/tests/gen/suggestionNoDuplicates_test.go b/pkg/fourslash/tests/gen/suggestionNoDuplicates_test.go new file mode 100644 index 00000000..12c76a5c --- /dev/null +++ b/pkg/fourslash/tests/gen/suggestionNoDuplicates_test.go @@ -0,0 +1,30 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + . "github.com/buke/typescript-go-internal/pkg/fourslash/tests/util" + "github.com/buke/typescript-go-internal/pkg/lsp/lsproto" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestSuggestionNoDuplicates(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @strict: false +// @Filename: foo.ts +import { f } from [|'m'|] +f +// @Filename: node_modules/m/index.js +module.exports.f = function (x) { return x }` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifyNonSuggestionDiagnostics(t, nil) + f.VerifySuggestionDiagnostics(t, []*lsproto.Diagnostic{ + { + Code: &lsproto.IntegerOrString{Integer: PtrTo[int32](7016)}, + Message: "Could not find a declaration file for module 'm'. '/node_modules/m/index.js' implicitly has an 'any' type.", + }, + }) +} diff --git a/pkg/fourslash/tests/gen/suggestionOfUnusedVariableWithExternalModule_test.go b/pkg/fourslash/tests/gen/suggestionOfUnusedVariableWithExternalModule_test.go new file mode 100644 index 00000000..65e7cb21 --- /dev/null +++ b/pkg/fourslash/tests/gen/suggestionOfUnusedVariableWithExternalModule_test.go @@ -0,0 +1,45 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + . "github.com/buke/typescript-go-internal/pkg/fourslash/tests/util" + "github.com/buke/typescript-go-internal/pkg/lsp/lsproto" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestSuggestionOfUnusedVariableWithExternalModule(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `//@allowJs: true +// @Filename: /mymodule.js +(function ([|root|], factory) { + module.exports = factory(); +}(this, function () { + var [|unusedVar|] = "something"; + return {}; +})); +// @Filename: /app.js +//@ts-check +require("./mymodule");` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.GoToFile(t, "/app.js") + f.VerifySuggestionDiagnostics(t, nil) + f.GoToFile(t, "/mymodule.js") + f.VerifySuggestionDiagnostics(t, []*lsproto.Diagnostic{ + { + Message: "'root' is declared but its value is never read.", + Code: &lsproto.IntegerOrString{Integer: PtrTo[int32](6133)}, + Range: f.Ranges()[0].LSRange, + Tags: &[]lsproto.DiagnosticTag{lsproto.DiagnosticTagUnnecessary}, + }, + { + Message: "'unusedVar' is declared but its value is never read.", + Code: &lsproto.IntegerOrString{Integer: PtrTo[int32](6133)}, + Range: f.Ranges()[1].LSRange, + Tags: &[]lsproto.DiagnosticTag{lsproto.DiagnosticTagUnnecessary}, + }, + }) +} diff --git a/pkg/fourslash/tests/gen/tsconfigComputedPropertyError_test.go b/pkg/fourslash/tests/gen/tsconfigComputedPropertyError_test.go new file mode 100644 index 00000000..c99a77e6 --- /dev/null +++ b/pkg/fourslash/tests/gen/tsconfigComputedPropertyError_test.go @@ -0,0 +1,24 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestTsconfigComputedPropertyError(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @filename: tsconfig.json +{ + ["oops!" + 42]: "true", + "files": [ + "nonexistentfile.ts" + ], + "compileOnSave": true +}` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.VerifyNonSuggestionDiagnostics(t, nil) +} diff --git a/pkg/fourslash/tests/gen/typeErrorAfterStringCompletionsInNestedCall2_test.go b/pkg/fourslash/tests/gen/typeErrorAfterStringCompletionsInNestedCall2_test.go new file mode 100644 index 00000000..d6bd05e1 --- /dev/null +++ b/pkg/fourslash/tests/gen/typeErrorAfterStringCompletionsInNestedCall2_test.go @@ -0,0 +1,80 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + . "github.com/buke/typescript-go-internal/pkg/fourslash/tests/util" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestTypeErrorAfterStringCompletionsInNestedCall2(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @strict: true + +type ActionFunction< + TExpressionEvent extends { type: string }, + out TEvent extends { type: string } +> = { + ({ event }: { event: TExpressionEvent }): void; + _out_TEvent?: TEvent; +}; + +interface MachineConfig { + types: { + events: TEvent; + }; + on: { + [K in TEvent["type"]]?: ActionFunction< + Extract, + TEvent + >; + }; +} + +declare function raise< + TExpressionEvent extends { type: string }, + TEvent extends { type: string } +>( + resolve: ({ event }: { event: TExpressionEvent }) => TEvent +): { + ({ event }: { event: TExpressionEvent }): void; + _out_TEvent?: TEvent; +}; + +declare function createMachine( + config: MachineConfig +): void; + +createMachine({ + types: { + events: {} as { type: "FOO" } | { type: "BAR" }, + }, + on: { + [|/*error*/FOO|]: raise(({ event }) => { + return { + type: "BAR/*1*/" as const, + }; + }), + }, +});` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.GoToMarker(t, "1") + f.Insert(t, "x") + f.VerifyCompletions(t, nil, &fourslash.CompletionsExpectedList{ + IsIncomplete: false, + ItemDefaults: &fourslash.CompletionsExpectedItemDefaults{ + CommitCharacters: &DefaultCommitCharacters, + EditRange: Ignored, + }, + Items: &fourslash.CompletionsExpectedItems{ + Exact: []fourslash.CompletionsExpectedItem{ + "BAR", + "FOO", + }, + }, + }) + f.VerifyBaselineNonSuggestionDiagnostics(t) +} diff --git a/pkg/fourslash/tests/gen/typeErrorAfterStringCompletionsInNestedCall_test.go b/pkg/fourslash/tests/gen/typeErrorAfterStringCompletionsInNestedCall_test.go new file mode 100644 index 00000000..c76a4745 --- /dev/null +++ b/pkg/fourslash/tests/gen/typeErrorAfterStringCompletionsInNestedCall_test.go @@ -0,0 +1,62 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + . "github.com/buke/typescript-go-internal/pkg/fourslash/tests/util" + "github.com/buke/typescript-go-internal/pkg/lsp/lsproto" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestTypeErrorAfterStringCompletionsInNestedCall(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @strict: true + +type GreetingEvent = + | { type: "MORNING" } + | { type: "LUNCH_TIME" } + | { type: "ALOHA" }; + +interface RaiseActionObject { + type: "raise"; + event: TEvent; +} + +declare function raise( + ev: TEvent +): RaiseActionObject; + +declare function createMachine(config: { + actions: RaiseActionObject; +}): void; + +createMachine({ + [|/*error*/actions|]: raise({ type: "ALOHA/*1*/" }), +});` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.GoToMarker(t, "1") + f.Insert(t, "x") + f.VerifyCompletions(t, nil, &fourslash.CompletionsExpectedList{ + IsIncomplete: false, + ItemDefaults: &fourslash.CompletionsExpectedItemDefaults{ + CommitCharacters: &DefaultCommitCharacters, + EditRange: Ignored, + }, + Items: &fourslash.CompletionsExpectedItems{ + Exact: []fourslash.CompletionsExpectedItem{ + "ALOHA", + "LUNCH_TIME", + "MORNING", + }, + }, + }) + f.VerifyNonSuggestionDiagnostics(t, []*lsproto.Diagnostic{ + { + Code: &lsproto.IntegerOrString{Integer: PtrTo[int32](2322)}, + Message: "Type 'RaiseActionObject<{ type: \"ALOHAx\"; }>' is not assignable to type 'RaiseActionObject'.\n Type '{ type: \"ALOHAx\"; }' is not assignable to type 'GreetingEvent'.\n Type '{ type: \"ALOHAx\"; }' is not assignable to type '{ type: \"ALOHA\"; }'.\n Types of property 'type' are incompatible.\n Type '\"ALOHAx\"' is not assignable to type '\"ALOHA\"'.", + }, + }) +} diff --git a/pkg/fourslash/tests/manual/parserCorruptionAfterMapInClass_test.go b/pkg/fourslash/tests/manual/parserCorruptionAfterMapInClass_test.go new file mode 100644 index 00000000..d0387db4 --- /dev/null +++ b/pkg/fourslash/tests/manual/parserCorruptionAfterMapInClass_test.go @@ -0,0 +1,35 @@ +package fourslash_test + +import ( + "testing" + + "github.com/buke/typescript-go-internal/pkg/fourslash" + . "github.com/buke/typescript-go-internal/pkg/fourslash/tests/util" + "github.com/buke/typescript-go-internal/pkg/lsp/lsproto" + "github.com/buke/typescript-go-internal/pkg/testutil" +) + +func TestParserCorruptionAfterMapInClass(t *testing.T) { + t.Parallel() + + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @target: esnext +// @lib: es2015 +// @strict: true +class C { + map = new Set<[|string, number|]>/*$*/ + + foo() { + + } +}` + f := fourslash.NewFourslash(t, nil /*capabilities*/, content) + f.GoToMarker(t, "$") + f.Insert(t, "()") + f.VerifyNonSuggestionDiagnostics(t, []*lsproto.Diagnostic{ + { + Code: &lsproto.IntegerOrString{Integer: PtrTo[int32](2558)}, + Message: "Expected 1 type arguments, but got 2.", + }, + }) +} diff --git a/pkg/fourslash/tests/gen/quickInfoForOverloadOnConst1_test.go b/pkg/fourslash/tests/manual/quickInfoForOverloadOnConst1_test.go similarity index 97% rename from pkg/fourslash/tests/gen/quickInfoForOverloadOnConst1_test.go rename to pkg/fourslash/tests/manual/quickInfoForOverloadOnConst1_test.go index 075f7d03..df8d263a 100644 --- a/pkg/fourslash/tests/gen/quickInfoForOverloadOnConst1_test.go +++ b/pkg/fourslash/tests/manual/quickInfoForOverloadOnConst1_test.go @@ -31,7 +31,7 @@ c.x1(1, (x/*10*/x) => { return 1; } );` f.VerifyQuickInfoAt(t, "1", "(method) I.x1(a: number, callback: (x: \"hi\") => number): any", "") f.VerifyQuickInfoAt(t, "2", "(method) C.x1(a: number, callback: (x: \"hi\") => number): any", "") f.VerifyQuickInfoAt(t, "3", "(parameter) callback: (x: \"hi\") => number", "") - f.VerifyQuickInfoAt(t, "4", "(method) C.x1(a: number, callback: (x: \"hi\") => number): any", "") + f.VerifyQuickInfoAt(t, "4", "(method) C.x1(a: number, callback: (x: string) => number): void", "") f.VerifyQuickInfoAt(t, "5", "(parameter) callback: (x: string) => number", "") f.VerifyQuickInfoAt(t, "6", "(parameter) callback: (x: string) => number", "") f.VerifyQuickInfoAt(t, "7", "(method) C.x1(a: number, callback: (x: \"hi\") => number): any", "") diff --git a/pkg/ls/codeactions.go b/pkg/ls/codeactions.go index dc426dec..bdcc2648 100644 --- a/pkg/ls/codeactions.go +++ b/pkg/ls/codeactions.go @@ -64,7 +64,7 @@ func (l *LanguageService) ProvideCodeActions(ctx context.Context, params *lsprot // Process diagnostics in the context to generate quick fixes if params.Context != nil && params.Context.Diagnostics != nil { for _, diag := range params.Context.Diagnostics { - if diag.Code.Integer == nil { + if diag.Code == nil || diag.Code.Integer == nil { continue } diff --git a/pkg/ls/completions.go b/pkg/ls/completions.go index 8b76c3a3..3596634c 100644 --- a/pkg/ls/completions.go +++ b/pkg/ls/completions.go @@ -36,7 +36,6 @@ func (l *LanguageService) ProvideCompletion( documentURI lsproto.DocumentUri, LSPPosition lsproto.Position, context *lsproto.CompletionContext, - clientOptions *lsproto.CompletionClientCapabilities, ) (lsproto.CompletionResponse, error) { _, file := l.getProgramAndFile(documentURI) var triggerCharacter *string @@ -49,7 +48,6 @@ func (l *LanguageService) ProvideCompletion( file, position, triggerCharacter, - clientOptions, ) completionList = ensureItemData(file.FileName(), position, completionList) return lsproto.CompletionItemsOrListOrNull{List: completionList}, nil @@ -342,7 +340,6 @@ func (l *LanguageService) getCompletionsAtPosition( file *ast.SourceFile, position int, triggerCharacter *string, - clientOptions *lsproto.CompletionClientCapabilities, ) *lsproto.CompletionList { _, previousToken := getRelevantTokens(position, file) if triggerCharacter != nil && !IsInString(file, position, previousToken) && !isValidTrigger(file, *triggerCharacter, previousToken, position) { @@ -369,7 +366,6 @@ func (l *LanguageService) getCompletionsAtPosition( position, previousToken, compilerOptions, - clientOptions, ) if stringCompletions != nil { return stringCompletions @@ -380,8 +376,8 @@ func (l *LanguageService) getCompletionsAtPosition( previousToken.Kind == ast.KindIdentifier) && ast.IsBreakOrContinueStatement(previousToken.Parent) { return l.getLabelCompletionsAtPosition( + ctx, previousToken.Parent, - clientOptions, file, position, l.getOptionalReplacementSpan(previousToken, file), @@ -406,7 +402,6 @@ func (l *LanguageService) getCompletionsAtPosition( compilerOptions, data, position, - clientOptions, optionalReplacementSpan, ) // !!! check if response is incomplete @@ -414,7 +409,7 @@ func (l *LanguageService) getCompletionsAtPosition( case *completionDataKeyword: optionalReplacementSpan := l.getOptionalReplacementSpan(previousToken, file) return l.specificKeywordCompletionInfo( - clientOptions, + ctx, position, file, data.keywordCompletions, @@ -425,7 +420,7 @@ func (l *LanguageService) getCompletionsAtPosition( // If the current position is a jsDoc tag name, only tag names should be provided for completion items := getJSDocTagNameCompletions() items = append(items, getJSDocParameterCompletions( - clientOptions, + ctx, file, position, checker, @@ -433,12 +428,12 @@ func (l *LanguageService) getCompletionsAtPosition( preferences, /*tagNameOnly*/ true, )...) - return l.jsDocCompletionInfo(clientOptions, position, file, items) + return l.jsDocCompletionInfo(ctx, position, file, items) case *completionDataJSDocTag: // If the current position is a jsDoc tag, only tags should be provided for completion items := getJSDocTagCompletions() items = append(items, getJSDocParameterCompletions( - clientOptions, + ctx, file, position, checker, @@ -446,9 +441,9 @@ func (l *LanguageService) getCompletionsAtPosition( preferences, /*tagNameOnly*/ false, )...) - return l.jsDocCompletionInfo(clientOptions, position, file, items) + return l.jsDocCompletionInfo(ctx, position, file, items) case *completionDataJSDocParameterName: - return l.jsDocCompletionInfo(clientOptions, position, file, getJSDocParameterNameCompletions(data.tag)) + return l.jsDocCompletionInfo(ctx, position, file, getJSDocParameterNameCompletions(data.tag)) default: panic("getCompletionData() returned unexpected type: " + fmt.Sprintf("%T", data)) } @@ -1818,7 +1813,6 @@ func (l *LanguageService) completionInfoFromData( compilerOptions *core.CompilerOptions, data *completionDataData, position int, - clientOptions *lsproto.CompletionClientCapabilities, optionalReplacementSpan *lsproto.Range, ) *lsproto.CompletionList { keywordFilters := data.keywordFilters @@ -1829,7 +1823,7 @@ func (l *LanguageService) completionInfoFromData( // Verify if the file is JSX language variant if file.LanguageVariant == core.LanguageVariantJSX { - list := l.getJsxClosingTagCompletion(data.location, file, position, clientOptions) + list := l.getJsxClosingTagCompletion(ctx, data.location, file, position) if list != nil { return list } @@ -1868,7 +1862,6 @@ func (l *LanguageService) completionInfoFromData( position, file, compilerOptions, - clientOptions, ) if data.keywordFilters != KeywordCompletionFiltersNone { @@ -1909,7 +1902,7 @@ func (l *LanguageService) completionInfoFromData( // !!! exhaustive case completions itemDefaults := l.setItemDefaults( - clientOptions, + ctx, position, file, sortedEntries, @@ -1931,7 +1924,6 @@ func (l *LanguageService) getCompletionEntriesFromSymbols( position int, file *ast.SourceFile, compilerOptions *core.CompilerOptions, - clientOptions *lsproto.CompletionClientCapabilities, ) (uniqueNames collections.Set[string], sortedEntries []*lsproto.CompletionItem) { closestSymbolDeclaration := getClosestSymbolDeclaration(data.contextToken, data.location) useSemicolons := lsutil.ProbablyUsesSemicolons(file) @@ -1988,7 +1980,6 @@ func (l *LanguageService) getCompletionEntriesFromSymbols( origin, useSemicolons, compilerOptions, - clientOptions, isMemberCompletion, ) if entry == nil { @@ -2054,9 +2045,9 @@ func (l *LanguageService) createCompletionItem( origin *symbolOriginInfo, useSemicolons bool, compilerOptions *core.CompilerOptions, - clientOptions *lsproto.CompletionClientCapabilities, isMemberCompletion bool, ) *lsproto.CompletionItem { + clientOptions := lsproto.GetClientCapabilities(ctx).TextDocument.Completion contextToken := data.contextToken var insertText string var filterText string @@ -2173,7 +2164,7 @@ func (l *LanguageService) createCompletionItem( if data.importStatementCompletion.isTopLevelTypeOnly { insertText += typeOnlyText } - tabStop := core.IfElse(ptrIsTrue(clientOptions.CompletionItem.SnippetSupport), "$1", "") + tabStop := core.IfElse(clientOptions.CompletionItem.SnippetSupport, "$1", "") importKind := getImportKind(file, exportKind, l.GetProgram(), true /*forceImportKeyword*/) escapedSnippet := escapeSnippetText(name) suffix := core.IfElse(useSemicolons, ";", "") @@ -2190,7 +2181,7 @@ func (l *LanguageService) createCompletionItem( } replacementSpan = data.importStatementCompletion.replacementSpan - isSnippet = ptrIsTrue(clientOptions.CompletionItem.SnippetSupport) + isSnippet = clientOptions.CompletionItem.SnippetSupport } } @@ -2234,7 +2225,7 @@ func (l *LanguageService) createCompletionItem( insertText = origin.asObjectLiteralMethod().insertText isSnippet = origin.asObjectLiteralMethod().isSnippet labelDetails = origin.asObjectLiteralMethod().labelDetails // !!! check if this can conflict with case above where we set label details - if !clientSupportsItemLabelDetails(clientOptions) { + if !clientSupportsItemLabelDetails(ctx) { name = name + *origin.asObjectLiteralMethod().labelDetails.Detail labelDetails = nil } @@ -2244,7 +2235,7 @@ func (l *LanguageService) createCompletionItem( if data.isJsxIdentifierExpected && !data.isRightOfOpenTag && - clientSupportsItemSnippet(clientOptions) && + clientSupportsItemSnippet(ctx) && preferences.JsxAttributeCompletionStyle != lsutil.JsxAttributeCompletionStyleNone && !(ast.IsJsxAttribute(data.location.Parent) && data.location.Parent.Initializer() != nil) { useBraces := preferences.JsxAttributeCompletionStyle == lsutil.JsxAttributeCompletionStyleBraces @@ -2311,10 +2302,10 @@ func (l *LanguageService) createCompletionItem( elementKind := getSymbolKind(typeChecker, symbol, data.location) var commitCharacters *[]string - if clientSupportsItemCommitCharacters(clientOptions) { + if clientSupportsItemCommitCharacters(ctx) { if elementKind == ScriptElementKindWarning || elementKind == ScriptElementKindString { commitCharacters = &[]string{} - } else if !clientSupportsDefaultCommitCharacters(clientOptions) { + } else if !clientSupportsDefaultCommitCharacters(ctx) { commitCharacters = ptrTo(data.defaultCommitCharacters) } // Otherwise use the completion list default. @@ -2324,6 +2315,7 @@ func (l *LanguageService) createCompletionItem( kindModifiers := getSymbolModifiers(typeChecker, symbol) return l.createLSPCompletionItem( + ctx, name, insertText, filterText, @@ -2335,7 +2327,6 @@ func (l *LanguageService) createCompletionItem( labelDetails, file, position, - clientOptions, isMemberCompletion, isSnippet, hasAction, @@ -4315,7 +4306,7 @@ func isTypeKeywordTokenOrIdentifier(node *ast.Node) bool { // Returns the item defaults for completion items, if that capability is supported. // Otherwise, if some item default is not supported by client, sets that property on each item. func (l *LanguageService) setItemDefaults( - clientOptions *lsproto.CompletionClientCapabilities, + ctx context.Context, position int, file *ast.SourceFile, items []*lsproto.CompletionItem, @@ -4324,8 +4315,8 @@ func (l *LanguageService) setItemDefaults( ) *lsproto.CompletionItemDefaults { var itemDefaults *lsproto.CompletionItemDefaults if defaultCommitCharacters != nil { - supportsItemCommitCharacters := clientSupportsItemCommitCharacters(clientOptions) - if clientSupportsDefaultCommitCharacters(clientOptions) && supportsItemCommitCharacters { + supportsItemCommitCharacters := clientSupportsItemCommitCharacters(ctx) + if clientSupportsDefaultCommitCharacters(ctx) && supportsItemCommitCharacters { itemDefaults = &lsproto.CompletionItemDefaults{ CommitCharacters: defaultCommitCharacters, } @@ -4343,7 +4334,7 @@ func (l *LanguageService) setItemDefaults( Start: optionalReplacementSpan.Start, End: l.createLspPosition(position, file), } - if clientSupportsDefaultEditRange(clientOptions) { + if clientSupportsDefaultEditRange(ctx) { itemDefaults = core.OrElse(itemDefaults, &lsproto.CompletionItemDefaults{}) itemDefaults.EditRange = &lsproto.RangeOrEditRangeWithInsertReplace{ EditRangeWithInsertReplace: &lsproto.EditRangeWithInsertReplace{ @@ -4365,7 +4356,7 @@ func (l *LanguageService) setItemDefaults( item.InsertText = nil } } - } else if clientSupportsItemInsertReplace(clientOptions) { + } else if clientSupportsItemInsertReplace(ctx) { for _, item := range items { if item.TextEdit == nil { item.TextEdit = &lsproto.TextEditOrInsertReplaceEdit{ @@ -4384,7 +4375,7 @@ func (l *LanguageService) setItemDefaults( } func (l *LanguageService) specificKeywordCompletionInfo( - clientOptions *lsproto.CompletionClientCapabilities, + ctx context.Context, position int, file *ast.SourceFile, items []*lsproto.CompletionItem, @@ -4393,7 +4384,7 @@ func (l *LanguageService) specificKeywordCompletionInfo( ) *lsproto.CompletionList { defaultCommitCharacters := getDefaultCommitCharacters(isNewIdentifierLocation) itemDefaults := l.setItemDefaults( - clientOptions, + ctx, position, file, items, @@ -4408,10 +4399,10 @@ func (l *LanguageService) specificKeywordCompletionInfo( } func (l *LanguageService) getJsxClosingTagCompletion( + ctx context.Context, location *ast.Node, file *ast.SourceFile, position int, - clientOptions *lsproto.CompletionClientCapabilities, ) *lsproto.CompletionList { // We wanna walk up the tree till we find a JSX closing element. jsxClosingElement := ast.FindAncestorOrQuit(location, func(node *ast.Node) ast.FindAncestorResult { @@ -4449,6 +4440,7 @@ func (l *LanguageService) getJsxClosingTagCompletion( defaultCommitCharacters := getDefaultCommitCharacters(false /*isNewIdentifierLocation*/) item := l.createLSPCompletionItem( + ctx, fullClosingTag, /*name*/ "", /*insertText*/ "", /*filterText*/ @@ -4460,7 +4452,6 @@ func (l *LanguageService) getJsxClosingTagCompletion( nil, /*labelDetails*/ file, position, - clientOptions, true, /*isMemberCompletion*/ false, /*isSnippet*/ false, /*hasAction*/ @@ -4470,7 +4461,7 @@ func (l *LanguageService) getJsxClosingTagCompletion( ) items := []*lsproto.CompletionItem{item} itemDefaults := l.setItemDefaults( - clientOptions, + ctx, position, file, items, @@ -4486,6 +4477,7 @@ func (l *LanguageService) getJsxClosingTagCompletion( } func (l *LanguageService) createLSPCompletionItem( + ctx context.Context, name string, insertText string, filterText string, @@ -4497,7 +4489,6 @@ func (l *LanguageService) createLSPCompletionItem( labelDetails *lsproto.CompletionItemLabelDetails, file *ast.SourceFile, position int, - clientOptions *lsproto.CompletionClientCapabilities, isMemberCompletion bool, isSnippet bool, hasAction bool, @@ -4591,19 +4582,19 @@ func (l *LanguageService) createLSPCompletionItem( } func (l *LanguageService) getLabelCompletionsAtPosition( + ctx context.Context, node *ast.BreakOrContinueStatement, - clientOptions *lsproto.CompletionClientCapabilities, file *ast.SourceFile, position int, optionalReplacementSpan *lsproto.Range, ) *lsproto.CompletionList { - items := l.getLabelStatementCompletions(node, clientOptions, file, position) + items := l.getLabelStatementCompletions(ctx, node, file, position) if len(items) == 0 { return nil } defaultCommitCharacters := getDefaultCommitCharacters(false /*isNewIdentifierLocation*/) itemDefaults := l.setItemDefaults( - clientOptions, + ctx, position, file, items, @@ -4618,8 +4609,8 @@ func (l *LanguageService) getLabelCompletionsAtPosition( } func (l *LanguageService) getLabelStatementCompletions( + ctx context.Context, node *ast.BreakOrContinueStatement, - clientOptions *lsproto.CompletionClientCapabilities, file *ast.SourceFile, position int, ) []*lsproto.CompletionItem { @@ -4635,6 +4626,7 @@ func (l *LanguageService) getLabelStatementCompletions( if !uniques.Has(name) { uniques.Add(name) items = append(items, l.createLSPCompletionItem( + ctx, name, "", /*insertText*/ "", /*filterText*/ @@ -4646,7 +4638,6 @@ func (l *LanguageService) getLabelStatementCompletions( nil, /*labelDetails*/ file, position, - clientOptions, false, /*isMemberCompletion*/ false, /*isSnippet*/ false, /*hasAction*/ @@ -4886,38 +4877,28 @@ func isInJsxText(contextToken *ast.Node, location *ast.Node) bool { return false } -func hasCompletionItem(clientOptions *lsproto.CompletionClientCapabilities) bool { - return clientOptions != nil && clientOptions.CompletionItem != nil -} - -func clientSupportsItemLabelDetails(clientOptions *lsproto.CompletionClientCapabilities) bool { - return hasCompletionItem(clientOptions) && ptrIsTrue(clientOptions.CompletionItem.LabelDetailsSupport) +func clientSupportsItemLabelDetails(ctx context.Context) bool { + return lsproto.GetClientCapabilities(ctx).TextDocument.Completion.CompletionItem.LabelDetailsSupport } -func clientSupportsItemSnippet(clientOptions *lsproto.CompletionClientCapabilities) bool { - return hasCompletionItem(clientOptions) && ptrIsTrue(clientOptions.CompletionItem.SnippetSupport) +func clientSupportsItemSnippet(ctx context.Context) bool { + return lsproto.GetClientCapabilities(ctx).TextDocument.Completion.CompletionItem.SnippetSupport } -func clientSupportsItemCommitCharacters(clientOptions *lsproto.CompletionClientCapabilities) bool { - return hasCompletionItem(clientOptions) && ptrIsTrue(clientOptions.CompletionItem.CommitCharactersSupport) +func clientSupportsItemCommitCharacters(ctx context.Context) bool { + return lsproto.GetClientCapabilities(ctx).TextDocument.Completion.CompletionItem.CommitCharactersSupport } -func clientSupportsItemInsertReplace(clientOptions *lsproto.CompletionClientCapabilities) bool { - return hasCompletionItem(clientOptions) && ptrIsTrue(clientOptions.CompletionItem.InsertReplaceSupport) +func clientSupportsItemInsertReplace(ctx context.Context) bool { + return lsproto.GetClientCapabilities(ctx).TextDocument.Completion.CompletionItem.InsertReplaceSupport } -func clientSupportsDefaultCommitCharacters(clientOptions *lsproto.CompletionClientCapabilities) bool { - if clientOptions == nil || clientOptions.CompletionList == nil || clientOptions.CompletionList.ItemDefaults == nil { - return false - } - return slices.Contains(*clientOptions.CompletionList.ItemDefaults, "commitCharacters") +func clientSupportsDefaultCommitCharacters(ctx context.Context) bool { + return slices.Contains(lsproto.GetClientCapabilities(ctx).TextDocument.Completion.CompletionList.ItemDefaults, "commitCharacters") } -func clientSupportsDefaultEditRange(clientOptions *lsproto.CompletionClientCapabilities) bool { - if clientOptions == nil || clientOptions.CompletionList == nil || clientOptions.CompletionList.ItemDefaults == nil { - return false - } - return slices.Contains(*clientOptions.CompletionList.ItemDefaults, "editRange") +func clientSupportsDefaultEditRange(ctx context.Context) bool { + return slices.Contains(lsproto.GetClientCapabilities(ctx).TextDocument.Completion.CompletionList.ItemDefaults, "editRange") } type argumentInfoForCompletions struct { @@ -5002,7 +4983,6 @@ func (l *LanguageService) ResolveCompletionItem( ctx context.Context, item *lsproto.CompletionItem, data *CompletionItemData, - clientOptions *lsproto.CompletionClientCapabilities, ) (*lsproto.CompletionItem, error) { if data == nil { return nil, errors.New("completion item data is nil") @@ -5013,7 +4993,7 @@ func (l *LanguageService) ResolveCompletionItem( return nil, fmt.Errorf("file not found: %s", data.FileName) } - return l.getCompletionItemDetails(ctx, program, data.Position, file, item, data, clientOptions), nil + return l.getCompletionItemDetails(ctx, program, data.Position, file, item, data), nil } func GetCompletionItemData(item *lsproto.CompletionItem) (*CompletionItemData, error) { @@ -5028,17 +5008,8 @@ func GetCompletionItemData(item *lsproto.CompletionItem) (*CompletionItemData, e return &itemData, nil } -func getCompletionDocumentationFormat(clientOptions *lsproto.CompletionClientCapabilities) lsproto.MarkupKind { - if clientOptions == nil || clientOptions.CompletionItem == nil || clientOptions.CompletionItem.DocumentationFormat == nil { - // Default to plaintext if no preference specified - return lsproto.MarkupKindPlainText - } - formats := *clientOptions.CompletionItem.DocumentationFormat - if len(formats) == 0 { - return lsproto.MarkupKindPlainText - } - // Return the first (most preferred) format - return formats[0] +func getCompletionDocumentationFormat(ctx context.Context) lsproto.MarkupKind { + return lsproto.PreferredMarkupKind(lsproto.GetClientCapabilities(ctx).TextDocument.Completion.CompletionItem.DocumentationFormat) } func (l *LanguageService) getCompletionItemDetails( @@ -5047,19 +5018,18 @@ func (l *LanguageService) getCompletionItemDetails( position int, file *ast.SourceFile, item *lsproto.CompletionItem, - itemData *CompletionItemData, - clientOptions *lsproto.CompletionClientCapabilities, + data *CompletionItemData, ) *lsproto.CompletionItem { checker, done := program.GetTypeCheckerForFile(ctx, file) defer done() - docFormat := getCompletionDocumentationFormat(clientOptions) + docFormat := getCompletionDocumentationFormat(ctx) contextToken, previousToken := getRelevantTokens(position, file) if IsInString(file, position, previousToken) { return l.getStringLiteralCompletionDetails( ctx, checker, item, - itemData.Name, + data.Name, file, position, contextToken, @@ -5073,8 +5043,7 @@ func (l *LanguageService) getCompletionItemDetails( checker, file, position, - itemData, - clientOptions, + data, ) preferences := l.UserPreferences() @@ -5083,16 +5052,16 @@ func (l *LanguageService) getCompletionItemDetails( request := *symbolCompletion.request switch request := request.(type) { case *completionDataJSDocTagName: - return createSimpleDetails(item, itemData.Name, docFormat) + return createSimpleDetails(item, data.Name, docFormat) case *completionDataJSDocTag: - return createSimpleDetails(item, itemData.Name, docFormat) + return createSimpleDetails(item, data.Name, docFormat) case *completionDataJSDocParameterName: - return createSimpleDetails(item, itemData.Name, docFormat) + return createSimpleDetails(item, data.Name, docFormat) case *completionDataKeyword: if core.Some(request.keywordCompletions, func(c *lsproto.CompletionItem) bool { - return c.Label == itemData.Name + return c.Label == data.Name }) { - return createSimpleDetails(item, itemData.Name, docFormat) + return createSimpleDetails(item, data.Name, docFormat) } return item default: @@ -5100,7 +5069,7 @@ func (l *LanguageService) getCompletionItemDetails( } case symbolCompletion.symbol != nil: symbolDetails := symbolCompletion.symbol - actions := l.getCompletionItemActions(ctx, checker, file, position, itemData, symbolDetails) + actions := l.getCompletionItemActions(ctx, checker, file, position, data, symbolDetails) return l.createCompletionDetailsForSymbol( item, symbolDetails.symbol, @@ -5118,9 +5087,9 @@ func (l *LanguageService) getCompletionItemDetails( default: // Didn't find a symbol with this name. See if we can find a keyword instead. if core.Some(allKeywordCompletions(), func(c *lsproto.CompletionItem) bool { - return c.Label == itemData.Name + return c.Label == data.Name }) { - return createSimpleDetails(item, itemData.Name, docFormat) + return createSimpleDetails(item, data.Name, docFormat) } return item } @@ -5149,7 +5118,6 @@ func (l *LanguageService) getSymbolCompletionFromItemData( file *ast.SourceFile, position int, itemData *CompletionItemData, - clientOptions *lsproto.CompletionClientCapabilities, ) detailsData { if itemData.Source == SourceSwitchCases { return detailsData{ @@ -5601,14 +5569,14 @@ func isTagWithTypeExpression(tag *ast.JSDocTag) bool { } func (l *LanguageService) jsDocCompletionInfo( - clientOptions *lsproto.CompletionClientCapabilities, + ctx context.Context, position int, file *ast.SourceFile, items []*lsproto.CompletionItem, ) *lsproto.CompletionList { defaultCommitCharacters := getDefaultCommitCharacters(false /*isNewIdentifierLocation*/) itemDefaults := l.setItemDefaults( - clientOptions, + ctx, position, file, items, @@ -5744,7 +5712,7 @@ func getJSDocTagCompletions() []*lsproto.CompletionItem { } func getJSDocParameterCompletions( - clientOptions *lsproto.CompletionClientCapabilities, + ctx context.Context, file *ast.SourceFile, position int, typeChecker *checker.Checker, diff --git a/pkg/ls/definition.go b/pkg/ls/definition.go index d0917dc9..bd996c44 100644 --- a/pkg/ls/definition.go +++ b/pkg/ls/definition.go @@ -17,8 +17,10 @@ func (l *LanguageService) ProvideDefinition( ctx context.Context, documentURI lsproto.DocumentUri, position lsproto.Position, - clientSupportsLink bool, ) (lsproto.DefinitionResponse, error) { + caps := lsproto.GetClientCapabilities(ctx) + clientSupportsLink := caps.TextDocument.Definition.LinkSupport + program, file := l.getProgramAndFile(documentURI) node := astnav.GetTouchingPropertyName(file, int(l.converters.LineAndCharacterToPosition(file, position))) if node.Kind == ast.KindSourceFile { @@ -68,8 +70,10 @@ func (l *LanguageService) ProvideTypeDefinition( ctx context.Context, documentURI lsproto.DocumentUri, position lsproto.Position, - clientSupportsLink bool, -) (lsproto.DefinitionResponse, error) { +) (lsproto.TypeDefinitionResponse, error) { + caps := lsproto.GetClientCapabilities(ctx) + clientSupportsLink := caps.TextDocument.TypeDefinition.LinkSupport + program, file := l.getProgramAndFile(documentURI) node := astnav.GetTouchingPropertyName(file, int(l.converters.LineAndCharacterToPosition(file, position))) if node.Kind == ast.KindSourceFile { @@ -279,8 +283,3 @@ func getDeclarationsFromType(t *checker.Type) []*ast.Node { } return result } - -func clientSupportsLink(clientCapabilities *lsproto.DefinitionClientCapabilities) bool { - return clientCapabilities != nil && - ptrIsTrue(clientCapabilities.LinkSupport) -} diff --git a/pkg/ls/diagnostics.go b/pkg/ls/diagnostics.go index e14243f8..1c4dbbc1 100644 --- a/pkg/ls/diagnostics.go +++ b/pkg/ls/diagnostics.go @@ -12,7 +12,7 @@ import ( "github.com/buke/typescript-go-internal/pkg/lsp/lsproto" ) -func (l *LanguageService) ProvideDiagnostics(ctx context.Context, uri lsproto.DocumentUri, clientOptions *lsproto.DiagnosticClientCapabilities) (lsproto.DocumentDiagnosticResponse, error) { +func (l *LanguageService) ProvideDiagnostics(ctx context.Context, uri lsproto.DocumentUri) (lsproto.DocumentDiagnosticResponse, error) { program, file := l.getProgramAndFile(uri) diagnostics := make([][]*ast.Diagnostic, 0, 4) @@ -28,12 +28,12 @@ func (l *LanguageService) ProvideDiagnostics(ctx context.Context, uri lsproto.Do return lsproto.RelatedFullDocumentDiagnosticReportOrUnchangedDocumentDiagnosticReport{ FullDocumentDiagnosticReport: &lsproto.RelatedFullDocumentDiagnosticReport{ - Items: l.toLSPDiagnostics(clientOptions, diagnostics...), + Items: l.toLSPDiagnostics(ctx, diagnostics...), }, }, nil } -func (l *LanguageService) toLSPDiagnostics(clientOptions *lsproto.DiagnosticClientCapabilities, diagnostics ...[]*ast.Diagnostic) []*lsproto.Diagnostic { +func (l *LanguageService) toLSPDiagnostics(ctx context.Context, diagnostics ...[]*ast.Diagnostic) []*lsproto.Diagnostic { size := 0 for _, diagSlice := range diagnostics { size += len(diagSlice) @@ -41,13 +41,14 @@ func (l *LanguageService) toLSPDiagnostics(clientOptions *lsproto.DiagnosticClie lspDiagnostics := make([]*lsproto.Diagnostic, 0, size) for _, diagSlice := range diagnostics { for _, diag := range diagSlice { - lspDiagnostics = append(lspDiagnostics, l.toLSPDiagnostic(clientOptions, diag)) + lspDiagnostics = append(lspDiagnostics, l.toLSPDiagnostic(ctx, diag)) } } return lspDiagnostics } -func (l *LanguageService) toLSPDiagnostic(clientOptions *lsproto.DiagnosticClientCapabilities, diagnostic *ast.Diagnostic) *lsproto.Diagnostic { +func (l *LanguageService) toLSPDiagnostic(ctx context.Context, diagnostic *ast.Diagnostic) *lsproto.Diagnostic { + clientOptions := lsproto.GetClientCapabilities(ctx).TextDocument.Diagnostic var severity lsproto.DiagnosticSeverity switch diagnostic.Category() { case diagnostics.CategorySuggestion: @@ -61,7 +62,7 @@ func (l *LanguageService) toLSPDiagnostic(clientOptions *lsproto.DiagnosticClien } var relatedInformation []*lsproto.DiagnosticRelatedInformation - if clientOptions != nil && ptrIsTrue(clientOptions.RelatedInformation) { + if clientOptions.RelatedInformation { relatedInformation = make([]*lsproto.DiagnosticRelatedInformation, 0, len(diagnostic.RelatedInformation())) for _, related := range diagnostic.RelatedInformation() { relatedInformation = append(relatedInformation, &lsproto.DiagnosticRelatedInformation{ @@ -75,7 +76,7 @@ func (l *LanguageService) toLSPDiagnostic(clientOptions *lsproto.DiagnosticClien } var tags []lsproto.DiagnosticTag - if clientOptions != nil && clientOptions.TagSupport != nil && (diagnostic.ReportsUnnecessary() || diagnostic.ReportsDeprecated()) { + if len(clientOptions.TagSupport.ValueSet) > 0 && (diagnostic.ReportsUnnecessary() || diagnostic.ReportsDeprecated()) { tags = make([]lsproto.DiagnosticTag, 0, 2) if diagnostic.ReportsUnnecessary() && slices.Contains(clientOptions.TagSupport.ValueSet, lsproto.DiagnosticTagUnnecessary) { tags = append(tags, lsproto.DiagnosticTagUnnecessary) @@ -103,7 +104,7 @@ func messageChainToString(diagnostic *ast.Diagnostic) string { return diagnostic.Message() } var b strings.Builder - diagnosticwriter.WriteFlattenedDiagnosticMessage(&b, diagnostic, "\n") + diagnosticwriter.WriteFlattenedASTDiagnosticMessage(&b, diagnostic, "\n") return b.String() } diff --git a/pkg/ls/findallreferences.go b/pkg/ls/findallreferences.go index f9281ad3..e2f4e187 100644 --- a/pkg/ls/findallreferences.go +++ b/pkg/ls/findallreferences.go @@ -430,7 +430,7 @@ func (l *LanguageService) ProvideReferences(ctx context.Context, params *lsproto return lsproto.LocationsOrNull{Locations: &locations}, nil } -func (l *LanguageService) ProvideImplementations(ctx context.Context, params *lsproto.ImplementationParams, clientSupportsLink bool) (lsproto.ImplementationResponse, error) { +func (l *LanguageService) ProvideImplementations(ctx context.Context, params *lsproto.ImplementationParams) (lsproto.ImplementationResponse, error) { program, sourceFile := l.getProgramAndFile(params.TextDocument.Uri) position := int(l.converters.LineAndCharacterToPosition(sourceFile, params.Position)) node := astnav.GetTouchingPropertyName(sourceFile, position) @@ -452,7 +452,7 @@ func (l *LanguageService) ProvideImplementations(ctx context.Context, params *ls } } - if clientSupportsLink { + if lsproto.GetClientCapabilities(ctx).TextDocument.Implementation.LinkSupport { links := l.convertEntriesToLocationLinks(entries) return lsproto.LocationOrLocationsOrDefinitionLinksOrNull{DefinitionLinks: &links}, nil } @@ -753,7 +753,7 @@ func (l *LanguageService) getReferencedSymbolsForModuleIfDeclaredBySourceFile(ct exportEquals := symbol.Exports[ast.InternalSymbolNameExportEquals] // If exportEquals != nil, we're about to add references to `import("mod")` anyway, so don't double-count them. moduleReferences := l.getReferencedSymbolsForModule(ctx, program, symbol, exportEquals != nil, sourceFiles, sourceFilesSet) - if exportEquals == nil || !sourceFilesSet.Has(moduleSourceFileName) { + if exportEquals == nil || exportEquals.Flags&ast.SymbolFlagsAlias == 0 || !sourceFilesSet.Has(moduleSourceFileName) { return moduleReferences } symbol, _ = checker.ResolveAlias(exportEquals) diff --git a/pkg/ls/hover.go b/pkg/ls/hover.go index b2416399..e71e8e94 100644 --- a/pkg/ls/hover.go +++ b/pkg/ls/hover.go @@ -18,7 +18,10 @@ const ( typeFormatFlags = checker.TypeFormatFlagsUseAliasDefinedOutsideCurrentScope ) -func (l *LanguageService) ProvideHover(ctx context.Context, documentURI lsproto.DocumentUri, position lsproto.Position, contentFormat lsproto.MarkupKind) (lsproto.HoverResponse, error) { +func (l *LanguageService) ProvideHover(ctx context.Context, documentURI lsproto.DocumentUri, position lsproto.Position) (lsproto.HoverResponse, error) { + caps := lsproto.GetClientCapabilities(ctx) + contentFormat := lsproto.PreferredMarkupKind(caps.TextDocument.Hover.ContentFormat) + program, file := l.getProgramAndFile(documentURI) node := astnav.GetTouchingPropertyName(file, int(l.converters.LineAndCharacterToPosition(file, position))) if node.Kind == ast.KindSourceFile { @@ -69,7 +72,7 @@ func (l *LanguageService) getDocumentationFromDeclaration(c *checker.Checker, de } isMarkdown := contentFormat == lsproto.MarkupKindMarkdown var b strings.Builder - if jsdoc := getJSDocOrTag(declaration); jsdoc != nil && !containsTypedefTag(jsdoc) { + if jsdoc := getJSDocOrTag(c, declaration); jsdoc != nil && !containsTypedefTag(jsdoc) { l.writeComments(&b, c, jsdoc.Comments(), isMarkdown) if jsdoc.Kind == ast.KindJSDoc { if tags := jsdoc.AsJSDoc().Tags; tags != nil { @@ -140,14 +143,6 @@ func getQuickInfoAndDeclarationAtLocation(c *checker.Checker, symbol *ast.Symbol return "", nil } declaration := symbol.ValueDeclaration - if symbol.Flags&ast.SymbolFlagsClass != 0 && inConstructorContext(node) { - if s := symbol.Members[ast.InternalSymbolNameConstructor]; s != nil { - symbol = s - declaration = core.Find(symbol.Declarations, func(d *ast.Node) bool { - return ast.IsConstructorDeclaration(d) || ast.IsConstructSignatureDeclaration(d) - }) - } - } flags := symbol.Flags if flags&ast.SymbolFlagsProperty != 0 && declaration != nil && ast.IsMethodDeclaration(declaration) { flags = ast.SymbolFlagsMethod @@ -186,7 +181,11 @@ func getQuickInfoAndDeclarationAtLocation(c *checker.Checker, symbol *ast.Symbol } } } - b.WriteString(c.SymbolToStringEx(symbol, container, ast.SymbolFlagsNone, symbolFormatFlags)) + if symbol.Name == ast.InternalSymbolNameExportEquals && symbol.Parent != nil && symbol.Parent.Flags&ast.SymbolFlagsModule != 0 { + b.WriteString("exports") + } else { + b.WriteString(c.SymbolToStringEx(symbol, container, ast.SymbolFlagsNone, symbolFormatFlags)) + } b.WriteString(": ") if callNode := getCallOrNewExpression(node); callNode != nil { b.WriteString(c.SignatureToStringEx(c.GetResolvedSignature(callNode), container, typeFormatFlags|checker.TypeFormatFlagsWriteCallStyleSignature|checker.TypeFormatFlagsWriteTypeArgumentsOfSignature|checker.TypeFormatFlagsWriteArrowStyleSignature)) @@ -202,30 +201,43 @@ func getQuickInfoAndDeclarationAtLocation(c *checker.Checker, symbol *ast.Symbol b.WriteString(t.AsLiteralType().String()) } case flags&(ast.SymbolFlagsFunction|ast.SymbolFlagsMethod) != 0: - signatures := getSignaturesAtLocation(c, symbol, checker.SignatureKindCall, node) - if len(signatures) == 1 { - if d := signatures[0].Declaration(); d != nil && d.Flags&ast.NodeFlagsJSDoc == 0 { - declaration = d - } - } prefix := core.IfElse(flags&ast.SymbolFlagsMethod != 0, "(method) ", "function ") - writeSignatures(&b, c, signatures, container, prefix, symbol) - case flags&ast.SymbolFlagsConstructor != 0: - signatures := getSignaturesAtLocation(c, symbol.Parent, checker.SignatureKindConstruct, node) - if len(signatures) == 1 { - if d := signatures[0].Declaration(); d != nil && d.Flags&ast.NodeFlagsJSDoc == 0 { - declaration = d + if ast.IsIdentifier(node) && ast.IsFunctionLikeDeclaration(node.Parent) && node.Parent.Name() == node { + declaration = node.Parent + signatures := []*checker.Signature{c.GetSignatureFromDeclaration(declaration)} + writeSignatures(&b, c, signatures, container, prefix, symbol) + } else { + signatures := getSignaturesAtLocation(c, symbol, checker.SignatureKindCall, node) + if len(signatures) == 1 { + if d := signatures[0].Declaration(); d != nil && d.Flags&ast.NodeFlagsJSDoc == 0 { + declaration = d + } } + writeSignatures(&b, c, signatures, container, prefix, symbol) } - writeSignatures(&b, c, signatures, container, "constructor ", symbol.Parent) case flags&(ast.SymbolFlagsClass|ast.SymbolFlagsInterface) != 0: if node.Kind == ast.KindThisKeyword || ast.IsThisInTypeQuery(node) { b.WriteString("this") + } else if node.Kind == ast.KindConstructorKeyword && (ast.IsConstructorDeclaration(node.Parent) || ast.IsConstructSignatureDeclaration(node.Parent)) { + declaration = node.Parent + signatures := []*checker.Signature{c.GetSignatureFromDeclaration(declaration)} + writeSignatures(&b, c, signatures, container, "constructor ", symbol) } else { - b.WriteString(core.IfElse(flags&ast.SymbolFlagsClass != 0, "class ", "interface ")) - b.WriteString(c.SymbolToStringEx(symbol, container, ast.SymbolFlagsNone, symbolFormatFlags)) - params := c.GetDeclaredTypeOfSymbol(symbol).AsInterfaceType().LocalTypeParameters() - writeTypeParams(&b, c, params) + var signatures []*checker.Signature + if flags&ast.SymbolFlagsClass != 0 && getCallOrNewExpression(node) != nil { + signatures = getSignaturesAtLocation(c, symbol, checker.SignatureKindConstruct, node) + } + if len(signatures) == 1 { + if d := signatures[0].Declaration(); d != nil && d.Flags&ast.NodeFlagsJSDoc == 0 { + declaration = d + } + writeSignatures(&b, c, signatures, container, "constructor ", symbol) + } else { + b.WriteString(core.IfElse(flags&ast.SymbolFlagsClass != 0, "class ", "interface ")) + b.WriteString(c.SymbolToStringEx(symbol, container, ast.SymbolFlagsNone, symbolFormatFlags)) + params := c.GetDeclaredTypeOfSymbol(symbol).AsInterfaceType().LocalTypeParameters() + writeTypeParams(&b, c, params) + } } if flags&ast.SymbolFlagsInterface != 0 { declaration = core.Find(symbol.Declarations, ast.IsInterfaceDeclaration) @@ -374,7 +386,7 @@ func containsTypedefTag(jsdoc *ast.Node) bool { if jsdoc.Kind == ast.KindJSDoc { if tags := jsdoc.AsJSDoc().Tags; tags != nil { for _, tag := range tags.Nodes { - if tag.Kind == ast.KindJSDocTypedefTag { + if tag.Kind == ast.KindJSDocTypedefTag || tag.Kind == ast.KindJSDocCallbackTag { return true } } @@ -391,26 +403,40 @@ func getJSDoc(node *ast.Node) *ast.Node { return core.LastOrNil(node.JSDoc(nil)) } -func getJSDocOrTag(node *ast.Node) *ast.Node { +func getJSDocOrTag(c *checker.Checker, node *ast.Node) *ast.Node { if jsdoc := getJSDoc(node); jsdoc != nil { return jsdoc } switch { case ast.IsParameter(node): - return getMatchingJSDocTag(node.Parent, node.Name().Text(), isMatchingParameterTag) + return getMatchingJSDocTag(c, node.Parent, node.Name().Text(), isMatchingParameterTag) case ast.IsTypeParameterDeclaration(node): - return getMatchingJSDocTag(node.Parent, node.Name().Text(), isMatchingTemplateTag) + return getMatchingJSDocTag(c, node.Parent, node.Name().Text(), isMatchingTemplateTag) case ast.IsVariableDeclaration(node) && ast.IsVariableDeclarationList(node.Parent) && core.FirstOrNil(node.Parent.AsVariableDeclarationList().Declarations.Nodes) == node: - return getJSDocOrTag(node.Parent.Parent) + return getJSDocOrTag(c, node.Parent.Parent) case (ast.IsFunctionExpressionOrArrowFunction(node) || ast.IsClassExpression(node)) && (ast.IsVariableDeclaration(node.Parent) || ast.IsPropertyDeclaration(node.Parent) || ast.IsPropertyAssignment(node.Parent)) && node.Parent.Initializer() == node: - return getJSDocOrTag(node.Parent) + return getJSDocOrTag(c, node.Parent) + } + if symbol := node.Symbol(); symbol != nil && node.Parent != nil && ast.IsClassOrInterfaceLike(node.Parent) { + isStatic := ast.HasStaticModifier(node) + for _, baseType := range c.GetBaseTypes(c.GetDeclaredTypeOfSymbol(node.Parent.Symbol())) { + t := baseType + if isStatic { + t = c.GetTypeOfSymbol(baseType.Symbol()) + } + if prop := c.GetPropertyOfType(t, symbol.Name); prop != nil && prop.ValueDeclaration != nil { + if jsDoc := getJSDocOrTag(c, prop.ValueDeclaration); jsDoc != nil { + return jsDoc + } + } + } } return nil } -func getMatchingJSDocTag(node *ast.Node, name string, match func(*ast.Node, string) bool) *ast.Node { - if jsdoc := getJSDocOrTag(node); jsdoc != nil && jsdoc.Kind == ast.KindJSDoc { +func getMatchingJSDocTag(c *checker.Checker, node *ast.Node, name string, match func(*ast.Node, string) bool) *ast.Node { + if jsdoc := getJSDocOrTag(c, node); jsdoc != nil && jsdoc.Kind == ast.KindJSDoc { if tags := jsdoc.AsJSDoc().Tags; tags != nil { for _, tag := range tags.Nodes { if match(tag, name) { diff --git a/pkg/ls/lsutil/utilities.go b/pkg/ls/lsutil/utilities.go index 7b4833d3..b9eefb19 100644 --- a/pkg/ls/lsutil/utilities.go +++ b/pkg/ls/lsutil/utilities.go @@ -37,7 +37,7 @@ func ProbablyUsesSemicolons(file *ast.SourceFile) bool { astnav.GetStartOfNode(lastToken, file, false /*includeJSDoc*/)) nextTokenLine := scanner.GetECMALineOfPosition( file, - scanner.GetRangeOfTokenAtPosition(file, lastToken.End()).Pos()) + scanner.SkipTrivia(file.Text(), lastToken.End())) // Avoid counting missing semicolon in single-line objects: // `function f(p: { x: string /*no semicolon here is insignificant*/ }) {` if lastTokenLine != nextTokenLine { diff --git a/pkg/ls/signaturehelp.go b/pkg/ls/signaturehelp.go index 2ad5a0fd..07a7ab33 100644 --- a/pkg/ls/signaturehelp.go +++ b/pkg/ls/signaturehelp.go @@ -43,8 +43,6 @@ func (l *LanguageService) ProvideSignatureHelp( documentURI lsproto.DocumentUri, position lsproto.Position, context *lsproto.SignatureHelpContext, - clientOptions *lsproto.SignatureHelpClientCapabilities, - docFormat lsproto.MarkupKind, ) (lsproto.SignatureHelpResponse, error) { program, sourceFile := l.getProgramAndFile(documentURI) items := l.GetSignatureHelpItems( @@ -52,9 +50,7 @@ func (l *LanguageService) ProvideSignatureHelp( int(l.converters.LineAndCharacterToPosition(sourceFile, position)), program, sourceFile, - context, - clientOptions, - docFormat) + context) return lsproto.SignatureHelpOrNull{SignatureHelp: items}, nil } @@ -64,8 +60,6 @@ func (l *LanguageService) GetSignatureHelpItems( program *compiler.Program, sourceFile *ast.SourceFile, context *lsproto.SignatureHelpContext, - clientOptions *lsproto.SignatureHelpClientCapabilities, - docFormat lsproto.MarkupKind, ) *lsproto.SignatureHelp { typeChecker, done := program.GetTypeCheckerForFile(ctx, sourceFile) defer done() @@ -143,12 +137,12 @@ func (l *LanguageService) GetSignatureHelpItems( // return typeChecker.runWithCancellationToken(cancellationToken, typeChecker => if candidateInfo.candidateInfo != nil { - return l.createSignatureHelpItems(candidateInfo.candidateInfo.candidates, candidateInfo.candidateInfo.resolvedSignature, argumentInfo, sourceFile, typeChecker, onlyUseSyntacticOwners, clientOptions, docFormat) + return l.createSignatureHelpItems(ctx, candidateInfo.candidateInfo.candidates, candidateInfo.candidateInfo.resolvedSignature, argumentInfo, sourceFile, typeChecker, onlyUseSyntacticOwners) } - return createTypeHelpItems(candidateInfo.typeInfo, argumentInfo, sourceFile, clientOptions, typeChecker) + return createTypeHelpItems(candidateInfo.typeInfo, argumentInfo, sourceFile, typeChecker) } -func createTypeHelpItems(symbol *ast.Symbol, argumentInfo *argumentListInfo, sourceFile *ast.SourceFile, clientOptions *lsproto.SignatureHelpClientCapabilities, c *checker.Checker) *lsproto.SignatureHelp { +func createTypeHelpItems(symbol *ast.Symbol, argumentInfo *argumentListInfo, sourceFile *ast.SourceFile, c *checker.Checker) *lsproto.SignatureHelp { typeParameters := c.GetLocalTypeParametersOfClassOrInterfaceOrTypeAlias(symbol) if typeParameters == nil { return nil @@ -205,7 +199,10 @@ func getTypeHelpItem(symbol *ast.Symbol, typeParameter []*checker.Type, enclosin } } -func (l *LanguageService) createSignatureHelpItems(candidates []*checker.Signature, resolvedSignature *checker.Signature, argumentInfo *argumentListInfo, sourceFile *ast.SourceFile, c *checker.Checker, useFullPrefix bool, clientOptions *lsproto.SignatureHelpClientCapabilities, docFormat lsproto.MarkupKind) *lsproto.SignatureHelp { +func (l *LanguageService) createSignatureHelpItems(ctx context.Context, candidates []*checker.Signature, resolvedSignature *checker.Signature, argumentInfo *argumentListInfo, sourceFile *ast.SourceFile, c *checker.Checker, useFullPrefix bool) *lsproto.SignatureHelp { + caps := lsproto.GetClientCapabilities(ctx) + docFormat := lsproto.PreferredMarkupKind(caps.TextDocument.SignatureHelp.SignatureInformation.DocumentationFormat) + enclosingDeclaration := getEnclosingDeclarationFromInvocation(argumentInfo.invocation) if enclosingDeclaration == nil { return nil diff --git a/pkg/ls/string_completions.go b/pkg/ls/string_completions.go index 7e6c6b0b..9cdb77b0 100644 --- a/pkg/ls/string_completions.go +++ b/pkg/ls/string_completions.go @@ -46,7 +46,6 @@ func (l *LanguageService) getStringLiteralCompletions( position int, contextToken *ast.Node, compilerOptions *core.CompilerOptions, - clientOptions *lsproto.CompletionClientCapabilities, ) *lsproto.CompletionList { // !!! reference comment if IsInString(file, position, contextToken) { @@ -65,7 +64,6 @@ func (l *LanguageService) getStringLiteralCompletions( file, position, compilerOptions, - clientOptions, ) } return nil @@ -78,7 +76,6 @@ func (l *LanguageService) convertStringLiteralCompletions( file *ast.SourceFile, position int, options *core.CompilerOptions, - clientOptions *lsproto.CompletionClientCapabilities, ) *lsproto.CompletionList { if completion == nil { return nil @@ -88,7 +85,7 @@ func (l *LanguageService) convertStringLiteralCompletions( switch { case completion.fromPaths != nil: completion := completion.fromPaths - return l.convertPathCompletions(completion, file, position, clientOptions) + return l.convertPathCompletions(ctx, completion, file, position) case completion.fromProperties != nil: completion := completion.fromProperties data := &completionDataData{ @@ -105,11 +102,10 @@ func (l *LanguageService) convertStringLiteralCompletions( position, file, options, - clientOptions, ) defaultCommitCharacters := getDefaultCommitCharacters(completion.hasIndexSignature) itemDefaults := l.setItemDefaults( - clientOptions, + ctx, position, file, items, @@ -134,6 +130,7 @@ func (l *LanguageService) convertStringLiteralCompletions( items := core.Map(completion.types, func(t *checker.StringLiteralType) *lsproto.CompletionItem { name := printer.EscapeString(t.AsLiteralType().Value().(string), quoteChar) return l.createLSPCompletionItem( + ctx, name, "", /*insertText*/ "", /*filterText*/ @@ -145,7 +142,6 @@ func (l *LanguageService) convertStringLiteralCompletions( nil, /*labelDetails*/ file, position, - clientOptions, false, /*isMemberCompletion*/ false, /*isSnippet*/ false, /*hasAction*/ @@ -156,7 +152,7 @@ func (l *LanguageService) convertStringLiteralCompletions( }) defaultCommitCharacters := getDefaultCommitCharacters(completion.isNewIdentifier) itemDefaults := l.setItemDefaults( - clientOptions, + ctx, position, file, items, @@ -174,16 +170,17 @@ func (l *LanguageService) convertStringLiteralCompletions( } func (l *LanguageService) convertPathCompletions( + ctx context.Context, pathCompletions []*pathCompletion, file *ast.SourceFile, position int, - clientOptions *lsproto.CompletionClientCapabilities, ) *lsproto.CompletionList { isNewIdentifierLocation := true // The user may type in a path that doesn't yet exist, creating a "new identifier" with respect to the collection of identifiers the server is aware of. defaultCommitCharacters := getDefaultCommitCharacters(isNewIdentifierLocation) items := core.Map(pathCompletions, func(pathCompletion *pathCompletion) *lsproto.CompletionItem { replacementSpan := l.createLspRangeFromBounds(pathCompletion.textRange.Pos(), pathCompletion.textRange.End(), file) return l.createLSPCompletionItem( + ctx, pathCompletion.name, "", /*insertText*/ "", /*filterText*/ @@ -195,7 +192,6 @@ func (l *LanguageService) convertPathCompletions( nil, /*labelDetails*/ file, position, - clientOptions, false, /*isMemberCompletion*/ false, /*isSnippet*/ false, /*hasAction*/ @@ -205,7 +201,7 @@ func (l *LanguageService) convertPathCompletions( ) }) itemDefaults := l.setItemDefaults( - clientOptions, + ctx, position, file, items, diff --git a/pkg/ls/symbols.go b/pkg/ls/symbols.go index d2139b5c..afd5a853 100644 --- a/pkg/ls/symbols.go +++ b/pkg/ls/symbols.go @@ -18,9 +18,9 @@ import ( "github.com/buke/typescript-go-internal/pkg/stringutil" ) -func (l *LanguageService) ProvideDocumentSymbols(ctx context.Context, documentURI lsproto.DocumentUri, hierarchicalSupport bool) (lsproto.DocumentSymbolResponse, error) { +func (l *LanguageService) ProvideDocumentSymbols(ctx context.Context, documentURI lsproto.DocumentUri) (lsproto.DocumentSymbolResponse, error) { _, file := l.getProgramAndFile(documentURI) - if hierarchicalSupport { + if lsproto.GetClientCapabilities(ctx).TextDocument.DocumentSymbol.HierarchicalDocumentSymbolSupport { symbols := l.getDocumentSymbolsForChildren(ctx, file.AsNode()) return lsproto.SymbolInformationsOrDocumentSymbolsOrNull{DocumentSymbols: &symbols}, nil } diff --git a/pkg/ls/utilities.go b/pkg/ls/utilities.go index 3c21cfc6..72dbcdab 100644 --- a/pkg/ls/utilities.go +++ b/pkg/ls/utilities.go @@ -914,7 +914,7 @@ func getAdjustedLocation(node *ast.Node, forRename bool, sourceFile *ast.SourceF // export /**/type * from "[|module|]"; // export /**/type * as ... from "[|module|]"; if ast.IsExportDeclaration(parent) && parent.IsTypeOnly() { - if location := getAdjustedLocationForExportDeclaration(parent.Parent.AsExportDeclaration(), forRename); location != nil { + if location := getAdjustedLocationForExportDeclaration(parent.AsExportDeclaration(), forRename); location != nil { return location } } diff --git a/pkg/lsp/lsproto/_generate/generate.mts b/pkg/lsp/lsproto/_generate/generate.mts index 1828abd6..ed981a8c 100644 --- a/pkg/lsp/lsproto/_generate/generate.mts +++ b/pkg/lsp/lsproto/_generate/generate.mts @@ -10,6 +10,7 @@ import type { Notification, OrType, Property, + ReferenceType, Request, Structure, Type, @@ -471,6 +472,107 @@ function generateCode() { parts.push(s + "\n"); } + function generateResolvedStruct(structure: Structure, indent: string = "\t"): string[] { + const lines: string[] = []; + + for (const prop of structure.properties) { + const type = resolveType(prop.type); + + // For reference types that are structures, use a named resolved type + if (prop.type.kind === "reference") { + const refStructure = model.structures.find(s => s.name === type.name); + if (refStructure) { + // Use a named type for the resolved version + lines.push(`${indent}${titleCase(prop.name)} Resolved${type.name} \`json:"${prop.name},omitzero"\``); + continue; + } + } + + // For other types (primitives, enums, arrays, etc.), use the type directly (no pointer) + const goType = type.name; + lines.push(`${indent}${titleCase(prop.name)} ${goType} \`json:"${prop.name},omitzero"\``); + } + + return lines; + } + + function generateResolveConversion(structure: Structure, varName: string, indent: string): string[] { + const lines: string[] = []; + + for (const prop of structure.properties) { + const type = resolveType(prop.type); + const fieldName = titleCase(prop.name); + const accessPath = `${varName}.${fieldName}`; + + // For reference types that are structures, call the resolve function + if (prop.type.kind === "reference") { + const refStructure = model.structures.find(s => s.name === type.name); + if (refStructure) { + // Use lowercase (unexported) function name for helper functions + lines.push(`${indent}${fieldName}: resolve${type.name}(${accessPath}),`); + continue; + } + } + + // For other types, dereference if pointer + if (prop.optional || type.needsPointer) { + lines.push(`${indent}${fieldName}: derefOr(${accessPath}),`); + } + else { + lines.push(`${indent}${fieldName}: ${accessPath},`); + } + } + + return lines; + } + + function collectStructureDependencies(structure: Structure, visited = new Set()): Structure[] { + if (visited.has(structure.name)) { + return []; + } + visited.add(structure.name); + + const deps: Structure[] = []; + + for (const prop of structure.properties) { + if (prop.type.kind === "reference") { + const refStructure = model.structures.find(s => s.name === (prop.type as ReferenceType).name); + if (refStructure) { + deps.push(...collectStructureDependencies(refStructure, new Set(visited))); + deps.push(refStructure); + } + } + } + + return deps; + } + + function generateResolvedTypeAndHelper(structure: Structure, isMain: boolean = false): string[] { + const lines: string[] = []; + const typeName = `Resolved${structure.name}`; + // Main function is exported, helpers are unexported + const funcName = isMain ? `Resolve${structure.name}` : `resolve${structure.name}`; + + // Generate the resolved type + lines.push(`type ${typeName} struct {`); + lines.push(...generateResolvedStruct(structure, "\t")); + lines.push(`}`); + lines.push(``); + + // Generate the conversion function + lines.push(`func ${funcName}(v *${structure.name}) ${typeName} {`); + lines.push(`\tif v == nil {`); + lines.push(`\t\treturn ${typeName}{}`); + lines.push(`\t}`); + lines.push(`\treturn ${typeName}{`); + lines.push(...generateResolveConversion(structure, "v", "\t\t")); + lines.push(`\t}`); + lines.push(`}`); + lines.push(``); + + return lines; + } + // File header writeLine("// Code generated by generate.mts; DO NOT EDIT."); writeLine(""); @@ -682,6 +784,36 @@ function generateCode() { writeLine("}"); writeLine(""); + // Generate unmarshalResult function + writeLine("func unmarshalResult(method Method, data []byte) (any, error) {"); + writeLine("\tswitch method {"); + + // Only requests have results, not notifications + for (const request of model.requests) { + const methodName = methodNameIdentifier(request.method); + + if (!("result" in request)) { + continue; + } + + let responseTypeName: string; + if (request.typeName && request.typeName.endsWith("Request")) { + responseTypeName = request.typeName.replace(/Request$/, "Response"); + } + else { + responseTypeName = `${methodName}Response`; + } + + writeLine(`\tcase Method${methodName}:`); + writeLine(`\t\treturn unmarshalValue[${responseTypeName}](data)`); + } + + writeLine("\tdefault:"); + writeLine(`\t\treturn unmarshalAny(data)`); + writeLine("\t}"); + writeLine("}"); + writeLine(""); + writeLine("// Methods"); writeLine("const ("); for (const request of requestsAndNotifications) { @@ -877,6 +1009,40 @@ function generateCode() { writeLine(""); } + // Generate resolved capabilities + const clientCapsStructure = model.structures.find(s => s.name === "ClientCapabilities"); + if (clientCapsStructure) { + writeLine("// Helper function for dereferencing pointers with zero value fallback"); + writeLine("func derefOr[T any](v *T) T {"); + writeLine("\tif v != nil {"); + writeLine("\t\treturn *v"); + writeLine("\t}"); + writeLine("\tvar zero T"); + writeLine("\treturn zero"); + writeLine("}"); + writeLine(""); + + // Collect all dependent structures and generate their resolved types + const deps = collectStructureDependencies(clientCapsStructure); + const uniqueDeps = Array.from(new Map(deps.map(d => [d.name, d])).values()); + + for (const dep of uniqueDeps) { + const depLines = generateResolvedTypeAndHelper(dep, false); + for (const line of depLines) { + writeLine(line); + } + } + + // Generate the main ResolvedClientCapabilities type and function + writeLine("// ResolvedClientCapabilities is a version of ClientCapabilities where all nested"); + writeLine("// fields are values (not pointers), making it easier to access deeply nested capabilities."); + writeLine("// Use ResolveClientCapabilities to convert from ClientCapabilities."); + const mainLines = generateResolvedTypeAndHelper(clientCapsStructure, true); + for (const line of mainLines) { + writeLine(line); + } + } + return parts.join(""); } diff --git a/pkg/lsp/lsproto/jsonrpc.go b/pkg/lsp/lsproto/jsonrpc.go index d78894e8..19d75ac8 100644 --- a/pkg/lsp/lsproto/jsonrpc.go +++ b/pkg/lsp/lsproto/jsonrpc.go @@ -105,8 +105,10 @@ func (m *Message) UnmarshalJSON(data []byte) error { Method Method `json:"method"` ID *ID `json:"id,omitzero"` Params jsontext.Value `json:"params"` - Result any `json:"result,omitzero"` - Error *ResponseError `json:"error,omitzero"` + // We don't have a method in the response, so we have no idea what to decode. + // Store the raw text and let the caller decode it. + Result jsontext.Value `json:"result,omitzero"` + Error *ResponseError `json:"error,omitzero"` } if err := json.Unmarshal(data, &raw); err != nil { return fmt.Errorf("%w: %w", ErrInvalidRequest, err) @@ -114,10 +116,9 @@ func (m *Message) UnmarshalJSON(data []byte) error { if raw.ID != nil && raw.Method == "" { m.Kind = MessageKindResponse m.msg = &ResponseMessage{ - JSONRPC: raw.JSONRPC, - ID: raw.ID, - Result: raw.Result, - Error: raw.Error, + ID: raw.ID, + Result: raw.Result, + Error: raw.Error, } return nil } @@ -138,10 +139,9 @@ func (m *Message) UnmarshalJSON(data []byte) error { } m.msg = &RequestMessage{ - JSONRPC: raw.JSONRPC, - ID: raw.ID, - Method: raw.Method, - Params: params, + ID: raw.ID, + Method: raw.Method, + Params: params, } return nil @@ -151,14 +151,6 @@ func (m *Message) MarshalJSON() ([]byte, error) { return json.Marshal(m.msg) } -func NewNotificationMessage(method Method, params any) *RequestMessage { - return &RequestMessage{ - JSONRPC: JSONRPCVersion{}, - Method: method, - Params: params, - } -} - type RequestMessage struct { JSONRPC JSONRPCVersion `json:"jsonrpc"` ID *ID `json:"id,omitzero"` @@ -166,14 +158,6 @@ type RequestMessage struct { Params any `json:"params,omitzero"` } -func NewRequestMessage(method Method, id *ID, params any) *RequestMessage { - return &RequestMessage{ - ID: id, - Method: method, - Params: params, - } -} - func (r *RequestMessage) Message() *Message { return &Message{ Kind: MessageKindRequest, diff --git a/pkg/lsp/lsproto/lsp.go b/pkg/lsp/lsproto/lsp.go index 8569032d..9d897842 100644 --- a/pkg/lsp/lsproto/lsp.go +++ b/pkg/lsp/lsproto/lsp.go @@ -1,6 +1,7 @@ package lsproto import ( + "context" "fmt" "net/url" "strings" @@ -70,6 +71,14 @@ func unmarshalPtrTo[T any](data []byte) (*T, error) { return &v, nil } +func unmarshalValue[T any](data []byte) (T, error) { + var v T + if err := json.Unmarshal(data, &v); err != nil { + return *new(T), fmt.Errorf("failed to unmarshal %T: %w", (*T)(nil), err) + } + return v, nil +} + func unmarshalAny(data []byte) (any, error) { var v any if err := json.Unmarshal(data, &v); err != nil { @@ -128,11 +137,43 @@ type RequestInfo[Params, Resp any] struct { Method Method } +func (info RequestInfo[Params, Resp]) UnmarshalResult(result any) (Resp, error) { + if r, ok := result.(Resp); ok { + return r, nil + } + + raw, ok := result.(jsontext.Value) + if !ok { + return *new(Resp), fmt.Errorf("expected jsontext.Value, got %T", result) + } + + r, err := unmarshalResult(info.Method, raw) + if err != nil { + return *new(Resp), err + } + return r.(Resp), nil +} + +func (info RequestInfo[Params, Resp]) NewRequestMessage(id *ID, params Params) *RequestMessage { + return &RequestMessage{ + ID: id, + Method: info.Method, + Params: params, + } +} + type NotificationInfo[Params any] struct { _ [0]Params Method Method } +func (info NotificationInfo[Params]) NewNotificationMessage(params Params) *RequestMessage { + return &RequestMessage{ + Method: info.Method, + Params: params, + } +} + type Null struct{} func (Null) UnmarshalJSONFrom(dec *jsontext.Decoder) error { @@ -149,3 +190,25 @@ func (Null) UnmarshalJSONFrom(dec *jsontext.Decoder) error { func (Null) MarshalJSONTo(enc *jsontext.Encoder) error { return enc.WriteToken(jsontext.Null) } + +type clientCapabilitiesKey struct{} + +func WithClientCapabilities(ctx context.Context, caps *ResolvedClientCapabilities) context.Context { + return context.WithValue(ctx, clientCapabilitiesKey{}, caps) +} + +func GetClientCapabilities(ctx context.Context) *ResolvedClientCapabilities { + if caps, _ := ctx.Value(clientCapabilitiesKey{}).(*ResolvedClientCapabilities); caps != nil { + return caps + } + return &ResolvedClientCapabilities{} +} + +// PreferredMarkupKind returns the first (most preferred) markup kind from the given formats, +// or MarkupKindPlainText if the slice is empty. +func PreferredMarkupKind(formats []MarkupKind) MarkupKind { + if len(formats) > 0 { + return formats[0] + } + return MarkupKindPlainText +} diff --git a/pkg/lsp/lsproto/lsp_generated.go b/pkg/lsp/lsproto/lsp_generated.go index 04892d51..7c71cb1a 100644 --- a/pkg/lsp/lsproto/lsp_generated.go +++ b/pkg/lsp/lsproto/lsp_generated.go @@ -20709,6 +20709,151 @@ func unmarshalParams(method Method, data []byte) (any, error) { } } +func unmarshalResult(method Method, data []byte) (any, error) { + switch method { + case MethodTextDocumentImplementation: + return unmarshalValue[ImplementationResponse](data) + case MethodTextDocumentTypeDefinition: + return unmarshalValue[TypeDefinitionResponse](data) + case MethodWorkspaceWorkspaceFolders: + return unmarshalValue[WorkspaceFoldersResponse](data) + case MethodWorkspaceConfiguration: + return unmarshalValue[ConfigurationResponse](data) + case MethodTextDocumentDocumentColor: + return unmarshalValue[DocumentColorResponse](data) + case MethodTextDocumentColorPresentation: + return unmarshalValue[ColorPresentationResponse](data) + case MethodTextDocumentFoldingRange: + return unmarshalValue[FoldingRangeResponse](data) + case MethodWorkspaceFoldingRangeRefresh: + return unmarshalValue[FoldingRangeRefreshResponse](data) + case MethodTextDocumentDeclaration: + return unmarshalValue[DeclarationResponse](data) + case MethodTextDocumentSelectionRange: + return unmarshalValue[SelectionRangeResponse](data) + case MethodWindowWorkDoneProgressCreate: + return unmarshalValue[WorkDoneProgressCreateResponse](data) + case MethodTextDocumentPrepareCallHierarchy: + return unmarshalValue[CallHierarchyPrepareResponse](data) + case MethodCallHierarchyIncomingCalls: + return unmarshalValue[CallHierarchyIncomingCallsResponse](data) + case MethodCallHierarchyOutgoingCalls: + return unmarshalValue[CallHierarchyOutgoingCallsResponse](data) + case MethodTextDocumentSemanticTokensFull: + return unmarshalValue[SemanticTokensResponse](data) + case MethodTextDocumentSemanticTokensFullDelta: + return unmarshalValue[SemanticTokensDeltaResponse](data) + case MethodTextDocumentSemanticTokensRange: + return unmarshalValue[SemanticTokensRangeResponse](data) + case MethodWorkspaceSemanticTokensRefresh: + return unmarshalValue[SemanticTokensRefreshResponse](data) + case MethodWindowShowDocument: + return unmarshalValue[ShowDocumentResponse](data) + case MethodTextDocumentLinkedEditingRange: + return unmarshalValue[LinkedEditingRangeResponse](data) + case MethodWorkspaceWillCreateFiles: + return unmarshalValue[WillCreateFilesResponse](data) + case MethodWorkspaceWillRenameFiles: + return unmarshalValue[WillRenameFilesResponse](data) + case MethodWorkspaceWillDeleteFiles: + return unmarshalValue[WillDeleteFilesResponse](data) + case MethodTextDocumentMoniker: + return unmarshalValue[MonikerResponse](data) + case MethodTextDocumentPrepareTypeHierarchy: + return unmarshalValue[TypeHierarchyPrepareResponse](data) + case MethodTypeHierarchySupertypes: + return unmarshalValue[TypeHierarchySupertypesResponse](data) + case MethodTypeHierarchySubtypes: + return unmarshalValue[TypeHierarchySubtypesResponse](data) + case MethodTextDocumentInlineValue: + return unmarshalValue[InlineValueResponse](data) + case MethodWorkspaceInlineValueRefresh: + return unmarshalValue[InlineValueRefreshResponse](data) + case MethodTextDocumentInlayHint: + return unmarshalValue[InlayHintResponse](data) + case MethodInlayHintResolve: + return unmarshalValue[InlayHintResolveResponse](data) + case MethodWorkspaceInlayHintRefresh: + return unmarshalValue[InlayHintRefreshResponse](data) + case MethodTextDocumentDiagnostic: + return unmarshalValue[DocumentDiagnosticResponse](data) + case MethodWorkspaceDiagnostic: + return unmarshalValue[WorkspaceDiagnosticResponse](data) + case MethodWorkspaceDiagnosticRefresh: + return unmarshalValue[DiagnosticRefreshResponse](data) + case MethodTextDocumentInlineCompletion: + return unmarshalValue[InlineCompletionResponse](data) + case MethodWorkspaceTextDocumentContent: + return unmarshalValue[TextDocumentContentResponse](data) + case MethodWorkspaceTextDocumentContentRefresh: + return unmarshalValue[TextDocumentContentRefreshResponse](data) + case MethodClientRegisterCapability: + return unmarshalValue[RegistrationResponse](data) + case MethodClientUnregisterCapability: + return unmarshalValue[UnregistrationResponse](data) + case MethodInitialize: + return unmarshalValue[InitializeResponse](data) + case MethodShutdown: + return unmarshalValue[ShutdownResponse](data) + case MethodWindowShowMessageRequest: + return unmarshalValue[ShowMessageResponse](data) + case MethodTextDocumentWillSaveWaitUntil: + return unmarshalValue[WillSaveTextDocumentWaitUntilResponse](data) + case MethodTextDocumentCompletion: + return unmarshalValue[CompletionResponse](data) + case MethodCompletionItemResolve: + return unmarshalValue[CompletionResolveResponse](data) + case MethodTextDocumentHover: + return unmarshalValue[HoverResponse](data) + case MethodTextDocumentSignatureHelp: + return unmarshalValue[SignatureHelpResponse](data) + case MethodTextDocumentDefinition: + return unmarshalValue[DefinitionResponse](data) + case MethodTextDocumentReferences: + return unmarshalValue[ReferencesResponse](data) + case MethodTextDocumentDocumentHighlight: + return unmarshalValue[DocumentHighlightResponse](data) + case MethodTextDocumentDocumentSymbol: + return unmarshalValue[DocumentSymbolResponse](data) + case MethodTextDocumentCodeAction: + return unmarshalValue[CodeActionResponse](data) + case MethodCodeActionResolve: + return unmarshalValue[CodeActionResolveResponse](data) + case MethodWorkspaceSymbol: + return unmarshalValue[WorkspaceSymbolResponse](data) + case MethodWorkspaceSymbolResolve: + return unmarshalValue[WorkspaceSymbolResolveResponse](data) + case MethodTextDocumentCodeLens: + return unmarshalValue[CodeLensResponse](data) + case MethodCodeLensResolve: + return unmarshalValue[CodeLensResolveResponse](data) + case MethodWorkspaceCodeLensRefresh: + return unmarshalValue[CodeLensRefreshResponse](data) + case MethodTextDocumentDocumentLink: + return unmarshalValue[DocumentLinkResponse](data) + case MethodDocumentLinkResolve: + return unmarshalValue[DocumentLinkResolveResponse](data) + case MethodTextDocumentFormatting: + return unmarshalValue[DocumentFormattingResponse](data) + case MethodTextDocumentRangeFormatting: + return unmarshalValue[DocumentRangeFormattingResponse](data) + case MethodTextDocumentRangesFormatting: + return unmarshalValue[DocumentRangesFormattingResponse](data) + case MethodTextDocumentOnTypeFormatting: + return unmarshalValue[DocumentOnTypeFormattingResponse](data) + case MethodTextDocumentRename: + return unmarshalValue[RenameResponse](data) + case MethodTextDocumentPrepareRename: + return unmarshalValue[PrepareRenameResponse](data) + case MethodWorkspaceExecuteCommand: + return unmarshalValue[ExecuteCommandResponse](data) + case MethodWorkspaceApplyEdit: + return unmarshalValue[ApplyWorkspaceEditResponse](data) + default: + return unmarshalAny(data) + } +} + // Methods const ( // A request to resolve the implementation locations of a symbol at a given text @@ -25725,3 +25870,1347 @@ func (o *StringLiteralSnippet) UnmarshalJSONFrom(dec *jsontext.Decoder) error { } return nil } + +// Helper function for dereferencing pointers with zero value fallback +func derefOr[T any](v *T) T { + if v != nil { + return *v + } + var zero T + return zero +} + +type ResolvedChangeAnnotationsSupportOptions struct { + GroupsOnLabel bool `json:"groupsOnLabel,omitzero"` +} + +func resolveChangeAnnotationsSupportOptions(v *ChangeAnnotationsSupportOptions) ResolvedChangeAnnotationsSupportOptions { + if v == nil { + return ResolvedChangeAnnotationsSupportOptions{} + } + return ResolvedChangeAnnotationsSupportOptions{ + GroupsOnLabel: derefOr(v.GroupsOnLabel), + } +} + +type ResolvedWorkspaceEditClientCapabilities struct { + DocumentChanges bool `json:"documentChanges,omitzero"` + ResourceOperations []ResourceOperationKind `json:"resourceOperations,omitzero"` + FailureHandling FailureHandlingKind `json:"failureHandling,omitzero"` + NormalizesLineEndings bool `json:"normalizesLineEndings,omitzero"` + ChangeAnnotationSupport ResolvedChangeAnnotationsSupportOptions `json:"changeAnnotationSupport,omitzero"` + MetadataSupport bool `json:"metadataSupport,omitzero"` + SnippetEditSupport bool `json:"snippetEditSupport,omitzero"` +} + +func resolveWorkspaceEditClientCapabilities(v *WorkspaceEditClientCapabilities) ResolvedWorkspaceEditClientCapabilities { + if v == nil { + return ResolvedWorkspaceEditClientCapabilities{} + } + return ResolvedWorkspaceEditClientCapabilities{ + DocumentChanges: derefOr(v.DocumentChanges), + ResourceOperations: derefOr(v.ResourceOperations), + FailureHandling: derefOr(v.FailureHandling), + NormalizesLineEndings: derefOr(v.NormalizesLineEndings), + ChangeAnnotationSupport: resolveChangeAnnotationsSupportOptions(v.ChangeAnnotationSupport), + MetadataSupport: derefOr(v.MetadataSupport), + SnippetEditSupport: derefOr(v.SnippetEditSupport), + } +} + +type ResolvedDidChangeConfigurationClientCapabilities struct { + DynamicRegistration bool `json:"dynamicRegistration,omitzero"` +} + +func resolveDidChangeConfigurationClientCapabilities(v *DidChangeConfigurationClientCapabilities) ResolvedDidChangeConfigurationClientCapabilities { + if v == nil { + return ResolvedDidChangeConfigurationClientCapabilities{} + } + return ResolvedDidChangeConfigurationClientCapabilities{ + DynamicRegistration: derefOr(v.DynamicRegistration), + } +} + +type ResolvedDidChangeWatchedFilesClientCapabilities struct { + DynamicRegistration bool `json:"dynamicRegistration,omitzero"` + RelativePatternSupport bool `json:"relativePatternSupport,omitzero"` +} + +func resolveDidChangeWatchedFilesClientCapabilities(v *DidChangeWatchedFilesClientCapabilities) ResolvedDidChangeWatchedFilesClientCapabilities { + if v == nil { + return ResolvedDidChangeWatchedFilesClientCapabilities{} + } + return ResolvedDidChangeWatchedFilesClientCapabilities{ + DynamicRegistration: derefOr(v.DynamicRegistration), + RelativePatternSupport: derefOr(v.RelativePatternSupport), + } +} + +type ResolvedClientSymbolKindOptions struct { + ValueSet []SymbolKind `json:"valueSet,omitzero"` +} + +func resolveClientSymbolKindOptions(v *ClientSymbolKindOptions) ResolvedClientSymbolKindOptions { + if v == nil { + return ResolvedClientSymbolKindOptions{} + } + return ResolvedClientSymbolKindOptions{ + ValueSet: derefOr(v.ValueSet), + } +} + +type ResolvedClientSymbolTagOptions struct { + ValueSet []SymbolTag `json:"valueSet,omitzero"` +} + +func resolveClientSymbolTagOptions(v *ClientSymbolTagOptions) ResolvedClientSymbolTagOptions { + if v == nil { + return ResolvedClientSymbolTagOptions{} + } + return ResolvedClientSymbolTagOptions{ + ValueSet: v.ValueSet, + } +} + +type ResolvedClientSymbolResolveOptions struct { + Properties []string `json:"properties,omitzero"` +} + +func resolveClientSymbolResolveOptions(v *ClientSymbolResolveOptions) ResolvedClientSymbolResolveOptions { + if v == nil { + return ResolvedClientSymbolResolveOptions{} + } + return ResolvedClientSymbolResolveOptions{ + Properties: v.Properties, + } +} + +type ResolvedWorkspaceSymbolClientCapabilities struct { + DynamicRegistration bool `json:"dynamicRegistration,omitzero"` + SymbolKind ResolvedClientSymbolKindOptions `json:"symbolKind,omitzero"` + TagSupport ResolvedClientSymbolTagOptions `json:"tagSupport,omitzero"` + ResolveSupport ResolvedClientSymbolResolveOptions `json:"resolveSupport,omitzero"` +} + +func resolveWorkspaceSymbolClientCapabilities(v *WorkspaceSymbolClientCapabilities) ResolvedWorkspaceSymbolClientCapabilities { + if v == nil { + return ResolvedWorkspaceSymbolClientCapabilities{} + } + return ResolvedWorkspaceSymbolClientCapabilities{ + DynamicRegistration: derefOr(v.DynamicRegistration), + SymbolKind: resolveClientSymbolKindOptions(v.SymbolKind), + TagSupport: resolveClientSymbolTagOptions(v.TagSupport), + ResolveSupport: resolveClientSymbolResolveOptions(v.ResolveSupport), + } +} + +type ResolvedExecuteCommandClientCapabilities struct { + DynamicRegistration bool `json:"dynamicRegistration,omitzero"` +} + +func resolveExecuteCommandClientCapabilities(v *ExecuteCommandClientCapabilities) ResolvedExecuteCommandClientCapabilities { + if v == nil { + return ResolvedExecuteCommandClientCapabilities{} + } + return ResolvedExecuteCommandClientCapabilities{ + DynamicRegistration: derefOr(v.DynamicRegistration), + } +} + +type ResolvedSemanticTokensWorkspaceClientCapabilities struct { + RefreshSupport bool `json:"refreshSupport,omitzero"` +} + +func resolveSemanticTokensWorkspaceClientCapabilities(v *SemanticTokensWorkspaceClientCapabilities) ResolvedSemanticTokensWorkspaceClientCapabilities { + if v == nil { + return ResolvedSemanticTokensWorkspaceClientCapabilities{} + } + return ResolvedSemanticTokensWorkspaceClientCapabilities{ + RefreshSupport: derefOr(v.RefreshSupport), + } +} + +type ResolvedCodeLensWorkspaceClientCapabilities struct { + RefreshSupport bool `json:"refreshSupport,omitzero"` +} + +func resolveCodeLensWorkspaceClientCapabilities(v *CodeLensWorkspaceClientCapabilities) ResolvedCodeLensWorkspaceClientCapabilities { + if v == nil { + return ResolvedCodeLensWorkspaceClientCapabilities{} + } + return ResolvedCodeLensWorkspaceClientCapabilities{ + RefreshSupport: derefOr(v.RefreshSupport), + } +} + +type ResolvedFileOperationClientCapabilities struct { + DynamicRegistration bool `json:"dynamicRegistration,omitzero"` + DidCreate bool `json:"didCreate,omitzero"` + WillCreate bool `json:"willCreate,omitzero"` + DidRename bool `json:"didRename,omitzero"` + WillRename bool `json:"willRename,omitzero"` + DidDelete bool `json:"didDelete,omitzero"` + WillDelete bool `json:"willDelete,omitzero"` +} + +func resolveFileOperationClientCapabilities(v *FileOperationClientCapabilities) ResolvedFileOperationClientCapabilities { + if v == nil { + return ResolvedFileOperationClientCapabilities{} + } + return ResolvedFileOperationClientCapabilities{ + DynamicRegistration: derefOr(v.DynamicRegistration), + DidCreate: derefOr(v.DidCreate), + WillCreate: derefOr(v.WillCreate), + DidRename: derefOr(v.DidRename), + WillRename: derefOr(v.WillRename), + DidDelete: derefOr(v.DidDelete), + WillDelete: derefOr(v.WillDelete), + } +} + +type ResolvedInlineValueWorkspaceClientCapabilities struct { + RefreshSupport bool `json:"refreshSupport,omitzero"` +} + +func resolveInlineValueWorkspaceClientCapabilities(v *InlineValueWorkspaceClientCapabilities) ResolvedInlineValueWorkspaceClientCapabilities { + if v == nil { + return ResolvedInlineValueWorkspaceClientCapabilities{} + } + return ResolvedInlineValueWorkspaceClientCapabilities{ + RefreshSupport: derefOr(v.RefreshSupport), + } +} + +type ResolvedInlayHintWorkspaceClientCapabilities struct { + RefreshSupport bool `json:"refreshSupport,omitzero"` +} + +func resolveInlayHintWorkspaceClientCapabilities(v *InlayHintWorkspaceClientCapabilities) ResolvedInlayHintWorkspaceClientCapabilities { + if v == nil { + return ResolvedInlayHintWorkspaceClientCapabilities{} + } + return ResolvedInlayHintWorkspaceClientCapabilities{ + RefreshSupport: derefOr(v.RefreshSupport), + } +} + +type ResolvedDiagnosticWorkspaceClientCapabilities struct { + RefreshSupport bool `json:"refreshSupport,omitzero"` +} + +func resolveDiagnosticWorkspaceClientCapabilities(v *DiagnosticWorkspaceClientCapabilities) ResolvedDiagnosticWorkspaceClientCapabilities { + if v == nil { + return ResolvedDiagnosticWorkspaceClientCapabilities{} + } + return ResolvedDiagnosticWorkspaceClientCapabilities{ + RefreshSupport: derefOr(v.RefreshSupport), + } +} + +type ResolvedFoldingRangeWorkspaceClientCapabilities struct { + RefreshSupport bool `json:"refreshSupport,omitzero"` +} + +func resolveFoldingRangeWorkspaceClientCapabilities(v *FoldingRangeWorkspaceClientCapabilities) ResolvedFoldingRangeWorkspaceClientCapabilities { + if v == nil { + return ResolvedFoldingRangeWorkspaceClientCapabilities{} + } + return ResolvedFoldingRangeWorkspaceClientCapabilities{ + RefreshSupport: derefOr(v.RefreshSupport), + } +} + +type ResolvedTextDocumentContentClientCapabilities struct { + DynamicRegistration bool `json:"dynamicRegistration,omitzero"` +} + +func resolveTextDocumentContentClientCapabilities(v *TextDocumentContentClientCapabilities) ResolvedTextDocumentContentClientCapabilities { + if v == nil { + return ResolvedTextDocumentContentClientCapabilities{} + } + return ResolvedTextDocumentContentClientCapabilities{ + DynamicRegistration: derefOr(v.DynamicRegistration), + } +} + +type ResolvedWorkspaceClientCapabilities struct { + ApplyEdit bool `json:"applyEdit,omitzero"` + WorkspaceEdit ResolvedWorkspaceEditClientCapabilities `json:"workspaceEdit,omitzero"` + DidChangeConfiguration ResolvedDidChangeConfigurationClientCapabilities `json:"didChangeConfiguration,omitzero"` + DidChangeWatchedFiles ResolvedDidChangeWatchedFilesClientCapabilities `json:"didChangeWatchedFiles,omitzero"` + Symbol ResolvedWorkspaceSymbolClientCapabilities `json:"symbol,omitzero"` + ExecuteCommand ResolvedExecuteCommandClientCapabilities `json:"executeCommand,omitzero"` + WorkspaceFolders bool `json:"workspaceFolders,omitzero"` + Configuration bool `json:"configuration,omitzero"` + SemanticTokens ResolvedSemanticTokensWorkspaceClientCapabilities `json:"semanticTokens,omitzero"` + CodeLens ResolvedCodeLensWorkspaceClientCapabilities `json:"codeLens,omitzero"` + FileOperations ResolvedFileOperationClientCapabilities `json:"fileOperations,omitzero"` + InlineValue ResolvedInlineValueWorkspaceClientCapabilities `json:"inlineValue,omitzero"` + InlayHint ResolvedInlayHintWorkspaceClientCapabilities `json:"inlayHint,omitzero"` + Diagnostics ResolvedDiagnosticWorkspaceClientCapabilities `json:"diagnostics,omitzero"` + FoldingRange ResolvedFoldingRangeWorkspaceClientCapabilities `json:"foldingRange,omitzero"` + TextDocumentContent ResolvedTextDocumentContentClientCapabilities `json:"textDocumentContent,omitzero"` +} + +func resolveWorkspaceClientCapabilities(v *WorkspaceClientCapabilities) ResolvedWorkspaceClientCapabilities { + if v == nil { + return ResolvedWorkspaceClientCapabilities{} + } + return ResolvedWorkspaceClientCapabilities{ + ApplyEdit: derefOr(v.ApplyEdit), + WorkspaceEdit: resolveWorkspaceEditClientCapabilities(v.WorkspaceEdit), + DidChangeConfiguration: resolveDidChangeConfigurationClientCapabilities(v.DidChangeConfiguration), + DidChangeWatchedFiles: resolveDidChangeWatchedFilesClientCapabilities(v.DidChangeWatchedFiles), + Symbol: resolveWorkspaceSymbolClientCapabilities(v.Symbol), + ExecuteCommand: resolveExecuteCommandClientCapabilities(v.ExecuteCommand), + WorkspaceFolders: derefOr(v.WorkspaceFolders), + Configuration: derefOr(v.Configuration), + SemanticTokens: resolveSemanticTokensWorkspaceClientCapabilities(v.SemanticTokens), + CodeLens: resolveCodeLensWorkspaceClientCapabilities(v.CodeLens), + FileOperations: resolveFileOperationClientCapabilities(v.FileOperations), + InlineValue: resolveInlineValueWorkspaceClientCapabilities(v.InlineValue), + InlayHint: resolveInlayHintWorkspaceClientCapabilities(v.InlayHint), + Diagnostics: resolveDiagnosticWorkspaceClientCapabilities(v.Diagnostics), + FoldingRange: resolveFoldingRangeWorkspaceClientCapabilities(v.FoldingRange), + TextDocumentContent: resolveTextDocumentContentClientCapabilities(v.TextDocumentContent), + } +} + +type ResolvedTextDocumentSyncClientCapabilities struct { + DynamicRegistration bool `json:"dynamicRegistration,omitzero"` + WillSave bool `json:"willSave,omitzero"` + WillSaveWaitUntil bool `json:"willSaveWaitUntil,omitzero"` + DidSave bool `json:"didSave,omitzero"` +} + +func resolveTextDocumentSyncClientCapabilities(v *TextDocumentSyncClientCapabilities) ResolvedTextDocumentSyncClientCapabilities { + if v == nil { + return ResolvedTextDocumentSyncClientCapabilities{} + } + return ResolvedTextDocumentSyncClientCapabilities{ + DynamicRegistration: derefOr(v.DynamicRegistration), + WillSave: derefOr(v.WillSave), + WillSaveWaitUntil: derefOr(v.WillSaveWaitUntil), + DidSave: derefOr(v.DidSave), + } +} + +type ResolvedTextDocumentFilterClientCapabilities struct { + RelativePatternSupport bool `json:"relativePatternSupport,omitzero"` +} + +func resolveTextDocumentFilterClientCapabilities(v *TextDocumentFilterClientCapabilities) ResolvedTextDocumentFilterClientCapabilities { + if v == nil { + return ResolvedTextDocumentFilterClientCapabilities{} + } + return ResolvedTextDocumentFilterClientCapabilities{ + RelativePatternSupport: derefOr(v.RelativePatternSupport), + } +} + +type ResolvedCompletionItemTagOptions struct { + ValueSet []CompletionItemTag `json:"valueSet,omitzero"` +} + +func resolveCompletionItemTagOptions(v *CompletionItemTagOptions) ResolvedCompletionItemTagOptions { + if v == nil { + return ResolvedCompletionItemTagOptions{} + } + return ResolvedCompletionItemTagOptions{ + ValueSet: v.ValueSet, + } +} + +type ResolvedClientCompletionItemResolveOptions struct { + Properties []string `json:"properties,omitzero"` +} + +func resolveClientCompletionItemResolveOptions(v *ClientCompletionItemResolveOptions) ResolvedClientCompletionItemResolveOptions { + if v == nil { + return ResolvedClientCompletionItemResolveOptions{} + } + return ResolvedClientCompletionItemResolveOptions{ + Properties: v.Properties, + } +} + +type ResolvedClientCompletionItemInsertTextModeOptions struct { + ValueSet []InsertTextMode `json:"valueSet,omitzero"` +} + +func resolveClientCompletionItemInsertTextModeOptions(v *ClientCompletionItemInsertTextModeOptions) ResolvedClientCompletionItemInsertTextModeOptions { + if v == nil { + return ResolvedClientCompletionItemInsertTextModeOptions{} + } + return ResolvedClientCompletionItemInsertTextModeOptions{ + ValueSet: v.ValueSet, + } +} + +type ResolvedClientCompletionItemOptions struct { + SnippetSupport bool `json:"snippetSupport,omitzero"` + CommitCharactersSupport bool `json:"commitCharactersSupport,omitzero"` + DocumentationFormat []MarkupKind `json:"documentationFormat,omitzero"` + DeprecatedSupport bool `json:"deprecatedSupport,omitzero"` + PreselectSupport bool `json:"preselectSupport,omitzero"` + TagSupport ResolvedCompletionItemTagOptions `json:"tagSupport,omitzero"` + InsertReplaceSupport bool `json:"insertReplaceSupport,omitzero"` + ResolveSupport ResolvedClientCompletionItemResolveOptions `json:"resolveSupport,omitzero"` + InsertTextModeSupport ResolvedClientCompletionItemInsertTextModeOptions `json:"insertTextModeSupport,omitzero"` + LabelDetailsSupport bool `json:"labelDetailsSupport,omitzero"` +} + +func resolveClientCompletionItemOptions(v *ClientCompletionItemOptions) ResolvedClientCompletionItemOptions { + if v == nil { + return ResolvedClientCompletionItemOptions{} + } + return ResolvedClientCompletionItemOptions{ + SnippetSupport: derefOr(v.SnippetSupport), + CommitCharactersSupport: derefOr(v.CommitCharactersSupport), + DocumentationFormat: derefOr(v.DocumentationFormat), + DeprecatedSupport: derefOr(v.DeprecatedSupport), + PreselectSupport: derefOr(v.PreselectSupport), + TagSupport: resolveCompletionItemTagOptions(v.TagSupport), + InsertReplaceSupport: derefOr(v.InsertReplaceSupport), + ResolveSupport: resolveClientCompletionItemResolveOptions(v.ResolveSupport), + InsertTextModeSupport: resolveClientCompletionItemInsertTextModeOptions(v.InsertTextModeSupport), + LabelDetailsSupport: derefOr(v.LabelDetailsSupport), + } +} + +type ResolvedClientCompletionItemOptionsKind struct { + ValueSet []CompletionItemKind `json:"valueSet,omitzero"` +} + +func resolveClientCompletionItemOptionsKind(v *ClientCompletionItemOptionsKind) ResolvedClientCompletionItemOptionsKind { + if v == nil { + return ResolvedClientCompletionItemOptionsKind{} + } + return ResolvedClientCompletionItemOptionsKind{ + ValueSet: derefOr(v.ValueSet), + } +} + +type ResolvedCompletionListCapabilities struct { + ItemDefaults []string `json:"itemDefaults,omitzero"` + ApplyKindSupport bool `json:"applyKindSupport,omitzero"` +} + +func resolveCompletionListCapabilities(v *CompletionListCapabilities) ResolvedCompletionListCapabilities { + if v == nil { + return ResolvedCompletionListCapabilities{} + } + return ResolvedCompletionListCapabilities{ + ItemDefaults: derefOr(v.ItemDefaults), + ApplyKindSupport: derefOr(v.ApplyKindSupport), + } +} + +type ResolvedCompletionClientCapabilities struct { + DynamicRegistration bool `json:"dynamicRegistration,omitzero"` + CompletionItem ResolvedClientCompletionItemOptions `json:"completionItem,omitzero"` + CompletionItemKind ResolvedClientCompletionItemOptionsKind `json:"completionItemKind,omitzero"` + InsertTextMode InsertTextMode `json:"insertTextMode,omitzero"` + ContextSupport bool `json:"contextSupport,omitzero"` + CompletionList ResolvedCompletionListCapabilities `json:"completionList,omitzero"` +} + +func resolveCompletionClientCapabilities(v *CompletionClientCapabilities) ResolvedCompletionClientCapabilities { + if v == nil { + return ResolvedCompletionClientCapabilities{} + } + return ResolvedCompletionClientCapabilities{ + DynamicRegistration: derefOr(v.DynamicRegistration), + CompletionItem: resolveClientCompletionItemOptions(v.CompletionItem), + CompletionItemKind: resolveClientCompletionItemOptionsKind(v.CompletionItemKind), + InsertTextMode: derefOr(v.InsertTextMode), + ContextSupport: derefOr(v.ContextSupport), + CompletionList: resolveCompletionListCapabilities(v.CompletionList), + } +} + +type ResolvedHoverClientCapabilities struct { + DynamicRegistration bool `json:"dynamicRegistration,omitzero"` + ContentFormat []MarkupKind `json:"contentFormat,omitzero"` +} + +func resolveHoverClientCapabilities(v *HoverClientCapabilities) ResolvedHoverClientCapabilities { + if v == nil { + return ResolvedHoverClientCapabilities{} + } + return ResolvedHoverClientCapabilities{ + DynamicRegistration: derefOr(v.DynamicRegistration), + ContentFormat: derefOr(v.ContentFormat), + } +} + +type ResolvedClientSignatureParameterInformationOptions struct { + LabelOffsetSupport bool `json:"labelOffsetSupport,omitzero"` +} + +func resolveClientSignatureParameterInformationOptions(v *ClientSignatureParameterInformationOptions) ResolvedClientSignatureParameterInformationOptions { + if v == nil { + return ResolvedClientSignatureParameterInformationOptions{} + } + return ResolvedClientSignatureParameterInformationOptions{ + LabelOffsetSupport: derefOr(v.LabelOffsetSupport), + } +} + +type ResolvedClientSignatureInformationOptions struct { + DocumentationFormat []MarkupKind `json:"documentationFormat,omitzero"` + ParameterInformation ResolvedClientSignatureParameterInformationOptions `json:"parameterInformation,omitzero"` + ActiveParameterSupport bool `json:"activeParameterSupport,omitzero"` + NoActiveParameterSupport bool `json:"noActiveParameterSupport,omitzero"` +} + +func resolveClientSignatureInformationOptions(v *ClientSignatureInformationOptions) ResolvedClientSignatureInformationOptions { + if v == nil { + return ResolvedClientSignatureInformationOptions{} + } + return ResolvedClientSignatureInformationOptions{ + DocumentationFormat: derefOr(v.DocumentationFormat), + ParameterInformation: resolveClientSignatureParameterInformationOptions(v.ParameterInformation), + ActiveParameterSupport: derefOr(v.ActiveParameterSupport), + NoActiveParameterSupport: derefOr(v.NoActiveParameterSupport), + } +} + +type ResolvedSignatureHelpClientCapabilities struct { + DynamicRegistration bool `json:"dynamicRegistration,omitzero"` + SignatureInformation ResolvedClientSignatureInformationOptions `json:"signatureInformation,omitzero"` + ContextSupport bool `json:"contextSupport,omitzero"` +} + +func resolveSignatureHelpClientCapabilities(v *SignatureHelpClientCapabilities) ResolvedSignatureHelpClientCapabilities { + if v == nil { + return ResolvedSignatureHelpClientCapabilities{} + } + return ResolvedSignatureHelpClientCapabilities{ + DynamicRegistration: derefOr(v.DynamicRegistration), + SignatureInformation: resolveClientSignatureInformationOptions(v.SignatureInformation), + ContextSupport: derefOr(v.ContextSupport), + } +} + +type ResolvedDeclarationClientCapabilities struct { + DynamicRegistration bool `json:"dynamicRegistration,omitzero"` + LinkSupport bool `json:"linkSupport,omitzero"` +} + +func resolveDeclarationClientCapabilities(v *DeclarationClientCapabilities) ResolvedDeclarationClientCapabilities { + if v == nil { + return ResolvedDeclarationClientCapabilities{} + } + return ResolvedDeclarationClientCapabilities{ + DynamicRegistration: derefOr(v.DynamicRegistration), + LinkSupport: derefOr(v.LinkSupport), + } +} + +type ResolvedDefinitionClientCapabilities struct { + DynamicRegistration bool `json:"dynamicRegistration,omitzero"` + LinkSupport bool `json:"linkSupport,omitzero"` +} + +func resolveDefinitionClientCapabilities(v *DefinitionClientCapabilities) ResolvedDefinitionClientCapabilities { + if v == nil { + return ResolvedDefinitionClientCapabilities{} + } + return ResolvedDefinitionClientCapabilities{ + DynamicRegistration: derefOr(v.DynamicRegistration), + LinkSupport: derefOr(v.LinkSupport), + } +} + +type ResolvedTypeDefinitionClientCapabilities struct { + DynamicRegistration bool `json:"dynamicRegistration,omitzero"` + LinkSupport bool `json:"linkSupport,omitzero"` +} + +func resolveTypeDefinitionClientCapabilities(v *TypeDefinitionClientCapabilities) ResolvedTypeDefinitionClientCapabilities { + if v == nil { + return ResolvedTypeDefinitionClientCapabilities{} + } + return ResolvedTypeDefinitionClientCapabilities{ + DynamicRegistration: derefOr(v.DynamicRegistration), + LinkSupport: derefOr(v.LinkSupport), + } +} + +type ResolvedImplementationClientCapabilities struct { + DynamicRegistration bool `json:"dynamicRegistration,omitzero"` + LinkSupport bool `json:"linkSupport,omitzero"` +} + +func resolveImplementationClientCapabilities(v *ImplementationClientCapabilities) ResolvedImplementationClientCapabilities { + if v == nil { + return ResolvedImplementationClientCapabilities{} + } + return ResolvedImplementationClientCapabilities{ + DynamicRegistration: derefOr(v.DynamicRegistration), + LinkSupport: derefOr(v.LinkSupport), + } +} + +type ResolvedReferenceClientCapabilities struct { + DynamicRegistration bool `json:"dynamicRegistration,omitzero"` +} + +func resolveReferenceClientCapabilities(v *ReferenceClientCapabilities) ResolvedReferenceClientCapabilities { + if v == nil { + return ResolvedReferenceClientCapabilities{} + } + return ResolvedReferenceClientCapabilities{ + DynamicRegistration: derefOr(v.DynamicRegistration), + } +} + +type ResolvedDocumentHighlightClientCapabilities struct { + DynamicRegistration bool `json:"dynamicRegistration,omitzero"` +} + +func resolveDocumentHighlightClientCapabilities(v *DocumentHighlightClientCapabilities) ResolvedDocumentHighlightClientCapabilities { + if v == nil { + return ResolvedDocumentHighlightClientCapabilities{} + } + return ResolvedDocumentHighlightClientCapabilities{ + DynamicRegistration: derefOr(v.DynamicRegistration), + } +} + +type ResolvedDocumentSymbolClientCapabilities struct { + DynamicRegistration bool `json:"dynamicRegistration,omitzero"` + SymbolKind ResolvedClientSymbolKindOptions `json:"symbolKind,omitzero"` + HierarchicalDocumentSymbolSupport bool `json:"hierarchicalDocumentSymbolSupport,omitzero"` + TagSupport ResolvedClientSymbolTagOptions `json:"tagSupport,omitzero"` + LabelSupport bool `json:"labelSupport,omitzero"` +} + +func resolveDocumentSymbolClientCapabilities(v *DocumentSymbolClientCapabilities) ResolvedDocumentSymbolClientCapabilities { + if v == nil { + return ResolvedDocumentSymbolClientCapabilities{} + } + return ResolvedDocumentSymbolClientCapabilities{ + DynamicRegistration: derefOr(v.DynamicRegistration), + SymbolKind: resolveClientSymbolKindOptions(v.SymbolKind), + HierarchicalDocumentSymbolSupport: derefOr(v.HierarchicalDocumentSymbolSupport), + TagSupport: resolveClientSymbolTagOptions(v.TagSupport), + LabelSupport: derefOr(v.LabelSupport), + } +} + +type ResolvedClientCodeActionKindOptions struct { + ValueSet []CodeActionKind `json:"valueSet,omitzero"` +} + +func resolveClientCodeActionKindOptions(v *ClientCodeActionKindOptions) ResolvedClientCodeActionKindOptions { + if v == nil { + return ResolvedClientCodeActionKindOptions{} + } + return ResolvedClientCodeActionKindOptions{ + ValueSet: v.ValueSet, + } +} + +type ResolvedClientCodeActionLiteralOptions struct { + CodeActionKind ResolvedClientCodeActionKindOptions `json:"codeActionKind,omitzero"` +} + +func resolveClientCodeActionLiteralOptions(v *ClientCodeActionLiteralOptions) ResolvedClientCodeActionLiteralOptions { + if v == nil { + return ResolvedClientCodeActionLiteralOptions{} + } + return ResolvedClientCodeActionLiteralOptions{ + CodeActionKind: resolveClientCodeActionKindOptions(v.CodeActionKind), + } +} + +type ResolvedClientCodeActionResolveOptions struct { + Properties []string `json:"properties,omitzero"` +} + +func resolveClientCodeActionResolveOptions(v *ClientCodeActionResolveOptions) ResolvedClientCodeActionResolveOptions { + if v == nil { + return ResolvedClientCodeActionResolveOptions{} + } + return ResolvedClientCodeActionResolveOptions{ + Properties: v.Properties, + } +} + +type ResolvedCodeActionTagOptions struct { + ValueSet []CodeActionTag `json:"valueSet,omitzero"` +} + +func resolveCodeActionTagOptions(v *CodeActionTagOptions) ResolvedCodeActionTagOptions { + if v == nil { + return ResolvedCodeActionTagOptions{} + } + return ResolvedCodeActionTagOptions{ + ValueSet: v.ValueSet, + } +} + +type ResolvedCodeActionClientCapabilities struct { + DynamicRegistration bool `json:"dynamicRegistration,omitzero"` + CodeActionLiteralSupport ResolvedClientCodeActionLiteralOptions `json:"codeActionLiteralSupport,omitzero"` + IsPreferredSupport bool `json:"isPreferredSupport,omitzero"` + DisabledSupport bool `json:"disabledSupport,omitzero"` + DataSupport bool `json:"dataSupport,omitzero"` + ResolveSupport ResolvedClientCodeActionResolveOptions `json:"resolveSupport,omitzero"` + HonorsChangeAnnotations bool `json:"honorsChangeAnnotations,omitzero"` + DocumentationSupport bool `json:"documentationSupport,omitzero"` + TagSupport ResolvedCodeActionTagOptions `json:"tagSupport,omitzero"` +} + +func resolveCodeActionClientCapabilities(v *CodeActionClientCapabilities) ResolvedCodeActionClientCapabilities { + if v == nil { + return ResolvedCodeActionClientCapabilities{} + } + return ResolvedCodeActionClientCapabilities{ + DynamicRegistration: derefOr(v.DynamicRegistration), + CodeActionLiteralSupport: resolveClientCodeActionLiteralOptions(v.CodeActionLiteralSupport), + IsPreferredSupport: derefOr(v.IsPreferredSupport), + DisabledSupport: derefOr(v.DisabledSupport), + DataSupport: derefOr(v.DataSupport), + ResolveSupport: resolveClientCodeActionResolveOptions(v.ResolveSupport), + HonorsChangeAnnotations: derefOr(v.HonorsChangeAnnotations), + DocumentationSupport: derefOr(v.DocumentationSupport), + TagSupport: resolveCodeActionTagOptions(v.TagSupport), + } +} + +type ResolvedClientCodeLensResolveOptions struct { + Properties []string `json:"properties,omitzero"` +} + +func resolveClientCodeLensResolveOptions(v *ClientCodeLensResolveOptions) ResolvedClientCodeLensResolveOptions { + if v == nil { + return ResolvedClientCodeLensResolveOptions{} + } + return ResolvedClientCodeLensResolveOptions{ + Properties: v.Properties, + } +} + +type ResolvedCodeLensClientCapabilities struct { + DynamicRegistration bool `json:"dynamicRegistration,omitzero"` + ResolveSupport ResolvedClientCodeLensResolveOptions `json:"resolveSupport,omitzero"` +} + +func resolveCodeLensClientCapabilities(v *CodeLensClientCapabilities) ResolvedCodeLensClientCapabilities { + if v == nil { + return ResolvedCodeLensClientCapabilities{} + } + return ResolvedCodeLensClientCapabilities{ + DynamicRegistration: derefOr(v.DynamicRegistration), + ResolveSupport: resolveClientCodeLensResolveOptions(v.ResolveSupport), + } +} + +type ResolvedDocumentLinkClientCapabilities struct { + DynamicRegistration bool `json:"dynamicRegistration,omitzero"` + TooltipSupport bool `json:"tooltipSupport,omitzero"` +} + +func resolveDocumentLinkClientCapabilities(v *DocumentLinkClientCapabilities) ResolvedDocumentLinkClientCapabilities { + if v == nil { + return ResolvedDocumentLinkClientCapabilities{} + } + return ResolvedDocumentLinkClientCapabilities{ + DynamicRegistration: derefOr(v.DynamicRegistration), + TooltipSupport: derefOr(v.TooltipSupport), + } +} + +type ResolvedDocumentColorClientCapabilities struct { + DynamicRegistration bool `json:"dynamicRegistration,omitzero"` +} + +func resolveDocumentColorClientCapabilities(v *DocumentColorClientCapabilities) ResolvedDocumentColorClientCapabilities { + if v == nil { + return ResolvedDocumentColorClientCapabilities{} + } + return ResolvedDocumentColorClientCapabilities{ + DynamicRegistration: derefOr(v.DynamicRegistration), + } +} + +type ResolvedDocumentFormattingClientCapabilities struct { + DynamicRegistration bool `json:"dynamicRegistration,omitzero"` +} + +func resolveDocumentFormattingClientCapabilities(v *DocumentFormattingClientCapabilities) ResolvedDocumentFormattingClientCapabilities { + if v == nil { + return ResolvedDocumentFormattingClientCapabilities{} + } + return ResolvedDocumentFormattingClientCapabilities{ + DynamicRegistration: derefOr(v.DynamicRegistration), + } +} + +type ResolvedDocumentRangeFormattingClientCapabilities struct { + DynamicRegistration bool `json:"dynamicRegistration,omitzero"` + RangesSupport bool `json:"rangesSupport,omitzero"` +} + +func resolveDocumentRangeFormattingClientCapabilities(v *DocumentRangeFormattingClientCapabilities) ResolvedDocumentRangeFormattingClientCapabilities { + if v == nil { + return ResolvedDocumentRangeFormattingClientCapabilities{} + } + return ResolvedDocumentRangeFormattingClientCapabilities{ + DynamicRegistration: derefOr(v.DynamicRegistration), + RangesSupport: derefOr(v.RangesSupport), + } +} + +type ResolvedDocumentOnTypeFormattingClientCapabilities struct { + DynamicRegistration bool `json:"dynamicRegistration,omitzero"` +} + +func resolveDocumentOnTypeFormattingClientCapabilities(v *DocumentOnTypeFormattingClientCapabilities) ResolvedDocumentOnTypeFormattingClientCapabilities { + if v == nil { + return ResolvedDocumentOnTypeFormattingClientCapabilities{} + } + return ResolvedDocumentOnTypeFormattingClientCapabilities{ + DynamicRegistration: derefOr(v.DynamicRegistration), + } +} + +type ResolvedRenameClientCapabilities struct { + DynamicRegistration bool `json:"dynamicRegistration,omitzero"` + PrepareSupport bool `json:"prepareSupport,omitzero"` + PrepareSupportDefaultBehavior PrepareSupportDefaultBehavior `json:"prepareSupportDefaultBehavior,omitzero"` + HonorsChangeAnnotations bool `json:"honorsChangeAnnotations,omitzero"` +} + +func resolveRenameClientCapabilities(v *RenameClientCapabilities) ResolvedRenameClientCapabilities { + if v == nil { + return ResolvedRenameClientCapabilities{} + } + return ResolvedRenameClientCapabilities{ + DynamicRegistration: derefOr(v.DynamicRegistration), + PrepareSupport: derefOr(v.PrepareSupport), + PrepareSupportDefaultBehavior: derefOr(v.PrepareSupportDefaultBehavior), + HonorsChangeAnnotations: derefOr(v.HonorsChangeAnnotations), + } +} + +type ResolvedClientFoldingRangeKindOptions struct { + ValueSet []FoldingRangeKind `json:"valueSet,omitzero"` +} + +func resolveClientFoldingRangeKindOptions(v *ClientFoldingRangeKindOptions) ResolvedClientFoldingRangeKindOptions { + if v == nil { + return ResolvedClientFoldingRangeKindOptions{} + } + return ResolvedClientFoldingRangeKindOptions{ + ValueSet: derefOr(v.ValueSet), + } +} + +type ResolvedClientFoldingRangeOptions struct { + CollapsedText bool `json:"collapsedText,omitzero"` +} + +func resolveClientFoldingRangeOptions(v *ClientFoldingRangeOptions) ResolvedClientFoldingRangeOptions { + if v == nil { + return ResolvedClientFoldingRangeOptions{} + } + return ResolvedClientFoldingRangeOptions{ + CollapsedText: derefOr(v.CollapsedText), + } +} + +type ResolvedFoldingRangeClientCapabilities struct { + DynamicRegistration bool `json:"dynamicRegistration,omitzero"` + RangeLimit uint32 `json:"rangeLimit,omitzero"` + LineFoldingOnly bool `json:"lineFoldingOnly,omitzero"` + FoldingRangeKind ResolvedClientFoldingRangeKindOptions `json:"foldingRangeKind,omitzero"` + FoldingRange ResolvedClientFoldingRangeOptions `json:"foldingRange,omitzero"` +} + +func resolveFoldingRangeClientCapabilities(v *FoldingRangeClientCapabilities) ResolvedFoldingRangeClientCapabilities { + if v == nil { + return ResolvedFoldingRangeClientCapabilities{} + } + return ResolvedFoldingRangeClientCapabilities{ + DynamicRegistration: derefOr(v.DynamicRegistration), + RangeLimit: derefOr(v.RangeLimit), + LineFoldingOnly: derefOr(v.LineFoldingOnly), + FoldingRangeKind: resolveClientFoldingRangeKindOptions(v.FoldingRangeKind), + FoldingRange: resolveClientFoldingRangeOptions(v.FoldingRange), + } +} + +type ResolvedSelectionRangeClientCapabilities struct { + DynamicRegistration bool `json:"dynamicRegistration,omitzero"` +} + +func resolveSelectionRangeClientCapabilities(v *SelectionRangeClientCapabilities) ResolvedSelectionRangeClientCapabilities { + if v == nil { + return ResolvedSelectionRangeClientCapabilities{} + } + return ResolvedSelectionRangeClientCapabilities{ + DynamicRegistration: derefOr(v.DynamicRegistration), + } +} + +type ResolvedClientDiagnosticsTagOptions struct { + ValueSet []DiagnosticTag `json:"valueSet,omitzero"` +} + +func resolveClientDiagnosticsTagOptions(v *ClientDiagnosticsTagOptions) ResolvedClientDiagnosticsTagOptions { + if v == nil { + return ResolvedClientDiagnosticsTagOptions{} + } + return ResolvedClientDiagnosticsTagOptions{ + ValueSet: v.ValueSet, + } +} + +type ResolvedPublishDiagnosticsClientCapabilities struct { + RelatedInformation bool `json:"relatedInformation,omitzero"` + TagSupport ResolvedClientDiagnosticsTagOptions `json:"tagSupport,omitzero"` + CodeDescriptionSupport bool `json:"codeDescriptionSupport,omitzero"` + DataSupport bool `json:"dataSupport,omitzero"` + VersionSupport bool `json:"versionSupport,omitzero"` +} + +func resolvePublishDiagnosticsClientCapabilities(v *PublishDiagnosticsClientCapabilities) ResolvedPublishDiagnosticsClientCapabilities { + if v == nil { + return ResolvedPublishDiagnosticsClientCapabilities{} + } + return ResolvedPublishDiagnosticsClientCapabilities{ + RelatedInformation: derefOr(v.RelatedInformation), + TagSupport: resolveClientDiagnosticsTagOptions(v.TagSupport), + CodeDescriptionSupport: derefOr(v.CodeDescriptionSupport), + DataSupport: derefOr(v.DataSupport), + VersionSupport: derefOr(v.VersionSupport), + } +} + +type ResolvedCallHierarchyClientCapabilities struct { + DynamicRegistration bool `json:"dynamicRegistration,omitzero"` +} + +func resolveCallHierarchyClientCapabilities(v *CallHierarchyClientCapabilities) ResolvedCallHierarchyClientCapabilities { + if v == nil { + return ResolvedCallHierarchyClientCapabilities{} + } + return ResolvedCallHierarchyClientCapabilities{ + DynamicRegistration: derefOr(v.DynamicRegistration), + } +} + +type ResolvedClientSemanticTokensRequestOptions struct { + Range BooleanOrEmptyObject `json:"range,omitzero"` + Full BooleanOrClientSemanticTokensRequestFullDelta `json:"full,omitzero"` +} + +func resolveClientSemanticTokensRequestOptions(v *ClientSemanticTokensRequestOptions) ResolvedClientSemanticTokensRequestOptions { + if v == nil { + return ResolvedClientSemanticTokensRequestOptions{} + } + return ResolvedClientSemanticTokensRequestOptions{ + Range: derefOr(v.Range), + Full: derefOr(v.Full), + } +} + +type ResolvedSemanticTokensClientCapabilities struct { + DynamicRegistration bool `json:"dynamicRegistration,omitzero"` + Requests ResolvedClientSemanticTokensRequestOptions `json:"requests,omitzero"` + TokenTypes []string `json:"tokenTypes,omitzero"` + TokenModifiers []string `json:"tokenModifiers,omitzero"` + Formats []TokenFormat `json:"formats,omitzero"` + OverlappingTokenSupport bool `json:"overlappingTokenSupport,omitzero"` + MultilineTokenSupport bool `json:"multilineTokenSupport,omitzero"` + ServerCancelSupport bool `json:"serverCancelSupport,omitzero"` + AugmentsSyntaxTokens bool `json:"augmentsSyntaxTokens,omitzero"` +} + +func resolveSemanticTokensClientCapabilities(v *SemanticTokensClientCapabilities) ResolvedSemanticTokensClientCapabilities { + if v == nil { + return ResolvedSemanticTokensClientCapabilities{} + } + return ResolvedSemanticTokensClientCapabilities{ + DynamicRegistration: derefOr(v.DynamicRegistration), + Requests: resolveClientSemanticTokensRequestOptions(v.Requests), + TokenTypes: v.TokenTypes, + TokenModifiers: v.TokenModifiers, + Formats: v.Formats, + OverlappingTokenSupport: derefOr(v.OverlappingTokenSupport), + MultilineTokenSupport: derefOr(v.MultilineTokenSupport), + ServerCancelSupport: derefOr(v.ServerCancelSupport), + AugmentsSyntaxTokens: derefOr(v.AugmentsSyntaxTokens), + } +} + +type ResolvedLinkedEditingRangeClientCapabilities struct { + DynamicRegistration bool `json:"dynamicRegistration,omitzero"` +} + +func resolveLinkedEditingRangeClientCapabilities(v *LinkedEditingRangeClientCapabilities) ResolvedLinkedEditingRangeClientCapabilities { + if v == nil { + return ResolvedLinkedEditingRangeClientCapabilities{} + } + return ResolvedLinkedEditingRangeClientCapabilities{ + DynamicRegistration: derefOr(v.DynamicRegistration), + } +} + +type ResolvedMonikerClientCapabilities struct { + DynamicRegistration bool `json:"dynamicRegistration,omitzero"` +} + +func resolveMonikerClientCapabilities(v *MonikerClientCapabilities) ResolvedMonikerClientCapabilities { + if v == nil { + return ResolvedMonikerClientCapabilities{} + } + return ResolvedMonikerClientCapabilities{ + DynamicRegistration: derefOr(v.DynamicRegistration), + } +} + +type ResolvedTypeHierarchyClientCapabilities struct { + DynamicRegistration bool `json:"dynamicRegistration,omitzero"` +} + +func resolveTypeHierarchyClientCapabilities(v *TypeHierarchyClientCapabilities) ResolvedTypeHierarchyClientCapabilities { + if v == nil { + return ResolvedTypeHierarchyClientCapabilities{} + } + return ResolvedTypeHierarchyClientCapabilities{ + DynamicRegistration: derefOr(v.DynamicRegistration), + } +} + +type ResolvedInlineValueClientCapabilities struct { + DynamicRegistration bool `json:"dynamicRegistration,omitzero"` +} + +func resolveInlineValueClientCapabilities(v *InlineValueClientCapabilities) ResolvedInlineValueClientCapabilities { + if v == nil { + return ResolvedInlineValueClientCapabilities{} + } + return ResolvedInlineValueClientCapabilities{ + DynamicRegistration: derefOr(v.DynamicRegistration), + } +} + +type ResolvedClientInlayHintResolveOptions struct { + Properties []string `json:"properties,omitzero"` +} + +func resolveClientInlayHintResolveOptions(v *ClientInlayHintResolveOptions) ResolvedClientInlayHintResolveOptions { + if v == nil { + return ResolvedClientInlayHintResolveOptions{} + } + return ResolvedClientInlayHintResolveOptions{ + Properties: v.Properties, + } +} + +type ResolvedInlayHintClientCapabilities struct { + DynamicRegistration bool `json:"dynamicRegistration,omitzero"` + ResolveSupport ResolvedClientInlayHintResolveOptions `json:"resolveSupport,omitzero"` +} + +func resolveInlayHintClientCapabilities(v *InlayHintClientCapabilities) ResolvedInlayHintClientCapabilities { + if v == nil { + return ResolvedInlayHintClientCapabilities{} + } + return ResolvedInlayHintClientCapabilities{ + DynamicRegistration: derefOr(v.DynamicRegistration), + ResolveSupport: resolveClientInlayHintResolveOptions(v.ResolveSupport), + } +} + +type ResolvedDiagnosticClientCapabilities struct { + RelatedInformation bool `json:"relatedInformation,omitzero"` + TagSupport ResolvedClientDiagnosticsTagOptions `json:"tagSupport,omitzero"` + CodeDescriptionSupport bool `json:"codeDescriptionSupport,omitzero"` + DataSupport bool `json:"dataSupport,omitzero"` + DynamicRegistration bool `json:"dynamicRegistration,omitzero"` + RelatedDocumentSupport bool `json:"relatedDocumentSupport,omitzero"` +} + +func resolveDiagnosticClientCapabilities(v *DiagnosticClientCapabilities) ResolvedDiagnosticClientCapabilities { + if v == nil { + return ResolvedDiagnosticClientCapabilities{} + } + return ResolvedDiagnosticClientCapabilities{ + RelatedInformation: derefOr(v.RelatedInformation), + TagSupport: resolveClientDiagnosticsTagOptions(v.TagSupport), + CodeDescriptionSupport: derefOr(v.CodeDescriptionSupport), + DataSupport: derefOr(v.DataSupport), + DynamicRegistration: derefOr(v.DynamicRegistration), + RelatedDocumentSupport: derefOr(v.RelatedDocumentSupport), + } +} + +type ResolvedInlineCompletionClientCapabilities struct { + DynamicRegistration bool `json:"dynamicRegistration,omitzero"` +} + +func resolveInlineCompletionClientCapabilities(v *InlineCompletionClientCapabilities) ResolvedInlineCompletionClientCapabilities { + if v == nil { + return ResolvedInlineCompletionClientCapabilities{} + } + return ResolvedInlineCompletionClientCapabilities{ + DynamicRegistration: derefOr(v.DynamicRegistration), + } +} + +type ResolvedTextDocumentClientCapabilities struct { + Synchronization ResolvedTextDocumentSyncClientCapabilities `json:"synchronization,omitzero"` + Filters ResolvedTextDocumentFilterClientCapabilities `json:"filters,omitzero"` + Completion ResolvedCompletionClientCapabilities `json:"completion,omitzero"` + Hover ResolvedHoverClientCapabilities `json:"hover,omitzero"` + SignatureHelp ResolvedSignatureHelpClientCapabilities `json:"signatureHelp,omitzero"` + Declaration ResolvedDeclarationClientCapabilities `json:"declaration,omitzero"` + Definition ResolvedDefinitionClientCapabilities `json:"definition,omitzero"` + TypeDefinition ResolvedTypeDefinitionClientCapabilities `json:"typeDefinition,omitzero"` + Implementation ResolvedImplementationClientCapabilities `json:"implementation,omitzero"` + References ResolvedReferenceClientCapabilities `json:"references,omitzero"` + DocumentHighlight ResolvedDocumentHighlightClientCapabilities `json:"documentHighlight,omitzero"` + DocumentSymbol ResolvedDocumentSymbolClientCapabilities `json:"documentSymbol,omitzero"` + CodeAction ResolvedCodeActionClientCapabilities `json:"codeAction,omitzero"` + CodeLens ResolvedCodeLensClientCapabilities `json:"codeLens,omitzero"` + DocumentLink ResolvedDocumentLinkClientCapabilities `json:"documentLink,omitzero"` + ColorProvider ResolvedDocumentColorClientCapabilities `json:"colorProvider,omitzero"` + Formatting ResolvedDocumentFormattingClientCapabilities `json:"formatting,omitzero"` + RangeFormatting ResolvedDocumentRangeFormattingClientCapabilities `json:"rangeFormatting,omitzero"` + OnTypeFormatting ResolvedDocumentOnTypeFormattingClientCapabilities `json:"onTypeFormatting,omitzero"` + Rename ResolvedRenameClientCapabilities `json:"rename,omitzero"` + FoldingRange ResolvedFoldingRangeClientCapabilities `json:"foldingRange,omitzero"` + SelectionRange ResolvedSelectionRangeClientCapabilities `json:"selectionRange,omitzero"` + PublishDiagnostics ResolvedPublishDiagnosticsClientCapabilities `json:"publishDiagnostics,omitzero"` + CallHierarchy ResolvedCallHierarchyClientCapabilities `json:"callHierarchy,omitzero"` + SemanticTokens ResolvedSemanticTokensClientCapabilities `json:"semanticTokens,omitzero"` + LinkedEditingRange ResolvedLinkedEditingRangeClientCapabilities `json:"linkedEditingRange,omitzero"` + Moniker ResolvedMonikerClientCapabilities `json:"moniker,omitzero"` + TypeHierarchy ResolvedTypeHierarchyClientCapabilities `json:"typeHierarchy,omitzero"` + InlineValue ResolvedInlineValueClientCapabilities `json:"inlineValue,omitzero"` + InlayHint ResolvedInlayHintClientCapabilities `json:"inlayHint,omitzero"` + Diagnostic ResolvedDiagnosticClientCapabilities `json:"diagnostic,omitzero"` + InlineCompletion ResolvedInlineCompletionClientCapabilities `json:"inlineCompletion,omitzero"` +} + +func resolveTextDocumentClientCapabilities(v *TextDocumentClientCapabilities) ResolvedTextDocumentClientCapabilities { + if v == nil { + return ResolvedTextDocumentClientCapabilities{} + } + return ResolvedTextDocumentClientCapabilities{ + Synchronization: resolveTextDocumentSyncClientCapabilities(v.Synchronization), + Filters: resolveTextDocumentFilterClientCapabilities(v.Filters), + Completion: resolveCompletionClientCapabilities(v.Completion), + Hover: resolveHoverClientCapabilities(v.Hover), + SignatureHelp: resolveSignatureHelpClientCapabilities(v.SignatureHelp), + Declaration: resolveDeclarationClientCapabilities(v.Declaration), + Definition: resolveDefinitionClientCapabilities(v.Definition), + TypeDefinition: resolveTypeDefinitionClientCapabilities(v.TypeDefinition), + Implementation: resolveImplementationClientCapabilities(v.Implementation), + References: resolveReferenceClientCapabilities(v.References), + DocumentHighlight: resolveDocumentHighlightClientCapabilities(v.DocumentHighlight), + DocumentSymbol: resolveDocumentSymbolClientCapabilities(v.DocumentSymbol), + CodeAction: resolveCodeActionClientCapabilities(v.CodeAction), + CodeLens: resolveCodeLensClientCapabilities(v.CodeLens), + DocumentLink: resolveDocumentLinkClientCapabilities(v.DocumentLink), + ColorProvider: resolveDocumentColorClientCapabilities(v.ColorProvider), + Formatting: resolveDocumentFormattingClientCapabilities(v.Formatting), + RangeFormatting: resolveDocumentRangeFormattingClientCapabilities(v.RangeFormatting), + OnTypeFormatting: resolveDocumentOnTypeFormattingClientCapabilities(v.OnTypeFormatting), + Rename: resolveRenameClientCapabilities(v.Rename), + FoldingRange: resolveFoldingRangeClientCapabilities(v.FoldingRange), + SelectionRange: resolveSelectionRangeClientCapabilities(v.SelectionRange), + PublishDiagnostics: resolvePublishDiagnosticsClientCapabilities(v.PublishDiagnostics), + CallHierarchy: resolveCallHierarchyClientCapabilities(v.CallHierarchy), + SemanticTokens: resolveSemanticTokensClientCapabilities(v.SemanticTokens), + LinkedEditingRange: resolveLinkedEditingRangeClientCapabilities(v.LinkedEditingRange), + Moniker: resolveMonikerClientCapabilities(v.Moniker), + TypeHierarchy: resolveTypeHierarchyClientCapabilities(v.TypeHierarchy), + InlineValue: resolveInlineValueClientCapabilities(v.InlineValue), + InlayHint: resolveInlayHintClientCapabilities(v.InlayHint), + Diagnostic: resolveDiagnosticClientCapabilities(v.Diagnostic), + InlineCompletion: resolveInlineCompletionClientCapabilities(v.InlineCompletion), + } +} + +type ResolvedNotebookDocumentSyncClientCapabilities struct { + DynamicRegistration bool `json:"dynamicRegistration,omitzero"` + ExecutionSummarySupport bool `json:"executionSummarySupport,omitzero"` +} + +func resolveNotebookDocumentSyncClientCapabilities(v *NotebookDocumentSyncClientCapabilities) ResolvedNotebookDocumentSyncClientCapabilities { + if v == nil { + return ResolvedNotebookDocumentSyncClientCapabilities{} + } + return ResolvedNotebookDocumentSyncClientCapabilities{ + DynamicRegistration: derefOr(v.DynamicRegistration), + ExecutionSummarySupport: derefOr(v.ExecutionSummarySupport), + } +} + +type ResolvedNotebookDocumentClientCapabilities struct { + Synchronization ResolvedNotebookDocumentSyncClientCapabilities `json:"synchronization,omitzero"` +} + +func resolveNotebookDocumentClientCapabilities(v *NotebookDocumentClientCapabilities) ResolvedNotebookDocumentClientCapabilities { + if v == nil { + return ResolvedNotebookDocumentClientCapabilities{} + } + return ResolvedNotebookDocumentClientCapabilities{ + Synchronization: resolveNotebookDocumentSyncClientCapabilities(v.Synchronization), + } +} + +type ResolvedClientShowMessageActionItemOptions struct { + AdditionalPropertiesSupport bool `json:"additionalPropertiesSupport,omitzero"` +} + +func resolveClientShowMessageActionItemOptions(v *ClientShowMessageActionItemOptions) ResolvedClientShowMessageActionItemOptions { + if v == nil { + return ResolvedClientShowMessageActionItemOptions{} + } + return ResolvedClientShowMessageActionItemOptions{ + AdditionalPropertiesSupport: derefOr(v.AdditionalPropertiesSupport), + } +} + +type ResolvedShowMessageRequestClientCapabilities struct { + MessageActionItem ResolvedClientShowMessageActionItemOptions `json:"messageActionItem,omitzero"` +} + +func resolveShowMessageRequestClientCapabilities(v *ShowMessageRequestClientCapabilities) ResolvedShowMessageRequestClientCapabilities { + if v == nil { + return ResolvedShowMessageRequestClientCapabilities{} + } + return ResolvedShowMessageRequestClientCapabilities{ + MessageActionItem: resolveClientShowMessageActionItemOptions(v.MessageActionItem), + } +} + +type ResolvedShowDocumentClientCapabilities struct { + Support bool `json:"support,omitzero"` +} + +func resolveShowDocumentClientCapabilities(v *ShowDocumentClientCapabilities) ResolvedShowDocumentClientCapabilities { + if v == nil { + return ResolvedShowDocumentClientCapabilities{} + } + return ResolvedShowDocumentClientCapabilities{ + Support: v.Support, + } +} + +type ResolvedWindowClientCapabilities struct { + WorkDoneProgress bool `json:"workDoneProgress,omitzero"` + ShowMessage ResolvedShowMessageRequestClientCapabilities `json:"showMessage,omitzero"` + ShowDocument ResolvedShowDocumentClientCapabilities `json:"showDocument,omitzero"` +} + +func resolveWindowClientCapabilities(v *WindowClientCapabilities) ResolvedWindowClientCapabilities { + if v == nil { + return ResolvedWindowClientCapabilities{} + } + return ResolvedWindowClientCapabilities{ + WorkDoneProgress: derefOr(v.WorkDoneProgress), + ShowMessage: resolveShowMessageRequestClientCapabilities(v.ShowMessage), + ShowDocument: resolveShowDocumentClientCapabilities(v.ShowDocument), + } +} + +type ResolvedStaleRequestSupportOptions struct { + Cancel bool `json:"cancel,omitzero"` + RetryOnContentModified []string `json:"retryOnContentModified,omitzero"` +} + +func resolveStaleRequestSupportOptions(v *StaleRequestSupportOptions) ResolvedStaleRequestSupportOptions { + if v == nil { + return ResolvedStaleRequestSupportOptions{} + } + return ResolvedStaleRequestSupportOptions{ + Cancel: v.Cancel, + RetryOnContentModified: v.RetryOnContentModified, + } +} + +type ResolvedRegularExpressionsClientCapabilities struct { + Engine string `json:"engine,omitzero"` + Version string `json:"version,omitzero"` +} + +func resolveRegularExpressionsClientCapabilities(v *RegularExpressionsClientCapabilities) ResolvedRegularExpressionsClientCapabilities { + if v == nil { + return ResolvedRegularExpressionsClientCapabilities{} + } + return ResolvedRegularExpressionsClientCapabilities{ + Engine: v.Engine, + Version: derefOr(v.Version), + } +} + +type ResolvedMarkdownClientCapabilities struct { + Parser string `json:"parser,omitzero"` + Version string `json:"version,omitzero"` + AllowedTags []string `json:"allowedTags,omitzero"` +} + +func resolveMarkdownClientCapabilities(v *MarkdownClientCapabilities) ResolvedMarkdownClientCapabilities { + if v == nil { + return ResolvedMarkdownClientCapabilities{} + } + return ResolvedMarkdownClientCapabilities{ + Parser: v.Parser, + Version: derefOr(v.Version), + AllowedTags: derefOr(v.AllowedTags), + } +} + +type ResolvedGeneralClientCapabilities struct { + StaleRequestSupport ResolvedStaleRequestSupportOptions `json:"staleRequestSupport,omitzero"` + RegularExpressions ResolvedRegularExpressionsClientCapabilities `json:"regularExpressions,omitzero"` + Markdown ResolvedMarkdownClientCapabilities `json:"markdown,omitzero"` + PositionEncodings []PositionEncodingKind `json:"positionEncodings,omitzero"` +} + +func resolveGeneralClientCapabilities(v *GeneralClientCapabilities) ResolvedGeneralClientCapabilities { + if v == nil { + return ResolvedGeneralClientCapabilities{} + } + return ResolvedGeneralClientCapabilities{ + StaleRequestSupport: resolveStaleRequestSupportOptions(v.StaleRequestSupport), + RegularExpressions: resolveRegularExpressionsClientCapabilities(v.RegularExpressions), + Markdown: resolveMarkdownClientCapabilities(v.Markdown), + PositionEncodings: derefOr(v.PositionEncodings), + } +} + +// ResolvedClientCapabilities is a version of ClientCapabilities where all nested +// fields are values (not pointers), making it easier to access deeply nested capabilities. +// Use ResolveClientCapabilities to convert from ClientCapabilities. +type ResolvedClientCapabilities struct { + Workspace ResolvedWorkspaceClientCapabilities `json:"workspace,omitzero"` + TextDocument ResolvedTextDocumentClientCapabilities `json:"textDocument,omitzero"` + NotebookDocument ResolvedNotebookDocumentClientCapabilities `json:"notebookDocument,omitzero"` + Window ResolvedWindowClientCapabilities `json:"window,omitzero"` + General ResolvedGeneralClientCapabilities `json:"general,omitzero"` + Experimental any `json:"experimental,omitzero"` +} + +func ResolveClientCapabilities(v *ClientCapabilities) ResolvedClientCapabilities { + if v == nil { + return ResolvedClientCapabilities{} + } + return ResolvedClientCapabilities{ + Workspace: resolveWorkspaceClientCapabilities(v.Workspace), + TextDocument: resolveTextDocumentClientCapabilities(v.TextDocument), + NotebookDocument: resolveNotebookDocumentClientCapabilities(v.NotebookDocument), + Window: resolveWindowClientCapabilities(v.Window), + General: resolveGeneralClientCapabilities(v.General), + Experimental: derefOr(v.Experimental), + } +} diff --git a/pkg/lsp/server.go b/pkg/lsp/server.go index e145a77e..a8b1d50b 100644 --- a/pkg/lsp/server.go +++ b/pkg/lsp/server.go @@ -14,6 +14,7 @@ import ( "github.com/go-json-experiment/json" "github.com/buke/typescript-go-internal/pkg/collections" "github.com/buke/typescript-go-internal/pkg/core" + "github.com/buke/typescript-go-internal/pkg/jsonutil" "github.com/buke/typescript-go-internal/pkg/ls" "github.com/buke/typescript-go-internal/pkg/ls/lsconv" "github.com/buke/typescript-go-internal/pkg/ls/lsutil" @@ -143,9 +144,10 @@ type Server struct { defaultLibraryPath string typingsLocation string - initializeParams *lsproto.InitializeParams - positionEncoding lsproto.PositionEncodingKind - locale language.Tag + initializeParams *lsproto.InitializeParams + clientCapabilities lsproto.ResolvedClientCapabilities + positionEncoding lsproto.PositionEncodingKind + locale language.Tag watchEnabled bool watcherID atomic.Uint32 @@ -163,7 +165,7 @@ type Server struct { // WatchFiles implements project.Client. func (s *Server) WatchFiles(ctx context.Context, id project.WatcherID, watchers []*lsproto.FileSystemWatcher) error { - _, err := s.sendRequest(ctx, lsproto.MethodClientRegisterCapability, &lsproto.RegistrationParams{ + _, err := sendClientRequest(ctx, s, lsproto.ClientRegisterCapabilityInfo, &lsproto.RegistrationParams{ Registrations: []*lsproto.Registration{ { Id: string(id), @@ -185,7 +187,7 @@ func (s *Server) WatchFiles(ctx context.Context, id project.WatcherID, watchers // UnwatchFiles implements project.Client. func (s *Server) UnwatchFiles(ctx context.Context, id project.WatcherID) error { if s.watchers.Has(id) { - _, err := s.sendRequest(ctx, lsproto.MethodClientUnregisterCapability, &lsproto.UnregistrationParams{ + _, err := sendClientRequest(ctx, s, lsproto.ClientUnregisterCapabilityInfo, &lsproto.UnregistrationParams{ Unregisterations: []*lsproto.Unregistration{ { Id: string(id), @@ -206,14 +208,11 @@ func (s *Server) UnwatchFiles(ctx context.Context, id project.WatcherID) error { // RefreshDiagnostics implements project.Client. func (s *Server) RefreshDiagnostics(ctx context.Context) error { - if s.initializeParams.Capabilities == nil || - s.initializeParams.Capabilities.Workspace == nil || - s.initializeParams.Capabilities.Workspace.Diagnostics == nil || - !ptrIsTrue(s.initializeParams.Capabilities.Workspace.Diagnostics.RefreshSupport) { + if !s.clientCapabilities.Workspace.Diagnostics.RefreshSupport { return nil } - if _, err := s.sendRequest(ctx, lsproto.MethodWorkspaceDiagnosticRefresh, nil); err != nil { + if _, err := sendClientRequest(ctx, s, lsproto.WorkspaceDiagnosticRefreshInfo, nil); err != nil { return fmt.Errorf("failed to refresh diagnostics: %w", err) } @@ -221,12 +220,12 @@ func (s *Server) RefreshDiagnostics(ctx context.Context) error { } func (s *Server) RequestConfiguration(ctx context.Context) (*lsutil.UserPreferences, error) { - if s.initializeParams.Capabilities == nil || s.initializeParams.Capabilities.Workspace == nil || - !ptrIsTrue(s.initializeParams.Capabilities.Workspace.Configuration) { + caps := lsproto.GetClientCapabilities(ctx) + if !caps.Workspace.Configuration { // if no configuration request capapbility, return default preferences return s.session.NewUserPreferences(), nil } - result, err := s.sendRequest(ctx, lsproto.MethodWorkspaceConfiguration, &lsproto.ConfigurationParams{ + configs, err := sendClientRequest(ctx, s, lsproto.WorkspaceConfigurationInfo, &lsproto.ConfigurationParams{ Items: []*lsproto.ConfigurationItem{ { Section: ptrTo("typescript"), @@ -236,7 +235,6 @@ func (s *Server) RequestConfiguration(ctx context.Context) (*lsutil.UserPreferen if err != nil { return nil, fmt.Errorf("configure request failed: %w", err) } - configs := result.([]any) s.Log(fmt.Sprintf("\n\nconfiguration: %+v, %T\n\n", configs, configs)) userPreferences := s.session.NewUserPreferences() for _, item := range configs { @@ -392,9 +390,9 @@ func (s *Server) writeLoop(ctx context.Context) error { } } -func (s *Server) sendRequest(ctx context.Context, method lsproto.Method, params any) (any, error) { +func sendClientRequest[Req, Resp any](ctx context.Context, s *Server, info lsproto.RequestInfo[Req, Resp], params Req) (Resp, error) { id := lsproto.NewIDString(fmt.Sprintf("ts%d", s.clientSeq.Add(1))) - req := lsproto.NewRequestMessage(method, id, params) + req := info.NewRequestMessage(id, params) responseChan := make(chan *lsproto.ResponseMessage, 1) s.pendingServerRequestsMu.Lock() @@ -411,12 +409,12 @@ func (s *Server) sendRequest(ctx context.Context, method lsproto.Method, params close(respChan) delete(s.pendingServerRequests, *id) } - return nil, ctx.Err() + return *new(Resp), ctx.Err() case resp := <-responseChan: if resp.Error != nil { - return nil, fmt.Errorf("request failed: %s", resp.Error.String()) + return *new(Resp), fmt.Errorf("request failed: %s", resp.Error.String()) } - return resp.Result, nil + return info.UnmarshalResult(resp.Result) } } @@ -447,6 +445,8 @@ func (s *Server) sendResponse(resp *lsproto.ResponseMessage) { } func (s *Server) handleRequestOrNotification(ctx context.Context, req *lsproto.RequestMessage) error { + ctx = lsproto.WithClientCapabilities(ctx, &s.clientCapabilities) + if handler := handlers()[req.Method]; handler != nil { return handler(s, ctx, req) } @@ -585,12 +585,18 @@ func (s *Server) handleInitialize(ctx context.Context, params *lsproto.Initializ } s.initializeParams = params + s.clientCapabilities = resolveClientCapabilities(params.Capabilities) + + if _, err := fmt.Fprint(s.stderr, "Resolved client capabilities: "); err != nil { + return nil, err + } + if err := jsonutil.MarshalIndentWrite(s.stderr, &s.clientCapabilities, "", "\t"); err != nil { + return nil, err + } s.positionEncoding = lsproto.PositionEncodingKindUTF16 - if genCapabilities := s.initializeParams.Capabilities.General; genCapabilities != nil && genCapabilities.PositionEncodings != nil { - if slices.Contains(*genCapabilities.PositionEncodings, lsproto.PositionEncodingKindUTF8) { - s.positionEncoding = lsproto.PositionEncodingKindUTF8 - } + if slices.Contains(s.clientCapabilities.General.PositionEncodings, lsproto.PositionEncodingKindUTF8) { + s.positionEncoding = lsproto.PositionEncodingKindUTF8 } if s.initializeParams.Locale != nil { @@ -691,15 +697,12 @@ func (s *Server) handleInitialize(ctx context.Context, params *lsproto.Initializ } func (s *Server) handleInitialized(ctx context.Context, params *lsproto.InitializedParams) error { - if shouldEnableWatch(s.initializeParams) { + if s.clientCapabilities.Workspace.DidChangeWatchedFiles.DynamicRegistration { s.watchEnabled = true } cwd := s.cwd - if s.initializeParams.Capabilities != nil && - s.initializeParams.Capabilities.Workspace != nil && - s.initializeParams.Capabilities.Workspace.WorkspaceFolders != nil && - ptrIsTrue(s.initializeParams.Capabilities.Workspace.WorkspaceFolders) && + if s.clientCapabilities.Workspace.WorkspaceFolders && s.initializeParams.WorkspaceFolders != nil && s.initializeParams.WorkspaceFolders.WorkspaceFolders != nil && len(*s.initializeParams.WorkspaceFolders.WorkspaceFolders) == 1 { @@ -742,9 +745,29 @@ func (s *Server) handleInitialized(ctx context.Context, params *lsproto.Initiali return err } s.session.InitializeWithConfig(userPreferences) + + _, err = sendClientRequest(ctx, s, lsproto.ClientRegisterCapabilityInfo, &lsproto.RegistrationParams{ + Registrations: []*lsproto.Registration{ + { + Id: "typescript-config-watch-id", + Method: string(lsproto.MethodWorkspaceDidChangeConfiguration), + RegisterOptions: ptrTo(any(lsproto.DidChangeConfigurationRegistrationOptions{ + Section: &lsproto.StringOrStrings{ + // !!! Both the 'javascript' and 'js/ts' scopes need to be watched for settings as well. + Strings: &[]string{"typescript"}, + }, + })), + }, + }, + }) + if err != nil { + return fmt.Errorf("failed to register configuration change watcher: %w", err) + } } - // !!! temporary; remove when we have `handleDidChangeConfiguration`/implicit project config support + // !!! temporary. + // Remove when we have `handleDidChangeConfiguration`/implicit project config support + // derived from 'js/ts.implicitProjectConfig.*'. if s.compilerOptionsForInferredProjects != nil { s.session.DidChangeCompilerOptionsForInferredProjects(ctx, s.compilerOptionsForInferredProjects) } @@ -762,9 +785,14 @@ func (s *Server) handleExit(ctx context.Context, params any) error { } func (s *Server) handleDidChangeWorkspaceConfiguration(ctx context.Context, params *lsproto.DidChangeConfigurationParams) error { - // !!! only implemented because needed for fourslash + settings, ok := params.Settings.(map[string]any) + if !ok { + return nil + } + // !!! Both the 'javascript' and 'js/ts' scopes need to be checked for settings as well. + tsSettings := settings["typescript"] userPreferences := s.session.UserPreferences() - if parsed := userPreferences.Parse(params.Settings); parsed != nil { + if parsed := userPreferences.Parse(tsSettings); parsed != nil { userPreferences = parsed } s.session.Configure(userPreferences) @@ -812,11 +840,11 @@ func (s *Server) handleSetTrace(ctx context.Context, params *lsproto.SetTracePar } func (s *Server) handleDocumentDiagnostic(ctx context.Context, ls *ls.LanguageService, params *lsproto.DocumentDiagnosticParams) (lsproto.DocumentDiagnosticResponse, error) { - return ls.ProvideDiagnostics(ctx, params.TextDocument.Uri, getDiagnosticClientCapabilities(s.initializeParams)) + return ls.ProvideDiagnostics(ctx, params.TextDocument.Uri) } func (s *Server) handleHover(ctx context.Context, ls *ls.LanguageService, params *lsproto.HoverParams) (lsproto.HoverResponse, error) { - return ls.ProvideHover(ctx, params.TextDocument.Uri, params.Position, getHoverContentFormat(s.initializeParams)) + return ls.ProvideHover(ctx, params.TextDocument.Uri, params.Position) } func (s *Server) handleSignatureHelp(ctx context.Context, languageService *ls.LanguageService, params *lsproto.SignatureHelpParams) (lsproto.SignatureHelpResponse, error) { @@ -825,17 +853,15 @@ func (s *Server) handleSignatureHelp(ctx context.Context, languageService *ls.La params.TextDocument.Uri, params.Position, params.Context, - s.initializeParams.Capabilities.TextDocument.SignatureHelp, - getSignatureHelpDocumentationFormat(s.initializeParams), ) } func (s *Server) handleDefinition(ctx context.Context, ls *ls.LanguageService, params *lsproto.DefinitionParams) (lsproto.DefinitionResponse, error) { - return ls.ProvideDefinition(ctx, params.TextDocument.Uri, params.Position, getDefinitionClientSupportsLink(s.initializeParams)) + return ls.ProvideDefinition(ctx, params.TextDocument.Uri, params.Position) } func (s *Server) handleTypeDefinition(ctx context.Context, ls *ls.LanguageService, params *lsproto.TypeDefinitionParams) (lsproto.TypeDefinitionResponse, error) { - return ls.ProvideTypeDefinition(ctx, params.TextDocument.Uri, params.Position, getTypeDefinitionClientSupportsLink(s.initializeParams)) + return ls.ProvideTypeDefinition(ctx, params.TextDocument.Uri, params.Position) } func (s *Server) handleReferences(ctx context.Context, ls *ls.LanguageService, params *lsproto.ReferenceParams) (lsproto.ReferencesResponse, error) { @@ -845,7 +871,7 @@ func (s *Server) handleReferences(ctx context.Context, ls *ls.LanguageService, p func (s *Server) handleImplementations(ctx context.Context, ls *ls.LanguageService, params *lsproto.ImplementationParams) (lsproto.ImplementationResponse, error) { // goToImplementation - return ls.ProvideImplementations(ctx, params, getImplementationClientSupportsLink(s.initializeParams)) + return ls.ProvideImplementations(ctx, params) } func (s *Server) handleCompletion(ctx context.Context, languageService *ls.LanguageService, params *lsproto.CompletionParams) (lsproto.CompletionResponse, error) { @@ -854,7 +880,6 @@ func (s *Server) handleCompletion(ctx context.Context, languageService *ls.Langu params.TextDocument.Uri, params.Position, params.Context, - getCompletionClientCapabilities(s.initializeParams), ) } @@ -872,7 +897,6 @@ func (s *Server) handleCompletionItemResolve(ctx context.Context, params *lsprot ctx, params, data, - getCompletionClientCapabilities(s.initializeParams), ) } @@ -912,7 +936,7 @@ func (s *Server) handleWorkspaceSymbol(ctx context.Context, params *lsproto.Work } func (s *Server) handleDocumentSymbol(ctx context.Context, ls *ls.LanguageService, params *lsproto.DocumentSymbolParams) (lsproto.DocumentSymbolResponse, error) { - return ls.ProvideDocumentSymbols(ctx, params.TextDocument.Uri, getDocumentSymbolClientSupportsHierarchical(s.initializeParams)) + return ls.ProvideDocumentSymbols(ctx, params.TextDocument.Uri) } func (s *Server) handleRename(ctx context.Context, ls *ls.LanguageService, params *lsproto.RenameParams) (lsproto.RenameResponse, error) { @@ -931,6 +955,14 @@ func (s *Server) handleCodeAction(ctx context.Context, ls *ls.LanguageService, p return ls.ProvideCodeActions(ctx, params) } +func (s *Server) handleInlayHint( + ctx context.Context, + languageService *ls.LanguageService, + params *lsproto.InlayHintParams, +) (lsproto.InlayHintResponse, error) { + return languageService.ProvideInlayHint(ctx, params) +} + func (s *Server) Log(msg ...any) { fmt.Fprintln(s.stderr, msg...) } @@ -968,117 +1000,28 @@ func ptrTo[T any](v T) *T { return &v } -func ptrIsTrue(v *bool) bool { - if v == nil { - return false - } - return *v -} - -func shouldEnableWatch(params *lsproto.InitializeParams) bool { - if params == nil || params.Capabilities == nil || params.Capabilities.Workspace == nil { - return false - } - return params.Capabilities.Workspace.DidChangeWatchedFiles != nil && - ptrIsTrue(params.Capabilities.Workspace.DidChangeWatchedFiles.DynamicRegistration) -} - -func getCompletionClientCapabilities(params *lsproto.InitializeParams) *lsproto.CompletionClientCapabilities { - if params == nil || params.Capabilities == nil || params.Capabilities.TextDocument == nil { - return nil - } - return params.Capabilities.TextDocument.Completion -} - -func (s *Server) handleInlayHint( - ctx context.Context, - languageService *ls.LanguageService, - params *lsproto.InlayHintParams, -) (lsproto.InlayHintResponse, error) { - return languageService.ProvideInlayHint(ctx, params) -} - -func getDefinitionClientSupportsLink(params *lsproto.InitializeParams) bool { - if params == nil || params.Capabilities == nil || params.Capabilities.TextDocument == nil || - params.Capabilities.TextDocument.Definition == nil { - return false - } - return ptrIsTrue(params.Capabilities.TextDocument.Definition.LinkSupport) -} - -func getTypeDefinitionClientSupportsLink(params *lsproto.InitializeParams) bool { - if params == nil || params.Capabilities == nil || params.Capabilities.TextDocument == nil || - params.Capabilities.TextDocument.TypeDefinition == nil { - return false - } - return ptrIsTrue(params.Capabilities.TextDocument.TypeDefinition.LinkSupport) -} - -func getImplementationClientSupportsLink(params *lsproto.InitializeParams) bool { - if params == nil || params.Capabilities == nil || params.Capabilities.TextDocument == nil || - params.Capabilities.TextDocument.Implementation == nil { - return false - } - return ptrIsTrue(params.Capabilities.TextDocument.Implementation.LinkSupport) -} - -func getDocumentSymbolClientSupportsHierarchical(params *lsproto.InitializeParams) bool { - if params == nil || params.Capabilities == nil || params.Capabilities.TextDocument == nil || - params.Capabilities.TextDocument.DocumentSymbol == nil { - return false - } - return ptrIsTrue(params.Capabilities.TextDocument.DocumentSymbol.HierarchicalDocumentSymbolSupport) -} - -func getHoverContentFormat(params *lsproto.InitializeParams) lsproto.MarkupKind { - if params == nil || params.Capabilities == nil || params.Capabilities.TextDocument == nil || params.Capabilities.TextDocument.Hover == nil || params.Capabilities.TextDocument.Hover.ContentFormat == nil { - // Default to plaintext if no preference specified - return lsproto.MarkupKindPlainText - } - formats := *params.Capabilities.TextDocument.Hover.ContentFormat - if len(formats) == 0 { - return lsproto.MarkupKindPlainText - } - // Return the first (most preferred) format - return formats[0] -} - -func getSignatureHelpDocumentationFormat(params *lsproto.InitializeParams) lsproto.MarkupKind { - if params == nil || params.Capabilities == nil || params.Capabilities.TextDocument == nil || params.Capabilities.TextDocument.SignatureHelp == nil || - params.Capabilities.TextDocument.SignatureHelp.SignatureInformation == nil || - params.Capabilities.TextDocument.SignatureHelp.SignatureInformation.DocumentationFormat == nil { - // Default to plaintext if no preference specified - return lsproto.MarkupKindPlainText - } - formats := *params.Capabilities.TextDocument.SignatureHelp.SignatureInformation.DocumentationFormat - if len(formats) == 0 { - return lsproto.MarkupKindPlainText - } - // Return the first (most preferred) format - return formats[0] -} - -func getDiagnosticClientCapabilities(params *lsproto.InitializeParams) *lsproto.DiagnosticClientCapabilities { - if params == nil || params.Capabilities == nil || params.Capabilities.TextDocument == nil { - return nil - } - - var caps lsproto.DiagnosticClientCapabilities - if params.Capabilities.TextDocument.Diagnostic != nil { - caps = *params.Capabilities.TextDocument.Diagnostic - } +func resolveClientCapabilities(caps *lsproto.ClientCapabilities) lsproto.ResolvedClientCapabilities { + resolved := lsproto.ResolveClientCapabilities(caps) // Some clients claim that push and pull diagnostics have different capabilities, // including vscode-languageclient v9. Work around this by defaulting any missing // pull diagnostic caps with the pull diagnostic equivalents. // // TODO: remove when we upgrade to vscode-languageclient v10, which fixes this issue. - if publish := params.Capabilities.TextDocument.PublishDiagnostics; publish != nil { - caps.RelatedInformation = core.Coalesce(caps.RelatedInformation, publish.RelatedInformation) - caps.TagSupport = core.Coalesce(caps.TagSupport, publish.TagSupport) - caps.CodeDescriptionSupport = core.Coalesce(caps.CodeDescriptionSupport, publish.CodeDescriptionSupport) - caps.DataSupport = core.Coalesce(caps.DataSupport, publish.DataSupport) + publish := resolved.TextDocument.PublishDiagnostics + diagnostic := &resolved.TextDocument.Diagnostic + if !diagnostic.RelatedInformation && publish.RelatedInformation { + diagnostic.RelatedInformation = true + } + if !diagnostic.CodeDescriptionSupport && publish.CodeDescriptionSupport { + diagnostic.CodeDescriptionSupport = true + } + if !diagnostic.DataSupport && publish.DataSupport { + diagnostic.DataSupport = true + } + if len(diagnostic.TagSupport.ValueSet) == 0 && len(publish.TagSupport.ValueSet) > 0 { + diagnostic.TagSupport.ValueSet = publish.TagSupport.ValueSet } - return &caps + return resolved } diff --git a/pkg/parser/reparser.go b/pkg/parser/reparser.go index aa7ab133..de03620e 100644 --- a/pkg/parser/reparser.go +++ b/pkg/parser/reparser.go @@ -132,7 +132,7 @@ func (p *Parser) reparseJSDocSignature(jsSignature *ast.Node, fun *ast.Node, jsD case ast.KindConstructor: signature = p.factory.NewConstructorDeclaration(clonedModifiers, nil, nil, nil, nil, nil) case ast.KindJSDocCallbackTag: - signature = p.factory.NewFunctionTypeNode(nil, nil, nil) + signature = p.factory.NewFunctionTypeNode(nil, nil, p.factory.NewKeywordTypeNode(ast.KindAnyKeyword)) default: panic("Unexpected kind " + fun.Kind.String()) } diff --git a/pkg/project/checkerpool.go b/pkg/project/checkerpool.go index c0d05b61..4cc8df52 100644 --- a/pkg/project/checkerpool.go +++ b/pkg/project/checkerpool.go @@ -218,7 +218,7 @@ func (p *CheckerPool) isFullLocked() bool { func (p *CheckerPool) createCheckerLocked() (*checker.Checker, int) { for i, existing := range p.checkers { if existing == nil { - checker := checker.NewChecker(p.program) + checker, _ := checker.NewChecker(p.program) p.checkers[i] = checker return checker, i } diff --git a/pkg/project/untitled_test.go b/pkg/project/untitled_test.go index 7cacb767..a6667c3a 100644 --- a/pkg/project/untitled_test.go +++ b/pkg/project/untitled_test.go @@ -87,7 +87,7 @@ x++;` assert.Assert(t, len(refs) == 3, "Expected 3 references, got %d", len(refs)) // Also test definition using ProvideDefinition - definition, err := languageService.ProvideDefinition(ctx, uri, lspPosition, false) + definition, err := languageService.ProvideDefinition(ctx, uri, lspPosition) assert.NilError(t, err) if definition.Locations != nil { t.Logf("Definition found: %d locations", len(*definition.Locations)) diff --git a/pkg/scanner/scanner.go b/pkg/scanner/scanner.go index 14e89674..e2322acc 100644 --- a/pkg/scanner/scanner.go +++ b/pkg/scanner/scanner.go @@ -1629,6 +1629,13 @@ func (s *Scanner) scanEscapeSequence(flags EscapeSequenceScanningFlags) string { codePoint := s.scanUnicodeEscape(flags&EscapeSequenceScanningFlagsReportInvalidEscapeErrors != 0) if codePoint < 0 { return s.text[start:s.pos] + } else if codePointIsHighSurrogate(codePoint) && s.char() == '\\' && s.charAt(1) == 'u' { + savedPos := s.pos + nextCodePoint := s.scanUnicodeEscape(flags&EscapeSequenceScanningFlagsReportInvalidEscapeErrors != 0) + if codePointIsLowSurrogate(nextCodePoint) { + return string(surrogatePairToCodepoint(codePoint, nextCodePoint)) + } + s.pos = savedPos // restore position because we do not consume nextCodePoint } return string(codePoint) case 'x': @@ -2458,7 +2465,7 @@ func GetECMAEndLinePosition(sourceFile *ast.SourceFile, line int) int { } } -func GetECMAPositionOfLineAndCharacter(sourceFile *ast.SourceFile, line int, character int) int { +func GetECMAPositionOfLineAndCharacter(sourceFile ast.SourceFileLike, line int, character int) int { return ComputePositionOfLineAndCharacter(GetECMALineStarts(sourceFile), line, character) } diff --git a/pkg/scanner/utilities.go b/pkg/scanner/utilities.go index 6437a261..5d3a6e0f 100644 --- a/pkg/scanner/utilities.go +++ b/pkg/scanner/utilities.go @@ -8,6 +8,25 @@ import ( "github.com/buke/typescript-go-internal/pkg/core" ) +const ( + surr1 = 0xd800 + surr2 = 0xdc00 + surr3 = 0xe000 + surrSelf = 0x10000 +) + +func codePointIsHighSurrogate(r rune) bool { + return surr1 <= r && r < surr2 +} + +func codePointIsLowSurrogate(r rune) bool { + return surr2 <= r && r < surr3 +} + +func surrogatePairToCodepoint(r1, r2 rune) rune { + return (r1-surr1)<<10 | (r2 - surr2) + surrSelf +} + func tokenIsIdentifierOrKeyword(token ast.Kind) bool { return token >= ast.KindIdentifier } diff --git a/pkg/testutil/parsetestutil/parsetestutil.go b/pkg/testutil/parsetestutil/parsetestutil.go index 0c91f513..366c8f97 100644 --- a/pkg/testutil/parsetestutil/parsetestutil.go +++ b/pkg/testutil/parsetestutil/parsetestutil.go @@ -27,7 +27,7 @@ func CheckDiagnostics(t *testing.T, file *ast.SourceFile) { t.Helper() if len(file.Diagnostics()) > 0 { var b strings.Builder - diagnosticwriter.WriteFormatDiagnostics(&b, file.Diagnostics(), &diagnosticwriter.FormattingOptions{ + diagnosticwriter.WriteFormatDiagnostics(&b, diagnosticwriter.FromASTDiagnostics(file.Diagnostics()), &diagnosticwriter.FormattingOptions{ NewLine: "\n", }) t.Error(b.String()) @@ -39,7 +39,7 @@ func CheckDiagnosticsMessage(t *testing.T, file *ast.SourceFile, message string) t.Helper() if len(file.Diagnostics()) > 0 { var b strings.Builder - diagnosticwriter.WriteFormatDiagnostics(&b, file.Diagnostics(), &diagnosticwriter.FormattingOptions{ + diagnosticwriter.WriteFormatDiagnostics(&b, diagnosticwriter.FromASTDiagnostics(file.Diagnostics()), &diagnosticwriter.FormattingOptions{ NewLine: "\n", }) t.Error(message + b.String()) diff --git a/pkg/testutil/tsbaseline/error_baseline.go b/pkg/testutil/tsbaseline/error_baseline.go index ea583f3a..74c385ca 100644 --- a/pkg/testutil/tsbaseline/error_baseline.go +++ b/pkg/testutil/tsbaseline/error_baseline.go @@ -35,14 +35,14 @@ func DoErrorBaseline(t *testing.T, baselinePath string, inputFiles []*harnessuti baselinePath = tsExtension.ReplaceAllString(baselinePath, ".errors.txt") var errorBaseline string if len(errors) > 0 { - errorBaseline = getErrorBaseline(t, inputFiles, errors, pretty) + errorBaseline = GetErrorBaseline(t, inputFiles, diagnosticwriter.WrapASTDiagnostics(errors), diagnosticwriter.CompareASTDiagnostics, pretty) } else { errorBaseline = baseline.NoContent } baseline.Run(t, baselinePath, errorBaseline, opts) } -func minimalDiagnosticsToString(diagnostics []*ast.Diagnostic, pretty bool) string { +func minimalDiagnosticsToString(diagnostics []diagnosticwriter.Diagnostic, pretty bool) string { var output strings.Builder if pretty { diagnosticwriter.FormatDiagnosticsWithColorAndContext(&output, diagnostics, formatOpts) @@ -52,15 +52,15 @@ func minimalDiagnosticsToString(diagnostics []*ast.Diagnostic, pretty bool) stri return output.String() } -func getErrorBaseline(t *testing.T, inputFiles []*harnessutil.TestFile, diagnostics []*ast.Diagnostic, pretty bool) string { +func GetErrorBaseline[T diagnosticwriter.Diagnostic](t *testing.T, inputFiles []*harnessutil.TestFile, diagnostics []T, compareDiagnostics func(a, b T) int, pretty bool) string { t.Helper() - outputLines := iterateErrorBaseline(t, inputFiles, diagnostics, pretty) + outputLines := iterateErrorBaseline(t, inputFiles, diagnostics, compareDiagnostics, pretty) if pretty { var summaryBuilder strings.Builder diagnosticwriter.WriteErrorSummaryText( &summaryBuilder, - diagnostics, + diagnosticwriter.ToDiagnostics(diagnostics), formatOpts) summary := removeTestPathPrefixes(summaryBuilder.String(), false) outputLines = append(outputLines, summary) @@ -68,10 +68,10 @@ func getErrorBaseline(t *testing.T, inputFiles []*harnessutil.TestFile, diagnost return strings.Join(outputLines, "") } -func iterateErrorBaseline(t *testing.T, inputFiles []*harnessutil.TestFile, inputDiagnostics []*ast.Diagnostic, pretty bool) []string { +func iterateErrorBaseline[T diagnosticwriter.Diagnostic](t *testing.T, inputFiles []*harnessutil.TestFile, inputDiagnostics []T, compareDiagnostics func(a, b T) int, pretty bool) []string { t.Helper() diagnostics := slices.Clone(inputDiagnostics) - slices.SortFunc(diagnostics, ast.CompareDiagnostics) + slices.SortFunc(diagnostics, compareDiagnostics) var outputLines strings.Builder // Count up all errors that were found in files other than lib.d.ts so we don't miss any @@ -90,7 +90,7 @@ func iterateErrorBaseline(t *testing.T, inputFiles []*harnessutil.TestFile, inpu var result []string - outputErrorText := func(diag *ast.Diagnostic) { + outputErrorText := func(diag diagnosticwriter.Diagnostic) { message := diagnosticwriter.FlattenDiagnosticMessage(diag, harnessNewLine) var errLines []string @@ -106,7 +106,7 @@ func iterateErrorBaseline(t *testing.T, inputFiles []*harnessutil.TestFile, inpu for _, info := range diag.RelatedInformation() { var location string if info.File() != nil { - location = " " + formatLocation(info.File(), info.Loc().Pos(), formatOpts, func(output io.Writer, text string, formatStyle string) { fmt.Fprint(output, text) }) + location = " " + formatLocation(info.File(), info.Pos(), formatOpts, func(output io.Writer, text string, formatStyle string) { fmt.Fprint(output, text) }) } location = removeTestPathPrefixes(location, false) if len(location) > 0 && isDefaultLibraryFile(info.File().FileName()) { @@ -133,7 +133,7 @@ func iterateErrorBaseline(t *testing.T, inputFiles []*harnessutil.TestFile, inpu } } - topDiagnostics := minimalDiagnosticsToString(diagnostics, pretty) + topDiagnostics := minimalDiagnosticsToString(diagnosticwriter.ToDiagnostics(diagnostics), pretty) topDiagnostics = removeTestPathPrefixes(topDiagnostics, false) topDiagnostics = diagnosticsLocationPrefix.ReplaceAllString(topDiagnostics, "$1(--,--)") @@ -154,7 +154,7 @@ func iterateErrorBaseline(t *testing.T, inputFiles []*harnessutil.TestFile, inpu dupeCase := map[string]int{} for _, inputFile := range inputFiles { // Filter down to the errors in the file - fileErrors := core.Filter(diagnostics, func(e *ast.Diagnostic) bool { + fileErrors := core.Filter(diagnostics, func(e T) bool { return e.File() != nil && tspath.ComparePaths(removeTestPathPrefixes(e.File().FileName(), false), removeTestPathPrefixes(inputFile.UnitName, false), tspath.ComparePathsOptions{}) == 0 }) @@ -193,8 +193,8 @@ func iterateErrorBaseline(t *testing.T, inputFiles []*harnessutil.TestFile, inpu outputLines.WriteString(line) for _, errDiagnostic := range fileErrors { // Does any error start or continue on to this line? Emit squiggles - errStart := errDiagnostic.Loc().Pos() - end := errDiagnostic.Loc().End() + errStart := errDiagnostic.Pos() + end := errStart + errDiagnostic.Len() if end >= thisLineStart && (errStart < nextLineStart || lineIndex == len(lines)-1) { // How many characters from the start of this line the error starts at (could be positive or negative) relativeOffset := errStart - thisLineStart @@ -234,12 +234,12 @@ func iterateErrorBaseline(t *testing.T, inputFiles []*harnessutil.TestFile, inpu numLibraryDiagnostics := core.CountWhere( diagnostics, - func(d *ast.Diagnostic) bool { + func(d T) bool { return d.File() != nil && (isDefaultLibraryFile(d.File().FileName()) || isBuiltFile(d.File().FileName())) }) numTsconfigDiagnostics := core.CountWhere( diagnostics, - func(d *ast.Diagnostic) bool { + func(d T) bool { return d.File() != nil && isTsConfigFile(d.File().FileName()) }) // Verify we didn't miss any errors in total @@ -248,7 +248,7 @@ func iterateErrorBaseline(t *testing.T, inputFiles []*harnessutil.TestFile, inpu return result } -func formatLocation(file *ast.SourceFile, pos int, formatOpts *diagnosticwriter.FormattingOptions, writeWithStyleAndReset diagnosticwriter.FormattedWriter) string { +func formatLocation(file diagnosticwriter.FileLike, pos int, formatOpts *diagnosticwriter.FormattingOptions, writeWithStyleAndReset diagnosticwriter.FormattedWriter) string { var output strings.Builder diagnosticwriter.WriteLocation(&output, file, pos, formatOpts, writeWithStyleAndReset) return output.String() diff --git a/pkg/testutil/tsbaseline/js_emit_baseline.go b/pkg/testutil/tsbaseline/js_emit_baseline.go index f03401b7..db60de74 100644 --- a/pkg/testutil/tsbaseline/js_emit_baseline.go +++ b/pkg/testutil/tsbaseline/js_emit_baseline.go @@ -8,6 +8,7 @@ import ( "github.com/buke/typescript-go-internal/pkg/ast" "github.com/buke/typescript-go-internal/pkg/collections" "github.com/buke/typescript-go-internal/pkg/core" + "github.com/buke/typescript-go-internal/pkg/diagnosticwriter" "github.com/buke/typescript-go-internal/pkg/parser" "github.com/buke/typescript-go-internal/pkg/testutil/baseline" "github.com/buke/typescript-go-internal/pkg/testutil/harnessutil" @@ -59,7 +60,7 @@ func DoJSEmitBaseline( CompilerOptions: options.SourceFileAffecting(), }, file.Content, core.ScriptKindJSON) if len(fileParseResult.Diagnostics()) > 0 { - jsCode.WriteString(getErrorBaseline(t, []*harnessutil.TestFile{file}, fileParseResult.Diagnostics(), false /*pretty*/)) + jsCode.WriteString(GetErrorBaseline(t, []*harnessutil.TestFile{file}, diagnosticwriter.WrapASTDiagnostics(fileParseResult.Diagnostics()), diagnosticwriter.CompareASTDiagnostics, false /*pretty*/)) continue } } @@ -86,10 +87,11 @@ func DoJSEmitBaseline( if declFileCompilationResult != nil && len(declFileCompilationResult.declResult.Diagnostics) > 0 { jsCode.WriteString("\r\n\r\n//// [DtsFileErrors]\r\n") jsCode.WriteString("\r\n\r\n") - jsCode.WriteString(getErrorBaseline( + jsCode.WriteString(GetErrorBaseline( t, slices.Concat(tsConfigFiles, declFileCompilationResult.declInputFiles, declFileCompilationResult.declOtherFiles), - declFileCompilationResult.declResult.Diagnostics, + diagnosticwriter.WrapASTDiagnostics(declFileCompilationResult.declResult.Diagnostics), + diagnosticwriter.CompareASTDiagnostics, false, /*pretty*/ )) } diff --git a/pkg/transformers/tstransforms/importelision_test.go b/pkg/transformers/tstransforms/importelision_test.go index 013fa4b4..7cce7950 100644 --- a/pkg/transformers/tstransforms/importelision_test.go +++ b/pkg/transformers/tstransforms/importelision_test.go @@ -213,7 +213,7 @@ func TestImportElision(t *testing.T) { compilerOptions := &core.CompilerOptions{} - c := checker.NewChecker(&fakeProgram{ + c, _ := checker.NewChecker(&fakeProgram{ singleThreaded: true, compilerOptions: compilerOptions, files: files, diff --git a/pkg/transformers/tstransforms/runtimesyntax.go b/pkg/transformers/tstransforms/runtimesyntax.go index 6772627a..413bfba2 100644 --- a/pkg/transformers/tstransforms/runtimesyntax.go +++ b/pkg/transformers/tstransforms/runtimesyntax.go @@ -1148,7 +1148,7 @@ func (tx *RuntimeSyntaxTransformer) shouldEmitModuleDeclaration(node *ast.Module // If we can't find a parse tree node, assume the node is instantiated. return true } - return isInstantiatedModule(node.AsNode(), tx.compilerOptions.ShouldPreserveConstEnums()) + return ast.IsInstantiatedModule(node.AsNode(), tx.compilerOptions.ShouldPreserveConstEnums()) } func getInnermostModuleDeclarationFromDottedModule(moduleDeclaration *ast.ModuleDeclaration) *ast.ModuleDeclaration { diff --git a/pkg/transformers/tstransforms/typeeraser.go b/pkg/transformers/tstransforms/typeeraser.go index a8f03a80..de210409 100644 --- a/pkg/transformers/tstransforms/typeeraser.go +++ b/pkg/transformers/tstransforms/typeeraser.go @@ -109,7 +109,7 @@ func (tx *TypeEraserTransformer) visit(node *ast.Node) *ast.Node { case ast.KindModuleDeclaration: if !ast.IsIdentifier(node.Name()) || - !isInstantiatedModule(node, tx.compilerOptions.ShouldPreserveConstEnums()) || + !ast.IsInstantiatedModule(node, tx.compilerOptions.ShouldPreserveConstEnums()) || getInnermostModuleDeclarationFromDottedModule(node.AsModuleDeclaration()).Body == nil { // TypeScript module declarations are elided if they are not instantiated or have no body return tx.elide(node) diff --git a/pkg/transformers/tstransforms/utilities.go b/pkg/transformers/tstransforms/utilities.go index 6be0b2f0..846b82cc 100644 --- a/pkg/transformers/tstransforms/utilities.go +++ b/pkg/transformers/tstransforms/utilities.go @@ -33,9 +33,3 @@ func constantExpression(value any, factory *printer.NodeFactory) *ast.Expression } return nil } - -func isInstantiatedModule(node *ast.ModuleDeclarationNode, preserveConstEnums bool) bool { - moduleState := ast.GetModuleInstanceState(node) - return moduleState == ast.ModuleInstanceStateInstantiated || - (preserveConstEnums && moduleState == ast.ModuleInstanceStateConstEnumOnly) -} diff --git a/pkg/tsoptions/commandlineparser_test.go b/pkg/tsoptions/commandlineparser_test.go index 5cc50651..a3ceb686 100644 --- a/pkg/tsoptions/commandlineparser_test.go +++ b/pkg/tsoptions/commandlineparser_test.go @@ -190,7 +190,7 @@ func (f commandLineSubScenario) assertParseResult(t *testing.T) { // assert.DeepEqual(t, tsBaseline.watchoptions, newParsedWatchOptions) var formattedErrors strings.Builder - diagnosticwriter.WriteFormatDiagnostics(&formattedErrors, parsed.Errors, &diagnosticwriter.FormattingOptions{NewLine: "\n"}) + diagnosticwriter.WriteFormatDiagnostics(&formattedErrors, diagnosticwriter.FromASTDiagnostics(parsed.Errors), &diagnosticwriter.FormattingOptions{NewLine: "\n"}) newBaselineErrors := formattedErrors.String() // !!! @@ -281,7 +281,7 @@ func (f commandLineSubScenario) assertBuildParseResult(t *testing.T) { // assert.DeepEqual(t, tsBaseline.watchoptions, newParsedWatchOptions) var formattedErrors strings.Builder - diagnosticwriter.WriteFormatDiagnostics(&formattedErrors, parsed.Errors, &diagnosticwriter.FormattingOptions{NewLine: "\n"}) + diagnosticwriter.WriteFormatDiagnostics(&formattedErrors, diagnosticwriter.FromASTDiagnostics(parsed.Errors), &diagnosticwriter.FormattingOptions{NewLine: "\n"}) newBaselineErrors := formattedErrors.String() // !!! diff --git a/pkg/tsoptions/tsconfigparsing_test.go b/pkg/tsoptions/tsconfigparsing_test.go index ddcfc2ed..4dc40557 100644 --- a/pkg/tsoptions/tsconfigparsing_test.go +++ b/pkg/tsoptions/tsconfigparsing_test.go @@ -137,7 +137,7 @@ func TestParseConfigFileTextToJson(t *testing.T) { assert.NilError(t, writeJsonReadableText(&baselineContent, parsed), "Failed to write JSON text") baselineContent.WriteString("\n") baselineContent.WriteString("Errors::\n") - diagnosticwriter.FormatDiagnosticsWithColorAndContext(&baselineContent, errors, &diagnosticwriter.FormattingOptions{ + diagnosticwriter.FormatDiagnosticsWithColorAndContext(&baselineContent, diagnosticwriter.FromASTDiagnostics(errors), &diagnosticwriter.FormattingOptions{ NewLine: "\n", ComparePathsOptions: tspath.ComparePathsOptions{ CurrentDirectory: "/", @@ -863,7 +863,7 @@ func baselineParseConfigWith(t *testing.T, baselineFileName string, noSubmoduleB baselineContent.WriteString("FileNames::\n") baselineContent.WriteString(strings.Join(parsedConfigFileContent.ParsedConfig.FileNames, ",") + "\n") baselineContent.WriteString("Errors::\n") - diagnosticwriter.FormatDiagnosticsWithColorAndContext(&baselineContent, parsedConfigFileContent.Errors, &diagnosticwriter.FormattingOptions{ + diagnosticwriter.FormatDiagnosticsWithColorAndContext(&baselineContent, diagnosticwriter.FromASTDiagnostics(parsedConfigFileContent.Errors), &diagnosticwriter.FormattingOptions{ NewLine: "\r\n", ComparePathsOptions: tspath.ComparePathsOptions{ CurrentDirectory: basePath, diff --git a/testdata/baselines/reference/api/encodeSourceFileWithUnicodeEscapes.txt b/testdata/baselines/reference/api/encodeSourceFileWithUnicodeEscapes.txt new file mode 100644 index 00000000..93102c78 --- /dev/null +++ b/testdata/baselines/reference/api/encodeSourceFileWithUnicodeEscapes.txt @@ -0,0 +1,27 @@ +KindSourceFile [0, 98), i=1, next=0 + NodeList [0, 98), i=2, next=27 + KindVariableStatement [0, 15), i=3, next=9 + KindVariableDeclarationList [0, 14), i=4, next=0 + NodeList [3, 14), i=5, next=0 + KindVariableDeclaration [3, 14), i=6, next=0 + KindIdentifier "a" [3, 5), i=7, next=8 + KindStringLiteral "😃" [7, 14), i=8, next=0 + KindVariableStatement [15, 39), i=9, next=15 + KindVariableDeclarationList [15, 38), i=10, next=0 + NodeList [19, 38), i=11, next=0 + KindVariableDeclaration [19, 38), i=12, next=0 + KindIdentifier "b" [19, 21), i=13, next=14 + KindStringLiteral "😃" [23, 38), i=14, next=0 + KindVariableStatement [39, 69), i=15, next=21 + KindVariableDeclarationList [39, 68), i=16, next=0 + NodeList [43, 68), i=17, next=0 + KindVariableDeclaration [43, 68), i=18, next=0 + KindIdentifier "c" [43, 45), i=19, next=20 + KindStringLiteral "�😃" [47, 68), i=20, next=0 + KindVariableStatement [69, 98), i=21, next=0 + KindVariableDeclarationList [69, 98), i=22, next=0 + NodeList [73, 98), i=23, next=0 + KindVariableDeclaration [73, 98), i=24, next=0 + KindIdentifier "d" [73, 75), i=25, next=26 + KindStringLiteral "�😃" [77, 98), i=26, next=0 + KindEndOfFile [98, 98), i=27, next=0 diff --git a/testdata/baselines/reference/compiler/erasableSyntaxOnlyJS.symbols b/testdata/baselines/reference/compiler/erasableSyntaxOnlyJS.symbols index b6dffa7f..7aac5d5b 100644 --- a/testdata/baselines/reference/compiler/erasableSyntaxOnlyJS.symbols +++ b/testdata/baselines/reference/compiler/erasableSyntaxOnlyJS.symbols @@ -11,7 +11,7 @@ import foo = require("./foo.js"); === bar.cjs === module.exports = { >module.exports : Symbol(export=, Decl(bar.cjs, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("bar", Decl(bar.cjs, 0, 0)) >exports : Symbol(export=, Decl(bar.cjs, 0, 0)) a: 1, @@ -21,7 +21,7 @@ module.exports = { === foo.js === module.exports = { >module.exports : Symbol(export=, Decl(foo.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("foo", Decl(foo.js, 0, 0)) >exports : Symbol(export=, Decl(foo.js, 0, 0)) b: 2, diff --git a/testdata/baselines/reference/compiler/panicSatisfiesOnExportEqualsDeclaration.symbols b/testdata/baselines/reference/compiler/panicSatisfiesOnExportEqualsDeclaration.symbols index 8ebafccf..7b8a395a 100644 --- a/testdata/baselines/reference/compiler/panicSatisfiesOnExportEqualsDeclaration.symbols +++ b/testdata/baselines/reference/compiler/panicSatisfiesOnExportEqualsDeclaration.symbols @@ -6,6 +6,6 @@ */ module.exports = {}; >module.exports : Symbol(export=, Decl(panicSatisfiesOnExportEqualsDeclaration.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("panicSatisfiesOnExportEqualsDeclaration", Decl(panicSatisfiesOnExportEqualsDeclaration.js, 0, 0)) >exports : Symbol(export=, Decl(panicSatisfiesOnExportEqualsDeclaration.js, 0, 0)) diff --git a/testdata/baselines/reference/compiler/reachabilityChecks10.errors.txt b/testdata/baselines/reference/compiler/reachabilityChecks10.errors.txt new file mode 100644 index 00000000..2b26eae2 --- /dev/null +++ b/testdata/baselines/reference/compiler/reachabilityChecks10.errors.txt @@ -0,0 +1,11 @@ +reachabilityChecks10.ts(2,1): error TS7027: Unreachable code detected. + + +==== reachabilityChecks10.ts (1 errors) ==== + throw new Error("") + console.log("1") + ~~~~~~~~~~~~~~~~ + console.log("2") + ~~~~~~~~~~~~~~~~ +!!! error TS7027: Unreachable code detected. + \ No newline at end of file diff --git a/testdata/baselines/reference/compiler/reachabilityChecks10.symbols b/testdata/baselines/reference/compiler/reachabilityChecks10.symbols new file mode 100644 index 00000000..6ecc5541 --- /dev/null +++ b/testdata/baselines/reference/compiler/reachabilityChecks10.symbols @@ -0,0 +1,16 @@ +//// [tests/cases/compiler/reachabilityChecks10.ts] //// + +=== reachabilityChecks10.ts === +throw new Error("") +>Error : Symbol(Error, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) + +console.log("1") +>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>console : Symbol(console, Decl(lib.dom.d.ts, --, --)) +>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) + +console.log("2") +>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>console : Symbol(console, Decl(lib.dom.d.ts, --, --)) +>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) + diff --git a/testdata/baselines/reference/compiler/reachabilityChecks10.types b/testdata/baselines/reference/compiler/reachabilityChecks10.types new file mode 100644 index 00000000..d57914a4 --- /dev/null +++ b/testdata/baselines/reference/compiler/reachabilityChecks10.types @@ -0,0 +1,22 @@ +//// [tests/cases/compiler/reachabilityChecks10.ts] //// + +=== reachabilityChecks10.ts === +throw new Error("") +>new Error("") : Error +>Error : ErrorConstructor +>"" : "" + +console.log("1") +>console.log("1") : void +>console.log : (...data: any[]) => void +>console : Console +>log : (...data: any[]) => void +>"1" : "1" + +console.log("2") +>console.log("2") : void +>console.log : (...data: any[]) => void +>console : Console +>log : (...data: any[]) => void +>"2" : "2" + diff --git a/testdata/baselines/reference/compiler/reachabilityChecks11.errors.txt b/testdata/baselines/reference/compiler/reachabilityChecks11.errors.txt new file mode 100644 index 00000000..b4497ee4 --- /dev/null +++ b/testdata/baselines/reference/compiler/reachabilityChecks11.errors.txt @@ -0,0 +1,104 @@ +reachabilityChecks11.ts(6,5): error TS7027: Unreachable code detected. +reachabilityChecks11.ts(18,5): error TS7027: Unreachable code detected. +reachabilityChecks11.ts(30,5): error TS7027: Unreachable code detected. +reachabilityChecks11.ts(47,5): error TS7027: Unreachable code detected. +reachabilityChecks11.ts(60,5): error TS7027: Unreachable code detected. +reachabilityChecks11.ts(69,5): error TS7027: Unreachable code detected. + + +==== reachabilityChecks11.ts (6 errors) ==== + // while (true); + var x = 1; + + module A { + while (true); + let x; + ~~~~~~ +!!! error TS7027: Unreachable code detected. + } + + module A1 { + do {} while(true); + module A { + interface F {} + } + } + + module A2 { + while (true); + module A { + ~~~~~~~~~~ + var x = 1; + ~~~~~~~~~~~~~~~~~~ + } + ~~~~~ +!!! error TS7027: Unreachable code detected. + } + + module A3 { + while (true); + type T = string; + } + + module A4 { + while (true); + module A { + ~~~~~~~~~~ + const enum E { X } + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + } + ~~~~~ +!!! error TS7027: Unreachable code detected. + } + + function f1(x) { + if (x) { + return; + } + else { + throw new Error("123"); + } + var x; + } + + function f2() { + return; + class A { + ~~~~~~~~~ + } + ~~~~~ +!!! error TS7027: Unreachable code detected. + } + + module B { + for (; ;); + module C { + } + } + + function f3() { + do { + } while (true); + enum E { + ~~~~~~~~ + X = 1 + ~~~~~~~~~~~~~ + } + ~~~~~ +!!! error TS7027: Unreachable code detected. + } + + function f4() { + if (true) { + throw new Error(); + } + const enum E { + ~~~~~~~~~~~~~~ + X = 1 + ~~~~~~~~~~~~~ + } + ~~~~~ +!!! error TS7027: Unreachable code detected. + } + + \ No newline at end of file diff --git a/testdata/baselines/reference/compiler/reachabilityChecks11.js b/testdata/baselines/reference/compiler/reachabilityChecks11.js new file mode 100644 index 00000000..1e69b95f --- /dev/null +++ b/testdata/baselines/reference/compiler/reachabilityChecks11.js @@ -0,0 +1,153 @@ +//// [tests/cases/compiler/reachabilityChecks11.ts] //// + +//// [reachabilityChecks11.ts] +// while (true); +var x = 1; + +module A { + while (true); + let x; +} + +module A1 { + do {} while(true); + module A { + interface F {} + } +} + +module A2 { + while (true); + module A { + var x = 1; + } +} + +module A3 { + while (true); + type T = string; +} + +module A4 { + while (true); + module A { + const enum E { X } + } +} + +function f1(x) { + if (x) { + return; + } + else { + throw new Error("123"); + } + var x; +} + +function f2() { + return; + class A { + } +} + +module B { + for (; ;); + module C { + } +} + +function f3() { + do { + } while (true); + enum E { + X = 1 + } +} + +function f4() { + if (true) { + throw new Error(); + } + const enum E { + X = 1 + } +} + + + +//// [reachabilityChecks11.js] +// while (true); +var x = 1; +var A; +(function (A) { + while (true) + ; + let x; +})(A || (A = {})); +var A1; +(function (A1) { + do { } while (true); +})(A1 || (A1 = {})); +var A2; +(function (A2) { + while (true) + ; + let A; + (function (A) { + var x = 1; + })(A || (A = {})); +})(A2 || (A2 = {})); +var A3; +(function (A3) { + while (true) + ; +})(A3 || (A3 = {})); +var A4; +(function (A4) { + while (true) + ; + let A; + (function (A) { + let E; + (function (E) { + E[E["X"] = 0] = "X"; + })(E || (E = {})); + })(A || (A = {})); +})(A4 || (A4 = {})); +function f1(x) { + if (x) { + return; + } + else { + throw new Error("123"); + } + var x; +} +function f2() { + return; + class A { + } +} +var B; +(function (B) { + for (;;) + ; +})(B || (B = {})); +function f3() { + do { + } while (true); + let E; + (function (E) { + E[E["X"] = 1] = "X"; + })(E || (E = {})); +} +function f4() { + if (true) { + throw new Error(); + } + let E; + (function (E) { + E[E["X"] = 1] = "X"; + })(E || (E = {})); +} diff --git a/testdata/baselines/reference/compiler/reachabilityChecks11.symbols b/testdata/baselines/reference/compiler/reachabilityChecks11.symbols new file mode 100644 index 00000000..450ccad8 --- /dev/null +++ b/testdata/baselines/reference/compiler/reachabilityChecks11.symbols @@ -0,0 +1,124 @@ +//// [tests/cases/compiler/reachabilityChecks11.ts] //// + +=== reachabilityChecks11.ts === +// while (true); +var x = 1; +>x : Symbol(x, Decl(reachabilityChecks11.ts, 1, 3)) + +module A { +>A : Symbol(A, Decl(reachabilityChecks11.ts, 1, 10)) + + while (true); + let x; +>x : Symbol(x, Decl(reachabilityChecks11.ts, 5, 7)) +} + +module A1 { +>A1 : Symbol(A1, Decl(reachabilityChecks11.ts, 6, 1)) + + do {} while(true); + module A { +>A : Symbol(A, Decl(reachabilityChecks11.ts, 9, 22)) + + interface F {} +>F : Symbol(F, Decl(reachabilityChecks11.ts, 10, 14)) + } +} + +module A2 { +>A2 : Symbol(A2, Decl(reachabilityChecks11.ts, 13, 1)) + + while (true); + module A { +>A : Symbol(A, Decl(reachabilityChecks11.ts, 16, 17)) + + var x = 1; +>x : Symbol(x, Decl(reachabilityChecks11.ts, 18, 11)) + } +} + +module A3 { +>A3 : Symbol(A3, Decl(reachabilityChecks11.ts, 20, 1)) + + while (true); + type T = string; +>T : Symbol(T, Decl(reachabilityChecks11.ts, 23, 17)) +} + +module A4 { +>A4 : Symbol(A4, Decl(reachabilityChecks11.ts, 25, 1)) + + while (true); + module A { +>A : Symbol(A, Decl(reachabilityChecks11.ts, 28, 17)) + + const enum E { X } +>E : Symbol(E, Decl(reachabilityChecks11.ts, 29, 14)) +>X : Symbol(E.X, Decl(reachabilityChecks11.ts, 30, 22)) + } +} + +function f1(x) { +>f1 : Symbol(f1, Decl(reachabilityChecks11.ts, 32, 1)) +>x : Symbol(x, Decl(reachabilityChecks11.ts, 34, 12), Decl(reachabilityChecks11.ts, 41, 7)) + + if (x) { +>x : Symbol(x, Decl(reachabilityChecks11.ts, 34, 12), Decl(reachabilityChecks11.ts, 41, 7)) + + return; + } + else { + throw new Error("123"); +>Error : Symbol(Error, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) + } + var x; +>x : Symbol(x, Decl(reachabilityChecks11.ts, 34, 12), Decl(reachabilityChecks11.ts, 41, 7)) +} + +function f2() { +>f2 : Symbol(f2, Decl(reachabilityChecks11.ts, 42, 1)) + + return; + class A { +>A : Symbol(A, Decl(reachabilityChecks11.ts, 45, 11)) + } +} + +module B { +>B : Symbol(B, Decl(reachabilityChecks11.ts, 48, 1)) + + for (; ;); + module C { +>C : Symbol(C, Decl(reachabilityChecks11.ts, 51, 14)) + } +} + +function f3() { +>f3 : Symbol(f3, Decl(reachabilityChecks11.ts, 54, 1)) + + do { + } while (true); + enum E { +>E : Symbol(E, Decl(reachabilityChecks11.ts, 58, 19)) + + X = 1 +>X : Symbol(E.X, Decl(reachabilityChecks11.ts, 59, 12)) + } +} + +function f4() { +>f4 : Symbol(f4, Decl(reachabilityChecks11.ts, 62, 1)) + + if (true) { + throw new Error(); +>Error : Symbol(Error, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) + } + const enum E { +>E : Symbol(E, Decl(reachabilityChecks11.ts, 67, 5)) + + X = 1 +>X : Symbol(E.X, Decl(reachabilityChecks11.ts, 68, 18)) + } +} + + diff --git a/testdata/baselines/reference/compiler/reachabilityChecks11.types b/testdata/baselines/reference/compiler/reachabilityChecks11.types new file mode 100644 index 00000000..10cf27d4 --- /dev/null +++ b/testdata/baselines/reference/compiler/reachabilityChecks11.types @@ -0,0 +1,139 @@ +//// [tests/cases/compiler/reachabilityChecks11.ts] //// + +=== reachabilityChecks11.ts === +// while (true); +var x = 1; +>x : number +>1 : 1 + +module A { +>A : typeof A + + while (true); +>true : true + + let x; +>x : any +} + +module A1 { +>A1 : typeof A1 + + do {} while(true); +>true : true + + module A { + interface F {} + } +} + +module A2 { +>A2 : typeof A2 + + while (true); +>true : true + + module A { +>A : typeof A + + var x = 1; +>x : number +>1 : 1 + } +} + +module A3 { +>A3 : typeof A3 + + while (true); +>true : true + + type T = string; +>T : string +} + +module A4 { +>A4 : typeof A4 + + while (true); +>true : true + + module A { + const enum E { X } +>E : E +>X : E.X + } +} + +function f1(x) { +>f1 : (x: any) => void +>x : any + + if (x) { +>x : any + + return; + } + else { + throw new Error("123"); +>new Error("123") : Error +>Error : ErrorConstructor +>"123" : "123" + } + var x; +>x : any +} + +function f2() { +>f2 : () => void + + return; + class A { +>A : A + } +} + +module B { +>B : typeof B + + for (; ;); + module C { + } +} + +function f3() { +>f3 : () => void + + do { + } while (true); +>true : true + + enum E { +>E : E + + X = 1 +>X : E.X +>1 : 1 + } +} + +function f4() { +>f4 : () => void + + if (true) { +>true : true + + throw new Error(); +>new Error() : Error +>Error : ErrorConstructor + } + const enum E { +>E : E + + X = 1 +>X : E.X +>1 : 1 + } +} + + diff --git a/testdata/baselines/reference/compiler/reachabilityChecks9.errors.txt b/testdata/baselines/reference/compiler/reachabilityChecks9.errors.txt new file mode 100644 index 00000000..75b9cf98 --- /dev/null +++ b/testdata/baselines/reference/compiler/reachabilityChecks9.errors.txt @@ -0,0 +1,37 @@ +reachabilityChecks9.ts(7,7): error TS7027: Unreachable code detected. +reachabilityChecks9.ts(20,7): error TS7027: Unreachable code detected. + + +==== reachabilityChecks9.ts (2 errors) ==== + // https://github.com/microsoft/TypeScript/issues/55562 + + function g(str: string) { + switch (str) { + case "a": + return; + console.log("1"); + ~~~~~~~~~~~~~~~~~ + console.log("2"); + ~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS7027: Unreachable code detected. + case "b": + console.log("3"); + } + } + + function h(str: string) { + switch (str) { + case "a": + console.log("1"); + default: + return; + console.log("2"); + ~~~~~~~~~~~~~~~~~ + console.log("3"); + ~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS7027: Unreachable code detected. + case "b": + console.log("4"); + } + } + \ No newline at end of file diff --git a/testdata/baselines/reference/compiler/reachabilityChecks9.symbols b/testdata/baselines/reference/compiler/reachabilityChecks9.symbols new file mode 100644 index 00000000..d50f997b --- /dev/null +++ b/testdata/baselines/reference/compiler/reachabilityChecks9.symbols @@ -0,0 +1,65 @@ +//// [tests/cases/compiler/reachabilityChecks9.ts] //// + +=== reachabilityChecks9.ts === +// https://github.com/microsoft/TypeScript/issues/55562 + +function g(str: string) { +>g : Symbol(g, Decl(reachabilityChecks9.ts, 0, 0)) +>str : Symbol(str, Decl(reachabilityChecks9.ts, 2, 11)) + + switch (str) { +>str : Symbol(str, Decl(reachabilityChecks9.ts, 2, 11)) + + case "a": + return; + console.log("1"); +>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>console : Symbol(console, Decl(lib.dom.d.ts, --, --)) +>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) + + console.log("2"); +>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>console : Symbol(console, Decl(lib.dom.d.ts, --, --)) +>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) + + case "b": + console.log("3"); +>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>console : Symbol(console, Decl(lib.dom.d.ts, --, --)) +>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) + } +} + +function h(str: string) { +>h : Symbol(h, Decl(reachabilityChecks9.ts, 11, 1)) +>str : Symbol(str, Decl(reachabilityChecks9.ts, 13, 11)) + + switch (str) { +>str : Symbol(str, Decl(reachabilityChecks9.ts, 13, 11)) + + case "a": + console.log("1"); +>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>console : Symbol(console, Decl(lib.dom.d.ts, --, --)) +>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) + + default: + return; + console.log("2"); +>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>console : Symbol(console, Decl(lib.dom.d.ts, --, --)) +>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) + + console.log("3"); +>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>console : Symbol(console, Decl(lib.dom.d.ts, --, --)) +>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) + + case "b": + console.log("4"); +>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>console : Symbol(console, Decl(lib.dom.d.ts, --, --)) +>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) + } +} + diff --git a/testdata/baselines/reference/compiler/reachabilityChecks9.types b/testdata/baselines/reference/compiler/reachabilityChecks9.types new file mode 100644 index 00000000..8bced2f4 --- /dev/null +++ b/testdata/baselines/reference/compiler/reachabilityChecks9.types @@ -0,0 +1,87 @@ +//// [tests/cases/compiler/reachabilityChecks9.ts] //// + +=== reachabilityChecks9.ts === +// https://github.com/microsoft/TypeScript/issues/55562 + +function g(str: string) { +>g : (str: string) => void +>str : string + + switch (str) { +>str : string + + case "a": +>"a" : "a" + + return; + console.log("1"); +>console.log("1") : void +>console.log : (...data: any[]) => void +>console : Console +>log : (...data: any[]) => void +>"1" : "1" + + console.log("2"); +>console.log("2") : void +>console.log : (...data: any[]) => void +>console : Console +>log : (...data: any[]) => void +>"2" : "2" + + case "b": +>"b" : "b" + + console.log("3"); +>console.log("3") : void +>console.log : (...data: any[]) => void +>console : Console +>log : (...data: any[]) => void +>"3" : "3" + } +} + +function h(str: string) { +>h : (str: string) => void +>str : string + + switch (str) { +>str : string + + case "a": +>"a" : "a" + + console.log("1"); +>console.log("1") : void +>console.log : (...data: any[]) => void +>console : Console +>log : (...data: any[]) => void +>"1" : "1" + + default: + return; + console.log("2"); +>console.log("2") : void +>console.log : (...data: any[]) => void +>console : Console +>log : (...data: any[]) => void +>"2" : "2" + + console.log("3"); +>console.log("3") : void +>console.log : (...data: any[]) => void +>console : Console +>log : (...data: any[]) => void +>"3" : "3" + + case "b": +>"b" : "b" + + console.log("4"); +>console.log("4") : void +>console.log : (...data: any[]) => void +>console : Console +>log : (...data: any[]) => void +>"4" : "4" + } +} + diff --git a/testdata/baselines/reference/compiler/reachabilityChecksIgnored.js b/testdata/baselines/reference/compiler/reachabilityChecksIgnored.js new file mode 100644 index 00000000..7635105d --- /dev/null +++ b/testdata/baselines/reference/compiler/reachabilityChecksIgnored.js @@ -0,0 +1,29 @@ +//// [tests/cases/compiler/reachabilityChecksIgnored.ts] //// + +//// [reachabilityChecksIgnored.ts] +function a() { + throw new Error(""); + + // @ts-ignore + console.log("unreachable"); +} + +function b() { + throw new Error(""); + + // @ts-expect-error + console.log("unreachable"); +} + + +//// [reachabilityChecksIgnored.js] +function a() { + throw new Error(""); + // @ts-ignore + console.log("unreachable"); +} +function b() { + throw new Error(""); + // @ts-expect-error + console.log("unreachable"); +} diff --git a/testdata/baselines/reference/compiler/reachabilityChecksIgnored.symbols b/testdata/baselines/reference/compiler/reachabilityChecksIgnored.symbols new file mode 100644 index 00000000..04eccd03 --- /dev/null +++ b/testdata/baselines/reference/compiler/reachabilityChecksIgnored.symbols @@ -0,0 +1,29 @@ +//// [tests/cases/compiler/reachabilityChecksIgnored.ts] //// + +=== reachabilityChecksIgnored.ts === +function a() { +>a : Symbol(a, Decl(reachabilityChecksIgnored.ts, 0, 0)) + + throw new Error(""); +>Error : Symbol(Error, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) + + // @ts-ignore + console.log("unreachable"); +>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>console : Symbol(console, Decl(lib.dom.d.ts, --, --)) +>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +} + +function b() { +>b : Symbol(b, Decl(reachabilityChecksIgnored.ts, 5, 1)) + + throw new Error(""); +>Error : Symbol(Error, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) + + // @ts-expect-error + console.log("unreachable"); +>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>console : Symbol(console, Decl(lib.dom.d.ts, --, --)) +>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +} + diff --git a/testdata/baselines/reference/compiler/reachabilityChecksIgnored.types b/testdata/baselines/reference/compiler/reachabilityChecksIgnored.types new file mode 100644 index 00000000..838060e0 --- /dev/null +++ b/testdata/baselines/reference/compiler/reachabilityChecksIgnored.types @@ -0,0 +1,37 @@ +//// [tests/cases/compiler/reachabilityChecksIgnored.ts] //// + +=== reachabilityChecksIgnored.ts === +function a() { +>a : () => void + + throw new Error(""); +>new Error("") : Error +>Error : ErrorConstructor +>"" : "" + + // @ts-ignore + console.log("unreachable"); +>console.log("unreachable") : void +>console.log : (...data: any[]) => void +>console : Console +>log : (...data: any[]) => void +>"unreachable" : "unreachable" +} + +function b() { +>b : () => void + + throw new Error(""); +>new Error("") : Error +>Error : ErrorConstructor +>"" : "" + + // @ts-expect-error + console.log("unreachable"); +>console.log("unreachable") : void +>console.log : (...data: any[]) => void +>console : Console +>log : (...data: any[]) => void +>"unreachable" : "unreachable" +} + diff --git a/testdata/baselines/reference/compiler/unicodeSurrogatesInStringLiterals.js b/testdata/baselines/reference/compiler/unicodeSurrogatesInStringLiterals.js new file mode 100644 index 00000000..d15d1432 --- /dev/null +++ b/testdata/baselines/reference/compiler/unicodeSurrogatesInStringLiterals.js @@ -0,0 +1,47 @@ +//// [tests/cases/compiler/unicodeSurrogatesInStringLiterals.ts] //// + +//// [unicodeSurrogatesInStringLiterals.ts] +// low-high surrogate pair - the "correct" case +export const highLow = "\ud83d\ude03" as const; + +// high surrogate +export const high = "\ud83d" as const; + +// low surrogate +export const low = "\ude03" as const; + +// two high surrogates +export const highHigh = "\ud83d\ud83d" as const; + +// two low surrogates +export const lowLow = "\ude03\ude03" as const; + +// swapped expected order of surrogates +export const lowHigh = "\ude03\ud83d" as const; + + +//// [unicodeSurrogatesInStringLiterals.js] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.lowHigh = exports.lowLow = exports.highHigh = exports.low = exports.high = exports.highLow = void 0; +// low-high surrogate pair - the "correct" case +exports.highLow = "\ud83d\ude03"; +// high surrogate +exports.high = "\ud83d"; +// low surrogate +exports.low = "\ude03"; +// two high surrogates +exports.highHigh = "\ud83d\ud83d"; +// two low surrogates +exports.lowLow = "\ude03\ude03"; +// swapped expected order of surrogates +exports.lowHigh = "\ude03\ud83d"; + + +//// [unicodeSurrogatesInStringLiterals.d.ts] +export declare const highLow: "😃"; +export declare const high: "�"; +export declare const low: "�"; +export declare const highHigh: "��"; +export declare const lowLow: "��"; +export declare const lowHigh: "��"; diff --git a/testdata/baselines/reference/compiler/unicodeSurrogatesInStringLiterals.symbols b/testdata/baselines/reference/compiler/unicodeSurrogatesInStringLiterals.symbols new file mode 100644 index 00000000..df74f86b --- /dev/null +++ b/testdata/baselines/reference/compiler/unicodeSurrogatesInStringLiterals.symbols @@ -0,0 +1,33 @@ +//// [tests/cases/compiler/unicodeSurrogatesInStringLiterals.ts] //// + +=== unicodeSurrogatesInStringLiterals.ts === +// low-high surrogate pair - the "correct" case +export const highLow = "\ud83d\ude03" as const; +>highLow : Symbol(highLow, Decl(unicodeSurrogatesInStringLiterals.ts, 1, 12)) +>const : Symbol(const) + +// high surrogate +export const high = "\ud83d" as const; +>high : Symbol(high, Decl(unicodeSurrogatesInStringLiterals.ts, 4, 12)) +>const : Symbol(const) + +// low surrogate +export const low = "\ude03" as const; +>low : Symbol(low, Decl(unicodeSurrogatesInStringLiterals.ts, 7, 12)) +>const : Symbol(const) + +// two high surrogates +export const highHigh = "\ud83d\ud83d" as const; +>highHigh : Symbol(highHigh, Decl(unicodeSurrogatesInStringLiterals.ts, 10, 12)) +>const : Symbol(const) + +// two low surrogates +export const lowLow = "\ude03\ude03" as const; +>lowLow : Symbol(lowLow, Decl(unicodeSurrogatesInStringLiterals.ts, 13, 12)) +>const : Symbol(const) + +// swapped expected order of surrogates +export const lowHigh = "\ude03\ud83d" as const; +>lowHigh : Symbol(lowHigh, Decl(unicodeSurrogatesInStringLiterals.ts, 16, 12)) +>const : Symbol(const) + diff --git a/testdata/baselines/reference/compiler/unicodeSurrogatesInStringLiterals.types b/testdata/baselines/reference/compiler/unicodeSurrogatesInStringLiterals.types new file mode 100644 index 00000000..26778de7 --- /dev/null +++ b/testdata/baselines/reference/compiler/unicodeSurrogatesInStringLiterals.types @@ -0,0 +1,39 @@ +//// [tests/cases/compiler/unicodeSurrogatesInStringLiterals.ts] //// + +=== unicodeSurrogatesInStringLiterals.ts === +// low-high surrogate pair - the "correct" case +export const highLow = "\ud83d\ude03" as const; +>highLow : "😃" +>"\ud83d\ude03" as const : "😃" +>"\ud83d\ude03" : "😃" + +// high surrogate +export const high = "\ud83d" as const; +>high : "�" +>"\ud83d" as const : "�" +>"\ud83d" : "�" + +// low surrogate +export const low = "\ude03" as const; +>low : "�" +>"\ude03" as const : "�" +>"\ude03" : "�" + +// two high surrogates +export const highHigh = "\ud83d\ud83d" as const; +>highHigh : "��" +>"\ud83d\ud83d" as const : "��" +>"\ud83d\ud83d" : "��" + +// two low surrogates +export const lowLow = "\ude03\ude03" as const; +>lowLow : "��" +>"\ude03\ude03" as const : "��" +>"\ude03\ude03" : "��" + +// swapped expected order of surrogates +export const lowHigh = "\ude03\ud83d" as const; +>lowHigh : "��" +>"\ude03\ud83d" as const : "��" +>"\ude03\ud83d" : "��" + diff --git a/testdata/baselines/reference/fourslash/documentHighlights/emptyExportFindReferences.baseline.jsonc b/testdata/baselines/reference/fourslash/documentHighlights/emptyExportFindReferences.baseline.jsonc index d013f742..ededeb5e 100644 --- a/testdata/baselines/reference/fourslash/documentHighlights/emptyExportFindReferences.baseline.jsonc +++ b/testdata/baselines/reference/fourslash/documentHighlights/emptyExportFindReferences.baseline.jsonc @@ -1,5 +1,5 @@ // === documentHighlights === // === /Foo.js === -// /*HIGHLIGHTS*/module.exports = { +// /*HIGHLIGHTS*/[|module.exports = { // -// } \ No newline at end of file +// }|] \ No newline at end of file diff --git a/testdata/baselines/reference/fourslash/findAllReferences/findAllRefsModuleDotExports.baseline.jsonc b/testdata/baselines/reference/fourslash/findAllReferences/findAllRefsModuleDotExports.baseline.jsonc new file mode 100644 index 00000000..8303effd --- /dev/null +++ b/testdata/baselines/reference/fourslash/findAllReferences/findAllRefsModuleDotExports.baseline.jsonc @@ -0,0 +1,21 @@ +// === findAllReferences === +// === /a.js === +// /*FIND ALL REFS*/const [|b|] = require("./b"); + + + +// === findAllReferences === +// === /a.js === +// const b = require("/*FIND ALL REFS*/[|./b|]"); + +// === /b.js === +// [|module.exports = 0|]; + + + +// === findAllReferences === +// === /a.js === +// const b = require("[|./b|]"); + +// === /b.js === +// /*FIND ALL REFS*/[|module.exports = 0|]; \ No newline at end of file diff --git a/testdata/baselines/reference/fourslash/findAllReferences/referencesForStatementKeywords.baseline.jsonc b/testdata/baselines/reference/fourslash/findAllReferences/referencesForStatementKeywords.baseline.jsonc new file mode 100644 index 00000000..9bf5d0af --- /dev/null +++ b/testdata/baselines/reference/fourslash/findAllReferences/referencesForStatementKeywords.baseline.jsonc @@ -0,0 +1,526 @@ +// === findAllReferences === +// === /main.ts === +// // import ... = ... +// /*FIND ALL REFS*/import [|A|] = require("./a"); +// namespace N { } +// import N2 = N; +// +// // --- (line: 6) skipped --- + + + +// === findAllReferences === +// === /main.ts === +// // import ... = ... +// import A = /*FIND ALL REFS*/require("[|./a|]"); +// namespace N { } +// import N2 = N; +// +// // --- (line: 6) skipped --- + + + +// === findAllReferences === +// === /main.ts === +// // import ... = ... +// import A = require("./a"); +// namespace N { } +// /*FIND ALL REFS*/import [|N2|] = N; +// +// // import ... from ... +// import type B from "./b"; +// // --- (line: 8) skipped --- + + + +// === findAllReferences === +// === /b.ts === +// export default class [|B|] {} + +// === /main.ts === +// --- (line: 3) skipped --- +// import N2 = N; +// +// // import ... from ... +// /*FIND ALL REFS*/import type [|B|] from "./b"; +// import type * as C from "./c"; +// import type { D } from "./d"; +// import type { e1, e2 as e3 } from "./e"; +// // --- (line: 11) skipped --- + + + +// === findAllReferences === +// === /b.ts === +// export default class [|B|] {} + +// === /main.ts === +// --- (line: 3) skipped --- +// import N2 = N; +// +// // import ... from ... +// import /*FIND ALL REFS*/type [|B|] from "./b"; +// import type * as C from "./c"; +// import type { D } from "./d"; +// import type { e1, e2 as e3 } from "./e"; +// // --- (line: 11) skipped --- + + + +// === findAllReferences === +// === /main.ts === +// --- (line: 3) skipped --- +// import N2 = N; +// +// // import ... from ... +// import type B /*FIND ALL REFS*/from "[|./b|]"; +// import type * as C from "./c"; +// import type { D } from "./d"; +// import type { e1, e2 as e3 } from "./e"; +// // --- (line: 11) skipped --- + + + +// === findAllReferences === +// === /main.ts === +// --- (line: 4) skipped --- +// +// // import ... from ... +// import type B from "./b"; +// /*FIND ALL REFS*/import type * as [|C|] from "./c"; +// import type { D } from "./d"; +// import type { e1, e2 as e3 } from "./e"; +// +// // --- (line: 12) skipped --- + + + +// === findAllReferences === +// === /main.ts === +// --- (line: 4) skipped --- +// +// // import ... from ... +// import type B from "./b"; +// import /*FIND ALL REFS*/type * as [|C|] from "./c"; +// import type { D } from "./d"; +// import type { e1, e2 as e3 } from "./e"; +// +// // --- (line: 12) skipped --- + + + +// === findAllReferences === +// === /main.ts === +// --- (line: 4) skipped --- +// +// // import ... from ... +// import type B from "./b"; +// import type * /*FIND ALL REFS*/as [|C|] from "./c"; +// import type { D } from "./d"; +// import type { e1, e2 as e3 } from "./e"; +// +// // --- (line: 12) skipped --- + + + +// === findAllReferences === +// === /main.ts === +// --- (line: 4) skipped --- +// +// // import ... from ... +// import type B from "./b"; +// import type * as C /*FIND ALL REFS*/from "[|./c|]"; +// import type { D } from "./d"; +// import type { e1, e2 as e3 } from "./e"; +// +// // --- (line: 12) skipped --- + + + +// === findAllReferences === +// === /d.ts === +// export class [|D|] {} + +// === /main.ts === +// --- (line: 5) skipped --- +// // import ... from ... +// import type B from "./b"; +// import type * as C from "./c"; +// /*FIND ALL REFS*/import type { [|D|] } from "./d"; +// import type { e1, e2 as e3 } from "./e"; +// +// // import "module" +// // --- (line: 13) skipped --- + + + +// === findAllReferences === +// === /d.ts === +// export class [|D|] {} + +// === /main.ts === +// --- (line: 5) skipped --- +// // import ... from ... +// import type B from "./b"; +// import type * as C from "./c"; +// import /*FIND ALL REFS*/type { [|D|] } from "./d"; +// import type { e1, e2 as e3 } from "./e"; +// +// // import "module" +// // --- (line: 13) skipped --- + + + +// === findAllReferences === +// === /main.ts === +// --- (line: 5) skipped --- +// // import ... from ... +// import type B from "./b"; +// import type * as C from "./c"; +// import type { D } /*FIND ALL REFS*/from "[|./d|]"; +// import type { e1, e2 as e3 } from "./e"; +// +// // import "module" +// // --- (line: 13) skipped --- + + + +// === findAllReferences === +// === /main.ts === +// --- (line: 6) skipped --- +// import type B from "./b"; +// import type * as C from "./c"; +// import type { D } from "./d"; +// /*FIND ALL REFS*/import type { e1, e2 as e3 } from "./e"; +// +// // import "module" +// import "./f"; +// // --- (line: 14) skipped --- + + + +// === findAllReferences === +// === /main.ts === +// --- (line: 6) skipped --- +// import type B from "./b"; +// import type * as C from "./c"; +// import type { D } from "./d"; +// import /*FIND ALL REFS*/type { e1, e2 as e3 } from "./e"; +// +// // import "module" +// import "./f"; +// // --- (line: 14) skipped --- + + + +// === findAllReferences === +// === /main.ts === +// --- (line: 6) skipped --- +// import type B from "./b"; +// import type * as C from "./c"; +// import type { D } from "./d"; +// import type { e1, e2 as e3 } /*FIND ALL REFS*/from "[|./e|]"; +// +// // import "module" +// import "./f"; +// // --- (line: 14) skipped --- + + + +// === findAllReferences === +// === /main.ts === +// --- (line: 6) skipped --- +// import type B from "./b"; +// import type * as C from "./c"; +// import type { D } from "./d"; +// import type { e1, e2 /*FIND ALL REFS*/as [|e3|] } from "./e"; +// +// // import "module" +// import "./f"; +// // --- (line: 14) skipped --- + + + +// === findAllReferences === +// === /main.ts === +// --- (line: 9) skipped --- +// import type { e1, e2 as e3 } from "./e"; +// +// // import "module" +// /*FIND ALL REFS*/import "[|./f|]"; +// +// // export ... from ... +// export type * from "./g"; +// // --- (line: 17) skipped --- + + + +// === findAllReferences === +// === /main.ts === +// --- (line: 12) skipped --- +// import "./f"; +// +// // export ... from ... +// /*FIND ALL REFS*/export type * from "[|./g|]"; +// export type * as H from "./h"; +// export type { I } from "./i"; +// export type { j1, j2 as j3 } from "./j"; +// // --- (line: 20) skipped --- + + + +// === findAllReferences === +// === /main.ts === +// --- (line: 12) skipped --- +// import "./f"; +// +// // export ... from ... +// export /*FIND ALL REFS*/type * from "[|./g|]"; +// export type * as H from "./h"; +// export type { I } from "./i"; +// export type { j1, j2 as j3 } from "./j"; +// // --- (line: 20) skipped --- + + + +// === findAllReferences === +// === /main.ts === +// --- (line: 12) skipped --- +// import "./f"; +// +// // export ... from ... +// export type * /*FIND ALL REFS*/from "[|./g|]"; +// export type * as H from "./h"; +// export type { I } from "./i"; +// export type { j1, j2 as j3 } from "./j"; +// // --- (line: 20) skipped --- + + + +// === findAllReferences === +// === /main.ts === +// --- (line: 13) skipped --- +// +// // export ... from ... +// export type * from "./g"; +// /*FIND ALL REFS*/export type * as [|H|] from "./h"; +// export type { I } from "./i"; +// export type { j1, j2 as j3 } from "./j"; +// type Z1 = 1; +// // --- (line: 21) skipped --- + + + +// === findAllReferences === +// === /main.ts === +// --- (line: 13) skipped --- +// +// // export ... from ... +// export type * from "./g"; +// export /*FIND ALL REFS*/type * as [|H|] from "./h"; +// export type { I } from "./i"; +// export type { j1, j2 as j3 } from "./j"; +// type Z1 = 1; +// // --- (line: 21) skipped --- + + + +// === findAllReferences === +// === /main.ts === +// --- (line: 13) skipped --- +// +// // export ... from ... +// export type * from "./g"; +// export type * /*FIND ALL REFS*/as [|H|] from "./h"; +// export type { I } from "./i"; +// export type { j1, j2 as j3 } from "./j"; +// type Z1 = 1; +// // --- (line: 21) skipped --- + + + +// === findAllReferences === +// === /main.ts === +// --- (line: 13) skipped --- +// +// // export ... from ... +// export type * from "./g"; +// export type * as H /*FIND ALL REFS*/from "[|./h|]"; +// export type { I } from "./i"; +// export type { j1, j2 as j3 } from "./j"; +// type Z1 = 1; +// // --- (line: 21) skipped --- + + + +// === findAllReferences === +// === /main.ts === +// --- (line: 14) skipped --- +// // export ... from ... +// export type * from "./g"; +// export type * as H from "./h"; +// /*FIND ALL REFS*/export type { I } from "./i"; +// export type { j1, j2 as j3 } from "./j"; +// type Z1 = 1; +// export type { Z1 }; +// // --- (line: 22) skipped --- + + + +// === findAllReferences === +// === /main.ts === +// --- (line: 14) skipped --- +// // export ... from ... +// export type * from "./g"; +// export type * as H from "./h"; +// export /*FIND ALL REFS*/type { I } from "./i"; +// export type { j1, j2 as j3 } from "./j"; +// type Z1 = 1; +// export type { Z1 }; +// // --- (line: 22) skipped --- + + + +// === findAllReferences === +// === /main.ts === +// --- (line: 14) skipped --- +// // export ... from ... +// export type * from "./g"; +// export type * as H from "./h"; +// export type { I } /*FIND ALL REFS*/from "[|./i|]"; +// export type { j1, j2 as j3 } from "./j"; +// type Z1 = 1; +// export type { Z1 }; +// // --- (line: 22) skipped --- + + + +// === findAllReferences === +// === /main.ts === +// --- (line: 15) skipped --- +// export type * from "./g"; +// export type * as H from "./h"; +// export type { I } from "./i"; +// /*FIND ALL REFS*/export type { j1, j2 as j3 } from "./j"; +// type Z1 = 1; +// export type { Z1 }; +// type Z2 = 2; +// type Z3 = 3; +// export type { z2, z3 as z4 }; + + + +// === findAllReferences === +// === /main.ts === +// --- (line: 15) skipped --- +// export type * from "./g"; +// export type * as H from "./h"; +// export type { I } from "./i"; +// export /*FIND ALL REFS*/type { j1, j2 as j3 } from "./j"; +// type Z1 = 1; +// export type { Z1 }; +// type Z2 = 2; +// type Z3 = 3; +// export type { z2, z3 as z4 }; + + + +// === findAllReferences === +// === /main.ts === +// --- (line: 15) skipped --- +// export type * from "./g"; +// export type * as H from "./h"; +// export type { I } from "./i"; +// export type { j1, j2 as j3 } /*FIND ALL REFS*/from "[|./j|]"; +// type Z1 = 1; +// export type { Z1 }; +// type Z2 = 2; +// type Z3 = 3; +// export type { z2, z3 as z4 }; + + + +// === findAllReferences === +// === /main.ts === +// --- (line: 15) skipped --- +// export type * from "./g"; +// export type * as H from "./h"; +// export type { I } from "./i"; +// export type { j1, j2 /*FIND ALL REFS*/as j3 } from "./j"; +// type Z1 = 1; +// export type { Z1 }; +// type Z2 = 2; +// type Z3 = 3; +// export type { z2, z3 as z4 }; + + + +// === findAllReferences === +// === /main.ts === +// --- (line: 16) skipped --- +// export type * as H from "./h"; +// export type { I } from "./i"; +// export type { j1, j2 as j3 } from "./j"; +// type [|Z1|] = 1; +// /*FIND ALL REFS*/export type { Z1 }; +// type Z2 = 2; +// type Z3 = 3; +// export type { z2, z3 as z4 }; + + + +// === findAllReferences === +// === /main.ts === +// --- (line: 16) skipped --- +// export type * as H from "./h"; +// export type { I } from "./i"; +// export type { j1, j2 as j3 } from "./j"; +// type [|Z1|] = 1; +// export /*FIND ALL REFS*/type { Z1 }; +// type Z2 = 2; +// type Z3 = 3; +// export type { z2, z3 as z4 }; + + + +// === findAllReferences === +// === /main.ts === +// --- (line: 20) skipped --- +// export type { Z1 }; +// type Z2 = 2; +// type Z3 = 3; +// /*FIND ALL REFS*/export type { z2, z3 as z4 }; + + + +// === findAllReferences === +// === /main.ts === +// --- (line: 20) skipped --- +// export type { Z1 }; +// type Z2 = 2; +// type Z3 = 3; +// export /*FIND ALL REFS*/type { z2, z3 as z4 }; + + + +// === findAllReferences === +// === /main.ts === +// --- (line: 20) skipped --- +// export type { Z1 }; +// type Z2 = 2; +// type Z3 = 3; +// export type { z2, z3 /*FIND ALL REFS*/as z4 }; + + + +// === findAllReferences === +// === /main2.ts === +// const [|x|] = {}; +// /*FIND ALL REFS*/export = [|x|]; + + + +// === findAllReferences === +// === /main3.ts === +// const [|y|] = {}; +// /*FIND ALL REFS*/export default [|y|]; \ No newline at end of file diff --git a/testdata/baselines/reference/fourslash/quickInfo/jsdocOnInheritedMembers1.baseline b/testdata/baselines/reference/fourslash/quickInfo/jsdocOnInheritedMembers1.baseline index 2d56b118..eb80ccd6 100644 --- a/testdata/baselines/reference/fourslash/quickInfo/jsdocOnInheritedMembers1.baseline +++ b/testdata/baselines/reference/fourslash/quickInfo/jsdocOnInheritedMembers1.baseline @@ -18,7 +18,7 @@ // | ```tsx // | (method) B.method(): void // | ``` -// | +// | Method documentation. // | ---------------------------------------------------------------------- [ { @@ -34,7 +34,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\n(method) B.method(): void\n```\n" + "value": "```tsx\n(method) B.method(): void\n```\nMethod documentation." }, "range": { "start": { diff --git a/testdata/baselines/reference/fourslash/quickInfo/jsdocOnInheritedMembers2.baseline b/testdata/baselines/reference/fourslash/quickInfo/jsdocOnInheritedMembers2.baseline index ace63d1c..e062d750 100644 --- a/testdata/baselines/reference/fourslash/quickInfo/jsdocOnInheritedMembers2.baseline +++ b/testdata/baselines/reference/fourslash/quickInfo/jsdocOnInheritedMembers2.baseline @@ -18,7 +18,7 @@ // | ```tsx // | (method) B.method(): void // | ``` -// | +// | Method documentation. // | ---------------------------------------------------------------------- [ { @@ -34,7 +34,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\n(method) B.method(): void\n```\n" + "value": "```tsx\n(method) B.method(): void\n```\nMethod documentation." }, "range": { "start": { diff --git a/testdata/baselines/reference/fourslash/quickInfo/quickInfoCommentsClass.baseline b/testdata/baselines/reference/fourslash/quickInfo/quickInfoCommentsClass.baseline index 14c8e6a8..493fc0d3 100644 --- a/testdata/baselines/reference/fourslash/quickInfo/quickInfoCommentsClass.baseline +++ b/testdata/baselines/reference/fourslash/quickInfo/quickInfoCommentsClass.baseline @@ -21,7 +21,7 @@ // ^^ // | ---------------------------------------------------------------------- // | ```tsx -// | class c2 +// | constructor c2(): c2 // | ``` // | This is class c2 without constructor // | ---------------------------------------------------------------------- @@ -147,7 +147,7 @@ // ^^ // | ---------------------------------------------------------------------- // | ```tsx -// | class c5 +// | constructor c5(): c5 // | ``` // | Class with statics // | ---------------------------------------------------------------------- @@ -307,7 +307,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\nclass c2\n```\nThis is class c2 without constructor" + "value": "```tsx\nconstructor c2(): c2\n```\nThis is class c2 without constructor" }, "range": { "start": { @@ -712,7 +712,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\nclass c5\n```\nClass with statics" + "value": "```tsx\nconstructor c5(): c5\n```\nClass with statics" }, "range": { "start": { diff --git a/testdata/baselines/reference/fourslash/quickInfo/quickInfoDisplayPartsClass.baseline b/testdata/baselines/reference/fourslash/quickInfo/quickInfoDisplayPartsClass.baseline index e23f9085..13b59621 100644 --- a/testdata/baselines/reference/fourslash/quickInfo/quickInfoDisplayPartsClass.baseline +++ b/testdata/baselines/reference/fourslash/quickInfo/quickInfoDisplayPartsClass.baseline @@ -20,7 +20,7 @@ // ^ // | ---------------------------------------------------------------------- // | ```tsx -// | class c +// | constructor c(): c // | ``` // | // | ---------------------------------------------------------------------- @@ -107,7 +107,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\nclass c\n```\n" + "value": "```tsx\nconstructor c(): c\n```\n" }, "range": { "start": { diff --git a/testdata/baselines/reference/fourslash/quickInfo/quickInfoDisplayPartsClassConstructor.baseline b/testdata/baselines/reference/fourslash/quickInfo/quickInfoDisplayPartsClassConstructor.baseline index e4336656..c863ea27 100644 --- a/testdata/baselines/reference/fourslash/quickInfo/quickInfoDisplayPartsClassConstructor.baseline +++ b/testdata/baselines/reference/fourslash/quickInfo/quickInfoDisplayPartsClassConstructor.baseline @@ -47,7 +47,6 @@ // | ---------------------------------------------------------------------- // | ```tsx // | constructor cWithOverloads(x: string): cWithOverloads -// | constructor cWithOverloads(x: number): cWithOverloads // | ``` // | // | ---------------------------------------------------------------------- @@ -55,7 +54,6 @@ // ^^^^^^^^^^^ // | ---------------------------------------------------------------------- // | ```tsx -// | constructor cWithOverloads(x: string): cWithOverloads // | constructor cWithOverloads(x: number): cWithOverloads // | ``` // | @@ -64,8 +62,7 @@ // ^^^^^^^^^^^ // | ---------------------------------------------------------------------- // | ```tsx -// | constructor cWithOverloads(x: string): cWithOverloads -// | constructor cWithOverloads(x: number): cWithOverloads +// | constructor cWithOverloads(x: any): cWithOverloads // | ``` // | // | ---------------------------------------------------------------------- @@ -122,8 +119,6 @@ // | ---------------------------------------------------------------------- // | ```tsx // | constructor cWithMultipleOverloads(x: string): cWithMultipleOverloads -// | constructor cWithMultipleOverloads(x: number): cWithMultipleOverloads -// | constructor cWithMultipleOverloads(x: boolean): cWithMultipleOverloads // | ``` // | // | ---------------------------------------------------------------------- @@ -131,9 +126,7 @@ // ^^^^^^^^^^^ // | ---------------------------------------------------------------------- // | ```tsx -// | constructor cWithMultipleOverloads(x: string): cWithMultipleOverloads // | constructor cWithMultipleOverloads(x: number): cWithMultipleOverloads -// | constructor cWithMultipleOverloads(x: boolean): cWithMultipleOverloads // | ``` // | // | ---------------------------------------------------------------------- @@ -141,8 +134,6 @@ // ^^^^^^^^^^^ // | ---------------------------------------------------------------------- // | ```tsx -// | constructor cWithMultipleOverloads(x: string): cWithMultipleOverloads -// | constructor cWithMultipleOverloads(x: number): cWithMultipleOverloads // | constructor cWithMultipleOverloads(x: boolean): cWithMultipleOverloads // | ``` // | @@ -151,9 +142,7 @@ // ^^^^^^^^^^^ // | ---------------------------------------------------------------------- // | ```tsx -// | constructor cWithMultipleOverloads(x: string): cWithMultipleOverloads -// | constructor cWithMultipleOverloads(x: number): cWithMultipleOverloads -// | constructor cWithMultipleOverloads(x: boolean): cWithMultipleOverloads +// | constructor cWithMultipleOverloads(x: any): cWithMultipleOverloads // | ``` // | // | ---------------------------------------------------------------------- @@ -368,7 +357,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\nconstructor cWithOverloads(x: string): cWithOverloads\nconstructor cWithOverloads(x: number): cWithOverloads\n```\n" + "value": "```tsx\nconstructor cWithOverloads(x: string): cWithOverloads\n```\n" }, "range": { "start": { @@ -395,7 +384,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\nconstructor cWithOverloads(x: string): cWithOverloads\nconstructor cWithOverloads(x: number): cWithOverloads\n```\n" + "value": "```tsx\nconstructor cWithOverloads(x: number): cWithOverloads\n```\n" }, "range": { "start": { @@ -422,7 +411,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\nconstructor cWithOverloads(x: string): cWithOverloads\nconstructor cWithOverloads(x: number): cWithOverloads\n```\n" + "value": "```tsx\nconstructor cWithOverloads(x: any): cWithOverloads\n```\n" }, "range": { "start": { @@ -611,7 +600,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\nconstructor cWithMultipleOverloads(x: string): cWithMultipleOverloads\nconstructor cWithMultipleOverloads(x: number): cWithMultipleOverloads\nconstructor cWithMultipleOverloads(x: boolean): cWithMultipleOverloads\n```\n" + "value": "```tsx\nconstructor cWithMultipleOverloads(x: string): cWithMultipleOverloads\n```\n" }, "range": { "start": { @@ -638,7 +627,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\nconstructor cWithMultipleOverloads(x: string): cWithMultipleOverloads\nconstructor cWithMultipleOverloads(x: number): cWithMultipleOverloads\nconstructor cWithMultipleOverloads(x: boolean): cWithMultipleOverloads\n```\n" + "value": "```tsx\nconstructor cWithMultipleOverloads(x: number): cWithMultipleOverloads\n```\n" }, "range": { "start": { @@ -665,7 +654,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\nconstructor cWithMultipleOverloads(x: string): cWithMultipleOverloads\nconstructor cWithMultipleOverloads(x: number): cWithMultipleOverloads\nconstructor cWithMultipleOverloads(x: boolean): cWithMultipleOverloads\n```\n" + "value": "```tsx\nconstructor cWithMultipleOverloads(x: boolean): cWithMultipleOverloads\n```\n" }, "range": { "start": { @@ -692,7 +681,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\nconstructor cWithMultipleOverloads(x: string): cWithMultipleOverloads\nconstructor cWithMultipleOverloads(x: number): cWithMultipleOverloads\nconstructor cWithMultipleOverloads(x: boolean): cWithMultipleOverloads\n```\n" + "value": "```tsx\nconstructor cWithMultipleOverloads(x: any): cWithMultipleOverloads\n```\n" }, "range": { "start": { diff --git a/testdata/baselines/reference/fourslash/quickInfo/quickInfoDisplayPartsFunction.baseline b/testdata/baselines/reference/fourslash/quickInfo/quickInfoDisplayPartsFunction.baseline index 973cdbfa..bccaaa43 100644 --- a/testdata/baselines/reference/fourslash/quickInfo/quickInfoDisplayPartsFunction.baseline +++ b/testdata/baselines/reference/fourslash/quickInfo/quickInfoDisplayPartsFunction.baseline @@ -14,7 +14,6 @@ // | ---------------------------------------------------------------------- // | ```tsx // | function foowithoverload(a: string): string -// | function foowithoverload(a: number): number // | ``` // | // | ---------------------------------------------------------------------- @@ -22,7 +21,6 @@ // ^^^^^^^^^^^^^^^ // | ---------------------------------------------------------------------- // | ```tsx -// | function foowithoverload(a: string): string // | function foowithoverload(a: number): number // | ``` // | @@ -31,8 +29,7 @@ // ^^^^^^^^^^^^^^^ // | ---------------------------------------------------------------------- // | ```tsx -// | function foowithoverload(a: string): string -// | function foowithoverload(a: number): number +// | function foowithoverload(a: any): any // | ``` // | // | ---------------------------------------------------------------------- @@ -43,8 +40,6 @@ // | ---------------------------------------------------------------------- // | ```tsx // | function foowith3overload(a: string): string -// | function foowith3overload(a: number): number -// | function foowith3overload(a: boolean): boolean // | ``` // | // | ---------------------------------------------------------------------- @@ -52,9 +47,7 @@ // ^^^^^^^^^^^^^^^^ // | ---------------------------------------------------------------------- // | ```tsx -// | function foowith3overload(a: string): string // | function foowith3overload(a: number): number -// | function foowith3overload(a: boolean): boolean // | ``` // | // | ---------------------------------------------------------------------- @@ -62,8 +55,6 @@ // ^^^^^^^^^^^^^^^^ // | ---------------------------------------------------------------------- // | ```tsx -// | function foowith3overload(a: string): string -// | function foowith3overload(a: number): number // | function foowith3overload(a: boolean): boolean // | ``` // | @@ -72,9 +63,7 @@ // ^^^^^^^^^^^^^^^^ // | ---------------------------------------------------------------------- // | ```tsx -// | function foowith3overload(a: string): string -// | function foowith3overload(a: number): number -// | function foowith3overload(a: boolean): boolean +// | function foowith3overload(a: any): any // | ``` // | // | ---------------------------------------------------------------------- @@ -169,7 +158,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\nfunction foowithoverload(a: string): string\nfunction foowithoverload(a: number): number\n```\n" + "value": "```tsx\nfunction foowithoverload(a: string): string\n```\n" }, "range": { "start": { @@ -196,7 +185,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\nfunction foowithoverload(a: string): string\nfunction foowithoverload(a: number): number\n```\n" + "value": "```tsx\nfunction foowithoverload(a: number): number\n```\n" }, "range": { "start": { @@ -223,7 +212,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\nfunction foowithoverload(a: string): string\nfunction foowithoverload(a: number): number\n```\n" + "value": "```tsx\nfunction foowithoverload(a: any): any\n```\n" }, "range": { "start": { @@ -250,7 +239,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\nfunction foowith3overload(a: string): string\nfunction foowith3overload(a: number): number\nfunction foowith3overload(a: boolean): boolean\n```\n" + "value": "```tsx\nfunction foowith3overload(a: string): string\n```\n" }, "range": { "start": { @@ -277,7 +266,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\nfunction foowith3overload(a: string): string\nfunction foowith3overload(a: number): number\nfunction foowith3overload(a: boolean): boolean\n```\n" + "value": "```tsx\nfunction foowith3overload(a: number): number\n```\n" }, "range": { "start": { @@ -304,7 +293,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\nfunction foowith3overload(a: string): string\nfunction foowith3overload(a: number): number\nfunction foowith3overload(a: boolean): boolean\n```\n" + "value": "```tsx\nfunction foowith3overload(a: boolean): boolean\n```\n" }, "range": { "start": { @@ -331,7 +320,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\nfunction foowith3overload(a: string): string\nfunction foowith3overload(a: number): number\nfunction foowith3overload(a: boolean): boolean\n```\n" + "value": "```tsx\nfunction foowith3overload(a: any): any\n```\n" }, "range": { "start": { diff --git a/testdata/baselines/reference/fourslash/quickInfo/quickInfoDisplayPartsLocalFunction.baseline b/testdata/baselines/reference/fourslash/quickInfo/quickInfoDisplayPartsLocalFunction.baseline index 603b1d55..c96c894c 100644 --- a/testdata/baselines/reference/fourslash/quickInfo/quickInfoDisplayPartsLocalFunction.baseline +++ b/testdata/baselines/reference/fourslash/quickInfo/quickInfoDisplayPartsLocalFunction.baseline @@ -22,7 +22,6 @@ // | ---------------------------------------------------------------------- // | ```tsx // | function foowithoverload(a: string): string -// | function foowithoverload(a: number): number // | ``` // | // | ---------------------------------------------------------------------- @@ -30,7 +29,6 @@ // ^^^^^^^^^^^^^^^ // | ---------------------------------------------------------------------- // | ```tsx -// | function foowithoverload(a: string): string // | function foowithoverload(a: number): number // | ``` // | @@ -39,8 +37,7 @@ // ^^^^^^^^^^^^^^^ // | ---------------------------------------------------------------------- // | ```tsx -// | function foowithoverload(a: string): string -// | function foowithoverload(a: number): number +// | function foowithoverload(a: any): any // | ``` // | // | ---------------------------------------------------------------------- @@ -51,8 +48,6 @@ // | ---------------------------------------------------------------------- // | ```tsx // | function foowith3overload(a: string): string -// | function foowith3overload(a: number): number -// | function foowith3overload(a: boolean): boolean // | ``` // | // | ---------------------------------------------------------------------- @@ -60,9 +55,7 @@ // ^^^^^^^^^^^^^^^^ // | ---------------------------------------------------------------------- // | ```tsx -// | function foowith3overload(a: string): string // | function foowith3overload(a: number): number -// | function foowith3overload(a: boolean): boolean // | ``` // | // | ---------------------------------------------------------------------- @@ -70,8 +63,6 @@ // ^^^^^^^^^^^^^^^^ // | ---------------------------------------------------------------------- // | ```tsx -// | function foowith3overload(a: string): string -// | function foowith3overload(a: number): number // | function foowith3overload(a: boolean): boolean // | ``` // | @@ -80,9 +71,7 @@ // ^^^^^^^^^^^^^^^^ // | ---------------------------------------------------------------------- // | ```tsx -// | function foowith3overload(a: string): string -// | function foowith3overload(a: number): number -// | function foowith3overload(a: boolean): boolean +// | function foowith3overload(a: any): any // | ``` // | // | ---------------------------------------------------------------------- @@ -213,7 +202,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\nfunction foowithoverload(a: string): string\nfunction foowithoverload(a: number): number\n```\n" + "value": "```tsx\nfunction foowithoverload(a: string): string\n```\n" }, "range": { "start": { @@ -240,7 +229,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\nfunction foowithoverload(a: string): string\nfunction foowithoverload(a: number): number\n```\n" + "value": "```tsx\nfunction foowithoverload(a: number): number\n```\n" }, "range": { "start": { @@ -267,7 +256,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\nfunction foowithoverload(a: string): string\nfunction foowithoverload(a: number): number\n```\n" + "value": "```tsx\nfunction foowithoverload(a: any): any\n```\n" }, "range": { "start": { @@ -294,7 +283,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\nfunction foowith3overload(a: string): string\nfunction foowith3overload(a: number): number\nfunction foowith3overload(a: boolean): boolean\n```\n" + "value": "```tsx\nfunction foowith3overload(a: string): string\n```\n" }, "range": { "start": { @@ -321,7 +310,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\nfunction foowith3overload(a: string): string\nfunction foowith3overload(a: number): number\nfunction foowith3overload(a: boolean): boolean\n```\n" + "value": "```tsx\nfunction foowith3overload(a: number): number\n```\n" }, "range": { "start": { @@ -348,7 +337,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\nfunction foowith3overload(a: string): string\nfunction foowith3overload(a: number): number\nfunction foowith3overload(a: boolean): boolean\n```\n" + "value": "```tsx\nfunction foowith3overload(a: boolean): boolean\n```\n" }, "range": { "start": { @@ -375,7 +364,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\nfunction foowith3overload(a: string): string\nfunction foowith3overload(a: number): number\nfunction foowith3overload(a: boolean): boolean\n```\n" + "value": "```tsx\nfunction foowith3overload(a: any): any\n```\n" }, "range": { "start": { diff --git a/testdata/baselines/reference/fourslash/quickInfo/quickInfoDisplayPartsTypeAlias.baseline b/testdata/baselines/reference/fourslash/quickInfo/quickInfoDisplayPartsTypeAlias.baseline index de8d7ae5..4ba0f03a 100644 --- a/testdata/baselines/reference/fourslash/quickInfo/quickInfoDisplayPartsTypeAlias.baseline +++ b/testdata/baselines/reference/fourslash/quickInfo/quickInfoDisplayPartsTypeAlias.baseline @@ -42,7 +42,7 @@ // ^ // | ---------------------------------------------------------------------- // | ```tsx -// | class c +// | constructor c(): c // | ``` // | // | ---------------------------------------------------------------------- @@ -195,7 +195,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\nclass c\n```\n" + "value": "```tsx\nconstructor c(): c\n```\n" }, "range": { "start": { diff --git a/testdata/baselines/reference/fourslash/quickInfo/quickInfoJsDocInheritage.baseline b/testdata/baselines/reference/fourslash/quickInfo/quickInfoJsDocInheritage.baseline index b8d48ea6..4e62ce93 100644 --- a/testdata/baselines/reference/fourslash/quickInfo/quickInfoJsDocInheritage.baseline +++ b/testdata/baselines/reference/fourslash/quickInfo/quickInfoJsDocInheritage.baseline @@ -121,6 +121,9 @@ // | (property) Drived1.foo1: number // | ``` // | +// | +// | *@description* — Base1.foo1 +// | // | ---------------------------------------------------------------------- // foo2(para1: string) { return 1 }; // ^^^^ @@ -129,6 +132,12 @@ // | (method) Drived1.foo2(para1: string): number // | ``` // | +// | +// | *@param* `q` — Base1.foo2 parameter +// | +// | +// | *@returns* — Base1.foo2 return +// | // | ---------------------------------------------------------------------- // } // @@ -142,6 +151,9 @@ // | (property) Drived2.foo1: number // | ``` // | +// | +// | *@description* — Base1.foo1 +// | // | ---------------------------------------------------------------------- // foo2 = (para1: string) => { return 1; }; // ^^^^ @@ -150,6 +162,12 @@ // | (property) Drived2.foo2: (para1: string) => number // | ``` // | +// | +// | *@param* `q` — Base1.foo2 parameter +// | +// | +// | *@returns* — Base1.foo2 return +// | // | ---------------------------------------------------------------------- // } // @@ -176,6 +194,9 @@ // | (property) Drived3.foo1: number // | ``` // | +// | +// | *@description* — Base2.foo1 +// | // | ---------------------------------------------------------------------- // foo2(para1: string) { return 1 }; // ^^^^ @@ -184,6 +205,12 @@ // | (method) Drived3.foo2(para1: string): number // | ``` // | +// | +// | *@param* `q` — Base2.foo2 parameter +// | +// | +// | *@returns* — Base2.foo2 return +// | // | ---------------------------------------------------------------------- // } // @@ -197,6 +224,9 @@ // | (property) Drived4.foo1: number // | ``` // | +// | +// | *@description* — Base2.foo1 +// | // | ---------------------------------------------------------------------- // foo2 = (para1: string) => { return 1; }; // ^^^^ @@ -205,6 +235,12 @@ // | (property) Drived4.foo2: (para1: string) => number // | ``` // | +// | +// | *@param* `q` — Base2.foo2 parameter +// | +// | +// | *@returns* — Base2.foo2 return +// | // | ---------------------------------------------------------------------- // } // @@ -215,6 +251,9 @@ // | (property) Drived1.foo1: number // | ``` // | +// | +// | *@description* — Base1.foo1 +// | // | ---------------------------------------------------------------------- // new Drived1().foo2; // ^^^^ @@ -223,6 +262,12 @@ // | (method) Drived1.foo2(para1: string): number // | ``` // | +// | +// | *@param* `q` — Base1.foo2 parameter +// | +// | +// | *@returns* — Base1.foo2 return +// | // | ---------------------------------------------------------------------- // new Drived2().foo1; // ^^^^ @@ -231,6 +276,9 @@ // | (property) Drived2.foo1: number // | ``` // | +// | +// | *@description* — Base1.foo1 +// | // | ---------------------------------------------------------------------- // new Drived2().foo2; // ^^^^ @@ -239,6 +287,12 @@ // | (property) Drived2.foo2: (para1: string) => number // | ``` // | +// | +// | *@param* `q` — Base1.foo2 parameter +// | +// | +// | *@returns* — Base1.foo2 return +// | // | ---------------------------------------------------------------------- // new Drived3().foo1; // ^^^^ @@ -247,6 +301,9 @@ // | (property) Drived3.foo1: number // | ``` // | +// | +// | *@description* — Base2.foo1 +// | // | ---------------------------------------------------------------------- // new Drived3().foo2; // ^^^^ @@ -255,6 +312,12 @@ // | (method) Drived3.foo2(para1: string): number // | ``` // | +// | +// | *@param* `q` — Base2.foo2 parameter +// | +// | +// | *@returns* — Base2.foo2 return +// | // | ---------------------------------------------------------------------- // new Drived4().foo1; // ^^^^ @@ -263,6 +326,9 @@ // | (property) Drived4.foo1: number // | ``` // | +// | +// | *@description* — Base2.foo1 +// | // | ---------------------------------------------------------------------- // new Drived4().foo2; // ^^^^ @@ -271,6 +337,12 @@ // | (property) Drived4.foo2: (para1: string) => number // | ``` // | +// | +// | *@param* `q` — Base2.foo2 parameter +// | +// | +// | *@returns* — Base2.foo2 return +// | // | ---------------------------------------------------------------------- [ { @@ -502,7 +574,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\n(property) Drived1.foo1: number\n```\n" + "value": "```tsx\n(property) Drived1.foo1: number\n```\n\n\n*@description* — Base1.foo1 \n" }, "range": { "start": { @@ -529,7 +601,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\n(method) Drived1.foo2(para1: string): number\n```\n" + "value": "```tsx\n(method) Drived1.foo2(para1: string): number\n```\n\n\n*@param* `q` — Base1.foo2 parameter\n\n\n*@returns* — Base1.foo2 return\n" }, "range": { "start": { @@ -556,7 +628,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\n(property) Drived2.foo1: number\n```\n" + "value": "```tsx\n(property) Drived2.foo1: number\n```\n\n\n*@description* — Base1.foo1 \n" }, "range": { "start": { @@ -583,7 +655,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\n(property) Drived2.foo2: (para1: string) => number\n```\n" + "value": "```tsx\n(property) Drived2.foo2: (para1: string) => number\n```\n\n\n*@param* `q` — Base1.foo2 parameter\n\n\n*@returns* — Base1.foo2 return\n" }, "range": { "start": { @@ -610,7 +682,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\n(property) Drived3.foo1: number\n```\n" + "value": "```tsx\n(property) Drived3.foo1: number\n```\n\n\n*@description* — Base2.foo1 \n" }, "range": { "start": { @@ -637,7 +709,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\n(method) Drived3.foo2(para1: string): number\n```\n" + "value": "```tsx\n(method) Drived3.foo2(para1: string): number\n```\n\n\n*@param* `q` — Base2.foo2 parameter\n\n\n*@returns* — Base2.foo2 return\n" }, "range": { "start": { @@ -664,7 +736,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\n(property) Drived4.foo1: number\n```\n" + "value": "```tsx\n(property) Drived4.foo1: number\n```\n\n\n*@description* — Base2.foo1 \n" }, "range": { "start": { @@ -691,7 +763,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\n(property) Drived4.foo2: (para1: string) => number\n```\n" + "value": "```tsx\n(property) Drived4.foo2: (para1: string) => number\n```\n\n\n*@param* `q` — Base2.foo2 parameter\n\n\n*@returns* — Base2.foo2 return\n" }, "range": { "start": { @@ -718,7 +790,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\n(property) Drived1.foo1: number\n```\n" + "value": "```tsx\n(property) Drived1.foo1: number\n```\n\n\n*@description* — Base1.foo1 \n" }, "range": { "start": { @@ -745,7 +817,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\n(method) Drived1.foo2(para1: string): number\n```\n" + "value": "```tsx\n(method) Drived1.foo2(para1: string): number\n```\n\n\n*@param* `q` — Base1.foo2 parameter\n\n\n*@returns* — Base1.foo2 return\n" }, "range": { "start": { @@ -772,7 +844,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\n(property) Drived2.foo1: number\n```\n" + "value": "```tsx\n(property) Drived2.foo1: number\n```\n\n\n*@description* — Base1.foo1 \n" }, "range": { "start": { @@ -799,7 +871,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\n(property) Drived2.foo2: (para1: string) => number\n```\n" + "value": "```tsx\n(property) Drived2.foo2: (para1: string) => number\n```\n\n\n*@param* `q` — Base1.foo2 parameter\n\n\n*@returns* — Base1.foo2 return\n" }, "range": { "start": { @@ -826,7 +898,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\n(property) Drived3.foo1: number\n```\n" + "value": "```tsx\n(property) Drived3.foo1: number\n```\n\n\n*@description* — Base2.foo1 \n" }, "range": { "start": { @@ -853,7 +925,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\n(method) Drived3.foo2(para1: string): number\n```\n" + "value": "```tsx\n(method) Drived3.foo2(para1: string): number\n```\n\n\n*@param* `q` — Base2.foo2 parameter\n\n\n*@returns* — Base2.foo2 return\n" }, "range": { "start": { @@ -880,7 +952,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\n(property) Drived4.foo1: number\n```\n" + "value": "```tsx\n(property) Drived4.foo1: number\n```\n\n\n*@description* — Base2.foo1 \n" }, "range": { "start": { @@ -907,7 +979,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\n(property) Drived4.foo2: (para1: string) => number\n```\n" + "value": "```tsx\n(property) Drived4.foo2: (para1: string) => number\n```\n\n\n*@param* `q` — Base2.foo2 parameter\n\n\n*@returns* — Base2.foo2 return\n" }, "range": { "start": { diff --git a/testdata/baselines/reference/fourslash/quickInfo/quickInfoJsDocTags16.baseline b/testdata/baselines/reference/fourslash/quickInfo/quickInfoJsDocTags16.baseline index 7207d867..e47770a4 100644 --- a/testdata/baselines/reference/fourslash/quickInfo/quickInfoJsDocTags16.baseline +++ b/testdata/baselines/reference/fourslash/quickInfo/quickInfoJsDocTags16.baseline @@ -16,7 +16,9 @@ // | ```tsx // | (method) B.foo(): void // | ``` +// | Description text here. // | +// | *@virtual* // | ---------------------------------------------------------------------- // } // @@ -27,7 +29,9 @@ // | ```tsx // | (method) C.foo(): void // | ``` +// | Description text here. // | +// | *@virtual* // | ---------------------------------------------------------------------- // } [ @@ -44,7 +48,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\n(method) B.foo(): void\n```\n" + "value": "```tsx\n(method) B.foo(): void\n```\nDescription text here.\n\n*@virtual*" }, "range": { "start": { @@ -71,7 +75,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\n(method) C.foo(): void\n```\n" + "value": "```tsx\n(method) C.foo(): void\n```\nDescription text here.\n\n*@virtual*" }, "range": { "start": { diff --git a/testdata/baselines/reference/fourslash/quickInfo/quickInfoJsDocTags4.baseline b/testdata/baselines/reference/fourslash/quickInfo/quickInfoJsDocTags4.baseline index 2892d1f2..64e87ec6 100644 --- a/testdata/baselines/reference/fourslash/quickInfo/quickInfoJsDocTags4.baseline +++ b/testdata/baselines/reference/fourslash/quickInfo/quickInfoJsDocTags4.baseline @@ -21,6 +21,21 @@ // | ```tsx // | (method) Bar.method(x: number, y: number): number // | ``` +// | comment +// | +// | *@author* — Me +// | +// | +// | *@see* `x` — (the parameter) +// | +// | +// | *@param* `x` - x comment +// | +// | +// | *@param* `y` - y comment +// | +// | +// | *@returns* — The result // | // | ---------------------------------------------------------------------- // const res = super.method(x, y) + 100; @@ -41,7 +56,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\n(method) Bar.method(x: number, y: number): number\n```\n" + "value": "```tsx\n(method) Bar.method(x: number, y: number): number\n```\ncomment\n\n*@author* — Me \n\n\n*@see* `x` — (the parameter)\n\n\n*@param* `x` - x comment\n\n\n*@param* `y` - y comment\n\n\n*@returns* — The result\n" }, "range": { "start": { diff --git a/testdata/baselines/reference/fourslash/quickInfo/quickInfoJsDocTags5.baseline b/testdata/baselines/reference/fourslash/quickInfo/quickInfoJsDocTags5.baseline index c94faf9b..383e41d3 100644 --- a/testdata/baselines/reference/fourslash/quickInfo/quickInfoJsDocTags5.baseline +++ b/testdata/baselines/reference/fourslash/quickInfo/quickInfoJsDocTags5.baseline @@ -21,6 +21,21 @@ // | ```tsx // | (method) Bar.method(x: any, y: any): number // | ``` +// | comment +// | +// | *@author* — Me +// | +// | +// | *@see* `x` — (the parameter) +// | +// | +// | *@param* `x` - x comment +// | +// | +// | *@param* `y` - y comment +// | +// | +// | *@returns* — The result // | // | ---------------------------------------------------------------------- // const res = super.method(x, y) + 100; @@ -41,7 +56,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\n(method) Bar.method(x: any, y: any): number\n```\n" + "value": "```tsx\n(method) Bar.method(x: any, y: any): number\n```\ncomment\n\n*@author* — Me \n\n\n*@see* `x` — (the parameter)\n\n\n*@param* `x` - x comment\n\n\n*@param* `y` - y comment\n\n\n*@returns* — The result\n" }, "range": { "start": { diff --git a/testdata/baselines/reference/fourslash/quickInfo/quickInfoJsDocTagsFunctionOverload01.baseline b/testdata/baselines/reference/fourslash/quickInfo/quickInfoJsDocTagsFunctionOverload01.baseline index 842dcf04..4a272576 100644 --- a/testdata/baselines/reference/fourslash/quickInfo/quickInfoJsDocTagsFunctionOverload01.baseline +++ b/testdata/baselines/reference/fourslash/quickInfo/quickInfoJsDocTagsFunctionOverload01.baseline @@ -8,7 +8,6 @@ // | ---------------------------------------------------------------------- // | ```tsx // | function foo(): void -// | function foo(x: number): void // | ``` // | Doc foo // | ---------------------------------------------------------------------- @@ -21,10 +20,12 @@ // ^^^ // | ---------------------------------------------------------------------- // | ```tsx -// | function foo(): void // | function foo(x: number): void // | ``` -// | Doc foo +// | Doc foo overloaded +// | +// | *@tag* — Tag text +// | // | ---------------------------------------------------------------------- [ { @@ -40,7 +41,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\nfunction foo(): void\nfunction foo(x: number): void\n```\nDoc foo" + "value": "```tsx\nfunction foo(): void\n```\nDoc foo" }, "range": { "start": { @@ -67,7 +68,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\nfunction foo(): void\nfunction foo(x: number): void\n```\nDoc foo" + "value": "```tsx\nfunction foo(x: number): void\n```\nDoc foo overloaded\n\n*@tag* — Tag text\n" }, "range": { "start": { diff --git a/testdata/baselines/reference/fourslash/quickInfo/quickInfoJsDocTagsFunctionOverload03.baseline b/testdata/baselines/reference/fourslash/quickInfo/quickInfoJsDocTagsFunctionOverload03.baseline index ab0e3bf2..530d7887 100644 --- a/testdata/baselines/reference/fourslash/quickInfo/quickInfoJsDocTagsFunctionOverload03.baseline +++ b/testdata/baselines/reference/fourslash/quickInfo/quickInfoJsDocTagsFunctionOverload03.baseline @@ -5,7 +5,6 @@ // | ---------------------------------------------------------------------- // | ```tsx // | function foo(): void -// | function foo(x: number): void // | ``` // | // | ---------------------------------------------------------------------- @@ -18,9 +17,11 @@ // ^^^ // | ---------------------------------------------------------------------- // | ```tsx -// | function foo(): void // | function foo(x: number): void // | ``` +// | Doc foo overloaded +// | +// | *@tag* — Tag text // | // | ---------------------------------------------------------------------- [ @@ -37,7 +38,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\nfunction foo(): void\nfunction foo(x: number): void\n```\n" + "value": "```tsx\nfunction foo(): void\n```\n" }, "range": { "start": { @@ -64,7 +65,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\nfunction foo(): void\nfunction foo(x: number): void\n```\n" + "value": "```tsx\nfunction foo(x: number): void\n```\nDoc foo overloaded\n\n*@tag* — Tag text\n" }, "range": { "start": { diff --git a/testdata/baselines/reference/fourslash/quickInfo/quickInfoJsDocTagsFunctionOverload05.baseline b/testdata/baselines/reference/fourslash/quickInfo/quickInfoJsDocTagsFunctionOverload05.baseline index af4d5156..7ffcd11a 100644 --- a/testdata/baselines/reference/fourslash/quickInfo/quickInfoJsDocTagsFunctionOverload05.baseline +++ b/testdata/baselines/reference/fourslash/quickInfo/quickInfoJsDocTagsFunctionOverload05.baseline @@ -5,7 +5,6 @@ // | ---------------------------------------------------------------------- // | ```tsx // | function foo(): void -// | function foo(x: number): void // | ``` // | // | ---------------------------------------------------------------------- @@ -17,10 +16,12 @@ // ^^^ // | ---------------------------------------------------------------------- // | ```tsx -// | function foo(): void // | function foo(x: number): void // | ``` // | +// | +// | *@tag* — Tag text +// | // | ---------------------------------------------------------------------- [ { @@ -36,7 +37,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\nfunction foo(): void\nfunction foo(x: number): void\n```\n" + "value": "```tsx\nfunction foo(): void\n```\n" }, "range": { "start": { @@ -63,7 +64,7 @@ "item": { "contents": { "kind": "markdown", - "value": "```tsx\nfunction foo(): void\nfunction foo(x: number): void\n```\n" + "value": "```tsx\nfunction foo(x: number): void\n```\n\n\n*@tag* — Tag text\n" }, "range": { "start": { diff --git a/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics01.baseline b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics01.baseline new file mode 100644 index 00000000..8f1d3f66 --- /dev/null +++ b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics01.baseline @@ -0,0 +1,11 @@ +// === Syntax and Semantic Diagnostics === +/a.js(1,5): error TS1134: Variable declaration expected. +/a.js(1,8): error TS1109: Expression expected. + + +==== /a.js (2 errors) ==== + var ===; + ~~~ +!!! error TS1134: Variable declaration expected. + ~ +!!! error TS1109: Expression expected. \ No newline at end of file diff --git a/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics02.baseline b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics02.baseline new file mode 100644 index 00000000..212add17 --- /dev/null +++ b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics02.baseline @@ -0,0 +1,23 @@ +// === Syntax and Semantic Diagnostics === +/b.js(2,8): error TS8010: Type annotations can only be used in TypeScript files. +/b.js(3,17): error TS8010: Type annotations can only be used in TypeScript files. +/b.js(4,5): error TS1389: 'var' is not allowed as a variable declaration name. +/b.js(4,9): error TS1134: Variable declaration expected. +/b.js(4,11): error TS1134: Variable declaration expected. + + +==== /b.js (5 errors) ==== + var a = "a"; + var b: boolean = true; + ~~~~~~~ +!!! error TS8010: Type annotations can only be used in TypeScript files. + function foo(): string { } + ~~~~~~ +!!! error TS8010: Type annotations can only be used in TypeScript files. + var var = "c"; + ~~~ +!!! error TS1389: 'var' is not allowed as a variable declaration name. + ~ +!!! error TS1134: Variable declaration expected. + ~~~ +!!! error TS1134: Variable declaration expected. \ No newline at end of file diff --git a/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics1.baseline b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics1.baseline new file mode 100644 index 00000000..5a7ba4c6 --- /dev/null +++ b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics1.baseline @@ -0,0 +1,8 @@ +// === Syntax and Semantic Diagnostics === +/a.js(1,1): error TS8002: 'import ... =' can only be used in TypeScript files. + + +==== /a.js (1 errors) ==== + import a = b; + ~~~~~~~~~~~~~ +!!! error TS8002: 'import ... =' can only be used in TypeScript files. \ No newline at end of file diff --git a/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics10.baseline b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics10.baseline new file mode 100644 index 00000000..d60ddbbf --- /dev/null +++ b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics10.baseline @@ -0,0 +1,8 @@ +// === Syntax and Semantic Diagnostics === +/a.js(1,12): error TS8004: Type parameter declarations can only be used in TypeScript files. + + +==== /a.js (1 errors) ==== + function F() { } + ~ +!!! error TS8004: Type parameter declarations can only be used in TypeScript files. \ No newline at end of file diff --git a/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics11.baseline b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics11.baseline new file mode 100644 index 00000000..3cf4c936 --- /dev/null +++ b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics11.baseline @@ -0,0 +1,8 @@ +// === Syntax and Semantic Diagnostics === +/a.js(1,15): error TS8010: Type annotations can only be used in TypeScript files. + + +==== /a.js (1 errors) ==== + function F(): number { } + ~~~~~~ +!!! error TS8010: Type annotations can only be used in TypeScript files. \ No newline at end of file diff --git a/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics12.baseline b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics12.baseline new file mode 100644 index 00000000..36bfd049 --- /dev/null +++ b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics12.baseline @@ -0,0 +1,8 @@ +// === Syntax and Semantic Diagnostics === +/a.js(1,1): error TS8009: The 'declare' modifier can only be used in TypeScript files. + + +==== /a.js (1 errors) ==== + declare var v; + ~~~~~~~ +!!! error TS8009: The 'declare' modifier can only be used in TypeScript files. \ No newline at end of file diff --git a/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics13.baseline b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics13.baseline new file mode 100644 index 00000000..1a8c0bb7 --- /dev/null +++ b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics13.baseline @@ -0,0 +1,8 @@ +// === Syntax and Semantic Diagnostics === +/a.js(1,8): error TS8010: Type annotations can only be used in TypeScript files. + + +==== /a.js (1 errors) ==== + var v: () => number; + ~~~~~~~~~~~~ +!!! error TS8010: Type annotations can only be used in TypeScript files. \ No newline at end of file diff --git a/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics14.baseline b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics14.baseline new file mode 100644 index 00000000..508f54f1 --- /dev/null +++ b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics14.baseline @@ -0,0 +1,8 @@ +// === Syntax and Semantic Diagnostics === +/a.js(1,13): error TS1109: Expression expected. + + +==== /a.js (1 errors) ==== + Foo(); + ~ +!!! error TS1109: Expression expected. \ No newline at end of file diff --git a/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics15.baseline b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics15.baseline new file mode 100644 index 00000000..24708d02 --- /dev/null +++ b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics15.baseline @@ -0,0 +1,8 @@ +// === Syntax and Semantic Diagnostics === +/a.js(1,12): error TS8012: Parameter modifiers can only be used in TypeScript files. + + +==== /a.js (1 errors) ==== + function F(public p) { } + ~~~~~~ +!!! error TS8012: Parameter modifiers can only be used in TypeScript files. \ No newline at end of file diff --git a/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics16.baseline b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics16.baseline new file mode 100644 index 00000000..0b9ef1cf --- /dev/null +++ b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics16.baseline @@ -0,0 +1,8 @@ +// === Syntax and Semantic Diagnostics === +/a.js(1,13): error TS8009: The '?' modifier can only be used in TypeScript files. + + +==== /a.js (1 errors) ==== + function F(p?) { } + ~ +!!! error TS8009: The '?' modifier can only be used in TypeScript files. \ No newline at end of file diff --git a/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics17.baseline b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics17.baseline new file mode 100644 index 00000000..cce3890c --- /dev/null +++ b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics17.baseline @@ -0,0 +1,8 @@ +// === Syntax and Semantic Diagnostics === +/a.js(1,15): error TS8010: Type annotations can only be used in TypeScript files. + + +==== /a.js (1 errors) ==== + function F(a: number) { } + ~~~~~~ +!!! error TS8010: Type annotations can only be used in TypeScript files. \ No newline at end of file diff --git a/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics18.baseline b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics18.baseline new file mode 100644 index 00000000..d92d7961 --- /dev/null +++ b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics18.baseline @@ -0,0 +1,19 @@ +// === Syntax and Semantic Diagnostics === +/a.js(4,5): error TS8009: The 'public' modifier can only be used in TypeScript files. +/b.js(2,8): error TS8010: Type annotations can only be used in TypeScript files. + + +==== /a.js (1 errors) ==== + class C { + x; // Regular property declaration allowed + static y; // static allowed + public z; // public not allowed + ~~~~~~ +!!! error TS8009: The 'public' modifier can only be used in TypeScript files. + } +==== /b.js (1 errors) ==== + class C { + x: number; // Types not allowed + ~~~~~~ +!!! error TS8010: Type annotations can only be used in TypeScript files. + } \ No newline at end of file diff --git a/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics19.baseline b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics19.baseline new file mode 100644 index 00000000..ca4729a3 --- /dev/null +++ b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics19.baseline @@ -0,0 +1,8 @@ +// === Syntax and Semantic Diagnostics === +/a.js(1,6): error TS8006: 'enum' declarations can only be used in TypeScript files. + + +==== /a.js (1 errors) ==== + enum E { } + ~ +!!! error TS8006: 'enum' declarations can only be used in TypeScript files. \ No newline at end of file diff --git a/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics2.baseline b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics2.baseline new file mode 100644 index 00000000..3836f761 --- /dev/null +++ b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics2.baseline @@ -0,0 +1,8 @@ +// === Syntax and Semantic Diagnostics === +/a.js(1,1): error TS8003: 'export =' can only be used in TypeScript files. + + +==== /a.js (1 errors) ==== + export = b; + ~~~~~~~~~~~ +!!! error TS8003: 'export =' can only be used in TypeScript files. \ No newline at end of file diff --git a/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics3.baseline b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics3.baseline new file mode 100644 index 00000000..948e4c0a --- /dev/null +++ b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics3.baseline @@ -0,0 +1,8 @@ +// === Syntax and Semantic Diagnostics === +/a.js(1,9): error TS8004: Type parameter declarations can only be used in TypeScript files. + + +==== /a.js (1 errors) ==== + class C { } + ~ +!!! error TS8004: Type parameter declarations can only be used in TypeScript files. \ No newline at end of file diff --git a/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics4.baseline b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics4.baseline new file mode 100644 index 00000000..682bbd5d --- /dev/null +++ b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics4.baseline @@ -0,0 +1,11 @@ +// === Syntax and Semantic Diagnostics === +/a.js(1,1): error TS1044: 'public' modifier cannot appear on a module or namespace element. +/a.js(1,1): error TS8009: The 'public' modifier can only be used in TypeScript files. + + +==== /a.js (2 errors) ==== + public class C { } + ~~~~~~ +!!! error TS1044: 'public' modifier cannot appear on a module or namespace element. + ~~~~~~ +!!! error TS8009: The 'public' modifier can only be used in TypeScript files. \ No newline at end of file diff --git a/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics5.baseline b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics5.baseline new file mode 100644 index 00000000..db5acfdd --- /dev/null +++ b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics5.baseline @@ -0,0 +1,8 @@ +// === Syntax and Semantic Diagnostics === +/a.js(1,9): error TS8005: 'implements' clauses can only be used in TypeScript files. + + +==== /a.js (1 errors) ==== + class C implements D { } + ~~~~~~~~~~~~ +!!! error TS8005: 'implements' clauses can only be used in TypeScript files. \ No newline at end of file diff --git a/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics6.baseline b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics6.baseline new file mode 100644 index 00000000..2f9b79d0 --- /dev/null +++ b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics6.baseline @@ -0,0 +1,8 @@ +// === Syntax and Semantic Diagnostics === +/a.js(1,11): error TS8006: 'interface' declarations can only be used in TypeScript files. + + +==== /a.js (1 errors) ==== + interface I { } + ~ +!!! error TS8006: 'interface' declarations can only be used in TypeScript files. \ No newline at end of file diff --git a/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics7.baseline b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics7.baseline new file mode 100644 index 00000000..eeddc9d4 --- /dev/null +++ b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics7.baseline @@ -0,0 +1,8 @@ +// === Syntax and Semantic Diagnostics === +/a.js(1,8): error TS8006: 'module' declarations can only be used in TypeScript files. + + +==== /a.js (1 errors) ==== + module M { } + ~ +!!! error TS8006: 'module' declarations can only be used in TypeScript files. \ No newline at end of file diff --git a/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics8.baseline b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics8.baseline new file mode 100644 index 00000000..0e3ac10c --- /dev/null +++ b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics8.baseline @@ -0,0 +1,8 @@ +// === Syntax and Semantic Diagnostics === +/a.js(1,6): error TS8008: Type aliases can only be used in TypeScript files. + + +==== /a.js (1 errors) ==== + type a = b; + ~ +!!! error TS8008: Type aliases can only be used in TypeScript files. \ No newline at end of file diff --git a/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics9.baseline b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics9.baseline new file mode 100644 index 00000000..83177f49 --- /dev/null +++ b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/getJavaScriptSyntacticDiagnostics9.baseline @@ -0,0 +1,11 @@ +// === Syntax and Semantic Diagnostics === +/a.js(1,1): error TS1044: 'public' modifier cannot appear on a module or namespace element. +/a.js(1,1): error TS8009: The 'public' modifier can only be used in TypeScript files. + + +==== /a.js (2 errors) ==== + public function F() { } + ~~~~~~ +!!! error TS1044: 'public' modifier cannot appear on a module or namespace element. + ~~~~~~ +!!! error TS8009: The 'public' modifier can only be used in TypeScript files. \ No newline at end of file diff --git a/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/rewriteRelativeImportExtensionsProjectReferences1.baseline b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/rewriteRelativeImportExtensionsProjectReferences1.baseline new file mode 100644 index 00000000..d1c8c103 --- /dev/null +++ b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/rewriteRelativeImportExtensionsProjectReferences1.baseline @@ -0,0 +1,10 @@ +// === Syntax and Semantic Diagnostics === +/packages/main/src/index.ts(1,16): error TS2878: This import path is unsafe to rewrite because it resolves to another project, and the relative path between the projects' output files is not the same as the relative path between its input files. + + +==== /packages/common/src/index.ts (0 errors) ==== + export {}; +==== /packages/main/src/index.ts (1 errors) ==== + import {} from "../../common/src/index.ts"; + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2878: This import path is unsafe to rewrite because it resolves to another project, and the relative path between the projects' output files is not the same as the relative path between its input files. \ No newline at end of file diff --git a/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/rewriteRelativeImportExtensionsProjectReferences2.baseline b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/rewriteRelativeImportExtensionsProjectReferences2.baseline new file mode 100644 index 00000000..786b9b4a --- /dev/null +++ b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/rewriteRelativeImportExtensionsProjectReferences2.baseline @@ -0,0 +1,7 @@ +// === Syntax and Semantic Diagnostics === + + +==== /src/compiler/parser.ts (0 errors) ==== + export {}; +==== /src/services/services.ts (0 errors) ==== + import {} from "../compiler/parser.ts"; \ No newline at end of file diff --git a/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/rewriteRelativeImportExtensionsProjectReferences3.baseline b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/rewriteRelativeImportExtensionsProjectReferences3.baseline new file mode 100644 index 00000000..786b9b4a --- /dev/null +++ b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/rewriteRelativeImportExtensionsProjectReferences3.baseline @@ -0,0 +1,7 @@ +// === Syntax and Semantic Diagnostics === + + +==== /src/compiler/parser.ts (0 errors) ==== + export {}; +==== /src/services/services.ts (0 errors) ==== + import {} from "../compiler/parser.ts"; \ No newline at end of file diff --git a/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/typeErrorAfterStringCompletionsInNestedCall2.baseline b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/typeErrorAfterStringCompletionsInNestedCall2.baseline new file mode 100644 index 00000000..3a2bd6ee --- /dev/null +++ b/testdata/baselines/reference/fourslash/syntaxandSemanticDiagnostics/typeErrorAfterStringCompletionsInNestedCall2.baseline @@ -0,0 +1,68 @@ +// === Syntax and Semantic Diagnostics === +/typeErrorAfterStringCompletionsInNestedCall2.ts(40,5): error TS2322: Type '{ ({ event }: { event: { type: "FOO"; }; }): void; _out_TEvent?: { type: "BARx"; } | undefined; }' is not assignable to type 'ActionFunction<{ type: "FOO"; }, { type: "FOO"; } | { type: "BAR"; }>'. + Types of property '_out_TEvent' are incompatible. + Type '{ type: "BARx"; } | undefined' is not assignable to type '{ type: "FOO"; } | { type: "BAR"; } | undefined'. + Type '{ type: "BARx"; }' is not assignable to type '{ type: "FOO"; } | { type: "BAR"; } | undefined'. + Type '{ type: "BARx"; }' is not assignable to type '{ type: "FOO"; } | { type: "BAR"; }'. + Type '{ type: "BARx"; }' is not assignable to type '{ type: "BAR"; }'. + Types of property 'type' are incompatible. + Type '"BARx"' is not assignable to type '"BAR"'. + + +==== /typeErrorAfterStringCompletionsInNestedCall2.ts (1 errors) ==== + type ActionFunction< + TExpressionEvent extends { type: string }, + out TEvent extends { type: string } + > = { + ({ event }: { event: TExpressionEvent }): void; + _out_TEvent?: TEvent; + }; + + interface MachineConfig { + types: { + events: TEvent; + }; + on: { + [K in TEvent["type"]]?: ActionFunction< + Extract, + TEvent + >; + }; + } + + declare function raise< + TExpressionEvent extends { type: string }, + TEvent extends { type: string } + >( + resolve: ({ event }: { event: TExpressionEvent }) => TEvent + ): { + ({ event }: { event: TExpressionEvent }): void; + _out_TEvent?: TEvent; + }; + + declare function createMachine( + config: MachineConfig + ): void; + + createMachine({ + types: { + events: {} as { type: "FOO" } | { type: "BAR" }, + }, + on: { + FOO: raise(({ event }) => { + ~~~ +!!! error TS2322: Type '{ ({ event }: { event: { type: "FOO"; }; }): void; _out_TEvent?: { type: "BARx"; } | undefined; }' is not assignable to type 'ActionFunction<{ type: "FOO"; }, { type: "FOO"; } | { type: "BAR"; }>'. +!!! error TS2322: Types of property '_out_TEvent' are incompatible. +!!! error TS2322: Type '{ type: "BARx"; } | undefined' is not assignable to type '{ type: "FOO"; } | { type: "BAR"; } | undefined'. +!!! error TS2322: Type '{ type: "BARx"; }' is not assignable to type '{ type: "FOO"; } | { type: "BAR"; } | undefined'. +!!! error TS2322: Type '{ type: "BARx"; }' is not assignable to type '{ type: "FOO"; } | { type: "BAR"; }'. +!!! error TS2322: Type '{ type: "BARx"; }' is not assignable to type '{ type: "BAR"; }'. +!!! error TS2322: Types of property 'type' are incompatible. +!!! error TS2322: Type '"BARx"' is not assignable to type '"BAR"'. +!!! related TS2322 /typeErrorAfterStringCompletionsInNestedCall2.ts:13:7: The expected type comes from property 'FOO' which is declared here on type '{ BAR?: ActionFunction<{ type: "BAR"; }, { type: "FOO"; } | { type: "BAR"; }> | undefined; FOO?: ActionFunction<{ type: "FOO"; }, { type: "FOO"; } | { type: "BAR"; }> | undefined; }' + return { + type: "BARx" as const, + }; + }), + }, + }); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/checkJsTypeDefNoUnusedLocalMarked.symbols b/testdata/baselines/reference/submodule/compiler/checkJsTypeDefNoUnusedLocalMarked.symbols index c90d5803..7fa07cda 100644 --- a/testdata/baselines/reference/submodule/compiler/checkJsTypeDefNoUnusedLocalMarked.symbols +++ b/testdata/baselines/reference/submodule/compiler/checkJsTypeDefNoUnusedLocalMarked.symbols @@ -25,6 +25,6 @@ export = Foo; module.exports = /** @type {FooFun} */(void 0); >module.exports : Symbol(export=, Decl(something.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("something", Decl(something.js, 0, 0)) >exports : Symbol(export=, Decl(something.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/compiler/checkJsTypeDefNoUnusedLocalMarked.symbols.diff b/testdata/baselines/reference/submodule/compiler/checkJsTypeDefNoUnusedLocalMarked.symbols.diff index 17636a88..813dfd8e 100644 --- a/testdata/baselines/reference/submodule/compiler/checkJsTypeDefNoUnusedLocalMarked.symbols.diff +++ b/testdata/baselines/reference/submodule/compiler/checkJsTypeDefNoUnusedLocalMarked.symbols.diff @@ -7,5 +7,5 @@ ->module.exports : Symbol(module.exports, Decl(something.js, 0, 0)) ->module : Symbol(export=, Decl(something.js, 0, 0)) +>module.exports : Symbol(export=, Decl(something.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("something", Decl(something.js, 0, 0)) >exports : Symbol(export=, Decl(something.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/compiler/commaOperatorLeftSideUnused.errors.txt b/testdata/baselines/reference/submodule/compiler/commaOperatorLeftSideUnused.errors.txt index 9782db2c..b44bd405 100644 --- a/testdata/baselines/reference/submodule/compiler/commaOperatorLeftSideUnused.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/commaOperatorLeftSideUnused.errors.txt @@ -21,9 +21,10 @@ commaOperatorLeftSideUnused.ts(38,7): error TS2695: Left side of comma operator commaOperatorLeftSideUnused.ts(39,7): error TS2695: Left side of comma operator is unused and has no side effects. commaOperatorLeftSideUnused.ts(40,7): error TS2695: Left side of comma operator is unused and has no side effects. commaOperatorLeftSideUnused.ts(41,7): error TS2695: Left side of comma operator is unused and has no side effects. +commaOperatorLeftSideUnused.ts(42,7): error TS2695: Left side of comma operator is unused and has no side effects. -==== commaOperatorLeftSideUnused.ts (23 errors) ==== +==== commaOperatorLeftSideUnused.ts (24 errors) ==== var xx: any; var yy: any; @@ -112,6 +113,8 @@ commaOperatorLeftSideUnused.ts(41,7): error TS2695: Left side of comma operator ~~~ !!! error TS2695: Left side of comma operator is unused and has no side effects. xx = (0, xx)(); + ~ +!!! error TS2695: Left side of comma operator is unused and has no side effects. // OK cases xx = (xx ? x++ : 4, 10); diff --git a/testdata/baselines/reference/submodule/compiler/commaOperatorLeftSideUnused.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/commaOperatorLeftSideUnused.errors.txt.diff deleted file mode 100644 index bf625241..00000000 --- a/testdata/baselines/reference/submodule/compiler/commaOperatorLeftSideUnused.errors.txt.diff +++ /dev/null @@ -1,25 +0,0 @@ ---- old.commaOperatorLeftSideUnused.errors.txt -+++ new.commaOperatorLeftSideUnused.errors.txt -@@= skipped -20, +20 lines =@@ - commaOperatorLeftSideUnused.ts(39,7): error TS2695: Left side of comma operator is unused and has no side effects. - commaOperatorLeftSideUnused.ts(40,7): error TS2695: Left side of comma operator is unused and has no side effects. - commaOperatorLeftSideUnused.ts(41,7): error TS2695: Left side of comma operator is unused and has no side effects. --commaOperatorLeftSideUnused.ts(42,7): error TS2695: Left side of comma operator is unused and has no side effects. -- -- --==== commaOperatorLeftSideUnused.ts (24 errors) ==== -+ -+ -+==== commaOperatorLeftSideUnused.ts (23 errors) ==== - var xx: any; - var yy: any; - -@@= skipped -92, +91 lines =@@ - ~~~ - !!! error TS2695: Left side of comma operator is unused and has no side effects. - xx = (0, xx)(); -- ~ --!!! error TS2695: Left side of comma operator is unused and has no side effects. - - // OK cases - xx = (xx ? x++ : 4, 10); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/commonJsExportTypeDeclarationError.symbols b/testdata/baselines/reference/submodule/compiler/commonJsExportTypeDeclarationError.symbols index 1af9d4e7..de91cecb 100644 --- a/testdata/baselines/reference/submodule/compiler/commonJsExportTypeDeclarationError.symbols +++ b/testdata/baselines/reference/submodule/compiler/commonJsExportTypeDeclarationError.symbols @@ -3,7 +3,7 @@ === test.js === module.exports = { >module.exports : Symbol(export=, Decl(test.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("test", Decl(test.js, 0, 0)) >exports : Symbol(export=, Decl(test.js, 0, 0)) message: "" diff --git a/testdata/baselines/reference/submodule/compiler/commonJsExportTypeDeclarationError.symbols.diff b/testdata/baselines/reference/submodule/compiler/commonJsExportTypeDeclarationError.symbols.diff index 5e8d3882..85970bee 100644 --- a/testdata/baselines/reference/submodule/compiler/commonJsExportTypeDeclarationError.symbols.diff +++ b/testdata/baselines/reference/submodule/compiler/commonJsExportTypeDeclarationError.symbols.diff @@ -9,7 +9,7 @@ ->module.exports : Symbol(module.exports, Decl(test.js, 0, 0)) ->module : Symbol(export=, Decl(test.js, 0, 0)) +>module.exports : Symbol(export=, Decl(test.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("test", Decl(test.js, 0, 0)) >exports : Symbol(export=, Decl(test.js, 0, 0)) message: "" diff --git a/testdata/baselines/reference/submodule/compiler/commonJsIsolatedModules.symbols b/testdata/baselines/reference/submodule/compiler/commonJsIsolatedModules.symbols index dc497427..09356557 100644 --- a/testdata/baselines/reference/submodule/compiler/commonJsIsolatedModules.symbols +++ b/testdata/baselines/reference/submodule/compiler/commonJsIsolatedModules.symbols @@ -3,7 +3,7 @@ === index.js === module.exports = {} >module.exports : Symbol(export=, Decl(index.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol(export=, Decl(index.js, 0, 0)) var x = 1 diff --git a/testdata/baselines/reference/submodule/compiler/commonJsIsolatedModules.symbols.diff b/testdata/baselines/reference/submodule/compiler/commonJsIsolatedModules.symbols.diff index c71f401a..65ee97be 100644 --- a/testdata/baselines/reference/submodule/compiler/commonJsIsolatedModules.symbols.diff +++ b/testdata/baselines/reference/submodule/compiler/commonJsIsolatedModules.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol(module.exports, Decl(index.js, 0, 0)) +>module.exports : Symbol(export=, Decl(index.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol(export=, Decl(index.js, 0, 0)) var x = 1 diff --git a/testdata/baselines/reference/submodule/compiler/ensureNoCrashExportAssignmentDefineProperrtyPotentialMerge.symbols b/testdata/baselines/reference/submodule/compiler/ensureNoCrashExportAssignmentDefineProperrtyPotentialMerge.symbols index 80be37a2..2e7e01a4 100644 --- a/testdata/baselines/reference/submodule/compiler/ensureNoCrashExportAssignmentDefineProperrtyPotentialMerge.symbols +++ b/testdata/baselines/reference/submodule/compiler/ensureNoCrashExportAssignmentDefineProperrtyPotentialMerge.symbols @@ -8,7 +8,7 @@ const _item = require("./namespacer"); module.exports = 12; >module.exports : Symbol(export=, Decl(index.js, 0, 38)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol(export=, Decl(index.js, 0, 38)) Object.defineProperty(module, "exports", { value: "oh no" }); @@ -29,7 +29,7 @@ A.bar = class Q {} module.exports = A; >module.exports : Symbol(A, Decl(namespacey.js, 0, 5)) ->module : Symbol(module.exports) +>module : Symbol("namespacey", Decl(namespacey.js, 0, 0)) >exports : Symbol(A, Decl(namespacey.js, 0, 5)) >A : Symbol(A, Decl(namespacey.js, 0, 5)) @@ -53,7 +53,7 @@ Object.defineProperty(B, "NS", { value: "why though", writable: true }); module.exports = B; >module.exports : Symbol(B, Decl(namespacer.js, 0, 5)) ->module : Symbol(module.exports) +>module : Symbol("namespacer", Decl(namespacer.js, 0, 0)) >exports : Symbol(B, Decl(namespacer.js, 0, 5)) >B : Symbol(B, Decl(namespacer.js, 0, 5)) diff --git a/testdata/baselines/reference/submodule/compiler/ensureNoCrashExportAssignmentDefineProperrtyPotentialMerge.symbols.diff b/testdata/baselines/reference/submodule/compiler/ensureNoCrashExportAssignmentDefineProperrtyPotentialMerge.symbols.diff index b61e4fb4..cbe98720 100644 --- a/testdata/baselines/reference/submodule/compiler/ensureNoCrashExportAssignmentDefineProperrtyPotentialMerge.symbols.diff +++ b/testdata/baselines/reference/submodule/compiler/ensureNoCrashExportAssignmentDefineProperrtyPotentialMerge.symbols.diff @@ -7,7 +7,7 @@ ->module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) ->module : Symbol(export=, Decl(index.js, 0, 38)) +>module.exports : Symbol(export=, Decl(index.js, 0, 38)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol(export=, Decl(index.js, 0, 38)) Object.defineProperty(module, "exports", { value: "oh no" }); @@ -38,7 +38,7 @@ ->exports : Symbol(export=, Decl(namespacey.js, 1, 18)) ->A : Symbol(A, Decl(namespacey.js, 0, 5), Decl(namespacey.js, 0, 12)) +>module.exports : Symbol(A, Decl(namespacey.js, 0, 5)) -+>module : Symbol(module.exports) ++>module : Symbol("namespacey", Decl(namespacey.js, 0, 0)) +>exports : Symbol(A, Decl(namespacey.js, 0, 5)) +>A : Symbol(A, Decl(namespacey.js, 0, 5)) @@ -73,6 +73,6 @@ ->exports : Symbol(export=, Decl(namespacer.js, 2, 72)) ->B : Symbol(B, Decl(namespacer.js, 0, 5), Decl(namespacer.js, 0, 12), Decl(namespacer.js, 2, 22)) +>module.exports : Symbol(B, Decl(namespacer.js, 0, 5)) -+>module : Symbol(module.exports) ++>module : Symbol("namespacer", Decl(namespacer.js, 0, 0)) +>exports : Symbol(B, Decl(namespacer.js, 0, 5)) +>B : Symbol(B, Decl(namespacer.js, 0, 5)) diff --git a/testdata/baselines/reference/submodule/compiler/evalAfter0.errors.txt b/testdata/baselines/reference/submodule/compiler/evalAfter0.errors.txt new file mode 100644 index 00000000..fd747ba8 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/evalAfter0.errors.txt @@ -0,0 +1,10 @@ +evalAfter0.ts(4,2): error TS2695: Left side of comma operator is unused and has no side effects. + + +==== evalAfter0.ts (1 errors) ==== + (0,eval)("10"); // fine: special case for eval + + declare var eva; + (0,eva)("10"); // error: no side effect left of comma (suspect of missing method name or something) + ~ +!!! error TS2695: Left side of comma operator is unused and has no side effects. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/evalAfter0.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/evalAfter0.errors.txt.diff deleted file mode 100644 index 720d6a66..00000000 --- a/testdata/baselines/reference/submodule/compiler/evalAfter0.errors.txt.diff +++ /dev/null @@ -1,14 +0,0 @@ ---- old.evalAfter0.errors.txt -+++ new.evalAfter0.errors.txt -@@= skipped -0, +0 lines =@@ --evalAfter0.ts(4,2): error TS2695: Left side of comma operator is unused and has no side effects. -- -- --==== evalAfter0.ts (1 errors) ==== -- (0,eval)("10"); // fine: special case for eval -- -- declare var eva; -- (0,eva)("10"); // error: no side effect left of comma (suspect of missing method name or something) -- ~ --!!! error TS2695: Left side of comma operator is unused and has no side effects. -+ \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/expandoFunctionContextualTypesJs.symbols b/testdata/baselines/reference/submodule/compiler/expandoFunctionContextualTypesJs.symbols index 814586c8..e61e42ed 100644 --- a/testdata/baselines/reference/submodule/compiler/expandoFunctionContextualTypesJs.symbols +++ b/testdata/baselines/reference/submodule/compiler/expandoFunctionContextualTypesJs.symbols @@ -71,7 +71,7 @@ function foo() { */ module.exports = { >module.exports : Symbol(export=, Decl(input.js, 42, 1)) ->module : Symbol(module.exports) +>module : Symbol("input", Decl(input.js, 0, 0)) >exports : Symbol(export=, Decl(input.js, 42, 1)) color: "red" @@ -82,6 +82,6 @@ expectLiteral({ props: module.exports }); >expectLiteral : Symbol(expectLiteral, Decl(input.js, 27, 27)) >props : Symbol(props, Decl(input.js, 51, 15)) >module.exports : Symbol(export=, Decl(input.js, 42, 1)) ->module : Symbol(module.exports) +>module : Symbol("input", Decl(input.js, 0, 0)) >exports : Symbol(export=, Decl(input.js, 42, 1)) diff --git a/testdata/baselines/reference/submodule/compiler/expandoFunctionContextualTypesJs.symbols.diff b/testdata/baselines/reference/submodule/compiler/expandoFunctionContextualTypesJs.symbols.diff index b80e0680..7e898bf0 100644 --- a/testdata/baselines/reference/submodule/compiler/expandoFunctionContextualTypesJs.symbols.diff +++ b/testdata/baselines/reference/submodule/compiler/expandoFunctionContextualTypesJs.symbols.diff @@ -61,7 +61,7 @@ ->module.exports : Symbol(module.exports, Decl(input.js, 0, 0)) ->module : Symbol(export=, Decl(input.js, 42, 1)) +>module.exports : Symbol(export=, Decl(input.js, 42, 1)) -+>module : Symbol(module.exports) ++>module : Symbol("input", Decl(input.js, 0, 0)) >exports : Symbol(export=, Decl(input.js, 42, 1)) color: "red" @@ -73,5 +73,5 @@ ->module : Symbol(module, Decl(input.js, 42, 1), Decl(input.js, 51, 22)) ->exports : Symbol(module.exports, Decl(input.js, 0, 0)) +>module.exports : Symbol(export=, Decl(input.js, 42, 1)) -+>module : Symbol(module.exports) ++>module : Symbol("input", Decl(input.js, 0, 0)) +>exports : Symbol(export=, Decl(input.js, 42, 1)) diff --git a/testdata/baselines/reference/submodule/compiler/importHelpersCommonJSJavaScript(verbatimmodulesyntax=false).symbols b/testdata/baselines/reference/submodule/compiler/importHelpersCommonJSJavaScript(verbatimmodulesyntax=false).symbols index 285cda77..bb4cf4e7 100644 --- a/testdata/baselines/reference/submodule/compiler/importHelpersCommonJSJavaScript(verbatimmodulesyntax=false).symbols +++ b/testdata/baselines/reference/submodule/compiler/importHelpersCommonJSJavaScript(verbatimmodulesyntax=false).symbols @@ -18,7 +18,7 @@ class Bar extends Foo {} module.exports = Bar; >module.exports : Symbol(Bar, Decl(index.js, 0, 12)) ->module : Symbol(module.exports) +>module : Symbol("/index", Decl(index.js, 0, 0)) >exports : Symbol(Bar, Decl(index.js, 0, 12)) >Bar : Symbol(Bar, Decl(index.js, 0, 12)) diff --git a/testdata/baselines/reference/submodule/compiler/importHelpersCommonJSJavaScript(verbatimmodulesyntax=false).symbols.diff b/testdata/baselines/reference/submodule/compiler/importHelpersCommonJSJavaScript(verbatimmodulesyntax=false).symbols.diff index 570acccb..28919c34 100644 --- a/testdata/baselines/reference/submodule/compiler/importHelpersCommonJSJavaScript(verbatimmodulesyntax=false).symbols.diff +++ b/testdata/baselines/reference/submodule/compiler/importHelpersCommonJSJavaScript(verbatimmodulesyntax=false).symbols.diff @@ -17,6 +17,6 @@ ->module : Symbol(export=, Decl(index.js, 2, 24)) ->exports : Symbol(export=, Decl(index.js, 2, 24)) +>module.exports : Symbol(Bar, Decl(index.js, 0, 12)) -+>module : Symbol(module.exports) ++>module : Symbol("/index", Decl(index.js, 0, 0)) +>exports : Symbol(Bar, Decl(index.js, 0, 12)) >Bar : Symbol(Bar, Decl(index.js, 0, 12)) diff --git a/testdata/baselines/reference/submodule/compiler/importHelpersCommonJSJavaScript(verbatimmodulesyntax=true).symbols b/testdata/baselines/reference/submodule/compiler/importHelpersCommonJSJavaScript(verbatimmodulesyntax=true).symbols index 285cda77..bb4cf4e7 100644 --- a/testdata/baselines/reference/submodule/compiler/importHelpersCommonJSJavaScript(verbatimmodulesyntax=true).symbols +++ b/testdata/baselines/reference/submodule/compiler/importHelpersCommonJSJavaScript(verbatimmodulesyntax=true).symbols @@ -18,7 +18,7 @@ class Bar extends Foo {} module.exports = Bar; >module.exports : Symbol(Bar, Decl(index.js, 0, 12)) ->module : Symbol(module.exports) +>module : Symbol("/index", Decl(index.js, 0, 0)) >exports : Symbol(Bar, Decl(index.js, 0, 12)) >Bar : Symbol(Bar, Decl(index.js, 0, 12)) diff --git a/testdata/baselines/reference/submodule/compiler/importHelpersCommonJSJavaScript(verbatimmodulesyntax=true).symbols.diff b/testdata/baselines/reference/submodule/compiler/importHelpersCommonJSJavaScript(verbatimmodulesyntax=true).symbols.diff index a473a8cb..ecbde6fa 100644 --- a/testdata/baselines/reference/submodule/compiler/importHelpersCommonJSJavaScript(verbatimmodulesyntax=true).symbols.diff +++ b/testdata/baselines/reference/submodule/compiler/importHelpersCommonJSJavaScript(verbatimmodulesyntax=true).symbols.diff @@ -17,6 +17,6 @@ ->module : Symbol(export=, Decl(index.js, 2, 24)) ->exports : Symbol(export=, Decl(index.js, 2, 24)) +>module.exports : Symbol(Bar, Decl(index.js, 0, 12)) -+>module : Symbol(module.exports) ++>module : Symbol("/index", Decl(index.js, 0, 0)) +>exports : Symbol(Bar, Decl(index.js, 0, 12)) >Bar : Symbol(Bar, Decl(index.js, 0, 12)) diff --git a/testdata/baselines/reference/submodule/compiler/importNonExportedMember12.symbols b/testdata/baselines/reference/submodule/compiler/importNonExportedMember12.symbols index 657f6d3f..9aca8578 100644 --- a/testdata/baselines/reference/submodule/compiler/importNonExportedMember12.symbols +++ b/testdata/baselines/reference/submodule/compiler/importNonExportedMember12.symbols @@ -3,7 +3,7 @@ === /node_modules/foo/src/index.js === module.exports = 1; >module.exports : Symbol(export=, Decl(index.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("/node_modules/foo/src/index", Decl(index.js, 0, 0)) >exports : Symbol(export=, Decl(index.js, 0, 0)) === /a.js === diff --git a/testdata/baselines/reference/submodule/compiler/importNonExportedMember12.symbols.diff b/testdata/baselines/reference/submodule/compiler/importNonExportedMember12.symbols.diff index 9417643c..64fff670 100644 --- a/testdata/baselines/reference/submodule/compiler/importNonExportedMember12.symbols.diff +++ b/testdata/baselines/reference/submodule/compiler/importNonExportedMember12.symbols.diff @@ -7,7 +7,7 @@ ->module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) ->module : Symbol(export=, Decl(index.js, 0, 0)) +>module.exports : Symbol(export=, Decl(index.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("/node_modules/foo/src/index", Decl(index.js, 0, 0)) >exports : Symbol(export=, Decl(index.js, 0, 0)) === /a.js === diff --git a/testdata/baselines/reference/submodule/compiler/javascriptCommonjsModule.symbols b/testdata/baselines/reference/submodule/compiler/javascriptCommonjsModule.symbols index bf438af5..9d62a038 100644 --- a/testdata/baselines/reference/submodule/compiler/javascriptCommonjsModule.symbols +++ b/testdata/baselines/reference/submodule/compiler/javascriptCommonjsModule.symbols @@ -10,7 +10,7 @@ class Bar extends Foo {} module.exports = Bar; >module.exports : Symbol(Bar, Decl(index.js, 0, 12)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol(Bar, Decl(index.js, 0, 12)) >Bar : Symbol(Bar, Decl(index.js, 0, 12)) diff --git a/testdata/baselines/reference/submodule/compiler/javascriptCommonjsModule.symbols.diff b/testdata/baselines/reference/submodule/compiler/javascriptCommonjsModule.symbols.diff index 39829663..59cd1ad1 100644 --- a/testdata/baselines/reference/submodule/compiler/javascriptCommonjsModule.symbols.diff +++ b/testdata/baselines/reference/submodule/compiler/javascriptCommonjsModule.symbols.diff @@ -8,6 +8,6 @@ ->module : Symbol(export=, Decl(index.js, 2, 24)) ->exports : Symbol(export=, Decl(index.js, 2, 24)) +>module.exports : Symbol(Bar, Decl(index.js, 0, 12)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol(Bar, Decl(index.js, 0, 12)) >Bar : Symbol(Bar, Decl(index.js, 0, 12)) diff --git a/testdata/baselines/reference/submodule/compiler/javascriptImportDefaultBadExport.symbols b/testdata/baselines/reference/submodule/compiler/javascriptImportDefaultBadExport.symbols index e1364018..33b60d81 100644 --- a/testdata/baselines/reference/submodule/compiler/javascriptImportDefaultBadExport.symbols +++ b/testdata/baselines/reference/submodule/compiler/javascriptImportDefaultBadExport.symbols @@ -6,7 +6,7 @@ const alias = {}; module.exports = alias; >module.exports : Symbol(alias, Decl(a.js, 0, 5)) ->module : Symbol(module.exports) +>module : Symbol("/a", Decl(a.js, 0, 0)) >exports : Symbol(alias, Decl(a.js, 0, 5)) >alias : Symbol(alias, Decl(a.js, 0, 5)) diff --git a/testdata/baselines/reference/submodule/compiler/javascriptImportDefaultBadExport.symbols.diff b/testdata/baselines/reference/submodule/compiler/javascriptImportDefaultBadExport.symbols.diff index b111a514..fdd8244b 100644 --- a/testdata/baselines/reference/submodule/compiler/javascriptImportDefaultBadExport.symbols.diff +++ b/testdata/baselines/reference/submodule/compiler/javascriptImportDefaultBadExport.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(export=, Decl(a.js, 0, 17)) ->exports : Symbol(export=, Decl(a.js, 0, 17)) +>module.exports : Symbol(alias, Decl(a.js, 0, 5)) -+>module : Symbol(module.exports) ++>module : Symbol("/a", Decl(a.js, 0, 0)) +>exports : Symbol(alias, Decl(a.js, 0, 5)) >alias : Symbol(alias, Decl(a.js, 0, 5)) diff --git a/testdata/baselines/reference/submodule/compiler/jsDeclarationEmitExportAssignedArray.symbols b/testdata/baselines/reference/submodule/compiler/jsDeclarationEmitExportAssignedArray.symbols index e26a7ebd..b95894b8 100644 --- a/testdata/baselines/reference/submodule/compiler/jsDeclarationEmitExportAssignedArray.symbols +++ b/testdata/baselines/reference/submodule/compiler/jsDeclarationEmitExportAssignedArray.symbols @@ -3,7 +3,7 @@ === file.js === module.exports = [{ name: 'other', displayName: 'Other', defaultEnabled: true }]; >module.exports : Symbol(export=, Decl(file.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("file", Decl(file.js, 0, 0)) >exports : Symbol(export=, Decl(file.js, 0, 0)) >name : Symbol(name, Decl(file.js, 0, 19)) >displayName : Symbol(displayName, Decl(file.js, 0, 34)) diff --git a/testdata/baselines/reference/submodule/compiler/jsDeclarationEmitExportAssignedArray.symbols.diff b/testdata/baselines/reference/submodule/compiler/jsDeclarationEmitExportAssignedArray.symbols.diff index 86cebb8e..bbce79bb 100644 --- a/testdata/baselines/reference/submodule/compiler/jsDeclarationEmitExportAssignedArray.symbols.diff +++ b/testdata/baselines/reference/submodule/compiler/jsDeclarationEmitExportAssignedArray.symbols.diff @@ -7,7 +7,7 @@ ->module.exports : Symbol(module.exports, Decl(file.js, 0, 0)) ->module : Symbol(export=, Decl(file.js, 0, 0)) +>module.exports : Symbol(export=, Decl(file.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("file", Decl(file.js, 0, 0)) >exports : Symbol(export=, Decl(file.js, 0, 0)) >name : Symbol(name, Decl(file.js, 0, 19)) >displayName : Symbol(displayName, Decl(file.js, 0, 34)) \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/jsDeclarationEmitExportAssignedFunctionWithExtraTypedefsMembers.symbols b/testdata/baselines/reference/submodule/compiler/jsDeclarationEmitExportAssignedFunctionWithExtraTypedefsMembers.symbols index 8e050faa..39730ae9 100644 --- a/testdata/baselines/reference/submodule/compiler/jsDeclarationEmitExportAssignedFunctionWithExtraTypedefsMembers.symbols +++ b/testdata/baselines/reference/submodule/compiler/jsDeclarationEmitExportAssignedFunctionWithExtraTypedefsMembers.symbols @@ -11,7 +11,7 @@ */ module.exports = function loader(options) {} >module.exports : Symbol(export=, Decl(index.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol(export=, Decl(index.js, 0, 0)) >loader : Symbol(loader, Decl(index.js, 8, 16)) >options : Symbol(options, Decl(index.js, 8, 33)) diff --git a/testdata/baselines/reference/submodule/compiler/jsDeclarationEmitExportAssignedFunctionWithExtraTypedefsMembers.symbols.diff b/testdata/baselines/reference/submodule/compiler/jsDeclarationEmitExportAssignedFunctionWithExtraTypedefsMembers.symbols.diff index 341416ad..8d1d2358 100644 --- a/testdata/baselines/reference/submodule/compiler/jsDeclarationEmitExportAssignedFunctionWithExtraTypedefsMembers.symbols.diff +++ b/testdata/baselines/reference/submodule/compiler/jsDeclarationEmitExportAssignedFunctionWithExtraTypedefsMembers.symbols.diff @@ -7,7 +7,7 @@ ->module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) ->module : Symbol(export=, Decl(index.js, 0, 0)) +>module.exports : Symbol(export=, Decl(index.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol(export=, Decl(index.js, 0, 0)) >loader : Symbol(loader, Decl(index.js, 8, 16)) >options : Symbol(options, Decl(index.js, 8, 33)) \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/jsExportAssignmentNonMutableLocation.symbols b/testdata/baselines/reference/submodule/compiler/jsExportAssignmentNonMutableLocation.symbols index 916f7562..97e0d789 100644 --- a/testdata/baselines/reference/submodule/compiler/jsExportAssignmentNonMutableLocation.symbols +++ b/testdata/baselines/reference/submodule/compiler/jsExportAssignmentNonMutableLocation.symbols @@ -8,7 +8,7 @@ const customSymbol = Symbol("custom"); // This is a common pattern in Node’s built-in modules: module.exports = { >module.exports : Symbol(export=, Decl(file.js, 0, 38)) ->module : Symbol(module.exports) +>module : Symbol("file", Decl(file.js, 0, 0)) >exports : Symbol(export=, Decl(file.js, 0, 38)) customSymbol, diff --git a/testdata/baselines/reference/submodule/compiler/jsExportAssignmentNonMutableLocation.symbols.diff b/testdata/baselines/reference/submodule/compiler/jsExportAssignmentNonMutableLocation.symbols.diff index a3d91413..eaa91385 100644 --- a/testdata/baselines/reference/submodule/compiler/jsExportAssignmentNonMutableLocation.symbols.diff +++ b/testdata/baselines/reference/submodule/compiler/jsExportAssignmentNonMutableLocation.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(module, Decl(file.js, 0, 38)) ->exports : Symbol(module.exports, Decl(file.js, 0, 0)) +>module.exports : Symbol(export=, Decl(file.js, 0, 38)) -+>module : Symbol(module.exports) ++>module : Symbol("file", Decl(file.js, 0, 0)) +>exports : Symbol(export=, Decl(file.js, 0, 38)) customSymbol, diff --git a/testdata/baselines/reference/submodule/compiler/jsExportMemberMergedWithModuleAugmentation.symbols b/testdata/baselines/reference/submodule/compiler/jsExportMemberMergedWithModuleAugmentation.symbols index 59a81b14..f93ac010 100644 --- a/testdata/baselines/reference/submodule/compiler/jsExportMemberMergedWithModuleAugmentation.symbols +++ b/testdata/baselines/reference/submodule/compiler/jsExportMemberMergedWithModuleAugmentation.symbols @@ -11,7 +11,7 @@ class Abcde { module.exports = { >module.exports : Symbol(export=, Decl(test.js, 3, 1)) ->module : Symbol(module.exports) +>module : Symbol("/test", Decl(test.js, 0, 0)) >exports : Symbol(export=, Decl(test.js, 3, 1)) Abcde diff --git a/testdata/baselines/reference/submodule/compiler/jsExportMemberMergedWithModuleAugmentation.symbols.diff b/testdata/baselines/reference/submodule/compiler/jsExportMemberMergedWithModuleAugmentation.symbols.diff index 4ca5aa83..76c3d4ef 100644 --- a/testdata/baselines/reference/submodule/compiler/jsExportMemberMergedWithModuleAugmentation.symbols.diff +++ b/testdata/baselines/reference/submodule/compiler/jsExportMemberMergedWithModuleAugmentation.symbols.diff @@ -17,7 +17,7 @@ ->module : Symbol(module, Decl(test.js, 3, 1)) ->exports : Symbol("/test.js", Decl(test.js, 0, 0), Decl(index.ts, 0, 31)) +>module.exports : Symbol(export=, Decl(test.js, 3, 1)) -+>module : Symbol(module.exports) ++>module : Symbol("/test", Decl(test.js, 0, 0)) +>exports : Symbol(export=, Decl(test.js, 3, 1)) Abcde diff --git a/testdata/baselines/reference/submodule/compiler/jsExportMemberMergedWithModuleAugmentation2.symbols b/testdata/baselines/reference/submodule/compiler/jsExportMemberMergedWithModuleAugmentation2.symbols index affbb528..ecf70c43 100644 --- a/testdata/baselines/reference/submodule/compiler/jsExportMemberMergedWithModuleAugmentation2.symbols +++ b/testdata/baselines/reference/submodule/compiler/jsExportMemberMergedWithModuleAugmentation2.symbols @@ -3,7 +3,7 @@ === /test.js === module.exports = { >module.exports : Symbol(export=, Decl(test.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("/test", Decl(test.js, 0, 0)) >exports : Symbol(export=, Decl(test.js, 0, 0)) a: "ok" diff --git a/testdata/baselines/reference/submodule/compiler/jsExportMemberMergedWithModuleAugmentation2.symbols.diff b/testdata/baselines/reference/submodule/compiler/jsExportMemberMergedWithModuleAugmentation2.symbols.diff index 9ae26854..b51576a3 100644 --- a/testdata/baselines/reference/submodule/compiler/jsExportMemberMergedWithModuleAugmentation2.symbols.diff +++ b/testdata/baselines/reference/submodule/compiler/jsExportMemberMergedWithModuleAugmentation2.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol("/test.js", Decl(test.js, 0, 0), Decl(index.ts, 0, 27)) ->exports : Symbol("/test.js", Decl(test.js, 0, 0), Decl(index.ts, 0, 27)) +>module.exports : Symbol(export=, Decl(test.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("/test", Decl(test.js, 0, 0)) +>exports : Symbol(export=, Decl(test.js, 0, 0)) a: "ok" diff --git a/testdata/baselines/reference/submodule/compiler/jsExportMemberMergedWithModuleAugmentation3.symbols b/testdata/baselines/reference/submodule/compiler/jsExportMemberMergedWithModuleAugmentation3.symbols index ec76d780..8baf80c2 100644 --- a/testdata/baselines/reference/submodule/compiler/jsExportMemberMergedWithModuleAugmentation3.symbols +++ b/testdata/baselines/reference/submodule/compiler/jsExportMemberMergedWithModuleAugmentation3.symbols @@ -3,12 +3,12 @@ === /x.js === module.exports.x = 1; >module.exports : Symbol(export=, Decl(x.js, 0, 21)) ->module : Symbol(module.exports) +>module : Symbol("/x", Decl(x.js, 0, 0)) >exports : Symbol(export=, Decl(x.js, 0, 21)) module.exports = require("./y.js"); >module.exports : Symbol(export=, Decl(x.js, 0, 21)) ->module : Symbol(module.exports) +>module : Symbol("/x", Decl(x.js, 0, 0)) >exports : Symbol(export=, Decl(x.js, 0, 21)) >require : Symbol(require) diff --git a/testdata/baselines/reference/submodule/compiler/jsExportMemberMergedWithModuleAugmentation3.symbols.diff b/testdata/baselines/reference/submodule/compiler/jsExportMemberMergedWithModuleAugmentation3.symbols.diff index 4f7e0ab0..948a04b8 100644 --- a/testdata/baselines/reference/submodule/compiler/jsExportMemberMergedWithModuleAugmentation3.symbols.diff +++ b/testdata/baselines/reference/submodule/compiler/jsExportMemberMergedWithModuleAugmentation3.symbols.diff @@ -10,14 +10,14 @@ ->exports : Symbol(module.exports, Decl(x.js, 0, 0)) ->x : Symbol(x, Decl(x.js, 0, 0), Decl(y.d.ts, 0, 0)) +>module.exports : Symbol(export=, Decl(x.js, 0, 21)) -+>module : Symbol(module.exports) ++>module : Symbol("/x", Decl(x.js, 0, 0)) +>exports : Symbol(export=, Decl(x.js, 0, 21)) module.exports = require("./y.js"); ->module.exports : Symbol(module.exports, Decl(x.js, 0, 0)) ->module : Symbol(export=, Decl(x.js, 0, 21)) +>module.exports : Symbol(export=, Decl(x.js, 0, 21)) -+>module : Symbol(module.exports) ++>module : Symbol("/x", Decl(x.js, 0, 0)) >exports : Symbol(export=, Decl(x.js, 0, 21)) >require : Symbol(require) ->"./y.js" : Symbol("/y", Decl(y.d.ts, 0, 0)) diff --git a/testdata/baselines/reference/submodule/compiler/jsFileAlternativeUseOfOverloadTag.js b/testdata/baselines/reference/submodule/compiler/jsFileAlternativeUseOfOverloadTag.js index 885131f8..ebe71459 100644 --- a/testdata/baselines/reference/submodule/compiler/jsFileAlternativeUseOfOverloadTag.js +++ b/testdata/baselines/reference/submodule/compiler/jsFileAlternativeUseOfOverloadTag.js @@ -139,7 +139,7 @@ declare const example2: { constructor: () => void; }; declare function evaluate(): any; -type callback = (error: any, result: any) ; +type callback = (error: any, result: any) => any; declare const example3: { /** * @overload evaluate(options = {}, [callback]) @@ -156,65 +156,3 @@ declare const example3: { */ evaluate: (options: any, callback: any) => void; }; - - -//// [DtsFileErrors] - - -dist/jsFileAlternativeUseOfOverloadTag.d.ts(34,43): error TS1005: '=>' expected. - - -==== dist/jsFileAlternativeUseOfOverloadTag.d.ts (1 errors) ==== - declare function Example1(value: any): any; - declare const example1: { - /** - * @overload Example1(value) - * Creates Example1 - * @param value [String] - */ - constructor: (value: any, options: any) => void; - }; - declare function Example2(value: any, secretAccessKey: any, sessionToken: any): any; - declare function Example2(): any; - declare const example2: { - /** - * Example 2 - * - * @overload Example2(value) - * Creates Example2 - * @param value [String] - * @param secretAccessKey [String] - * @param sessionToken [String] - * @example Creates with string value - * const example = new Example(''); - * @overload Example2(options) - * Creates Example2 - * @option options value [String] - * @example Creates with options object - * const example = new Example2({ - * value: '', - * }); - */ - constructor: () => void; - }; - declare function evaluate(): any; - type callback = (error: any, result: any) ; - ~ -!!! error TS1005: '=>' expected. - declare const example3: { - /** - * @overload evaluate(options = {}, [callback]) - * Evaluate something - * @note Something interesting - * @param options [map] - * @return [string] returns evaluation result - * @return [null] returns nothing if callback provided - * @callback callback function (error, result) - * If callback is provided it will be called with evaluation result - * @param error [Error] - * @param result [String] - * @see callback - */ - evaluate: (options: any, callback: any) => void; - }; - \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/jsFileAlternativeUseOfOverloadTag.js.diff b/testdata/baselines/reference/submodule/compiler/jsFileAlternativeUseOfOverloadTag.js.diff index d133646b..f2d21bc5 100644 --- a/testdata/baselines/reference/submodule/compiler/jsFileAlternativeUseOfOverloadTag.js.diff +++ b/testdata/baselines/reference/submodule/compiler/jsFileAlternativeUseOfOverloadTag.js.diff @@ -82,7 +82,7 @@ + constructor: () => void; +}; +declare function evaluate(): any; -+type callback = (error: any, result: any) ; ++type callback = (error: any, result: any) => any; +declare const example3: { /** * @overload evaluate(options = {}, [callback]) @@ -99,66 +99,4 @@ - */ -type callback = (error: any, result: any) => any; + evaluate: (options: any, callback: any) => void; -+}; -+ -+ -+//// [DtsFileErrors] -+ -+ -+dist/jsFileAlternativeUseOfOverloadTag.d.ts(34,43): error TS1005: '=>' expected. -+ -+ -+==== dist/jsFileAlternativeUseOfOverloadTag.d.ts (1 errors) ==== -+ declare function Example1(value: any): any; -+ declare const example1: { -+ /** -+ * @overload Example1(value) -+ * Creates Example1 -+ * @param value [String] -+ */ -+ constructor: (value: any, options: any) => void; -+ }; -+ declare function Example2(value: any, secretAccessKey: any, sessionToken: any): any; -+ declare function Example2(): any; -+ declare const example2: { -+ /** -+ * Example 2 -+ * -+ * @overload Example2(value) -+ * Creates Example2 -+ * @param value [String] -+ * @param secretAccessKey [String] -+ * @param sessionToken [String] -+ * @example Creates with string value -+ * const example = new Example(''); -+ * @overload Example2(options) -+ * Creates Example2 -+ * @option options value [String] -+ * @example Creates with options object -+ * const example = new Example2({ -+ * value: '', -+ * }); -+ */ -+ constructor: () => void; -+ }; -+ declare function evaluate(): any; -+ type callback = (error: any, result: any) ; -+ ~ -+!!! error TS1005: '=>' expected. -+ declare const example3: { -+ /** -+ * @overload evaluate(options = {}, [callback]) -+ * Evaluate something -+ * @note Something interesting -+ * @param options [map] -+ * @return [string] returns evaluation result -+ * @return [null] returns nothing if callback provided -+ * @callback callback function (error, result) -+ * If callback is provided it will be called with evaluation result -+ * @param error [Error] -+ * @param result [String] -+ * @see callback -+ */ -+ evaluate: (options: any, callback: any) => void; -+ }; -+ \ No newline at end of file ++}; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/jsFileClassPropertyInitalizationInObjectLiteral.symbols b/testdata/baselines/reference/submodule/compiler/jsFileClassPropertyInitalizationInObjectLiteral.symbols index 0d43d5d8..dfaa5863 100644 --- a/testdata/baselines/reference/submodule/compiler/jsFileClassPropertyInitalizationInObjectLiteral.symbols +++ b/testdata/baselines/reference/submodule/compiler/jsFileClassPropertyInitalizationInObjectLiteral.symbols @@ -3,7 +3,7 @@ === foo.js === module.exports = function () { >module.exports : Symbol(export=, Decl(foo.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("foo", Decl(foo.js, 0, 0)) >exports : Symbol(export=, Decl(foo.js, 0, 0)) class A { } diff --git a/testdata/baselines/reference/submodule/compiler/jsFileClassPropertyInitalizationInObjectLiteral.symbols.diff b/testdata/baselines/reference/submodule/compiler/jsFileClassPropertyInitalizationInObjectLiteral.symbols.diff index 4a77227c..b0e5ce1d 100644 --- a/testdata/baselines/reference/submodule/compiler/jsFileClassPropertyInitalizationInObjectLiteral.symbols.diff +++ b/testdata/baselines/reference/submodule/compiler/jsFileClassPropertyInitalizationInObjectLiteral.symbols.diff @@ -7,7 +7,7 @@ ->module.exports : Symbol(module.exports, Decl(foo.js, 0, 0)) ->module : Symbol(export=, Decl(foo.js, 0, 0)) +>module.exports : Symbol(export=, Decl(foo.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("foo", Decl(foo.js, 0, 0)) >exports : Symbol(export=, Decl(foo.js, 0, 0)) class A { } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/moduleExportsTypeNoExcessPropertyCheckFromContainedLiteral.symbols b/testdata/baselines/reference/submodule/compiler/moduleExportsTypeNoExcessPropertyCheckFromContainedLiteral.symbols index 5ea722d7..28c07c4b 100644 --- a/testdata/baselines/reference/submodule/compiler/moduleExportsTypeNoExcessPropertyCheckFromContainedLiteral.symbols +++ b/testdata/baselines/reference/submodule/compiler/moduleExportsTypeNoExcessPropertyCheckFromContainedLiteral.symbols @@ -34,7 +34,7 @@ const allRules = { module.exports = { >module.exports : Symbol(export=, Decl(eslint-plugin-react.js, 6, 1)) ->module : Symbol(module.exports) +>module : Symbol("eslint-plugin-react", Decl(eslint-plugin-react.js, 0, 0)) >exports : Symbol(export=, Decl(eslint-plugin-react.js, 6, 1)) plugins: { @@ -72,7 +72,7 @@ function config(...configs) { } module.exports = { config }; >module.exports : Symbol(export=, Decl(typescript-eslint.js, 11, 31)) ->module : Symbol(module.exports) +>module : Symbol("typescript-eslint", Decl(typescript-eslint.js, 0, 0)) >exports : Symbol(export=, Decl(typescript-eslint.js, 11, 31)) >config : Symbol(config, Decl(typescript-eslint.js, 13, 18)) diff --git a/testdata/baselines/reference/submodule/compiler/moduleExportsTypeNoExcessPropertyCheckFromContainedLiteral.symbols.diff b/testdata/baselines/reference/submodule/compiler/moduleExportsTypeNoExcessPropertyCheckFromContainedLiteral.symbols.diff index c3a004ee..a6b1f994 100644 --- a/testdata/baselines/reference/submodule/compiler/moduleExportsTypeNoExcessPropertyCheckFromContainedLiteral.symbols.diff +++ b/testdata/baselines/reference/submodule/compiler/moduleExportsTypeNoExcessPropertyCheckFromContainedLiteral.symbols.diff @@ -23,7 +23,7 @@ ->module.exports : Symbol(module.exports, Decl(eslint-plugin-react.js, 0, 0)) ->module : Symbol(export=, Decl(eslint-plugin-react.js, 6, 1)) +>module.exports : Symbol(export=, Decl(eslint-plugin-react.js, 6, 1)) -+>module : Symbol(module.exports) ++>module : Symbol("eslint-plugin-react", Decl(eslint-plugin-react.js, 0, 0)) >exports : Symbol(export=, Decl(eslint-plugin-react.js, 6, 1)) plugins: { @@ -35,6 +35,6 @@ ->module : Symbol(module, Decl(typescript-eslint.js, 11, 31)) ->exports : Symbol(module.exports, Decl(typescript-eslint.js, 0, 0)) +>module.exports : Symbol(export=, Decl(typescript-eslint.js, 11, 31)) -+>module : Symbol(module.exports) ++>module : Symbol("typescript-eslint", Decl(typescript-eslint.js, 0, 0)) +>exports : Symbol(export=, Decl(typescript-eslint.js, 11, 31)) >config : Symbol(config, Decl(typescript-eslint.js, 13, 18)) diff --git a/testdata/baselines/reference/submodule/compiler/modulePreserve4.symbols b/testdata/baselines/reference/submodule/compiler/modulePreserve4.symbols index 3cace490..28668d1c 100644 --- a/testdata/baselines/reference/submodule/compiler/modulePreserve4.symbols +++ b/testdata/baselines/reference/submodule/compiler/modulePreserve4.symbols @@ -7,7 +7,7 @@ export const x = 0; module.exports.y = 0; // Error >module.exports.y : Symbol(y, Decl(a.js, 0, 19)) >module.exports : Symbol("/a", Decl(a.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("/a", Decl(a.js, 0, 0)) >exports : Symbol("/a", Decl(a.js, 0, 0)) >y : Symbol(y, Decl(a.js, 0, 19)) diff --git a/testdata/baselines/reference/submodule/compiler/modulePreserve4.symbols.diff b/testdata/baselines/reference/submodule/compiler/modulePreserve4.symbols.diff index 6d95c25f..828cbd5c 100644 --- a/testdata/baselines/reference/submodule/compiler/modulePreserve4.symbols.diff +++ b/testdata/baselines/reference/submodule/compiler/modulePreserve4.symbols.diff @@ -6,7 +6,7 @@ module.exports.y = 0; // Error +>module.exports.y : Symbol(y, Decl(a.js, 0, 19)) +>module.exports : Symbol("/a", Decl(a.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("/a", Decl(a.js, 0, 0)) +>exports : Symbol("/a", Decl(a.js, 0, 0)) +>y : Symbol(y, Decl(a.js, 0, 19)) diff --git a/testdata/baselines/reference/submodule/compiler/pushTypeGetTypeOfAlias.symbols b/testdata/baselines/reference/submodule/compiler/pushTypeGetTypeOfAlias.symbols index 738988b7..dd745da6 100644 --- a/testdata/baselines/reference/submodule/compiler/pushTypeGetTypeOfAlias.symbols +++ b/testdata/baselines/reference/submodule/compiler/pushTypeGetTypeOfAlias.symbols @@ -3,7 +3,7 @@ === bar.js === module.exports = function () {}; >module.exports : Symbol(export=, Decl(bar.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("bar", Decl(bar.js, 0, 0)) >exports : Symbol(export=, Decl(bar.js, 0, 0)) exports.blah = exports.someProp; diff --git a/testdata/baselines/reference/submodule/compiler/pushTypeGetTypeOfAlias.symbols.diff b/testdata/baselines/reference/submodule/compiler/pushTypeGetTypeOfAlias.symbols.diff index 0866617f..62f2f2d9 100644 --- a/testdata/baselines/reference/submodule/compiler/pushTypeGetTypeOfAlias.symbols.diff +++ b/testdata/baselines/reference/submodule/compiler/pushTypeGetTypeOfAlias.symbols.diff @@ -7,7 +7,7 @@ ->module.exports : Symbol(module.exports, Decl(bar.js, 0, 0)) ->module : Symbol(export=, Decl(bar.js, 0, 0)) +>module.exports : Symbol(export=, Decl(bar.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("bar", Decl(bar.js, 0, 0)) >exports : Symbol(export=, Decl(bar.js, 0, 0)) exports.blah = exports.someProp; diff --git a/testdata/baselines/reference/submodule/compiler/reachabilityChecks1.errors.txt b/testdata/baselines/reference/submodule/compiler/reachabilityChecks1.errors.txt index d25977a0..478dc407 100644 --- a/testdata/baselines/reference/submodule/compiler/reachabilityChecks1.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/reachabilityChecks1.errors.txt @@ -1,58 +1,77 @@ reachabilityChecks1.ts(2,1): error TS7027: Unreachable code detected. -reachabilityChecks1.ts(6,5): error TS7027: Unreachable code detected. -reachabilityChecks1.ts(18,5): error TS7027: Unreachable code detected. -reachabilityChecks1.ts(30,5): error TS7027: Unreachable code detected. reachabilityChecks1.ts(47,5): error TS7027: Unreachable code detected. +reachabilityChecks1.ts(51,1): error TS7027: Unreachable code detected. reachabilityChecks1.ts(60,5): error TS7027: Unreachable code detected. reachabilityChecks1.ts(69,5): error TS7027: Unreachable code detected. -==== reachabilityChecks1.ts (7 errors) ==== +==== reachabilityChecks1.ts (5 errors) ==== while (true); var x = 1; ~~~~~~~~~~ -!!! error TS7027: Unreachable code detected. + module A { + ~~~~~~~~~~ while (true); + ~~~~~~~~~~~~~~~~~ let x; - ~~~~~~ -!!! error TS7027: Unreachable code detected. + ~~~~~~~~~~ } + ~ + module A1 { + ~~~~~~~~~~~ do {} while(true); + ~~~~~~~~~~~~~~~~~~~~~~ module A { + ~~~~~~~~~~~~~~ interface F {} + ~~~~~~~~~~~~~~~~~~~~~~ } + ~~~~~ } + ~ + module A2 { + ~~~~~~~~~~~ while (true); + ~~~~~~~~~~~~~~~~~ module A { - ~~~~~~~~~~ + ~~~~~~~~~~~~~~ var x = 1; ~~~~~~~~~~~~~~~~~~ } ~~~~~ -!!! error TS7027: Unreachable code detected. } + ~ + module A3 { + ~~~~~~~~~~~ while (true); + ~~~~~~~~~~~~~~~~~ type T = string; + ~~~~~~~~~~~~~~~~~~~~ } + ~ + module A4 { + ~~~~~~~~~~~ while (true); + ~~~~~~~~~~~~~~~~~ module A { - ~~~~~~~~~~ + ~~~~~~~~~~~~~~ const enum E { X } ~~~~~~~~~~~~~~~~~~~~~~~~~~ } ~~~~~ -!!! error TS7027: Unreachable code detected. } + ~ +!!! error TS7027: Unreachable code detected. function f1(x) { if (x) { @@ -74,10 +93,16 @@ reachabilityChecks1.ts(69,5): error TS7027: Unreachable code detected. } module B { + ~~~~~~~~~~ for (; ;); + ~~~~~~~~~~~~~~ module C { + ~~~~~~~~~~~~~~ } + ~~~~~ } + ~ +!!! error TS7027: Unreachable code detected. function f3() { do { diff --git a/testdata/baselines/reference/submodule/compiler/reachabilityChecks1.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/reachabilityChecks1.errors.txt.diff new file mode 100644 index 00000000..873affde --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/reachabilityChecks1.errors.txt.diff @@ -0,0 +1,108 @@ +--- old.reachabilityChecks1.errors.txt ++++ new.reachabilityChecks1.errors.txt +@@= skipped -0, +0 lines =@@ + reachabilityChecks1.ts(2,1): error TS7027: Unreachable code detected. +-reachabilityChecks1.ts(6,5): error TS7027: Unreachable code detected. +-reachabilityChecks1.ts(18,5): error TS7027: Unreachable code detected. +-reachabilityChecks1.ts(30,5): error TS7027: Unreachable code detected. + reachabilityChecks1.ts(47,5): error TS7027: Unreachable code detected. ++reachabilityChecks1.ts(51,1): error TS7027: Unreachable code detected. + reachabilityChecks1.ts(60,5): error TS7027: Unreachable code detected. + reachabilityChecks1.ts(69,5): error TS7027: Unreachable code detected. + + +-==== reachabilityChecks1.ts (7 errors) ==== ++==== reachabilityChecks1.ts (5 errors) ==== + while (true); + var x = 1; + ~~~~~~~~~~ +-!!! error TS7027: Unreachable code detected. ++ + + module A { ++ ~~~~~~~~~~ + while (true); ++ ~~~~~~~~~~~~~~~~~ + let x; +- ~~~~~~ +-!!! error TS7027: Unreachable code detected. ++ ~~~~~~~~~~ + } ++ ~ ++ + + module A1 { ++ ~~~~~~~~~~~ + do {} while(true); ++ ~~~~~~~~~~~~~~~~~~~~~~ + module A { ++ ~~~~~~~~~~~~~~ + interface F {} ++ ~~~~~~~~~~~~~~~~~~~~~~ + } ++ ~~~~~ + } ++ ~ ++ + + module A2 { ++ ~~~~~~~~~~~ + while (true); ++ ~~~~~~~~~~~~~~~~~ + module A { +- ~~~~~~~~~~ ++ ~~~~~~~~~~~~~~ + var x = 1; + ~~~~~~~~~~~~~~~~~~ + } + ~~~~~ +-!!! error TS7027: Unreachable code detected. + } ++ ~ ++ + + module A3 { ++ ~~~~~~~~~~~ + while (true); ++ ~~~~~~~~~~~~~~~~~ + type T = string; ++ ~~~~~~~~~~~~~~~~~~~~ + } ++ ~ ++ + + module A4 { ++ ~~~~~~~~~~~ + while (true); ++ ~~~~~~~~~~~~~~~~~ + module A { +- ~~~~~~~~~~ ++ ~~~~~~~~~~~~~~ + const enum E { X } + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + } + ~~~~~ +-!!! error TS7027: Unreachable code detected. + } ++ ~ ++!!! error TS7027: Unreachable code detected. + + function f1(x) { + if (x) { +@@= skipped -73, +92 lines =@@ + } + + module B { ++ ~~~~~~~~~~ + for (; ;); ++ ~~~~~~~~~~~~~~ + module C { ++ ~~~~~~~~~~~~~~ + } ++ ~~~~~ + } ++ ~ ++!!! error TS7027: Unreachable code detected. + + function f3() { + do { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/requireOfJsonFileInJsFile.symbols b/testdata/baselines/reference/submodule/compiler/requireOfJsonFileInJsFile.symbols index 9f3eb97f..8af4d4d6 100644 --- a/testdata/baselines/reference/submodule/compiler/requireOfJsonFileInJsFile.symbols +++ b/testdata/baselines/reference/submodule/compiler/requireOfJsonFileInJsFile.symbols @@ -44,7 +44,7 @@ js1.b; === /js.js === module.exports = { a: 0 }; >module.exports : Symbol(export=, Decl(js.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("/js", Decl(js.js, 0, 0)) >exports : Symbol(export=, Decl(js.js, 0, 0)) >a : Symbol(a, Decl(js.js, 0, 18)) diff --git a/testdata/baselines/reference/submodule/compiler/requireOfJsonFileInJsFile.symbols.diff b/testdata/baselines/reference/submodule/compiler/requireOfJsonFileInJsFile.symbols.diff index 4c499201..e487d3ce 100644 --- a/testdata/baselines/reference/submodule/compiler/requireOfJsonFileInJsFile.symbols.diff +++ b/testdata/baselines/reference/submodule/compiler/requireOfJsonFileInJsFile.symbols.diff @@ -23,6 +23,6 @@ ->module.exports : Symbol(module.exports, Decl(js.js, 0, 0)) ->module : Symbol(export=, Decl(js.js, 0, 0)) +>module.exports : Symbol(export=, Decl(js.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("/js", Decl(js.js, 0, 0)) >exports : Symbol(export=, Decl(js.js, 0, 0)) >a : Symbol(a, Decl(js.js, 0, 18)) diff --git a/testdata/baselines/reference/submodule/compiler/truthinessCallExpressionCoercion4.symbols b/testdata/baselines/reference/submodule/compiler/truthinessCallExpressionCoercion4.symbols index e7ec94d8..ea8e176a 100644 --- a/testdata/baselines/reference/submodule/compiler/truthinessCallExpressionCoercion4.symbols +++ b/testdata/baselines/reference/submodule/compiler/truthinessCallExpressionCoercion4.symbols @@ -6,12 +6,12 @@ function fn() {} if (typeof module === 'object' && module.exports) { >module.exports : Symbol(fn, Decl(a.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("a", Decl(a.js, 0, 0)) >exports : Symbol(fn, Decl(a.js, 0, 0)) module.exports = fn; >module.exports : Symbol(fn, Decl(a.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("a", Decl(a.js, 0, 0)) >exports : Symbol(fn, Decl(a.js, 0, 0)) >fn : Symbol(fn, Decl(a.js, 0, 0)) } diff --git a/testdata/baselines/reference/submodule/compiler/truthinessCallExpressionCoercion4.symbols.diff b/testdata/baselines/reference/submodule/compiler/truthinessCallExpressionCoercion4.symbols.diff index ccfdab49..e92d618d 100644 --- a/testdata/baselines/reference/submodule/compiler/truthinessCallExpressionCoercion4.symbols.diff +++ b/testdata/baselines/reference/submodule/compiler/truthinessCallExpressionCoercion4.symbols.diff @@ -9,7 +9,7 @@ ->module : Symbol(module, Decl(a.js, 2, 51)) ->exports : Symbol(module.exports, Decl(a.js, 0, 0)) +>module.exports : Symbol(fn, Decl(a.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("a", Decl(a.js, 0, 0)) +>exports : Symbol(fn, Decl(a.js, 0, 0)) module.exports = fn; @@ -17,7 +17,7 @@ ->module : Symbol(export=, Decl(a.js, 2, 51)) ->exports : Symbol(export=, Decl(a.js, 2, 51)) +>module.exports : Symbol(fn, Decl(a.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("a", Decl(a.js, 0, 0)) +>exports : Symbol(fn, Decl(a.js, 0, 0)) >fn : Symbol(fn, Decl(a.js, 0, 0)) } diff --git a/testdata/baselines/reference/submodule/conformance/binderUninitializedModuleExportsAssignment.symbols b/testdata/baselines/reference/submodule/conformance/binderUninitializedModuleExportsAssignment.symbols index cf0725a5..740d2417 100644 --- a/testdata/baselines/reference/submodule/conformance/binderUninitializedModuleExportsAssignment.symbols +++ b/testdata/baselines/reference/submodule/conformance/binderUninitializedModuleExportsAssignment.symbols @@ -11,7 +11,7 @@ var loop2 = loop1; module.exports = loop2; >module.exports : Symbol(loop2, Decl(loop.js, 1, 3)) ->module : Symbol(module.exports) +>module : Symbol("loop", Decl(loop.js, 0, 0)) >exports : Symbol(loop2, Decl(loop.js, 1, 3)) >loop2 : Symbol(loop2, Decl(loop.js, 1, 3)) diff --git a/testdata/baselines/reference/submodule/conformance/binderUninitializedModuleExportsAssignment.symbols.diff b/testdata/baselines/reference/submodule/conformance/binderUninitializedModuleExportsAssignment.symbols.diff index 105de641..e4389239 100644 --- a/testdata/baselines/reference/submodule/conformance/binderUninitializedModuleExportsAssignment.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/binderUninitializedModuleExportsAssignment.symbols.diff @@ -8,6 +8,6 @@ ->module : Symbol(export=, Decl(loop.js, 1, 18)) ->exports : Symbol(export=, Decl(loop.js, 1, 18)) +>module.exports : Symbol(loop2, Decl(loop.js, 1, 3)) -+>module : Symbol(module.exports) ++>module : Symbol("loop", Decl(loop.js, 0, 0)) +>exports : Symbol(loop2, Decl(loop.js, 1, 3)) >loop2 : Symbol(loop2, Decl(loop.js, 1, 3)) diff --git a/testdata/baselines/reference/submodule/conformance/callbackCrossModule.symbols b/testdata/baselines/reference/submodule/conformance/callbackCrossModule.symbols index a3c308ae..b9307606 100644 --- a/testdata/baselines/reference/submodule/conformance/callbackCrossModule.symbols +++ b/testdata/baselines/reference/submodule/conformance/callbackCrossModule.symbols @@ -7,7 +7,7 @@ */ module.exports = C >module.exports : Symbol(C, Decl(mod1.js, 4, 18)) ->module : Symbol(module.exports) +>module : Symbol("mod1", Decl(mod1.js, 0, 0)) >exports : Symbol(C, Decl(mod1.js, 4, 18)) >C : Symbol(C, Decl(mod1.js, 4, 18)) diff --git a/testdata/baselines/reference/submodule/conformance/callbackCrossModule.symbols.diff b/testdata/baselines/reference/submodule/conformance/callbackCrossModule.symbols.diff index e8ddccd5..1bd0b80a 100644 --- a/testdata/baselines/reference/submodule/conformance/callbackCrossModule.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/callbackCrossModule.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(export=, Decl(mod1.js, 0, 0)) ->exports : Symbol(export=, Decl(mod1.js, 0, 0)) +>module.exports : Symbol(C, Decl(mod1.js, 4, 18)) -+>module : Symbol(module.exports) ++>module : Symbol("mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol(C, Decl(mod1.js, 4, 18)) >C : Symbol(C, Decl(mod1.js, 4, 18)) diff --git a/testdata/baselines/reference/submodule/conformance/checkExportsObjectAssignPrototypeProperty.symbols b/testdata/baselines/reference/submodule/conformance/checkExportsObjectAssignPrototypeProperty.symbols index c43fdf53..d776587a 100644 --- a/testdata/baselines/reference/submodule/conformance/checkExportsObjectAssignPrototypeProperty.symbols +++ b/testdata/baselines/reference/submodule/conformance/checkExportsObjectAssignPrototypeProperty.symbols @@ -131,7 +131,7 @@ Object.defineProperty(Person.prototype, "setonlyAccessor", { }); module.exports = Person; >module.exports : Symbol(Person, Decl(mod1.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("mod1", Decl(mod1.js, 0, 0)) >exports : Symbol(Person, Decl(mod1.js, 0, 0)) >Person : Symbol(Person, Decl(mod1.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/checkExportsObjectAssignPrototypeProperty.symbols.diff b/testdata/baselines/reference/submodule/conformance/checkExportsObjectAssignPrototypeProperty.symbols.diff index f0c98261..4e120b6e 100644 --- a/testdata/baselines/reference/submodule/conformance/checkExportsObjectAssignPrototypeProperty.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/checkExportsObjectAssignPrototypeProperty.symbols.diff @@ -152,6 +152,6 @@ ->module : Symbol(export=, Decl(mod1.js, 19, 3)) ->exports : Symbol(export=, Decl(mod1.js, 19, 3)) +>module.exports : Symbol(Person, Decl(mod1.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol(Person, Decl(mod1.js, 0, 0)) >Person : Symbol(Person, Decl(mod1.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/checkObjectDefineProperty.symbols b/testdata/baselines/reference/submodule/conformance/checkObjectDefineProperty.symbols index dd596e3b..99392130 100644 --- a/testdata/baselines/reference/submodule/conformance/checkObjectDefineProperty.symbols +++ b/testdata/baselines/reference/submodule/conformance/checkObjectDefineProperty.symbols @@ -162,7 +162,7 @@ match(() => expected, (x = expected) => void 0); module.exports = x; >module.exports : Symbol(x, Decl(index.js, 0, 5)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol(x, Decl(index.js, 0, 5)) >x : Symbol(x, Decl(index.js, 0, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/checkObjectDefineProperty.symbols.diff b/testdata/baselines/reference/submodule/conformance/checkObjectDefineProperty.symbols.diff index 774dcb2b..ad4ad1b8 100644 --- a/testdata/baselines/reference/submodule/conformance/checkObjectDefineProperty.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/checkObjectDefineProperty.symbols.diff @@ -188,6 +188,6 @@ ->exports : Symbol(export=, Decl(index.js, 41, 48)) ->x : Symbol(x, Decl(index.js, 0, 5), Decl(index.js, 1, 22), Decl(index.js, 2, 22), Decl(index.js, 3, 22), Decl(index.js, 4, 22) ... and 2 more) +>module.exports : Symbol(x, Decl(index.js, 0, 5)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol(x, Decl(index.js, 0, 5)) +>x : Symbol(x, Decl(index.js, 0, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/commonJSAliasedExport.symbols b/testdata/baselines/reference/submodule/conformance/commonJSAliasedExport.symbols index 8c3b8e04..e5ca91a2 100644 --- a/testdata/baselines/reference/submodule/conformance/commonJSAliasedExport.symbols +++ b/testdata/baselines/reference/submodule/conformance/commonJSAliasedExport.symbols @@ -29,13 +29,13 @@ function funky(declaration) { } module.exports = donkey; >module.exports : Symbol(donkey, Decl(commonJSAliasedExport.js, 0, 5)) ->module : Symbol(module.exports) +>module : Symbol("commonJSAliasedExport", Decl(commonJSAliasedExport.js, 0, 0)) >exports : Symbol(donkey, Decl(commonJSAliasedExport.js, 0, 5)) >donkey : Symbol(donkey, Decl(commonJSAliasedExport.js, 0, 5)) module.exports.funky = funky; >module.exports : Symbol(donkey, Decl(commonJSAliasedExport.js, 0, 5)) ->module : Symbol(module.exports) +>module : Symbol("commonJSAliasedExport", Decl(commonJSAliasedExport.js, 0, 0)) >exports : Symbol(donkey, Decl(commonJSAliasedExport.js, 0, 5)) >funky : Symbol(funky, Decl(commonJSAliasedExport.js, 0, 29)) diff --git a/testdata/baselines/reference/submodule/conformance/commonJSAliasedExport.symbols.diff b/testdata/baselines/reference/submodule/conformance/commonJSAliasedExport.symbols.diff index 57e78942..c694dc53 100644 --- a/testdata/baselines/reference/submodule/conformance/commonJSAliasedExport.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/commonJSAliasedExport.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(export=, Decl(commonJSAliasedExport.js, 4, 1)) ->exports : Symbol(export=, Decl(commonJSAliasedExport.js, 4, 1)) +>module.exports : Symbol(donkey, Decl(commonJSAliasedExport.js, 0, 5)) -+>module : Symbol(module.exports) ++>module : Symbol("commonJSAliasedExport", Decl(commonJSAliasedExport.js, 0, 0)) +>exports : Symbol(donkey, Decl(commonJSAliasedExport.js, 0, 5)) >donkey : Symbol(donkey, Decl(commonJSAliasedExport.js, 0, 5)) @@ -19,6 +19,6 @@ ->exports : Symbol(module.exports, Decl(commonJSAliasedExport.js, 0, 0)) ->funky : Symbol(funky, Decl(commonJSAliasedExport.js, 5, 24)) +>module.exports : Symbol(donkey, Decl(commonJSAliasedExport.js, 0, 5)) -+>module : Symbol(module.exports) ++>module : Symbol("commonJSAliasedExport", Decl(commonJSAliasedExport.js, 0, 0)) +>exports : Symbol(donkey, Decl(commonJSAliasedExport.js, 0, 5)) >funky : Symbol(funky, Decl(commonJSAliasedExport.js, 0, 29)) diff --git a/testdata/baselines/reference/submodule/conformance/commonJSReexport.symbols b/testdata/baselines/reference/submodule/conformance/commonJSReexport.symbols index a9258f81..5b0a21b7 100644 --- a/testdata/baselines/reference/submodule/conformance/commonJSReexport.symbols +++ b/testdata/baselines/reference/submodule/conformance/commonJSReexport.symbols @@ -17,7 +17,7 @@ const hardline = { type: "hard" } module.exports = { >module.exports : Symbol(export=, Decl(first.js, 0, 33)) ->module : Symbol(module.exports) +>module : Symbol("first", Decl(first.js, 0, 0)) >exports : Symbol(export=, Decl(first.js, 0, 33)) hardline @@ -28,7 +28,7 @@ module.exports = { === second.js === module.exports = { >module.exports : Symbol(export=, Decl(second.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("second", Decl(second.js, 0, 0)) >exports : Symbol(export=, Decl(second.js, 0, 0)) nested: require('./first') diff --git a/testdata/baselines/reference/submodule/conformance/commonJSReexport.symbols.diff b/testdata/baselines/reference/submodule/conformance/commonJSReexport.symbols.diff index bd49fde0..0714c3be 100644 --- a/testdata/baselines/reference/submodule/conformance/commonJSReexport.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/commonJSReexport.symbols.diff @@ -16,7 +16,7 @@ ->module : Symbol(module, Decl(first.js, 0, 33)) ->exports : Symbol(module.exports, Decl(first.js, 0, 0)) +>module.exports : Symbol(export=, Decl(first.js, 0, 33)) -+>module : Symbol(module.exports) ++>module : Symbol("first", Decl(first.js, 0, 0)) +>exports : Symbol(export=, Decl(first.js, 0, 33)) hardline @@ -28,7 +28,7 @@ ->module.exports : Symbol(module.exports, Decl(second.js, 0, 0)) ->module : Symbol(export=, Decl(second.js, 0, 0)) +>module.exports : Symbol(export=, Decl(second.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("second", Decl(second.js, 0, 0)) >exports : Symbol(export=, Decl(second.js, 0, 0)) nested: require('./first') diff --git a/testdata/baselines/reference/submodule/conformance/conflictingCommonJSES2015Exports.symbols b/testdata/baselines/reference/submodule/conformance/conflictingCommonJSES2015Exports.symbols index 183b4d35..42d4617b 100644 --- a/testdata/baselines/reference/submodule/conformance/conflictingCommonJSES2015Exports.symbols +++ b/testdata/baselines/reference/submodule/conformance/conflictingCommonJSES2015Exports.symbols @@ -9,7 +9,7 @@ export function abc(a, b, c) { return 5; } module.exports = { abc }; >module.exports : Symbol(export=, Decl(bug24934.js, 0, 42)) ->module : Symbol(module.exports) +>module : Symbol("bug24934", Decl(bug24934.js, 0, 0)) >exports : Symbol(export=, Decl(bug24934.js, 0, 42)) >abc : Symbol(abc, Decl(bug24934.js, 1, 18)) diff --git a/testdata/baselines/reference/submodule/conformance/conflictingCommonJSES2015Exports.symbols.diff b/testdata/baselines/reference/submodule/conformance/conflictingCommonJSES2015Exports.symbols.diff index ffd519ad..cdfe1bb4 100644 --- a/testdata/baselines/reference/submodule/conformance/conflictingCommonJSES2015Exports.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/conflictingCommonJSES2015Exports.symbols.diff @@ -5,7 +5,7 @@ module.exports = { abc }; +>module.exports : Symbol(export=, Decl(bug24934.js, 0, 42)) -+>module : Symbol(module.exports) ++>module : Symbol("bug24934", Decl(bug24934.js, 0, 0)) +>exports : Symbol(export=, Decl(bug24934.js, 0, 42)) >abc : Symbol(abc, Decl(bug24934.js, 1, 18)) diff --git a/testdata/baselines/reference/submodule/conformance/constructorFunctions2.symbols b/testdata/baselines/reference/submodule/conformance/constructorFunctions2.symbols index 8b686083..cbd4e9a9 100644 --- a/testdata/baselines/reference/submodule/conformance/constructorFunctions2.symbols +++ b/testdata/baselines/reference/submodule/conformance/constructorFunctions2.symbols @@ -43,7 +43,7 @@ function A() { this.id = 1; } module.exports = A; >module.exports : Symbol(A, Decl(other.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("other", Decl(other.js, 0, 0)) >exports : Symbol(A, Decl(other.js, 0, 0)) >A : Symbol(A, Decl(other.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/constructorFunctions2.symbols.diff b/testdata/baselines/reference/submodule/conformance/constructorFunctions2.symbols.diff index 48e391f2..005bcd43 100644 --- a/testdata/baselines/reference/submodule/conformance/constructorFunctions2.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/constructorFunctions2.symbols.diff @@ -50,6 +50,6 @@ ->module : Symbol(export=, Decl(other.js, 0, 29)) ->exports : Symbol(export=, Decl(other.js, 0, 29)) +>module.exports : Symbol(A, Decl(other.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("other", Decl(other.js, 0, 0)) +>exports : Symbol(A, Decl(other.js, 0, 0)) >A : Symbol(A, Decl(other.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/contextualTypedSpecialAssignment.symbols b/testdata/baselines/reference/submodule/conformance/contextualTypedSpecialAssignment.symbols index 36332f0b..0c53649f 100644 --- a/testdata/baselines/reference/submodule/conformance/contextualTypedSpecialAssignment.symbols +++ b/testdata/baselines/reference/submodule/conformance/contextualTypedSpecialAssignment.symbols @@ -104,7 +104,7 @@ exports.x module.exports.y = { >module.exports.y : Symbol(y, Decl(test.js, 45, 9)) >module.exports : Symbol("test", Decl(test.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("test", Decl(test.js, 0, 0)) >exports : Symbol("test", Decl(test.js, 0, 0)) >y : Symbol(y, Decl(test.js, 45, 9)) @@ -118,7 +118,7 @@ module.exports.y = { module.exports.y >module.exports.y : Symbol(y, Decl(test.js, 45, 9)) >module.exports : Symbol("test", Decl(test.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("test", Decl(test.js, 0, 0)) >exports : Symbol("test", Decl(test.js, 0, 0)) >y : Symbol(y, Decl(test.js, 45, 9)) @@ -164,7 +164,7 @@ F.prototype = { /** @type {{ status: 'done', m(n: number): void }} */ module.exports = { >module.exports : Symbol(export=, Decl(mod.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("mod", Decl(mod.js, 0, 0)) >exports : Symbol(export=, Decl(mod.js, 0, 0)) status: "done", diff --git a/testdata/baselines/reference/submodule/conformance/contextualTypedSpecialAssignment.symbols.diff b/testdata/baselines/reference/submodule/conformance/contextualTypedSpecialAssignment.symbols.diff index 29f9b8d2..03b0f042 100644 --- a/testdata/baselines/reference/submodule/conformance/contextualTypedSpecialAssignment.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/contextualTypedSpecialAssignment.symbols.diff @@ -61,7 +61,7 @@ ->module : Symbol(module, Decl(test.js, 45, 9)) ->exports : Symbol(module.exports, Decl(test.js, 0, 0)) +>module.exports : Symbol("test", Decl(test.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("test", Decl(test.js, 0, 0)) +>exports : Symbol("test", Decl(test.js, 0, 0)) >y : Symbol(y, Decl(test.js, 45, 9)) @@ -74,7 +74,7 @@ ->module : Symbol(module, Decl(test.js, 45, 9)) ->exports : Symbol(module.exports, Decl(test.js, 0, 0)) +>module.exports : Symbol("test", Decl(test.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("test", Decl(test.js, 0, 0)) +>exports : Symbol("test", Decl(test.js, 0, 0)) >y : Symbol(y, Decl(test.js, 45, 9)) @@ -120,7 +120,7 @@ ->module.exports : Symbol(module.exports, Decl(mod.js, 0, 0)) ->module : Symbol(export=, Decl(mod.js, 0, 0)) +>module.exports : Symbol(export=, Decl(mod.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("mod", Decl(mod.js, 0, 0)) >exports : Symbol(export=, Decl(mod.js, 0, 0)) status: "done", \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/enumTagOnExports.symbols b/testdata/baselines/reference/submodule/conformance/enumTagOnExports.symbols index fb9a7f22..8720f111 100644 --- a/testdata/baselines/reference/submodule/conformance/enumTagOnExports.symbols +++ b/testdata/baselines/reference/submodule/conformance/enumTagOnExports.symbols @@ -11,7 +11,7 @@ exports.a = {}; module.exports.b = {}; >module.exports.b : Symbol(b, Decl(enumTagOnExports.js, 1, 15)) >module.exports : Symbol("enumTagOnExports", Decl(enumTagOnExports.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("enumTagOnExports", Decl(enumTagOnExports.js, 0, 0)) >exports : Symbol("enumTagOnExports", Decl(enumTagOnExports.js, 0, 0)) >b : Symbol(b, Decl(enumTagOnExports.js, 1, 15)) diff --git a/testdata/baselines/reference/submodule/conformance/enumTagOnExports.symbols.diff b/testdata/baselines/reference/submodule/conformance/enumTagOnExports.symbols.diff index b19e94ec..6e791a79 100644 --- a/testdata/baselines/reference/submodule/conformance/enumTagOnExports.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/enumTagOnExports.symbols.diff @@ -20,6 +20,6 @@ ->b : Symbol(b, Decl(enumTagOnExports.js, 1, 15), Decl(enumTagOnExports.js, 4, 15), Decl(enumTagOnExports.js, 3, 4)) +>module.exports.b : Symbol(b, Decl(enumTagOnExports.js, 1, 15)) +>module.exports : Symbol("enumTagOnExports", Decl(enumTagOnExports.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("enumTagOnExports", Decl(enumTagOnExports.js, 0, 0)) +>exports : Symbol("enumTagOnExports", Decl(enumTagOnExports.js, 0, 0)) +>b : Symbol(b, Decl(enumTagOnExports.js, 1, 15)) diff --git a/testdata/baselines/reference/submodule/conformance/enumTagOnExports2.symbols b/testdata/baselines/reference/submodule/conformance/enumTagOnExports2.symbols index 740a47d1..2b613ca9 100644 --- a/testdata/baselines/reference/submodule/conformance/enumTagOnExports2.symbols +++ b/testdata/baselines/reference/submodule/conformance/enumTagOnExports2.symbols @@ -4,6 +4,6 @@ /** @enum {string} */ module.exports = {}; >module.exports : Symbol(export=, Decl(enumTagOnExports.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("enumTagOnExports", Decl(enumTagOnExports.js, 0, 0)) >exports : Symbol(export=, Decl(enumTagOnExports.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/enumTagOnExports2.symbols.diff b/testdata/baselines/reference/submodule/conformance/enumTagOnExports2.symbols.diff index cc0ea1a9..7c0fe0c5 100644 --- a/testdata/baselines/reference/submodule/conformance/enumTagOnExports2.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/enumTagOnExports2.symbols.diff @@ -8,5 +8,5 @@ ->module : Symbol(module, Decl(enumTagOnExports.js, 0, 0)) ->exports : Symbol(module.exports, Decl(enumTagOnExports.js, 0, 0)) +>module.exports : Symbol(export=, Decl(enumTagOnExports.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("enumTagOnExports", Decl(enumTagOnExports.js, 0, 0)) +>exports : Symbol(export=, Decl(enumTagOnExports.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/exportPropertyAssignmentNameResolution.symbols b/testdata/baselines/reference/submodule/conformance/exportPropertyAssignmentNameResolution.symbols index 84112b66..ccfc7ba3 100644 --- a/testdata/baselines/reference/submodule/conformance/exportPropertyAssignmentNameResolution.symbols +++ b/testdata/baselines/reference/submodule/conformance/exportPropertyAssignmentNameResolution.symbols @@ -4,7 +4,7 @@ module.exports.D = class { } >module.exports.D : Symbol(D, Decl(bug24492.js, 0, 0)) >module.exports : Symbol("bug24492", Decl(bug24492.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("bug24492", Decl(bug24492.js, 0, 0)) >exports : Symbol("bug24492", Decl(bug24492.js, 0, 0)) >D : Symbol(D, Decl(bug24492.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/exportPropertyAssignmentNameResolution.symbols.diff b/testdata/baselines/reference/submodule/conformance/exportPropertyAssignmentNameResolution.symbols.diff index b4f8fb25..69204282 100644 --- a/testdata/baselines/reference/submodule/conformance/exportPropertyAssignmentNameResolution.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/exportPropertyAssignmentNameResolution.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(module, Decl(bug24492.js, 0, 0)) ->exports : Symbol(module.exports, Decl(bug24492.js, 0, 0)) +>module.exports : Symbol("bug24492", Decl(bug24492.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("bug24492", Decl(bug24492.js, 0, 0)) +>exports : Symbol("bug24492", Decl(bug24492.js, 0, 0)) >D : Symbol(D, Decl(bug24492.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/globalMergeWithCommonJSAssignmentDeclaration.symbols b/testdata/baselines/reference/submodule/conformance/globalMergeWithCommonJSAssignmentDeclaration.symbols index 901f4c42..92a33b77 100644 --- a/testdata/baselines/reference/submodule/conformance/globalMergeWithCommonJSAssignmentDeclaration.symbols +++ b/testdata/baselines/reference/submodule/conformance/globalMergeWithCommonJSAssignmentDeclaration.symbols @@ -13,7 +13,7 @@ window.console; // should not have error: Property 'console' does not exist on t module.exports = 'anything'; >module.exports : Symbol(export=, Decl(bug27099.js, 1, 15)) ->module : Symbol(module.exports) +>module : Symbol("bug27099", Decl(bug27099.js, 0, 0)) >exports : Symbol(export=, Decl(bug27099.js, 1, 15)) diff --git a/testdata/baselines/reference/submodule/conformance/globalMergeWithCommonJSAssignmentDeclaration.symbols.diff b/testdata/baselines/reference/submodule/conformance/globalMergeWithCommonJSAssignmentDeclaration.symbols.diff index 672f1ad8..2ac7c386 100644 --- a/testdata/baselines/reference/submodule/conformance/globalMergeWithCommonJSAssignmentDeclaration.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/globalMergeWithCommonJSAssignmentDeclaration.symbols.diff @@ -18,6 +18,6 @@ ->module.exports : Symbol(module.exports, Decl(bug27099.js, 0, 0)) ->module : Symbol(export=, Decl(bug27099.js, 1, 15)) +>module.exports : Symbol(export=, Decl(bug27099.js, 1, 15)) -+>module : Symbol(module.exports) ++>module : Symbol("bug27099", Decl(bug27099.js, 0, 0)) >exports : Symbol(export=, Decl(bug27099.js, 1, 15)) diff --git a/testdata/baselines/reference/submodule/conformance/importAliasModuleExports.symbols b/testdata/baselines/reference/submodule/conformance/importAliasModuleExports.symbols index cb1ab827..26d9c1ab 100644 --- a/testdata/baselines/reference/submodule/conformance/importAliasModuleExports.symbols +++ b/testdata/baselines/reference/submodule/conformance/importAliasModuleExports.symbols @@ -9,7 +9,7 @@ class Alias { } module.exports = Alias; >module.exports : Symbol(Alias, Decl(mod1.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("mod1", Decl(mod1.js, 0, 0)) >exports : Symbol(Alias, Decl(mod1.js, 0, 0)) >Alias : Symbol(Alias, Decl(mod1.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/importAliasModuleExports.symbols.diff b/testdata/baselines/reference/submodule/conformance/importAliasModuleExports.symbols.diff index c3ddb5e4..19ee49ee 100644 --- a/testdata/baselines/reference/submodule/conformance/importAliasModuleExports.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/importAliasModuleExports.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(export=, Decl(mod1.js, 2, 1)) ->exports : Symbol(export=, Decl(mod1.js, 2, 1)) +>module.exports : Symbol(Alias, Decl(mod1.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol(Alias, Decl(mod1.js, 0, 0)) >Alias : Symbol(Alias, Decl(mod1.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsClassExtendsVisibility.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsClassExtendsVisibility.symbols index bd1cc110..601eaea4 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsClassExtendsVisibility.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsClassExtendsVisibility.symbols @@ -22,13 +22,13 @@ class Foo extends Bar {} module.exports = Foo; >module.exports : Symbol(Foo, Decl(cls.js, 4, 2)) ->module : Symbol(module.exports) +>module : Symbol("cls", Decl(cls.js, 0, 0)) >exports : Symbol(Foo, Decl(cls.js, 4, 2)) >Foo : Symbol(Foo, Decl(cls.js, 4, 2)) module.exports.Strings = Strings; >module.exports : Symbol(Foo, Decl(cls.js, 4, 2)) ->module : Symbol(module.exports) +>module : Symbol("cls", Decl(cls.js, 0, 0)) >exports : Symbol(Foo, Decl(cls.js, 4, 2)) >Strings : Symbol(Strings, Decl(cls.js, 1, 5)) @@ -38,7 +38,7 @@ class Bar {} module.exports = Bar; >module.exports : Symbol(Bar, Decl(bar.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("bar", Decl(bar.js, 0, 0)) >exports : Symbol(Bar, Decl(bar.js, 0, 0)) >Bar : Symbol(Bar, Decl(bar.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsClassExtendsVisibility.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsClassExtendsVisibility.symbols.diff index 92f53b9b..f18766bd 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsClassExtendsVisibility.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsClassExtendsVisibility.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(export=, Decl(cls.js, 5, 24)) ->exports : Symbol(export=, Decl(cls.js, 5, 24)) +>module.exports : Symbol(Foo, Decl(cls.js, 4, 2)) -+>module : Symbol(module.exports) ++>module : Symbol("cls", Decl(cls.js, 0, 0)) +>exports : Symbol(Foo, Decl(cls.js, 4, 2)) >Foo : Symbol(Foo, Decl(cls.js, 4, 2)) @@ -19,7 +19,7 @@ ->exports : Symbol(module.exports, Decl(cls.js, 0, 0)) ->Strings : Symbol(Strings, Decl(cls.js, 6, 21)) +>module.exports : Symbol(Foo, Decl(cls.js, 4, 2)) -+>module : Symbol(module.exports) ++>module : Symbol("cls", Decl(cls.js, 0, 0)) +>exports : Symbol(Foo, Decl(cls.js, 4, 2)) >Strings : Symbol(Strings, Decl(cls.js, 1, 5)) @@ -32,6 +32,6 @@ ->module : Symbol(export=, Decl(bar.js, 0, 12)) ->exports : Symbol(export=, Decl(bar.js, 0, 12)) +>module.exports : Symbol(Bar, Decl(bar.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("bar", Decl(bar.js, 0, 0)) +>exports : Symbol(Bar, Decl(bar.js, 0, 0)) >Bar : Symbol(Bar, Decl(bar.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsClassStatic.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsClassStatic.symbols index 65f7ccf2..f276ec99 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsClassStatic.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsClassStatic.symbols @@ -31,13 +31,13 @@ const Strings = { module.exports = Handler; >module.exports : Symbol(Handler, Decl(source.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("source", Decl(source.js, 0, 0)) >exports : Symbol(Handler, Decl(source.js, 0, 0)) >Handler : Symbol(Handler, Decl(source.js, 0, 0)) module.exports.Strings = Strings >module.exports : Symbol(Handler, Decl(source.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("source", Decl(source.js, 0, 0)) >exports : Symbol(Handler, Decl(source.js, 0, 0)) >Strings : Symbol(Strings, Decl(source.js, 9, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsClassStatic.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsClassStatic.symbols.diff index 5acb6eec..83a99f81 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsClassStatic.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsClassStatic.symbols.diff @@ -27,7 +27,7 @@ ->exports : Symbol(export=, Decl(source.js, 12, 1)) ->Handler : Symbol(Handler, Decl(source.js, 0, 0), Decl(source.js, 7, 1)) +>module.exports : Symbol(Handler, Decl(source.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("source", Decl(source.js, 0, 0)) +>exports : Symbol(Handler, Decl(source.js, 0, 0)) +>Handler : Symbol(Handler, Decl(source.js, 0, 0)) @@ -38,7 +38,7 @@ ->exports : Symbol(module.exports, Decl(source.js, 0, 0)) ->Strings : Symbol(Strings, Decl(source.js, 14, 25)) +>module.exports : Symbol(Handler, Decl(source.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("source", Decl(source.js, 0, 0)) +>exports : Symbol(Handler, Decl(source.js, 0, 0)) >Strings : Symbol(Strings, Decl(source.js, 9, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsCommonjsRelativePath.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsCommonjsRelativePath.symbols index c23777b7..c8982bdc 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsCommonjsRelativePath.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsCommonjsRelativePath.symbols @@ -10,7 +10,7 @@ const Thing = require('./thing').Thing module.exports = { Thing } >module.exports : Symbol(export=, Decl(reexport.js, 1, 38)) ->module : Symbol(module.exports) +>module : Symbol("reexport", Decl(reexport.js, 0, 0)) >exports : Symbol(export=, Decl(reexport.js, 1, 38)) >Thing : Symbol(Thing, Decl(reexport.js, 2, 18)) @@ -21,7 +21,7 @@ class Thing {} module.exports = { Thing } >module.exports : Symbol(export=, Decl(thing.js, 1, 14)) ->module : Symbol(module.exports) +>module : Symbol("thing", Decl(thing.js, 0, 0)) >exports : Symbol(export=, Decl(thing.js, 1, 14)) >Thing : Symbol(Thing, Decl(thing.js, 2, 18)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsCommonjsRelativePath.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsCommonjsRelativePath.symbols.diff index af6fef45..e8ab726e 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsCommonjsRelativePath.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsCommonjsRelativePath.symbols.diff @@ -12,7 +12,7 @@ ->module : Symbol(module, Decl(reexport.js, 1, 38)) ->exports : Symbol(module.exports, Decl(reexport.js, 0, 0)) +>module.exports : Symbol(export=, Decl(reexport.js, 1, 38)) -+>module : Symbol(module.exports) ++>module : Symbol("reexport", Decl(reexport.js, 0, 0)) +>exports : Symbol(export=, Decl(reexport.js, 1, 38)) >Thing : Symbol(Thing, Decl(reexport.js, 2, 18)) @@ -25,6 +25,6 @@ ->module : Symbol(module, Decl(thing.js, 1, 14)) ->exports : Symbol(module.exports, Decl(thing.js, 0, 0)) +>module.exports : Symbol(export=, Decl(thing.js, 1, 14)) -+>module : Symbol(module.exports) ++>module : Symbol("thing", Decl(thing.js, 0, 0)) +>exports : Symbol(export=, Decl(thing.js, 1, 14)) >Thing : Symbol(Thing, Decl(thing.js, 2, 18)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsComputedNames.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsComputedNames.symbols index a2057ad4..dd6fbdb9 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsComputedNames.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsComputedNames.symbols @@ -11,7 +11,7 @@ const InnerSym = Symbol(); module.exports = { >module.exports : Symbol(export=, Decl(index.js, 1, 26)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol(export=, Decl(index.js, 1, 26)) [TopLevelSym](x = 12) { diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsComputedNames.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsComputedNames.symbols.diff index 6c393810..4d903956 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsComputedNames.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsComputedNames.symbols.diff @@ -7,7 +7,7 @@ ->module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) ->module : Symbol(export=, Decl(index.js, 1, 26)) +>module.exports : Symbol(export=, Decl(index.js, 1, 26)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol(export=, Decl(index.js, 1, 26)) [TopLevelSym](x = 12) { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsCrossfileMerge.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsCrossfileMerge.symbols index 928bcb99..3964f716 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsCrossfileMerge.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsCrossfileMerge.symbols @@ -8,7 +8,7 @@ const m = require("./exporter"); module.exports = m.default; >module.exports : Symbol(m.default, Decl(exporter.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol(m.default, Decl(exporter.js, 0, 0)) >m.default : Symbol(m.default, Decl(exporter.js, 0, 22)) >m : Symbol(m, Decl(index.js, 0, 5)) @@ -16,7 +16,7 @@ module.exports = m.default; module.exports.memberName = "thing"; >module.exports : Symbol(m.default, Decl(exporter.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol(m.default, Decl(exporter.js, 0, 0)) === exporter.js === diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsCrossfileMerge.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsCrossfileMerge.symbols.diff index c0ef67eb..ce86d34b 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsCrossfileMerge.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsCrossfileMerge.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(export=, Decl(index.js, 0, 32)) ->exports : Symbol(export=, Decl(index.js, 0, 32)) +>module.exports : Symbol(m.default, Decl(exporter.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol(m.default, Decl(exporter.js, 0, 0)) >m.default : Symbol(m.default, Decl(exporter.js, 0, 22)) >m : Symbol(m, Decl(index.js, 0, 5)) @@ -21,7 +21,7 @@ ->exports : Symbol(module.exports, Decl(index.js, 0, 0)) ->memberName : Symbol(memberName, Decl(index.js, 2, 27)) +>module.exports : Symbol(m.default, Decl(exporter.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol(m.default, Decl(exporter.js, 0, 0)) === exporter.js === diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsDocCommentsOnConsts.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsDocCommentsOnConsts.symbols index de1c0f5e..ad6789dc 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsDocCommentsOnConsts.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsDocCommentsOnConsts.symbols @@ -22,7 +22,7 @@ function b() { module.exports = {x, b} >module.exports : Symbol(export=, Decl(index1.js, 12, 1)) ->module : Symbol(module.exports) +>module : Symbol("index1", Decl(index1.js, 0, 0)) >exports : Symbol(export=, Decl(index1.js, 12, 1)) >x : Symbol(x, Decl(index1.js, 14, 18)) >b : Symbol(b, Decl(index1.js, 14, 20)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsDocCommentsOnConsts.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsDocCommentsOnConsts.symbols.diff index c5aa75f9..7eb29647 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsDocCommentsOnConsts.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsDocCommentsOnConsts.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(module, Decl(index1.js, 12, 1)) ->exports : Symbol(module.exports, Decl(index1.js, 0, 0)) +>module.exports : Symbol(export=, Decl(index1.js, 12, 1)) -+>module : Symbol(module.exports) ++>module : Symbol("index1", Decl(index1.js, 0, 0)) +>exports : Symbol(export=, Decl(index1.js, 12, 1)) >x : Symbol(x, Decl(index1.js, 14, 18)) >b : Symbol(b, Decl(index1.js, 14, 20)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassExpression.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassExpression.symbols index b38614ad..e5db0f7c 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassExpression.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassExpression.symbols @@ -3,7 +3,7 @@ === index.js === module.exports = class Thing { >module.exports : Symbol(Thing, Decl(index.js, 0, 16)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol(Thing, Decl(index.js, 0, 16)) >Thing : Symbol(Thing, Decl(index.js, 0, 16)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassExpression.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassExpression.symbols.diff index f5c3a6e7..d145f514 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassExpression.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassExpression.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(export=, Decl(index.js, 0, 0)) ->exports : Symbol(export=, Decl(index.js, 0, 0)) +>module.exports : Symbol(Thing, Decl(index.js, 0, 16)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol(Thing, Decl(index.js, 0, 16)) >Thing : Symbol(Thing, Decl(index.js, 0, 16)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassExpressionAnonymous.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassExpressionAnonymous.symbols index 2291fd59..a458d961 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassExpressionAnonymous.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassExpressionAnonymous.symbols @@ -3,7 +3,7 @@ === index.js === module.exports = class { >module.exports : Symbol((Anonymous class), Decl(index.js, 0, 16)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol((Anonymous class), Decl(index.js, 0, 16)) /** diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassExpressionAnonymous.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassExpressionAnonymous.symbols.diff index f36c42b5..fb02cc8c 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassExpressionAnonymous.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassExpressionAnonymous.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(export=, Decl(index.js, 0, 0)) ->exports : Symbol(export=, Decl(index.js, 0, 0)) +>module.exports : Symbol((Anonymous class), Decl(index.js, 0, 16)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol((Anonymous class), Decl(index.js, 0, 16)) /** diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassExpressionAnonymousWithSub.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassExpressionAnonymousWithSub.symbols index c3b3253c..6bc6beee 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassExpressionAnonymousWithSub.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassExpressionAnonymousWithSub.symbols @@ -3,7 +3,7 @@ === index.js === module.exports = class { >module.exports : Symbol((Anonymous class), Decl(index.js, 0, 16)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol((Anonymous class), Decl(index.js, 0, 16)) /** @@ -21,7 +21,7 @@ module.exports = class { } module.exports.Sub = class { >module.exports : Symbol((Anonymous class), Decl(index.js, 0, 16)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol((Anonymous class), Decl(index.js, 0, 16)) constructor() { @@ -30,7 +30,7 @@ module.exports.Sub = class { >this : Symbol(Sub, Decl(index.js, 8, 20)) >instance : Symbol(Sub.instance, Decl(index.js, 9, 19)) >module.exports : Symbol((Anonymous class), Decl(index.js, 0, 16)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol((Anonymous class), Decl(index.js, 0, 16)) } } diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassExpressionAnonymousWithSub.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassExpressionAnonymousWithSub.symbols.diff index 0d3f1ea9..1509abd4 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassExpressionAnonymousWithSub.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassExpressionAnonymousWithSub.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(export=, Decl(index.js, 0, 0)) ->exports : Symbol(export=, Decl(index.js, 0, 0)) +>module.exports : Symbol((Anonymous class), Decl(index.js, 0, 16)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol((Anonymous class), Decl(index.js, 0, 16)) /** @@ -23,7 +23,7 @@ ->exports : Symbol(module.exports, Decl(index.js, 0, 0)) ->Sub : Symbol(Sub, Decl(index.js, 7, 1)) +>module.exports : Symbol((Anonymous class), Decl(index.js, 0, 16)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol((Anonymous class), Decl(index.js, 0, 16)) constructor() { @@ -35,7 +35,7 @@ ->module : Symbol(module, Decl(index.js, 0, 0), Decl(index.js, 10, 27)) ->exports : Symbol(module.exports, Decl(index.js, 0, 0)) +>module.exports : Symbol((Anonymous class), Decl(index.js, 0, 16)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol((Anonymous class), Decl(index.js, 0, 16)) } } diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassExpressionShadowing.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassExpressionShadowing.symbols index e34c8b0e..568d3958 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassExpressionShadowing.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassExpressionShadowing.symbols @@ -16,7 +16,7 @@ class Q { } module.exports = class Q { >module.exports : Symbol(Q, Decl(index.js, 6, 16)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol(Q, Decl(index.js, 6, 16)) >Q : Symbol(Q, Decl(index.js, 6, 16)) @@ -30,7 +30,7 @@ module.exports = class Q { } module.exports.Another = Q; >module.exports : Symbol(Q, Decl(index.js, 6, 16)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol(Q, Decl(index.js, 6, 16)) >Q : Symbol(Q, Decl(index.js, 2, 1)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassExpressionShadowing.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassExpressionShadowing.symbols.diff index ead22a05..282bfe26 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassExpressionShadowing.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassExpressionShadowing.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(export=, Decl(index.js, 5, 1)) ->exports : Symbol(export=, Decl(index.js, 5, 1)) +>module.exports : Symbol(Q, Decl(index.js, 6, 16)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol(Q, Decl(index.js, 6, 16)) >Q : Symbol(Q, Decl(index.js, 6, 16)) @@ -23,6 +23,6 @@ ->exports : Symbol(module.exports, Decl(index.js, 0, 0)) ->Another : Symbol(Another, Decl(index.js, 10, 1)) +>module.exports : Symbol(Q, Decl(index.js, 6, 16)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol(Q, Decl(index.js, 6, 16)) >Q : Symbol(Q, Decl(index.js, 2, 1)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance1.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance1.symbols index b70cc9e4..970b9653 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance1.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance1.symbols @@ -6,7 +6,7 @@ class Foo {} module.exports = new Foo(); >module.exports : Symbol(export=, Decl(index.js, 0, 12)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol(export=, Decl(index.js, 0, 12)) >Foo : Symbol(Foo, Decl(index.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance1.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance1.symbols.diff index 965edbb8..ceca31cc 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance1.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance1.symbols.diff @@ -7,6 +7,6 @@ ->module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) ->module : Symbol(export=, Decl(index.js, 0, 12)) +>module.exports : Symbol(export=, Decl(index.js, 0, 12)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol(export=, Decl(index.js, 0, 12)) >Foo : Symbol(Foo, Decl(index.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance2.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance2.symbols index 8ab8c222..ba72a358 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance2.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance2.symbols @@ -13,7 +13,7 @@ class Foo { module.exports = new Foo(); >module.exports : Symbol(export=, Decl(index.js, 3, 1)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol(export=, Decl(index.js, 3, 1)) >Foo : Symbol(Foo, Decl(index.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance2.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance2.symbols.diff index f943bfb2..22c4538f 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance2.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance2.symbols.diff @@ -7,6 +7,6 @@ ->module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) ->module : Symbol(export=, Decl(index.js, 3, 1)) +>module.exports : Symbol(export=, Decl(index.js, 3, 1)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol(export=, Decl(index.js, 3, 1)) >Foo : Symbol(Foo, Decl(index.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance3.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance3.symbols index 375993ea..4f50fdd1 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance3.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance3.symbols @@ -13,12 +13,12 @@ class Foo { module.exports = new Foo(); >module.exports : Symbol(export=, Decl(index.js, 3, 1)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol(export=, Decl(index.js, 3, 1)) >Foo : Symbol(Foo, Decl(index.js, 0, 0)) module.exports.additional = 20; >module.exports : Symbol(export=, Decl(index.js, 3, 1)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol(export=, Decl(index.js, 3, 1)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance3.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance3.symbols.diff index 7775a0ad..4cff2916 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance3.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedClassInstance3.symbols.diff @@ -7,7 +7,7 @@ ->module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) ->module : Symbol(export=, Decl(index.js, 3, 1)) +>module.exports : Symbol(export=, Decl(index.js, 3, 1)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol(export=, Decl(index.js, 3, 1)) >Foo : Symbol(Foo, Decl(index.js, 0, 0)) @@ -18,5 +18,5 @@ ->exports : Symbol(module.exports, Decl(index.js, 0, 0)) ->additional : Symbol(additional, Decl(index.js, 5, 27)) +>module.exports : Symbol(export=, Decl(index.js, 3, 1)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol(export=, Decl(index.js, 3, 1)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedConstructorFunction.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedConstructorFunction.symbols index da1bfef2..1b7a3196 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedConstructorFunction.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedConstructorFunction.symbols @@ -5,7 +5,7 @@ module.exports.MyClass = function() { >module.exports.MyClass : Symbol(MyClass, Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0)) >module.exports : Symbol("jsDeclarationsExportAssignedConstructorFunction", Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("jsDeclarationsExportAssignedConstructorFunction", Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0)) >exports : Symbol("jsDeclarationsExportAssignedConstructorFunction", Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0)) >MyClass : Symbol(MyClass, Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0)) @@ -15,7 +15,7 @@ module.exports.MyClass.prototype = { >module.exports.MyClass.prototype : Symbol(Function.prototype, Decl(lib.es5.d.ts, --, --)) >module.exports.MyClass : Symbol(MyClass, Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0)) >module.exports : Symbol("jsDeclarationsExportAssignedConstructorFunction", Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("jsDeclarationsExportAssignedConstructorFunction", Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0)) >exports : Symbol("jsDeclarationsExportAssignedConstructorFunction", Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0)) >MyClass : Symbol(MyClass, Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0)) >prototype : Symbol(Function.prototype, Decl(lib.es5.d.ts, --, --)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedConstructorFunction.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedConstructorFunction.symbols.diff index 186e299f..6a4f9bab 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedConstructorFunction.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedConstructorFunction.symbols.diff @@ -11,7 +11,7 @@ ->MyClass : Symbol(MyClass, Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0), Decl(jsDeclarationsExportAssignedConstructorFunction.js, 4, 15)) +>module.exports.MyClass : Symbol(MyClass, Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0)) +>module.exports : Symbol("jsDeclarationsExportAssignedConstructorFunction", Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("jsDeclarationsExportAssignedConstructorFunction", Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0)) +>exports : Symbol("jsDeclarationsExportAssignedConstructorFunction", Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0)) +>MyClass : Symbol(MyClass, Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0)) @@ -31,7 +31,7 @@ +>module.exports.MyClass.prototype : Symbol(Function.prototype, Decl(lib.es5.d.ts, --, --)) +>module.exports.MyClass : Symbol(MyClass, Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0)) +>module.exports : Symbol("jsDeclarationsExportAssignedConstructorFunction", Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("jsDeclarationsExportAssignedConstructorFunction", Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0)) +>exports : Symbol("jsDeclarationsExportAssignedConstructorFunction", Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0)) +>MyClass : Symbol(MyClass, Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0)) +>prototype : Symbol(Function.prototype, Decl(lib.es5.d.ts, --, --)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedConstructorFunctionWithSub.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedConstructorFunctionWithSub.symbols index 472779ff..484d3371 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedConstructorFunctionWithSub.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedConstructorFunctionWithSub.symbols @@ -6,7 +6,7 @@ */ module.exports = function (p) { >module.exports : Symbol(export=, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("jsDeclarationsExportAssignedConstructorFunctionWithSub", Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) >exports : Symbol(export=, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) >p : Symbol(p, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 3, 27)) @@ -15,16 +15,16 @@ module.exports = function (p) { } module.exports.Sub = function() { >module.exports : Symbol(export=, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("jsDeclarationsExportAssignedConstructorFunctionWithSub", Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) >exports : Symbol(export=, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) this.instance = new module.exports(10); >module.exports : Symbol(export=, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("jsDeclarationsExportAssignedConstructorFunctionWithSub", Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) >exports : Symbol(export=, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) } module.exports.Sub.prototype = { } >module.exports : Symbol(export=, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("jsDeclarationsExportAssignedConstructorFunctionWithSub", Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) >exports : Symbol(export=, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedConstructorFunctionWithSub.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedConstructorFunctionWithSub.symbols.diff index c239422c..2d27d981 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedConstructorFunctionWithSub.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedConstructorFunctionWithSub.symbols.diff @@ -7,7 +7,7 @@ ->module.exports : Symbol(module.exports, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) ->module : Symbol(export=, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) +>module.exports : Symbol(export=, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("jsDeclarationsExportAssignedConstructorFunctionWithSub", Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) >exports : Symbol(export=, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) >p : Symbol(p, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 3, 27)) @@ -24,7 +24,7 @@ ->exports : Symbol(module.exports, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) ->Sub : Symbol(Sub, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 5, 1), Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 9, 15)) +>module.exports : Symbol(export=, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("jsDeclarationsExportAssignedConstructorFunctionWithSub", Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) +>exports : Symbol(export=, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) this.instance = new module.exports(10); @@ -35,7 +35,7 @@ ->module : Symbol(module, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0), Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 7, 23)) ->exports : Symbol(module.exports, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) +>module.exports : Symbol(export=, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("jsDeclarationsExportAssignedConstructorFunctionWithSub", Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) +>exports : Symbol(export=, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) } module.exports.Sub.prototype = { } @@ -47,5 +47,5 @@ ->Sub : Symbol(Sub, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 5, 1), Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 9, 15)) ->prototype : Symbol(Sub.prototype, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 8, 1)) +>module.exports : Symbol(export=, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("jsDeclarationsExportAssignedConstructorFunctionWithSub", Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) +>exports : Symbol(export=, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedVisibility.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedVisibility.symbols index 4d591c19..6bc191fa 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedVisibility.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedVisibility.symbols @@ -20,14 +20,14 @@ class Container { module.exports = Container; >module.exports : Symbol(Container, Decl(index.js, 0, 29)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol(Container, Decl(index.js, 0, 29)) >Container : Symbol(Container, Decl(index.js, 0, 29)) === obj.js === module.exports = class Obj { >module.exports : Symbol(Obj, Decl(obj.js, 0, 16)) ->module : Symbol(module.exports) +>module : Symbol("obj", Decl(obj.js, 0, 0)) >exports : Symbol(Obj, Decl(obj.js, 0, 16)) >Obj : Symbol(Obj, Decl(obj.js, 0, 16)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedVisibility.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedVisibility.symbols.diff index b3fc6d29..c7f0077d 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedVisibility.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignedVisibility.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(export=, Decl(index.js, 6, 1)) ->exports : Symbol(export=, Decl(index.js, 6, 1)) +>module.exports : Symbol(Container, Decl(index.js, 0, 29)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol(Container, Decl(index.js, 0, 29)) >Container : Symbol(Container, Decl(index.js, 0, 29)) @@ -18,7 +18,7 @@ ->module : Symbol(export=, Decl(obj.js, 0, 0)) ->exports : Symbol(export=, Decl(obj.js, 0, 0)) +>module.exports : Symbol(Obj, Decl(obj.js, 0, 16)) -+>module : Symbol(module.exports) ++>module : Symbol("obj", Decl(obj.js, 0, 0)) +>exports : Symbol(Obj, Decl(obj.js, 0, 16)) >Obj : Symbol(Obj, Decl(obj.js, 0, 16)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignmentExpressionPlusSecondary.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignmentExpressionPlusSecondary.symbols index b2e68c2f..703c68af 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignmentExpressionPlusSecondary.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignmentExpressionPlusSecondary.symbols @@ -13,7 +13,7 @@ const Strings = { }; module.exports = { >module.exports : Symbol(export=, Decl(index.js, 3, 2)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol(export=, Decl(index.js, 3, 2)) thing: "ok", @@ -31,7 +31,7 @@ module.exports = { }; module.exports.Strings = Strings; >module.exports : Symbol(export=, Decl(index.js, 3, 2)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol(export=, Decl(index.js, 3, 2)) >Strings : Symbol(Strings, Decl(index.js, 0, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignmentExpressionPlusSecondary.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignmentExpressionPlusSecondary.symbols.diff index d625cf32..05d3888a 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignmentExpressionPlusSecondary.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignmentExpressionPlusSecondary.symbols.diff @@ -7,7 +7,7 @@ ->module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) ->module : Symbol(export=, Decl(index.js, 3, 2)) +>module.exports : Symbol(export=, Decl(index.js, 3, 2)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol(export=, Decl(index.js, 3, 2)) thing: "ok", @@ -21,6 +21,6 @@ ->exports : Symbol(module.exports, Decl(index.js, 0, 0)) ->Strings : Symbol(Strings, Decl(index.js, 10, 2)) +>module.exports : Symbol(export=, Decl(index.js, 3, 2)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol(export=, Decl(index.js, 3, 2)) >Strings : Symbol(Strings, Decl(index.js, 0, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignmentWithKeywordName.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignmentWithKeywordName.symbols index cf7d4d17..c8dc74d2 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignmentWithKeywordName.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignmentWithKeywordName.symbols @@ -6,7 +6,7 @@ var x = 12; module.exports = { >module.exports : Symbol(export=, Decl(index.js, 0, 11)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol(export=, Decl(index.js, 0, 11)) extends: 'base', diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignmentWithKeywordName.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignmentWithKeywordName.symbols.diff index 75243703..64fcf8f4 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignmentWithKeywordName.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportAssignmentWithKeywordName.symbols.diff @@ -7,7 +7,7 @@ ->module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) ->module : Symbol(export=, Decl(index.js, 0, 11)) +>module.exports : Symbol(export=, Decl(index.js, 0, 11)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol(export=, Decl(index.js, 0, 11)) extends: 'base', \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportDoubleAssignmentInClosure.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportDoubleAssignmentInClosure.symbols index d03e2da5..30838f72 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportDoubleAssignmentInClosure.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportDoubleAssignmentInClosure.symbols @@ -7,7 +7,7 @@ function foo() { module.exports = exports = function (o) { >module.exports : Symbol(export=, Decl(index.js, 1, 16)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol(export=, Decl(index.js, 1, 16)) >exports : Symbol("index", Decl(index.js, 0, 0)) >o : Symbol(o, Decl(index.js, 2, 41)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportDoubleAssignmentInClosure.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportDoubleAssignmentInClosure.symbols.diff index 10a33482..914bb480 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportDoubleAssignmentInClosure.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportDoubleAssignmentInClosure.symbols.diff @@ -7,7 +7,7 @@ ->module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) ->module : Symbol(export=, Decl(index.js, 1, 16)) +>module.exports : Symbol(export=, Decl(index.js, 1, 16)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol(export=, Decl(index.js, 1, 16)) >exports : Symbol("index", Decl(index.js, 0, 0)) >o : Symbol(o, Decl(index.js, 2, 41)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportForms.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportForms.symbols index d5eac931..3a10825e 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportForms.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportForms.symbols @@ -54,7 +54,7 @@ const ns = require("./cls"); module.exports = { ns }; >module.exports : Symbol(export=, Decl(cjs.js, 0, 28)) ->module : Symbol(module.exports) +>module : Symbol("cjs", Decl(cjs.js, 0, 0)) >exports : Symbol(export=, Decl(cjs.js, 0, 28)) >ns : Symbol(ns, Decl(cjs.js, 1, 18)) @@ -66,7 +66,7 @@ const ns = require("./cls"); module.exports = ns; >module.exports : Symbol(ns, Decl(cls.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("cjs2", Decl(cjs2.js, 0, 0)) >exports : Symbol(ns, Decl(cls.js, 0, 0)) >ns : Symbol(ns, Decl(cjs2.js, 0, 5)) @@ -79,7 +79,7 @@ const ns = require("./cls"); module.exports.ns = ns; >module.exports.ns : Symbol(ns, Decl(cjs3.js, 0, 28)) >module.exports : Symbol("cjs3", Decl(cjs3.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("cjs3", Decl(cjs3.js, 0, 0)) >exports : Symbol("cjs3", Decl(cjs3.js, 0, 0)) >ns : Symbol(ns, Decl(cjs3.js, 0, 28)) >ns : Symbol(ns, Decl(cjs3.js, 0, 5)) @@ -93,7 +93,7 @@ const ns = require("./cls"); module.exports.names = ns; >module.exports.names : Symbol(names, Decl(cjs4.js, 0, 28)) >module.exports : Symbol("cjs4", Decl(cjs4.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("cjs4", Decl(cjs4.js, 0, 0)) >exports : Symbol("cjs4", Decl(cjs4.js, 0, 0)) >names : Symbol(names, Decl(cjs4.js, 0, 28)) >ns : Symbol(ns, Decl(cjs4.js, 0, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportForms.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportForms.symbols.diff index 164e13b0..66f71e7a 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportForms.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportForms.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(module, Decl(cjs.js, 0, 28)) ->exports : Symbol(module.exports, Decl(cjs.js, 0, 0)) +>module.exports : Symbol(export=, Decl(cjs.js, 0, 28)) -+>module : Symbol(module.exports) ++>module : Symbol("cjs", Decl(cjs.js, 0, 0)) +>exports : Symbol(export=, Decl(cjs.js, 0, 28)) >ns : Symbol(ns, Decl(cjs.js, 1, 18)) @@ -21,7 +21,7 @@ ->module : Symbol(export=, Decl(cjs2.js, 0, 28)) ->exports : Symbol(export=, Decl(cjs2.js, 0, 28)) +>module.exports : Symbol(ns, Decl(cls.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("cjs2", Decl(cjs2.js, 0, 0)) +>exports : Symbol(ns, Decl(cls.js, 0, 0)) >ns : Symbol(ns, Decl(cjs2.js, 0, 5)) @@ -34,7 +34,7 @@ ->module : Symbol(module, Decl(cjs3.js, 0, 28)) ->exports : Symbol(module.exports, Decl(cjs3.js, 0, 0)) +>module.exports : Symbol("cjs3", Decl(cjs3.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("cjs3", Decl(cjs3.js, 0, 0)) +>exports : Symbol("cjs3", Decl(cjs3.js, 0, 0)) >ns : Symbol(ns, Decl(cjs3.js, 0, 28)) >ns : Symbol(ns, Decl(cjs3.js, 0, 5)) @@ -47,7 +47,7 @@ ->module : Symbol(module, Decl(cjs4.js, 0, 28)) ->exports : Symbol(module.exports, Decl(cjs4.js, 0, 0)) +>module.exports : Symbol("cjs4", Decl(cjs4.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("cjs4", Decl(cjs4.js, 0, 0)) +>exports : Symbol("cjs4", Decl(cjs4.js, 0, 0)) >names : Symbol(names, Decl(cjs4.js, 0, 28)) >ns : Symbol(ns, Decl(cjs4.js, 0, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportFormsErr.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportFormsErr.symbols index 7e60646d..408c587b 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportFormsErr.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportFormsErr.symbols @@ -17,7 +17,7 @@ import * as ns from "./cls"; module.exports = ns; // We refuse to bind cjs module exports assignments in the same file we find an import in >module.exports : Symbol(ns, Decl(cls.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("bin", Decl(bin.js, 0, 0)) >exports : Symbol(ns, Decl(cls.js, 0, 0)) >ns : Symbol(ns, Decl(bin.js, 0, 6)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportFormsErr.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportFormsErr.symbols.diff index 581f4189..8b6ac12a 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportFormsErr.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportFormsErr.symbols.diff @@ -5,7 +5,7 @@ module.exports = ns; // We refuse to bind cjs module exports assignments in the same file we find an import in +>module.exports : Symbol(ns, Decl(cls.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("bin", Decl(bin.js, 0, 0)) +>exports : Symbol(ns, Decl(cls.js, 0, 0)) >ns : Symbol(ns, Decl(bin.js, 0, 6)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportSubAssignments.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportSubAssignments.symbols index b68cc7ca..bdeba80b 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportSubAssignments.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportSubAssignments.symbols @@ -16,13 +16,13 @@ class Foo {} module.exports = Foo; >module.exports : Symbol(Foo, Decl(cls.js, 3, 2)) ->module : Symbol(module.exports) +>module : Symbol("cls", Decl(cls.js, 0, 0)) >exports : Symbol(Foo, Decl(cls.js, 3, 2)) >Foo : Symbol(Foo, Decl(cls.js, 3, 2)) module.exports.Strings = Strings; >module.exports : Symbol(Foo, Decl(cls.js, 3, 2)) ->module : Symbol(module.exports) +>module : Symbol("cls", Decl(cls.js, 0, 0)) >exports : Symbol(Foo, Decl(cls.js, 3, 2)) >Strings : Symbol(Strings, Decl(cls.js, 0, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportSubAssignments.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportSubAssignments.symbols.diff index fbda01c9..334c7a55 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportSubAssignments.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportSubAssignments.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(export=, Decl(cls.js, 4, 12)) ->exports : Symbol(export=, Decl(cls.js, 4, 12)) +>module.exports : Symbol(Foo, Decl(cls.js, 3, 2)) -+>module : Symbol(module.exports) ++>module : Symbol("cls", Decl(cls.js, 0, 0)) +>exports : Symbol(Foo, Decl(cls.js, 3, 2)) >Foo : Symbol(Foo, Decl(cls.js, 3, 2)) @@ -19,6 +19,6 @@ ->exports : Symbol(module.exports, Decl(cls.js, 0, 0)) ->Strings : Symbol(Strings, Decl(cls.js, 5, 21)) +>module.exports : Symbol(Foo, Decl(cls.js, 3, 2)) -+>module : Symbol(module.exports) ++>module : Symbol("cls", Decl(cls.js, 0, 0)) +>exports : Symbol(Foo, Decl(cls.js, 3, 2)) >Strings : Symbol(Strings, Decl(cls.js, 0, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportedClassAliases.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportedClassAliases.symbols index 6a590464..79d3b629 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportedClassAliases.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportedClassAliases.symbols @@ -9,7 +9,7 @@ const errors = require("./errors"); module.exports = { >module.exports : Symbol(export=, Decl(index.js, 1, 35)) ->module : Symbol(module.exports) +>module : Symbol("utils/index", Decl(index.js, 0, 0)) >exports : Symbol(export=, Decl(index.js, 1, 35)) errors @@ -32,7 +32,7 @@ class FancyError extends Error { module.exports = { >module.exports : Symbol(export=, Decl(errors.js, 4, 1)) ->module : Symbol(module.exports) +>module : Symbol("utils/errors", Decl(errors.js, 0, 0)) >exports : Symbol(export=, Decl(errors.js, 4, 1)) FancyError diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportedClassAliases.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportedClassAliases.symbols.diff index 84b38aaf..c2d51101 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportedClassAliases.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsExportedClassAliases.symbols.diff @@ -12,7 +12,7 @@ ->module : Symbol(module, Decl(index.js, 1, 35)) ->exports : Symbol(module.exports, Decl(index.js, 0, 0)) +>module.exports : Symbol(export=, Decl(index.js, 1, 35)) -+>module : Symbol(module.exports) ++>module : Symbol("utils/index", Decl(index.js, 0, 0)) +>exports : Symbol(export=, Decl(index.js, 1, 35)) errors @@ -25,7 +25,7 @@ ->module : Symbol(module, Decl(errors.js, 4, 1)) ->exports : Symbol(module.exports, Decl(errors.js, 0, 0)) +>module.exports : Symbol(export=, Decl(errors.js, 4, 1)) -+>module : Symbol(module.exports) ++>module : Symbol("utils/errors", Decl(errors.js, 0, 0)) +>exports : Symbol(export=, Decl(errors.js, 4, 1)) FancyError diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionClassesCjsExportAssignment.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionClassesCjsExportAssignment.symbols index d4b1fa71..e1387686 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionClassesCjsExportAssignment.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionClassesCjsExportAssignment.symbols @@ -13,7 +13,7 @@ function Timer(timeout) { } module.exports = Timer; >module.exports : Symbol(Timer, Decl(timer.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("timer", Decl(timer.js, 0, 0)) >exports : Symbol(Timer, Decl(timer.js, 0, 0)) >Timer : Symbol(Timer, Decl(timer.js, 0, 0)) @@ -33,7 +33,7 @@ function Hook(handle) { } module.exports = Hook; >module.exports : Symbol(Hook, Decl(hook.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("hook", Decl(hook.js, 0, 0)) >exports : Symbol(Hook, Decl(hook.js, 0, 0)) >Hook : Symbol(Hook, Decl(hook.js, 0, 0)) @@ -104,7 +104,7 @@ Context.prototype = { } module.exports = Context; >module.exports : Symbol(Context, Decl(context.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("context", Decl(context.js, 0, 0)) >exports : Symbol(Context, Decl(context.js, 0, 0)) >Context : Symbol(Context, Decl(context.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionClassesCjsExportAssignment.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionClassesCjsExportAssignment.symbols.diff index ea488bc1..9866e56b 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionClassesCjsExportAssignment.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionClassesCjsExportAssignment.symbols.diff @@ -14,7 +14,7 @@ ->module : Symbol(export=, Decl(timer.js, 5, 1)) ->exports : Symbol(export=, Decl(timer.js, 5, 1)) +>module.exports : Symbol(Timer, Decl(timer.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("timer", Decl(timer.js, 0, 0)) +>exports : Symbol(Timer, Decl(timer.js, 0, 0)) >Timer : Symbol(Timer, Decl(timer.js, 0, 0)) @@ -33,7 +33,7 @@ ->module : Symbol(export=, Decl(hook.js, 8, 1)) ->exports : Symbol(export=, Decl(hook.js, 8, 1)) +>module.exports : Symbol(Hook, Decl(hook.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("hook", Decl(hook.js, 0, 0)) +>exports : Symbol(Hook, Decl(hook.js, 0, 0)) >Hook : Symbol(Hook, Decl(hook.js, 0, 0)) @@ -79,6 +79,6 @@ ->exports : Symbol(export=, Decl(context.js, 46, 1)) ->Context : Symbol(Context, Decl(context.js, 0, 0), Decl(context.js, 36, 1)) +>module.exports : Symbol(Context, Decl(context.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("context", Decl(context.js, 0, 0)) +>exports : Symbol(Context, Decl(context.js, 0, 0)) +>Context : Symbol(Context, Decl(context.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionPrototypeStatic.js b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionPrototypeStatic.js index 7a232608..85050d43 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionPrototypeStatic.js +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionPrototypeStatic.js @@ -38,7 +38,7 @@ declare namespace MyClass { declare namespace MyClass { var staticProperty: number; } -export type DoneCB = (failures: number) ; +export type DoneCB = (failures: number) => any; /** * Callback to be invoked when test execution is complete. * diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionPrototypeStatic.js.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionPrototypeStatic.js.diff index 5c6c9bb9..3a136c55 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionPrototypeStatic.js.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionPrototypeStatic.js.diff @@ -18,7 +18,7 @@ +declare namespace MyClass { + var staticProperty: number; +} -+export type DoneCB = (failures: number) ; ++export type DoneCB = (failures: number) => any; /** * Callback to be invoked when test execution is complete. - */ diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionPrototypeStatic.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionPrototypeStatic.symbols index a83e3411..bc63fed8 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionPrototypeStatic.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionPrototypeStatic.symbols @@ -3,7 +3,7 @@ === source.js === module.exports = MyClass; >module.exports : Symbol(MyClass, Decl(source.js, 0, 25)) ->module : Symbol(module.exports) +>module : Symbol("source", Decl(source.js, 0, 0)) >exports : Symbol(MyClass, Decl(source.js, 0, 25)) >MyClass : Symbol(MyClass, Decl(source.js, 0, 25)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionPrototypeStatic.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionPrototypeStatic.symbols.diff index 08d2c533..2a5caecb 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionPrototypeStatic.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionPrototypeStatic.symbols.diff @@ -9,7 +9,7 @@ ->exports : Symbol(export=, Decl(source.js, 0, 0)) ->MyClass : Symbol(MyClass, Decl(source.js, 0, 25), Decl(source.js, 2, 21), Decl(source.js, 4, 40)) +>module.exports : Symbol(MyClass, Decl(source.js, 0, 25)) -+>module : Symbol(module.exports) ++>module : Symbol("source", Decl(source.js, 0, 0)) +>exports : Symbol(MyClass, Decl(source.js, 0, 25)) +>MyClass : Symbol(MyClass, Decl(source.js, 0, 25)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionWithDefaultAssignedMember.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionWithDefaultAssignedMember.symbols index ca4a39d0..dafbaf25 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionWithDefaultAssignedMember.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionWithDefaultAssignedMember.symbols @@ -18,7 +18,7 @@ foo.default = foo; module.exports = foo; >module.exports : Symbol(foo, Decl(index.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol(foo, Decl(index.js, 0, 0)) >foo : Symbol(foo, Decl(index.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionWithDefaultAssignedMember.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionWithDefaultAssignedMember.symbols.diff index 4a464ae1..ad6d5d1e 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionWithDefaultAssignedMember.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionWithDefaultAssignedMember.symbols.diff @@ -29,6 +29,6 @@ ->exports : Symbol(export=, Decl(index.js, 3, 18)) ->foo : Symbol(foo, Decl(index.js, 0, 0), Decl(index.js, 0, 17), Decl(index.js, 2, 14)) +>module.exports : Symbol(foo, Decl(index.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol(foo, Decl(index.js, 0, 0)) +>foo : Symbol(foo, Decl(index.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionsCjs.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionsCjs.symbols index d198a27a..745896e0 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionsCjs.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionsCjs.symbols @@ -4,7 +4,7 @@ module.exports.a = function a() {} >module.exports.a : Symbol(a, Decl(index.js, 0, 0)) >module.exports : Symbol("index", Decl(index.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol("index", Decl(index.js, 0, 0)) >a : Symbol(a, Decl(index.js, 0, 0)) >a : Symbol(a, Decl(index.js, 0, 18)) @@ -12,7 +12,7 @@ module.exports.a = function a() {} module.exports.b = function b() {} >module.exports.b : Symbol(b, Decl(index.js, 0, 34)) >module.exports : Symbol("index", Decl(index.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol("index", Decl(index.js, 0, 0)) >b : Symbol(b, Decl(index.js, 0, 34)) >b : Symbol(b, Decl(index.js, 2, 18)) @@ -20,14 +20,14 @@ module.exports.b = function b() {} module.exports.b.cat = "cat"; >module.exports.b : Symbol(b, Decl(index.js, 0, 34)) >module.exports : Symbol("index", Decl(index.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol("index", Decl(index.js, 0, 0)) >b : Symbol(b, Decl(index.js, 0, 34)) module.exports.c = function c() {} >module.exports.c : Symbol(c, Decl(index.js, 3, 29)) >module.exports : Symbol("index", Decl(index.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol("index", Decl(index.js, 0, 0)) >c : Symbol(c, Decl(index.js, 3, 29)) >c : Symbol(c, Decl(index.js, 5, 18)) @@ -35,7 +35,7 @@ module.exports.c = function c() {} module.exports.c.Cls = class {} >module.exports.c : Symbol(c, Decl(index.js, 3, 29)) >module.exports : Symbol("index", Decl(index.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol("index", Decl(index.js, 0, 0)) >c : Symbol(c, Decl(index.js, 3, 29)) @@ -47,7 +47,7 @@ module.exports.c.Cls = class {} module.exports.d = function d(a, b) { return /** @type {*} */(null); } >module.exports.d : Symbol(d, Decl(index.js, 6, 31)) >module.exports : Symbol("index", Decl(index.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol("index", Decl(index.js, 0, 0)) >d : Symbol(d, Decl(index.js, 6, 31)) >d : Symbol(d, Decl(index.js, 13, 18)) @@ -63,7 +63,7 @@ module.exports.d = function d(a, b) { return /** @type {*} */(null); } module.exports.e = function e(a, b) { return /** @type {*} */(null); } >module.exports.e : Symbol(e, Decl(index.js, 13, 70)) >module.exports : Symbol("index", Decl(index.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol("index", Decl(index.js, 0, 0)) >e : Symbol(e, Decl(index.js, 13, 70)) >e : Symbol(e, Decl(index.js, 21, 18)) @@ -77,7 +77,7 @@ module.exports.e = function e(a, b) { return /** @type {*} */(null); } module.exports.f = function f(a) { >module.exports.f : Symbol(f, Decl(index.js, 21, 70)) >module.exports : Symbol("index", Decl(index.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol("index", Decl(index.js, 0, 0)) >f : Symbol(f, Decl(index.js, 21, 70)) >f : Symbol(f, Decl(index.js, 27, 18)) @@ -89,12 +89,12 @@ module.exports.f = function f(a) { module.exports.f.self = module.exports.f; >module.exports.f : Symbol(f, Decl(index.js, 21, 70)) >module.exports : Symbol("index", Decl(index.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol("index", Decl(index.js, 0, 0)) >f : Symbol(f, Decl(index.js, 21, 70)) >module.exports.f : Symbol(f, Decl(index.js, 21, 70)) >module.exports : Symbol("index", Decl(index.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol("index", Decl(index.js, 0, 0)) >f : Symbol(f, Decl(index.js, 21, 70)) @@ -119,7 +119,7 @@ function g(a, b) { module.exports.g = g; >module.exports.g : Symbol(g, Decl(index.js, 38, 1)) >module.exports : Symbol("index", Decl(index.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol("index", Decl(index.js, 0, 0)) >g : Symbol(g, Decl(index.js, 38, 1)) >g : Symbol(g, Decl(index.js, 30, 41)) @@ -145,7 +145,7 @@ function hh(a, b) { module.exports.h = hh; >module.exports.h : Symbol(h, Decl(index.js, 48, 1)) >module.exports : Symbol("index", Decl(index.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol("index", Decl(index.js, 0, 0)) >h : Symbol(h, Decl(index.js, 48, 1)) >hh : Symbol(hh, Decl(index.js, 40, 21)) @@ -153,7 +153,7 @@ module.exports.h = hh; module.exports.i = function i() {} >module.exports.i : Symbol(i, Decl(index.js, 50, 22)) >module.exports : Symbol("index", Decl(index.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol("index", Decl(index.js, 0, 0)) >i : Symbol(i, Decl(index.js, 50, 22)) >i : Symbol(i, Decl(index.js, 52, 18)) @@ -161,12 +161,12 @@ module.exports.i = function i() {} module.exports.ii = module.exports.i; >module.exports.ii : Symbol(ii, Decl(index.js, 52, 34)) >module.exports : Symbol("index", Decl(index.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol("index", Decl(index.js, 0, 0)) >ii : Symbol(ii, Decl(index.js, 52, 34)) >module.exports.i : Symbol(i, Decl(index.js, 50, 22)) >module.exports : Symbol("index", Decl(index.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol("index", Decl(index.js, 0, 0)) >i : Symbol(i, Decl(index.js, 50, 22)) @@ -174,19 +174,19 @@ module.exports.ii = module.exports.i; module.exports.jj = module.exports.j; >module.exports.jj : Symbol(jj, Decl(index.js, 53, 37)) >module.exports : Symbol("index", Decl(index.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol("index", Decl(index.js, 0, 0)) >jj : Symbol(jj, Decl(index.js, 53, 37)) >module.exports.j : Symbol(j, Decl(index.js, 56, 37)) >module.exports : Symbol("index", Decl(index.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol("index", Decl(index.js, 0, 0)) >j : Symbol(j, Decl(index.js, 56, 37)) module.exports.j = function j() {} >module.exports.j : Symbol(j, Decl(index.js, 56, 37)) >module.exports : Symbol("index", Decl(index.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol("index", Decl(index.js, 0, 0)) >j : Symbol(j, Decl(index.js, 56, 37)) >j : Symbol(j, Decl(index.js, 57, 18)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionsCjs.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionsCjs.symbols.diff index 004154e4..a3a8c570 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionsCjs.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsFunctionsCjs.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol(module.exports, Decl(index.js, 0, 0)) +>module.exports : Symbol("index", Decl(index.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol("index", Decl(index.js, 0, 0)) >a : Symbol(a, Decl(index.js, 0, 0)) >a : Symbol(a, Decl(index.js, 0, 18)) @@ -21,7 +21,7 @@ ->b : Symbol(b, Decl(index.js, 0, 34), Decl(index.js, 3, 15)) +>module.exports.b : Symbol(b, Decl(index.js, 0, 34)) +>module.exports : Symbol("index", Decl(index.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol("index", Decl(index.js, 0, 0)) +>b : Symbol(b, Decl(index.js, 0, 34)) >b : Symbol(b, Decl(index.js, 2, 18)) @@ -36,7 +36,7 @@ ->cat : Symbol(b.cat, Decl(index.js, 2, 34)) +>module.exports.b : Symbol(b, Decl(index.js, 0, 34)) +>module.exports : Symbol("index", Decl(index.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol("index", Decl(index.js, 0, 0)) +>b : Symbol(b, Decl(index.js, 0, 34)) @@ -48,7 +48,7 @@ ->c : Symbol(c, Decl(index.js, 3, 29), Decl(index.js, 6, 15)) +>module.exports.c : Symbol(c, Decl(index.js, 3, 29)) +>module.exports : Symbol("index", Decl(index.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol("index", Decl(index.js, 0, 0)) +>c : Symbol(c, Decl(index.js, 3, 29)) >c : Symbol(c, Decl(index.js, 5, 18)) @@ -63,7 +63,7 @@ ->Cls : Symbol(c.Cls, Decl(index.js, 5, 34)) +>module.exports.c : Symbol(c, Decl(index.js, 3, 29)) +>module.exports : Symbol("index", Decl(index.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol("index", Decl(index.js, 0, 0)) +>c : Symbol(c, Decl(index.js, 3, 29)) @@ -77,7 +77,7 @@ ->module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol(module.exports, Decl(index.js, 0, 0)) +>module.exports : Symbol("index", Decl(index.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol("index", Decl(index.js, 0, 0)) >d : Symbol(d, Decl(index.js, 6, 31)) >d : Symbol(d, Decl(index.js, 13, 18)) @@ -90,7 +90,7 @@ ->module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol(module.exports, Decl(index.js, 0, 0)) +>module.exports : Symbol("index", Decl(index.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol("index", Decl(index.js, 0, 0)) >e : Symbol(e, Decl(index.js, 13, 70)) >e : Symbol(e, Decl(index.js, 21, 18)) @@ -106,7 +106,7 @@ ->f : Symbol(f, Decl(index.js, 21, 70), Decl(index.js, 30, 15)) +>module.exports.f : Symbol(f, Decl(index.js, 21, 70)) +>module.exports : Symbol("index", Decl(index.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol("index", Decl(index.js, 0, 0)) +>f : Symbol(f, Decl(index.js, 21, 70)) >f : Symbol(f, Decl(index.js, 27, 18)) @@ -130,12 +130,12 @@ ->f : Symbol(f, Decl(index.js, 21, 70), Decl(index.js, 30, 15)) +>module.exports.f : Symbol(f, Decl(index.js, 21, 70)) +>module.exports : Symbol("index", Decl(index.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol("index", Decl(index.js, 0, 0)) +>f : Symbol(f, Decl(index.js, 21, 70)) +>module.exports.f : Symbol(f, Decl(index.js, 21, 70)) +>module.exports : Symbol("index", Decl(index.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol("index", Decl(index.js, 0, 0)) +>f : Symbol(f, Decl(index.js, 21, 70)) @@ -149,7 +149,7 @@ ->module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol(module.exports, Decl(index.js, 0, 0)) +>module.exports : Symbol("index", Decl(index.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol("index", Decl(index.js, 0, 0)) >g : Symbol(g, Decl(index.js, 38, 1)) >g : Symbol(g, Decl(index.js, 30, 41)) @@ -162,7 +162,7 @@ ->module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol(module.exports, Decl(index.js, 0, 0)) +>module.exports : Symbol("index", Decl(index.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol("index", Decl(index.js, 0, 0)) >h : Symbol(h, Decl(index.js, 48, 1)) >hh : Symbol(hh, Decl(index.js, 40, 21)) @@ -173,7 +173,7 @@ ->module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol(module.exports, Decl(index.js, 0, 0)) +>module.exports : Symbol("index", Decl(index.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol("index", Decl(index.js, 0, 0)) >i : Symbol(i, Decl(index.js, 50, 22)) >i : Symbol(i, Decl(index.js, 52, 18)) @@ -184,7 +184,7 @@ ->module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol(module.exports, Decl(index.js, 0, 0)) +>module.exports : Symbol("index", Decl(index.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol("index", Decl(index.js, 0, 0)) >ii : Symbol(ii, Decl(index.js, 52, 34)) >module.exports.i : Symbol(i, Decl(index.js, 50, 22)) @@ -192,7 +192,7 @@ ->module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol(module.exports, Decl(index.js, 0, 0)) +>module.exports : Symbol("index", Decl(index.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol("index", Decl(index.js, 0, 0)) >i : Symbol(i, Decl(index.js, 50, 22)) @@ -203,7 +203,7 @@ ->module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol(module.exports, Decl(index.js, 0, 0)) +>module.exports : Symbol("index", Decl(index.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol("index", Decl(index.js, 0, 0)) >jj : Symbol(jj, Decl(index.js, 53, 37)) >module.exports.j : Symbol(j, Decl(index.js, 56, 37)) @@ -211,7 +211,7 @@ ->module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol(module.exports, Decl(index.js, 0, 0)) +>module.exports : Symbol("index", Decl(index.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol("index", Decl(index.js, 0, 0)) >j : Symbol(j, Decl(index.js, 56, 37)) @@ -221,7 +221,7 @@ ->module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol(module.exports, Decl(index.js, 0, 0)) +>module.exports : Symbol("index", Decl(index.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol("index", Decl(index.js, 0, 0)) >j : Symbol(j, Decl(index.js, 56, 37)) >j : Symbol(j, Decl(index.js, 57, 18)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsImportAliasExposedWithinNamespaceCjs.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsImportAliasExposedWithinNamespaceCjs.symbols index 3882b916..3ef76c97 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsImportAliasExposedWithinNamespaceCjs.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsImportAliasExposedWithinNamespaceCjs.symbols @@ -42,7 +42,7 @@ function testFn(input) { module.exports = {testFn, testFnTypes}; >module.exports : Symbol(export=, Decl(file2.js, 25, 1)) ->module : Symbol(module.exports) +>module : Symbol("file2", Decl(file2.js, 0, 0)) >exports : Symbol(export=, Decl(file2.js, 25, 1)) >testFn : Symbol(testFn, Decl(file2.js, 27, 18)) >testFnTypes : Symbol(testFnTypes, Decl(file2.js, 27, 25)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsImportAliasExposedWithinNamespaceCjs.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsImportAliasExposedWithinNamespaceCjs.symbols.diff index a6952ae1..e1914d5a 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsImportAliasExposedWithinNamespaceCjs.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsImportAliasExposedWithinNamespaceCjs.symbols.diff @@ -17,7 +17,7 @@ ->module : Symbol(module, Decl(file2.js, 25, 1)) ->exports : Symbol(module.exports, Decl(file2.js, 0, 0)) +>module.exports : Symbol(export=, Decl(file2.js, 25, 1)) -+>module : Symbol(module.exports) ++>module : Symbol("file2", Decl(file2.js, 0, 0)) +>exports : Symbol(export=, Decl(file2.js, 25, 1)) >testFn : Symbol(testFn, Decl(file2.js, 27, 18)) >testFnTypes : Symbol(testFnTypes, Decl(file2.js, 27, 25)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsJson.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsJson.symbols index f61b44a2..e5c09671 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsJson.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsJson.symbols @@ -8,7 +8,7 @@ const j = require("./obj.json"); module.exports = j; >module.exports : Symbol(j, Decl(obj.json, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol(j, Decl(obj.json, 0, 0)) >j : Symbol(j, Decl(index.js, 0, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsJson.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsJson.symbols.diff index 871b8e8f..b038d039 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsJson.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsJson.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(export=, Decl(index.js, 0, 32)) ->exports : Symbol(export=, Decl(index.js, 0, 32)) +>module.exports : Symbol(j, Decl(obj.json, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol(j, Decl(obj.json, 0, 0)) >j : Symbol(j, Decl(index.js, 0, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsPackageJson.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsPackageJson.symbols index 0feb4955..8352dff9 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsPackageJson.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsPackageJson.symbols @@ -8,7 +8,7 @@ const j = require("./package.json"); module.exports = j; >module.exports : Symbol(j, Decl(package.json, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol(j, Decl(package.json, 0, 0)) >j : Symbol(j, Decl(index.js, 0, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsPackageJson.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsPackageJson.symbols.diff index 420f3354..85e0f208 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsPackageJson.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsPackageJson.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(export=, Decl(index.js, 0, 36)) ->exports : Symbol(export=, Decl(index.js, 0, 36)) +>module.exports : Symbol(j, Decl(package.json, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol(j, Decl(package.json, 0, 0)) >j : Symbol(j, Decl(index.js, 0, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit1.js b/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit1.js index bd3ba262..b3890fb6 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit1.js +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit1.js @@ -70,7 +70,7 @@ declare namespace BaseFactory { export = BaseFactory; //// [file.d.ts] type BaseFactory = import('./base'); -type BaseFactoryFactory = (factory: import('./base')) ; +type BaseFactoryFactory = (factory: import('./base')) => any; /** @typedef {import('./base')} BaseFactory */ /** * @callback BaseFactoryFactory diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit1.js.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit1.js.diff index d941bf0e..e0eafe81 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit1.js.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit1.js.diff @@ -25,7 +25,7 @@ - }; -}; +type BaseFactory = import('./base'); -+type BaseFactoryFactory = (factory: import('./base')) ; ++type BaseFactoryFactory = (factory: import('./base')) => any; /** @typedef {import('./base')} BaseFactory */ /** * @callback BaseFactoryFactory diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit1.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit1.symbols index 1dbddaa4..7a2623dd 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit1.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit1.symbols @@ -23,7 +23,7 @@ BaseFactory.Base = Base; module.exports = BaseFactory; >module.exports : Symbol(BaseFactory, Decl(base.js, 4, 5)) ->module : Symbol(module.exports) +>module : Symbol("base", Decl(base.js, 0, 0)) >exports : Symbol(BaseFactory, Decl(base.js, 4, 5)) >BaseFactory : Symbol(BaseFactory, Decl(base.js, 4, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit1.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit1.symbols.diff index 2174131d..f7df814f 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit1.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit1.symbols.diff @@ -24,7 +24,7 @@ ->exports : Symbol(export=, Decl(base.js, 8, 24)) ->BaseFactory : Symbol(BaseFactory, Decl(base.js, 4, 5), Decl(base.js, 6, 2)) +>module.exports : Symbol(BaseFactory, Decl(base.js, 4, 5)) -+>module : Symbol(module.exports) ++>module : Symbol("base", Decl(base.js, 0, 0)) +>exports : Symbol(BaseFactory, Decl(base.js, 4, 5)) +>BaseFactory : Symbol(BaseFactory, Decl(base.js, 4, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit2.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit2.symbols index 79831388..c093e5f3 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit2.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit2.symbols @@ -23,7 +23,7 @@ BaseFactory.Base = Base; module.exports = BaseFactory; >module.exports : Symbol(BaseFactory, Decl(base.js, 4, 5)) ->module : Symbol(module.exports) +>module : Symbol("base", Decl(base.js, 0, 0)) >exports : Symbol(BaseFactory, Decl(base.js, 4, 5)) >BaseFactory : Symbol(BaseFactory, Decl(base.js, 4, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit2.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit2.symbols.diff index 305dbe6e..1bc0d9d5 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit2.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsParameterTagReusesInputNodeInEmit2.symbols.diff @@ -24,7 +24,7 @@ ->exports : Symbol(export=, Decl(base.js, 8, 24)) ->BaseFactory : Symbol(BaseFactory, Decl(base.js, 4, 5), Decl(base.js, 6, 2)) +>module.exports : Symbol(BaseFactory, Decl(base.js, 4, 5)) -+>module : Symbol(module.exports) ++>module : Symbol("base", Decl(base.js, 0, 0)) +>exports : Symbol(BaseFactory, Decl(base.js, 4, 5)) +>BaseFactory : Symbol(BaseFactory, Decl(base.js, 4, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsReexportAliasesEsModuleInterop.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsReexportAliasesEsModuleInterop.symbols index 87ad80b3..c4c03f4b 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsReexportAliasesEsModuleInterop.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsReexportAliasesEsModuleInterop.symbols @@ -6,7 +6,7 @@ class Foo {} module.exports = Foo; >module.exports : Symbol(Foo, Decl(cls.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("cls", Decl(cls.js, 0, 0)) >exports : Symbol(Foo, Decl(cls.js, 0, 0)) >Foo : Symbol(Foo, Decl(cls.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsReexportAliasesEsModuleInterop.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsReexportAliasesEsModuleInterop.symbols.diff index 99b02488..55c08336 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsReexportAliasesEsModuleInterop.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsReexportAliasesEsModuleInterop.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(export=, Decl(cls.js, 0, 12)) ->exports : Symbol(export=, Decl(cls.js, 0, 12)) +>module.exports : Symbol(Foo, Decl(cls.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("cls", Decl(cls.js, 0, 0)) +>exports : Symbol(Foo, Decl(cls.js, 0, 0)) >Foo : Symbol(Foo, Decl(cls.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsReexportedCjsAlias.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsReexportedCjsAlias.symbols index 51325465..92c2c8d8 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsReexportedCjsAlias.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsReexportedCjsAlias.symbols @@ -10,7 +10,7 @@ const { SomeClass, SomeClass: Another } = require('./lib'); module.exports = { >module.exports : Symbol(export=, Decl(main.js, 0, 59)) ->module : Symbol(module.exports) +>module : Symbol("main", Decl(main.js, 0, 0)) >exports : Symbol(export=, Decl(main.js, 0, 59)) SomeClass, @@ -44,7 +44,7 @@ class SomeClass { module.exports = { >module.exports : Symbol(export=, Decl(lib.js, 11, 1)) ->module : Symbol(module.exports) +>module : Symbol("lib", Decl(lib.js, 0, 0)) >exports : Symbol(export=, Decl(lib.js, 11, 1)) bar, diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsReexportedCjsAlias.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsReexportedCjsAlias.symbols.diff index 36e6c88b..26bcc3f4 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsReexportedCjsAlias.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsReexportedCjsAlias.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(module, Decl(main.js, 0, 59)) ->exports : Symbol(module.exports, Decl(main.js, 0, 0)) +>module.exports : Symbol(export=, Decl(main.js, 0, 59)) -+>module : Symbol(module.exports) ++>module : Symbol("main", Decl(main.js, 0, 0)) +>exports : Symbol(export=, Decl(main.js, 0, 59)) SomeClass, @@ -21,7 +21,7 @@ ->module : Symbol(module, Decl(lib.js, 11, 1)) ->exports : Symbol(module.exports, Decl(lib.js, 0, 0)) +>module.exports : Symbol(export=, Decl(lib.js, 11, 1)) -+>module : Symbol(module.exports) ++>module : Symbol("lib", Decl(lib.js, 0, 0)) +>exports : Symbol(export=, Decl(lib.js, 11, 1)) bar, diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsReferenceToClassInstanceCrossFile.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsReferenceToClassInstanceCrossFile.symbols index 45beb475..a1403a6d 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsReferenceToClassInstanceCrossFile.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsReferenceToClassInstanceCrossFile.symbols @@ -37,7 +37,7 @@ class Rectangle { module.exports = { Rectangle }; >module.exports : Symbol(export=, Decl(rectangle.js, 4, 1)) ->module : Symbol(module.exports) +>module : Symbol("rectangle", Decl(rectangle.js, 0, 0)) >exports : Symbol(export=, Decl(rectangle.js, 4, 1)) >Rectangle : Symbol(Rectangle, Decl(rectangle.js, 6, 18)) @@ -87,7 +87,7 @@ class Render { module.exports = { Render }; >module.exports : Symbol(export=, Decl(index.js, 20, 1)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol(export=, Decl(index.js, 20, 1)) >Render : Symbol(Render, Decl(index.js, 22, 18)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsReferenceToClassInstanceCrossFile.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsReferenceToClassInstanceCrossFile.symbols.diff index 37af4865..684b2877 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsReferenceToClassInstanceCrossFile.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsReferenceToClassInstanceCrossFile.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(module, Decl(rectangle.js, 4, 1)) ->exports : Symbol(module.exports, Decl(rectangle.js, 0, 0)) +>module.exports : Symbol(export=, Decl(rectangle.js, 4, 1)) -+>module : Symbol(module.exports) ++>module : Symbol("rectangle", Decl(rectangle.js, 0, 0)) +>exports : Symbol(export=, Decl(rectangle.js, 4, 1)) >Rectangle : Symbol(Rectangle, Decl(rectangle.js, 6, 18)) @@ -21,6 +21,6 @@ ->module : Symbol(module, Decl(index.js, 20, 1)) ->exports : Symbol(module.exports, Decl(index.js, 0, 0)) +>module.exports : Symbol(export=, Decl(index.js, 20, 1)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol(export=, Decl(index.js, 20, 1)) >Render : Symbol(Render, Decl(index.js, 22, 18)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeAliases.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeAliases.symbols index 5e371564..21a03729 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeAliases.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeAliases.symbols @@ -53,7 +53,7 @@ class ExportedThing { } module.exports = { >module.exports : Symbol(export=, Decl(mixed.js, 12, 1)) ->module : Symbol(module.exports) +>module : Symbol("mixed", Decl(mixed.js, 0, 0)) >exports : Symbol(export=, Decl(mixed.js, 12, 1)) doTheThing, diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeAliases.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeAliases.symbols.diff index 4af0959a..761fe3a6 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeAliases.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeAliases.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(module, Decl(mixed.js, 12, 1)) ->exports : Symbol(module.exports, Decl(mixed.js, 0, 0)) +>module.exports : Symbol(export=, Decl(mixed.js, 12, 1)) -+>module : Symbol(module.exports) ++>module : Symbol("mixed", Decl(mixed.js, 0, 0)) +>exports : Symbol(export=, Decl(mixed.js, 12, 1)) doTheThing, diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReassignmentFromDeclaration.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReassignmentFromDeclaration.symbols index e15b5745..4526a827 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReassignmentFromDeclaration.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReassignmentFromDeclaration.symbols @@ -21,7 +21,7 @@ const items = []; module.exports = items; >module.exports : Symbol(items, Decl(index.js, 1, 5)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol(items, Decl(index.js, 1, 5)) >items : Symbol(items, Decl(index.js, 1, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReassignmentFromDeclaration.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReassignmentFromDeclaration.symbols.diff index 791befb9..15420244 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReassignmentFromDeclaration.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReassignmentFromDeclaration.symbols.diff @@ -8,6 +8,6 @@ ->module : Symbol(export=, Decl(index.js, 1, 17)) ->exports : Symbol(export=, Decl(index.js, 1, 17)) +>module.exports : Symbol(items, Decl(index.js, 1, 5)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol(items, Decl(index.js, 1, 5)) >items : Symbol(items, Decl(index.js, 1, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReassignmentFromDeclaration2.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReassignmentFromDeclaration2.symbols index 8c490590..d2f17db4 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReassignmentFromDeclaration2.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReassignmentFromDeclaration2.symbols @@ -7,7 +7,7 @@ const items = require("./some-mod")(); module.exports = items; >module.exports : Symbol(items, Decl(index.js, 0, 5)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol(items, Decl(index.js, 0, 5)) >items : Symbol(items, Decl(index.js, 0, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReassignmentFromDeclaration2.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReassignmentFromDeclaration2.symbols.diff index c4653d7f..6c4137ee 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReassignmentFromDeclaration2.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReassignmentFromDeclaration2.symbols.diff @@ -11,7 +11,7 @@ ->module : Symbol(export=, Decl(index.js, 0, 38)) ->exports : Symbol(export=, Decl(index.js, 0, 38)) +>module.exports : Symbol(items, Decl(index.js, 0, 5)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol(items, Decl(index.js, 0, 5)) >items : Symbol(items, Decl(index.js, 0, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReferences.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReferences.symbols index 68dd5b7a..1a4305fa 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReferences.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReferences.symbols @@ -15,7 +15,7 @@ const thing = new Something(); module.exports = { >module.exports : Symbol(export=, Decl(index.js, 4, 30)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol(export=, Decl(index.js, 4, 30)) thing diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReferences.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReferences.symbols.diff index 1b31a5b5..a3d3d530 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReferences.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReferences.symbols.diff @@ -16,7 +16,7 @@ ->module : Symbol(module, Decl(index.js, 4, 30)) ->exports : Symbol(module.exports, Decl(index.js, 0, 0)) +>module.exports : Symbol(export=, Decl(index.js, 4, 30)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol(export=, Decl(index.js, 4, 30)) thing diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReferences2.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReferences2.symbols index b1a048e9..ff8bc93c 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReferences2.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReferences2.symbols @@ -15,7 +15,7 @@ const thing = a + m module.exports = { >module.exports : Symbol(export=, Decl(index.js, 2, 19)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol(export=, Decl(index.js, 2, 19)) thing diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReferences2.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReferences2.symbols.diff index e54e92ee..e80851ba 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReferences2.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReferences2.symbols.diff @@ -16,7 +16,7 @@ ->module : Symbol(module, Decl(index.js, 2, 19)) ->exports : Symbol(module.exports, Decl(index.js, 0, 0)) +>module.exports : Symbol(export=, Decl(index.js, 2, 19)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol(export=, Decl(index.js, 2, 19)) thing diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReferences3.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReferences3.symbols index 5e1941f2..adaef700 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReferences3.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReferences3.symbols @@ -12,14 +12,14 @@ const Something = require("fs").Something; module.exports.A = {} >module.exports.A : Symbol(A, Decl(index.js, 2, 42)) >module.exports : Symbol("index", Decl(index.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol("index", Decl(index.js, 0, 0)) >A : Symbol(A, Decl(index.js, 2, 42)) module.exports.A.B = { >module.exports.A : Symbol(A, Decl(index.js, 2, 42)) >module.exports : Symbol("index", Decl(index.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol("index", Decl(index.js, 0, 0)) >A : Symbol(A, Decl(index.js, 2, 42)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReferences3.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReferences3.symbols.diff index 59f65b82..32647eab 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReferences3.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypeReferences3.symbols.diff @@ -15,7 +15,7 @@ ->A : Symbol(A, Decl(index.js, 2, 42), Decl(index.js, 4, 15)) +>module.exports.A : Symbol(A, Decl(index.js, 2, 42)) +>module.exports : Symbol("index", Decl(index.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol("index", Decl(index.js, 0, 0)) +>A : Symbol(A, Decl(index.js, 2, 42)) @@ -29,7 +29,7 @@ ->B : Symbol(A.B, Decl(index.js, 3, 21)) +>module.exports.A : Symbol(A, Decl(index.js, 2, 42)) +>module.exports : Symbol("index", Decl(index.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol("index", Decl(index.js, 0, 0)) +>A : Symbol(A, Decl(index.js, 2, 42)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefAndImportTypes.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefAndImportTypes.symbols index 215878df..9da073d0 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefAndImportTypes.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefAndImportTypes.symbols @@ -18,7 +18,7 @@ class Conn { module.exports = Conn; >module.exports : Symbol(Conn, Decl(conn.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("conn", Decl(conn.js, 0, 0)) >exports : Symbol(Conn, Decl(conn.js, 0, 0)) >Conn : Symbol(Conn, Decl(conn.js, 0, 0)) @@ -54,7 +54,7 @@ class Wrap { module.exports = { >module.exports : Symbol(export=, Decl(usage.js, 13, 1)) ->module : Symbol(module.exports) +>module : Symbol("usage", Decl(usage.js, 0, 0)) >exports : Symbol(export=, Decl(usage.js, 13, 1)) Wrap diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefAndImportTypes.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefAndImportTypes.symbols.diff index da078e1d..e2fd83d9 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefAndImportTypes.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefAndImportTypes.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(export=, Decl(conn.js, 8, 1)) ->exports : Symbol(export=, Decl(conn.js, 8, 1)) +>module.exports : Symbol(Conn, Decl(conn.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("conn", Decl(conn.js, 0, 0)) +>exports : Symbol(Conn, Decl(conn.js, 0, 0)) >Conn : Symbol(Conn, Decl(conn.js, 0, 0)) @@ -21,7 +21,7 @@ ->module : Symbol(module, Decl(usage.js, 13, 1)) ->exports : Symbol(module.exports, Decl(usage.js, 0, 0)) +>module.exports : Symbol(export=, Decl(usage.js, 13, 1)) -+>module : Symbol(module.exports) ++>module : Symbol("usage", Decl(usage.js, 0, 0)) +>exports : Symbol(export=, Decl(usage.js, 13, 1)) Wrap diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefAndLatebound.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefAndLatebound.symbols index 466a84dc..8ff3c06d 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefAndLatebound.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefAndLatebound.symbols @@ -42,7 +42,7 @@ class LazySet { module.exports = LazySet; >module.exports : Symbol(LazySet, Decl(LazySet.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("LazySet", Decl(LazySet.js, 0, 0)) >exports : Symbol(LazySet, Decl(LazySet.js, 0, 0)) >LazySet : Symbol(LazySet, Decl(LazySet.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefAndLatebound.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefAndLatebound.symbols.diff index 8079b204..fbedf8ac 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefAndLatebound.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefAndLatebound.symbols.diff @@ -8,6 +8,6 @@ ->module : Symbol(export=, Decl(LazySet.js, 10, 1)) ->exports : Symbol(export=, Decl(LazySet.js, 10, 1)) +>module.exports : Symbol(LazySet, Decl(LazySet.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("LazySet", Decl(LazySet.js, 0, 0)) +>exports : Symbol(LazySet, Decl(LazySet.js, 0, 0)) >LazySet : Symbol(LazySet, Decl(LazySet.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefPropertyAndExportAssignment.symbols b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefPropertyAndExportAssignment.symbols index 383deeea..7f994c7a 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefPropertyAndExportAssignment.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefPropertyAndExportAssignment.symbols @@ -31,7 +31,7 @@ class MainThreadTasks { module.exports = MainThreadTasks; >module.exports : Symbol(MainThreadTasks, Decl(index.js, 0, 61)) ->module : Symbol(module.exports) +>module : Symbol("index", Decl(index.js, 0, 0)) >exports : Symbol(MainThreadTasks, Decl(index.js, 0, 61)) >MainThreadTasks : Symbol(MainThreadTasks, Decl(index.js, 0, 61)) @@ -79,7 +79,7 @@ const taskNameToGroup = {}; module.exports = { >module.exports : Symbol(export=, Decl(module.js, 24, 27)) ->module : Symbol(module.exports) +>module : Symbol("module", Decl(module.js, 0, 0)) >exports : Symbol(export=, Decl(module.js, 24, 27)) taskGroups, diff --git a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefPropertyAndExportAssignment.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefPropertyAndExportAssignment.symbols.diff index ec22f5af..c3bacf4d 100644 --- a/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefPropertyAndExportAssignment.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsDeclarationsTypedefPropertyAndExportAssignment.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(export=, Decl(index.js, 18, 1)) ->exports : Symbol(export=, Decl(index.js, 18, 1)) +>module.exports : Symbol(MainThreadTasks, Decl(index.js, 0, 61)) -+>module : Symbol(module.exports) ++>module : Symbol("index", Decl(index.js, 0, 0)) +>exports : Symbol(MainThreadTasks, Decl(index.js, 0, 61)) >MainThreadTasks : Symbol(MainThreadTasks, Decl(index.js, 0, 61)) @@ -21,7 +21,7 @@ ->module : Symbol(module, Decl(module.js, 24, 27)) ->exports : Symbol(module.exports, Decl(module.js, 0, 0)) +>module.exports : Symbol(export=, Decl(module.js, 24, 27)) -+>module : Symbol(module.exports) ++>module : Symbol("module", Decl(module.js, 0, 0)) +>exports : Symbol(export=, Decl(module.js, 24, 27)) taskGroups, diff --git a/testdata/baselines/reference/submodule/conformance/jsdocImportType.symbols b/testdata/baselines/reference/submodule/conformance/jsdocImportType.symbols index 7961257a..082673ef 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocImportType.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsdocImportType.symbols @@ -52,7 +52,7 @@ class Chunk { } module.exports = Chunk; >module.exports : Symbol(Chunk, Decl(mod1.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("mod1", Decl(mod1.js, 0, 0)) >exports : Symbol(Chunk, Decl(mod1.js, 0, 0)) >Chunk : Symbol(Chunk, Decl(mod1.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/jsdocImportType.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsdocImportType.symbols.diff index 58bdbe81..731b39fc 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocImportType.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsdocImportType.symbols.diff @@ -8,6 +8,6 @@ ->module : Symbol(export=, Decl(mod1.js, 5, 1)) ->exports : Symbol(export=, Decl(mod1.js, 5, 1)) +>module.exports : Symbol(Chunk, Decl(mod1.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol(Chunk, Decl(mod1.js, 0, 0)) >Chunk : Symbol(Chunk, Decl(mod1.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/jsdocImportType2.symbols b/testdata/baselines/reference/submodule/conformance/jsdocImportType2.symbols index 5db36136..129f96dc 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocImportType2.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsdocImportType2.symbols @@ -42,7 +42,7 @@ declare var module: { exports: any }; /// module.exports = class Chunk { >module.exports : Symbol(Chunk, Decl(mod1.js, 1, 16)) ->module : Symbol(module.exports) +>module : Symbol("mod1", Decl(mod1.js, 0, 0)) >exports : Symbol(Chunk, Decl(mod1.js, 1, 16)) >Chunk : Symbol(Chunk, Decl(mod1.js, 1, 16)) diff --git a/testdata/baselines/reference/submodule/conformance/jsdocImportType2.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsdocImportType2.symbols.diff index eaf50f13..415929ac 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocImportType2.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsdocImportType2.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(export=, Decl(mod1.js, 0, 0)) ->exports : Symbol(export=, Decl(mod1.js, 0, 0)) +>module.exports : Symbol(Chunk, Decl(mod1.js, 1, 16)) -+>module : Symbol(module.exports) ++>module : Symbol("mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol(Chunk, Decl(mod1.js, 1, 16)) >Chunk : Symbol(Chunk, Decl(mod1.js, 1, 16)) diff --git a/testdata/baselines/reference/submodule/conformance/jsdocImportTypeReferenceToClassAlias.symbols b/testdata/baselines/reference/submodule/conformance/jsdocImportTypeReferenceToClassAlias.symbols index 260e5414..9022f92c 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocImportTypeReferenceToClassAlias.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsdocImportTypeReferenceToClassAlias.symbols @@ -10,7 +10,7 @@ class C { module.exports.C = C >module.exports.C : Symbol(C, Decl(mod1.js, 2, 1)) >module.exports : Symbol("mod1", Decl(mod1.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("mod1", Decl(mod1.js, 0, 0)) >exports : Symbol("mod1", Decl(mod1.js, 0, 0)) >C : Symbol(C, Decl(mod1.js, 2, 1)) >C : Symbol(C, Decl(mod1.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/jsdocImportTypeReferenceToClassAlias.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsdocImportTypeReferenceToClassAlias.symbols.diff index 58da185c..aa480663 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocImportTypeReferenceToClassAlias.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsdocImportTypeReferenceToClassAlias.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(module, Decl(mod1.js, 2, 1)) ->exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) +>module.exports : Symbol("mod1", Decl(mod1.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol("mod1", Decl(mod1.js, 0, 0)) >C : Symbol(C, Decl(mod1.js, 2, 1)) >C : Symbol(C, Decl(mod1.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/jsdocTypeFromChainedAssignment2.symbols b/testdata/baselines/reference/submodule/conformance/jsdocTypeFromChainedAssignment2.symbols index 033590b2..6ae093d3 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocTypeFromChainedAssignment2.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsdocTypeFromChainedAssignment2.symbols @@ -39,11 +39,11 @@ exports.f = exports.g = function fg(n) { module.exports.h = module.exports.i = function hi(mom) { >module.exports.h : Symbol(h, Decl(mod.js, 3, 1)) >module.exports : Symbol("mod", Decl(mod.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("mod", Decl(mod.js, 0, 0)) >exports : Symbol("mod", Decl(mod.js, 0, 0)) >h : Symbol(h, Decl(mod.js, 3, 1)) >module.exports : Symbol("mod", Decl(mod.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("mod", Decl(mod.js, 0, 0)) >exports : Symbol("mod", Decl(mod.js, 0, 0)) >hi : Symbol(hi, Decl(mod.js, 5, 37)) >mom : Symbol(mom, Decl(mod.js, 5, 50)) diff --git a/testdata/baselines/reference/submodule/conformance/jsdocTypeFromChainedAssignment2.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsdocTypeFromChainedAssignment2.symbols.diff index 45429a41..e8395222 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocTypeFromChainedAssignment2.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsdocTypeFromChainedAssignment2.symbols.diff @@ -40,7 +40,7 @@ ->module : Symbol(module, Decl(mod.js, 3, 1)) ->exports : Symbol(module.exports, Decl(mod.js, 0, 0)) +>module.exports : Symbol("mod", Decl(mod.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("mod", Decl(mod.js, 0, 0)) +>exports : Symbol("mod", Decl(mod.js, 0, 0)) >h : Symbol(h, Decl(mod.js, 3, 1)) ->module.exports.i : Symbol(i, Decl(mod.js, 5, 18)) @@ -49,7 +49,7 @@ ->exports : Symbol(module.exports, Decl(mod.js, 0, 0)) ->i : Symbol(i, Decl(mod.js, 5, 18)) +>module.exports : Symbol("mod", Decl(mod.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("mod", Decl(mod.js, 0, 0)) +>exports : Symbol("mod", Decl(mod.js, 0, 0)) >hi : Symbol(hi, Decl(mod.js, 5, 37)) >mom : Symbol(mom, Decl(mod.js, 5, 50)) diff --git a/testdata/baselines/reference/submodule/conformance/jsdocTypeReferenceExports.symbols b/testdata/baselines/reference/submodule/conformance/jsdocTypeReferenceExports.symbols index 19deb87c..c26c6858 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocTypeReferenceExports.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsdocTypeReferenceExports.symbols @@ -3,7 +3,7 @@ === bug27342.js === module.exports = {} >module.exports : Symbol(export=, Decl(bug27342.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("bug27342", Decl(bug27342.js, 0, 0)) >exports : Symbol(export=, Decl(bug27342.js, 0, 0)) /** diff --git a/testdata/baselines/reference/submodule/conformance/jsdocTypeReferenceExports.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsdocTypeReferenceExports.symbols.diff index 27844b59..6b35522c 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocTypeReferenceExports.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsdocTypeReferenceExports.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(module, Decl(bug27342.js, 0, 0)) ->exports : Symbol(module.exports, Decl(bug27342.js, 0, 0)) +>module.exports : Symbol(export=, Decl(bug27342.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("bug27342", Decl(bug27342.js, 0, 0)) +>exports : Symbol(export=, Decl(bug27342.js, 0, 0)) /** diff --git a/testdata/baselines/reference/submodule/conformance/jsdocTypeReferenceToImportOfClassExpression.symbols b/testdata/baselines/reference/submodule/conformance/jsdocTypeReferenceToImportOfClassExpression.symbols index 9e9d8537..b7921125 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocTypeReferenceToImportOfClassExpression.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsdocTypeReferenceToImportOfClassExpression.symbols @@ -10,7 +10,7 @@ const MW = require("./MW"); module.exports = class MC { >module.exports : Symbol(MC, Decl(MC.js, 4, 16)) ->module : Symbol(module.exports) +>module : Symbol("MC", Decl(MC.js, 0, 0)) >exports : Symbol(MC, Decl(MC.js, 4, 16)) >MC : Symbol(MC, Decl(MC.js, 4, 16)) @@ -45,7 +45,7 @@ class MW { module.exports = MW; >module.exports : Symbol(MW, Decl(MW.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("MW", Decl(MW.js, 0, 0)) >exports : Symbol(MW, Decl(MW.js, 0, 0)) >MW : Symbol(MW, Decl(MW.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/jsdocTypeReferenceToImportOfClassExpression.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsdocTypeReferenceToImportOfClassExpression.symbols.diff index 8c74d87d..83ed667c 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocTypeReferenceToImportOfClassExpression.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsdocTypeReferenceToImportOfClassExpression.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(export=, Decl(MC.js, 0, 27)) ->exports : Symbol(export=, Decl(MC.js, 0, 27)) +>module.exports : Symbol(MC, Decl(MC.js, 4, 16)) -+>module : Symbol(module.exports) ++>module : Symbol("MC", Decl(MC.js, 0, 0)) +>exports : Symbol(MC, Decl(MC.js, 4, 16)) >MC : Symbol(MC, Decl(MC.js, 4, 16)) @@ -21,6 +21,6 @@ ->module : Symbol(export=, Decl(MW.js, 9, 1)) ->exports : Symbol(export=, Decl(MW.js, 9, 1)) +>module.exports : Symbol(MW, Decl(MW.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("MW", Decl(MW.js, 0, 0)) +>exports : Symbol(MW, Decl(MW.js, 0, 0)) >MW : Symbol(MW, Decl(MW.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/jsdocTypeReferenceToImportOfFunctionExpression.symbols b/testdata/baselines/reference/submodule/conformance/jsdocTypeReferenceToImportOfFunctionExpression.symbols index c26128dd..e309908a 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocTypeReferenceToImportOfFunctionExpression.symbols +++ b/testdata/baselines/reference/submodule/conformance/jsdocTypeReferenceToImportOfFunctionExpression.symbols @@ -11,7 +11,7 @@ const MW = require("./MW"); /** @class */ module.exports = function MC() { >module.exports : Symbol(export=, Decl(MC.js, 0, 27)) ->module : Symbol(module.exports) +>module : Symbol("MC", Decl(MC.js, 0, 0)) >exports : Symbol(export=, Decl(MC.js, 0, 27)) >MC : Symbol(MC, Decl(MC.js, 5, 16)) @@ -47,7 +47,7 @@ class MW { module.exports = MW; >module.exports : Symbol(MW, Decl(MW.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("MW", Decl(MW.js, 0, 0)) >exports : Symbol(MW, Decl(MW.js, 0, 0)) >MW : Symbol(MW, Decl(MW.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/jsdocTypeReferenceToImportOfFunctionExpression.symbols.diff b/testdata/baselines/reference/submodule/conformance/jsdocTypeReferenceToImportOfFunctionExpression.symbols.diff index 648ac234..eb7efad3 100644 --- a/testdata/baselines/reference/submodule/conformance/jsdocTypeReferenceToImportOfFunctionExpression.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/jsdocTypeReferenceToImportOfFunctionExpression.symbols.diff @@ -7,7 +7,7 @@ ->module.exports : Symbol(module.exports, Decl(MC.js, 0, 0)) ->module : Symbol(export=, Decl(MC.js, 0, 27)) +>module.exports : Symbol(export=, Decl(MC.js, 0, 27)) -+>module : Symbol(module.exports) ++>module : Symbol("MC", Decl(MC.js, 0, 0)) >exports : Symbol(export=, Decl(MC.js, 0, 27)) >MC : Symbol(MC, Decl(MC.js, 5, 16)) @@ -19,6 +19,6 @@ ->module : Symbol(export=, Decl(MW.js, 9, 1)) ->exports : Symbol(export=, Decl(MW.js, 9, 1)) +>module.exports : Symbol(MW, Decl(MW.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("MW", Decl(MW.js, 0, 0)) +>exports : Symbol(MW, Decl(MW.js, 0, 0)) >MW : Symbol(MW, Decl(MW.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport2.symbols b/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport2.symbols index 40d007dd..9587ae75 100644 --- a/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport2.symbols +++ b/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport2.symbols @@ -28,20 +28,20 @@ const _str = "my-fake-sym"; module.exports[_sym] = "ok"; >module.exports : Symbol("lateBoundAssignmentDeclarationSupport2", Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("lateBoundAssignmentDeclarationSupport2", Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) >exports : Symbol("lateBoundAssignmentDeclarationSupport2", Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) >_sym : Symbol(_sym, Decl(lateBoundAssignmentDeclarationSupport2.js, 1, 5)) module.exports[_str] = "ok"; >module.exports : Symbol("lateBoundAssignmentDeclarationSupport2", Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("lateBoundAssignmentDeclarationSupport2", Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) >exports : Symbol("lateBoundAssignmentDeclarationSupport2", Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) >_str : Symbol(_str, Decl(lateBoundAssignmentDeclarationSupport2.js, 2, 5)) module.exports.S = _sym; >module.exports.S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport2.js, 5, 28)) >module.exports : Symbol("lateBoundAssignmentDeclarationSupport2", Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("lateBoundAssignmentDeclarationSupport2", Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) >exports : Symbol("lateBoundAssignmentDeclarationSupport2", Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) >S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport2.js, 5, 28)) >_sym : Symbol(_sym, Decl(lateBoundAssignmentDeclarationSupport2.js, 1, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport2.symbols.diff b/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport2.symbols.diff index ea61a161..56492025 100644 --- a/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport2.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport2.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport2.js, 5, 28)) ->exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) +>module.exports : Symbol("lateBoundAssignmentDeclarationSupport2", Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("lateBoundAssignmentDeclarationSupport2", Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) +>exports : Symbol("lateBoundAssignmentDeclarationSupport2", Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) >_sym : Symbol(_sym, Decl(lateBoundAssignmentDeclarationSupport2.js, 1, 5)) @@ -17,7 +17,7 @@ ->module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport2.js, 5, 28)) ->exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) +>module.exports : Symbol("lateBoundAssignmentDeclarationSupport2", Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("lateBoundAssignmentDeclarationSupport2", Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) +>exports : Symbol("lateBoundAssignmentDeclarationSupport2", Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) >_str : Symbol(_str, Decl(lateBoundAssignmentDeclarationSupport2.js, 2, 5)) @@ -27,7 +27,7 @@ ->module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport2.js, 5, 28)) ->exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) +>module.exports : Symbol("lateBoundAssignmentDeclarationSupport2", Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("lateBoundAssignmentDeclarationSupport2", Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) +>exports : Symbol("lateBoundAssignmentDeclarationSupport2", Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) >S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport2.js, 5, 28)) >_sym : Symbol(_sym, Decl(lateBoundAssignmentDeclarationSupport2.js, 1, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport3.symbols b/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport3.symbols index 0042bfa8..fb3d156c 100644 --- a/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport3.symbols +++ b/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport3.symbols @@ -31,7 +31,7 @@ Object.defineProperty(module.exports, _sym, { value: "ok" }); >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >module.exports : Symbol("lateBoundAssignmentDeclarationSupport3", Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("lateBoundAssignmentDeclarationSupport3", Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) >exports : Symbol("lateBoundAssignmentDeclarationSupport3", Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) >_sym : Symbol(_sym, Decl(lateBoundAssignmentDeclarationSupport3.js, 1, 5)) >value : Symbol(value, Decl(lateBoundAssignmentDeclarationSupport3.js, 4, 45)) @@ -41,7 +41,7 @@ Object.defineProperty(module.exports, _str, { value: "ok" }); >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >module.exports : Symbol("lateBoundAssignmentDeclarationSupport3", Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("lateBoundAssignmentDeclarationSupport3", Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) >exports : Symbol("lateBoundAssignmentDeclarationSupport3", Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) >_str : Symbol(_str, Decl(lateBoundAssignmentDeclarationSupport3.js, 2, 5)) >value : Symbol(value, Decl(lateBoundAssignmentDeclarationSupport3.js, 5, 45)) @@ -49,7 +49,7 @@ Object.defineProperty(module.exports, _str, { value: "ok" }); module.exports.S = _sym; >module.exports.S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport3.js, 5, 61)) >module.exports : Symbol("lateBoundAssignmentDeclarationSupport3", Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("lateBoundAssignmentDeclarationSupport3", Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) >exports : Symbol("lateBoundAssignmentDeclarationSupport3", Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) >S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport3.js, 5, 61)) >_sym : Symbol(_sym, Decl(lateBoundAssignmentDeclarationSupport3.js, 1, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport3.symbols.diff b/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport3.symbols.diff index e1875fe9..43025342 100644 --- a/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport3.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport3.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport3.js, 5, 61)) ->exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) +>module.exports : Symbol("lateBoundAssignmentDeclarationSupport3", Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("lateBoundAssignmentDeclarationSupport3", Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) +>exports : Symbol("lateBoundAssignmentDeclarationSupport3", Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) >_sym : Symbol(_sym, Decl(lateBoundAssignmentDeclarationSupport3.js, 1, 5)) >value : Symbol(value, Decl(lateBoundAssignmentDeclarationSupport3.js, 4, 45)) @@ -21,7 +21,7 @@ ->module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport3.js, 5, 61)) ->exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) +>module.exports : Symbol("lateBoundAssignmentDeclarationSupport3", Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("lateBoundAssignmentDeclarationSupport3", Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) +>exports : Symbol("lateBoundAssignmentDeclarationSupport3", Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) >_str : Symbol(_str, Decl(lateBoundAssignmentDeclarationSupport3.js, 2, 5)) >value : Symbol(value, Decl(lateBoundAssignmentDeclarationSupport3.js, 5, 45)) @@ -32,7 +32,7 @@ ->module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport3.js, 5, 61)) ->exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) +>module.exports : Symbol("lateBoundAssignmentDeclarationSupport3", Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("lateBoundAssignmentDeclarationSupport3", Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) +>exports : Symbol("lateBoundAssignmentDeclarationSupport3", Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) >S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport3.js, 5, 61)) >_sym : Symbol(_sym, Decl(lateBoundAssignmentDeclarationSupport3.js, 1, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport4.symbols b/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport4.symbols index 3cd2ec63..9d80f583 100644 --- a/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport4.symbols +++ b/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport4.symbols @@ -64,7 +64,7 @@ const _z = inst[_sym]; module.exports.F = F; >module.exports.F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport4.js, 10, 22)) >module.exports : Symbol("lateBoundAssignmentDeclarationSupport4", Decl(lateBoundAssignmentDeclarationSupport4.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("lateBoundAssignmentDeclarationSupport4", Decl(lateBoundAssignmentDeclarationSupport4.js, 0, 0)) >exports : Symbol("lateBoundAssignmentDeclarationSupport4", Decl(lateBoundAssignmentDeclarationSupport4.js, 0, 0)) >F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport4.js, 10, 22)) >F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport4.js, 2, 27)) @@ -72,7 +72,7 @@ module.exports.F = F; module.exports.S = _sym; >module.exports.S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport4.js, 11, 21)) >module.exports : Symbol("lateBoundAssignmentDeclarationSupport4", Decl(lateBoundAssignmentDeclarationSupport4.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("lateBoundAssignmentDeclarationSupport4", Decl(lateBoundAssignmentDeclarationSupport4.js, 0, 0)) >exports : Symbol("lateBoundAssignmentDeclarationSupport4", Decl(lateBoundAssignmentDeclarationSupport4.js, 0, 0)) >S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport4.js, 11, 21)) >_sym : Symbol(_sym, Decl(lateBoundAssignmentDeclarationSupport4.js, 1, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport4.symbols.diff b/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport4.symbols.diff index a2cb6039..0693038e 100644 --- a/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport4.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport4.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport4.js, 10, 22)) ->exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport4.js, 0, 0)) +>module.exports : Symbol("lateBoundAssignmentDeclarationSupport4", Decl(lateBoundAssignmentDeclarationSupport4.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("lateBoundAssignmentDeclarationSupport4", Decl(lateBoundAssignmentDeclarationSupport4.js, 0, 0)) +>exports : Symbol("lateBoundAssignmentDeclarationSupport4", Decl(lateBoundAssignmentDeclarationSupport4.js, 0, 0)) >F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport4.js, 10, 22)) >F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport4.js, 2, 27)) @@ -19,7 +19,7 @@ ->module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport4.js, 10, 22)) ->exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport4.js, 0, 0)) +>module.exports : Symbol("lateBoundAssignmentDeclarationSupport4", Decl(lateBoundAssignmentDeclarationSupport4.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("lateBoundAssignmentDeclarationSupport4", Decl(lateBoundAssignmentDeclarationSupport4.js, 0, 0)) +>exports : Symbol("lateBoundAssignmentDeclarationSupport4", Decl(lateBoundAssignmentDeclarationSupport4.js, 0, 0)) >S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport4.js, 11, 21)) >_sym : Symbol(_sym, Decl(lateBoundAssignmentDeclarationSupport4.js, 1, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport5.symbols b/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport5.symbols index bfb90597..46a80c16 100644 --- a/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport5.symbols +++ b/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport5.symbols @@ -65,7 +65,7 @@ const _z = inst[_sym]; module.exports.F = F; >module.exports.F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport5.js, 12, 22)) >module.exports : Symbol("lateBoundAssignmentDeclarationSupport5", Decl(lateBoundAssignmentDeclarationSupport5.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("lateBoundAssignmentDeclarationSupport5", Decl(lateBoundAssignmentDeclarationSupport5.js, 0, 0)) >exports : Symbol("lateBoundAssignmentDeclarationSupport5", Decl(lateBoundAssignmentDeclarationSupport5.js, 0, 0)) >F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport5.js, 12, 22)) >F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport5.js, 2, 27)) @@ -73,7 +73,7 @@ module.exports.F = F; module.exports.S = _sym; >module.exports.S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport5.js, 13, 21)) >module.exports : Symbol("lateBoundAssignmentDeclarationSupport5", Decl(lateBoundAssignmentDeclarationSupport5.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("lateBoundAssignmentDeclarationSupport5", Decl(lateBoundAssignmentDeclarationSupport5.js, 0, 0)) >exports : Symbol("lateBoundAssignmentDeclarationSupport5", Decl(lateBoundAssignmentDeclarationSupport5.js, 0, 0)) >S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport5.js, 13, 21)) >_sym : Symbol(_sym, Decl(lateBoundAssignmentDeclarationSupport5.js, 1, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport5.symbols.diff b/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport5.symbols.diff index da3e923b..2c1e0cc7 100644 --- a/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport5.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport5.symbols.diff @@ -31,7 +31,7 @@ ->module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport5.js, 12, 22)) ->exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport5.js, 0, 0)) +>module.exports : Symbol("lateBoundAssignmentDeclarationSupport5", Decl(lateBoundAssignmentDeclarationSupport5.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("lateBoundAssignmentDeclarationSupport5", Decl(lateBoundAssignmentDeclarationSupport5.js, 0, 0)) +>exports : Symbol("lateBoundAssignmentDeclarationSupport5", Decl(lateBoundAssignmentDeclarationSupport5.js, 0, 0)) >F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport5.js, 12, 22)) ->F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport5.js, 2, 27), Decl(lateBoundAssignmentDeclarationSupport5.js, 5, 1)) @@ -43,7 +43,7 @@ ->module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport5.js, 12, 22)) ->exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport5.js, 0, 0)) +>module.exports : Symbol("lateBoundAssignmentDeclarationSupport5", Decl(lateBoundAssignmentDeclarationSupport5.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("lateBoundAssignmentDeclarationSupport5", Decl(lateBoundAssignmentDeclarationSupport5.js, 0, 0)) +>exports : Symbol("lateBoundAssignmentDeclarationSupport5", Decl(lateBoundAssignmentDeclarationSupport5.js, 0, 0)) >S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport5.js, 13, 21)) >_sym : Symbol(_sym, Decl(lateBoundAssignmentDeclarationSupport5.js, 1, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport6.symbols b/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport6.symbols index c2449f4b..508f35ee 100644 --- a/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport6.symbols +++ b/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport6.symbols @@ -77,7 +77,7 @@ const _z = inst[_sym]; module.exports.F = F; >module.exports.F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport6.js, 11, 22)) >module.exports : Symbol("lateBoundAssignmentDeclarationSupport6", Decl(lateBoundAssignmentDeclarationSupport6.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("lateBoundAssignmentDeclarationSupport6", Decl(lateBoundAssignmentDeclarationSupport6.js, 0, 0)) >exports : Symbol("lateBoundAssignmentDeclarationSupport6", Decl(lateBoundAssignmentDeclarationSupport6.js, 0, 0)) >F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport6.js, 11, 22)) >F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport6.js, 2, 27)) @@ -85,7 +85,7 @@ module.exports.F = F; module.exports.S = _sym; >module.exports.S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport6.js, 12, 21)) >module.exports : Symbol("lateBoundAssignmentDeclarationSupport6", Decl(lateBoundAssignmentDeclarationSupport6.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("lateBoundAssignmentDeclarationSupport6", Decl(lateBoundAssignmentDeclarationSupport6.js, 0, 0)) >exports : Symbol("lateBoundAssignmentDeclarationSupport6", Decl(lateBoundAssignmentDeclarationSupport6.js, 0, 0)) >S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport6.js, 12, 21)) >_sym : Symbol(_sym, Decl(lateBoundAssignmentDeclarationSupport6.js, 1, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport6.symbols.diff b/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport6.symbols.diff index 03282bce..786ada52 100644 --- a/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport6.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport6.symbols.diff @@ -20,7 +20,7 @@ ->module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport6.js, 11, 22)) ->exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport6.js, 0, 0)) +>module.exports : Symbol("lateBoundAssignmentDeclarationSupport6", Decl(lateBoundAssignmentDeclarationSupport6.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("lateBoundAssignmentDeclarationSupport6", Decl(lateBoundAssignmentDeclarationSupport6.js, 0, 0)) +>exports : Symbol("lateBoundAssignmentDeclarationSupport6", Decl(lateBoundAssignmentDeclarationSupport6.js, 0, 0)) >F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport6.js, 11, 22)) >F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport6.js, 2, 27)) @@ -31,7 +31,7 @@ ->module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport6.js, 11, 22)) ->exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport6.js, 0, 0)) +>module.exports : Symbol("lateBoundAssignmentDeclarationSupport6", Decl(lateBoundAssignmentDeclarationSupport6.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("lateBoundAssignmentDeclarationSupport6", Decl(lateBoundAssignmentDeclarationSupport6.js, 0, 0)) +>exports : Symbol("lateBoundAssignmentDeclarationSupport6", Decl(lateBoundAssignmentDeclarationSupport6.js, 0, 0)) >S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport6.js, 12, 21)) >_sym : Symbol(_sym, Decl(lateBoundAssignmentDeclarationSupport6.js, 1, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport7.symbols b/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport7.symbols index eba0c9f4..5e54fb57 100644 --- a/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport7.symbols +++ b/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport7.symbols @@ -44,7 +44,7 @@ F[_str] = "ok"; module.exports.F = F; >module.exports.F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport7.js, 6, 15)) >module.exports : Symbol("lateBoundAssignmentDeclarationSupport7", Decl(lateBoundAssignmentDeclarationSupport7.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("lateBoundAssignmentDeclarationSupport7", Decl(lateBoundAssignmentDeclarationSupport7.js, 0, 0)) >exports : Symbol("lateBoundAssignmentDeclarationSupport7", Decl(lateBoundAssignmentDeclarationSupport7.js, 0, 0)) >F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport7.js, 6, 15)) >F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport7.js, 1, 27)) @@ -52,7 +52,7 @@ module.exports.F = F; module.exports.S = _sym; >module.exports.S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport7.js, 7, 21)) >module.exports : Symbol("lateBoundAssignmentDeclarationSupport7", Decl(lateBoundAssignmentDeclarationSupport7.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("lateBoundAssignmentDeclarationSupport7", Decl(lateBoundAssignmentDeclarationSupport7.js, 0, 0)) >exports : Symbol("lateBoundAssignmentDeclarationSupport7", Decl(lateBoundAssignmentDeclarationSupport7.js, 0, 0)) >S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport7.js, 7, 21)) >_sym : Symbol(_sym, Decl(lateBoundAssignmentDeclarationSupport7.js, 0, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport7.symbols.diff b/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport7.symbols.diff index 00bc1adc..0654af23 100644 --- a/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport7.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/lateBoundAssignmentDeclarationSupport7.symbols.diff @@ -32,7 +32,7 @@ ->module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport7.js, 6, 15)) ->exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport7.js, 0, 0)) +>module.exports : Symbol("lateBoundAssignmentDeclarationSupport7", Decl(lateBoundAssignmentDeclarationSupport7.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("lateBoundAssignmentDeclarationSupport7", Decl(lateBoundAssignmentDeclarationSupport7.js, 0, 0)) +>exports : Symbol("lateBoundAssignmentDeclarationSupport7", Decl(lateBoundAssignmentDeclarationSupport7.js, 0, 0)) >F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport7.js, 6, 15)) ->F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport7.js, 1, 27), Decl(lateBoundAssignmentDeclarationSupport7.js, 4, 1), Decl(lateBoundAssignmentDeclarationSupport7.js, 5, 15)) @@ -44,7 +44,7 @@ ->module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport7.js, 6, 15)) ->exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport7.js, 0, 0)) +>module.exports : Symbol("lateBoundAssignmentDeclarationSupport7", Decl(lateBoundAssignmentDeclarationSupport7.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("lateBoundAssignmentDeclarationSupport7", Decl(lateBoundAssignmentDeclarationSupport7.js, 0, 0)) +>exports : Symbol("lateBoundAssignmentDeclarationSupport7", Decl(lateBoundAssignmentDeclarationSupport7.js, 0, 0)) >S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport7.js, 7, 21)) >_sym : Symbol(_sym, Decl(lateBoundAssignmentDeclarationSupport7.js, 0, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportAlias.symbols b/testdata/baselines/reference/submodule/conformance/moduleExportAlias.symbols index db9cea39..e1b0d0aa 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportAlias.symbols +++ b/testdata/baselines/reference/submodule/conformance/moduleExportAlias.symbols @@ -79,7 +79,7 @@ exports.func2 = function () { }; var moduleExportsAlias = module.exports; >moduleExportsAlias : Symbol(moduleExportsAlias, Decl(b.js, 4, 3)) >module.exports : Symbol(export=, Decl(b.js, 41, 40)) ->module : Symbol(module.exports) +>module : Symbol("b", Decl(b.js, 0, 0)) >exports : Symbol(export=, Decl(b.js, 41, 40)) moduleExportsAlias.func3 = function () { }; @@ -87,14 +87,14 @@ moduleExportsAlias.func3 = function () { }; module.exports.func4 = function () { }; >module.exports : Symbol(export=, Decl(b.js, 41, 40)) ->module : Symbol(module.exports) +>module : Symbol("b", Decl(b.js, 0, 0)) >exports : Symbol(export=, Decl(b.js, 41, 40)) var multipleDeclarationAlias1 = exports = module.exports; >multipleDeclarationAlias1 : Symbol(multipleDeclarationAlias1, Decl(b.js, 8, 3)) >exports : Symbol("b", Decl(b.js, 0, 0)) >module.exports : Symbol(export=, Decl(b.js, 41, 40)) ->module : Symbol(module.exports) +>module : Symbol("b", Decl(b.js, 0, 0)) >exports : Symbol(export=, Decl(b.js, 41, 40)) multipleDeclarationAlias1.func5 = function () { }; @@ -103,7 +103,7 @@ multipleDeclarationAlias1.func5 = function () { }; var multipleDeclarationAlias2 = module.exports = exports; >multipleDeclarationAlias2 : Symbol(multipleDeclarationAlias2, Decl(b.js, 11, 3)) >module.exports : Symbol(export=, Decl(b.js, 41, 40)) ->module : Symbol(module.exports) +>module : Symbol("b", Decl(b.js, 0, 0)) >exports : Symbol(export=, Decl(b.js, 41, 40)) >exports : Symbol("b", Decl(b.js, 0, 0)) @@ -125,7 +125,7 @@ var multipleDeclarationAlias4 = someOtherVariable = module.exports; >multipleDeclarationAlias4 : Symbol(multipleDeclarationAlias4, Decl(b.js, 18, 3)) >someOtherVariable : Symbol(someOtherVariable, Decl(b.js, 14, 3)) >module.exports : Symbol(export=, Decl(b.js, 41, 40)) ->module : Symbol(module.exports) +>module : Symbol("b", Decl(b.js, 0, 0)) >exports : Symbol(export=, Decl(b.js, 41, 40)) multipleDeclarationAlias4.func8 = function () { }; @@ -134,7 +134,7 @@ multipleDeclarationAlias4.func8 = function () { }; var multipleDeclarationAlias5 = module.exports = exports = {}; >multipleDeclarationAlias5 : Symbol(multipleDeclarationAlias5, Decl(b.js, 21, 3)) >module.exports : Symbol(export=, Decl(b.js, 41, 40)) ->module : Symbol(module.exports) +>module : Symbol("b", Decl(b.js, 0, 0)) >exports : Symbol(export=, Decl(b.js, 41, 40)) >exports : Symbol("b", Decl(b.js, 0, 0)) @@ -145,7 +145,7 @@ var multipleDeclarationAlias6 = exports = module.exports = {}; >multipleDeclarationAlias6 : Symbol(multipleDeclarationAlias6, Decl(b.js, 24, 3)) >exports : Symbol("b", Decl(b.js, 0, 0)) >module.exports : Symbol(export=, Decl(b.js, 41, 40)) ->module : Symbol(module.exports) +>module : Symbol("b", Decl(b.js, 0, 0)) >exports : Symbol(export=, Decl(b.js, 41, 40)) multipleDeclarationAlias6.func10 = function () { }; @@ -154,7 +154,7 @@ multipleDeclarationAlias6.func10 = function () { }; exports = module.exports = someOtherVariable = {}; >exports : Symbol("b", Decl(b.js, 0, 0)) >module.exports : Symbol(export=, Decl(b.js, 41, 40)) ->module : Symbol(module.exports) +>module : Symbol("b", Decl(b.js, 0, 0)) >exports : Symbol(export=, Decl(b.js, 41, 40)) >someOtherVariable : Symbol(someOtherVariable, Decl(b.js, 14, 3)) @@ -163,13 +163,13 @@ exports.func11 = function () { }; module.exports.func12 = function () { }; >module.exports : Symbol(export=, Decl(b.js, 41, 40)) ->module : Symbol(module.exports) +>module : Symbol("b", Decl(b.js, 0, 0)) >exports : Symbol(export=, Decl(b.js, 41, 40)) exports = module.exports = someOtherVariable = {}; >exports : Symbol("b", Decl(b.js, 0, 0)) >module.exports : Symbol(export=, Decl(b.js, 41, 40)) ->module : Symbol(module.exports) +>module : Symbol("b", Decl(b.js, 0, 0)) >exports : Symbol(export=, Decl(b.js, 41, 40)) >someOtherVariable : Symbol(someOtherVariable, Decl(b.js, 14, 3)) @@ -178,13 +178,13 @@ exports.func11 = function () { }; module.exports.func12 = function () { }; >module.exports : Symbol(export=, Decl(b.js, 41, 40)) ->module : Symbol(module.exports) +>module : Symbol("b", Decl(b.js, 0, 0)) >exports : Symbol(export=, Decl(b.js, 41, 40)) exports = module.exports = {}; >exports : Symbol("b", Decl(b.js, 0, 0)) >module.exports : Symbol(export=, Decl(b.js, 41, 40)) ->module : Symbol(module.exports) +>module : Symbol("b", Decl(b.js, 0, 0)) >exports : Symbol(export=, Decl(b.js, 41, 40)) exports.func13 = function () { }; @@ -192,13 +192,13 @@ exports.func13 = function () { }; module.exports.func14 = function () { }; >module.exports : Symbol(export=, Decl(b.js, 41, 40)) ->module : Symbol(module.exports) +>module : Symbol("b", Decl(b.js, 0, 0)) >exports : Symbol(export=, Decl(b.js, 41, 40)) exports = module.exports = {}; >exports : Symbol("b", Decl(b.js, 0, 0)) >module.exports : Symbol(export=, Decl(b.js, 41, 40)) ->module : Symbol(module.exports) +>module : Symbol("b", Decl(b.js, 0, 0)) >exports : Symbol(export=, Decl(b.js, 41, 40)) exports.func15 = function () { }; @@ -206,12 +206,12 @@ exports.func15 = function () { }; module.exports.func16 = function () { }; >module.exports : Symbol(export=, Decl(b.js, 41, 40)) ->module : Symbol(module.exports) +>module : Symbol("b", Decl(b.js, 0, 0)) >exports : Symbol(export=, Decl(b.js, 41, 40)) module.exports = exports = {}; >module.exports : Symbol(export=, Decl(b.js, 41, 40)) ->module : Symbol(module.exports) +>module : Symbol("b", Decl(b.js, 0, 0)) >exports : Symbol(export=, Decl(b.js, 41, 40)) >exports : Symbol("b", Decl(b.js, 0, 0)) @@ -220,12 +220,12 @@ exports.func17 = function () { }; module.exports.func18 = function () { }; >module.exports : Symbol(export=, Decl(b.js, 41, 40)) ->module : Symbol(module.exports) +>module : Symbol("b", Decl(b.js, 0, 0)) >exports : Symbol(export=, Decl(b.js, 41, 40)) module.exports = {}; >module.exports : Symbol(export=, Decl(b.js, 41, 40)) ->module : Symbol(module.exports) +>module : Symbol("b", Decl(b.js, 0, 0)) >exports : Symbol(export=, Decl(b.js, 41, 40)) exports.func19 = function () { }; @@ -233,7 +233,7 @@ exports.func19 = function () { }; module.exports.func20 = function () { }; >module.exports : Symbol(export=, Decl(b.js, 41, 40)) ->module : Symbol(module.exports) +>module : Symbol("b", Decl(b.js, 0, 0)) >exports : Symbol(export=, Decl(b.js, 41, 40)) diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportAlias.symbols.diff b/testdata/baselines/reference/submodule/conformance/moduleExportAlias.symbols.diff index 7c68f5c1..8252b2c2 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportAlias.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/moduleExportAlias.symbols.diff @@ -125,7 +125,7 @@ ->module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol(module.exports, Decl(b.js, 0, 0)) +>module.exports : Symbol(export=, Decl(b.js, 41, 40)) -+>module : Symbol(module.exports) ++>module : Symbol("b", Decl(b.js, 0, 0)) +>exports : Symbol(export=, Decl(b.js, 41, 40)) moduleExportsAlias.func3 = function () { }; @@ -140,7 +140,7 @@ ->exports : Symbol(module.exports, Decl(b.js, 0, 0)) ->func4 : Symbol(func4, Decl(b.js, 5, 43)) +>module.exports : Symbol(export=, Decl(b.js, 41, 40)) -+>module : Symbol(module.exports) ++>module : Symbol("b", Decl(b.js, 0, 0)) +>exports : Symbol(export=, Decl(b.js, 41, 40)) var multipleDeclarationAlias1 = exports = module.exports; @@ -150,7 +150,7 @@ ->module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol(module.exports, Decl(b.js, 0, 0)) +>module.exports : Symbol(export=, Decl(b.js, 41, 40)) -+>module : Symbol(module.exports) ++>module : Symbol("b", Decl(b.js, 0, 0)) +>exports : Symbol(export=, Decl(b.js, 41, 40)) multipleDeclarationAlias1.func5 = function () { }; @@ -164,7 +164,7 @@ ->module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol(module.exports, Decl(b.js, 0, 0)) +>module.exports : Symbol(export=, Decl(b.js, 41, 40)) -+>module : Symbol(module.exports) ++>module : Symbol("b", Decl(b.js, 0, 0)) +>exports : Symbol(export=, Decl(b.js, 41, 40)) >exports : Symbol("b", Decl(b.js, 0, 0)) @@ -190,7 +190,7 @@ ->module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol(module.exports, Decl(b.js, 0, 0)) +>module.exports : Symbol(export=, Decl(b.js, 41, 40)) -+>module : Symbol(module.exports) ++>module : Symbol("b", Decl(b.js, 0, 0)) +>exports : Symbol(export=, Decl(b.js, 41, 40)) multipleDeclarationAlias4.func8 = function () { }; @@ -204,7 +204,7 @@ ->module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol(module.exports, Decl(b.js, 0, 0)) +>module.exports : Symbol(export=, Decl(b.js, 41, 40)) -+>module : Symbol(module.exports) ++>module : Symbol("b", Decl(b.js, 0, 0)) +>exports : Symbol(export=, Decl(b.js, 41, 40)) >exports : Symbol("b", Decl(b.js, 0, 0)) @@ -220,7 +220,7 @@ ->module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol(module.exports, Decl(b.js, 0, 0)) +>module.exports : Symbol(export=, Decl(b.js, 41, 40)) -+>module : Symbol(module.exports) ++>module : Symbol("b", Decl(b.js, 0, 0)) +>exports : Symbol(export=, Decl(b.js, 41, 40)) multipleDeclarationAlias6.func10 = function () { }; @@ -269,7 +269,7 @@ +exports = module.exports = someOtherVariable = {}; +>exports : Symbol("b", Decl(b.js, 0, 0)) +>module.exports : Symbol(export=, Decl(b.js, 41, 40)) -+>module : Symbol(module.exports) ++>module : Symbol("b", Decl(b.js, 0, 0)) +>exports : Symbol(export=, Decl(b.js, 41, 40)) +>someOtherVariable : Symbol(someOtherVariable, Decl(b.js, 14, 3)) + @@ -278,13 +278,13 @@ + +module.exports.func12 = function () { }; +>module.exports : Symbol(export=, Decl(b.js, 41, 40)) -+>module : Symbol(module.exports) ++>module : Symbol("b", Decl(b.js, 0, 0)) +>exports : Symbol(export=, Decl(b.js, 41, 40)) + +exports = module.exports = someOtherVariable = {}; +>exports : Symbol("b", Decl(b.js, 0, 0)) +>module.exports : Symbol(export=, Decl(b.js, 41, 40)) -+>module : Symbol(module.exports) ++>module : Symbol("b", Decl(b.js, 0, 0)) +>exports : Symbol(export=, Decl(b.js, 41, 40)) +>someOtherVariable : Symbol(someOtherVariable, Decl(b.js, 14, 3)) + @@ -293,7 +293,7 @@ + +module.exports.func12 = function () { }; +>module.exports : Symbol(export=, Decl(b.js, 41, 40)) -+>module : Symbol(module.exports) ++>module : Symbol("b", Decl(b.js, 0, 0)) +>exports : Symbol(export=, Decl(b.js, 41, 40)) exports = module.exports = {}; @@ -302,7 +302,7 @@ ->module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol(module.exports, Decl(b.js, 0, 0)) +>module.exports : Symbol(export=, Decl(b.js, 41, 40)) -+>module : Symbol(module.exports) ++>module : Symbol("b", Decl(b.js, 0, 0)) +>exports : Symbol(export=, Decl(b.js, 41, 40)) exports.func13 = function () { }; @@ -318,7 +318,7 @@ ->exports : Symbol(module.exports, Decl(b.js, 0, 0)) ->func14 : Symbol(func14, Decl(b.js, 36, 33)) +>module.exports : Symbol(export=, Decl(b.js, 41, 40)) -+>module : Symbol(module.exports) ++>module : Symbol("b", Decl(b.js, 0, 0)) +>exports : Symbol(export=, Decl(b.js, 41, 40)) exports = module.exports = {}; @@ -327,7 +327,7 @@ ->module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol(module.exports, Decl(b.js, 0, 0)) +>module.exports : Symbol(export=, Decl(b.js, 41, 40)) -+>module : Symbol(module.exports) ++>module : Symbol("b", Decl(b.js, 0, 0)) +>exports : Symbol(export=, Decl(b.js, 41, 40)) exports.func15 = function () { }; @@ -343,7 +343,7 @@ ->exports : Symbol(module.exports, Decl(b.js, 0, 0)) ->func16 : Symbol(func16, Decl(b.js, 40, 33)) +>module.exports : Symbol(export=, Decl(b.js, 41, 40)) -+>module : Symbol(module.exports) ++>module : Symbol("b", Decl(b.js, 0, 0)) +>exports : Symbol(export=, Decl(b.js, 41, 40)) module.exports = exports = {}; @@ -351,7 +351,7 @@ ->module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol(module.exports, Decl(b.js, 0, 0)) +>module.exports : Symbol(export=, Decl(b.js, 41, 40)) -+>module : Symbol(module.exports) ++>module : Symbol("b", Decl(b.js, 0, 0)) +>exports : Symbol(export=, Decl(b.js, 41, 40)) >exports : Symbol("b", Decl(b.js, 0, 0)) @@ -368,7 +368,7 @@ ->exports : Symbol(module.exports, Decl(b.js, 0, 0)) ->func18 : Symbol(func18, Decl(b.js, 44, 33)) +>module.exports : Symbol(export=, Decl(b.js, 41, 40)) -+>module : Symbol(module.exports) ++>module : Symbol("b", Decl(b.js, 0, 0)) +>exports : Symbol(export=, Decl(b.js, 41, 40)) module.exports = {}; @@ -376,7 +376,7 @@ ->module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol(module.exports, Decl(b.js, 0, 0)) +>module.exports : Symbol(export=, Decl(b.js, 41, 40)) -+>module : Symbol(module.exports) ++>module : Symbol("b", Decl(b.js, 0, 0)) +>exports : Symbol(export=, Decl(b.js, 41, 40)) exports.func19 = function () { }; @@ -392,6 +392,6 @@ ->exports : Symbol(module.exports, Decl(b.js, 0, 0)) ->func20 : Symbol(func20, Decl(b.js, 48, 33)) +>module.exports : Symbol(export=, Decl(b.js, 41, 40)) -+>module : Symbol(module.exports) ++>module : Symbol("b", Decl(b.js, 0, 0)) +>exports : Symbol(export=, Decl(b.js, 41, 40)) diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportAlias2.symbols b/testdata/baselines/reference/submodule/conformance/moduleExportAlias2.symbols index efe1cb30..018e9cdf 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportAlias2.symbols +++ b/testdata/baselines/reference/submodule/conformance/moduleExportAlias2.symbols @@ -34,7 +34,7 @@ declare var module: { exports: any }; exports = module.exports = C >exports : Symbol("semver", Decl(semver.js, 0, 0)) >module.exports : Symbol("semver", Decl(semver.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("semver", Decl(semver.js, 0, 0)) >exports : Symbol("semver", Decl(semver.js, 0, 0)) >C : Symbol(C, Decl(semver.js, 2, 22)) diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportAlias2.symbols.diff b/testdata/baselines/reference/submodule/conformance/moduleExportAlias2.symbols.diff index 0a1a2a7d..adb5187e 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportAlias2.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/moduleExportAlias2.symbols.diff @@ -17,7 +17,7 @@ ->module : Symbol(export=, Decl(semver.js, 1, 9)) ->exports : Symbol(export=, Decl(semver.js, 1, 9)) +>module.exports : Symbol("semver", Decl(semver.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("semver", Decl(semver.js, 0, 0)) +>exports : Symbol("semver", Decl(semver.js, 0, 0)) >C : Symbol(C, Decl(semver.js, 2, 22)) diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportAlias3.symbols b/testdata/baselines/reference/submodule/conformance/moduleExportAlias3.symbols index 4cd9a455..8015fd39 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportAlias3.symbols +++ b/testdata/baselines/reference/submodule/conformance/moduleExportAlias3.symbols @@ -7,7 +7,7 @@ class C { } module.exports = { >module.exports : Symbol(export=, Decl(bug24062.js, 2, 1)) ->module : Symbol(module.exports) +>module : Symbol("bug24062", Decl(bug24062.js, 0, 0)) >exports : Symbol(export=, Decl(bug24062.js, 2, 1)) C diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportAlias3.symbols.diff b/testdata/baselines/reference/submodule/conformance/moduleExportAlias3.symbols.diff index cca2eb32..c01f3edc 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportAlias3.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/moduleExportAlias3.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(module, Decl(bug24062.js, 2, 1)) ->exports : Symbol(module.exports, Decl(bug24062.js, 0, 0)) +>module.exports : Symbol(export=, Decl(bug24062.js, 2, 1)) -+>module : Symbol(module.exports) ++>module : Symbol("bug24062", Decl(bug24062.js, 0, 0)) +>exports : Symbol(export=, Decl(bug24062.js, 2, 1)) C diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportAlias4.symbols b/testdata/baselines/reference/submodule/conformance/moduleExportAlias4.symbols index a9cab75a..3cd1a6bc 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportAlias4.symbols +++ b/testdata/baselines/reference/submodule/conformance/moduleExportAlias4.symbols @@ -9,13 +9,13 @@ var wat = require('./bug24024') module.exports = class C {} >module.exports : Symbol(wat, Decl(bug24024.js, 2, 16)) ->module : Symbol(module.exports) +>module : Symbol("bug24024", Decl(bug24024.js, 0, 0)) >exports : Symbol(wat, Decl(bug24024.js, 2, 16)) >C : Symbol(C, Decl(bug24024.js, 2, 16)) module.exports.D = class D { } >module.exports : Symbol(wat, Decl(bug24024.js, 2, 16)) ->module : Symbol(module.exports) +>module : Symbol("bug24024", Decl(bug24024.js, 0, 0)) >exports : Symbol(wat, Decl(bug24024.js, 2, 16)) >D : Symbol(D, Decl(bug24024.js, 3, 18)) diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportAlias4.symbols.diff b/testdata/baselines/reference/submodule/conformance/moduleExportAlias4.symbols.diff index 8a574736..1369e4b0 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportAlias4.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/moduleExportAlias4.symbols.diff @@ -9,7 +9,7 @@ ->exports : Symbol(export=, Decl(bug24024.js, 1, 31)) ->C : Symbol(wat, Decl(bug24024.js, 2, 16)) +>module.exports : Symbol(wat, Decl(bug24024.js, 2, 16)) -+>module : Symbol(module.exports) ++>module : Symbol("bug24024", Decl(bug24024.js, 0, 0)) +>exports : Symbol(wat, Decl(bug24024.js, 2, 16)) +>C : Symbol(C, Decl(bug24024.js, 2, 16)) @@ -21,6 +21,6 @@ ->D : Symbol(wat.D, Decl(bug24024.js, 2, 27)) ->D : Symbol(wat.D, Decl(bug24024.js, 3, 18)) +>module.exports : Symbol(wat, Decl(bug24024.js, 2, 16)) -+>module : Symbol(module.exports) ++>module : Symbol("bug24024", Decl(bug24024.js, 0, 0)) +>exports : Symbol(wat, Decl(bug24024.js, 2, 16)) +>D : Symbol(D, Decl(bug24024.js, 3, 18)) diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportAlias5.symbols b/testdata/baselines/reference/submodule/conformance/moduleExportAlias5.symbols index 9a8873d4..2abd6987 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportAlias5.symbols +++ b/testdata/baselines/reference/submodule/conformance/moduleExportAlias5.symbols @@ -8,7 +8,7 @@ const webpack = function (){ exports = module.exports = webpack; >exports : Symbol("bug24754", Decl(bug24754.js, 0, 0)) >module.exports : Symbol("bug24754", Decl(bug24754.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("bug24754", Decl(bug24754.js, 0, 0)) >exports : Symbol("bug24754", Decl(bug24754.js, 0, 0)) >webpack : Symbol(webpack, Decl(bug24754.js, 1, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportAlias5.symbols.diff b/testdata/baselines/reference/submodule/conformance/moduleExportAlias5.symbols.diff index 40a2d99f..743e5d4f 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportAlias5.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/moduleExportAlias5.symbols.diff @@ -14,7 +14,7 @@ ->exports : Symbol(export=, Decl(bug24754.js, 3, 9)) ->webpack : Symbol(webpack, Decl(bug24754.js, 1, 5), Decl(bug24754.js, 4, 23)) +>module.exports : Symbol("bug24754", Decl(bug24754.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("bug24754", Decl(bug24754.js, 0, 0)) +>exports : Symbol("bug24754", Decl(bug24754.js, 0, 0)) +>webpack : Symbol(webpack, Decl(bug24754.js, 1, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportAliasExports.symbols b/testdata/baselines/reference/submodule/conformance/moduleExportAliasExports.symbols index 373a830d..4ec0d407 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportAliasExports.symbols +++ b/testdata/baselines/reference/submodule/conformance/moduleExportAliasExports.symbols @@ -15,7 +15,7 @@ exports.everywhere = 2 module.exports = exports >module.exports : Symbol("Eloquent", Decl(Eloquent.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("Eloquent", Decl(Eloquent.js, 0, 0)) >exports : Symbol("Eloquent", Decl(Eloquent.js, 0, 0)) >exports : Symbol("Eloquent", Decl(Eloquent.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportAliasExports.symbols.diff b/testdata/baselines/reference/submodule/conformance/moduleExportAliasExports.symbols.diff index d9b5824e..cdec0b43 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportAliasExports.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/moduleExportAliasExports.symbols.diff @@ -19,7 +19,7 @@ ->module : Symbol(export=, Decl(Eloquent.js, 3, 22)) ->exports : Symbol(export=, Decl(Eloquent.js, 3, 22)) +>module.exports : Symbol("Eloquent", Decl(Eloquent.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("Eloquent", Decl(Eloquent.js, 0, 0)) +>exports : Symbol("Eloquent", Decl(Eloquent.js, 0, 0)) >exports : Symbol("Eloquent", Decl(Eloquent.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportAliasImported.symbols b/testdata/baselines/reference/submodule/conformance/moduleExportAliasImported.symbols index eed33947..5adf8004 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportAliasImported.symbols +++ b/testdata/baselines/reference/submodule/conformance/moduleExportAliasImported.symbols @@ -9,7 +9,7 @@ function alias() { } module.exports = alias >module.exports : Symbol(alias, Decl(bug28014.js, 0, 19)) ->module : Symbol(module.exports) +>module : Symbol("bug28014", Decl(bug28014.js, 0, 0)) >exports : Symbol(alias, Decl(bug28014.js, 0, 19)) >alias : Symbol(alias, Decl(bug28014.js, 0, 19)) diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportAliasImported.symbols.diff b/testdata/baselines/reference/submodule/conformance/moduleExportAliasImported.symbols.diff index db6b4bdc..99aa7d60 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportAliasImported.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/moduleExportAliasImported.symbols.diff @@ -17,7 +17,7 @@ ->module : Symbol(export=, Decl(bug28014.js, 1, 20)) ->exports : Symbol(export=, Decl(bug28014.js, 1, 20)) +>module.exports : Symbol(alias, Decl(bug28014.js, 0, 19)) -+>module : Symbol(module.exports) ++>module : Symbol("bug28014", Decl(bug28014.js, 0, 0)) +>exports : Symbol(alias, Decl(bug28014.js, 0, 19)) >alias : Symbol(alias, Decl(bug28014.js, 0, 19)) diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportAliasUnknown.symbols b/testdata/baselines/reference/submodule/conformance/moduleExportAliasUnknown.symbols index 33e6b8ac..184fac33 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportAliasUnknown.symbols +++ b/testdata/baselines/reference/submodule/conformance/moduleExportAliasUnknown.symbols @@ -3,7 +3,7 @@ === bug27025.js === module.exports = window.nonprop; >module.exports : Symbol(unknown) ->module : Symbol(module.exports) +>module : Symbol("bug27025", Decl(bug27025.js, 0, 0)) >exports : Symbol(unknown) >window : Symbol(window, Decl(lib.dom.d.ts, --, --)) diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportAliasUnknown.symbols.diff b/testdata/baselines/reference/submodule/conformance/moduleExportAliasUnknown.symbols.diff index 179701bc..585550c7 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportAliasUnknown.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/moduleExportAliasUnknown.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(export=, Decl(bug27025.js, 0, 0)) ->exports : Symbol(export=, Decl(bug27025.js, 0, 0)) +>module.exports : Symbol(unknown) -+>module : Symbol(module.exports) ++>module : Symbol("bug27025", Decl(bug27025.js, 0, 0)) +>exports : Symbol(unknown) >window : Symbol(window, Decl(lib.dom.d.ts, --, --)) diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportAssignment.symbols b/testdata/baselines/reference/submodule/conformance/moduleExportAssignment.symbols index d3908ce0..09448fa0 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportAssignment.symbols +++ b/testdata/baselines/reference/submodule/conformance/moduleExportAssignment.symbols @@ -24,7 +24,7 @@ class EE { var npmlog = module.exports = new EE() >npmlog : Symbol(npmlog, Decl(npmlog.js, 4, 3)) >module.exports : Symbol("npmlog", Decl(npmlog.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("npmlog", Decl(npmlog.js, 0, 0)) >exports : Symbol("npmlog", Decl(npmlog.js, 0, 0)) >EE : Symbol(EE, Decl(npmlog.js, 0, 0)) @@ -35,7 +35,7 @@ npmlog.on('hi') // both references should see EE.on module.exports.on('hi') // here too >module.exports : Symbol("npmlog", Decl(npmlog.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("npmlog", Decl(npmlog.js, 0, 0)) >exports : Symbol("npmlog", Decl(npmlog.js, 0, 0)) npmlog.x = 1 @@ -44,7 +44,7 @@ npmlog.x = 1 module.exports.y = 2 >module.exports.y : Symbol(y, Decl(npmlog.js, 9, 12)) >module.exports : Symbol("npmlog", Decl(npmlog.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("npmlog", Decl(npmlog.js, 0, 0)) >exports : Symbol("npmlog", Decl(npmlog.js, 0, 0)) >y : Symbol(y, Decl(npmlog.js, 9, 12)) @@ -53,6 +53,6 @@ npmlog.y module.exports.x >module.exports : Symbol("npmlog", Decl(npmlog.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("npmlog", Decl(npmlog.js, 0, 0)) >exports : Symbol("npmlog", Decl(npmlog.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportAssignment.symbols.diff b/testdata/baselines/reference/submodule/conformance/moduleExportAssignment.symbols.diff index 298239bc..fd22517a 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportAssignment.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/moduleExportAssignment.symbols.diff @@ -27,7 +27,7 @@ ->module : Symbol(npmlog, Decl(npmlog.js, 4, 12)) ->exports : Symbol(npmlog, Decl(npmlog.js, 4, 12)) +>module.exports : Symbol("npmlog", Decl(npmlog.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("npmlog", Decl(npmlog.js, 0, 0)) +>exports : Symbol("npmlog", Decl(npmlog.js, 0, 0)) >EE : Symbol(EE, Decl(npmlog.js, 0, 0)) @@ -42,7 +42,7 @@ ->exports : Symbol(module.exports, Decl(npmlog.js, 0, 0)) ->on : Symbol(EE.on, Decl(npmlog.js, 0, 10)) +>module.exports : Symbol("npmlog", Decl(npmlog.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("npmlog", Decl(npmlog.js, 0, 0)) +>exports : Symbol("npmlog", Decl(npmlog.js, 0, 0)) npmlog.x = 1 @@ -56,7 +56,7 @@ ->module : Symbol(module, Decl(npmlog.js, 4, 12)) ->exports : Symbol(module.exports, Decl(npmlog.js, 0, 0)) +>module.exports : Symbol("npmlog", Decl(npmlog.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("npmlog", Decl(npmlog.js, 0, 0)) +>exports : Symbol("npmlog", Decl(npmlog.js, 0, 0)) >y : Symbol(y, Decl(npmlog.js, 9, 12)) @@ -72,5 +72,5 @@ ->exports : Symbol(module.exports, Decl(npmlog.js, 0, 0)) ->x : Symbol(x, Decl(npmlog.js, 7, 23)) +>module.exports : Symbol("npmlog", Decl(npmlog.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("npmlog", Decl(npmlog.js, 0, 0)) +>exports : Symbol("npmlog", Decl(npmlog.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportAssignment2.symbols b/testdata/baselines/reference/submodule/conformance/moduleExportAssignment2.symbols index 78fa4393..df38c84d 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportAssignment2.symbols +++ b/testdata/baselines/reference/submodule/conformance/moduleExportAssignment2.symbols @@ -4,14 +4,14 @@ var npm = module.exports = function (tree) { >npm : Symbol(npm, Decl(npm.js, 0, 3)) >module.exports : Symbol("npm", Decl(npm.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("npm", Decl(npm.js, 0, 0)) >exports : Symbol("npm", Decl(npm.js, 0, 0)) >tree : Symbol(tree, Decl(npm.js, 0, 37)) } module.exports.asReadInstalled = function (tree) { >module.exports.asReadInstalled : Symbol(asReadInstalled, Decl(npm.js, 1, 1)) >module.exports : Symbol("npm", Decl(npm.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("npm", Decl(npm.js, 0, 0)) >exports : Symbol("npm", Decl(npm.js, 0, 0)) >asReadInstalled : Symbol(asReadInstalled, Decl(npm.js, 1, 1)) >tree : Symbol(tree, Decl(npm.js, 2, 43)) @@ -22,7 +22,7 @@ module.exports.asReadInstalled = function (tree) { module.exports(tree) >module.exports : Symbol("npm", Decl(npm.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("npm", Decl(npm.js, 0, 0)) >exports : Symbol("npm", Decl(npm.js, 0, 0)) >tree : Symbol(tree, Decl(npm.js, 2, 43)) } diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportAssignment2.symbols.diff b/testdata/baselines/reference/submodule/conformance/moduleExportAssignment2.symbols.diff index 2304305f..7bbd7791 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportAssignment2.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/moduleExportAssignment2.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(npm, Decl(npm.js, 0, 9)) ->exports : Symbol(npm, Decl(npm.js, 0, 9)) +>module.exports : Symbol("npm", Decl(npm.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("npm", Decl(npm.js, 0, 0)) +>exports : Symbol("npm", Decl(npm.js, 0, 0)) >tree : Symbol(tree, Decl(npm.js, 0, 37)) } @@ -18,7 +18,7 @@ ->module : Symbol(module, Decl(npm.js, 0, 9), Decl(npm.js, 3, 13)) ->exports : Symbol(module.exports, Decl(npm.js, 0, 0)) +>module.exports : Symbol("npm", Decl(npm.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("npm", Decl(npm.js, 0, 0)) +>exports : Symbol("npm", Decl(npm.js, 0, 0)) >asReadInstalled : Symbol(asReadInstalled, Decl(npm.js, 1, 1)) >tree : Symbol(tree, Decl(npm.js, 2, 43)) @@ -31,7 +31,7 @@ ->module : Symbol(module, Decl(npm.js, 0, 9), Decl(npm.js, 3, 13)) ->exports : Symbol(module.exports, Decl(npm.js, 0, 0)) +>module.exports : Symbol("npm", Decl(npm.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("npm", Decl(npm.js, 0, 0)) +>exports : Symbol("npm", Decl(npm.js, 0, 0)) >tree : Symbol(tree, Decl(npm.js, 2, 43)) } diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportAssignment3.symbols b/testdata/baselines/reference/submodule/conformance/moduleExportAssignment3.symbols index 6c48dba8..be0cc8c9 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportAssignment3.symbols +++ b/testdata/baselines/reference/submodule/conformance/moduleExportAssignment3.symbols @@ -12,12 +12,12 @@ mod() // should be callable from here too === mod.js === module.exports = function x() { } >module.exports : Symbol(export=, Decl(mod.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("mod", Decl(mod.js, 0, 0)) >exports : Symbol(export=, Decl(mod.js, 0, 0)) >x : Symbol(x, Decl(mod.js, 0, 16)) module.exports() // should be callable >module.exports : Symbol(export=, Decl(mod.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("mod", Decl(mod.js, 0, 0)) >exports : Symbol(export=, Decl(mod.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportAssignment3.symbols.diff b/testdata/baselines/reference/submodule/conformance/moduleExportAssignment3.symbols.diff index 8f69b075..bb237297 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportAssignment3.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/moduleExportAssignment3.symbols.diff @@ -7,7 +7,7 @@ ->module.exports : Symbol(module.exports, Decl(mod.js, 0, 0)) ->module : Symbol(export=, Decl(mod.js, 0, 0)) +>module.exports : Symbol(export=, Decl(mod.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("mod", Decl(mod.js, 0, 0)) >exports : Symbol(export=, Decl(mod.js, 0, 0)) >x : Symbol(x, Decl(mod.js, 0, 16)) @@ -16,5 +16,5 @@ ->module : Symbol(module, Decl(mod.js, 0, 0)) ->exports : Symbol(module.exports, Decl(mod.js, 0, 0)) +>module.exports : Symbol(export=, Decl(mod.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("mod", Decl(mod.js, 0, 0)) +>exports : Symbol(export=, Decl(mod.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportAssignment4.symbols b/testdata/baselines/reference/submodule/conformance/moduleExportAssignment4.symbols index 723e4e61..051c5d59 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportAssignment4.symbols +++ b/testdata/baselines/reference/submodule/conformance/moduleExportAssignment4.symbols @@ -8,7 +8,7 @@ exports.default = { m: 1, a: 1 } module.exports = exports['default']; >module.exports : Symbol(export=, Decl(async.js, 0, 32)) ->module : Symbol(module.exports) +>module : Symbol("async", Decl(async.js, 0, 0)) >exports : Symbol(export=, Decl(async.js, 0, 32)) >exports : Symbol("async", Decl(async.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportAssignment4.symbols.diff b/testdata/baselines/reference/submodule/conformance/moduleExportAssignment4.symbols.diff index 2ea079bf..ed507e53 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportAssignment4.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/moduleExportAssignment4.symbols.diff @@ -14,6 +14,6 @@ ->module.exports : Symbol(module.exports, Decl(async.js, 0, 0)) ->module : Symbol(export=, Decl(async.js, 0, 32)) +>module.exports : Symbol(export=, Decl(async.js, 0, 32)) -+>module : Symbol(module.exports) ++>module : Symbol("async", Decl(async.js, 0, 0)) >exports : Symbol(export=, Decl(async.js, 0, 32)) >exports : Symbol("async", Decl(async.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportAssignment5.symbols b/testdata/baselines/reference/submodule/conformance/moduleExportAssignment5.symbols index 88729680..b3a4c7ba 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportAssignment5.symbols +++ b/testdata/baselines/reference/submodule/conformance/moduleExportAssignment5.symbols @@ -21,13 +21,13 @@ axios.m() module.exports = axios; >module.exports : Symbol(axios, Decl(axios.js, 5, 3)) ->module : Symbol(module.exports) +>module : Symbol("axios", Decl(axios.js, 0, 0)) >exports : Symbol(axios, Decl(axios.js, 5, 3)) >axios : Symbol(axios, Decl(axios.js, 5, 3)) module.exports.default = axios; >module.exports : Symbol(axios, Decl(axios.js, 5, 3)) ->module : Symbol(module.exports) +>module : Symbol("axios", Decl(axios.js, 0, 0)) >exports : Symbol(axios, Decl(axios.js, 5, 3)) >axios : Symbol(axios, Decl(axios.js, 5, 3)) diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportAssignment5.symbols.diff b/testdata/baselines/reference/submodule/conformance/moduleExportAssignment5.symbols.diff index ce752a73..8275026f 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportAssignment5.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/moduleExportAssignment5.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(export=, Decl(axios.js, 7, 9)) ->exports : Symbol(export=, Decl(axios.js, 7, 9)) +>module.exports : Symbol(axios, Decl(axios.js, 5, 3)) -+>module : Symbol(module.exports) ++>module : Symbol("axios", Decl(axios.js, 0, 0)) +>exports : Symbol(axios, Decl(axios.js, 5, 3)) >axios : Symbol(axios, Decl(axios.js, 5, 3)) @@ -19,6 +19,6 @@ ->exports : Symbol(module.exports, Decl(axios.js, 0, 0)) ->default : Symbol(default, Decl(axios.js, 8, 23)) +>module.exports : Symbol(axios, Decl(axios.js, 5, 3)) -+>module : Symbol(module.exports) ++>module : Symbol("axios", Decl(axios.js, 0, 0)) +>exports : Symbol(axios, Decl(axios.js, 5, 3)) >axios : Symbol(axios, Decl(axios.js, 5, 3)) diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportAssignment7.symbols b/testdata/baselines/reference/submodule/conformance/moduleExportAssignment7.symbols index 3234127e..02c9e60d 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportAssignment7.symbols +++ b/testdata/baselines/reference/submodule/conformance/moduleExportAssignment7.symbols @@ -18,7 +18,7 @@ function bar() { return 4 } /** @typedef {() => number} buz */ module.exports = { >module.exports : Symbol(export=, Decl(mod.js, 3, 27)) ->module : Symbol(module.exports) +>module : Symbol("mod", Decl(mod.js, 0, 0)) >exports : Symbol(export=, Decl(mod.js, 3, 27)) Thing, diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportAssignment7.symbols.diff b/testdata/baselines/reference/submodule/conformance/moduleExportAssignment7.symbols.diff index 01e08c6e..63cbc827 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportAssignment7.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/moduleExportAssignment7.symbols.diff @@ -7,7 +7,7 @@ ->module.exports : Symbol(module.exports, Decl(mod.js, 0, 0)) ->module : Symbol(export=, Decl(mod.js, 3, 27)) +>module.exports : Symbol(export=, Decl(mod.js, 3, 27)) -+>module : Symbol(module.exports) ++>module : Symbol("mod", Decl(mod.js, 0, 0)) >exports : Symbol(export=, Decl(mod.js, 3, 27)) Thing, diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportDuplicateAlias2.symbols b/testdata/baselines/reference/submodule/conformance/moduleExportDuplicateAlias2.symbols index 6441cf72..6450f513 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportDuplicateAlias2.symbols +++ b/testdata/baselines/reference/submodule/conformance/moduleExportDuplicateAlias2.symbols @@ -13,7 +13,7 @@ apply() module.exports.apply = undefined; >module.exports.apply : Symbol(apply, Decl(moduleExportAliasDuplicateAlias.js, 0, 0), Decl(moduleExportAliasDuplicateAlias.js, 1, 16), Decl(moduleExportAliasDuplicateAlias.js, 2, 25)) >module.exports : Symbol("moduleExportAliasDuplicateAlias", Decl(moduleExportAliasDuplicateAlias.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("moduleExportAliasDuplicateAlias", Decl(moduleExportAliasDuplicateAlias.js, 0, 0)) >exports : Symbol("moduleExportAliasDuplicateAlias", Decl(moduleExportAliasDuplicateAlias.js, 0, 0)) >apply : Symbol(apply, Decl(moduleExportAliasDuplicateAlias.js, 0, 0), Decl(moduleExportAliasDuplicateAlias.js, 1, 16), Decl(moduleExportAliasDuplicateAlias.js, 2, 25)) >undefined : Symbol(undefined) @@ -24,7 +24,7 @@ function a() { } module.exports.apply = a; >module.exports.apply : Symbol(apply, Decl(moduleExportAliasDuplicateAlias.js, 0, 0), Decl(moduleExportAliasDuplicateAlias.js, 1, 16), Decl(moduleExportAliasDuplicateAlias.js, 2, 25)) >module.exports : Symbol("moduleExportAliasDuplicateAlias", Decl(moduleExportAliasDuplicateAlias.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("moduleExportAliasDuplicateAlias", Decl(moduleExportAliasDuplicateAlias.js, 0, 0)) >exports : Symbol("moduleExportAliasDuplicateAlias", Decl(moduleExportAliasDuplicateAlias.js, 0, 0)) >apply : Symbol(apply, Decl(moduleExportAliasDuplicateAlias.js, 0, 0), Decl(moduleExportAliasDuplicateAlias.js, 1, 16), Decl(moduleExportAliasDuplicateAlias.js, 2, 25)) >a : Symbol(a, Decl(moduleExportAliasDuplicateAlias.js, 0, 33)) @@ -32,7 +32,7 @@ module.exports.apply = a; module.exports.apply = a; >module.exports.apply : Symbol(apply, Decl(moduleExportAliasDuplicateAlias.js, 0, 0), Decl(moduleExportAliasDuplicateAlias.js, 1, 16), Decl(moduleExportAliasDuplicateAlias.js, 2, 25)) >module.exports : Symbol("moduleExportAliasDuplicateAlias", Decl(moduleExportAliasDuplicateAlias.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("moduleExportAliasDuplicateAlias", Decl(moduleExportAliasDuplicateAlias.js, 0, 0)) >exports : Symbol("moduleExportAliasDuplicateAlias", Decl(moduleExportAliasDuplicateAlias.js, 0, 0)) >apply : Symbol(apply, Decl(moduleExportAliasDuplicateAlias.js, 0, 0), Decl(moduleExportAliasDuplicateAlias.js, 1, 16), Decl(moduleExportAliasDuplicateAlias.js, 2, 25)) >a : Symbol(a, Decl(moduleExportAliasDuplicateAlias.js, 0, 33)) @@ -40,7 +40,7 @@ module.exports.apply = a; module.exports.apply() >module.exports.apply : Symbol(apply, Decl(moduleExportAliasDuplicateAlias.js, 0, 0), Decl(moduleExportAliasDuplicateAlias.js, 1, 16), Decl(moduleExportAliasDuplicateAlias.js, 2, 25)) >module.exports : Symbol("moduleExportAliasDuplicateAlias", Decl(moduleExportAliasDuplicateAlias.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("moduleExportAliasDuplicateAlias", Decl(moduleExportAliasDuplicateAlias.js, 0, 0)) >exports : Symbol("moduleExportAliasDuplicateAlias", Decl(moduleExportAliasDuplicateAlias.js, 0, 0)) >apply : Symbol(apply, Decl(moduleExportAliasDuplicateAlias.js, 0, 0), Decl(moduleExportAliasDuplicateAlias.js, 1, 16), Decl(moduleExportAliasDuplicateAlias.js, 2, 25)) diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportDuplicateAlias2.symbols.diff b/testdata/baselines/reference/submodule/conformance/moduleExportDuplicateAlias2.symbols.diff index 265c5d37..3f73d440 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportDuplicateAlias2.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/moduleExportDuplicateAlias2.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(module, Decl(moduleExportAliasDuplicateAlias.js, 0, 0)) ->exports : Symbol(module.exports, Decl(moduleExportAliasDuplicateAlias.js, 0, 0)) +>module.exports : Symbol("moduleExportAliasDuplicateAlias", Decl(moduleExportAliasDuplicateAlias.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("moduleExportAliasDuplicateAlias", Decl(moduleExportAliasDuplicateAlias.js, 0, 0)) +>exports : Symbol("moduleExportAliasDuplicateAlias", Decl(moduleExportAliasDuplicateAlias.js, 0, 0)) >apply : Symbol(apply, Decl(moduleExportAliasDuplicateAlias.js, 0, 0), Decl(moduleExportAliasDuplicateAlias.js, 1, 16), Decl(moduleExportAliasDuplicateAlias.js, 2, 25)) >undefined : Symbol(undefined) @@ -21,7 +21,7 @@ ->module : Symbol(module, Decl(moduleExportAliasDuplicateAlias.js, 0, 0)) ->exports : Symbol(module.exports, Decl(moduleExportAliasDuplicateAlias.js, 0, 0)) +>module.exports : Symbol("moduleExportAliasDuplicateAlias", Decl(moduleExportAliasDuplicateAlias.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("moduleExportAliasDuplicateAlias", Decl(moduleExportAliasDuplicateAlias.js, 0, 0)) +>exports : Symbol("moduleExportAliasDuplicateAlias", Decl(moduleExportAliasDuplicateAlias.js, 0, 0)) >apply : Symbol(apply, Decl(moduleExportAliasDuplicateAlias.js, 0, 0), Decl(moduleExportAliasDuplicateAlias.js, 1, 16), Decl(moduleExportAliasDuplicateAlias.js, 2, 25)) >a : Symbol(a, Decl(moduleExportAliasDuplicateAlias.js, 0, 33)) @@ -32,7 +32,7 @@ ->module : Symbol(module, Decl(moduleExportAliasDuplicateAlias.js, 0, 0)) ->exports : Symbol(module.exports, Decl(moduleExportAliasDuplicateAlias.js, 0, 0)) +>module.exports : Symbol("moduleExportAliasDuplicateAlias", Decl(moduleExportAliasDuplicateAlias.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("moduleExportAliasDuplicateAlias", Decl(moduleExportAliasDuplicateAlias.js, 0, 0)) +>exports : Symbol("moduleExportAliasDuplicateAlias", Decl(moduleExportAliasDuplicateAlias.js, 0, 0)) >apply : Symbol(apply, Decl(moduleExportAliasDuplicateAlias.js, 0, 0), Decl(moduleExportAliasDuplicateAlias.js, 1, 16), Decl(moduleExportAliasDuplicateAlias.js, 2, 25)) >a : Symbol(a, Decl(moduleExportAliasDuplicateAlias.js, 0, 33)) @@ -43,6 +43,6 @@ ->module : Symbol(module, Decl(moduleExportAliasDuplicateAlias.js, 0, 0)) ->exports : Symbol(module.exports, Decl(moduleExportAliasDuplicateAlias.js, 0, 0)) +>module.exports : Symbol("moduleExportAliasDuplicateAlias", Decl(moduleExportAliasDuplicateAlias.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("moduleExportAliasDuplicateAlias", Decl(moduleExportAliasDuplicateAlias.js, 0, 0)) +>exports : Symbol("moduleExportAliasDuplicateAlias", Decl(moduleExportAliasDuplicateAlias.js, 0, 0)) >apply : Symbol(apply, Decl(moduleExportAliasDuplicateAlias.js, 0, 0), Decl(moduleExportAliasDuplicateAlias.js, 1, 16), Decl(moduleExportAliasDuplicateAlias.js, 2, 25)) diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportNestedNamespaces.symbols b/testdata/baselines/reference/submodule/conformance/moduleExportNestedNamespaces.symbols index 70e19438..663b3b79 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportNestedNamespaces.symbols +++ b/testdata/baselines/reference/submodule/conformance/moduleExportNestedNamespaces.symbols @@ -4,14 +4,14 @@ module.exports.n = {}; >module.exports.n : Symbol(n, Decl(mod.js, 0, 0)) >module.exports : Symbol("mod", Decl(mod.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("mod", Decl(mod.js, 0, 0)) >exports : Symbol("mod", Decl(mod.js, 0, 0)) >n : Symbol(n, Decl(mod.js, 0, 0)) module.exports.n.K = function C() { >module.exports.n : Symbol(n, Decl(mod.js, 0, 0)) >module.exports : Symbol("mod", Decl(mod.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("mod", Decl(mod.js, 0, 0)) >exports : Symbol("mod", Decl(mod.js, 0, 0)) >n : Symbol(n, Decl(mod.js, 0, 0)) >C : Symbol(C, Decl(mod.js, 1, 20)) @@ -21,7 +21,7 @@ module.exports.n.K = function C() { module.exports.Classic = class { >module.exports.Classic : Symbol(Classic, Decl(mod.js, 3, 1)) >module.exports : Symbol("mod", Decl(mod.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("mod", Decl(mod.js, 0, 0)) >exports : Symbol("mod", Decl(mod.js, 0, 0)) >Classic : Symbol(Classic, Decl(mod.js, 3, 1)) diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportNestedNamespaces.symbols.diff b/testdata/baselines/reference/submodule/conformance/moduleExportNestedNamespaces.symbols.diff index 2595bc30..cac6137b 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportNestedNamespaces.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/moduleExportNestedNamespaces.symbols.diff @@ -11,7 +11,7 @@ ->n : Symbol(n, Decl(mod.js, 0, 0), Decl(mod.js, 1, 15)) +>module.exports.n : Symbol(n, Decl(mod.js, 0, 0)) +>module.exports : Symbol("mod", Decl(mod.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("mod", Decl(mod.js, 0, 0)) +>exports : Symbol("mod", Decl(mod.js, 0, 0)) +>n : Symbol(n, Decl(mod.js, 0, 0)) @@ -25,7 +25,7 @@ ->K : Symbol(n.K, Decl(mod.js, 0, 22)) +>module.exports.n : Symbol(n, Decl(mod.js, 0, 0)) +>module.exports : Symbol("mod", Decl(mod.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("mod", Decl(mod.js, 0, 0)) +>exports : Symbol("mod", Decl(mod.js, 0, 0)) +>n : Symbol(n, Decl(mod.js, 0, 0)) >C : Symbol(C, Decl(mod.js, 1, 20)) @@ -41,7 +41,7 @@ ->module : Symbol(module, Decl(mod.js, 0, 0)) ->exports : Symbol(module.exports, Decl(mod.js, 0, 0)) +>module.exports : Symbol("mod", Decl(mod.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("mod", Decl(mod.js, 0, 0)) +>exports : Symbol("mod", Decl(mod.js, 0, 0)) >Classic : Symbol(Classic, Decl(mod.js, 3, 1)) diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportPropertyAssignmentDefault.symbols b/testdata/baselines/reference/submodule/conformance/moduleExportPropertyAssignmentDefault.symbols index 49ff0d0d..cb362de5 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportPropertyAssignmentDefault.symbols +++ b/testdata/baselines/reference/submodule/conformance/moduleExportPropertyAssignmentDefault.symbols @@ -6,13 +6,13 @@ var axios = {} module.exports = axios // both assignments should be ok >module.exports : Symbol(axios, Decl(axios.js, 0, 3)) ->module : Symbol(module.exports) +>module : Symbol("axios", Decl(axios.js, 0, 0)) >exports : Symbol(axios, Decl(axios.js, 0, 3)) >axios : Symbol(axios, Decl(axios.js, 0, 3)) module.exports.default = axios >module.exports : Symbol(axios, Decl(axios.js, 0, 3)) ->module : Symbol(module.exports) +>module : Symbol("axios", Decl(axios.js, 0, 0)) >exports : Symbol(axios, Decl(axios.js, 0, 3)) >axios : Symbol(axios, Decl(axios.js, 0, 3)) diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportPropertyAssignmentDefault.symbols.diff b/testdata/baselines/reference/submodule/conformance/moduleExportPropertyAssignmentDefault.symbols.diff index d12f7626..1ab00d8e 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportPropertyAssignmentDefault.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/moduleExportPropertyAssignmentDefault.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(export=, Decl(axios.js, 0, 14)) ->exports : Symbol(export=, Decl(axios.js, 0, 14)) +>module.exports : Symbol(axios, Decl(axios.js, 0, 3)) -+>module : Symbol(module.exports) ++>module : Symbol("axios", Decl(axios.js, 0, 0)) +>exports : Symbol(axios, Decl(axios.js, 0, 3)) >axios : Symbol(axios, Decl(axios.js, 0, 3)) @@ -19,6 +19,6 @@ ->exports : Symbol(module.exports, Decl(axios.js, 0, 0)) ->default : Symbol(default, Decl(axios.js, 1, 22)) +>module.exports : Symbol(axios, Decl(axios.js, 0, 3)) -+>module : Symbol(module.exports) ++>module : Symbol("axios", Decl(axios.js, 0, 0)) +>exports : Symbol(axios, Decl(axios.js, 0, 3)) >axios : Symbol(axios, Decl(axios.js, 0, 3)) diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment.symbols b/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment.symbols index 72949ef0..d3c02b70 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment.symbols +++ b/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment.symbols @@ -26,13 +26,13 @@ declare function require(name: string): any; /// module.exports = function () { } >module.exports : Symbol(export=, Decl(mod1.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("mod1", Decl(mod1.js, 0, 0)) >exports : Symbol(export=, Decl(mod1.js, 0, 0)) /** @param {number} a */ module.exports.f = function (a) { } >module.exports : Symbol(export=, Decl(mod1.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("mod1", Decl(mod1.js, 0, 0)) >exports : Symbol(export=, Decl(mod1.js, 0, 0)) >a : Symbol(a, Decl(mod1.js, 3, 29)) diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment.symbols.diff b/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment.symbols.diff index 1f47a437..81efbac9 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment.symbols.diff @@ -17,7 +17,7 @@ ->module.exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) ->module : Symbol(export=, Decl(mod1.js, 0, 0)) +>module.exports : Symbol(export=, Decl(mod1.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("mod1", Decl(mod1.js, 0, 0)) >exports : Symbol(export=, Decl(mod1.js, 0, 0)) /** @param {number} a */ @@ -28,6 +28,6 @@ ->exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) ->f : Symbol(f, Decl(mod1.js, 1, 32)) +>module.exports : Symbol(export=, Decl(mod1.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol(export=, Decl(mod1.js, 0, 0)) >a : Symbol(a, Decl(mod1.js, 3, 29)) diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment2.symbols b/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment2.symbols index 8d1c0328..dd66d191 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment2.symbols +++ b/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment2.symbols @@ -28,11 +28,11 @@ declare function require(name: string): any; /// module.exports = 1 >module.exports : Symbol(export=, Decl(mod1.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("mod1", Decl(mod1.js, 0, 0)) >exports : Symbol(export=, Decl(mod1.js, 0, 0)) module.exports.f = function () { } >module.exports : Symbol(export=, Decl(mod1.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("mod1", Decl(mod1.js, 0, 0)) >exports : Symbol(export=, Decl(mod1.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment2.symbols.diff b/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment2.symbols.diff index 7ae02876..a491c61f 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment2.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment2.symbols.diff @@ -7,7 +7,7 @@ ->module.exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) ->module : Symbol(export=, Decl(mod1.js, 0, 0)) +>module.exports : Symbol(export=, Decl(mod1.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("mod1", Decl(mod1.js, 0, 0)) >exports : Symbol(export=, Decl(mod1.js, 0, 0)) module.exports.f = function () { } @@ -16,5 +16,5 @@ ->exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) ->f : Symbol(f, Decl(mod1.js, 1, 18)) +>module.exports : Symbol(export=, Decl(mod1.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol(export=, Decl(mod1.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment3.symbols b/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment3.symbols index 87abe7ab..192a2bc5 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment3.symbols +++ b/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment3.symbols @@ -45,13 +45,13 @@ declare function require(name: string): any; module.exports.bothBefore = 'string' >module.exports.bothBefore : Symbol(bothBefore, Decl(mod1.js, 3, 18)) >module.exports : Symbol(export=, Decl(mod1.js, 1, 36)) ->module : Symbol(module.exports) +>module : Symbol("mod1", Decl(mod1.js, 0, 0)) >exports : Symbol(export=, Decl(mod1.js, 1, 36)) >bothBefore : Symbol(bothBefore, Decl(mod1.js, 3, 18)) module.exports = { >module.exports : Symbol(export=, Decl(mod1.js, 1, 36)) ->module : Symbol(module.exports) +>module : Symbol("mod1", Decl(mod1.js, 0, 0)) >exports : Symbol(export=, Decl(mod1.js, 1, 36)) justExport: 1, @@ -66,12 +66,12 @@ module.exports = { module.exports.bothAfter = 'string' >module.exports.bothAfter : Symbol(bothAfter, Decl(mod1.js, 4, 18)) >module.exports : Symbol(export=, Decl(mod1.js, 1, 36)) ->module : Symbol(module.exports) +>module : Symbol("mod1", Decl(mod1.js, 0, 0)) >exports : Symbol(export=, Decl(mod1.js, 1, 36)) >bothAfter : Symbol(bothAfter, Decl(mod1.js, 4, 18)) module.exports.justProperty = 'string' >module.exports : Symbol(export=, Decl(mod1.js, 1, 36)) ->module : Symbol(module.exports) +>module : Symbol("mod1", Decl(mod1.js, 0, 0)) >exports : Symbol(export=, Decl(mod1.js, 1, 36)) diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment3.symbols.diff b/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment3.symbols.diff index 5899a74a..2a7693d4 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment3.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment3.symbols.diff @@ -41,7 +41,7 @@ ->bothBefore : Symbol(bothBefore, Decl(mod1.js, 0, 0)) +>module.exports.bothBefore : Symbol(bothBefore, Decl(mod1.js, 3, 18)) +>module.exports : Symbol(export=, Decl(mod1.js, 1, 36)) -+>module : Symbol(module.exports) ++>module : Symbol("mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol(export=, Decl(mod1.js, 1, 36)) +>bothBefore : Symbol(bothBefore, Decl(mod1.js, 3, 18)) @@ -49,7 +49,7 @@ ->module.exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) ->module : Symbol(export=, Decl(mod1.js, 1, 36)) +>module.exports : Symbol(export=, Decl(mod1.js, 1, 36)) -+>module : Symbol(module.exports) ++>module : Symbol("mod1", Decl(mod1.js, 0, 0)) >exports : Symbol(export=, Decl(mod1.js, 1, 36)) justExport: 1, @@ -64,7 +64,7 @@ ->bothAfter : Symbol(bothAfter, Decl(mod1.js, 6, 1)) +>module.exports.bothAfter : Symbol(bothAfter, Decl(mod1.js, 4, 18)) +>module.exports : Symbol(export=, Decl(mod1.js, 1, 36)) -+>module : Symbol(module.exports) ++>module : Symbol("mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol(export=, Decl(mod1.js, 1, 36)) +>bothAfter : Symbol(bothAfter, Decl(mod1.js, 4, 18)) @@ -75,5 +75,5 @@ ->exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) ->justProperty : Symbol(justProperty, Decl(mod1.js, 7, 35)) +>module.exports : Symbol(export=, Decl(mod1.js, 1, 36)) -+>module : Symbol(module.exports) ++>module : Symbol("mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol(export=, Decl(mod1.js, 1, 36)) diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment4.symbols b/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment4.symbols index ae3aed29..b1275397 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment4.symbols +++ b/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment4.symbols @@ -45,7 +45,7 @@ declare function require(name: string): any; module.exports.bothBefore = 'string' >module.exports.bothBefore : Symbol(A.bothBefore, Decl(mod1.js, 2, 16)) >module.exports : Symbol(A, Decl(mod1.js, 5, 18)) ->module : Symbol(module.exports) +>module : Symbol("mod1", Decl(mod1.js, 0, 0)) >exports : Symbol(A, Decl(mod1.js, 5, 18)) >bothBefore : Symbol(A.bothBefore, Decl(mod1.js, 2, 16)) @@ -66,7 +66,7 @@ A.bothAfter = 3 module.exports = A >module.exports : Symbol(A, Decl(mod1.js, 5, 18)) ->module : Symbol(module.exports) +>module : Symbol("mod1", Decl(mod1.js, 0, 0)) >exports : Symbol(A, Decl(mod1.js, 5, 18)) >A : Symbol(A, Decl(mod1.js, 5, 18)) @@ -78,12 +78,12 @@ function A() { module.exports.bothAfter = 'string' >module.exports.bothAfter : Symbol(A.bothAfter, Decl(mod1.js, 3, 16)) >module.exports : Symbol(A, Decl(mod1.js, 5, 18)) ->module : Symbol(module.exports) +>module : Symbol("mod1", Decl(mod1.js, 0, 0)) >exports : Symbol(A, Decl(mod1.js, 5, 18)) >bothAfter : Symbol(A.bothAfter, Decl(mod1.js, 3, 16)) module.exports.justProperty = 'string' >module.exports : Symbol(A, Decl(mod1.js, 5, 18)) ->module : Symbol(module.exports) +>module : Symbol("mod1", Decl(mod1.js, 0, 0)) >exports : Symbol(A, Decl(mod1.js, 5, 18)) diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment4.symbols.diff b/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment4.symbols.diff index a1473001..6164d664 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment4.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/moduleExportWithExportPropertyAssignment4.symbols.diff @@ -41,7 +41,7 @@ ->bothBefore : Symbol(bothBefore, Decl(mod1.js, 2, 16), Decl(mod1.js, 0, 0)) +>module.exports.bothBefore : Symbol(A.bothBefore, Decl(mod1.js, 2, 16)) +>module.exports : Symbol(A, Decl(mod1.js, 5, 18)) -+>module : Symbol(module.exports) ++>module : Symbol("mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol(A, Decl(mod1.js, 5, 18)) +>bothBefore : Symbol(A.bothBefore, Decl(mod1.js, 2, 16)) @@ -73,7 +73,7 @@ ->exports : Symbol(export=, Decl(mod1.js, 4, 15)) ->A : Symbol(A, Decl(mod1.js, 5, 18), Decl(mod1.js, 1, 36), Decl(mod1.js, 2, 16), Decl(mod1.js, 3, 16)) +>module.exports : Symbol(A, Decl(mod1.js, 5, 18)) -+>module : Symbol(module.exports) ++>module : Symbol("mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol(A, Decl(mod1.js, 5, 18)) +>A : Symbol(A, Decl(mod1.js, 5, 18)) @@ -94,7 +94,7 @@ ->bothAfter : Symbol(bothAfter, Decl(mod1.js, 3, 16), Decl(mod1.js, 8, 1)) +>module.exports.bothAfter : Symbol(A.bothAfter, Decl(mod1.js, 3, 16)) +>module.exports : Symbol(A, Decl(mod1.js, 5, 18)) -+>module : Symbol(module.exports) ++>module : Symbol("mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol(A, Decl(mod1.js, 5, 18)) +>bothAfter : Symbol(A.bothAfter, Decl(mod1.js, 3, 16)) @@ -105,5 +105,5 @@ ->exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) ->justProperty : Symbol(justProperty, Decl(mod1.js, 9, 35)) +>module.exports : Symbol(A, Decl(mod1.js, 5, 18)) -+>module : Symbol(module.exports) ++>module : Symbol("mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol(A, Decl(mod1.js, 5, 18)) diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportsElementAccessAssignment.symbols b/testdata/baselines/reference/submodule/conformance/moduleExportsElementAccessAssignment.symbols index de860794..f133604c 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportsElementAccessAssignment.symbols +++ b/testdata/baselines/reference/submodule/conformance/moduleExportsElementAccessAssignment.symbols @@ -55,18 +55,18 @@ exports["default"] = { x: "x" }; module.exports["c"] = { x: "x" }; >module.exports : Symbol("mod1", Decl(mod1.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("mod1", Decl(mod1.js, 0, 0)) >exports : Symbol("mod1", Decl(mod1.js, 0, 0)) >"c" : Symbol("c", Decl(mod1.js, 2, 32)) >x : Symbol(x, Decl(mod1.js, 3, 23)) module["exports"]["d"] = {}; ->module : Symbol(module.exports) +>module : Symbol("mod1", Decl(mod1.js, 0, 0)) >"exports" : Symbol("mod1", Decl(mod1.js, 0, 0)) >"d" : Symbol("d", Decl(mod1.js, 3, 33)) module["exports"]["d"].e = 0; ->module : Symbol(module.exports) +>module : Symbol("mod1", Decl(mod1.js, 0, 0)) >"exports" : Symbol("mod1", Decl(mod1.js, 0, 0)) >"d" : Symbol("d", Decl(mod1.js, 3, 33)) diff --git a/testdata/baselines/reference/submodule/conformance/moduleExportsElementAccessAssignment.symbols.diff b/testdata/baselines/reference/submodule/conformance/moduleExportsElementAccessAssignment.symbols.diff index 9cffee87..8fc37933 100644 --- a/testdata/baselines/reference/submodule/conformance/moduleExportsElementAccessAssignment.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/moduleExportsElementAccessAssignment.symbols.diff @@ -38,7 +38,7 @@ ->module : Symbol(module, Decl(mod1.js, 2, 32)) ->exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) +>module.exports : Symbol("mod1", Decl(mod1.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol("mod1", Decl(mod1.js, 0, 0)) >"c" : Symbol("c", Decl(mod1.js, 2, 32)) >x : Symbol(x, Decl(mod1.js, 3, 23)) @@ -47,7 +47,7 @@ ->module : Symbol(module, Decl(mod1.js, 2, 32)) ->"exports" : Symbol(module.exports, Decl(mod1.js, 0, 0)) ->"d" : Symbol("d", Decl(mod1.js, 3, 33), Decl(mod1.js, 5, 18)) -+>module : Symbol(module.exports) ++>module : Symbol("mod1", Decl(mod1.js, 0, 0)) +>"exports" : Symbol("mod1", Decl(mod1.js, 0, 0)) +>"d" : Symbol("d", Decl(mod1.js, 3, 33)) @@ -57,6 +57,6 @@ ->"exports" : Symbol(module.exports, Decl(mod1.js, 0, 0)) ->"d" : Symbol("d", Decl(mod1.js, 3, 33), Decl(mod1.js, 5, 18)) ->e : Symbol("d".e, Decl(mod1.js, 4, 28)) -+>module : Symbol(module.exports) ++>module : Symbol("mod1", Decl(mod1.js, 0, 0)) +>"exports" : Symbol("mod1", Decl(mod1.js, 0, 0)) +>"d" : Symbol("d", Decl(mod1.js, 3, 33)) diff --git a/testdata/baselines/reference/submodule/conformance/nestedDestructuringOfRequire.symbols b/testdata/baselines/reference/submodule/conformance/nestedDestructuringOfRequire.symbols index 3a19abbb..28c4b395 100644 --- a/testdata/baselines/reference/submodule/conformance/nestedDestructuringOfRequire.symbols +++ b/testdata/baselines/reference/submodule/conformance/nestedDestructuringOfRequire.symbols @@ -26,7 +26,7 @@ const chalk = { module.exports.chalk = chalk >module.exports.chalk : Symbol(chalk, Decl(mod1.js, 2, 2)) >module.exports : Symbol("mod1", Decl(mod1.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("mod1", Decl(mod1.js, 0, 0)) >exports : Symbol("mod1", Decl(mod1.js, 0, 0)) >chalk : Symbol(chalk, Decl(mod1.js, 2, 2)) >chalk : Symbol(chalk, Decl(mod1.js, 0, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/nestedDestructuringOfRequire.symbols.diff b/testdata/baselines/reference/submodule/conformance/nestedDestructuringOfRequire.symbols.diff index 63b4392e..89f4935a 100644 --- a/testdata/baselines/reference/submodule/conformance/nestedDestructuringOfRequire.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/nestedDestructuringOfRequire.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(module, Decl(mod1.js, 2, 2)) ->exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) +>module.exports : Symbol("mod1", Decl(mod1.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol("mod1", Decl(mod1.js, 0, 0)) >chalk : Symbol(chalk, Decl(mod1.js, 2, 2)) >chalk : Symbol(chalk, Decl(mod1.js, 0, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/neverReturningFunctions1.errors.txt b/testdata/baselines/reference/submodule/conformance/neverReturningFunctions1.errors.txt index 8a7a8837..a15d15e1 100644 --- a/testdata/baselines/reference/submodule/conformance/neverReturningFunctions1.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/neverReturningFunctions1.errors.txt @@ -13,7 +13,6 @@ neverReturningFunctions1.ts(101,13): error TS7027: Unreachable code detected. neverReturningFunctions1.ts(103,9): error TS7027: Unreachable code detected. neverReturningFunctions1.ts(105,5): error TS7027: Unreachable code detected. neverReturningFunctions1.ts(111,9): error TS7027: Unreachable code detected. -neverReturningFunctions1.ts(112,9): error TS7027: Unreachable code detected. neverReturningFunctions1.ts(122,9): error TS7027: Unreachable code detected. neverReturningFunctions1.ts(127,9): error TS7027: Unreachable code detected. neverReturningFunctions1.ts(129,5): error TS7027: Unreachable code detected. @@ -23,7 +22,7 @@ neverReturningFunctions1.ts(148,9): error TS7027: Unreachable code detected. neverReturningFunctions1.ts(153,5): error TS7027: Unreachable code detected. -==== neverReturningFunctions1.ts (23 errors) ==== +==== neverReturningFunctions1.ts (22 errors) ==== function fail(message?: string): never { throw new Error(message); } @@ -163,10 +162,9 @@ neverReturningFunctions1.ts(153,5): error TS7027: Unreachable code detected. if (typeof x.a === "string") { fail(); x; // Unreachable - ~~ -!!! error TS7027: Unreachable code detected. + ~~~~~~~~~~~~~~~~~~~~ x.a; // Unreachable - ~~~~ + ~~~~~~~~~~~~ !!! error TS7027: Unreachable code detected. } x; // { a: string | number } diff --git a/testdata/baselines/reference/submodule/conformance/neverReturningFunctions1.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/neverReturningFunctions1.errors.txt.diff new file mode 100644 index 00000000..3f7c033e --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/neverReturningFunctions1.errors.txt.diff @@ -0,0 +1,32 @@ +--- old.neverReturningFunctions1.errors.txt ++++ new.neverReturningFunctions1.errors.txt +@@= skipped -12, +12 lines =@@ + neverReturningFunctions1.ts(103,9): error TS7027: Unreachable code detected. + neverReturningFunctions1.ts(105,5): error TS7027: Unreachable code detected. + neverReturningFunctions1.ts(111,9): error TS7027: Unreachable code detected. +-neverReturningFunctions1.ts(112,9): error TS7027: Unreachable code detected. + neverReturningFunctions1.ts(122,9): error TS7027: Unreachable code detected. + neverReturningFunctions1.ts(127,9): error TS7027: Unreachable code detected. + neverReturningFunctions1.ts(129,5): error TS7027: Unreachable code detected. +@@= skipped -10, +9 lines =@@ + neverReturningFunctions1.ts(153,5): error TS7027: Unreachable code detected. + + +-==== neverReturningFunctions1.ts (23 errors) ==== ++==== neverReturningFunctions1.ts (22 errors) ==== + function fail(message?: string): never { + throw new Error(message); + } +@@= skipped -140, +140 lines =@@ + if (typeof x.a === "string") { + fail(); + x; // Unreachable +- ~~ +-!!! error TS7027: Unreachable code detected. ++ ~~~~~~~~~~~~~~~~~~~~ + x.a; // Unreachable +- ~~~~ ++ ~~~~~~~~~~~~ + !!! error TS7027: Unreachable code detected. + } + x; // { a: string | number } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node16).symbols b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node16).symbols index 406c1eb5..d3940d33 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node16).symbols +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node16).symbols @@ -15,7 +15,7 @@ const a = {}; module.exports = a; >module.exports : Symbol(a, Decl(file.js, 1, 5)) ->module : Symbol(module.exports) +>module : Symbol("subfolder/file", Decl(file.js, 0, 0)) >exports : Symbol(a, Decl(file.js, 1, 5)) >a : Symbol(a, Decl(file.js, 1, 5)) @@ -35,7 +35,7 @@ const a = {}; module.exports = a; >module.exports : Symbol(a, Decl(file.js, 2, 5)) ->module : Symbol(module.exports) +>module : Symbol("file", Decl(file.js, 0, 0)) >exports : Symbol(a, Decl(file.js, 2, 5)) >a : Symbol(a, Decl(file.js, 2, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node16).symbols.diff b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node16).symbols.diff index b08530b9..8fcb7c1f 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node16).symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node16).symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(export=, Decl(file.js, 1, 13)) ->exports : Symbol(export=, Decl(file.js, 1, 13)) +>module.exports : Symbol(a, Decl(file.js, 1, 5)) -+>module : Symbol(module.exports) ++>module : Symbol("subfolder/file", Decl(file.js, 0, 0)) +>exports : Symbol(a, Decl(file.js, 1, 5)) >a : Symbol(a, Decl(file.js, 1, 5)) @@ -18,6 +18,6 @@ module.exports = a; +>module.exports : Symbol(a, Decl(file.js, 2, 5)) -+>module : Symbol(module.exports) ++>module : Symbol("file", Decl(file.js, 0, 0)) +>exports : Symbol(a, Decl(file.js, 2, 5)) >a : Symbol(a, Decl(file.js, 2, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node18).symbols b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node18).symbols index 406c1eb5..d3940d33 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node18).symbols +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node18).symbols @@ -15,7 +15,7 @@ const a = {}; module.exports = a; >module.exports : Symbol(a, Decl(file.js, 1, 5)) ->module : Symbol(module.exports) +>module : Symbol("subfolder/file", Decl(file.js, 0, 0)) >exports : Symbol(a, Decl(file.js, 1, 5)) >a : Symbol(a, Decl(file.js, 1, 5)) @@ -35,7 +35,7 @@ const a = {}; module.exports = a; >module.exports : Symbol(a, Decl(file.js, 2, 5)) ->module : Symbol(module.exports) +>module : Symbol("file", Decl(file.js, 0, 0)) >exports : Symbol(a, Decl(file.js, 2, 5)) >a : Symbol(a, Decl(file.js, 2, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node18).symbols.diff b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node18).symbols.diff index ead06d0c..6fb73df4 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node18).symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node18).symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(export=, Decl(file.js, 1, 13)) ->exports : Symbol(export=, Decl(file.js, 1, 13)) +>module.exports : Symbol(a, Decl(file.js, 1, 5)) -+>module : Symbol(module.exports) ++>module : Symbol("subfolder/file", Decl(file.js, 0, 0)) +>exports : Symbol(a, Decl(file.js, 1, 5)) >a : Symbol(a, Decl(file.js, 1, 5)) @@ -18,6 +18,6 @@ module.exports = a; +>module.exports : Symbol(a, Decl(file.js, 2, 5)) -+>module : Symbol(module.exports) ++>module : Symbol("file", Decl(file.js, 0, 0)) +>exports : Symbol(a, Decl(file.js, 2, 5)) >a : Symbol(a, Decl(file.js, 2, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node20).symbols b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node20).symbols index 406c1eb5..d3940d33 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node20).symbols +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node20).symbols @@ -15,7 +15,7 @@ const a = {}; module.exports = a; >module.exports : Symbol(a, Decl(file.js, 1, 5)) ->module : Symbol(module.exports) +>module : Symbol("subfolder/file", Decl(file.js, 0, 0)) >exports : Symbol(a, Decl(file.js, 1, 5)) >a : Symbol(a, Decl(file.js, 1, 5)) @@ -35,7 +35,7 @@ const a = {}; module.exports = a; >module.exports : Symbol(a, Decl(file.js, 2, 5)) ->module : Symbol(module.exports) +>module : Symbol("file", Decl(file.js, 0, 0)) >exports : Symbol(a, Decl(file.js, 2, 5)) >a : Symbol(a, Decl(file.js, 2, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node20).symbols.diff b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node20).symbols.diff index fc851ba9..ff471797 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node20).symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node20).symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(export=, Decl(file.js, 1, 13)) ->exports : Symbol(export=, Decl(file.js, 1, 13)) +>module.exports : Symbol(a, Decl(file.js, 1, 5)) -+>module : Symbol(module.exports) ++>module : Symbol("subfolder/file", Decl(file.js, 0, 0)) +>exports : Symbol(a, Decl(file.js, 1, 5)) >a : Symbol(a, Decl(file.js, 1, 5)) @@ -18,6 +18,6 @@ module.exports = a; +>module.exports : Symbol(a, Decl(file.js, 2, 5)) -+>module : Symbol(module.exports) ++>module : Symbol("file", Decl(file.js, 0, 0)) +>exports : Symbol(a, Decl(file.js, 2, 5)) >a : Symbol(a, Decl(file.js, 2, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=nodenext).symbols b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=nodenext).symbols index 406c1eb5..d3940d33 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=nodenext).symbols +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=nodenext).symbols @@ -15,7 +15,7 @@ const a = {}; module.exports = a; >module.exports : Symbol(a, Decl(file.js, 1, 5)) ->module : Symbol(module.exports) +>module : Symbol("subfolder/file", Decl(file.js, 0, 0)) >exports : Symbol(a, Decl(file.js, 1, 5)) >a : Symbol(a, Decl(file.js, 1, 5)) @@ -35,7 +35,7 @@ const a = {}; module.exports = a; >module.exports : Symbol(a, Decl(file.js, 2, 5)) ->module : Symbol(module.exports) +>module : Symbol("file", Decl(file.js, 0, 0)) >exports : Symbol(a, Decl(file.js, 2, 5)) >a : Symbol(a, Decl(file.js, 2, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=nodenext).symbols.diff b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=nodenext).symbols.diff index 7da4e3ec..1e30b29f 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=nodenext).symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=nodenext).symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(export=, Decl(file.js, 1, 13)) ->exports : Symbol(export=, Decl(file.js, 1, 13)) +>module.exports : Symbol(a, Decl(file.js, 1, 5)) -+>module : Symbol(module.exports) ++>module : Symbol("subfolder/file", Decl(file.js, 0, 0)) +>exports : Symbol(a, Decl(file.js, 1, 5)) >a : Symbol(a, Decl(file.js, 1, 5)) @@ -18,6 +18,6 @@ module.exports = a; +>module.exports : Symbol(a, Decl(file.js, 2, 5)) -+>module : Symbol(module.exports) ++>module : Symbol("file", Decl(file.js, 0, 0)) +>exports : Symbol(a, Decl(file.js, 2, 5)) >a : Symbol(a, Decl(file.js, 2, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/paramTagTypeResolution.symbols b/testdata/baselines/reference/submodule/conformance/paramTagTypeResolution.symbols index 27794910..c48e0f82 100644 --- a/testdata/baselines/reference/submodule/conformance/paramTagTypeResolution.symbols +++ b/testdata/baselines/reference/submodule/conformance/paramTagTypeResolution.symbols @@ -17,7 +17,7 @@ f(1, n => { }) */ module.exports = function (x, k) { return k(x) } >module.exports : Symbol(export=, Decl(first.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("first", Decl(first.js, 0, 0)) >exports : Symbol(export=, Decl(first.js, 0, 0)) >x : Symbol(x, Decl(first.js, 4, 27)) >k : Symbol(k, Decl(first.js, 4, 29)) diff --git a/testdata/baselines/reference/submodule/conformance/paramTagTypeResolution.symbols.diff b/testdata/baselines/reference/submodule/conformance/paramTagTypeResolution.symbols.diff index 6752d4cb..d9e9869f 100644 --- a/testdata/baselines/reference/submodule/conformance/paramTagTypeResolution.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/paramTagTypeResolution.symbols.diff @@ -7,7 +7,7 @@ ->module.exports : Symbol(module.exports, Decl(first.js, 0, 0)) ->module : Symbol(export=, Decl(first.js, 0, 0)) +>module.exports : Symbol(export=, Decl(first.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("first", Decl(first.js, 0, 0)) >exports : Symbol(export=, Decl(first.js, 0, 0)) >x : Symbol(x, Decl(first.js, 4, 27)) >k : Symbol(k, Decl(first.js, 4, 29)) \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/reExportJsFromTs.symbols b/testdata/baselines/reference/submodule/conformance/reExportJsFromTs.symbols index 80a283d7..fbbc8cd3 100644 --- a/testdata/baselines/reference/submodule/conformance/reExportJsFromTs.symbols +++ b/testdata/baselines/reference/submodule/conformance/reExportJsFromTs.symbols @@ -3,7 +3,7 @@ === /lib/constants.js === module.exports = { >module.exports : Symbol(export=, Decl(constants.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("/lib/constants", Decl(constants.js, 0, 0)) >exports : Symbol(export=, Decl(constants.js, 0, 0)) str: 'x', diff --git a/testdata/baselines/reference/submodule/conformance/reExportJsFromTs.symbols.diff b/testdata/baselines/reference/submodule/conformance/reExportJsFromTs.symbols.diff index a967823a..4b7af45e 100644 --- a/testdata/baselines/reference/submodule/conformance/reExportJsFromTs.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/reExportJsFromTs.symbols.diff @@ -7,7 +7,7 @@ ->module.exports : Symbol(module.exports, Decl(constants.js, 0, 0)) ->module : Symbol(export=, Decl(constants.js, 0, 0)) +>module.exports : Symbol(export=, Decl(constants.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("/lib/constants", Decl(constants.js, 0, 0)) >exports : Symbol(export=, Decl(constants.js, 0, 0)) str: 'x', \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/requireTwoPropertyAccesses.symbols b/testdata/baselines/reference/submodule/conformance/requireTwoPropertyAccesses.symbols index ca428e12..c6093879 100644 --- a/testdata/baselines/reference/submodule/conformance/requireTwoPropertyAccesses.symbols +++ b/testdata/baselines/reference/submodule/conformance/requireTwoPropertyAccesses.symbols @@ -18,7 +18,7 @@ console.log(value) === mod.js === module.exports = { >module.exports : Symbol(export=, Decl(mod.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("mod", Decl(mod.js, 0, 0)) >exports : Symbol(export=, Decl(mod.js, 0, 0)) x: { diff --git a/testdata/baselines/reference/submodule/conformance/requireTwoPropertyAccesses.symbols.diff b/testdata/baselines/reference/submodule/conformance/requireTwoPropertyAccesses.symbols.diff index 3a813aa2..1e315295 100644 --- a/testdata/baselines/reference/submodule/conformance/requireTwoPropertyAccesses.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/requireTwoPropertyAccesses.symbols.diff @@ -15,7 +15,7 @@ ->module.exports : Symbol(module.exports, Decl(mod.js, 0, 0)) ->module : Symbol(export=, Decl(mod.js, 0, 0)) +>module.exports : Symbol(export=, Decl(mod.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("mod", Decl(mod.js, 0, 0)) >exports : Symbol(export=, Decl(mod.js, 0, 0)) x: { \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/templateInsideCallback.js b/testdata/baselines/reference/submodule/conformance/templateInsideCallback.js index 4f99ceb2..a1f81c86 100644 --- a/testdata/baselines/reference/submodule/conformance/templateInsideCallback.js +++ b/testdata/baselines/reference/submodule/conformance/templateInsideCallback.js @@ -113,7 +113,7 @@ function flatMap(array, iterable = identity) { //// [templateInsideCallback.d.ts] -type Call = () ; +type Call = () => any; /** * @typedef Oops * @template T diff --git a/testdata/baselines/reference/submodule/conformance/templateInsideCallback.js.diff b/testdata/baselines/reference/submodule/conformance/templateInsideCallback.js.diff index 2abe09db..309d6bf3 100644 --- a/testdata/baselines/reference/submodule/conformance/templateInsideCallback.js.diff +++ b/testdata/baselines/reference/submodule/conformance/templateInsideCallback.js.diff @@ -28,7 +28,7 @@ - * @returns {T[]} - */ -declare function flatMap(): any; -+type Call = () ; ++type Call = () => any; /** * @typedef Oops * @template T diff --git a/testdata/baselines/reference/submodule/conformance/typeFromPropertyAssignment17.symbols b/testdata/baselines/reference/submodule/conformance/typeFromPropertyAssignment17.symbols index 25919e7a..8a9bc981 100644 --- a/testdata/baselines/reference/submodule/conformance/typeFromPropertyAssignment17.symbols +++ b/testdata/baselines/reference/submodule/conformance/typeFromPropertyAssignment17.symbols @@ -39,7 +39,7 @@ declare var module: any; /// module.exports = minimatch >module.exports : Symbol(minimatch, Decl(minimatch.js, 6, 1)) ->module : Symbol(module.exports) +>module : Symbol("minimatch", Decl(minimatch.js, 0, 0)) >exports : Symbol(minimatch, Decl(minimatch.js, 6, 1)) >minimatch : Symbol(minimatch, Decl(minimatch.js, 6, 1)) diff --git a/testdata/baselines/reference/submodule/conformance/typeFromPropertyAssignment17.symbols.diff b/testdata/baselines/reference/submodule/conformance/typeFromPropertyAssignment17.symbols.diff index a8bd929f..57a1638d 100644 --- a/testdata/baselines/reference/submodule/conformance/typeFromPropertyAssignment17.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/typeFromPropertyAssignment17.symbols.diff @@ -19,7 +19,7 @@ ->exports : Symbol(export=, Decl(minimatch.js, 0, 0)) ->minimatch : Symbol(minimatch, Decl(minimatch.js, 6, 1), Decl(minimatch.js, 1, 26), Decl(minimatch.js, 2, 15)) +>module.exports : Symbol(minimatch, Decl(minimatch.js, 6, 1)) -+>module : Symbol(module.exports) ++>module : Symbol("minimatch", Decl(minimatch.js, 0, 0)) +>exports : Symbol(minimatch, Decl(minimatch.js, 6, 1)) +>minimatch : Symbol(minimatch, Decl(minimatch.js, 6, 1)) diff --git a/testdata/baselines/reference/submodule/conformance/typeTagModuleExports.symbols b/testdata/baselines/reference/submodule/conformance/typeTagModuleExports.symbols index 67612a61..e7ec1c9f 100644 --- a/testdata/baselines/reference/submodule/conformance/typeTagModuleExports.symbols +++ b/testdata/baselines/reference/submodule/conformance/typeTagModuleExports.symbols @@ -4,6 +4,6 @@ /** @type {string} */ module.exports = 0; >module.exports : Symbol(export=, Decl(bug27327.js, 0, 0)) ->module : Symbol(module.exports) +>module : Symbol("bug27327", Decl(bug27327.js, 0, 0)) >exports : Symbol(export=, Decl(bug27327.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/typeTagModuleExports.symbols.diff b/testdata/baselines/reference/submodule/conformance/typeTagModuleExports.symbols.diff index e53a2c5f..b1345f28 100644 --- a/testdata/baselines/reference/submodule/conformance/typeTagModuleExports.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/typeTagModuleExports.symbols.diff @@ -7,5 +7,5 @@ ->module.exports : Symbol(module.exports, Decl(bug27327.js, 0, 0)) ->module : Symbol(export=, Decl(bug27327.js, 0, 0)) +>module.exports : Symbol(export=, Decl(bug27327.js, 0, 0)) -+>module : Symbol(module.exports) ++>module : Symbol("bug27327", Decl(bug27327.js, 0, 0)) >exports : Symbol(export=, Decl(bug27327.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/typedefCrossModule.symbols b/testdata/baselines/reference/submodule/conformance/typedefCrossModule.symbols index 32a138e1..13b3e5ac 100644 --- a/testdata/baselines/reference/submodule/conformance/typedefCrossModule.symbols +++ b/testdata/baselines/reference/submodule/conformance/typedefCrossModule.symbols @@ -12,7 +12,7 @@ declare var module: { exports: any}; /** @typedef {A | B} Both */ module.exports = C >module.exports : Symbol(C, Decl(mod1.js, 4, 18)) ->module : Symbol(module.exports) +>module : Symbol("mod1", Decl(mod1.js, 0, 0)) >exports : Symbol(C, Decl(mod1.js, 4, 18)) >C : Symbol(C, Decl(mod1.js, 4, 18)) diff --git a/testdata/baselines/reference/submodule/conformance/typedefCrossModule.symbols.diff b/testdata/baselines/reference/submodule/conformance/typedefCrossModule.symbols.diff index 41eb9130..57151111 100644 --- a/testdata/baselines/reference/submodule/conformance/typedefCrossModule.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/typedefCrossModule.symbols.diff @@ -8,7 +8,7 @@ ->module : Symbol(export=, Decl(mod1.js, 0, 0)) ->exports : Symbol(export=, Decl(mod1.js, 0, 0)) +>module.exports : Symbol(C, Decl(mod1.js, 4, 18)) -+>module : Symbol(module.exports) ++>module : Symbol("mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol(C, Decl(mod1.js, 4, 18)) >C : Symbol(C, Decl(mod1.js, 4, 18)) diff --git a/testdata/baselines/reference/submodule/conformance/typedefCrossModule2.symbols b/testdata/baselines/reference/submodule/conformance/typedefCrossModule2.symbols index 2104a285..9d110aa5 100644 --- a/testdata/baselines/reference/submodule/conformance/typedefCrossModule2.symbols +++ b/testdata/baselines/reference/submodule/conformance/typedefCrossModule2.symbols @@ -34,7 +34,7 @@ exports.Bar = class { } /** @typedef {number} Baz */ module.exports = { >module.exports : Symbol(export=, Decl(mod1.js, 6, 23)) ->module : Symbol(module.exports) +>module : Symbol("mod1", Decl(mod1.js, 0, 0)) >exports : Symbol(export=, Decl(mod1.js, 6, 23)) Baz: class { } @@ -54,7 +54,7 @@ exports.Quid = 2; /** @typedef {number} Quack */ module.exports = { >module.exports : Symbol(export=, Decl(mod1.js, 6, 23)) ->module : Symbol(module.exports) +>module : Symbol("mod1", Decl(mod1.js, 0, 0)) >exports : Symbol(export=, Decl(mod1.js, 6, 23)) Quack: 2 diff --git a/testdata/baselines/reference/submodule/conformance/typedefCrossModule2.symbols.diff b/testdata/baselines/reference/submodule/conformance/typedefCrossModule2.symbols.diff index b01cc9dc..056aa427 100644 --- a/testdata/baselines/reference/submodule/conformance/typedefCrossModule2.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/typedefCrossModule2.symbols.diff @@ -31,7 +31,7 @@ ->module : Symbol(export=, Decl(mod1.js, 6, 23), Decl(mod1.js, 19, 17)) ->exports : Symbol(export=, Decl(mod1.js, 6, 23), Decl(mod1.js, 19, 17)) +>module.exports : Symbol(export=, Decl(mod1.js, 6, 23)) -+>module : Symbol(module.exports) ++>module : Symbol("mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol(export=, Decl(mod1.js, 6, 23)) Baz: class { } @@ -56,7 +56,7 @@ ->module : Symbol(export=, Decl(mod1.js, 6, 23), Decl(mod1.js, 19, 17)) ->exports : Symbol(export=, Decl(mod1.js, 6, 23), Decl(mod1.js, 19, 17)) +>module.exports : Symbol(export=, Decl(mod1.js, 6, 23)) -+>module : Symbol(module.exports) ++>module : Symbol("mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol(export=, Decl(mod1.js, 6, 23)) Quack: 2 diff --git a/testdata/baselines/reference/submodule/conformance/typedefCrossModule3.symbols b/testdata/baselines/reference/submodule/conformance/typedefCrossModule3.symbols index 55b621c7..9eeddc37 100644 --- a/testdata/baselines/reference/submodule/conformance/typedefCrossModule3.symbols +++ b/testdata/baselines/reference/submodule/conformance/typedefCrossModule3.symbols @@ -12,7 +12,7 @@ ns.Foo = class {} module.exports = ns; >module.exports : Symbol(ns, Decl(mod2.js, 1, 5)) ->module : Symbol(module.exports) +>module : Symbol("mod2", Decl(mod2.js, 0, 0)) >exports : Symbol(ns, Decl(mod2.js, 1, 5)) >ns : Symbol(ns, Decl(mod2.js, 1, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/typedefCrossModule3.symbols.diff b/testdata/baselines/reference/submodule/conformance/typedefCrossModule3.symbols.diff index 31e98d5c..48d4f270 100644 --- a/testdata/baselines/reference/submodule/conformance/typedefCrossModule3.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/typedefCrossModule3.symbols.diff @@ -21,7 +21,7 @@ ->exports : Symbol(export=, Decl(mod2.js, 2, 17)) ->ns : Symbol(ns, Decl(mod2.js, 1, 5), Decl(mod2.js, 1, 14)) +>module.exports : Symbol(ns, Decl(mod2.js, 1, 5)) -+>module : Symbol(module.exports) ++>module : Symbol("mod2", Decl(mod2.js, 0, 0)) +>exports : Symbol(ns, Decl(mod2.js, 1, 5)) +>ns : Symbol(ns, Decl(mod2.js, 1, 5)) diff --git a/testdata/baselines/reference/submodule/conformance/typedefCrossModule4.symbols b/testdata/baselines/reference/submodule/conformance/typedefCrossModule4.symbols index df71c02b..9c19f2c7 100644 --- a/testdata/baselines/reference/submodule/conformance/typedefCrossModule4.symbols +++ b/testdata/baselines/reference/submodule/conformance/typedefCrossModule4.symbols @@ -7,7 +7,7 @@ class Bar { } module.exports = { Foo: Bar }; >module.exports : Symbol(export=, Decl(mod3.js, 1, 13)) ->module : Symbol(module.exports) +>module : Symbol("mod3", Decl(mod3.js, 0, 0)) >exports : Symbol(export=, Decl(mod3.js, 1, 13)) >Foo : Symbol(Foo, Decl(mod3.js, 2, 18)) >Bar : Symbol(Bar, Decl(mod3.js, 0, 0)) diff --git a/testdata/baselines/reference/submodule/conformance/typedefCrossModule4.symbols.diff b/testdata/baselines/reference/submodule/conformance/typedefCrossModule4.symbols.diff index 1324f7e5..d2d4cf6c 100644 --- a/testdata/baselines/reference/submodule/conformance/typedefCrossModule4.symbols.diff +++ b/testdata/baselines/reference/submodule/conformance/typedefCrossModule4.symbols.diff @@ -7,7 +7,7 @@ ->module.exports : Symbol(module.exports, Decl(mod3.js, 0, 0)) ->module : Symbol(export=, Decl(mod3.js, 1, 13)) +>module.exports : Symbol(export=, Decl(mod3.js, 1, 13)) -+>module : Symbol(module.exports) ++>module : Symbol("mod3", Decl(mod3.js, 0, 0)) >exports : Symbol(export=, Decl(mod3.js, 1, 13)) >Foo : Symbol(Foo, Decl(mod3.js, 2, 18)) >Bar : Symbol(Bar, Decl(mod3.js, 0, 0)) \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/assertionTypePredicates2.errors.txt.diff b/testdata/baselines/reference/submoduleAccepted/conformance/assertionTypePredicates2.errors.txt.diff similarity index 100% rename from testdata/baselines/reference/submodule/conformance/assertionTypePredicates2.errors.txt.diff rename to testdata/baselines/reference/submoduleAccepted/conformance/assertionTypePredicates2.errors.txt.diff diff --git a/testdata/baselines/reference/submodule/conformance/assertionsAndNonReturningFunctions.types.diff b/testdata/baselines/reference/submoduleAccepted/conformance/assertionsAndNonReturningFunctions.types.diff similarity index 100% rename from testdata/baselines/reference/submodule/conformance/assertionsAndNonReturningFunctions.types.diff rename to testdata/baselines/reference/submoduleAccepted/conformance/assertionsAndNonReturningFunctions.types.diff diff --git a/testdata/baselines/reference/submodule/conformance/assignmentToVoidZero1.errors.txt.diff b/testdata/baselines/reference/submoduleAccepted/conformance/assignmentToVoidZero1.errors.txt.diff similarity index 100% rename from testdata/baselines/reference/submodule/conformance/assignmentToVoidZero1.errors.txt.diff rename to testdata/baselines/reference/submoduleAccepted/conformance/assignmentToVoidZero1.errors.txt.diff diff --git a/testdata/baselines/reference/submodule/conformance/assignmentToVoidZero1.types.diff b/testdata/baselines/reference/submoduleAccepted/conformance/assignmentToVoidZero1.types.diff similarity index 100% rename from testdata/baselines/reference/submodule/conformance/assignmentToVoidZero1.types.diff rename to testdata/baselines/reference/submoduleAccepted/conformance/assignmentToVoidZero1.types.diff diff --git a/testdata/baselines/reference/submodule/conformance/asyncArrowFunction_allowJs.errors.txt.diff b/testdata/baselines/reference/submoduleAccepted/conformance/asyncArrowFunction_allowJs.errors.txt.diff similarity index 100% rename from testdata/baselines/reference/submodule/conformance/asyncArrowFunction_allowJs.errors.txt.diff rename to testdata/baselines/reference/submoduleAccepted/conformance/asyncArrowFunction_allowJs.errors.txt.diff diff --git a/testdata/baselines/reference/submodule/conformance/asyncArrowFunction_allowJs.types.diff b/testdata/baselines/reference/submoduleAccepted/conformance/asyncArrowFunction_allowJs.types.diff similarity index 100% rename from testdata/baselines/reference/submodule/conformance/asyncArrowFunction_allowJs.types.diff rename to testdata/baselines/reference/submoduleAccepted/conformance/asyncArrowFunction_allowJs.types.diff diff --git a/testdata/baselines/reference/submodule/conformance/asyncFunctionDeclaration16_es5.errors.txt.diff b/testdata/baselines/reference/submoduleAccepted/conformance/asyncFunctionDeclaration16_es5.errors.txt.diff similarity index 100% rename from testdata/baselines/reference/submodule/conformance/asyncFunctionDeclaration16_es5.errors.txt.diff rename to testdata/baselines/reference/submoduleAccepted/conformance/asyncFunctionDeclaration16_es5.errors.txt.diff diff --git a/testdata/baselines/reference/submodule/conformance/asyncFunctionDeclaration16_es5.types.diff b/testdata/baselines/reference/submoduleAccepted/conformance/asyncFunctionDeclaration16_es5.types.diff similarity index 100% rename from testdata/baselines/reference/submodule/conformance/asyncFunctionDeclaration16_es5.types.diff rename to testdata/baselines/reference/submoduleAccepted/conformance/asyncFunctionDeclaration16_es5.types.diff diff --git a/testdata/baselines/reference/submodule/conformance/binderUninitializedModuleExportsAssignment.types.diff b/testdata/baselines/reference/submoduleAccepted/conformance/binderUninitializedModuleExportsAssignment.types.diff similarity index 100% rename from testdata/baselines/reference/submodule/conformance/binderUninitializedModuleExportsAssignment.types.diff rename to testdata/baselines/reference/submoduleAccepted/conformance/binderUninitializedModuleExportsAssignment.types.diff diff --git a/testdata/baselines/reference/submodule/conformance/callOfPropertylessConstructorFunction.errors.txt.diff b/testdata/baselines/reference/submoduleAccepted/conformance/callOfPropertylessConstructorFunction.errors.txt.diff similarity index 100% rename from testdata/baselines/reference/submodule/conformance/callOfPropertylessConstructorFunction.errors.txt.diff rename to testdata/baselines/reference/submoduleAccepted/conformance/callOfPropertylessConstructorFunction.errors.txt.diff diff --git a/testdata/baselines/reference/submodule/conformance/callOfPropertylessConstructorFunction.types.diff b/testdata/baselines/reference/submoduleAccepted/conformance/callOfPropertylessConstructorFunction.types.diff similarity index 100% rename from testdata/baselines/reference/submodule/conformance/callOfPropertylessConstructorFunction.types.diff rename to testdata/baselines/reference/submoduleAccepted/conformance/callOfPropertylessConstructorFunction.types.diff diff --git a/testdata/baselines/reference/submodule/conformance/callWithMissingVoidUndefinedUnknownAnyInJs(strict=false).errors.txt.diff b/testdata/baselines/reference/submoduleAccepted/conformance/callWithMissingVoidUndefinedUnknownAnyInJs(strict=false).errors.txt.diff similarity index 100% rename from testdata/baselines/reference/submodule/conformance/callWithMissingVoidUndefinedUnknownAnyInJs(strict=false).errors.txt.diff rename to testdata/baselines/reference/submoduleAccepted/conformance/callWithMissingVoidUndefinedUnknownAnyInJs(strict=false).errors.txt.diff diff --git a/testdata/baselines/reference/submodule/conformance/callbackOnConstructor.types.diff b/testdata/baselines/reference/submoduleAccepted/conformance/callbackOnConstructor.types.diff similarity index 100% rename from testdata/baselines/reference/submodule/conformance/callbackOnConstructor.types.diff rename to testdata/baselines/reference/submoduleAccepted/conformance/callbackOnConstructor.types.diff diff --git a/testdata/baselines/reference/submodule/conformance/callbackTag2.errors.txt.diff b/testdata/baselines/reference/submoduleAccepted/conformance/callbackTag2.errors.txt.diff similarity index 100% rename from testdata/baselines/reference/submodule/conformance/callbackTag2.errors.txt.diff rename to testdata/baselines/reference/submoduleAccepted/conformance/callbackTag2.errors.txt.diff diff --git a/testdata/baselines/reference/submodule/conformance/callbackTag2.types.diff b/testdata/baselines/reference/submoduleAccepted/conformance/callbackTag2.types.diff similarity index 100% rename from testdata/baselines/reference/submodule/conformance/callbackTag2.types.diff rename to testdata/baselines/reference/submoduleAccepted/conformance/callbackTag2.types.diff diff --git a/testdata/baselines/reference/submodule/conformance/callbackTag4.types.diff b/testdata/baselines/reference/submoduleAccepted/conformance/callbackTag4.types.diff similarity index 100% rename from testdata/baselines/reference/submodule/conformance/callbackTag4.types.diff rename to testdata/baselines/reference/submoduleAccepted/conformance/callbackTag4.types.diff diff --git a/testdata/baselines/reference/submodule/conformance/callbackTagNamespace.types.diff b/testdata/baselines/reference/submoduleAccepted/conformance/callbackTagNamespace.types.diff similarity index 100% rename from testdata/baselines/reference/submodule/conformance/callbackTagNamespace.types.diff rename to testdata/baselines/reference/submoduleAccepted/conformance/callbackTagNamespace.types.diff diff --git a/testdata/baselines/reference/submodule/conformance/checkExportsObjectAssignProperty.errors.txt.diff b/testdata/baselines/reference/submoduleAccepted/conformance/checkExportsObjectAssignProperty.errors.txt.diff similarity index 100% rename from testdata/baselines/reference/submodule/conformance/checkExportsObjectAssignProperty.errors.txt.diff rename to testdata/baselines/reference/submoduleAccepted/conformance/checkExportsObjectAssignProperty.errors.txt.diff diff --git a/testdata/baselines/reference/submodule/conformance/checkExportsObjectAssignProperty.types.diff b/testdata/baselines/reference/submoduleAccepted/conformance/checkExportsObjectAssignProperty.types.diff similarity index 100% rename from testdata/baselines/reference/submodule/conformance/checkExportsObjectAssignProperty.types.diff rename to testdata/baselines/reference/submoduleAccepted/conformance/checkExportsObjectAssignProperty.types.diff diff --git a/testdata/baselines/reference/submodule/conformance/checkJsdocParamOnVariableDeclaredFunctionExpression.errors.txt.diff b/testdata/baselines/reference/submoduleAccepted/conformance/checkJsdocParamOnVariableDeclaredFunctionExpression.errors.txt.diff similarity index 100% rename from testdata/baselines/reference/submodule/conformance/checkJsdocParamOnVariableDeclaredFunctionExpression.errors.txt.diff rename to testdata/baselines/reference/submoduleAccepted/conformance/checkJsdocParamOnVariableDeclaredFunctionExpression.errors.txt.diff diff --git a/testdata/baselines/reference/submodule/conformance/checkJsdocParamOnVariableDeclaredFunctionExpression.types.diff b/testdata/baselines/reference/submoduleAccepted/conformance/checkJsdocParamOnVariableDeclaredFunctionExpression.types.diff similarity index 100% rename from testdata/baselines/reference/submodule/conformance/checkJsdocParamOnVariableDeclaredFunctionExpression.types.diff rename to testdata/baselines/reference/submoduleAccepted/conformance/checkJsdocParamOnVariableDeclaredFunctionExpression.types.diff diff --git a/testdata/submoduleAccepted.txt b/testdata/submoduleAccepted.txt index c25f9c2c..d23a6971 100644 --- a/testdata/submoduleAccepted.txt +++ b/testdata/submoduleAccepted.txt @@ -1,6 +1,36 @@ # Diff files to instead write to submoduleAccepted as "accepted" changes. + +## jsdoc ## +conformance/assertionsAndNonReturningFunctions.types.diff +conformance/assertionTypePredicates2.errors.txt.diff +conformance/assignmentToVoidZero1.errors.txt.diff +conformance/assignmentToVoidZero1.types.diff +conformance/asyncArrowFunction_allowJs.errors.txt.diff +conformance/asyncArrowFunction_allowJs.types.diff +conformance/asyncFunctionDeclaration16_es5.errors.txt.diff +conformance/asyncFunctionDeclaration16_es5.types.diff +conformance/binderUninitializedModuleExportsAssignment.types.diff +conformance/callbackOnConstructor.errors.txt.diff +conformance/callbackOnConstructor.types.diff +conformance/callbackTag2.errors.txt.diff +conformance/callbackTag2.types.diff +conformance/callbackTag4.types.diff +conformance/callbackTagNamespace.types.diff +conformance/callbackTagVariadicType.types.diff +conformance/callOfPropertylessConstructorFunction.errors.txt.diff +conformance/callOfPropertylessConstructorFunction.types.diff +conformance/callWithMissingVoidUndefinedUnknownAnyInJs(strict=false).errors.txt.diff +conformance/checkExportsObjectAssignProperty.errors.txt.diff +conformance/checkExportsObjectAssignProperty.types.diff +conformance/checkJsdocOnEndOfFile.types.diff +conformance/checkJsdocParamOnVariableDeclaredFunctionExpression.errors.txt.diff +conformance/checkJsdocParamOnVariableDeclaredFunctionExpression.types.diff +conformance/checkParamTag1.types.diff conformance/node10Alternateresult_noTypes.errors.txt.diff conformance/node10AlternateResult_noResolution.errors.txt.diff +conformance/node10AlternateResult_noResolution.errors.txt.diff + +## inlay hints ## fourslash/inlayHints/inlayHintsInteractiveParameterNamesWithComments.baseline.diff fourslash/inlayHints/inlayHintsImportType2.baseline.diff fourslash/inlayHints/inlayHintsInteractiveImportType2.baseline.diff @@ -22,4 +52,4 @@ fourslash/inlayHints/inlayHintsReturnType.baseline.diff fourslash/inlayHints/inlayHintsThisParameter.baseline.diff fourslash/inlayHints/inlayHintsVariableTypes1.baseline.diff fourslash/inlayHints/inlayHintsVariableTypes2.baseline.diff -fourslash/inlayHints/inlayHintsWithClosures.baseline.diff \ No newline at end of file +fourslash/inlayHints/inlayHintsWithClosures.baseline.diff diff --git a/testdata/tests/cases/compiler/reachabilityChecks10.ts b/testdata/tests/cases/compiler/reachabilityChecks10.ts new file mode 100644 index 00000000..e4f17b93 --- /dev/null +++ b/testdata/tests/cases/compiler/reachabilityChecks10.ts @@ -0,0 +1,7 @@ +// @strict: true +// @noEmit: true +// @allowUnreachableCode: false + +throw new Error("") +console.log("1") +console.log("2") diff --git a/testdata/tests/cases/compiler/reachabilityChecks11.ts b/testdata/tests/cases/compiler/reachabilityChecks11.ts new file mode 100644 index 00000000..81dbcf3c --- /dev/null +++ b/testdata/tests/cases/compiler/reachabilityChecks11.ts @@ -0,0 +1,76 @@ +// @allowUnreachableCode: false +// @preserveConstEnums: true + +// while (true); +var x = 1; + +module A { + while (true); + let x; +} + +module A1 { + do {} while(true); + module A { + interface F {} + } +} + +module A2 { + while (true); + module A { + var x = 1; + } +} + +module A3 { + while (true); + type T = string; +} + +module A4 { + while (true); + module A { + const enum E { X } + } +} + +function f1(x) { + if (x) { + return; + } + else { + throw new Error("123"); + } + var x; +} + +function f2() { + return; + class A { + } +} + +module B { + for (; ;); + module C { + } +} + +function f3() { + do { + } while (true); + enum E { + X = 1 + } +} + +function f4() { + if (true) { + throw new Error(); + } + const enum E { + X = 1 + } +} + diff --git a/testdata/tests/cases/compiler/reachabilityChecks9.ts b/testdata/tests/cases/compiler/reachabilityChecks9.ts new file mode 100644 index 00000000..601cdb65 --- /dev/null +++ b/testdata/tests/cases/compiler/reachabilityChecks9.ts @@ -0,0 +1,29 @@ +// @strict: true +// @noEmit: true +// @allowUnreachableCode: false + +// https://github.com/microsoft/TypeScript/issues/55562 + +function g(str: string) { + switch (str) { + case "a": + return; + console.log("1"); + console.log("2"); + case "b": + console.log("3"); + } +} + +function h(str: string) { + switch (str) { + case "a": + console.log("1"); + default: + return; + console.log("2"); + console.log("3"); + case "b": + console.log("4"); + } +} diff --git a/testdata/tests/cases/compiler/reachabilityChecksIgnored.ts b/testdata/tests/cases/compiler/reachabilityChecksIgnored.ts new file mode 100644 index 00000000..c4f0145e --- /dev/null +++ b/testdata/tests/cases/compiler/reachabilityChecksIgnored.ts @@ -0,0 +1,17 @@ +// @allowUnreachableCode: false +// @preserveConstEnums: true + + +function a() { + throw new Error(""); + + // @ts-ignore + console.log("unreachable"); +} + +function b() { + throw new Error(""); + + // @ts-expect-error + console.log("unreachable"); +} diff --git a/testdata/tests/cases/compiler/unicodeSurrogatesInStringLiterals.ts b/testdata/tests/cases/compiler/unicodeSurrogatesInStringLiterals.ts new file mode 100644 index 00000000..c77066fb --- /dev/null +++ b/testdata/tests/cases/compiler/unicodeSurrogatesInStringLiterals.ts @@ -0,0 +1,19 @@ +// @declaration: true + +// low-high surrogate pair - the "correct" case +export const highLow = "\ud83d\ude03" as const; + +// high surrogate +export const high = "\ud83d" as const; + +// low surrogate +export const low = "\ude03" as const; + +// two high surrogates +export const highHigh = "\ud83d\ud83d" as const; + +// two low surrogates +export const lowLow = "\ude03\ude03" as const; + +// swapped expected order of surrogates +export const lowHigh = "\ude03\ud83d" as const;