[KAPT] Warn about usage of types from default package
Java doesn't support import from default package. We can't fix it, so we warn about it. #KT-36743
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
// STRICT
|
||||
|
||||
//FILE: test/ClassRefAnnotation.java
|
||||
|
||||
package test;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
import java.lang.annotation.ElementType;
|
||||
|
||||
@Target({ ElementType.TYPE, ElementType.METHOD })
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
public @interface ClassRefAnnotation {
|
||||
Class<?>[] value();
|
||||
}
|
||||
|
||||
//FILE: a.kt
|
||||
|
||||
class RootClass
|
||||
|
||||
class AnotherRootClass
|
||||
|
||||
//FILE: b.kt
|
||||
package test
|
||||
|
||||
import java.lang.Number as JavaNumber
|
||||
import RootClass
|
||||
import AnotherRootClass as Arc
|
||||
|
||||
interface PackedClass {
|
||||
fun someMethod(): RootClass
|
||||
fun otherMethod(): JavaNumber
|
||||
fun oneMoreMethod(): Arc
|
||||
}
|
||||
|
||||
@ClassRefAnnotation(RootClass::class)
|
||||
class PackedWithAnnotation
|
||||
|
||||
// EXPECTED_ERROR(kotlin:11:5) cannot find symbol
|
||||
// EXPECTED_ERROR(kotlin:14:1) cannot find symbol
|
||||
// EXPECTED_ERROR(kotlin:9:5) cannot find symbol
|
||||
// EXPECTED_ERROR(other:-1:-1) test.PackedClass: Can't reference type 'RootClass' from default package in Java stub.
|
||||
// EXPECTED_ERROR(other:-1:-1) test.PackedClass: Can't reference type 'AnotherRootClass' from default package in Java stub.
|
||||
// EXPECTED_ERROR(other:-1:-1) test.PackedWithAnnotation: Can't reference type 'RootClass' from default package in Java stub.
|
||||
@@ -0,0 +1,72 @@
|
||||
import java.lang.System;
|
||||
|
||||
@kotlin.Metadata()
|
||||
public final class AnotherRootClass {
|
||||
|
||||
public AnotherRootClass() {
|
||||
super();
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////
|
||||
|
||||
|
||||
import java.lang.System;
|
||||
|
||||
@kotlin.Metadata()
|
||||
public final class RootClass {
|
||||
|
||||
public RootClass() {
|
||||
super();
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////
|
||||
|
||||
package test;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
import java.lang.annotation.ElementType;
|
||||
|
||||
@Target(value = {ElementType.TYPE, ElementType.METHOD})
|
||||
@Retention(value = RetentionPolicy.RUNTIME)
|
||||
public @interface ClassRefAnnotation {
|
||||
|
||||
Class<?>[] value();
|
||||
}
|
||||
|
||||
////////////////////
|
||||
|
||||
package test;
|
||||
|
||||
import java.lang.System;
|
||||
|
||||
@kotlin.Metadata()
|
||||
public abstract interface PackedClass {
|
||||
|
||||
@org.jetbrains.annotations.NotNull()
|
||||
public abstract RootClass someMethod();
|
||||
|
||||
@org.jetbrains.annotations.NotNull()
|
||||
public abstract java.lang.Number otherMethod();
|
||||
|
||||
@org.jetbrains.annotations.NotNull()
|
||||
public abstract AnotherRootClass oneMoreMethod();
|
||||
}
|
||||
|
||||
////////////////////
|
||||
|
||||
package test;
|
||||
|
||||
import java.lang.System;
|
||||
|
||||
@kotlin.Metadata()
|
||||
@ClassRefAnnotation(value = {RootClass.class})
|
||||
public final class PackedWithAnnotation {
|
||||
|
||||
public PackedWithAnnotation() {
|
||||
super();
|
||||
}
|
||||
}
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
// CORRECT_ERROR_TYPES
|
||||
// STRICT
|
||||
|
||||
//FILE: test/ClassRefAnnotation.java
|
||||
|
||||
package test;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
import java.lang.annotation.ElementType;
|
||||
|
||||
@Target({ ElementType.TYPE, ElementType.METHOD })
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
public @interface ClassRefAnnotation {
|
||||
Class<?>[] value();
|
||||
}
|
||||
|
||||
//FILE: a.kt
|
||||
|
||||
class RootClass
|
||||
|
||||
class AnotherRootClass
|
||||
|
||||
//FILE: b.kt
|
||||
package test
|
||||
|
||||
import java.lang.Number as JavaNumber
|
||||
import RootClass
|
||||
import AnotherRootClass as Arc
|
||||
|
||||
interface PackedClass {
|
||||
fun someMethod(): RootClass
|
||||
fun otherMethod(): JavaNumber
|
||||
fun oneMoreMethod(): Arc
|
||||
}
|
||||
|
||||
@ClassRefAnnotation(RootClass::class)
|
||||
class PackedWithAnnotation
|
||||
|
||||
// EXPECTED_ERROR(kotlin:11:5) cannot find symbol
|
||||
// EXPECTED_ERROR(kotlin:14:1) cannot find symbol
|
||||
// EXPECTED_ERROR(kotlin:9:5) cannot find symbol
|
||||
// EXPECTED_ERROR(other:-1:-1) test.PackedClass: Can't reference type 'RootClass' from default package in Java stub.
|
||||
// EXPECTED_ERROR(other:-1:-1) test.PackedClass: Can't reference type 'AnotherRootClass' from default package in Java stub.
|
||||
// EXPECTED_ERROR(other:-1:-1) test.PackedWithAnnotation: Can't reference type 'RootClass' from default package in Java stub.
|
||||
+72
@@ -0,0 +1,72 @@
|
||||
import java.lang.System;
|
||||
|
||||
@kotlin.Metadata()
|
||||
public final class AnotherRootClass {
|
||||
|
||||
public AnotherRootClass() {
|
||||
super();
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////
|
||||
|
||||
|
||||
import java.lang.System;
|
||||
|
||||
@kotlin.Metadata()
|
||||
public final class RootClass {
|
||||
|
||||
public RootClass() {
|
||||
super();
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////
|
||||
|
||||
package test;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
import java.lang.annotation.ElementType;
|
||||
|
||||
@Target(value = {ElementType.TYPE, ElementType.METHOD})
|
||||
@Retention(value = RetentionPolicy.RUNTIME)
|
||||
public @interface ClassRefAnnotation {
|
||||
|
||||
Class<?>[] value();
|
||||
}
|
||||
|
||||
////////////////////
|
||||
|
||||
package test;
|
||||
|
||||
import java.lang.Number;
|
||||
|
||||
@kotlin.Metadata()
|
||||
public abstract interface PackedClass {
|
||||
|
||||
@org.jetbrains.annotations.NotNull()
|
||||
public abstract RootClass someMethod();
|
||||
|
||||
@org.jetbrains.annotations.NotNull()
|
||||
public abstract java.lang.Number otherMethod();
|
||||
|
||||
@org.jetbrains.annotations.NotNull()
|
||||
public abstract AnotherRootClass oneMoreMethod();
|
||||
}
|
||||
|
||||
////////////////////
|
||||
|
||||
package test;
|
||||
|
||||
import java.lang.Number;
|
||||
|
||||
@kotlin.Metadata()
|
||||
@ClassRefAnnotation(value = {RootClass.class})
|
||||
public final class PackedWithAnnotation {
|
||||
|
||||
public PackedWithAnnotation() {
|
||||
super();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user