mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
new api usage inspection: fix highlighted range for anonymous classes (IDEA-203798)
convert old-style test to highlighted test case
This commit is contained in:
+1
-1
@@ -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))
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
public class Annotation {
|
||||
|
||||
@<error descr="Usage of API documented as @since 1.7+">SafeVarargs</error>
|
||||
public final void a(java.util.List<String>... ls) {}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
public class Constructor {
|
||||
void foo() {
|
||||
throw new <error descr="Usage of API documented as @since 1.5+">IllegalArgumentException</error> ("", new RuntimeException());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
import java.util.Iterator;
|
||||
|
||||
public class <error descr="Default method 'remove' is not overridden. It would cause compilation problems with JDK 6">DefaultMethods</error> implements Iterator<String> {
|
||||
@Override
|
||||
public boolean hasNext() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String next() {
|
||||
return null;
|
||||
}
|
||||
|
||||
static class T implements Iterator<String> {
|
||||
@Override
|
||||
public boolean hasNext() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String next() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void remove() {}
|
||||
}
|
||||
|
||||
public <T extends Iterator<String>> T typedIterator() {
|
||||
return (T) <error descr="Cannot resolve method 'iterator()'">iterator</error>();
|
||||
}
|
||||
|
||||
{
|
||||
Iterator<String> it=new <error descr="Default method 'remove' is not overridden. It would cause compilation problems with JDK 6">Iterator<String></error>(){
|
||||
@Override
|
||||
public boolean hasNext(){
|
||||
return false;
|
||||
}
|
||||
@Override
|
||||
public String next(){
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -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);
|
||||
@@ -0,0 +1,9 @@
|
||||
import java.util.Map;
|
||||
|
||||
public abstract class OverrideAnnotation implements Map<String, String> {
|
||||
@<error descr="Usage of API documented as @since 1.8+">Override</error>
|
||||
public String getOrDefault(Object key, String defaultValue) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
class Test {
|
||||
class RawInheritFromNewlyGenerified {
|
||||
private AbstractCCM<String> myModel;
|
||||
}
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<problems>
|
||||
<problem>
|
||||
<file>Test.java</file>
|
||||
<line>3</line>
|
||||
<description>Usage of API documented as @since 1.7</description>
|
||||
</problem>
|
||||
</problems>
|
||||
@@ -1,5 +0,0 @@
|
||||
public class Test {
|
||||
|
||||
@SafeVarargs
|
||||
public final void a(List<String>... ls) {}
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<problems>
|
||||
<problem>
|
||||
<file>Test.java</file>
|
||||
<line>3</line>
|
||||
<description>Usage of API documented as @since 1.5</description>
|
||||
</problem>
|
||||
</problems>
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
public class Test {
|
||||
void foo() {
|
||||
throw new IllegalArgumentException ("", new RuntimeException());
|
||||
}
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<problems>
|
||||
<problem>
|
||||
<file>Test.java</file>
|
||||
<line>3</line>
|
||||
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Usages of API documented as @since 1.5 (1.6|1.7)</problem_class>
|
||||
<description>Default method 'remove' is not overridden. It would cause compilation problems with JDK 6</description>
|
||||
</problem>
|
||||
|
||||
</problems>
|
||||
@@ -1,33 +0,0 @@
|
||||
import java.util.Iterator;
|
||||
|
||||
public class Test implements Iterator<String> {
|
||||
@Override
|
||||
public boolean hasNext() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String next() {
|
||||
return null;
|
||||
}
|
||||
|
||||
static class T implements Iterator<String> {
|
||||
@Override
|
||||
public boolean hasNext() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String next() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void remove() {}
|
||||
}
|
||||
|
||||
public <T extends Iterator<String>> T typedIterator() {
|
||||
return (T) iterator();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<problems></problems>
|
||||
@@ -1,10 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<problems>
|
||||
<problem>
|
||||
<file>Test.java</file>
|
||||
<line>4</line>
|
||||
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Usages of API documented as @since 1.5 (1.6|1.7)</problem_class>
|
||||
<description>Usage of API documented as @since 1.8+</description>
|
||||
</problem>
|
||||
|
||||
</problems>
|
||||
@@ -1,9 +0,0 @@
|
||||
import java.util.Map;
|
||||
|
||||
public abstract class Test implements Map<String, String> {
|
||||
@Override
|
||||
public String getOrDefault(Object key, String defaultValue) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
-2
@@ -1,2 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<problems/>
|
||||
+30
-23
@@ -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<K> {}");
|
||||
doTest();
|
||||
}
|
||||
|
||||
private void doTest() {
|
||||
IdeaTestUtil.setModuleLanguageLevel(myFixture.getModule(), LanguageLevel.JDK_1_6);
|
||||
myFixture.testHighlighting(getTestName(false) + ".java");
|
||||
}
|
||||
|
||||
//generate apiXXX.txt
|
||||
|
||||
Reference in New Issue
Block a user