Skip to content

Commit

Permalink
fix(java): properly elide type arguments for constructor calls (#4889)
Browse files Browse the repository at this point in the history
  • Loading branch information
jaysachs committed Apr 19, 2021
1 parent fbad605 commit 160b28a
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 16 deletions.
Expand Up @@ -897,10 +897,17 @@ public JavaNode visitNewClass(JCNewClass newClass, TreeContext owner) {
return emitDiagnostic(ctx, "error analyzing class", null, null);
}

Span refSpan =
new Span(
filePositions.getStart(newClass.getIdentifier()),
filePositions.getEnd(newClass.getIdentifier()));
Span refSpan;
if (newClass.getIdentifier() instanceof JCTypeApply) {
JCTree type = ((JCTypeApply) newClass.getIdentifier()).getType();
refSpan = new Span(filePositions.getStart(type), filePositions.getEnd(type));
} else {
refSpan =
new Span(
filePositions.getStart(newClass.getIdentifier()),
filePositions.getEnd(newClass.getIdentifier()));
}

// Span over "new Class(...)"
Span callSpan = new Span(filePositions.getStart(newClass), filePositions.getEnd(newClass));

Expand Down
Expand Up @@ -188,7 +188,6 @@ java_verifier_test(
verifier_deps = [":jvm_files_tests"],
)

# TODO(#1501): This test currently fails
java_verifier_test(
name = "generic_class_tests",
size = "small",
Expand Down Expand Up @@ -216,10 +215,6 @@ java_verifier_test(
name = "generic_method_ref_tests",
size = "small",
srcs = ["GenericMethodRef.java"],
tags = [
"arc-ignore",
"manual",
],
)

java_verifier_test(
Expand Down
Expand Up @@ -9,7 +9,8 @@ public static final class Optional<T> {
Optional() {}
}

//- @Optional ref OptionalClass
// TODO(#1501): wildcard tests currently fail
//- @Optional ref OClass
//- @wildcard defines/binding WildcardFnAbs
//- @ovar defines/binding WildcardParam1
//- WildcardFnAbs.node/kind abs
Expand All @@ -26,20 +27,28 @@ private static void wildcard(Optional<?> ovar) {}
private static <T> void verboseWildcard(Optional<T> ovar) {}

private static void caller() {
//- @wildcard ref WildcardFnAbs
//- @"wildcard(null)" ref/call WildcardFnAbs
// - @wildcard ref WildcardFnAbs
// - @"wildcard(null)" ref/call WildcardFnAbs
wildcard(null);

//- @verboseWildcard ref VerboseWildcardFnAbs
//- @"verboseWildcard(null)" ref/call VerboseWildcardFnAbs
// - @verboseWildcard ref VerboseWildcardFnAbs
// - @"verboseWildcard(null)" ref/call VerboseWildcardFnAbs
verboseWildcard(null);
}

private static void constructor() {
//- @Optional ref/call OptionalConstructor
//- @T defines/binding AbsT
private static <T> void constructor() {
//- @Optional ref OptionalConstructor
//- @Optional ref OClass
//- @GenericMethodRef ref GClass
//- @"new Optional<GenericMethodRef>()" ref/call OptionalConstructor
Object o = new Optional<GenericMethodRef>();

//- @Optional ref OptionalConstructor
//- @Optional ref OClass
//- @"new Optional<T>()" ref/call OptionalConstructor
//- @T ref AbsT
Object o2 = new Optional<T>();
}

}

0 comments on commit 160b28a

Please sign in to comment.