Temporary move annotation to methods' modifier list

Java resolver ignores return type annotations if there are ones on modifier list

Related to this commit https://github.com/JetBrains/intellij-community/commit/a2497edceec614cdb5b76ba552f8a035f9e159f8
This commit is contained in:
Denis Zharkov
2016-07-15 18:13:37 +03:00
committed by Nikolay Krasko
parent 189705727f
commit 10c840327d
2 changed files with 9 additions and 6 deletions
@@ -15,7 +15,8 @@ class Outer {
class B extends A { class B extends A {
// OK, non-platform types // OK, non-platform types
@Override @Override
<T1, T2> @NonNull T2 foo(@Nullable T1 x) { return null; } @NonNull
<T1, T2> T2 foo(@Nullable T1 x) { return null; }
// Parameter type is fully non-flexible (OK) // Parameter type is fully non-flexible (OK)
// Return type is `X<R!>?`. // Return type is `X<R!>?`.
@@ -23,7 +24,8 @@ class Outer {
// so type enhancing happens only for outermost type. // so type enhancing happens only for outermost type.
// TODO: We should properly compare equality with specific local equality axioms (as when calculating overriden descriptors) // TODO: We should properly compare equality with specific local equality axioms (as when calculating overriden descriptors)
@Override @Override
<R> @Nullable X<@Nullable R> bar(@NonNull Y<@NonNull R> x) { return null; } @Nullable
<R> X<@Nullable R> bar(@NonNull Y<@NonNull R> x) { return null; }
} }
class C extends B { class C extends B {
@@ -46,6 +48,7 @@ class Outer {
@Override @Override
<F> @NonNull X<@NonNull F> bar(@Nullable Y<@Nullable F> x) { return null; } @NonNull
<F> X<@NonNull F> bar(@Nullable Y<@Nullable F> x) { return null; }
} }
} }
@@ -17,9 +17,9 @@ public/*package*/ open class Outer {
public/*package*/ open inner class B : Outer.A { public/*package*/ open inner class B : Outer.A {
public/*package*/ constructor B() public/*package*/ constructor B()
@java.lang.Override() public/*package*/ open override /*1*/ fun </*0*/ R : kotlin.Any!> bar(/*0*/ @org.checkerframework.checker.nullness.qual.NonNull() x: Y<R>): X<R!>? @java.lang.Override() @org.checkerframework.checker.nullness.qual.Nullable() public/*package*/ open override /*1*/ fun </*0*/ R : kotlin.Any!> bar(/*0*/ @org.checkerframework.checker.nullness.qual.NonNull() x: Y<R>): X<R!>?
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@java.lang.Override() public/*package*/ open override /*1*/ fun </*0*/ T1 : kotlin.Any!, /*1*/ T2 : kotlin.Any!> foo(/*0*/ @org.checkerframework.checker.nullness.qual.Nullable() x: T1?): T2 @java.lang.Override() @org.checkerframework.checker.nullness.qual.NonNull() public/*package*/ open override /*1*/ fun </*0*/ T1 : kotlin.Any!, /*1*/ T2 : kotlin.Any!> foo(/*0*/ @org.checkerframework.checker.nullness.qual.Nullable() x: T1?): T2
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
} }
@@ -35,7 +35,7 @@ public/*package*/ open class Outer {
public/*package*/ open inner class D : Outer.C { public/*package*/ open inner class D : Outer.C {
public/*package*/ constructor D() public/*package*/ constructor D()
@java.lang.Override() public/*package*/ open override /*1*/ fun </*0*/ F : kotlin.Any!> bar(/*0*/ @org.checkerframework.checker.nullness.qual.Nullable() x: Y<F!>!): X<F!> @java.lang.Override() @org.checkerframework.checker.nullness.qual.NonNull() public/*package*/ open override /*1*/ fun </*0*/ F : kotlin.Any!> bar(/*0*/ @org.checkerframework.checker.nullness.qual.Nullable() x: Y<F!>!): X<F!>
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@java.lang.Override() @org.checkerframework.checker.nullness.qual.NonNull() public/*package*/ open override /*1*/ fun </*0*/ U : kotlin.Any!, /*1*/ W : kotlin.Any!> foo(/*0*/ @org.checkerframework.checker.nullness.qual.Nullable() x: U?): W @java.lang.Override() @org.checkerframework.checker.nullness.qual.NonNull() public/*package*/ open override /*1*/ fun </*0*/ U : kotlin.Any!, /*1*/ W : kotlin.Any!> foo(/*0*/ @org.checkerframework.checker.nullness.qual.Nullable() x: U?): W
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int