Provide additional information about missing supertypes
Add -X flag to report extra compiler diagnostics which migth break compatibility. Use the flag to unconditionally check constructors without fear of prematurely evaluating lazy supertypes. KT-19234 KT-42404 KT-44583
This commit is contained in:
+5
@@ -0,0 +1,5 @@
|
||||
package test;
|
||||
|
||||
public class Sub extends Super {
|
||||
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
package test
|
||||
|
||||
class SubKt : Super() {
|
||||
companion object {
|
||||
fun companionMethod() = "OK"
|
||||
}
|
||||
|
||||
object InnerObject {
|
||||
fun objectMethod() = "OK"
|
||||
}
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
package test;
|
||||
|
||||
public class Super {
|
||||
String foo() {
|
||||
return "Super";
|
||||
}
|
||||
}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
error: supertypes of the following classes cannot be resolved. Please make sure you have the required dependencies in the classpath:
|
||||
class test.Sub, unresolved supertypes: test.Super
|
||||
class test.SubKt, unresolved supertypes: test.Super
|
||||
|
||||
compiler/testData/compileKotlinAgainstCustomBinaries/incompleteHierarchyWithExtendedCompilerChecks/source.kt:12:32: error: cannot access 'test.Super' which is a supertype of 'Sub'. Check your module classpath for missing or conflicting dependencies
|
||||
fun simpleFun(arg: Sub): Sub = Sub()
|
||||
^
|
||||
compiler/testData/compileKotlinAgainstCustomBinaries/incompleteHierarchyWithExtendedCompilerChecks/source.kt:19:18: error: cannot access 'test.Super' which is a supertype of 'Sub'. Check your module classpath for missing or conflicting dependencies
|
||||
val x: Sub = Sub()
|
||||
^
|
||||
compiler/testData/compileKotlinAgainstCustomBinaries/incompleteHierarchyWithExtendedCompilerChecks/source.kt:21:18: error: cannot access 'test.Super' which is a supertype of 'Sub'. Check your module classpath for missing or conflicting dependencies
|
||||
useCallRef(::Sub)
|
||||
^
|
||||
compiler/testData/compileKotlinAgainstCustomBinaries/incompleteHierarchyWithExtendedCompilerChecks/source.kt:22:15: error: cannot access 'test.Super' which is a supertype of 'Sub'. Check your module classpath for missing or conflicting dependencies
|
||||
simpleFun(Sub())
|
||||
^
|
||||
compiler/testData/compileKotlinAgainstCustomBinaries/incompleteHierarchyWithExtendedCompilerChecks/source.kt:23:20: error: cannot access 'test.Super' which is a supertype of 'Sub'. Check your module classpath for missing or conflicting dependencies
|
||||
inlineFun<Sub>(Sub())
|
||||
^
|
||||
COMPILATION_ERROR
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
import test.Sub as MySub
|
||||
import test.SubKt
|
||||
|
||||
typealias Sub = MySub
|
||||
|
||||
class Test<T>
|
||||
|
||||
@Suppress("UNUSED_PARAMETER")
|
||||
fun useCallRef(ref: Any?) {}
|
||||
|
||||
@Suppress("UNUSED_PARAMETER")
|
||||
fun simpleFun(arg: Sub): Sub = Sub()
|
||||
|
||||
inline fun <reified T> inlineFun(t: T) = t
|
||||
|
||||
// In conservative mode without -Xextended-compiler-checks flag these usages don't cause compilation error
|
||||
fun test() {
|
||||
@Suppress("UNUSED_VARIABLE")
|
||||
val x: Sub = Sub()
|
||||
Test<Sub>()
|
||||
useCallRef(::Sub)
|
||||
simpleFun(Sub())
|
||||
inlineFun<Sub>(Sub())
|
||||
SubKt.companionMethod()
|
||||
SubKt.InnerObject.objectMethod()
|
||||
}
|
||||
Reference in New Issue
Block a user