| /* | |
| * Copyright 2023 Google LLC | |
| * Copyright 2010-2023 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: VisibilityProcessor | |
| // EXPECTED: | |
| // publicFun: PUBLIC,visible in A, B, D: true, true, true | |
| // packageFun: JAVA_PACKAGE,visible in A, B, D: true, false, true | |
| // privateFun: PRIVATE,visible in A, B, D: false, false, false | |
| // protectedFun: PROTECTED,visible in A, B, D: true, false, true | |
| // <init>: JAVA_PACKAGE,visible in A, B, D: true, false, true | |
| // javaPackageField: JAVA_PACKAGE,visible in A, B, D: true, false, true | |
| // x: INTERNAL,visible in A, B, D: false, false, false | |
| // y: PROTECTED,visible in A, B, D: true, false, true | |
| // y: PUBLIC,visible in A, B, D: true, true, true | |
| // LibEnumJava: <init>: PRIVATE | |
| // LibEnumJava: values: PUBLIC | |
| // LibEnumJava: valueOf: PUBLIC | |
| // LibEnum: <init>: PRIVATE | |
| // LibEnum: values: PUBLIC | |
| // LibEnum: valueOf: PUBLIC | |
| // Enum: <init>: PRIVATE | |
| // Enum: values: PUBLIC | |
| // Enum: valueOf: PUBLIC | |
| // KtEnum: <init>: PRIVATE | |
| // KtEnum: values: PUBLIC | |
| // KtEnum: valueOf: PUBLIC | |
| // KtEnumWithVal: <init>: PRIVATE | |
| // KtEnumWithVal: values: PUBLIC | |
| // KtEnumWithVal: valueOf: PUBLIC | |
| // JavaAnnotation: value: PUBLIC | |
| // IntersectionC: property: PUBLIC | |
| // EXPECT NEXT: JavaClass.javaPackageField.field: JAVA_PACKAGE,visible in A, B, D: true, false, true | |
| // EXPECT NEXT: KotlinSubClass.y.field: PRIVATE,visible in A, B, D, KotlinSubClass: false, false, false, true | |
| // END | |
| // MODULE: lib | |
| // FILE: JavaClass.java | |
| public class JavaClass { | |
| int javaPackageField; | |
| } | |
| // FILE: LibEnumJava.java | |
| public enum LibEnumJava { | |
| R(0),G(1),B(2); | |
| private final int v; | |
| LibEnumJava(int v) { | |
| this.v = v; | |
| } | |
| } | |
| // FILE: lib.kt | |
| open class KotlinClass { | |
| open internal val x: Int = 0 | |
| open protected val y: Int = 0 | |
| } | |
| enum class LibEnum(val value: Int) { | |
| A(0), B(1), C(2); | |
| } | |
| // FILE: Intersection.kt | |
| interface IntersectionA { | |
| val property: String | |
| } | |
| interface IntersectionB { | |
| val property: String | |
| } | |
| interface IntersectionC: IntersectionA, IntersectionB | |
| // MODULE: main(lib) | |
| // FILE: a.kt | |
| annotation class TestA | |
| annotation class TestB | |
| annotation class TestD | |
| @TestA | |
| class A : C() { | |
| } | |
| @TestD | |
| class D {} | |
| class KotlinSubClass : KotlinClass() { | |
| public override val y = 1 | |
| } | |
| enum class KtEnum { | |
| A,B,C | |
| } | |
| enum class KtEnumWithVal(val a: Int) { | |
| A(0), B(1), C(2) | |
| } | |
| // FILE: C.java | |
| class C { | |
| public int publicFun() { | |
| return 1; | |
| } | |
| int packageFun() { | |
| return 1; | |
| } | |
| private int privateFun() { | |
| return 1; | |
| } | |
| protected int protectedFun() { | |
| return 1; | |
| } | |
| } | |
| // FILE: JavaAnnotation.java | |
| public @interface JavaAnnotation { | |
| String value(); | |
| } | |
| // FILE: Enum.java | |
| public enum Enum { | |
| Y,U,V; | |
| private final int v; | |
| Enum(int v) { | |
| this.v = v; | |
| } | |
| } | |
| // FILE: b.kt | |
| package somePackage | |
| import TestB | |
| @TestB | |
| class B |