NotNull for jdi methods appcode/142.4518
authorEgor.Ushakov <egor.ushakov@jetbrains.com>
Wed, 2 Sep 2015 18:01:04 +0000 (21:01 +0300)
committerEgor.Ushakov <egor.ushakov@jetbrains.com>
Wed, 2 Sep 2015 18:02:07 +0000 (21:02 +0300)
java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/FieldEvaluator.java
java/debugger/impl/src/com/intellij/debugger/ui/tree/render/ClassRenderer.java
java/debugger/openapi/src/com/intellij/debugger/engine/DebuggerUtils.java
java/jdkAnnotations/com/sun/jdi/annotations.xml [new file with mode: 0644]

index 719b2a3cbab875b2ef2d2ae8e7f84fdb8e58e6b3..6b0b52f33ec7bb840cf68439f6ec5448ff8d2cc6 100644 (file)
@@ -85,7 +85,7 @@ public class FieldEvaluator implements Evaluator {
   }
 
   @Nullable
-  private Field findField(Type t, final EvaluationContextImpl context) throws EvaluateException {
+  private Field findField(@Nullable Type t, final EvaluationContextImpl context) throws EvaluateException {
     if(t instanceof ClassType) {
       ClassType cls = (ClassType) t;
       if(myTargetClassFilter.acceptClass(cls)) {
index 48e1df1af5d2f8ecb7a029c04f967dc8d72eb7b8..acc69801c787055e1b8e5756e13115086b06de6d 100644 (file)
@@ -285,7 +285,7 @@ public class ClassRenderer extends NodeRendererImpl{
   }
 
   @Nullable
-  public static String getEnumConstantName(final ObjectReference objRef, ClassType classType) {
+  public static String getEnumConstantName(@NotNull ObjectReference objRef, ClassType classType) {
     do {
       if (!classType.isPrepared()) {
         return null;
index 6ba213bc09df77a3eed01b6b8ad9f445e9318edc..92e2e0498a59e542cd04976f6ff547e6f64519a9 100644 (file)
@@ -149,7 +149,7 @@ public abstract class DebuggerUtils {
   }
 
   @Nullable
-  public static Method findMethod(ReferenceType refType, @NonNls String methodName, @NonNls String methodSignature) {
+  public static Method findMethod(@NotNull ReferenceType refType, @NonNls String methodName, @NonNls String methodSignature) {
     if (refType instanceof ArrayType) {
       // for array types methodByName() in JDI always returns empty list
       final Method method = findMethod(refType.virtualMachine().classesByName(CommonClassNames.JAVA_LANG_OBJECT).get(0), methodName, methodSignature);
@@ -266,8 +266,11 @@ public abstract class DebuggerUtils {
     return false;
   }
 
-  public static Type getSuperType(@NotNull Type subType, @NotNull String superType) {
-    if(CommonClassNames.JAVA_LANG_OBJECT.equals(superType)) {
+  @Nullable
+  public static Type getSuperType(@Nullable Type subType, @NotNull String superType) {
+    if (subType == null) return null;
+
+    if (CommonClassNames.JAVA_LANG_OBJECT.equals(superType)) {
       List list = subType.virtualMachine().classesByName(CommonClassNames.JAVA_LANG_OBJECT);
       if(list.size() > 0) {
         return (ReferenceType)list.get(0);
@@ -286,19 +289,15 @@ public abstract class DebuggerUtils {
     return type.name().replace('$', '.').equals(typeName.replace('$', '.'));
   }
 
-  private static Type getSuperTypeInt(@Nullable Type subType, @NotNull String superType) {
-    Type result;
-    if (subType == null) {
-      return null;
-    }
-
+  private static Type getSuperTypeInt(@NotNull Type subType, @NotNull String superType) {
     if (typeEquals(subType, superType)) {
       return subType;
     }
 
+    Type result;
     if (subType instanceof ClassType) {
       try {
-        final ClassType clsType = (ClassType)subType;
+        ClassType clsType = (ClassType)subType;
         result = getSuperType(clsType.superclass(), superType);
         if (result != null) {
           return result;
@@ -358,7 +357,7 @@ public abstract class DebuggerUtils {
     return null;
   }
 
-  public static boolean instanceOf(@NotNull Type subType, @NotNull String superType) {
+  public static boolean instanceOf(@Nullable Type subType, @NotNull String superType) {
     return getSuperType(subType, superType) != null;
   }
 
diff --git a/java/jdkAnnotations/com/sun/jdi/annotations.xml b/java/jdkAnnotations/com/sun/jdi/annotations.xml
new file mode 100644 (file)
index 0000000..8d2899a
--- /dev/null
@@ -0,0 +1,5 @@
+<root>
+  <item name='com.sun.jdi.ClassType com.sun.jdi.ClassType superclass()'>
+    <annotation name='org.jetbrains.annotations.Nullable'/>
+  </item>
+</root>
\ No newline at end of file