mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-20 11:50:57 +07:00
Test bases should only be used in test from jvm-analysis module, the test framework can be shared in multiple modules. GitOrigin-RevId: cbe47d864eb2c1f3f89189022d76333ed3fe3601
201 lines
5.8 KiB
Kotlin
201 lines
5.8 KiB
Kotlin
package com.intellij.codeInspection.tests.java
|
|
|
|
import com.intellij.jvm.analysis.shared.testFramework.JavaApiUsageInspectionTestBase
|
|
import com.intellij.jvm.analysis.testFramework.JvmLanguage
|
|
import com.intellij.pom.java.LanguageLevel
|
|
|
|
class JavaJavaApiUsageInspectionTest : JavaApiUsageInspectionTestBase() {
|
|
fun `test constructor`() {
|
|
myFixture.setLanguageLevel(LanguageLevel.JDK_1_4)
|
|
myFixture.testHighlighting(JvmLanguage.JAVA, """
|
|
class Constructor {
|
|
void foo() {
|
|
throw new <error descr="Usage of API documented as @since 1.5+">IllegalArgumentException</error>("", new RuntimeException());
|
|
}
|
|
}
|
|
""".trimIndent())
|
|
}
|
|
|
|
fun `test ignored`() {
|
|
myFixture.setLanguageLevel(LanguageLevel.JDK_1_6)
|
|
myFixture.addClass("""
|
|
package java.awt.geom;
|
|
|
|
public class GeneralPath {
|
|
public void moveTo(int x, int y) { }
|
|
}
|
|
""".trimIndent())
|
|
myFixture.testHighlighting(JvmLanguage.JAVA, """
|
|
import java.awt.geom.GeneralPath;
|
|
|
|
class Ignored {
|
|
void foo() {
|
|
GeneralPath path = new GeneralPath();
|
|
path.moveTo(0,0);
|
|
}
|
|
}
|
|
""".trimIndent())
|
|
}
|
|
|
|
fun `test qualified reference`() {
|
|
myFixture.setLanguageLevel(LanguageLevel.JDK_1_6)
|
|
myFixture.testHighlighting(JvmLanguage.JAVA, """
|
|
import java.nio.charset.StandardCharsets;
|
|
import java.nio.charset.Charset;
|
|
|
|
class Main {
|
|
void foo() {
|
|
Charset utf = <error descr="Usage of API documented as @since 1.7+">StandardCharsets</error>.UTF_8;
|
|
}
|
|
}
|
|
""".trimIndent())
|
|
}
|
|
|
|
fun `test annotation`() {
|
|
myFixture.setLanguageLevel(LanguageLevel.JDK_1_6)
|
|
myFixture.testHighlighting(JvmLanguage.JAVA, """
|
|
import java.lang.SafeVarargs;
|
|
class Annotation {
|
|
@<error descr="Usage of API documented as @since 1.7+">SafeVarargs</error>
|
|
public final void a(java.util.List<String>... ls) {}
|
|
}
|
|
""".trimIndent())
|
|
}
|
|
|
|
fun `test override annotation`() {
|
|
myFixture.setLanguageLevel(LanguageLevel.JDK_1_6)
|
|
myFixture.testHighlighting(JvmLanguage.JAVA, """
|
|
import java.util.Map;
|
|
|
|
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;
|
|
}
|
|
}
|
|
""".trimIndent())
|
|
}
|
|
|
|
fun `test minimum since highlighting`() {
|
|
myFixture.setLanguageLevel(LanguageLevel.JDK_1_7)
|
|
myFixture.testHighlighting(JvmLanguage.JAVA, """
|
|
import java.util.stream.IntStream;
|
|
|
|
class MinimumSince {
|
|
void test() {
|
|
"foo".<error descr="Usage of API documented as @since 1.8+">chars</error>();
|
|
}
|
|
}
|
|
""".trimIndent())
|
|
}
|
|
|
|
fun `test no highlighting in javadoc`() {
|
|
myFixture.setLanguageLevel(LanguageLevel.JDK_1_7)
|
|
myFixture.testHighlighting(JvmLanguage.JAVA, """
|
|
class Javadoc {
|
|
/**
|
|
* {@link java.util.function.Predicate}
|
|
*/
|
|
void test() {
|
|
return;
|
|
}
|
|
}
|
|
""".trimIndent())
|
|
}
|
|
|
|
fun `test minimum since no highlighting`() {
|
|
myFixture.setLanguageLevel(LanguageLevel.JDK_1_8)
|
|
myFixture.testHighlighting(JvmLanguage.JAVA, """
|
|
import java.util.stream.IntStream;
|
|
|
|
class MinimumSince {
|
|
void test() {
|
|
"foo".chars();
|
|
}
|
|
}
|
|
""".trimIndent())
|
|
}
|
|
|
|
fun `test default methods`() {
|
|
myFixture.setLanguageLevel(LanguageLevel.JDK_1_6)
|
|
myFixture.testHighlighting(JvmLanguage.JAVA, """
|
|
import java.util.Iterator;
|
|
|
|
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() {}
|
|
}
|
|
|
|
{
|
|
Iterator<String> it = new <error descr="Default method 'remove' is not overridden. It would cause compilation problems with JDK 6">Iterator</error><String>() {
|
|
@Override
|
|
public boolean hasNext(){
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public String next(){
|
|
return null;
|
|
}
|
|
};
|
|
}
|
|
}
|
|
""".trimIndent())
|
|
}
|
|
|
|
fun `test raw inherit from newly generified`() {
|
|
myFixture.setLanguageLevel(LanguageLevel.JDK_1_6)
|
|
myFixture.addClass("""
|
|
package javax.swing;
|
|
|
|
public class AbstractListModel<K> {}
|
|
""".trimIndent())
|
|
myFixture.testHighlighting(JvmLanguage.JAVA, """
|
|
class RawInheritFromNewlyGenerified {
|
|
private AbstractCCM<String> myModel;
|
|
}
|
|
|
|
abstract class AbstractCCM<T> extends javax.swing.AbstractListModel { }
|
|
""".trimIndent())
|
|
}
|
|
|
|
fun `test generified`() {
|
|
myFixture.setLanguageLevel(LanguageLevel.JDK_1_6)
|
|
myFixture.addClass("""
|
|
package javax.swing;
|
|
|
|
public interface ListModel<E> { }
|
|
""".trimIndent())
|
|
myFixture.addClass("""
|
|
package javax.swing;
|
|
|
|
public class AbstractListModel<K> implements ListModel<E> { }
|
|
""".trimIndent())
|
|
myFixture.testHighlighting(JvmLanguage.JAVA, """
|
|
import javax.swing.AbstractListModel;
|
|
|
|
abstract class AbstractCCM<T> extends <error descr="Usage of generified after 1.6 API which would cause compilation problems with JDK 6">AbstractListModel<T></error> { }
|
|
""".trimIndent())
|
|
}
|
|
} |