Skip to content

Commit 3b72456

Browse files
brad4dcopybara-github
authored andcommitted
Remove unnecessary checks from RewriteClassMembers
`RewriteClassMembers` is now running `MakeDeclaredNamesUnique` in its `process()` method. Therefore, all variable names are unique when it does its actual work. Therefore, it is a waste of time for it to continue doing checks it previously did in order to ensure name shadowing doesn't happen. PiperOrigin-RevId: 561104386
1 parent 43850b5 commit 3b72456

File tree

1 file changed

+0
-53
lines changed

1 file changed

+0
-53
lines changed

src/com/google/javascript/jscomp/RewriteClassMembers.java

-53
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,8 @@
1717

1818
import static com.google.common.base.Preconditions.checkArgument;
1919
import static com.google.common.base.Preconditions.checkState;
20-
import static com.google.common.collect.ImmutableSet.toImmutableSet;
2120

2221
import com.google.common.collect.ImmutableSet;
23-
import com.google.common.collect.MultimapBuilder;
24-
import com.google.common.collect.SetMultimap;
2522
import com.google.javascript.jscomp.parsing.parser.FeatureSet;
2623
import com.google.javascript.jscomp.parsing.parser.FeatureSet.Feature;
2724
import com.google.javascript.rhino.Node;
@@ -99,19 +96,6 @@ public boolean shouldTraverse(NodeTraversal t, Node n, Node parent) {
9996
checkState(!classStack.isEmpty());
10097
classStack.peek().recordStaticBlock(n);
10198
break;
102-
case NAME:
103-
for (ClassRecord record : classStack) {
104-
// For now, we are just processing these names as strings, and so we will also give
105-
// CANNOT_CONVERT_YET errors for patterns that technically can be simply inlined, such as:
106-
// class C {
107-
// y = (x) => x;
108-
// constructor(x) {}
109-
// }
110-
// Either using scopes to be more precise or just doing renaming for all conflicting
111-
// constructor declarations would address this issue.
112-
record.potentiallyRecordNameInRhs(n);
113-
}
114-
break;
11599
case COMPUTED_PROP:
116100
checkState(!classStack.isEmpty());
117101
ClassRecord record = classStack.peek();
@@ -143,10 +127,6 @@ public void visit(NodeTraversal t, Node n, Node parent) {
143127
case CLASS:
144128
visitClass(t);
145129
return;
146-
case COMPUTED_FIELD_DEF:
147-
case MEMBER_FIELD_DEF:
148-
classStack.peek().exitField();
149-
return;
150130
case THIS:
151131
Node rootNode = t.getClosestScopeRootNodeBindingThisOrSuper();
152132
if (rootNode.isStaticMember()
@@ -303,21 +283,12 @@ private void rewriteInstanceMembers(NodeTraversal t, ClassRecord record) {
303283
Node ctor = NodeUtil.getEs6ClassConstructorMemberFunctionDef(record.classNode);
304284
Node ctorBlock = ctor.getFirstChild().getLastChild();
305285
Node insertionPoint = findInitialInstanceInsertionPoint(ctorBlock);
306-
ImmutableSet<String> ctorDefinedNames = record.getConstructorDefinedNames();
307286

308287
while (!instanceMembers.isEmpty()) {
309288
Node instanceMember = instanceMembers.pop();
310289
checkState(
311290
instanceMember.isMemberFieldDef() || instanceMember.isComputedFieldDef(), instanceMember);
312291

313-
for (Node nameInRhs : record.referencedNamesByMember.get(instanceMember)) {
314-
String name = nameInRhs.getString();
315-
checkState(
316-
!ctorDefinedNames.contains(name),
317-
"Rhs of public field cannot use the same name as a constructor parameter: %s",
318-
name);
319-
}
320-
321292
Node thisNode = astFactory.createThisForEs6ClassMember(instanceMember);
322293
if (instanceMember.isComputedFieldDef()
323294
&& NodeUtil.canBeSideEffected(instanceMember.getFirstChild())) {
@@ -470,8 +441,6 @@ private Node findInitialInstanceInsertionPoint(Node ctorBlock) {
470441
*/
471442
private static final class ClassRecord {
472443

473-
// During traversal, contains the current member being traversed. After traversal, always null
474-
@Nullable Node currentMember;
475444
boolean cannotConvert;
476445

477446
// Instance fields
@@ -481,9 +450,6 @@ private static final class ClassRecord {
481450
// Computed fields with side effects after the most recent computed member function
482451
final Deque<Node> computedFieldsWithSideEffectsToMove = new ArrayDeque<>();
483452

484-
// Mapping from MEMBER_FIELD_DEF (& COMPUTED_FIELD_DEF) nodes to all name nodes in that RHS
485-
final SetMultimap<Node, Node> referencedNamesByMember =
486-
MultimapBuilder.linkedHashKeys().hashSetValues().build();
487453
// Set of all the Vars defined in the constructor arguments scope and constructor body scope
488454
ImmutableSet<Var> constructorVars = ImmutableSet.of();
489455

@@ -510,28 +476,13 @@ void enterField(Node field) {
510476
} else {
511477
instanceMembers.push(field);
512478
}
513-
currentMember = field;
514-
}
515-
516-
void exitField() {
517-
currentMember = null;
518479
}
519480

520481
void recordStaticBlock(Node block) {
521482
checkArgument(NodeUtil.isClassStaticBlock(block));
522483
staticMembers.push(block);
523484
}
524485

525-
void potentiallyRecordNameInRhs(Node nameNode) {
526-
checkArgument(nameNode.isName());
527-
if (currentMember == null) {
528-
return;
529-
}
530-
checkState(
531-
currentMember.isMemberFieldDef() || currentMember.isComputedFieldDef(), currentMember);
532-
referencedNamesByMember.put(currentMember, nameNode);
533-
}
534-
535486
void recordConstructorScope(Scope s) {
536487
checkArgument(s.isFunctionBlockScope(), s);
537488
checkState(constructorVars.isEmpty(), constructorVars);
@@ -541,9 +492,5 @@ void recordConstructorScope(Scope s) {
541492
builder.addAll(argsScope.getAllSymbols());
542493
constructorVars = builder.build();
543494
}
544-
545-
ImmutableSet<String> getConstructorDefinedNames() {
546-
return constructorVars.stream().map(Var::getName).collect(toImmutableSet());
547-
}
548495
}
549496
}

0 commit comments

Comments
 (0)