[AA] Add tests for *static* (declared) member scopes
^KT-61900 ^KT-61800
This commit is contained in:
committed by
Space Team
parent
4ba0aef23b
commit
21efd6aff3
+50
@@ -0,0 +1,50 @@
|
||||
// class: JavaClass
|
||||
// FILE: main.kt
|
||||
|
||||
// FILE: SuperInterface.java
|
||||
public interface SuperInterface {
|
||||
public int getActualRandomNumber();
|
||||
|
||||
// This static method will not be included in JavaClass's static member scope, because static interface methods are not propagated to
|
||||
// their implementing class's namespaces (i.e., `JavaClass.getRandomNumber()` is an error in Kotlin and Java).
|
||||
public static int getRandomNumber() {
|
||||
return 3; // Decided by a fair dice roll.
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: SuperClass.java
|
||||
public abstract class SuperClass implements SuperInterface {
|
||||
// NestedSuperClass will not be included in JavaClass's static member scope, because Kotlin does not propagate static nested classes
|
||||
// defined in super-classes to sub-classes, unlike Java. So `JavaClass.SuperClass` is valid in Java, but an error in Kotlin.
|
||||
class NestedSuperClass {
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getActualRandomNumber() {
|
||||
return getRandomNumber();
|
||||
}
|
||||
|
||||
// Both static callables will be included in JavaClass's static member scope, because Kotlin propagates static methods from
|
||||
// super-classes to sub-classes, just like Java. So `JavaClass.superBar()` will be a valid call in Kotlin and Java.
|
||||
public static int superFoo = 5;
|
||||
|
||||
public static String superBar() {
|
||||
return "superBar";
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: JavaClass.java
|
||||
public class JavaClass extends SuperClass {
|
||||
class NestedClass {
|
||||
}
|
||||
|
||||
public static int foo = 1;
|
||||
|
||||
public static String bar() {
|
||||
return "bar";
|
||||
}
|
||||
|
||||
public void hello() {
|
||||
System.out.println("hello");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user