Skip to content

Commit 49084f7

Browse files
mickaelistriarobstryker
authored andcommitted
Fix potential NPE for recovered annotation types
1 parent 0a8b8e1 commit 49084f7

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

org.eclipse.jdt.core.javac/src/org/eclipse/jdt/internal/javac/dom/JavacAnnotationBinding.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import java.util.ArrayList;
1414
import java.util.Arrays;
1515
import java.util.Objects;
16+
import java.util.Optional;
1617
import java.util.stream.Collectors;
1718

1819
import org.eclipse.core.runtime.ILog;
@@ -62,27 +63,27 @@ public int getKind() {
6263

6364
@Override
6465
public int getModifiers() {
65-
return getAnnotationType().getModifiers();
66+
return getAnnotationTypeOptional().map(ITypeBinding::getModifiers).orElse(0);
6667
}
6768

6869
@Override
6970
public boolean isDeprecated() {
70-
return getAnnotationType().isDeprecated();
71+
return getAnnotationTypeOptional().map(ITypeBinding::isDeprecated).orElse(false);
7172
}
7273

7374
@Override
7475
public boolean isRecovered() {
75-
return getAnnotationType().isRecovered();
76+
return getAnnotationTypeOptional().map(ITypeBinding::isRecovered).orElse(false);
7677
}
7778

7879
@Override
7980
public boolean isSynthetic() {
80-
return getAnnotationType().isSynthetic();
81+
return getAnnotationTypeOptional().map(ITypeBinding::isSynthetic).orElse(false);
8182
}
8283

8384
@Override
8485
public IJavaElement getJavaElement() {
85-
return getAnnotationType().getJavaElement();
86+
return getAnnotationTypeOptional().map(ITypeBinding::getJavaElement).orElse(null);
8687
}
8788

8889
@Override
@@ -136,7 +137,7 @@ public IMemberValuePairBinding[] getDeclaredMemberValuePairs() {
136137

137138
@Override
138139
public String getName() {
139-
return getAnnotationType().getName();
140+
return getAnnotationTypeOptional().map(ITypeBinding::getName).orElse(null);
140141
}
141142

142143
@Override
@@ -149,4 +150,8 @@ public String toString() {
149150
public IBinding getRecipient() {
150151
return recipient;
151152
}
153+
154+
private Optional<ITypeBinding> getAnnotationTypeOptional() {
155+
return Optional.ofNullable(getAnnotationType());
156+
}
152157
}

0 commit comments

Comments
 (0)