1*af87fb4bSXin Li /* 2*af87fb4bSXin Li * Copyright 2020 Google LLC 3*af87fb4bSXin Li * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. 4*af87fb4bSXin Li * 5*af87fb4bSXin Li * Licensed under the Apache License, Version 2.0 (the "License"); 6*af87fb4bSXin Li * you may not use this file except in compliance with the License. 7*af87fb4bSXin Li * You may obtain a copy of the License at 8*af87fb4bSXin Li * 9*af87fb4bSXin Li * http://www.apache.org/licenses/LICENSE-2.0 10*af87fb4bSXin Li * 11*af87fb4bSXin Li * Unless required by applicable law or agreed to in writing, software 12*af87fb4bSXin Li * distributed under the License is distributed on an "AS IS" BASIS, 13*af87fb4bSXin Li * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*af87fb4bSXin Li * See the License for the specific language governing permissions and 15*af87fb4bSXin Li * limitations under the License. 16*af87fb4bSXin Li */ 17*af87fb4bSXin Li 18*af87fb4bSXin Li // WITH_RUNTIME 19*af87fb4bSXin Li // TEST PROCESSOR: JavaWildcard2Processor 20*af87fb4bSXin Li // EXPECTED: 21*af87fb4bSXin Li // MyEnum : Any 22*af87fb4bSXin Li // <init> : MyEnum 23*af87fb4bSXin Li // VarianceSubjectSuppressed : Any 24*af87fb4bSXin Li // R : Any? 25*af87fb4bSXin Li // starList : List<Any?> 26*af87fb4bSXin Li // typeArgList : List<R> 27*af87fb4bSXin Li // numberList : List<Number> 28*af87fb4bSXin Li // stringList : List<String> 29*af87fb4bSXin Li // enumList : List<MyEnum> 30*af87fb4bSXin Li // jvmWildcard : List<out [@kotlin.jvm.JvmWildcard] String> 31*af87fb4bSXin Li // suppressJvmWildcard : List<[@kotlin.jvm.JvmSuppressWildcards] Number> 32*af87fb4bSXin Li // <init> : VarianceSubjectSuppressed<R> 33*af87fb4bSXin Li // propWithFinalType : String 34*af87fb4bSXin Li // propWithFinalType.getter() : String 35*af87fb4bSXin Li // <set-?> : String 36*af87fb4bSXin Li // propWithOpenType : Number 37*af87fb4bSXin Li // propWithOpenType.getter() : Number 38*af87fb4bSXin Li // <set-?> : Number 39*af87fb4bSXin Li // propWithFinalGeneric : List<String> 40*af87fb4bSXin Li // propWithFinalGeneric.getter() : List<String> 41*af87fb4bSXin Li // <set-?> : List<String> 42*af87fb4bSXin Li // propWithOpenGeneric : List<Number> 43*af87fb4bSXin Li // propWithOpenGeneric.getter() : List<Number> 44*af87fb4bSXin Li // <set-?> : List<Number> 45*af87fb4bSXin Li // propWithTypeArg : R 46*af87fb4bSXin Li // propWithTypeArg.getter() : R 47*af87fb4bSXin Li // <set-?> : R 48*af87fb4bSXin Li // propWithTypeArgGeneric : List<R> 49*af87fb4bSXin Li // propWithTypeArgGeneric.getter() : List<R> 50*af87fb4bSXin Li // <set-?> : List<R> 51*af87fb4bSXin Li // propWithOpenTypeButSuppressAnnotation : Number 52*af87fb4bSXin Li // propWithOpenTypeButSuppressAnnotation.getter() : Number 53*af87fb4bSXin Li // <set-?> : Number 54*af87fb4bSXin Li // list2 : List<Any?> 55*af87fb4bSXin Li // list1 : List<Any?> 56*af87fb4bSXin Li // list3 : List<R> 57*af87fb4bSXin Li // listTypeArg : List<R> 58*af87fb4bSXin Li // list4 : List<Number> 59*af87fb4bSXin Li // listTypeArgNumber : List<Number> 60*af87fb4bSXin Li // list5 : List<String> 61*af87fb4bSXin Li // listTypeArgString : List<String> 62*af87fb4bSXin Li // list6 : List<MyEnum> 63*af87fb4bSXin Li // listTypeArgEnum : List<MyEnum> 64*af87fb4bSXin Li // list7 : List<out [@kotlin.jvm.JvmWildcard] String> 65*af87fb4bSXin Li // explicitJvmWildcard : List<out [@kotlin.jvm.JvmWildcard] String> 66*af87fb4bSXin Li // list8 : List<[@kotlin.jvm.JvmSuppressWildcards] Number> 67*af87fb4bSXin Li // explicitJvmSuppressWildcard_OnType : List<[@kotlin.jvm.JvmSuppressWildcards] Number> 68*af87fb4bSXin Li // list9 : [@kotlin.jvm.JvmSuppressWildcards] List<Number> 69*af87fb4bSXin Li // explicitJvmSuppressWildcard_OnType2 : [@kotlin.jvm.JvmSuppressWildcards] List<Number> 70*af87fb4bSXin Li // END 71*af87fb4bSXin Li 72*af87fb4bSXin Li enum class MyEnum() 73*af87fb4bSXin Li 74*af87fb4bSXin Li @JvmSuppressWildcards 75*af87fb4bSXin Li class VarianceSubjectSuppressed<R>( 76*af87fb4bSXin Li starList: List<*>, 77*af87fb4bSXin Li typeArgList: List<R>, 78*af87fb4bSXin Li numberList: List<Number>, 79*af87fb4bSXin Li stringList: List<String>, 80*af87fb4bSXin Li enumList: List<MyEnum>, 81*af87fb4bSXin Li jvmWildcard: List<@JvmWildcard String>, 82*af87fb4bSXin Li suppressJvmWildcard: List<@JvmSuppressWildcards Number> 83*af87fb4bSXin Li ) { 84*af87fb4bSXin Li var propWithFinalType: String = "" 85*af87fb4bSXin Li var propWithOpenType: Number = 3 86*af87fb4bSXin Li var propWithFinalGeneric: List<String> = TODO() 87*af87fb4bSXin Li var propWithOpenGeneric: List<Number> = TODO() 88*af87fb4bSXin Li var propWithTypeArg: R = TODO() 89*af87fb4bSXin Li var propWithTypeArgGeneric: List<R> = TODO() 90*af87fb4bSXin Li @JvmSuppressWildcards 91*af87fb4bSXin Li var propWithOpenTypeButSuppressAnnotation: Number = 3 list1null92*af87fb4bSXin Li fun list1(list2: List<*>): List<*> { TODO() } listTypeArgnull93*af87fb4bSXin Li fun listTypeArg(list3: List<R>): List<R> { TODO() } listTypeArgNumbernull94*af87fb4bSXin Li fun listTypeArgNumber(list4: List<Number>): List<Number> { TODO() } listTypeArgStringnull95*af87fb4bSXin Li fun listTypeArgString(list5: List<String>): List<String> { TODO() } listTypeArgEnumnull96*af87fb4bSXin Li fun listTypeArgEnum(list6: List<MyEnum>): List<MyEnum> { TODO() } explicitJvmWildcardnull97*af87fb4bSXin Li fun explicitJvmWildcard( 98*af87fb4bSXin Li list7: List<@JvmWildcard String> 99*af87fb4bSXin Li ): List<@JvmWildcard String> { TODO() } 100*af87fb4bSXin Li explicitJvmSuppressWildcard_OnTypenull101*af87fb4bSXin Li fun explicitJvmSuppressWildcard_OnType( 102*af87fb4bSXin Li list8: List<@JvmSuppressWildcards Number> 103*af87fb4bSXin Li ): List<@JvmSuppressWildcards Number> { TODO() } 104*af87fb4bSXin Li explicitJvmSuppressWildcard_OnType2null105*af87fb4bSXin Li fun explicitJvmSuppressWildcard_OnType2( 106*af87fb4bSXin Li list9: @JvmSuppressWildcards List<Number> 107*af87fb4bSXin Li ): @JvmSuppressWildcards List<Number> { TODO() } 108*af87fb4bSXin Li } 109