[LC] preserve type annotations from wildcard bound
^KT-66603
This commit is contained in:
committed by
Space Team
parent
96575a0bdb
commit
54aee57fec
+1
-1
@@ -1,2 +1,2 @@
|
||||
KtType: @foo.MyAnno(s = "outer") kotlin.collections.List<@foo.MyAnno(s = "middle") kotlin.collections.List<@foo.AnotherAnnotation(k = foo.Nested::class) kotlin.String>>
|
||||
PsiType: java.util.@foo.MyAnno("outer") List<@foo.MyAnno("middle") ? extends java.util.List<? extends java.lang.String>>
|
||||
PsiType: java.util.@foo.MyAnno("outer") List<? extends java.util.@foo.MyAnno("middle") List<? extends java.lang.@foo.AnotherAnnotation(Nested::class) String>>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
@@ -96,6 +96,13 @@ fun PsiType.annotateByTypeAnnotationProvider(
|
||||
|
||||
fun recursiveAnnotator(psiType: PsiType) {
|
||||
if (!annotationsIterator.hasNext()) return
|
||||
|
||||
if (psiType is PsiWildcardType) {
|
||||
// Wildcard itself cannot have annotations
|
||||
psiType.bound?.let(::recursiveAnnotator)
|
||||
return
|
||||
}
|
||||
|
||||
val typeAnnotations = annotationsIterator.next()
|
||||
|
||||
when (psiType) {
|
||||
|
||||
Vendored
+3
-3
@@ -1,14 +1,14 @@
|
||||
public final class Nested /* foo.Nested*/ {
|
||||
@org.jetbrains.annotations.Nullable()
|
||||
private @foo.MyAnno(s = "outer") java.util.List<@foo.MyAnno(s = "middle") ? extends java.util.List<java.lang.String>> property;
|
||||
private @foo.MyAnno(s = "outer") java.util.List<? extends @foo.MyAnno(s = "middle") java.util.List<@foo.AnotherAnnotation(k = foo.Nested.class) java.lang.String>> property;
|
||||
|
||||
@org.jetbrains.annotations.Nullable()
|
||||
public final @foo.MyAnno(s = "outer") java.util.List<@foo.MyAnno(s = "middle") java.util.List<@foo.AnotherAnnotation(k = foo.Nested.class) java.lang.String>> function(@org.jetbrains.annotations.NotNull() @foo.MyAnno(s = "outer") java.util.List<@foo.MyAnno(s = "middle") ? extends java.util.List<java.lang.String>>, @org.jetbrains.annotations.NotNull() @foo.MyAnno(s = "outer") java.util.List<@foo.MyAnno(s = "middle") ? extends java.util.List<java.lang.String>>);// function(@foo.MyAnno(s = "outer") java.util.List<@foo.MyAnno(s = "middle") ? extends java.util.List<java.lang.String>>, @foo.MyAnno(s = "outer") java.util.List<@foo.MyAnno(s = "middle") ? extends java.util.List<java.lang.String>>)
|
||||
public final @foo.MyAnno(s = "outer") java.util.List<@foo.MyAnno(s = "middle") java.util.List<@foo.AnotherAnnotation(k = foo.Nested.class) java.lang.String>> function(@org.jetbrains.annotations.NotNull() @foo.MyAnno(s = "outer") java.util.List<? extends @foo.MyAnno(s = "middle") java.util.List<@foo.AnotherAnnotation(k = foo.Nested.class) java.lang.String>>, @org.jetbrains.annotations.NotNull() @foo.MyAnno(s = "outer") java.util.List<? extends @foo.MyAnno(s = "middle") java.util.List<@foo.AnotherAnnotation(k = foo.Nested.class) java.lang.String>>);// function(@foo.MyAnno(s = "outer") java.util.List<? extends @foo.MyAnno(s = "middle") java.util.List<@foo.AnotherAnnotation(k = foo.Nested.class) java.lang.String>>, @foo.MyAnno(s = "outer") java.util.List<? extends @foo.MyAnno(s = "middle") java.util.List<@foo.AnotherAnnotation(k = foo.Nested.class) java.lang.String>>)
|
||||
|
||||
@org.jetbrains.annotations.Nullable()
|
||||
public final @foo.MyAnno(s = "outer") java.util.List<@foo.MyAnno(s = "middle") java.util.List<@foo.AnotherAnnotation(k = foo.Nested.class) java.lang.String>> getProperty();// getProperty()
|
||||
|
||||
public Nested();// .ctor()
|
||||
|
||||
public final void setProperty(@org.jetbrains.annotations.Nullable() @foo.MyAnno(s = "outer") java.util.List<@foo.MyAnno(s = "middle") ? extends java.util.List<java.lang.String>>);// setProperty(@foo.MyAnno(s = "outer") java.util.List<@foo.MyAnno(s = "middle") ? extends java.util.List<java.lang.String>>)
|
||||
public final void setProperty(@org.jetbrains.annotations.Nullable() @foo.MyAnno(s = "outer") java.util.List<? extends @foo.MyAnno(s = "middle") java.util.List<@foo.AnotherAnnotation(k = foo.Nested.class) java.lang.String>>);// setProperty(@foo.MyAnno(s = "outer") java.util.List<? extends @foo.MyAnno(s = "middle") java.util.List<@foo.AnotherAnnotation(k = foo.Nested.class) java.lang.String>>)
|
||||
}
|
||||
+3
-3
@@ -1,14 +1,14 @@
|
||||
public final class Nested /* foo.Nested*/ {
|
||||
@org.jetbrains.annotations.Nullable()
|
||||
private @foo.MyAnno(s = "outer") java.util.List<@foo.MyAnno(s = "middle") ? extends java.util.List<java.lang.String>> property = null /* initializer type: null */;
|
||||
private @foo.MyAnno(s = "outer") java.util.List<? extends @foo.MyAnno(s = "middle") java.util.List<@foo.AnotherAnnotation(k = foo.Nested.class) java.lang.String>> property = null /* initializer type: null */;
|
||||
|
||||
@org.jetbrains.annotations.Nullable()
|
||||
public final @foo.MyAnno(s = "outer") java.util.List<@foo.MyAnno(s = "middle") java.util.List<@foo.AnotherAnnotation(k = foo.Nested.class) java.lang.String>> function(@org.jetbrains.annotations.NotNull() @foo.MyAnno(s = "outer") java.util.List<@foo.MyAnno(s = "middle") ? extends java.util.List<java.lang.String>>, @org.jetbrains.annotations.NotNull() @foo.MyAnno(s = "outer") java.util.List<@foo.MyAnno(s = "middle") ? extends java.util.List<java.lang.String>>);// function(@foo.MyAnno(s = "outer") java.util.List<@foo.MyAnno(s = "middle") ? extends java.util.List<java.lang.String>>, @foo.MyAnno(s = "outer") java.util.List<@foo.MyAnno(s = "middle") ? extends java.util.List<java.lang.String>>)
|
||||
public final @foo.MyAnno(s = "outer") java.util.List<@foo.MyAnno(s = "middle") java.util.List<@foo.AnotherAnnotation(k = foo.Nested.class) java.lang.String>> function(@org.jetbrains.annotations.NotNull() @foo.MyAnno(s = "outer") java.util.List<? extends @foo.MyAnno(s = "middle") java.util.List<@foo.AnotherAnnotation(k = foo.Nested.class) java.lang.String>>, @org.jetbrains.annotations.NotNull() @foo.MyAnno(s = "outer") java.util.List<? extends @foo.MyAnno(s = "middle") java.util.List<@foo.AnotherAnnotation(k = foo.Nested.class) java.lang.String>>);// function(@foo.MyAnno(s = "outer") java.util.List<? extends @foo.MyAnno(s = "middle") java.util.List<@foo.AnotherAnnotation(k = foo.Nested.class) java.lang.String>>, @foo.MyAnno(s = "outer") java.util.List<? extends @foo.MyAnno(s = "middle") java.util.List<@foo.AnotherAnnotation(k = foo.Nested.class) java.lang.String>>)
|
||||
|
||||
@org.jetbrains.annotations.Nullable()
|
||||
public final @foo.MyAnno(s = "outer") java.util.List<@foo.MyAnno(s = "middle") java.util.List<@foo.AnotherAnnotation(k = foo.Nested.class) java.lang.String>> getProperty();// getProperty()
|
||||
|
||||
public Nested();// .ctor()
|
||||
|
||||
public final void setProperty(@org.jetbrains.annotations.Nullable() @foo.MyAnno(s = "outer") java.util.List<@foo.MyAnno(s = "middle") ? extends java.util.List<java.lang.String>>);// setProperty(@foo.MyAnno(s = "outer") java.util.List<@foo.MyAnno(s = "middle") ? extends java.util.List<java.lang.String>>)
|
||||
public final void setProperty(@org.jetbrains.annotations.Nullable() @foo.MyAnno(s = "outer") java.util.List<? extends @foo.MyAnno(s = "middle") java.util.List<@foo.AnotherAnnotation(k = foo.Nested.class) java.lang.String>>);// setProperty(@foo.MyAnno(s = "outer") java.util.List<? extends @foo.MyAnno(s = "middle") java.util.List<@foo.AnotherAnnotation(k = foo.Nested.class) java.lang.String>>)
|
||||
}
|
||||
|
||||
+4
-4
@@ -33,14 +33,14 @@ public final class JvmWildcardAnnotationsKt /* JvmWildcardAnnotationsKt*/ {
|
||||
public static final void deepOpen(@org.jetbrains.annotations.NotNull() Out<Out<Out<Open>>>);// deepOpen(Out<Out<Out<Open>>>)
|
||||
|
||||
@org.jetbrains.annotations.NotNull()
|
||||
public static final @kotlin.jvm.JvmSuppressWildcards() OutPair<Open, @kotlin.jvm.JvmWildcard() ? extends OutPair<Open, ? extends Out<Open>>> combination();// combination()
|
||||
public static final @kotlin.jvm.JvmSuppressWildcards() OutPair<Open, ? extends @kotlin.jvm.JvmWildcard() OutPair<Open, ? extends @kotlin.jvm.JvmWildcard() Out<Open>>> combination();// combination()
|
||||
|
||||
@org.jetbrains.annotations.NotNull()
|
||||
public static final @kotlin.jvm.JvmSuppressWildcards(suppress = false) OutPair<? extends Final, @kotlin.jvm.JvmSuppressWildcards() OutPair<Out<Final>, Out<@kotlin.jvm.JvmSuppressWildcards(suppress = false) ? extends Final>>> falseTrueFalse();// falseTrueFalse()
|
||||
public static final @kotlin.jvm.JvmSuppressWildcards(suppress = false) OutPair<? extends Final, @kotlin.jvm.JvmSuppressWildcards() OutPair<Out<Final>, Out<? extends @kotlin.jvm.JvmSuppressWildcards(suppress = false) Final>>> falseTrueFalse();// falseTrueFalse()
|
||||
|
||||
public static final void simpleIn(@org.jetbrains.annotations.NotNull() In<@kotlin.jvm.JvmWildcard() ? super java.lang.Object>);// simpleIn(In<@kotlin.jvm.JvmWildcard() ? super java.lang.Object>)
|
||||
public static final void simpleIn(@org.jetbrains.annotations.NotNull() In<? super @kotlin.jvm.JvmWildcard() java.lang.Object>);// simpleIn(In<? super @kotlin.jvm.JvmWildcard() java.lang.Object>)
|
||||
|
||||
public static final void simpleOut(@org.jetbrains.annotations.NotNull() Out<@kotlin.jvm.JvmWildcard() ? extends Final>);// simpleOut(Out<@kotlin.jvm.JvmWildcard() ? extends Final>)
|
||||
public static final void simpleOut(@org.jetbrains.annotations.NotNull() Out<? extends @kotlin.jvm.JvmWildcard() Final>);// simpleOut(Out<? extends @kotlin.jvm.JvmWildcard() Final>)
|
||||
}
|
||||
|
||||
public class Open /* Open*/ {
|
||||
|
||||
+8
-8
@@ -28,16 +28,16 @@ public final class Container /* Container*/ {
|
||||
public final void zoo(@org.jetbrains.annotations.NotNull() Out<Out<Out<Open>>>, @org.jetbrains.annotations.NotNull() @kotlin.jvm.JvmSuppressWildcards(suppress = false) Out<? extends Open>);// zoo(Out<Out<Out<Open>>>, @kotlin.jvm.JvmSuppressWildcards(suppress = false) Out<? extends Open>)
|
||||
|
||||
@org.jetbrains.annotations.NotNull()
|
||||
public final @kotlin.jvm.JvmSuppressWildcards() OutPair<Open, @kotlin.jvm.JvmWildcard() ? extends OutPair<Open, ? extends Out<Open>>> combination();// combination()
|
||||
public final @kotlin.jvm.JvmSuppressWildcards() OutPair<Open, ? extends @kotlin.jvm.JvmWildcard() OutPair<Open, ? extends @kotlin.jvm.JvmWildcard() Out<Open>>> combination();// combination()
|
||||
|
||||
@org.jetbrains.annotations.NotNull()
|
||||
public final @kotlin.jvm.JvmSuppressWildcards(suppress = false) OutPair<? extends Final, @kotlin.jvm.JvmSuppressWildcards() OutPair<Out<Final>, Out<@kotlin.jvm.JvmSuppressWildcards(suppress = false) ? extends Final>>> falseTrueFalse();// falseTrueFalse()
|
||||
public final @kotlin.jvm.JvmSuppressWildcards(suppress = false) OutPair<? extends Final, @kotlin.jvm.JvmSuppressWildcards() OutPair<Out<Final>, Out<? extends @kotlin.jvm.JvmSuppressWildcards(suppress = false) Final>>> falseTrueFalse();// falseTrueFalse()
|
||||
|
||||
public Container();// .ctor()
|
||||
|
||||
public final void simpleIn(@org.jetbrains.annotations.NotNull() In<@kotlin.jvm.JvmWildcard() ? super java.lang.Object>);// simpleIn(In<@kotlin.jvm.JvmWildcard() ? super java.lang.Object>)
|
||||
public final void simpleIn(@org.jetbrains.annotations.NotNull() In<? super @kotlin.jvm.JvmWildcard() java.lang.Object>);// simpleIn(In<? super @kotlin.jvm.JvmWildcard() java.lang.Object>)
|
||||
|
||||
public final void simpleOut(@org.jetbrains.annotations.NotNull() Out<@kotlin.jvm.JvmWildcard() ? extends Final>);// simpleOut(Out<@kotlin.jvm.JvmWildcard() ? extends Final>)
|
||||
public final void simpleOut(@org.jetbrains.annotations.NotNull() Out<? extends @kotlin.jvm.JvmWildcard() Final>);// simpleOut(Out<? extends @kotlin.jvm.JvmWildcard() Final>)
|
||||
}
|
||||
|
||||
public final class ContainerForPropertyAndAccessors /* ContainerForPropertyAndAccessors*/ {
|
||||
@@ -45,10 +45,10 @@ public final class ContainerForPropertyAndAccessors /* ContainerForPropertyAndAc
|
||||
private Out<? extends Open> bar;
|
||||
|
||||
@org.jetbrains.annotations.NotNull()
|
||||
private final In<@kotlin.jvm.JvmWildcard() ? super java.lang.Object> simpleIn;
|
||||
private final In<? super @kotlin.jvm.JvmWildcard() java.lang.Object> simpleIn;
|
||||
|
||||
@org.jetbrains.annotations.NotNull()
|
||||
private final Out<@kotlin.jvm.JvmWildcard() ? extends Final> simpleOut;
|
||||
private final Out<? extends @kotlin.jvm.JvmWildcard() Final> simpleOut;
|
||||
|
||||
@org.jetbrains.annotations.NotNull()
|
||||
private final Out<Out<Out<Open>>> deepOpen;
|
||||
@@ -57,10 +57,10 @@ public final class ContainerForPropertyAndAccessors /* ContainerForPropertyAndAc
|
||||
public final @kotlin.jvm.JvmSuppressWildcards(suppress = false) Out<? extends Open> getZoo(@org.jetbrains.annotations.NotNull() Out<? extends Out<? extends Out<? extends Open>>>);// getZoo(Out<? extends Out<? extends Out<? extends Open>>>)
|
||||
|
||||
@org.jetbrains.annotations.NotNull()
|
||||
public final In<@kotlin.jvm.JvmWildcard() ? super java.lang.Object> getSimpleIn();// getSimpleIn()
|
||||
public final In<? super @kotlin.jvm.JvmWildcard() java.lang.Object> getSimpleIn();// getSimpleIn()
|
||||
|
||||
@org.jetbrains.annotations.NotNull()
|
||||
public final Out<@kotlin.jvm.JvmWildcard() ? extends Final> getSimpleOut();// getSimpleOut()
|
||||
public final Out<? extends @kotlin.jvm.JvmWildcard() Final> getSimpleOut();// getSimpleOut()
|
||||
|
||||
@org.jetbrains.annotations.NotNull()
|
||||
public final Out<Open> getBar();// getBar()
|
||||
|
||||
Reference in New Issue
Block a user