Skip to content

Commit 0a7c928

Browse files
authored
Fix Object.defineProperty declaration expando-ness and renames (#28061)
* Allow object.defineProperty calls to be expando properties * Fix rename locations for object.defineProperty assignments
1 parent fbd6cad commit 0a7c928

13 files changed

+249
-132
lines changed

src/compiler/binder.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2607,6 +2607,9 @@ namespace ts {
26072607
return true;
26082608
}
26092609
const node = symbol.valueDeclaration;
2610+
if (isCallExpression(node)) {
2611+
return !!getAssignedExpandoInitializer(node);
2612+
}
26102613
let init = !node ? undefined :
26112614
isVariableDeclaration(node) ? node.initializer :
26122615
isBinaryExpression(node) ? node.right :

src/compiler/checker.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4306,6 +4306,9 @@ namespace ts {
43064306
const declaration = symbol.declarations[0];
43074307
const name = getNameOfDeclaration(declaration);
43084308
if (name) {
4309+
if (isCallExpression(declaration) && isBindableObjectDefinePropertyCall(declaration)) {
4310+
return symbolName(symbol);
4311+
}
43094312
return declarationNameToString(name);
43104313
}
43114314
if (declaration.parent && declaration.parent.kind === SyntaxKind.VariableDeclaration) {
@@ -27819,6 +27822,9 @@ namespace ts {
2781927822
) {
2782027823
return resolveExternalModuleName(node, <LiteralExpression>node);
2782127824
}
27825+
if (isCallExpression(parent) && isBindableObjectDefinePropertyCall(parent) && parent.arguments[1] === node) {
27826+
return getSymbolOfNode(parent);
27827+
}
2782227828
// falls through
2782327829

2782427830
case SyntaxKind.NumericLiteral:

src/compiler/utilities.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1790,16 +1790,26 @@ namespace ts {
17901790
return init && getExpandoInitializer(init, isPrototypeAccess(node.name));
17911791
}
17921792

1793+
function hasExpandoValueProperty(node: ObjectLiteralExpression, isPrototypeAssignment: boolean) {
1794+
return forEach(node.properties, p => isPropertyAssignment(p) && isIdentifier(p.name) && p.name.escapedText === "value" && p.initializer && getExpandoInitializer(p.initializer, isPrototypeAssignment));
1795+
}
1796+
17931797
/**
17941798
* Get the assignment 'initializer' -- the righthand side-- when the initializer is container-like (See getExpandoInitializer).
17951799
* We treat the right hand side of assignments with container-like initalizers as declarations.
17961800
*/
1797-
export function getAssignedExpandoInitializer(node: Node) {
1801+
export function getAssignedExpandoInitializer(node: Node | undefined) {
17981802
if (node && node.parent && isBinaryExpression(node.parent) && node.parent.operatorToken.kind === SyntaxKind.EqualsToken) {
17991803
const isPrototypeAssignment = isPrototypeAccess(node.parent.left);
18001804
return getExpandoInitializer(node.parent.right, isPrototypeAssignment) ||
18011805
getDefaultedExpandoInitializer(node.parent.left as EntityNameExpression, node.parent.right, isPrototypeAssignment);
18021806
}
1807+
if (node && isCallExpression(node) && isBindableObjectDefinePropertyCall(node)) {
1808+
const result = hasExpandoValueProperty(node.arguments[2], node.arguments[1].text === "prototype");
1809+
if (result) {
1810+
return result;
1811+
}
1812+
}
18031813
}
18041814

18051815
/**
@@ -2016,7 +2026,7 @@ namespace ts {
20162026
case SyntaxKind.ExternalModuleReference:
20172027
return (node.parent as ExternalModuleReference).parent as AnyValidImportOrReExport;
20182028
case SyntaxKind.CallExpression:
2019-
return node.parent as AnyValidImportOrReExport;
2029+
return isImportCall(node.parent) || isRequireCall(node.parent, /*checkArg*/ false) ? node.parent as RequireOrImportCall : undefined;
20202030
case SyntaxKind.LiteralType:
20212031
Debug.assert(isStringLiteral(node));
20222032
return tryCast(node.parent.parent, isImportTypeNode) as ValidImportTypeNode | undefined;

src/services/findAllReferences.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -920,7 +920,7 @@ namespace ts.FindAllReferences.Core {
920920

921921
case SyntaxKind.StringLiteral: {
922922
const str = node as StringLiteral;
923-
return (isLiteralNameOfPropertyDeclarationOrIndexAccess(str) || isNameOfModuleDeclaration(node) || isExpressionOfExternalModuleImportEqualsDeclaration(node)) &&
923+
return (isLiteralNameOfPropertyDeclarationOrIndexAccess(str) || isNameOfModuleDeclaration(node) || isExpressionOfExternalModuleImportEqualsDeclaration(node) || (isCallExpression(node.parent) && isBindableObjectDefinePropertyCall(node.parent) && node.parent.arguments[1] === node)) &&
924924
str.text.length === searchSymbolName.length;
925925
}
926926

tests/baselines/reference/checkExportsObjectAssignProperty.symbols

Lines changed: 66 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -5,148 +5,149 @@ import m1 = require("./mod1");
55
>m1 : Symbol(m1, Decl(validator.ts, 0, 12))
66

77
m1.thing;
8-
>m1.thing : Symbol(m1["thing"], Decl(mod1.js, 0, 0))
8+
>m1.thing : Symbol(m1.thing, Decl(mod1.js, 0, 0))
99
>m1 : Symbol(m1, Decl(validator.ts, 0, 12))
10-
>thing : Symbol(m1["thing"], Decl(mod1.js, 0, 0))
10+
>thing : Symbol(m1.thing, Decl(mod1.js, 0, 0))
1111

1212
m1.readonlyProp;
13-
>m1.readonlyProp : Symbol(m1["readonlyProp"], Decl(mod1.js, 0, 71))
13+
>m1.readonlyProp : Symbol(m1.readonlyProp, Decl(mod1.js, 0, 71))
1414
>m1 : Symbol(m1, Decl(validator.ts, 0, 12))
15-
>readonlyProp : Symbol(m1["readonlyProp"], Decl(mod1.js, 0, 71))
15+
>readonlyProp : Symbol(m1.readonlyProp, Decl(mod1.js, 0, 71))
1616

1717
m1.rwAccessors;
18-
>m1.rwAccessors : Symbol(m1["rwAccessors"], Decl(mod1.js, 1, 84))
18+
>m1.rwAccessors : Symbol(m1.rwAccessors, Decl(mod1.js, 1, 84))
1919
>m1 : Symbol(m1, Decl(validator.ts, 0, 12))
20-
>rwAccessors : Symbol(m1["rwAccessors"], Decl(mod1.js, 1, 84))
20+
>rwAccessors : Symbol(m1.rwAccessors, Decl(mod1.js, 1, 84))
2121

2222
m1.readonlyAccessor;
23-
>m1.readonlyAccessor : Symbol(m1["readonlyAccessor"], Decl(mod1.js, 2, 97))
23+
>m1.readonlyAccessor : Symbol(m1.readonlyAccessor, Decl(mod1.js, 2, 97))
2424
>m1 : Symbol(m1, Decl(validator.ts, 0, 12))
25-
>readonlyAccessor : Symbol(m1["readonlyAccessor"], Decl(mod1.js, 2, 97))
25+
>readonlyAccessor : Symbol(m1.readonlyAccessor, Decl(mod1.js, 2, 97))
2626

2727
m1.setonlyAccessor;
28-
>m1.setonlyAccessor : Symbol(m1["setonlyAccessor"], Decl(mod1.js, 3, 79))
28+
>m1.setonlyAccessor : Symbol(m1.setonlyAccessor, Decl(mod1.js, 3, 79))
2929
>m1 : Symbol(m1, Decl(validator.ts, 0, 12))
30-
>setonlyAccessor : Symbol(m1["setonlyAccessor"], Decl(mod1.js, 3, 79))
30+
>setonlyAccessor : Symbol(m1.setonlyAccessor, Decl(mod1.js, 3, 79))
3131

3232
// allowed assignments
3333
m1.thing = 10;
34-
>m1.thing : Symbol(m1["thing"], Decl(mod1.js, 0, 0))
34+
>m1.thing : Symbol(m1.thing, Decl(mod1.js, 0, 0))
3535
>m1 : Symbol(m1, Decl(validator.ts, 0, 12))
36-
>thing : Symbol(m1["thing"], Decl(mod1.js, 0, 0))
36+
>thing : Symbol(m1.thing, Decl(mod1.js, 0, 0))
3737

3838
m1.rwAccessors = 11;
39-
>m1.rwAccessors : Symbol(m1["rwAccessors"], Decl(mod1.js, 1, 84))
39+
>m1.rwAccessors : Symbol(m1.rwAccessors, Decl(mod1.js, 1, 84))
4040
>m1 : Symbol(m1, Decl(validator.ts, 0, 12))
41-
>rwAccessors : Symbol(m1["rwAccessors"], Decl(mod1.js, 1, 84))
41+
>rwAccessors : Symbol(m1.rwAccessors, Decl(mod1.js, 1, 84))
4242

4343
m1.setonlyAccessor = "yes";
44-
>m1.setonlyAccessor : Symbol(m1["setonlyAccessor"], Decl(mod1.js, 3, 79))
44+
>m1.setonlyAccessor : Symbol(m1.setonlyAccessor, Decl(mod1.js, 3, 79))
4545
>m1 : Symbol(m1, Decl(validator.ts, 0, 12))
46-
>setonlyAccessor : Symbol(m1["setonlyAccessor"], Decl(mod1.js, 3, 79))
46+
>setonlyAccessor : Symbol(m1.setonlyAccessor, Decl(mod1.js, 3, 79))
4747

4848
// disallowed assignments
4949
m1.readonlyProp = "name";
50-
>m1.readonlyProp : Symbol(m1["readonlyProp"], Decl(mod1.js, 0, 71))
50+
>m1.readonlyProp : Symbol(m1.readonlyProp, Decl(mod1.js, 0, 71))
5151
>m1 : Symbol(m1, Decl(validator.ts, 0, 12))
52-
>readonlyProp : Symbol(m1["readonlyProp"], Decl(mod1.js, 0, 71))
52+
>readonlyProp : Symbol(m1.readonlyProp, Decl(mod1.js, 0, 71))
5353

5454
m1.readonlyAccessor = 12;
55-
>m1.readonlyAccessor : Symbol(m1["readonlyAccessor"], Decl(mod1.js, 2, 97))
55+
>m1.readonlyAccessor : Symbol(m1.readonlyAccessor, Decl(mod1.js, 2, 97))
5656
>m1 : Symbol(m1, Decl(validator.ts, 0, 12))
57-
>readonlyAccessor : Symbol(m1["readonlyAccessor"], Decl(mod1.js, 2, 97))
57+
>readonlyAccessor : Symbol(m1.readonlyAccessor, Decl(mod1.js, 2, 97))
5858

5959
m1.thing = "no";
60-
>m1.thing : Symbol(m1["thing"], Decl(mod1.js, 0, 0))
60+
>m1.thing : Symbol(m1.thing, Decl(mod1.js, 0, 0))
6161
>m1 : Symbol(m1, Decl(validator.ts, 0, 12))
62-
>thing : Symbol(m1["thing"], Decl(mod1.js, 0, 0))
62+
>thing : Symbol(m1.thing, Decl(mod1.js, 0, 0))
6363

6464
m1.rwAccessors = "no";
65-
>m1.rwAccessors : Symbol(m1["rwAccessors"], Decl(mod1.js, 1, 84))
65+
>m1.rwAccessors : Symbol(m1.rwAccessors, Decl(mod1.js, 1, 84))
6666
>m1 : Symbol(m1, Decl(validator.ts, 0, 12))
67-
>rwAccessors : Symbol(m1["rwAccessors"], Decl(mod1.js, 1, 84))
67+
>rwAccessors : Symbol(m1.rwAccessors, Decl(mod1.js, 1, 84))
6868

6969
m1.setonlyAccessor = 0;
70-
>m1.setonlyAccessor : Symbol(m1["setonlyAccessor"], Decl(mod1.js, 3, 79))
70+
>m1.setonlyAccessor : Symbol(m1.setonlyAccessor, Decl(mod1.js, 3, 79))
7171
>m1 : Symbol(m1, Decl(validator.ts, 0, 12))
72-
>setonlyAccessor : Symbol(m1["setonlyAccessor"], Decl(mod1.js, 3, 79))
72+
>setonlyAccessor : Symbol(m1.setonlyAccessor, Decl(mod1.js, 3, 79))
7373

7474
import m2 = require("./mod2");
7575
>m2 : Symbol(m2, Decl(validator.ts, 20, 23))
7676

7777
m2.thing;
78-
>m2.thing : Symbol(m2["thing"], Decl(mod2.js, 0, 0))
78+
>m2.thing : Symbol(m2.thing, Decl(mod2.js, 0, 0))
7979
>m2 : Symbol(m2, Decl(validator.ts, 20, 23))
80-
>thing : Symbol(m2["thing"], Decl(mod2.js, 0, 0))
80+
>thing : Symbol(m2.thing, Decl(mod2.js, 0, 0))
8181

8282
m2.readonlyProp;
83-
>m2.readonlyProp : Symbol(m2["readonlyProp"], Decl(mod2.js, 0, 81))
83+
>m2.readonlyProp : Symbol(m2.readonlyProp, Decl(mod2.js, 0, 81))
8484
>m2 : Symbol(m2, Decl(validator.ts, 20, 23))
85-
>readonlyProp : Symbol(m2["readonlyProp"], Decl(mod2.js, 0, 81))
85+
>readonlyProp : Symbol(m2.readonlyProp, Decl(mod2.js, 0, 81))
8686

8787
m2.rwAccessors;
88-
>m2.rwAccessors : Symbol(m2["rwAccessors"], Decl(mod2.js, 1, 91))
88+
>m2.rwAccessors : Symbol(m2.rwAccessors, Decl(mod2.js, 1, 91))
8989
>m2 : Symbol(m2, Decl(validator.ts, 20, 23))
90-
>rwAccessors : Symbol(m2["rwAccessors"], Decl(mod2.js, 1, 91))
90+
>rwAccessors : Symbol(m2.rwAccessors, Decl(mod2.js, 1, 91))
9191

9292
m2.readonlyAccessor;
93-
>m2.readonlyAccessor : Symbol(m2["readonlyAccessor"], Decl(mod2.js, 2, 104))
93+
>m2.readonlyAccessor : Symbol(m2.readonlyAccessor, Decl(mod2.js, 2, 104))
9494
>m2 : Symbol(m2, Decl(validator.ts, 20, 23))
95-
>readonlyAccessor : Symbol(m2["readonlyAccessor"], Decl(mod2.js, 2, 104))
95+
>readonlyAccessor : Symbol(m2.readonlyAccessor, Decl(mod2.js, 2, 104))
9696

9797
m2.setonlyAccessor;
98-
>m2.setonlyAccessor : Symbol(m2["setonlyAccessor"], Decl(mod2.js, 3, 86))
98+
>m2.setonlyAccessor : Symbol(m2.setonlyAccessor, Decl(mod2.js, 3, 86))
9999
>m2 : Symbol(m2, Decl(validator.ts, 20, 23))
100-
>setonlyAccessor : Symbol(m2["setonlyAccessor"], Decl(mod2.js, 3, 86))
100+
>setonlyAccessor : Symbol(m2.setonlyAccessor, Decl(mod2.js, 3, 86))
101101

102102
// allowed assignments
103103
m2.thing = "ok";
104-
>m2.thing : Symbol(m2["thing"], Decl(mod2.js, 0, 0))
104+
>m2.thing : Symbol(m2.thing, Decl(mod2.js, 0, 0))
105105
>m2 : Symbol(m2, Decl(validator.ts, 20, 23))
106-
>thing : Symbol(m2["thing"], Decl(mod2.js, 0, 0))
106+
>thing : Symbol(m2.thing, Decl(mod2.js, 0, 0))
107107

108108
m2.rwAccessors = 11;
109-
>m2.rwAccessors : Symbol(m2["rwAccessors"], Decl(mod2.js, 1, 91))
109+
>m2.rwAccessors : Symbol(m2.rwAccessors, Decl(mod2.js, 1, 91))
110110
>m2 : Symbol(m2, Decl(validator.ts, 20, 23))
111-
>rwAccessors : Symbol(m2["rwAccessors"], Decl(mod2.js, 1, 91))
111+
>rwAccessors : Symbol(m2.rwAccessors, Decl(mod2.js, 1, 91))
112112

113113
m2.setonlyAccessor = "yes";
114-
>m2.setonlyAccessor : Symbol(m2["setonlyAccessor"], Decl(mod2.js, 3, 86))
114+
>m2.setonlyAccessor : Symbol(m2.setonlyAccessor, Decl(mod2.js, 3, 86))
115115
>m2 : Symbol(m2, Decl(validator.ts, 20, 23))
116-
>setonlyAccessor : Symbol(m2["setonlyAccessor"], Decl(mod2.js, 3, 86))
116+
>setonlyAccessor : Symbol(m2.setonlyAccessor, Decl(mod2.js, 3, 86))
117117

118118
// disallowed assignments
119119
m2.readonlyProp = "name";
120-
>m2.readonlyProp : Symbol(m2["readonlyProp"], Decl(mod2.js, 0, 81))
120+
>m2.readonlyProp : Symbol(m2.readonlyProp, Decl(mod2.js, 0, 81))
121121
>m2 : Symbol(m2, Decl(validator.ts, 20, 23))
122-
>readonlyProp : Symbol(m2["readonlyProp"], Decl(mod2.js, 0, 81))
122+
>readonlyProp : Symbol(m2.readonlyProp, Decl(mod2.js, 0, 81))
123123

124124
m2.readonlyAccessor = 12;
125-
>m2.readonlyAccessor : Symbol(m2["readonlyAccessor"], Decl(mod2.js, 2, 104))
125+
>m2.readonlyAccessor : Symbol(m2.readonlyAccessor, Decl(mod2.js, 2, 104))
126126
>m2 : Symbol(m2, Decl(validator.ts, 20, 23))
127-
>readonlyAccessor : Symbol(m2["readonlyAccessor"], Decl(mod2.js, 2, 104))
127+
>readonlyAccessor : Symbol(m2.readonlyAccessor, Decl(mod2.js, 2, 104))
128128

129129
m2.thing = 0;
130-
>m2.thing : Symbol(m2["thing"], Decl(mod2.js, 0, 0))
130+
>m2.thing : Symbol(m2.thing, Decl(mod2.js, 0, 0))
131131
>m2 : Symbol(m2, Decl(validator.ts, 20, 23))
132-
>thing : Symbol(m2["thing"], Decl(mod2.js, 0, 0))
132+
>thing : Symbol(m2.thing, Decl(mod2.js, 0, 0))
133133

134134
m2.rwAccessors = "no";
135-
>m2.rwAccessors : Symbol(m2["rwAccessors"], Decl(mod2.js, 1, 91))
135+
>m2.rwAccessors : Symbol(m2.rwAccessors, Decl(mod2.js, 1, 91))
136136
>m2 : Symbol(m2, Decl(validator.ts, 20, 23))
137-
>rwAccessors : Symbol(m2["rwAccessors"], Decl(mod2.js, 1, 91))
137+
>rwAccessors : Symbol(m2.rwAccessors, Decl(mod2.js, 1, 91))
138138

139139
m2.setonlyAccessor = 0;
140-
>m2.setonlyAccessor : Symbol(m2["setonlyAccessor"], Decl(mod2.js, 3, 86))
140+
>m2.setonlyAccessor : Symbol(m2.setonlyAccessor, Decl(mod2.js, 3, 86))
141141
>m2 : Symbol(m2, Decl(validator.ts, 20, 23))
142-
>setonlyAccessor : Symbol(m2["setonlyAccessor"], Decl(mod2.js, 3, 86))
142+
>setonlyAccessor : Symbol(m2.setonlyAccessor, Decl(mod2.js, 3, 86))
143143

144144
=== tests/cases/conformance/jsdoc/mod1.js ===
145145
Object.defineProperty(exports, "thing", { value: 42, writable: true });
146146
>Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --))
147147
>Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
148148
>defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --))
149149
>exports : Symbol("tests/cases/conformance/jsdoc/mod1", Decl(mod1.js, 0, 0))
150+
>"thing" : Symbol(thing, Decl(mod1.js, 0, 0))
150151
>value : Symbol(value, Decl(mod1.js, 0, 41))
151152
>writable : Symbol(writable, Decl(mod1.js, 0, 52))
152153

