From 01d6f35bd4ff986eaf7b316354619fbf231dd6f6 Mon Sep 17 00:00:00 2001 From: buke <1013738+buke@users.noreply.github.com> Date: Tue, 18 Nov 2025 02:35:21 +0000 Subject: [PATCH] chore(sync): mirror internal packages into pkg/ (auto) --- 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 ca5df8fc4..7e7a379ff 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 bd544d90a..af2637e27 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 2feb4f2a5..3261fc277 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 b842a0573..92941d7d0 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 1f8a6a820..297b40a40 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 f164c5edc..f12ff3ef7 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 73edb0b13..07a06739e 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 eb9b8774b..bc1a740e3 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 e666ac832..39223aa3f 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 b97a21c9c..ae9a55af1 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 ec09bc9da..2f2dd92b1 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 86e155fe8..d829ac0d2 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 53c52829f..169151c11 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 a54667b7b..fa8d12004 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 09beb81ca..dea3584c8 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 492d95e52..bc1045b9e 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 85de8e8cf..5e56c019a 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 8735e4849..fc3e67bd4 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 02156b19f..ebee40ad7 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 000000000..49b291d79 --- /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 000000000..3eadd8b08 --- /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 000000000..bb9efc6c5 --- /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 000000000..f489b4455 --- /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 000000000..653e5f597 --- /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 000000000..fd7242773 --- /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 000000000..32bccae0a --- /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 000000000..38aab24f3 --- /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 000000000..aa31e27e2 --- /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 ba0cc58e8..e5d3d4ba7 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 000000000..b19c02010 --- /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 000000000..ad3984525 --- /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 000000000..56916b4e5 --- /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 000000000..7cb072ad8 --- /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 000000000..76fe96c9b --- /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 000000000..8183ddd85 --- /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 000000000..9406b36b4 --- /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 000000000..7fed149d2 --- /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 000000000..ed240ad2e --- /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 000000000..18db00b39 --- /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 000000000..08250f92b --- /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 000000000..7d03b6a44 --- /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 000000000..b7b534d04 --- /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 000000000..0be8becc7 --- /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 000000000..40a9c17c2 --- /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 000000000..a02bf54a6 --- /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 000000000..a39cfdd4b --- /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 000000000..18e5c882a --- /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 000000000..30333fe11 --- /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 000000000..457dedbd3 --- /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 000000000..75b51e280 --- /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 000000000..a3405fcfa --- /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 000000000..01f32ecf7 --- /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 000000000..3f4506faa --- /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 000000000..d743b3a68 --- /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 000000000..9a86da42c --- /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 000000000..548218b90 --- /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 000000000..f882c568e --- /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 000000000..971d7a210 --- /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 000000000..833c5a32c --- /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 000000000..013433279 --- /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 000000000..cdd038c6f --- /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 000000000..4c5d71598 --- /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 000000000..6598cf90d --- /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 000000000..51b7b263d --- /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 000000000..fe4bd4488 --- /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 000000000..964802d75 --- /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 000000000..5aa771430 --- /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 52388d84c..70442223b 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 000000000..c683adf7f --- /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 000000000..6edde8805 --- /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 000000000..d68ad9547 --- /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 000000000..0c6ac7f44 --- /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 000000000..12c76a5cd --- /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 000000000..65e7cb21c --- /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 000000000..c99a77e60 --- /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 000000000..d6bd05e14 --- /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 000000000..c76a47455 --- /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 000000000..d0387db44 --- /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 075f7d03f..df8d263aa 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 dc426dec7..bdcc26485 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 8b76c3a37..3596634c1 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 d0917dc97..bd996c440 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 e14243f8c..1c4dbbc1a 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 f9281ad38..e2f4e1879 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 b2416399f..e71e8e94b 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 7b4833d35..b9eefb19c 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 2ad5a0fd9..07a7ab33b 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 7e6c6b0be..9cdb77b0a 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 d2139b5cb..afd5a8539 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 3c21cfc61..72dbcdab3 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 1828abd62..ed981a8c5 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 d78894e82..19d75ac8a 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 8569032d5..9d8978420 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 04892d51b..7c71cb1a2 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 e145a77e0..a8b1d50b4 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 aa7ab1332..de03620ea 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 c0d05b612..4cc8df521 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 7cacb767e..a6667c3ab 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 14e89674c..e2322accb 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 6437a2616..5d3a6e0f4 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 0c91f5132..366c8f970 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 ea583f3ae..74c385ca0 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 f03401b7a..db60de74e 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 013fa4b42..7cce7950a 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 6772627a4..413bfba23 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 a8f03a809..de210409b 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 6be0b2f03..846b82cc3 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 5cc506512..a3ceb686b 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 ddcfc2ed5..4dc40557a 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 000000000..93102c786 --- /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 b6dffa7f8..7aac5d5b5 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 8ebafccf7..7b8a395a9 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 000000000..2b26eae20 --- /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 000000000..6ecc55415 --- /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 000000000..d57914a48 --- /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 000000000..b4497ee46 --- /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 000000000..1e69b95ff --- /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 000000000..450ccad80 --- /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 000000000..10cf27d43 --- /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 000000000..75b9cf98d --- /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 000000000..d50f997b9 --- /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 000000000..8bced2f44 --- /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 000000000..7635105d4 --- /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 000000000..04eccd037 --- /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 000000000..838060e04 --- /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 000000000..d15d14323 --- /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 000000000..df74f86bd --- /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 000000000..26778de70 --- /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 d013f7427..ededeb5e3 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 000000000..8303effda --- /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 000000000..9bf5d0afe --- /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 2d56b118e..eb80ccd6f 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 ace63d1ca..e062d7509 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 14c8e6a84..493fc0d36 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 e23f90856..13b596213 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 e4336656a..c863ea279 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 973cdbfad..bccaaa43e 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 603b1d559..c96c894c3 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 de8d7ae53..4ba0f03ae 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 b8d48ea63..4e62ce935 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 7207d867b..e47770a43 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 2892d1f23..64e87ec6b 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 c94faf9ba..383e41d30 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 842dcf048..4a272576b 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 ab0e3bf2c..530d7887a 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 af4d5156a..7ffcd11ad 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 000000000..8f1d3f66b --- /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 000000000..212add171 --- /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 000000000..5a7ba4c6c --- /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 000000000..d60ddbbfb --- /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 000000000..3cf4c936c --- /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 000000000..36bfd049f --- /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 000000000..1a8c0bb71 --- /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 000000000..508f54f16 --- /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 000000000..24708d02f --- /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 000000000..0b9ef1cf2 --- /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 000000000..cce3890ce --- /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 000000000..d92d79614 --- /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 000000000..ca4729a3d --- /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 000000000..3836f7614 --- /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 000000000..948e4c0a3 --- /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 000000000..682bbd5d1 --- /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 000000000..db5acfdd3 --- /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 000000000..2f9b79d09 --- /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 000000000..eeddc9d45 --- /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 000000000..0e3ac10c5 --- /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 000000000..83177f496 --- /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 000000000..d1c8c1032 --- /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 000000000..786b9b4a6 --- /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 000000000..786b9b4a6 --- /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 000000000..3a2bd6eed --- /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 c90d58036..7fa07cda5 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 17636a88e..813dfd8e8 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 9782db2c6..b44bd405e 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 bf6252414..000000000 --- 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 1af9d4e78..de91cecb7 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 5e8d38822..85970bee8 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 dc4974276..09356557f 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 c71f401a4..65ee97be4 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 80be37a2c..2e7e01a49 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 b61e4fb45..cbe987209 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 000000000..fd747ba80 --- /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 720d6a66a..000000000 --- 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 814586c8e..e61e42ed2 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 b80e0680f..7e898bf0f 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 285cda777..bb4cf4e78 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 570acccb4..28919c344 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 285cda777..bb4cf4e78 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 a473a8cb4..ecbde6faf 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 657f6d3f0..9aca85784 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 9417643c9..64fff670e 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 bf438af52..9d62a0380 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 39829663d..59cd1ad16 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 e1364018d..33b60d814 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 b111a514c..fdd8244b2 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 e26a7ebdd..b95894b8c 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 86cebb8e7..bbce79bba 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 8e050faae..39730ae9d 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 341416ad0..8d1d23586 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 916f7562f..97e0d789a 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 a3d914133..eaa913850 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 59a81b14a..f93ac0104 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 4ca5aa83b..76c3d4efc 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 affbb5282..ecf70c434 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 9ae26854b..b51576a35 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 ec76d7807..8baf80c21 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 4f7e0ab0d..948a04b84 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 885131f80..ebe714599 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 d133646bf..f2d21bc5a 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 0d43d5d88..dfaa58631 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 4a77227c4..b0e5ce1d6 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 5ea722d79..28c07c4bd 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 c3a004ee0..a6b1f9947 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 3cace490b..28668d1cb 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 6d95c25f3..828cbd5cb 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 738988b71..dd745da62 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 0866617f7..62f2f2d90 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 d25977a05..478dc4073 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 000000000..873affdeb --- /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 9f3eb97f2..8af4d4d6d 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 4c4992015..e487d3ce8 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 e7ec94d87..ea8e176ad 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 ccfdab49c..e92d618df 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 cf0725a55..740d24176 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 105de6413..e4389239d 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 a3c308ae2..b93076065 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 e8ddccd57..1bd0b80a9 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 c43fdf537..d776587af 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 f0c982611..4e120b6e7 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 dd596e3b3..993921305 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 774dcb2bf..ad4ad1b84 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 8c3b8e042..e5ca91a26 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 57e789428..c694dc535 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 a9258f816..5b0a21b74 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 bd49fde05..0714c3be1 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 183b4d35f..42d4617b1 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 ffd519adf..cdfe1bb42 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 8b686083f..cbd4e9a9a 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 48e391f26..005bcd43a 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 36332f0b2..0c53649f0 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 29f9b8d20..03b0f042a 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 fb9a7f22a..8720f111c 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 b19e94ec5..6e791a795 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 740a47d14..2b613ca92 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 cc0ea1a98..7c0fe0c58 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 84112b66c..ccfc7ba36 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 b4f8fb259..69204282f 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 901f4c426..92a33b772 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 672f1ad80..2ac7c3864 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 cb1ab8271..26d9c1ab6 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 c3ddb5e4c..19ee49eea 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 bd1cc110e..601eaea4f 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 92f53b9b9..f18766bd4 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 65f7ccf23..f276ec997 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 5acb6eecd..83a99f81b 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 c23777b7c..c8982bdc3 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 af6fef453..e8ab726ef 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 a2057ad45..dd6fbdb97 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 6c3938107..4d9039568 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 928bcb992..3964f7167 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 c0ef67eb0..ce86d34b7 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 de1c0f5ef..ad6789dc5 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 c5aa75f9c..7eb296478 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 b38614ad8..e5db0f7c5 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 f5c3a6e75..d145f5140 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 2291fd599..a458d9615 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 f36c42b52..fb02cc8c4 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 c3b3253c5..6bc6beee9 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 0d3f1ea9a..1509abd49 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 e34c8b0e8..568d39584 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 ead22a05a..282bfe261 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 b70cc9e42..970b96532 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 965edbb81..ceca31cc7 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 8ab8c222e..ba72a3587 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 f943bfb23..22c4538f8 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 375993ea6..4f50fdd16 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 7775a0ad2..4cff29169 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 da1bfef23..1b7a31967 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 186e299fa..6a4f9baba 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 472779ff9..484d33715 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 c239422c6..2d27d981a 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 4d591c191..6bc191fab 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 b3fc6d29e..c7f0077dc 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 b2e68c2f0..703c68aff 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 d625cf320..05d3888a6 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 cf7d4d171..c8dc74d22 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 752437031..64fcf8f4d 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 d03e2da5c..30838f726 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 10a334825..914bb480a 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 d5eac9313..3a10825e9 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 164e13b02..66f71e7a1 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 7e60646d8..408c587bc 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 581f4189b..8b6ac12a7 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 b68cc7cae..bdeba80b7 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 fbda01c9e..334c7a553 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 6a5904647..79d3b629a 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 84b38aaf0..c2d51101c 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 d4b1fa71a..e13876869 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 ea488bc1a..9866e56b0 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 7a2326088..85050d43b 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 5c6c9bb91..3a136c55f 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 a83e34112..bc63fed82 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 08d2c533b..2a5caecbb 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 ca4a39d0b..dafbaf252 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 4a464ae19..ad6d5d1e0 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 d198a27ae..745896e05 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 004154e4b..a3a8c570c 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 3882b9166..3ef76c974 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 a6952ae11..e1914d5a7 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 f61b44a26..e5c096712 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 871b8e8fd..b038d0394 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 0feb49556..8352dff94 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 420f3354d..85e0f208e 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 bd3ba2627..b3890fb6b 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 d941bf0e8..e0eafe816 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 1dbddaa48..7a2623ddb 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 2174131db..f7df814f1 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 79831388d..c093e5f3f 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 305dbe6e3..1bc0d9d5f 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 87ad80b3c..c4c03f4bf 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 99b02488e..55c08336b 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 513254653..92c2c8d8d 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 36e6c88bd..26bcc3f4c 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 45beb4753..a1403a6d4 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 37af48659..684b28772 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 5e371564a..21a03729f 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 4af0959aa..761fe3a62 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 e15b5745f..4526a827f 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 791befb90..15420244d 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 8c4905900..d2f17db47 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 c4653d7f1..6c4137eef 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 68dd5b7a6..1a4305fa5 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 1b31a5b51..a3d3d5300 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 b1a048e93..ff8bc93c7 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 e54e92eec..e80851ba2 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 5e1941f2a..adaef7003 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 59f65b82a..32647eab6 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 215878df1..9da073d08 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 da078e1d8..e2fd83d9e 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 466a84dc8..8ff3c06dc 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 8079b204f..fbedf8ac2 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 383deeead..7f994c7a7 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 ec22f5af9..c3bacf4d8 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 7961257a0..082673ef9 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 58bdbe81a..731b39fc5 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 5db36136d..129f96dc1 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 eaf50f13e..415929acf 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 260e54145..9022f92cc 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 58da185c0..aa4806630 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 033590b2a..6ae093d39 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 45429a414..e83952226 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 19deb87c3..c26c6858e 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 27844b596..6b35522c8 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 9e9d85377..b7921125e 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 8c74d87dd..83ed667c5 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 c26128dd8..e309908ae 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 648ac2341..eb7efad30 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 40d007ddf..9587ae75d 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 ea61a161e..564920259 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 0042bfa85..fb3d156ce 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 e1875fe9e..430253428 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 3cd2ec633..9d80f583e 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 a2cb60393..0693038e0 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 bfb905974..46a80c16e 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 da3e923b0..2c1e0cc76 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 c2449f4ba..508f35ee2 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 03282bced..786ada523 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 eba0c9f48..5e54fb579 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 00bc1adc0..0654af237 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 db9cea396..e1b0d0aab 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 7c68f5c1a..8252b2c22 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 efe1cb302..018e9cdf0 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 0a1a2a7d7..adb5187e6 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 4cd9a4559..8015fd390 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 cca2eb32d..c01f3edc1 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 a9cab75a9..3cd1a6bcb 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 8a574736a..1369e4b0e 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 9a8873d42..2abd69871 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 40a2d99fc..743e5d4fb 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 373a830db..4ec0d4075 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 d9b5824e3..cdec0b436 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 eed33947c..5adf80048 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 db6b4bdc5..99aa7d602 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 33e6b8ac4..184fac331 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 179701bcb..585550c7c 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 d3908ce02..09448fa00 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 298239bc3..fd22517a5 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 78fa43931..df38c84dc 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 2304305f4..7bbd7791d 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 6c48dba82..be0cc8c99 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 8f69b075c..bb237297b 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 723e4e610..051c5d593 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 2ea079bfe..ed507e532 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 88729680b..b3a4c7baa 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 ce752a732..8275026f5 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 3234127e9..02c9e60df 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 01e08c6e1..63cbc827a 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 6441cf72c..6450f513e 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 265c5d376..3f73d440d 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 70e194389..663b3b799 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 2595bc30e..cac6137bf 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 49ff0d0d6..cb362de5d 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 d12f7626d..1ab00d8e2 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 72949ef09..d3c02b70a 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 1f47a437b..81efbac99 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 8d1c03288..dd66d191e 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 7ae028763..a491c61f7 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 87abe7abe..192a2bc5a 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 5899a74af..2a7693d4d 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 ae3aed29b..b1275397b 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 a1473001d..6164d664a 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 de860794d..f133604c4 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 9cffee87b..8fc379334 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 3a19abbb9..28c4b3952 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 63b4392e3..89f4935a2 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 8a7a88371..a15d15e17 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 000000000..3f7c033e1 --- /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 406c1eb55..d3940d330 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 b08530b97..8fcb7c1f3 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 406c1eb55..d3940d330 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 ead06d0c0..6fb73df45 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 406c1eb55..d3940d330 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 fc851ba9d..ff471797d 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 406c1eb55..d3940d330 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 7da4e3ecb..1e30b29f2 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 27794910c..c48e0f82b 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 6752d4cbb..d9e9869fe 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 80a283d7c..fbbc8cd34 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 a967823ae..4b7af45ed 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 ca428e12a..c6093879d 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 3a813aa2e..1e315295a 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 4f99ceb20..a1f81c866 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 2abe09db9..309d6bf33 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 25919e7a1..8a9bc9817 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 a8bd929f5..57a1638d9 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 67612a617..e7ec1c9fb 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 e53a2c5f4..b1345f286 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 32a138e1d..13b3e5ac9 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 41eb9130b..571511111 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 2104a285c..9d110aa53 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 b01cc9dce..056aa427e 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 55b621c77..9eeddc372 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 31e98d5c0..48d4f270b 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 df71c02b0..9c19f2c70 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 1324f7e5b..d2d4cf6c0 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 c25f9c2c7..d23a69710 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 000000000..e4f17b935 --- /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 000000000..81dbcf3c7 --- /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 000000000..601cdb65d --- /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 000000000..c4f0145ee --- /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 000000000..c77066fbd --- /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;