| /* |
| * Copyright 2021 Google LLC |
| * Copyright 2010-2021 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: AnnotatedUtilProcessor |
| // EXPECTED: |
| // Test: OnlyTestAnnotation |
| // Test: ParametersTestAnnotationWithValuesTest |
| // IsPresent: class com.google.devtools.ksp.processor.ParametersTestAnnotation |
| // ByType: com.google.devtools.ksp.processor.ParametersTestAnnotation[booleanValue=true, byteValue=5, shortValue=202, charValue=k, doubleValue=5.12, floatValue=123.3, intValue=2, longValue=4, stringValue=someValue, kClassValue=class java.lang.Throwable, enumValue=VALUE1] |
| // Test: ParametersTestAnnotationWithDefaultsTest |
| // IsPresent: class com.google.devtools.ksp.processor.ParametersTestAnnotation |
| // ByType: com.google.devtools.ksp.processor.ParametersTestAnnotation[booleanValue=false, byteValue=2, shortValue=3, charValue=b, doubleValue=4.0, floatValue=5.0, intValue=6, longValue=7, stringValue=emptystring, kClassValue=interface com.google.devtools.ksp.processor.ParametersTestAnnotation, enumValue=NONE] |
| // ByType: com.google.devtools.ksp.processor.ParametersTestAnnotation[booleanValue=false, byteValue=2, shortValue=3, charValue=b, doubleValue=4.0, floatValue=5.0, intValue=6, longValue=7, stringValue=emptystring, kClassValue=interface com.google.devtools.ksp.processor.ParametersTestAnnotation, enumValue=NONE] |
| // Test: ParametersTestWithNegativeDefaultsAnnotationTest |
| // IsPresent: class com.google.devtools.ksp.processor.ParametersTestWithNegativeDefaultsAnnotation |
| // ByType: com.google.devtools.ksp.processor.ParametersTestWithNegativeDefaultsAnnotation[byteValue=-2, shortValue=-3, doubleValue=-4.0, floatValue=-5.0, intValue=-6, longValue=-7] |
| // ByType: com.google.devtools.ksp.processor.ParametersTestWithNegativeDefaultsAnnotation[byteValue=-2, shortValue=-3, doubleValue=-4.0, floatValue=-5.0, intValue=-6, longValue=-7] |
| // Test: ParameterArraysTestAnnotationWithDefaultTest |
| // IsPresent: class com.google.devtools.ksp.processor.ParameterArraysTestAnnotation |
| // ByType: ParameterArraysTestAnnotation[booleanArrayValue=[true, false],byteArrayValue=[-2, 4],shortArrayValue=[-1, 2, 3],charArrayValue=[a, b, c],doubleArrayValue=[1.1, 2.2, 3.3],floatArrayValue=[1.0, 2.0, 3.3],intArrayValue=[1, 2, 4, 8, 16],longArrayValue=[1, 2, 4, 8, 16, 32],stringArrayValue=[first, second, third],kClassArrayValue=[class kotlin.Throwable, class com.google.devtools.ksp.processor.ParametersTestAnnotation],enumArrayValue=[VALUE1, VALUE2, VALUE1, VALUE2]] |
| // Test: AnnotationWithinAnAnnotationTest |
| // IsPresent: class com.google.devtools.ksp.processor.OuterAnnotation |
| // ByType: com.google.devtools.ksp.processor.OuterAnnotation[innerAnnotation=com.google.devtools.ksp.processor.InnerAnnotation[value=hello from the other side]] |
| // END |
| // MODULE: annotations |
| // FILE: com/google/devtools/ksp/processor/a.kt |
| package com.google.devtools.ksp.processor |
| |
| import kotlin.reflect.KClass |
| import java.lang.Throwable |
| |
| annotation class Test |
| |
| @Suppress("LongParameterList") |
| annotation class ParametersTestAnnotation( |
| val booleanValue: Boolean = false, |
| val byteValue: Byte = 2, |
| val shortValue: Short = 3, |
| val charValue: Char = 'b', |
| val doubleValue: Double = 4.0, |
| val floatValue: Float = 5.0f, |
| val intValue: Int = 6, |
| val longValue: Long = 7L, |
| val stringValue: String = "emptystring", |
| val kClassValue: KClass<*> = ParametersTestAnnotation::class, |
| val enumValue: TestEnum = TestEnum.NONE, |
| ) |
| |
| @Suppress("LongParameterList") |
| annotation class ParameterArraysTestAnnotation( |
| val booleanArrayValue: BooleanArray = booleanArrayOf(), |
| val byteArrayValue: ByteArray = byteArrayOf(), |
| val shortArrayValue: ShortArray = shortArrayOf(), |
| val charArrayValue: CharArray = charArrayOf(), |
| val doubleArrayValue: DoubleArray = doubleArrayOf(), |
| val floatArrayValue: FloatArray = floatArrayOf(), |
| val intArrayValue: IntArray = intArrayOf(), |
| val longArrayValue: LongArray = longArrayOf(), |
| val stringArrayValue: Array<String> = emptyArray(), |
| val kClassArrayValue: Array<KClass<*>> = emptyArray(), |
| val enumArrayValue: Array<TestEnum> = emptyArray(), |
| ) |
| |
| annotation class ParametersTestWithNegativeDefaultsAnnotation( |
| val byteValue: Byte = -2, |
| val shortValue: Short = -3, |
| val doubleValue: Double = -4.0, |
| val floatValue: Float = -5.0f, |
| val intValue: Int = -6, |
| val longValue: Long = -7L, |
| ) |
| |
| enum class TestEnum { |
| NONE, VALUE1, VALUE2 |
| } |
| |
| annotation class InnerAnnotation(val value: String = "default") |
| |
| annotation class OuterAnnotation( |
| val innerAnnotation : InnerAnnotation = InnerAnnotation() |
| ) |
| |
| ///////////////////////////////////////////////////////// |
| // Tests |
| ///////////////////////////////////////////////////////// |
| |
| @Test |
| @Test |
| class OnlyTestAnnotation |
| |
| @ParametersTestAnnotation( |
| booleanValue = true, |
| byteValue = 5, |
| shortValue = 202, |
| charValue = 'k', |
| doubleValue = 5.12, |
| floatValue = 123.3f, |
| intValue = 2, |
| longValue = 4L, |
| stringValue = "someValue", |
| java.lang.Throwable::class, |
| TestEnum.VALUE1, |
| ) |
| @Test |
| class ParametersTestAnnotationWithValuesTest |
| |
| @ParametersTestAnnotation |
| @ParametersTestAnnotation |
| @Test |
| class ParametersTestAnnotationWithDefaultsTest |
| |
| @ParametersTestWithNegativeDefaultsAnnotation |
| @ParametersTestWithNegativeDefaultsAnnotation |
| @Test |
| class ParametersTestWithNegativeDefaultsAnnotationTest |
| |
| @ParameterArraysTestAnnotation( |
| booleanArrayValue = booleanArrayOf(true, false), |
| byteArrayValue = byteArrayOf(-2, 4), |
| shortArrayValue = shortArrayOf(-1, 2, 3), |
| charArrayValue = charArrayOf('a', 'b', 'c'), |
| doubleArrayValue = doubleArrayOf(1.1, 2.2, 3.3), |
| floatArrayValue = floatArrayOf(1.0f, 2.0f, 3.3f), |
| intArrayValue = intArrayOf(1, 2, 4, 8, 16), |
| longArrayValue = longArrayOf(1L, 2L, 4L, 8L, 16, 32L), |
| stringArrayValue = arrayOf("first", "second", "third"), |
| kClassArrayValue = arrayOf(Throwable::class, ParametersTestAnnotation::class), |
| enumArrayValue = arrayOf(TestEnum.VALUE1, TestEnum.VALUE2, TestEnum.VALUE1, TestEnum.VALUE2), |
| ) |
| @Test |
| class ParameterArraysTestAnnotationWithDefaultTest |
| |
| @OuterAnnotation(innerAnnotation = InnerAnnotation("hello from the other side")) |
| @Test |
| class AnnotationWithinAnAnnotationTest |