@@ -155,6 +156,7 @@ Object.defineProperty(exports, "readonlyProp", { value: "Smith", writable: false
155156
>Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
156157
>defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --))
157158
>exports : Symbol("tests/cases/conformance/jsdoc/mod1", Decl(mod1.js, 0, 0))
159+
>"readonlyProp" : Symbol(readonlyProp, Decl(mod1.js, 0, 71))
158160
>value : Symbol(value, Decl(mod1.js, 1, 48))
159161
>writable : Symbol(writable, Decl(mod1.js, 1, 64))
160162

@@ -163,6 +165,7 @@ Object.defineProperty(exports, "rwAccessors", { get() { return 98122 }, set(_) {
163165
>Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
164166
>defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --))
165167
>exports : Symbol("tests/cases/conformance/jsdoc/mod1", Decl(mod1.js, 0, 0))
168+
>"rwAccessors" : Symbol(rwAccessors, Decl(mod1.js, 1, 84))
166169
>get : Symbol(get, Decl(mod1.js, 2, 47))
167170
>set : Symbol(set, Decl(mod1.js, 2, 71))
168171
>_ : Symbol(_, Decl(mod1.js, 2, 76))
@@ -172,13 +175,15 @@ Object.defineProperty(exports, "readonlyAccessor", { get() { return 21.75 } });
172175
>Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
173176
>defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --))
174177
>exports : Symbol("tests/cases/conformance/jsdoc/mod1", Decl(mod1.js, 0, 0))
178+
>"readonlyAccessor" : Symbol(readonlyAccessor, Decl(mod1.js, 2, 97))
175179
>get : Symbol(get, Decl(mod1.js, 3, 52))
176180

