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 {
// OK, non-platform types
@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)
// Return type is `X<R!>?`.
@@ -23,7 +24,8 @@ class Outer {
// so type enhancing happens only for outermost type.
// TODO: We should properly compare equality with specific local equality axioms (as when calculating overriden descriptors)
@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 {
@@ -46,6 +48,7 @@ class Outer {
@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*/ 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
@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 toString(): kotlin.String
}
@@ -35,7 +35,7 @@ public/*package*/ open class Outer {
public/*package*/ open inner class D : Outer.C {
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
@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