Skip to content

Commit 5bb7089

Browse files
cushonkevinb9n
authored and
kevinb9n
committed
Improve handling of synthetic generated constructors in refaster
The return type is a non-null 'void' type in recent JDK versions. #1106 ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=313289453
1 parent d1b47a0 commit 5bb7089

File tree

2 files changed

+9
-5
lines changed

2 files changed

+9
-5
lines changed

core/src/main/java/com/google/errorprone/refaster/UClassDecl.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import com.google.common.collect.DiscreteDomain;
2323
import com.google.common.collect.ImmutableList;
2424
import com.google.common.collect.Range;
25+
import com.google.errorprone.util.ASTHelpers;
2526
import com.sun.source.tree.ClassTree;
2627
import com.sun.source.tree.MethodTree;
2728
import com.sun.source.tree.ModifiersTree;
@@ -112,11 +113,12 @@ public Choice<Unifier> visitClass(ClassTree node, Unifier unifier) {
112113
Choice<UnifierWithRemainingMembers> path =
113114
Choice.of(UnifierWithRemainingMembers.create(unifier, getMembers()));
114115
for (Tree targetMember : node.getMembers()) {
115-
if (!(targetMember instanceof MethodTree)
116-
|| ((MethodTree) targetMember).getReturnType() != null) {
116+
if (targetMember instanceof MethodTree
117+
&& ASTHelpers.isGeneratedConstructor((MethodTree) targetMember)) {
117118
// skip synthetic constructors
118-
path = path.thenChoose(match(targetMember));
119+
continue;
119120
}
121+
path = path.thenChoose(match(targetMember));
120122
}
121123
return path.condition(s -> s.remainingMembers().isEmpty())
122124
.transform(UnifierWithRemainingMembers::unifier);

core/src/main/java/com/google/errorprone/refaster/UTemplater.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -515,9 +515,11 @@ public UNewClass visitNewClass(NewClassTree tree, Void v) {
515515
public UClassDecl visitClass(ClassTree tree, Void v) {
516516
ImmutableList.Builder<UMethodDecl> decls = ImmutableList.builder();
517517
for (MethodTree decl : Iterables.filter(tree.getMembers(), MethodTree.class)) {
518-
if (decl.getReturnType() != null) {
519-
decls.add(visitMethod(decl, null));
518+
if (ASTHelpers.isGeneratedConstructor(decl)) {
519+
// skip synthetic constructors
520+
continue;
520521
}
522+
decls.add(visitMethod(decl, null));
521523
}
522524
return UClassDecl.create(decls.build());
523525
}

0 commit comments

Comments
 (0)