Skip to content

Commit 5a2fa49

Browse files
authored
Cherry-pick release bugs (#36804)
* Fix renaming an ExportSpecifier name when propertyName is present (#36790) * Fix renaming exportSpecifier name when propertyName is present * Add baseline test for name without propertyName too * Set correct pos for NamespaceExport (#36794) * Set correct pos for NamespaceExport * Update tests
1 parent e7fec6d commit 5a2fa49

30 files changed

+187
-100
lines changed

src/compiler/parser.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6565,18 +6565,19 @@ namespace ts {
65656565
return finishNode(node);
65666566
}
65676567

6568-
function parseNamespaceExport(): NamespaceExport {
6569-
const node = <NamespaceExport>createNode(SyntaxKind.NamespaceExport);
6568+
function parseNamespaceExport(pos: number): NamespaceExport {
6569+
const node = <NamespaceExport>createNode(SyntaxKind.NamespaceExport, pos);
65706570
node.name = parseIdentifier();
65716571
return finishNode(node);
65726572
}
65736573

65746574
function parseExportDeclaration(node: ExportDeclaration): ExportDeclaration {
65756575
node.kind = SyntaxKind.ExportDeclaration;
65766576
node.isTypeOnly = parseOptional(SyntaxKind.TypeKeyword);
6577+
const namespaceExportPos = scanner.getStartPos();
65776578
if (parseOptional(SyntaxKind.AsteriskToken)) {
65786579
if (parseOptional(SyntaxKind.AsKeyword)) {
6579-
node.exportClause = parseNamespaceExport();
6580+
node.exportClause = parseNamespaceExport(namespaceExportPos);
65806581
}
65816582
parseExpected(SyntaxKind.FromKeyword);
65826583
node.moduleSpecifier = parseModuleSpecifier();

src/harness/fourslashImpl.ts

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1319,6 +1319,37 @@ namespace FourSlash {
13191319
}
13201320
}
13211321

1322+
public baselineRename(marker: string, options: FourSlashInterface.RenameOptions) {
1323+
const position = this.getMarkerByName(marker).position;
1324+
const locations = this.languageService.findRenameLocations(
1325+
this.activeFile.fileName,
1326+
position,
1327+
options.findInStrings ?? false,
1328+
options.findInComments ?? false,
1329+
options.providePrefixAndSuffixTextForRename);
1330+
1331+
if (!locations) {
1332+
this.raiseError(`baselineRename failed. Could not rename at the provided position.`);
1333+
}
1334+
1335+
const renamesByFile = ts.group(locations, l => l.fileName);
1336+
const baselineContent = renamesByFile.map(renames => {
1337+
const { fileName } = renames[0];
1338+
const sortedRenames = ts.sort(renames, (a, b) => b.textSpan.start - a.textSpan.start);
1339+
let baselineFileContent = this.getFileContent(fileName);
1340+
for (const { textSpan } of sortedRenames) {
1341+
const isOriginalSpan = fileName === this.activeFile.fileName && ts.textSpanIntersectsWithPosition(textSpan, position);
1342+
baselineFileContent =
1343+
baselineFileContent.slice(0, textSpan.start) +
1344+
(isOriginalSpan ? "[|RENAME|]" : "RENAME") +
1345+
baselineFileContent.slice(textSpan.start + textSpan.length);
1346+
}
1347+
return `/*====== ${fileName} ======*/\n\n${baselineFileContent}`;
1348+
}).join("\n\n") + "\n";
1349+
1350+
Harness.Baseline.runBaseline(this.getBaselineFileNameForContainingTestFile(), baselineContent);
1351+
}
1352+
13221353
public verifyQuickInfoExists(negative: boolean) {
13231354
const actualQuickInfo = this.languageService.getQuickInfoAtPosition(this.activeFile.fileName, this.currentCaretPosition);
13241355
if (negative) {

src/harness/fourslashInterfaceImpl.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -516,6 +516,10 @@ namespace FourSlashInterface {
516516
this.state.verifyRenameLocations(startRanges, options);
517517
}
518518

519+
public baselineRename(marker: string, options: RenameOptions) {
520+
this.state.baselineRename(marker, options);
521+
}
522+
519523
public verifyQuickInfoDisplayParts(kind: string, kindModifiers: string, textSpan: FourSlash.TextSpan,
520524
displayParts: ts.SymbolDisplayPart[], documentation: ts.SymbolDisplayPart[], tags: ts.JSDocTagInfo[]) {
521525
this.state.verifyQuickInfoDisplayParts(kind, kindModifiers, textSpan, displayParts, documentation, tags);
@@ -1623,4 +1627,9 @@ namespace FourSlashInterface {
16231627
template: string
16241628
};
16251629
export type RenameLocationOptions = FourSlash.Range | { readonly range: FourSlash.Range, readonly prefixText?: string, readonly suffixText?: string };
1630+
export interface RenameOptions {
1631+
readonly findInStrings?: boolean;
1632+
readonly findInComments?: boolean;
1633+
readonly providePrefixAndSuffixTextForRename?: boolean;
1634+
};
16261635
}

src/services/findAllReferences.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1927,10 +1927,12 @@ namespace ts.FindAllReferences {
19271927
}
19281928

19291929
const exportSpecifier = getDeclarationOfKind<ExportSpecifier>(symbol, SyntaxKind.ExportSpecifier);
1930-
const localSymbol = exportSpecifier && checker.getExportSpecifierLocalTargetSymbol(exportSpecifier);
1931-
if (localSymbol) {
1932-
const res = cbSymbol(localSymbol, /*rootSymbol*/ undefined, /*baseSymbol*/ undefined, EntryKind.Node);
1933-
if (res) return res;
1930+
if (!isForRenamePopulateSearchSymbolSet || exportSpecifier && !exportSpecifier.propertyName) {
1931+
const localSymbol = exportSpecifier && checker.getExportSpecifierLocalTargetSymbol(exportSpecifier);
1932+
if (localSymbol) {
1933+
const res = cbSymbol(localSymbol, /*rootSymbol*/ undefined, /*baseSymbol*/ undefined, EntryKind.Node);
1934+
if (res) return res;
1935+
}
19341936
}
19351937

19361938
// symbolAtLocation for a binding element is the local symbol. See if the search symbol is the property.

tests/baselines/reference/exportAsNamespace1(module=amd).symbols

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export const b = 2;
77

88
=== tests/cases/conformance/es2020/modules/1.ts ===
99
export * as ns from './0';
10-
>ns : Symbol(ns, Decl(1.ts, 0, 11))
10+
>ns : Symbol(ns, Decl(1.ts, 0, 6))
1111

1212
ns.a;
1313
ns.b;
@@ -18,15 +18,15 @@ import * as foo from './1'
1818

1919
foo.ns.a;
2020
>foo.ns.a : Symbol(foo.ns.a, Decl(0.ts, 0, 12))
21-
>foo.ns : Symbol(foo.ns, Decl(1.ts, 0, 11))
21+
>foo.ns : Symbol(foo.ns, Decl(1.ts, 0, 6))
2222
>foo : Symbol(foo, Decl(2.ts, 0, 6))
23-
>ns : Symbol(foo.ns, Decl(1.ts, 0, 11))
23+
>ns : Symbol(foo.ns, Decl(1.ts, 0, 6))
2424
>a : Symbol(foo.ns.a, Decl(0.ts, 0, 12))
2525

2626
foo.ns.b;
2727
>foo.ns.b : Symbol(foo.ns.b, Decl(0.ts, 1, 12))
28-
>foo.ns : Symbol(foo.ns, Decl(1.ts, 0, 11))
28+
>foo.ns : Symbol(foo.ns, Decl(1.ts, 0, 6))
2929
>foo : Symbol(foo, Decl(2.ts, 0, 6))
30-
>ns : Symbol(foo.ns, Decl(1.ts, 0, 11))
30+
>ns : Symbol(foo.ns, Decl(1.ts, 0, 6))
3131
>b : Symbol(foo.ns.b, Decl(0.ts, 1, 12))
3232

tests/baselines/reference/exportAsNamespace1(module=commonjs).symbols

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export const b = 2;
77

88
=== tests/cases/conformance/es2020/modules/1.ts ===
99
export * as ns from './0';
10-
>ns : Symbol(ns, Decl(1.ts, 0, 11))
10+
>ns : Symbol(ns, Decl(1.ts, 0, 6))
1111

1212
ns.a;
1313
ns.b;
@@ -18,15 +18,15 @@ import * as foo from './1'
1818

1919
foo.ns.a;
2020
>foo.ns.a : Symbol(foo.ns.a, Decl(0.ts, 0, 12))
21-
>foo.ns : Symbol(foo.ns, Decl(1.ts, 0, 11))
21+
>foo.ns : Symbol(foo.ns, Decl(1.ts, 0, 6))
2222
>foo : Symbol(foo, Decl(2.ts, 0, 6))
23-
>ns : Symbol(foo.ns, Decl(1.ts, 0, 11))
23+
>ns : Symbol(foo.ns, Decl(1.ts, 0, 6))
2424
>a : Symbol(foo.ns.a, Decl(0.ts, 0, 12))
2525

2626
foo.ns.b;
2727
>foo.ns.b : Symbol(foo.ns.b, Decl(0.ts, 1, 12))
28-
>foo.ns : Symbol(foo.ns, Decl(1.ts, 0, 11))
28+
>foo.ns : Symbol(foo.ns, Decl(1.ts, 0, 6))
2929
>foo : Symbol(foo, Decl(2.ts, 0, 6))
30-
>ns : Symbol(foo.ns, Decl(1.ts, 0, 11))
30+
>ns : Symbol(foo.ns, Decl(1.ts, 0, 6))
3131
>b : Symbol(foo.ns.b, Decl(0.ts, 1, 12))
3232

tests/baselines/reference/exportAsNamespace1(module=es2015).symbols

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export const b = 2;
77

88
=== tests/cases/conformance/es2020/modules/1.ts ===
99
export * as ns from './0';
10-
>ns : Symbol(ns, Decl(1.ts, 0, 11))
10+
>ns : Symbol(ns, Decl(1.ts, 0, 6))
1111

1212
ns.a;
1313
ns.b;
@@ -18,15 +18,15 @@ import * as foo from './1'
1818

1919
foo.ns.a;
2020
>foo.ns.a : Symbol(foo.ns.a, Decl(0.ts, 0, 12))
21-
>foo.ns : Symbol(foo.ns, Decl(1.ts, 0, 11))
21+
>foo.ns : Symbol(foo.ns, Decl(1.ts, 0, 6))
2222
>foo : Symbol(foo, Decl(2.ts, 0, 6))
23-
>ns : Symbol(foo.ns, Decl(1.ts, 0, 11))
23+
>ns : Symbol(foo.ns, Decl(1.ts, 0, 6))
2424
>a : Symbol(foo.ns.a, Decl(0.ts, 0, 12))
2525

2626
foo.ns.b;
2727
>foo.ns.b : Symbol(foo.ns.b, Decl(0.ts, 1, 12))
28-
>foo.ns : Symbol(foo.ns, Decl(1.ts, 0, 11))
28+
>foo.ns : Symbol(foo.ns, Decl(1.ts, 0, 6))
2929
>foo : Symbol(foo, Decl(2.ts, 0, 6))
30-
>ns : Symbol(foo.ns, Decl(1.ts, 0, 11))
30+
>ns : Symbol(foo.ns, Decl(1.ts, 0, 6))
3131
>b : Symbol(foo.ns.b, Decl(0.ts, 1, 12))
3232

tests/baselines/reference/exportAsNamespace1(module=esnext).symbols

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export const b = 2;
77

88
=== tests/cases/conformance/es2020/modules/1.ts ===
99
export * as ns from './0';
10-
>ns : Symbol(ns, Decl(1.ts, 0, 11))
10+
>ns : Symbol(ns, Decl(1.ts, 0, 6))
1111

1212
ns.a;
1313
ns.b;
@@ -18,15 +18,15 @@ import * as foo from './1'
1818

1919
foo.ns.a;
2020
>foo.ns.a : Symbol(foo.ns.a, Decl(0.ts, 0, 12))
21-
>foo.ns : Symbol(foo.ns, Decl(1.ts, 0, 11))
21+
>foo.ns : Symbol(foo.ns, Decl(1.ts, 0, 6))
2222
>foo : Symbol(foo, Decl(2.ts, 0, 6))
23-
>ns : Symbol(foo.ns, Decl(1.ts, 0, 11))
23+
>ns : Symbol(foo.ns, Decl(1.ts, 0, 6))
2424
>a : Symbol(foo.ns.a, Decl(0.ts, 0, 12))
2525

2626
foo.ns.b;
2727
>foo.ns.b : Symbol(foo.ns.b, Decl(0.ts, 1, 12))
28-
>foo.ns : Symbol(foo.ns, Decl(1.ts, 0, 11))
28+
>foo.ns : Symbol(foo.ns, Decl(1.ts, 0, 6))
2929
>foo : Symbol(foo, Decl(2.ts, 0, 6))
30-
>ns : Symbol(foo.ns, Decl(1.ts, 0, 11))
30+
>ns : Symbol(foo.ns, Decl(1.ts, 0, 6))
3131
>b : Symbol(foo.ns.b, Decl(0.ts, 1, 12))
3232

tests/baselines/reference/exportAsNamespace1(module=system).symbols

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export const b = 2;
77

88
=== tests/cases/conformance/es2020/modules/1.ts ===
99
export * as ns from './0';
10-
>ns : Symbol(ns, Decl(1.ts, 0, 11))
10+
>ns : Symbol(ns, Decl(1.ts, 0, 6))
1111

1212
ns.a;
1313
ns.b;
@@ -18,15 +18,15 @@ import * as foo from './1'
1818

1919
foo.ns.a;
2020
>foo.ns.a : Symbol(foo.ns.a, Decl(0.ts, 0, 12))
21-
>foo.ns : Symbol(foo.ns, Decl(1.ts, 0, 11))
21+
>foo.ns : Symbol(foo.ns, Decl(1.ts, 0, 6))
2222
>foo : Symbol(foo, Decl(2.ts, 0, 6))
23-
>ns : Symbol(foo.ns, Decl(1.ts, 0, 11))
23+
>ns : Symbol(foo.ns, Decl(1.ts, 0, 6))
2424
>a : Symbol(foo.ns.a, Decl(0.ts, 0, 12))
2525

2626
foo.ns.b;
2727
>foo.ns.b : Symbol(foo.ns.b, Decl(0.ts, 1, 12))
28-
>foo.ns : Symbol(foo.ns, Decl(1.ts, 0, 11))
28+
>foo.ns : Symbol(foo.ns, Decl(1.ts, 0, 6))
2929
>foo : Symbol(foo, Decl(2.ts, 0, 6))
30-
>ns : Symbol(foo.ns, Decl(1.ts, 0, 11))
30+
>ns : Symbol(foo.ns, Decl(1.ts, 0, 6))
3131
>b : Symbol(foo.ns.b, Decl(0.ts, 1, 12))
3232

tests/baselines/reference/exportAsNamespace1(module=umd).symbols

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export const b = 2;
77

88
=== tests/cases/conformance/es2020/modules/1.ts ===
99
export * as ns from './0';
10-
>ns : Symbol(ns, Decl(1.ts, 0, 11))
10+
>ns : Symbol(ns, Decl(1.ts, 0, 6))
1111

1212
ns.a;
1313
ns.b;
@@ -18,15 +18,15 @@ import * as foo from './1'
1818

1919
foo.ns.a;
2020
>foo.ns.a : Symbol(foo.ns.a, Decl(0.ts, 0, 12))
21-
>foo.ns : Symbol(foo.ns, Decl(1.ts, 0, 11))
21+
>foo.ns : Symbol(foo.ns, Decl(1.ts, 0, 6))
2222
>foo : Symbol(foo, Decl(2.ts, 0, 6))
23-
>ns : Symbol(foo.ns, Decl(1.ts, 0, 11))
23+
>ns : Symbol(foo.ns, Decl(1.ts, 0, 6))
2424
>a : Symbol(foo.ns.a, Decl(0.ts, 0, 12))
2525

2626
foo.ns.b;
2727
>foo.ns.b : Symbol(foo.ns.b, Decl(0.ts, 1, 12))
28-
>foo.ns : Symbol(foo.ns, Decl(1.ts, 0, 11))
28+
>foo.ns : Symbol(foo.ns, Decl(1.ts, 0, 6))
2929
>foo : Symbol(foo, Decl(2.ts, 0, 6))
30-
>ns : Symbol(foo.ns, Decl(1.ts, 0, 11))
30+
>ns : Symbol(foo.ns, Decl(1.ts, 0, 6))
3131
>b : Symbol(foo.ns.b, Decl(0.ts, 1, 12))
3232

tests/baselines/reference/exportAsNamespace2(module=amd).symbols

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export const b = 2;
77

88
=== tests/cases/conformance/es2020/modules/1.ts ===
99
export * as ns from './0';
10-
>ns : Symbol(ns, Decl(1.ts, 0, 11))
10+
>ns : Symbol(ns, Decl(1.ts, 0, 6))
1111

1212
ns.a;
1313
ns.b;
@@ -18,15 +18,15 @@ import * as foo from './1'
1818

1919
foo.ns.a;
2020
>foo.ns.a : Symbol(foo.ns.a, Decl(0.ts, 0, 12))
21-
>foo.ns : Symbol(foo.ns, Decl(1.ts, 0, 11))
21+
>foo.ns : Symbol(foo.ns, Decl(1.ts, 0, 6))
2222
>foo : Symbol(foo, Decl(2.ts, 0, 6))
23-
>ns : Symbol(foo.ns, Decl(1.ts, 0, 11))
23+
>ns : Symbol(foo.ns, Decl(1.ts, 0, 6))
2424
>a : Symbol(foo.ns.a, Decl(0.ts, 0, 12))
2525

2626
foo.ns.b;
2727
>foo.ns.b : Symbol(foo.ns.b, Decl(0.ts, 1, 12))
28-
>foo.ns : Symbol(foo.ns, Decl(1.ts, 0, 11))
28+
>foo.ns : Symbol(foo.ns, Decl(1.ts, 0, 6))
2929
>foo : Symbol(foo, Decl(2.ts, 0, 6))
30-
>ns : Symbol(foo.ns, Decl(1.ts, 0, 11))
30+
>ns : Symbol(foo.ns, Decl(1.ts, 0, 6))
3131
>b : Symbol(foo.ns.b, Decl(0.ts, 1, 12))
3232

tests/baselines/reference/exportAsNamespace2(module=commonjs).symbols

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export const b = 2;
77

88
=== tests/cases/conformance/es2020/modules/1.ts ===
99
export * as ns from './0';
10-
>ns : Symbol(ns, Decl(1.ts, 0, 11))
10+
>ns : Symbol(ns, Decl(1.ts, 0, 6))
1111

1212
ns.a;
1313
ns.b;
@@ -18,15 +18,15 @@ import * as foo from './1'
1818

1919
foo.ns.a;
2020
>foo.ns.a : Symbol(foo.ns.a, Decl(0.ts, 0, 12))
21-
>foo.ns : Symbol(foo.ns, Decl(1.ts, 0, 11))
21+
>foo.ns : Symbol(foo.ns, Decl(1.ts, 0, 6))
2222
>foo : Symbol(foo, Decl(2.ts, 0, 6))
23-
>ns : Symbol(foo.ns, Decl(1.ts, 0, 11))
23+
>ns : Symbol(foo.ns, Decl(1.ts, 0, 6))
2424
>a : Symbol(foo.ns.a, Decl(0.ts, 0, 12))
2525

2626
foo.ns.b;
2727
>foo.ns.b : Symbol(foo.ns.b, Decl(0.ts, 1, 12))
28-
>foo.ns : Symbol(foo.ns, Decl(1.ts, 0, 11))
28+
>foo.ns : Symbol(foo.ns, Decl(1.ts, 0, 6))
2929
>foo : Symbol(foo, Decl(2.ts, 0, 6))
30-
>ns : Symbol(foo.ns, Decl(1.ts, 0, 11))
30+
>ns : Symbol(foo.ns, Decl(1.ts, 0, 6))
3131
>b : Symbol(foo.ns.b, Decl(0.ts, 1, 12))
3232

tests/baselines/reference/exportAsNamespace2(module=es2015).symbols

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export const b = 2;
77

88
=== tests/cases/conformance/es2020/modules/1.ts ===
99
export * as ns from './0';
10-
>ns : Symbol(ns, Decl(1.ts, 0, 11))
10+
>ns : Symbol(ns, Decl(1.ts, 0, 6))
1111

1212
ns.a;
1313
ns.b;
@@ -18,15 +18,15 @@ import * as foo from './1'
1818

1919
foo.ns.a;
2020
>foo.ns.a : Symbol(foo.ns.a, Decl(0.ts, 0, 12))
21-
>foo.ns : Symbol(foo.ns, Decl(1.ts, 0, 11))
21+
>foo.ns : Symbol(foo.ns, Decl(1.ts, 0, 6))
2222
>foo : Symbol(foo, Decl(2.ts, 0, 6))
23-
>ns : Symbol(foo.ns, Decl(1.ts, 0, 11))
23+
>ns : Symbol(foo.ns, Decl(1.ts, 0, 6))
2424
>a : Symbol(foo.ns.a, Decl(0.ts, 0, 12))
2525

2626
foo.ns.b;
2727
>foo.ns.b : Symbol(foo.ns.b, Decl(0.ts, 1, 12))
28-
>foo.ns : Symbol(foo.ns, Decl(1.ts, 0, 11))
28+
>foo.ns : Symbol(foo.ns, Decl(1.ts, 0, 6))
2929
>foo : Symbol(foo, Decl(2.ts, 0, 6))
30-
>ns : Symbol(foo.ns, Decl(1.ts, 0, 11))
30+
>ns : Symbol(foo.ns, Decl(1.ts, 0, 6))
3131
>b : Symbol(foo.ns.b, Decl(0.ts, 1, 12))
3232

tests/baselines/reference/exportAsNamespace2(module=esnext).symbols

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export const b = 2;
77

88
=== tests/cases/conformance/es2020/modules/1.ts ===
99
export * as ns from './0';
10-
>ns : Symbol(ns, Decl(1.ts, 0, 11))
10+
>ns : Symbol(ns, Decl(1.ts, 0, 6))
1111

1212
ns.a;
1313
ns.b;
@@ -18,15 +18,15 @@ import * as foo from './1'
1818

1919
foo.ns.a;
2020
>foo.ns.a : Symbol(foo.ns.a, Decl(0.ts, 0, 12))
21-
>foo.ns : Symbol(foo.ns, Decl(1.ts, 0, 11))
21+
>foo.ns : Symbol(foo.ns, Decl(1.ts, 0, 6))
2222
>foo : Symbol(foo, Decl(2.ts, 0, 6))
23-
>ns : Symbol(foo.ns, Decl(1.ts, 0, 11))
23+
>ns : Symbol(foo.ns, Decl(1.ts, 0, 6))
2424
>a : Symbol(foo.ns.a, Decl(0.ts, 0, 12))
2525

2626
foo.ns.b;
2727
>foo.ns.b : Symbol(foo.ns.b, Decl(0.ts, 1, 12))
28-
>foo.ns : Symbol(foo.ns, Decl(1.ts, 0, 11))
28+
>foo.ns : Symbol(foo.ns, Decl(1.ts, 0, 6))
2929
>foo : Symbol(foo, Decl(2.ts, 0, 6))
30-
>ns : Symbol(foo.ns, Decl(1.ts, 0, 11))
30+
>ns : Symbol(foo.ns, Decl(1.ts, 0, 6))
3131
>b : Symbol(foo.ns.b, Decl(0.ts, 1, 12))
3232

0 commit comments

Comments
 (0)