[#7189] NullPointerException when DSL.name(Name...) contains a null Name argument

This commit is contained in:
lukaseder 2018-02-16 13:17:14 +01:00
parent 177f8137e9
commit 9bea1239a2

View File

@ -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) {