177181
Object.defineProperty(exports, "setonlyAccessor", {
178182
>Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --))
179183
>Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
180184
>defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --))
181185
>exports : Symbol("tests/cases/conformance/jsdoc/mod1", Decl(mod1.js, 0, 0))
186+
>"setonlyAccessor" : Symbol(setonlyAccessor, Decl(mod1.js, 3, 79))
182187

183188
/** @param {string} str */
184189
set(str) {
@@ -200,6 +205,7 @@ Object.defineProperty(module.exports, "thing", { value: "yes", writable: true })
200205
>module.exports : Symbol("tests/cases/conformance/jsdoc/mod2", Decl(mod2.js, 0, 0))
201206
>module : Symbol(module, Decl(mod2.js, 0, 22))
202207
>exports : Symbol("tests/cases/conformance/jsdoc/mod2", Decl(mod2.js, 0, 0))
208+
>"thing" : Symbol(thing, Decl(mod2.js, 0, 0))
203209
>value : Symbol(value, Decl(mod2.js, 0, 48))
204210
>writable : Symbol(writable, Decl(mod2.js, 0, 62))
205211

@@ -210,6 +216,7 @@ Object.defineProperty(module.exports, "readonlyProp", { value: "Smith", writable
210216
>module.exports : Symbol("tests/cases/conformance/jsdoc/mod2", Decl(mod2.js, 0, 0))
211217
>module : Symbol(module, Decl(mod2.js, 0, 22))
212218
>exports : Symbol("tests/cases/conformance/jsdoc/mod2", Decl(mod2.js, 0, 0))
219+
>"readonlyProp" : Symbol(readonlyProp, Decl(mod2.js, 0, 81))
213220
>value : Symbol(value, Decl(mod2.js, 1, 55))
214221
>writable : Symbol(writable, Decl(mod2.js, 1, 71))
215222

@@ -220,6 +227,7 @@ Object.defineProperty(module.exports, "rwAccessors", { get() { return 98122 }, s
220227
>module.exports : Symbol("tests/cases/conformance/jsdoc/mod2", Decl(mod2.js, 0, 0))
221228
>module : Symbol(module, Decl(mod2.js, 0, 22))
222229
>exports : Symbol("tests/cases/conformance/jsdoc/mod2", Decl(mod2.js, 0, 0))
230+
>"rwAccessors" : Symbol(rwAccessors, Decl(mod2.js, 1, 91))
223231
>get : Symbol(get, Decl(mod2.js, 2, 54))
224232
>set : Symbol(set, Decl(mod2.js, 2, 78))
225233
>_ : Symbol(_, Decl(mod2.js, 2, 83))
@@ -231,6 +239,7 @@ Object.defineProperty(module.exports, "readonlyAccessor", { get() { return 21.75
231239
>module.exports : Symbol("tests/cases/conformance/jsdoc/mod2", Decl(mod2.js, 0, 0))
232240
>module : Symbol(module, Decl(mod2.js, 0, 22))
233241
>exports : Symbol("tests/cases/conformance/jsdoc/mod2", Decl(mod2.js, 0, 0))
242+
>"readonlyAccessor" : Symbol(readonlyAccessor, Decl(mod2.js, 2, 104))
234243
>get : Symbol(get, Decl(mod2.js, 3, 59))
235244

236245
Object.defineProperty(module.exports, "setonlyAccessor", {
@@ -240,6 +249,7 @@ Object.defineProperty(module.exports, "setonlyAccessor", {
240249
>module.exports : Symbol("tests/cases/conformance/jsdoc/mod2", Decl(mod2.js, 0, 0))
241250
>module : Symbol(module, Decl(mod2.js, 0, 22))
242251
>exports : Symbol("tests/cases/conformance/jsdoc/mod2", Decl(mod2.js, 0, 0))
252+
>"setonlyAccessor" : Symbol(setonlyAccessor, Decl(mod2.js, 3, 86))
243253

244254
/** @param {string} str */
245255
set(str) {
@@ -259,18 +269,18 @@ Object.defineProperty(module.exports, "setonlyAccessor", {
259269
*/
260270
const q = require("./mod1").thing;
261271
>q : Symbol(q, Decl(index.js, 3, 5))
262-
>require("./mod1").thing : Symbol("thing", Decl(mod1.js, 0, 0))
272+
>require("./mod1").thing : Symbol(thing, Decl(mod1.js, 0, 0))
263273
>require : Symbol(require)
264274
>"./mod1" : Symbol("tests/cases/conformance/jsdoc/mod1", Decl(mod1.js, 0, 0))
265-
>thing : Symbol("thing", Decl(mod1.js, 0, 0))
275+
>thing : Symbol(thing, Decl(mod1.js, 0, 0))
266276

267277
/**
268278
* @type {string}
269279
*/
270280
const u = require("./mod2").thing;
271281
>u : Symbol(u, Decl(index.js, 8, 5))
272-
>require("./mod2").thing : Symbol("thing", Decl(mod2.js, 0, 0))
282+
>require("./mod2").thing : Symbol(thing, Decl(mod2.js, 0, 0))
273283
>require : Symbol(require)
274284
>"./mod2" : Symbol("tests/cases/conformance/jsdoc/mod2", Decl(mod2.js, 0, 0))
275-
>thing : Symbol("thing", Decl(mod2.js, 0, 0))
285+
>thing : Symbol(thing, Decl(mod2.js, 0, 0))
276286

0 commit comments

Comments
 (0)