TypeName::Identifier method reference applicability when TypeName denotes interface

This commit is contained in:
Anna Kozlova
2015-01-31 14:07:56 +03:00
parent e41b02e277
commit 82246db879
4 changed files with 65 additions and 0 deletions

View File

@@ -0,0 +1,42 @@
interface I {
default void a() {}
}
interface J extends I {}
class A implements I {}
class B extends A {}
class C implements J {}
class Test1 implements I { { Runnable r = I.super::a; } }
class Test2 implements J { { Runnable r = <error descr="'I' is not an enclosing class">I.super</error>::a; } }
class Test3 implements I, J { { Runnable r = <error descr="Bad type qualifier in default super call: redundant interface I is extended by J">I</error>.super::a; } }
class Test5 extends A implements I { { Runnable r = I.super::a; } }
class Test6 extends A implements J { { Runnable r = <error descr="'I' is not an enclosing class">I.super</error>::a; } }
class Test7 extends B { { Runnable r = <error descr="'I' is not an enclosing class">I.super</error>::a; } }
class Test8 extends C { { Runnable r = <error descr="'I' is not an enclosing class">I.super</error>::a; } }
class Test {
{
class LocalJ implements I {
}
class Test3 extends LocalJ implements I {
{
Runnable r = I.super::a;
}
}
new I() {
{
Runnable r = I.super::a;
}
};
new A() {
{
Runnable r = <error descr="'I' is not an enclosing class">I.super</error>::a;
}
};
}
}