8219483: j.l.c.ClassDesc::nested(String, String...) doesn't throw NPE if any arg is null
Reviewed-by: darcy
This commit is contained in:
parent
5a264ba9db
commit
c7faef0785
src/java.base/share/classes/java/lang/constant
test/jdk/java/lang/constant
@ -213,7 +213,7 @@ public interface ClassDesc
|
||||
* @param moreNestedNames the unqualified name(s) of the remaining levels of
|
||||
* nested class
|
||||
* @return a {@linkplain ClassDesc} describing the nested class
|
||||
* @throws NullPointerException if any argument is {@code null}
|
||||
* @throws NullPointerException if any argument or its contents is {@code null}
|
||||
* @throws IllegalStateException if this {@linkplain ClassDesc} does not
|
||||
* describe a class or interface type
|
||||
* @throws IllegalArgumentException if the nested class name is invalid
|
||||
@ -221,6 +221,11 @@ public interface ClassDesc
|
||||
default ClassDesc nested(String firstNestedName, String... moreNestedNames) {
|
||||
if (!isClassOrInterface())
|
||||
throw new IllegalStateException("Outer class is not a class or interface type");
|
||||
validateMemberName(firstNestedName, false);
|
||||
requireNonNull(moreNestedNames);
|
||||
for (String addNestedNames : moreNestedNames) {
|
||||
validateMemberName(addNestedNames, false);
|
||||
}
|
||||
return moreNestedNames.length == 0
|
||||
? nested(firstNestedName)
|
||||
: nested(firstNestedName + Stream.of(moreNestedNames).collect(joining("$", "$", "")));
|
||||
|
@ -306,4 +306,28 @@ public class ClassDescTest extends SymbolicDescTest {
|
||||
assertEquals(s.resolveConstantDesc(LOOKUP), s);
|
||||
assertEquals(s.describeConstable().get(), s);
|
||||
}
|
||||
|
||||
public void testNullNestedClasses() {
|
||||
ClassDesc cd = ClassDesc.of("Bar");
|
||||
try {
|
||||
cd.nested(null);
|
||||
fail("");
|
||||
} catch (NullPointerException e) {
|
||||
// good
|
||||
}
|
||||
|
||||
try {
|
||||
cd.nested("good", null);
|
||||
fail("");
|
||||
} catch (NullPointerException e) {
|
||||
// good
|
||||
}
|
||||
|
||||
try {
|
||||
cd.nested("good", "goodToo", null);
|
||||
fail("");
|
||||
} catch (NullPointerException e) {
|
||||
// good
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user