| package com.intellij.codeInsight.daemon.quickFix; |
| |
| import com.intellij.codeInspection.AnnotateMethodFix; |
| import com.intellij.codeInspection.LocalInspectionTool; |
| import com.intellij.codeInspection.nullable.NullableStuffInspection; |
| import com.intellij.openapi.project.Project; |
| import com.intellij.pom.java.LanguageLevel; |
| import com.intellij.psi.PsiMethod; |
| import org.jetbrains.annotations.NonNls; |
| import org.jetbrains.annotations.NotNull; |
| |
| public class AnnotateMethodTest extends LightQuickFixTestCase { |
| private boolean myMustBeAvailableAfterInvoke; |
| |
| @Override |
| protected String getBasePath() { |
| return "/codeInsight/daemonCodeAnalyzer/quickFix/annotateMethod"; |
| } |
| |
| @NotNull |
| @Override |
| protected LocalInspectionTool[] configureLocalInspectionTools() { |
| return new LocalInspectionTool[]{new NullableStuffInspection(){ |
| @Override |
| protected AnnotateMethodFix createAnnotateMethodFix(String defaultNotNull, String[] annotationsToRemove) { |
| return new AnnotateMethodFix(defaultNotNull, annotationsToRemove){ |
| @Override |
| public int shouldAnnotateBaseMethod(final PsiMethod method, final PsiMethod superMethod, final Project project) { |
| @NonNls String name = method.getName(); |
| int ret = name.startsWith("annotateBase") ? 0 // yes, annotate all |
| : name.startsWith("dontAnnotateBase") ? 1 // do not annotate base |
| : 2; //abort |
| myMustBeAvailableAfterInvoke = ret == 2; |
| return ret; |
| } |
| }; |
| } |
| |
| }}; |
| } |
| |
| @Override |
| protected boolean shouldBeAvailableAfterExecution() { |
| return myMustBeAvailableAfterInvoke; |
| } |
| |
| public void test() throws Exception { doAllTests(); } |
| |
| @Override |
| protected LanguageLevel getLanguageLevel() { |
| return LanguageLevel.JDK_1_5; |
| } |
| } |