[#7189] NullPointerException when DSL.name(Name...) contains a null Name argument
This commit is contained in:
parent
177f8137e9
commit
9bea1239a2
@ -64,7 +64,7 @@ final class QualifiedName extends AbstractName {
|
||||
}
|
||||
|
||||
QualifiedName(Name[] qualifiedName) {
|
||||
this.qualifiedName = last(qualifiedName);
|
||||
this.qualifiedName = last(nonEmpty(qualifiedName));
|
||||
}
|
||||
|
||||
private QualifiedName(UnqualifiedName[] qualifiedName) {
|
||||
@ -124,6 +124,30 @@ final class QualifiedName extends AbstractName {
|
||||
return result;
|
||||
}
|
||||
|
||||
private static final Name[] nonEmpty(Name[] names) {
|
||||
Name[] result;
|
||||
int nulls = 0;
|
||||
|
||||
for (int i = 0; i < names.length; i++)
|
||||
if (names[i] == null)
|
||||
nulls++;
|
||||
|
||||
if (nulls > 0) {
|
||||
result = new Name[names.length - nulls];
|
||||
|
||||
for (int i = names.length - 1; i >= 0; i--)
|
||||
if (names[i] == null)
|
||||
nulls--;
|
||||
else
|
||||
result[i - nulls] = names[i];
|
||||
}
|
||||
else {
|
||||
result = names;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void accept(Context<?> ctx) {
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user