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: ReferenceElementProcessor 20*af87fb4bSXin Li // EXPECTED: 21*af87fb4bSXin Li // KSClassifierReferenceImpl: Qualifier of B is A 22*af87fb4bSXin Li // KSClassifierReferenceImpl: Qualifier of C is A 23*af87fb4bSXin Li // KSClassifierReferenceImpl: Qualifier of Int is null 24*af87fb4bSXin Li // KSClassifierReferenceImpl: Qualifier of String is null 25*af87fb4bSXin Li // KSClassifierReferenceDescriptorImpl: Qualifier of Int is null 26*af87fb4bSXin Li // KSClassifierReferenceDescriptorImpl: Qualifier of String is null 27*af87fb4bSXin Li // KSClassifierReferenceDescriptorImpl: Qualifier of Y is X 28*af87fb4bSXin Li // KSClassifierReferenceDescriptorImpl: Qualifier of Z<Int> is X<String> 29*af87fb4bSXin Li // KSDefNonNullReferenceImpl: Enclosed type of T 30*af87fb4bSXin Li // KSClassifierReferenceJavaImpl: Qualifier of H is J<String> 31*af87fb4bSXin Li // KSClassifierReferenceJavaImpl: Qualifier of I is J 32*af87fb4bSXin Li // KSClassifierReferenceJavaImpl: Qualifier of Object is null 33*af87fb4bSXin Li // KSClassifierReferenceJavaImpl: Qualifier of Object is null 34*af87fb4bSXin Li // KSClassifierReferenceJavaImpl: Qualifier of Object is null 35*af87fb4bSXin Li // KSClassifierReferenceJavaImpl: Qualifier of Object is null 36*af87fb4bSXin Li // KSClassifierReferenceJavaImpl: Qualifier of String is null 37*af87fb4bSXin Li // END 38*af87fb4bSXin Li 39*af87fb4bSXin Li // MODULE: lib 40*af87fb4bSXin Li // FILE: lib.kt 41*af87fb4bSXin Li class X<T1> { 42*af87fb4bSXin Li class Y 43*af87fb4bSXin Li inner class Z<T2> 44*af87fb4bSXin Li } 45*af87fb4bSXin Li 46*af87fb4bSXin Li val z: X.Y = X.Y() 47*af87fb4bSXin Li val w: X<String>.Z<Int> = X<String>().Z<Int>() 48*af87fb4bSXin Li 49*af87fb4bSXin Li // MODULE: main(lib) 50*af87fb4bSXin Li // FILE: reference.kt 51*af87fb4bSXin Li class A<T1> { 52*af87fb4bSXin Li class B 53*af87fb4bSXin Li inner class C<T2> 54*af87fb4bSXin Li } 55*af87fb4bSXin Li 56*af87fb4bSXin Li class DefNonNull<T> { 57*af87fb4bSXin Li val u: T & Any 58*af87fb4bSXin Li } 59*af87fb4bSXin Li 60*af87fb4bSXin Li val x: A.B = A.B() 61*af87fb4bSXin Li val y: A<String>.C<Int> = A<String>().C<Int>() 62*af87fb4bSXin Li 63*af87fb4bSXin Li // FILE: J.java 64*af87fb4bSXin Li class J<T> { 65*af87fb4bSXin Li class H { 66*af87fb4bSXin Li } 67*af87fb4bSXin Li 68*af87fb4bSXin Li static class I { 69*af87fb4bSXin Li } 70*af87fb4bSXin Li } 71*af87fb4bSXin Li 72*af87fb4bSXin Li class K { 73*af87fb4bSXin Li J<String>.H x = null; 74*af87fb4bSXin Li J.I z = null; 75*af87fb4bSXin Li } 76