mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-08-26 00:11:26 +07:00
method refs: accept 2 phase acceptance (static and receiver based), raise 'staticAccess' errors at highlighting level
This commit is contained in:
+1
-1
@@ -10,7 +10,7 @@ class Test {
|
||||
static abstract class Child extends Parent {
|
||||
abstract int foo() ;
|
||||
void test() {
|
||||
I s = super::<error descr="Abstract method 'foo' cannot be accessed directly">foo</error>;
|
||||
I s = <error descr="Abstract method 'foo' cannot be accessed directly">super::foo</error>;
|
||||
I s1 = this::foo;
|
||||
|
||||
Parent sup = null;
|
||||
|
||||
+2
-2
@@ -29,8 +29,8 @@ class AlienTest {
|
||||
<error descr="Incompatible types. Found: '<method reference>', required: 'AlienTest.IInt'">IInt i2 = MyTest::foo;</error>
|
||||
<error descr="Incompatible types. Found: '<method reference>', required: 'AlienTest.IInt'">IInt i3 = MyTest::bar;</error>
|
||||
<error descr="Incompatible types. Found: '<method reference>', required: 'AlienTest.IIntInt'">IIntInt i4 = MyTest::bar;</error>
|
||||
<error descr="Incompatible types. Found: '<method reference>', required: 'AlienTest.IInt'">IInt i5 = MyTest::baz;</error>
|
||||
<error descr="Incompatible types. Found: '<method reference>', required: 'AlienTest.IInt'">IInt i6 = MyTest.foo::foo;</error>
|
||||
IInt i5 = <error descr="Non-static method cannot be referenced from a static context">MyTest::baz</error>;
|
||||
IInt i6 = <error descr="'foo(int)' is not public in 'MyTest.Foo'. Cannot be accessed from outside package">MyTest.foo::foo</error>;
|
||||
IInt i7 = MyTest.<error descr="'MyTest.Foo' has private access in 'MyTest'">Foo</error>::foo;
|
||||
}
|
||||
}
|
||||
|
||||
+4
-4
@@ -16,11 +16,11 @@ class NonStaticInner {
|
||||
static void call12(I2 s) {}
|
||||
|
||||
static {
|
||||
<error descr="Incompatible types. Found: '<method reference>', required: 'NonStaticInner.I1'">I1 i1 = NonStaticInner.Inner :: new;</error>
|
||||
call11<error descr="'call11(NonStaticInner.I1)' in 'NonStaticInner' cannot be applied to '(<method reference>)'">(NonStaticInner.Inner :: new)</error>;
|
||||
I1 i1 = <error descr="An enclosing instance of type NonStaticInner is not in scope">NonStaticInner.Inner :: new</error>;
|
||||
call11(<error descr="An enclosing instance of type NonStaticInner is not in scope">NonStaticInner.Inner :: new</error>);
|
||||
|
||||
<error descr="Incompatible types. Found: '<method reference>', required: 'NonStaticInner.I2'">I2 i2 = NonStaticInner.Inner :: new;</error>
|
||||
call12<error descr="'call12(NonStaticInner.I2)' in 'NonStaticInner' cannot be applied to '(<method reference>)'">(NonStaticInner.Inner :: new)</error>;
|
||||
I2 i2 = <error descr="An enclosing instance of type NonStaticInner is not in scope">NonStaticInner.Inner :: new</error>;
|
||||
call12(<error descr="An enclosing instance of type NonStaticInner is not in scope">NonStaticInner.Inner :: new</error>);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -68,7 +68,7 @@ class MyTest3 {
|
||||
static void m() { }
|
||||
|
||||
public static void main(String[] args) {
|
||||
<error descr="Incompatible types. Found: '<method reference>', required: 'MyTest3.I'">I s = new MyTest3()::m;</error>
|
||||
I s = <error descr="Static method referenced through non-static qualifier">new MyTest3()::m</error>;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ class Test<X> {
|
||||
|
||||
|
||||
void test() {
|
||||
<error descr="Incompatible types. Found: '<method reference>', required: 'Test.I'">I i1 = Test<String>::foo;</error>
|
||||
I i1 = <error descr="Parameterized qualifier on static method reference">Test<String>::foo</error>;
|
||||
I i2 = Test::foo;
|
||||
}
|
||||
|
||||
|
||||
+19
-19
@@ -41,21 +41,21 @@ class MyTest1 {
|
||||
static void call2(I2 s) { }
|
||||
|
||||
static void test1() {
|
||||
<error descr="Incompatible types. Found: '<method reference>', required: 'MyTest1.I1'">I1 s1 = MyTest1 ::m1;</error>
|
||||
call1<error descr="'call1(MyTest1.I1)' in 'MyTest1' cannot be applied to '(<method reference>)'">(MyTest1::m1)</error>;
|
||||
I1 s1 = <error descr="Non-static method cannot be referenced from a static context">MyTest1 ::m1</error>;
|
||||
call1(<error descr="Non-static method cannot be referenced from a static context">MyTest1::m1</error>);
|
||||
I1 s2 = MyTest1 :: m2;
|
||||
call1(MyTest1::m2);
|
||||
I1 s3 = MyTest1::m3;
|
||||
call1(MyTest1::m3);
|
||||
<error descr="Incompatible types. Found: '<method reference>', required: 'MyTest1.I1'">I1 s4 = MyTest1::m4;</error>
|
||||
call1<error descr="'call1(MyTest1.I1)' in 'MyTest1' cannot be applied to '(<method reference>)'">(MyTest1::m4)</error>;
|
||||
I1 s4 = <error descr="Non-static method cannot be referenced from a static context">MyTest1::m4</error>;
|
||||
call1(<error descr="Non-static method cannot be referenced from a static context">MyTest1::m4</error>);
|
||||
}
|
||||
|
||||
static void test2() {
|
||||
I2 s1 = MyTest1 :: m1;
|
||||
call2(MyTest1::m1);
|
||||
I2 s2 = MyTest1 :: m2;
|
||||
call2(MyTest1::m2);
|
||||
<error descr="Incompatible types. Found: '<method reference>', required: 'MyTest1.I2'">I2 s1 = MyTest1 :: m1;</error>
|
||||
call2<error descr="'call2(MyTest1.I2)' in 'MyTest1' cannot be applied to '(<method reference>)'">(MyTest1::m1)</error>;
|
||||
<error descr="Incompatible types. Found: '<method reference>', required: 'MyTest1.I2'">I2 s2 = MyTest1 :: m2;</error>
|
||||
call2<error descr="'call2(MyTest1.I2)' in 'MyTest1' cannot be applied to '(<method reference>)'">(MyTest1::m2)</error>;
|
||||
|
||||
<error descr="Incompatible types. Found: '<method reference>', required: 'MyTest1.I2'">I2 s3 = MyTest1 :: m3;</error>
|
||||
call2<error descr="'call2(MyTest1.I2)' in 'MyTest1' cannot be applied to '(<method reference>)'">(MyTest1::m3)</error>;
|
||||
@@ -90,21 +90,21 @@ class MyTest2 {
|
||||
static void call2(I2 s) { }
|
||||
|
||||
static void test1() {
|
||||
<error descr="Incompatible types. Found: '<method reference>', required: 'MyTest2.I1'">I1 s1 = MyTest2 ::m1;</error>
|
||||
call1<error descr="'call1(MyTest2.I1)' in 'MyTest2' cannot be applied to '(<method reference>)'">(MyTest2::m1)</error>;
|
||||
I1 s1 = <error descr="Non-static method cannot be referenced from a static context">MyTest2 ::m1</error>;
|
||||
call1(<error descr="Non-static method cannot be referenced from a static context">MyTest2::m1</error>);
|
||||
I1 s2 = MyTest2 :: m2;
|
||||
call1(MyTest2::m2);
|
||||
I1 s3 = MyTest2::m3;
|
||||
call1(MyTest2::m3);
|
||||
<error descr="Incompatible types. Found: '<method reference>', required: 'MyTest2.I1'">I1 s4 = MyTest2::m4;</error>
|
||||
call1<error descr="'call1(MyTest2.I1)' in 'MyTest2' cannot be applied to '(<method reference>)'">(MyTest2::m4)</error>;
|
||||
I1 s4 = <error descr="Non-static method cannot be referenced from a static context">MyTest2::m4</error>;
|
||||
call1(<error descr="Non-static method cannot be referenced from a static context">MyTest2::m4</error>);
|
||||
}
|
||||
|
||||
static void test2() {
|
||||
I2 s1 = MyTest2 :: m1;
|
||||
call2(MyTest2::m1);
|
||||
I2 s2 = MyTest2 :: m2;
|
||||
call2(MyTest2::m2);
|
||||
<error descr="Incompatible types. Found: '<method reference>', required: 'MyTest2.I2'">I2 s1 = MyTest2 :: m1;</error>
|
||||
call2<error descr="'call2(MyTest2.I2)' in 'MyTest2' cannot be applied to '(<method reference>)'">(MyTest2::m1)</error>;
|
||||
<error descr="Incompatible types. Found: '<method reference>', required: 'MyTest2.I2'">I2 s2 = MyTest2 :: m2;</error>
|
||||
call2<error descr="'call2(MyTest2.I2)' in 'MyTest2' cannot be applied to '(<method reference>)'">(MyTest2::m2)</error>;
|
||||
|
||||
<error descr="Incompatible types. Found: '<method reference>', required: 'MyTest2.I2'">I2 s3 = MyTest2 :: m3;</error>
|
||||
call2<error descr="'call2(MyTest2.I2)' in 'MyTest2' cannot be applied to '(<method reference>)'">(MyTest2::m3)</error>;
|
||||
@@ -115,10 +115,10 @@ class MyTest2 {
|
||||
static void call3(I1 s) {}
|
||||
static void call3(I2 s) {}
|
||||
static {
|
||||
call3(MyTest2::m1);
|
||||
call3<error descr="Ambiguous method call: both 'MyTest2.call3(I1)' and 'MyTest2.call3(I2)' match">(MyTest2::m2)</error>;
|
||||
call3(<error descr="Non-static method cannot be referenced from a static context">MyTest2::m1</error>);
|
||||
call3(MyTest2::m2);
|
||||
call3(MyTest2::m3);
|
||||
call3<error descr="Cannot resolve method 'call3(<method reference>)'">(MyTest2::m4)</error>;
|
||||
call3(<error descr="Non-static method cannot be referenced from a static context">MyTest2::m4</error>);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -7,8 +7,8 @@ class Test<T> {
|
||||
Test test = new Test<String>();
|
||||
BlahBlah<String> blahBlah = test::<String>foo;
|
||||
BlahBlah<String> blahBlah1 = test::<String>foo1;
|
||||
<error descr="Incompatible types. Found: '<method reference>', required: 'BlahBlah<java.lang.String>'">BlahBlah<String> blahBlah2 = test::<String>foo2;</error>
|
||||
<error descr="Incompatible types. Found: '<method reference>', required: 'BlahBlah<java.lang.String>'">BlahBlah<String> blahBlah3 = test::<String>foo3;</error>
|
||||
BlahBlah<String> blahBlah2 = <error descr="Static method referenced through non-static qualifier">test::<String>foo2</error>;
|
||||
BlahBlah<String> blahBlah3 = <error descr="Static method referenced through non-static qualifier">test::<String>foo3</error>;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -55,7 +55,7 @@ class MyTest {
|
||||
|
||||
|
||||
{
|
||||
<error descr="Incompatible types. Found: '<method reference>', required: 'MyTest.I1'">I1 i_1 = MyTest::_1;</error>
|
||||
I1 i_1 = <error descr="Non-static method cannot be referenced from a static context">MyTest::_1</error>;
|
||||
<error descr="Incompatible types. Found: '<method reference>', required: 'MyTest.I1'">I1 i_2 = MyTest::_2;</error>
|
||||
<error descr="Incompatible types. Found: '<method reference>', required: 'MyTest.I1'">I1 i_3 = MyTest::_3;</error>
|
||||
<error descr="Incompatible types. Found: '<method reference>', required: 'MyTest.I1'">I1 i_4 = MyTest::_4;</error>
|
||||
|
||||
+2
-2
@@ -2,8 +2,8 @@ import java.util.*;
|
||||
|
||||
class Test {
|
||||
void test() {
|
||||
Comparator<Test> r2 = Test::yyy;
|
||||
<error descr="Incompatible types. Found: '<method reference>', required: 'Comparator1<Test>'">Comparator1<Test> c1 = Test::yyy;</error>
|
||||
<error descr="Incompatible types. Found: '<method reference>', required: 'java.util.Comparator<Test>'">Comparator<Test> r2 = Test::yyy;</error>
|
||||
Comparator1<Test> c1 = <error descr="Non-static method cannot be referenced from a static context">Test::yyy</error>;
|
||||
<error descr="Incompatible types. Found: '<method reference>', required: 'Comparator1<Test>'">Comparator1<Test> c2 = Test::xxx;</error>
|
||||
}
|
||||
int yyy(Test... p) { return 1; }
|
||||
|
||||
Reference in New Issue
Block a user