IDEA-52032: IllegalArgumentException at BaseInspectionVisitor​.​registerError​()...
authorMaxim Medvedev <maxim.medvedev@jetbrains.com>
Thu, 4 Feb 2010 12:23:13 +0000 (15:23 +0300)
committerMaxim Medvedev <maxim.medvedev@jetbrains.com>
Thu, 4 Feb 2010 12:23:13 +0000 (15:23 +0300)
plugins/groovy/src/org/jetbrains/plugins/groovy/codeInspection/BaseInspectionVisitor.java
plugins/groovy/src/org/jetbrains/plugins/groovy/codeInspection/bugs/GroovyResultOfObjectAllocationIgnoredInspection.java
plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/api/statements/expressions/GrNewExpression.java

index 724b93dfdddf30b175eda3048e822abf1a472391..5b86dd411584c07e837719f65abb8abdabe54edc 100644 (file)
@@ -23,6 +23,7 @@ import com.intellij.psi.PsiElement;
 import com.intellij.psi.PsiModifierList;
 import com.intellij.psi.PsiModifierListOwner;
 import com.intellij.psi.PsiWhiteSpace;
+import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 import org.jetbrains.plugins.groovy.lang.psi.GroovyRecursiveElementVisitor;
 import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrStatement;
@@ -119,14 +120,14 @@ public abstract class BaseInspectionVisitor extends GroovyRecursiveElementVisito
     registerError(((GrReferenceExpression) method.getInvokedExpression()).getReferenceNameElement(), description, fix);
   }
 
-  private void registerError(PsiElement location, String description,
+  private void registerError(@NotNull PsiElement location, String description,
                              LocalQuickFix[] fixes) {
     problemsHolder.registerProblem(location,
         description,
         ProblemHighlightType.GENERIC_ERROR_OR_WARNING, fixes);
   }
 
-  protected void registerError(PsiElement location, Object... args) {
+  protected void registerError(@NotNull PsiElement location, Object... args) {
     final LocalQuickFix[] fix = createFixes(location);
     final String description = inspection.buildErrorString(args);
     registerError(location, description, fix);
index 9f958a4d2ce35c2b8f9590cf5916a0f3f9db2bc3..b660d25de1b8cd46c3247f836f94822ea231e9e5 100644 (file)
@@ -27,6 +27,7 @@ import org.jetbrains.plugins.groovy.lang.psi.api.statements.blocks.GrClosableBlo
 import org.jetbrains.plugins.groovy.lang.psi.api.statements.blocks.GrCodeBlock;
 import org.jetbrains.plugins.groovy.lang.psi.api.statements.blocks.GrOpenBlock;
 import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrNewExpression;
+import org.jetbrains.plugins.groovy.lang.psi.api.types.GrCodeReferenceElement;
 
 public class GroovyResultOfObjectAllocationIgnoredInspection extends BaseInspection {
 
@@ -60,6 +61,9 @@ public class GroovyResultOfObjectAllocationIgnoredInspection extends BaseInspect
 
     public void visitNewExpression(GrNewExpression newExpression) {
       super.visitNewExpression(newExpression);
+      final GrCodeReferenceElement refElement = newExpression.getReferenceElement();
+      if (refElement == null) return;      //new expression is not correct so we shouldn't check it
+      
       final PsiElement parent = newExpression.getParent();
       if (parent instanceof GrClosableBlock) {
         return;
@@ -72,7 +76,7 @@ public class GroovyResultOfObjectAllocationIgnoredInspection extends BaseInspect
             return;
           }
         }
-        registerError(newExpression.getReferenceElement(), newExpression.getArrayCount());
+        registerError(refElement, newExpression.getArrayCount());
       }
     }
   }
index 83d8fe963f5d6220af97168c4f3ef7482e2417fd..d2976c684a7a4f0dddc7ead571098e6b769cefc9 100644 (file)
@@ -30,6 +30,7 @@ public interface GrNewExpression extends GrCallExpression {
   @Nullable
   GrExpression getQualifier();
 
+  @Nullable
   GrCodeReferenceElement getReferenceElement();
 
   GroovyResolveResult[] multiResolveConstructor();