blob: 97829b3bb92b0259dafa31818f3f9dc7c1eb35e3 [file] [log] [blame]
/*
* Copyright 2022 Google LLC
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// TEST PROCESSOR: ParentProcessor
// EXPECTED:
// parent of File: B.java: null
// parent of ITF: ITF
// parent of ITF: B
// parent of T: B
// parent of Anno: Anno
// parent of Anno: @Anno
// parent of param:: @Anno
// parent of @Anno: B
// parent of p: Bnno
// parent of p.Bnno: Bnno
// parent of Bnno: @Bnno
// parent of @Bnno: B
// parent of B: File: B.java
// parent of T: T
// parent of T: t
// parent of t: B
// parent of T: T
// parent of T: t
// parent of t: foo
// parent of Int: Int
// parent of Int: i
// parent of i: foo
// parent of Int: Int
// parent of Int: foo
// parent of foo: B
// parent of B<*>: synthetic constructor for B
// parent of synthetic constructor for B: B
// parent of RGB: RGB
// parent of RGB: INVARIANT RGB
// parent of INVARIANT RGB: Enum<RGB>
// parent of Enum<RGB>: Enum<RGB>
// parent of Enum<RGB>: RGB
// parent of RGB: File: B.java
// parent of R: RGB
// parent of G: RGB
// parent of B: RGB
// parent of RGB: RGB
// parent of RGB: COVARIANT RGB
// parent of COVARIANT RGB: Array<out (RGB..RGB?)>
// parent of Array<out (RGB..RGB?)>: Array<out (RGB..RGB?)>
// parent of Array<out (RGB..RGB?)>: values
// parent of values: RGB
// parent of String: String
// parent of String: name
// parent of name: valueOf
// parent of RGB: RGB
// parent of RGB: valueOf
// parent of valueOf: RGB
// parent of RGB: synthetic constructor for RGB
// parent of synthetic constructor for RGB: RGB
// parent of File: Bnno.kt: null
// parent of Any: Bnno
// parent of Bnno: File: Bnno.kt
// parent of Bnno: synthetic constructor for Bnno
// parent of synthetic constructor for Bnno: Bnno
// parent of File: a.kt: null
// parent of Any: Anno
// parent of Anno: File: a.kt
// parent of String: String
// parent of String: param
// parent of param: <init>
// parent of Anno: <init>
// parent of <init>: Anno
// parent of String: String
// parent of String: param.getter()
// parent of param.getter(): param
// parent of param: <init>
// parent of Int: Int
// parent of Int: INVARIANT Int
// parent of INVARIANT Int: Map
// parent of T: T
// parent of T: INVARIANT T
// parent of INVARIANT T: Map
// parent of Map: Map
// parent of Map: Alias
// parent of Any?: T
// parent of T: Alias
// parent of Alias: File: a.kt
// parent of Int: Int
// parent of Int: INVARIANT Int
// parent of INVARIANT Int: List
// parent of List: List
// parent of List: topProp
// parent of Int: Int
// parent of Int: INVARIANT Int
// parent of INVARIANT Int: List<Int>
// parent of List<Int>: List<Int>
// parent of List<Int>: topProp.getter()
// parent of topProp.getter(): topProp
// parent of Anno: Anno
// parent of Anno: @Anno
// parent of @Anno: topProp
// parent of topProp: File: a.kt
// parent of T: T
// parent of T: topFun
// parent of Any?: T
// parent of T: topFun
// parent of Anno: Anno
// parent of Anno: @Anno
// parent of @Anno: topFun
// parent of topFun: File: a.kt
// parent of Any: ITF
// parent of ITF: File: a.kt
// parent of ITF: ITF
// parent of ITF: topClass
// parent of Anno: Anno
// parent of Anno: @Anno
// parent of @Anno: topClass
// parent of topClass: File: a.kt
// parent of Int: Int
// parent of Int: i
// parent of i: memberFun
// parent of Int: memberFun
// parent of memberFun: topClass
// parent of Any: InnerClass
// parent of Any?: P
// parent of P: InnerClass
// parent of InnerClass: topClass
// parent of P: P
// parent of P: p
// parent of p: innerFun
// parent of Int: innerFun
// parent of innerFun: InnerClass
// parent of InnerClass<*>: synthetic constructor for InnerClass
// parent of synthetic constructor for InnerClass: InnerClass
// parent of Int: Int
// parent of Int: a
// parent of Int: Int
// parent of Int: a.getter()
// parent of a.getter(): a
// parent of a: topClass
// parent of String: String
// parent of String: b
// parent of b.getter(): b
// parent of String: String
// parent of String: <set-?>
// parent of <set-?>: b.setter()
// parent of b.setter(): b
// parent of b: topClass
// parent of topClass: synthetic constructor for topClass
// parent of synthetic constructor for topClass: topClass
// parent of Any: CMYK
// parent of CMYK: File: a.kt
// parent of Any: C
// parent of C: CMYK
// parent of C: synthetic constructor for C
// parent of synthetic constructor for C: C
// parent of Any: M
// parent of M: CMYK
// parent of M: synthetic constructor for M
// parent of synthetic constructor for M: M
// parent of Any: Y
// parent of Y: CMYK
// parent of Y: synthetic constructor for Y
// parent of synthetic constructor for Y: Y
// parent of Any: K
// parent of K: CMYK
// parent of K: synthetic constructor for K
// parent of synthetic constructor for K: K
// parent of CMYK: synthetic constructor for CMYK
// parent of synthetic constructor for CMYK: CMYK
// parent of YUV: YUV
// parent of YUV: INVARIANT YUV
// parent of INVARIANT YUV: Enum<YUV>
// parent of Enum<YUV>: Enum<YUV>
// parent of Enum<YUV>: YUV
// parent of YUV: null
// parent of YUV: YUV
// parent of YUV: Y
// parent of Y: YUV
// parent of YUV: YUV
// parent of YUV: U
// parent of U: YUV
// parent of YUV: YUV
// parent of YUV: V
// parent of V: YUV
// parent of String: String
// parent of String: value
// parent of value: valueOf
// parent of YUV: YUV
// parent of YUV: valueOf
// parent of valueOf: YUV
// parent of YUV: YUV
// parent of YUV: INVARIANT YUV
// parent of INVARIANT YUV: Array<YUV>
// parent of Array<YUV>: Array<YUV>
// parent of Array<YUV>: values
// parent of values: YUV
// parent of YUV: YUV
// parent of YUV: <init>
// parent of <init>: YUV
// parent of HSV: HSV
// parent of HSV: INVARIANT HSV
// parent of INVARIANT HSV: Enum<(HSV..HSV?)>
// parent of Enum<(HSV..HSV?)>: Enum<(HSV..HSV?)>
// parent of Enum<(HSV..HSV?)>: HSV
// parent of HSV: null
// parent of HSV: HSV
// parent of HSV: H
// parent of H: HSV
// parent of HSV: HSV
// parent of HSV: S
// parent of S: HSV
// parent of HSV: HSV
// parent of HSV: V
// parent of V: HSV
// parent of String: String
// parent of String: value
// parent of value: valueOf
// parent of HSV: HSV
// parent of HSV: valueOf
// parent of valueOf: HSV
// parent of HSV: HSV
// parent of HSV: INVARIANT HSV
// parent of INVARIANT HSV: Array<HSV>
// parent of Array<HSV>: Array<HSV>
// parent of Array<HSV>: values
// parent of values: HSV
// parent of HSV: HSV
// parent of HSV: <init>
// parent of <init>: HSV
// END
// MODULE: lib
// FILE: YUV.kt
enum class YUV {
Y, U, V
}
// FILE: HSV.java
enum HSV {
H, S, V
}
// MODULE: main(lib)
// FILE: a.kt
annotation class Anno(val param: String = "")
typealias Alias<T> = Map<Int, T>
@Anno
val topProp : List<Int>? = null
@Anno
fun <T> topFun() : T? {
return null
}
interface ITF
@Anno
class topClass: ITF {
fun memberFun(i: Int) = 1
class InnerClass<P> {
fun innerFun(p: P) = 1
}
val a: Int = 1
var b: String
get() = "1"
}
enum class CMYK {
C, M, Y, K
}
// FILE: Bnno.kt
package p
annotation class Bnno
// FILE: B.java
@Anno
@p.Bnno
public class B<T> implements ITF {
private T t;
public int foo(T t, int i) {
return 1;
}
}
enum RGB {
R, G, B
}