diff --git a/java/java-impl/src/com/intellij/codeInspection/java15api/Java15APIUsageInspection.java b/java/java-impl/src/com/intellij/codeInspection/java15api/Java15APIUsageInspection.java index 76e50800a41d..46773acd0638 100644 --- a/java/java-impl/src/com/intellij/codeInspection/java15api/Java15APIUsageInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/java15api/Java15APIUsageInspection.java @@ -260,7 +260,7 @@ public class Java15APIUsageInspection extends AbstractBaseJavaLocalInspectionToo if (!methods.isEmpty()) { PsiElement element2Highlight = aClass.getNameIdentifier(); if (element2Highlight == null) { - element2Highlight = aClass; + element2Highlight = aClass instanceof PsiAnonymousClass ? ((PsiAnonymousClass)aClass).getBaseClassReference() : aClass; } myHolder.registerProblem(element2Highlight, methods.size() == 1 ? InspectionsBundle.message("inspection.1.8.problem.single.descriptor", methods.get(0).getName(), getJdkName(effectiveLanguageLevel)) diff --git a/java/java-tests/testData/inspection/usage1.5/Annotation.java b/java/java-tests/testData/inspection/usage1.5/Annotation.java new file mode 100644 index 000000000000..f751796c8cbe --- /dev/null +++ b/java/java-tests/testData/inspection/usage1.5/Annotation.java @@ -0,0 +1,5 @@ +public class Annotation { + + @SafeVarargs + public final void a(java.util.List... ls) {} +} \ No newline at end of file diff --git a/java/java-tests/testData/inspection/usage1.5/Constructor.java b/java/java-tests/testData/inspection/usage1.5/Constructor.java new file mode 100644 index 000000000000..d2b694538af3 --- /dev/null +++ b/java/java-tests/testData/inspection/usage1.5/Constructor.java @@ -0,0 +1,5 @@ +public class Constructor { + void foo() { + throw new IllegalArgumentException ("", new RuntimeException()); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/inspection/usage1.5/DefaultMethods.java b/java/java-tests/testData/inspection/usage1.5/DefaultMethods.java new file mode 100644 index 000000000000..449f945bd956 --- /dev/null +++ b/java/java-tests/testData/inspection/usage1.5/DefaultMethods.java @@ -0,0 +1,46 @@ +import java.util.Iterator; + +public class DefaultMethods implements Iterator { + @Override + public boolean hasNext() { + return false; + } + + @Override + public String next() { + return null; + } + + static class T implements Iterator { + @Override + public boolean hasNext() { + return false; + } + + @Override + public String next() { + return null; + } + + @Override + public void remove() {} + } + + public > T typedIterator() { + return (T) iterator(); + } + + { + Iterator it=new Iterator(){ + @Override + public boolean hasNext(){ + return false; + } + @Override + public String next(){ + return null; + } + }; + } +} + diff --git a/java/java-tests/testData/inspection/usage1.5/ignored/src/Test.java b/java/java-tests/testData/inspection/usage1.5/Ignored.java similarity index 83% rename from java/java-tests/testData/inspection/usage1.5/ignored/src/Test.java rename to java/java-tests/testData/inspection/usage1.5/Ignored.java index a309b1c70905..3dc8178e4838 100644 --- a/java/java-tests/testData/inspection/usage1.5/ignored/src/Test.java +++ b/java/java-tests/testData/inspection/usage1.5/Ignored.java @@ -1,5 +1,5 @@ import java.awt.geom.GeneralPath; -public class Test { +public class Ignored { void foo() { GeneralPath path = new GeneralPath(); path.moveTo(0,0); diff --git a/java/java-tests/testData/inspection/usage1.5/OverrideAnnotation.java b/java/java-tests/testData/inspection/usage1.5/OverrideAnnotation.java new file mode 100644 index 000000000000..915e581694df --- /dev/null +++ b/java/java-tests/testData/inspection/usage1.5/OverrideAnnotation.java @@ -0,0 +1,9 @@ +import java.util.Map; + +public abstract class OverrideAnnotation implements Map { + @Override + public String getOrDefault(Object key, String defaultValue) { + return null; + } +} + diff --git a/java/java-tests/testData/inspection/usage1.5/rawInheritFromNewlyGenerified/src/Test.java b/java/java-tests/testData/inspection/usage1.5/RawInheritFromNewlyGenerified.java similarity index 74% rename from java/java-tests/testData/inspection/usage1.5/rawInheritFromNewlyGenerified/src/Test.java rename to java/java-tests/testData/inspection/usage1.5/RawInheritFromNewlyGenerified.java index cfab2a12409f..71c33549845e 100644 --- a/java/java-tests/testData/inspection/usage1.5/rawInheritFromNewlyGenerified/src/Test.java +++ b/java/java-tests/testData/inspection/usage1.5/RawInheritFromNewlyGenerified.java @@ -1,4 +1,4 @@ -class Test { +class RawInheritFromNewlyGenerified { private AbstractCCM myModel; } diff --git a/java/java-tests/testData/inspection/usage1.5/annotation/expected.xml b/java/java-tests/testData/inspection/usage1.5/annotation/expected.xml deleted file mode 100644 index b7c7e42f6a1b..000000000000 --- a/java/java-tests/testData/inspection/usage1.5/annotation/expected.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - Test.java - 3 - Usage of API documented as @since 1.7 - - \ No newline at end of file diff --git a/java/java-tests/testData/inspection/usage1.5/annotation/src/Test.java b/java/java-tests/testData/inspection/usage1.5/annotation/src/Test.java deleted file mode 100644 index b5173f9e00dd..000000000000 --- a/java/java-tests/testData/inspection/usage1.5/annotation/src/Test.java +++ /dev/null @@ -1,5 +0,0 @@ -public class Test { - - @SafeVarargs - public final void a(List... ls) {} -} \ No newline at end of file diff --git a/java/java-tests/testData/inspection/usage1.5/constructor/expected.xml b/java/java-tests/testData/inspection/usage1.5/constructor/expected.xml deleted file mode 100644 index fbdcff5077de..000000000000 --- a/java/java-tests/testData/inspection/usage1.5/constructor/expected.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - Test.java - 3 - Usage of API documented as @since 1.5 - - - diff --git a/java/java-tests/testData/inspection/usage1.5/constructor/src/Test.java b/java/java-tests/testData/inspection/usage1.5/constructor/src/Test.java deleted file mode 100644 index b55fcb2c866f..000000000000 --- a/java/java-tests/testData/inspection/usage1.5/constructor/src/Test.java +++ /dev/null @@ -1,5 +0,0 @@ -public class Test { - void foo() { - throw new IllegalArgumentException ("", new RuntimeException()); - } -} \ No newline at end of file diff --git a/java/java-tests/testData/inspection/usage1.5/defaultMethods/expected.xml b/java/java-tests/testData/inspection/usage1.5/defaultMethods/expected.xml deleted file mode 100644 index f6d068d07ada..000000000000 --- a/java/java-tests/testData/inspection/usage1.5/defaultMethods/expected.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - Test.java - 3 - Usages of API documented as @since 1.5 (1.6|1.7) - Default method 'remove' is not overridden. It would cause compilation problems with JDK 6 - - - \ No newline at end of file diff --git a/java/java-tests/testData/inspection/usage1.5/defaultMethods/src/Test.java b/java/java-tests/testData/inspection/usage1.5/defaultMethods/src/Test.java deleted file mode 100644 index f44797702a63..000000000000 --- a/java/java-tests/testData/inspection/usage1.5/defaultMethods/src/Test.java +++ /dev/null @@ -1,33 +0,0 @@ -import java.util.Iterator; - -public class Test implements Iterator { - @Override - public boolean hasNext() { - return false; - } - - @Override - public String next() { - return null; - } - - static class T implements Iterator { - @Override - public boolean hasNext() { - return false; - } - - @Override - public String next() { - return null; - } - - @Override - public void remove() {} - } - - public > T typedIterator() { - return (T) iterator(); - } -} - diff --git a/java/java-tests/testData/inspection/usage1.5/ignored/expected.xml b/java/java-tests/testData/inspection/usage1.5/ignored/expected.xml deleted file mode 100644 index 862563508d89..000000000000 --- a/java/java-tests/testData/inspection/usage1.5/ignored/expected.xml +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/java/java-tests/testData/inspection/usage1.5/overrideAnnotation/expected.xml b/java/java-tests/testData/inspection/usage1.5/overrideAnnotation/expected.xml deleted file mode 100644 index 6502e2c42b21..000000000000 --- a/java/java-tests/testData/inspection/usage1.5/overrideAnnotation/expected.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - Test.java - 4 - Usages of API documented as @since 1.5 (1.6|1.7) - Usage of API documented as @since 1.8+ - - - \ No newline at end of file diff --git a/java/java-tests/testData/inspection/usage1.5/overrideAnnotation/src/Test.java b/java/java-tests/testData/inspection/usage1.5/overrideAnnotation/src/Test.java deleted file mode 100644 index 5f8aabd4eecc..000000000000 --- a/java/java-tests/testData/inspection/usage1.5/overrideAnnotation/src/Test.java +++ /dev/null @@ -1,9 +0,0 @@ -import java.util.Map; - -public abstract class Test implements Map { - @Override - public String getOrDefault(Object key, String defaultValue) { - return null; - } -} - diff --git a/java/java-tests/testData/inspection/usage1.5/rawInheritFromNewlyGenerified/expected.xml b/java/java-tests/testData/inspection/usage1.5/rawInheritFromNewlyGenerified/expected.xml deleted file mode 100644 index 4704d91e891d..000000000000 --- a/java/java-tests/testData/inspection/usage1.5/rawInheritFromNewlyGenerified/expected.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/codeInspection/JavaAPIUsagesInspectionTest.java b/java/java-tests/testSrc/com/intellij/java/codeInspection/JavaAPIUsagesInspectionTest.java index 701036870691..73dd665f1a84 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInspection/JavaAPIUsagesInspectionTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInspection/JavaAPIUsagesInspectionTest.java @@ -17,45 +17,52 @@ package com.intellij.java.codeInspection; import com.intellij.JavaTestUtil; -import com.intellij.codeInspection.ex.LocalInspectionToolWrapper; import com.intellij.codeInspection.java15api.Java15APIUsageInspection; import com.intellij.pom.java.LanguageLevel; import com.intellij.testFramework.IdeaTestUtil; -import com.intellij.testFramework.InspectionTestCase; +import com.intellij.testFramework.LightProjectDescriptor; +import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase; +import org.jetbrains.annotations.NotNull; -public class JavaAPIUsagesInspectionTest extends InspectionTestCase { +public class JavaAPIUsagesInspectionTest extends LightCodeInsightFixtureTestCase { @Override protected String getTestDataPath() { - return JavaTestUtil.getJavaTestDataPath() + "/inspection"; + return JavaTestUtil.getJavaTestDataPath() + "/inspection/usage1.5/"; } - private void doTest() { - final Java15APIUsageInspection usageInspection = new Java15APIUsageInspection(); - doTest("usage1.5/" + getTestName(true), new LocalInspectionToolWrapper(usageInspection), "java 1.5"); + + @Override + protected void setUp() throws Exception { + super.setUp(); + myFixture.enableInspections(new Java15APIUsageInspection()); + } + + @NotNull + @Override + protected LightProjectDescriptor getProjectDescriptor() { + return JAVA_8; } public void testConstructor() { - IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_1_4, this::doTest); + IdeaTestUtil.setModuleLanguageLevel(myFixture.getModule(), LanguageLevel.JDK_1_4); + myFixture.testHighlighting(getTestName(false) + ".java"); } public void testIgnored() { - doTest(); + myFixture.addClass("package java.awt.geom; public class GeneralPath {public void moveTo(int x, int y){}}"); + doTest(); } - - public void testAnnotation() { - IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_1_6, this::doTest); - } - - public void testDefaultMethods() { - IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_1_6, this::doTest); - } - - public void testOverrideAnnotation() { - IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_1_6, this::doTest); - } - + public void testAnnotation() { doTest(); } + public void testDefaultMethods() { doTest(); } + public void testOverrideAnnotation() { doTest(); } public void testRawInheritFromNewlyGenerified() { - IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_1_6, this::doTest); + myFixture.addClass("package javax.swing; public class AbstractListModel {}"); + doTest(); + } + + private void doTest() { + IdeaTestUtil.setModuleLanguageLevel(myFixture.getModule(), LanguageLevel.JDK_1_6); + myFixture.testHighlighting(getTestName(false) + ".java"); } //generate apiXXX.txt