| /* |
| * 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: ParametersTestAnnotationWithIntegerLiteralValuesTest |
| // 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.0, floatValue=123.0, 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: ParameterArraysTestAnnotationWithSingleAsArrayTest |
| // IsPresent: class com.google.devtools.ksp.processor.ParameterArraysTestAnnotation |
| // ByType: ParameterArraysTestAnnotation[booleanArrayValue=[true],byteArrayValue=[-2],shortArrayValue=[-1],charArrayValue=[a],doubleArrayValue=[1.1],floatArrayValue=[1.0],intArrayValue=[1],longArrayValue=[1],stringArrayValue=[first],kClassArrayValue=[class kotlin.Throwable],enumArrayValue=[VALUE1]] |
| // 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 |
| // FILE: com/google/devtools/ksp/processor/A.java |
| package com.google.devtools.ksp.processor; |
| |
| import kotlin.reflect.KClass |
| |
| public class A {} |
| |
| |
| public @interface Test {} |
| |
| public @interface ParametersTestAnnotation { |
| Boolean booleanValue() default false; |
| Byte byteValue() default 2; |
| Short shortValue() default 3; |
| Char charValue() default 'b'; |
| Double doubleValue() default 4.0; |
| Float floatValue() default 5.0f; |
| Int intValue() default 6; |
| Long longValue() default 7L; |
| String stringValue() default "emptystring"; |
| Class<?> kClassValue() default ParametersTestAnnotation.class; |
| TestEnum enumValue() default TestEnum.NONE; |
| } |
| |
| public @interface ParametersTestWithNegativeDefaultsAnnotation { |
| Byte byteValue() default -2; |
| Short shortValue() default -3; |
| Double doubleValue() default -4.0; |
| Float floatValue() default -5.0f; |
| Int intValue() default -6; |
| Long longValue() default -7L; |
| } |
| |
| public @interface ParameterArraysTestAnnotation { |
| boolean[] booleanArrayValue(); |
| byte[] byteArrayValue() default { }; |
| short[] shortArrayValue() default { }; |
| char[] charArrayValue() default { }; |
| double[] doubleArrayValue() default { }; |
| float[] floatArrayValue() default { }; |
| int[] intArrayValue() default { }; |
| long[] longArrayValue() default { }; |
| string[] stringArrayValue() default { }; |
| Class[] kClassArrayValue() default { }; |
| TestEnum[] enumArrayValue() default { }; |
| } |
| |
| public enum TestEnum { |
| NONE, VALUE1, VALUE2; |
| } |
| |
| public @interface InnerAnnotation { |
| String value() default "defaultValue"; |
| } |
| |
| public @interface OuterAnnotation { |
| InnerAnnotation innerAnnotation() default InnerAnnotation(); |
| } |
| |
| ///////////////////////////////////////////////////////// |
| // Tests |
| ///////////////////////////////////////////////////////// |
| |
| @Test |
| @Test |
| public class OnlyTestAnnotation {} |
| |
| @ParametersTestAnnotation( |
| booleanValue = true, |
| byteValue = 5, |
| shortValue = 202, |
| charValue = 'k', |
| doubleValue = 5.12, |
| floatValue = 123.3f, |
| intValue = 2, |
| longValue = 4L, |
| stringValue = "someValue", |
| kClassValue = java.lang.Throwable.class, |
| enumValue = TestEnum.VALUE1 |
| ) |
| @Test |
| public class ParametersTestAnnotationWithValuesTest {} |
| |
| @ParametersTestAnnotation( |
| booleanValue = true, |
| byteValue = 5, |
| shortValue = 202, |
| charValue = 'k', |
| doubleValue = 5, |
| floatValue = 123, |
| intValue = 2, |
| longValue = 4, |
| stringValue = "someValue", |
| kClassValue = java.lang.Throwable.class, |
| enumValue = TestEnum.VALUE1 |
| ) |
| @Test |
| public class ParametersTestAnnotationWithIntegerLiteralValuesTest {} |
| |
| @ParametersTestAnnotation |
| @ParametersTestAnnotation |
| @Test |
| public class ParametersTestAnnotationWithDefaultsTest {} |
| |
| @ParametersTestWithNegativeDefaultsAnnotation |
| @ParametersTestWithNegativeDefaultsAnnotation |
| @Test |
| public class ParametersTestWithNegativeDefaultsAnnotationTest {} |
| |
| @ParameterArraysTestAnnotation( |
| booleanArrayValue = {true, false}, |
| byteArrayValue = {-2, 4}, |
| shortArrayValue = {-1, 2, 3}, |
| charArrayValue = {'a', 'b', 'c'}, |
| doubleArrayValue = {1.1, 2.2, 3.3}, |
| floatArrayValue = {1.0f, 2.0f, 3.3f}, |
| intArrayValue = {1, 2, 4, 8, 16}, |
| longArrayValue = {1L, 2L, 4L, 8L, 16, 32L}, |
| stringArrayValue = {"first", "second", "third"}, |
| kClassArrayValue = {java.lang.Throwable.class, ParametersTestAnnotation.class}, |
| enumArrayValue = {TestEnum.VALUE1, TestEnum.VALUE2, TestEnum.VALUE1, TestEnum.VALUE2} |
| ) |
| @Test |
| public class ParameterArraysTestAnnotationWithDefaultTest {} |
| |
| @ParameterArraysTestAnnotation( |
| booleanArrayValue = true, |
| byteArrayValue = -2, |
| shortArrayValue = -1, |
| charArrayValue = 'a', |
| doubleArrayValue = 1.1, |
| floatArrayValue = 1.0f, |
| intArrayValue = 1, |
| longArrayValue = 1L, |
| stringArrayValue = "first", |
| kClassArrayValue = java.lang.Throwable.class, |
| enumArrayValue = TestEnum.VALUE1 |
| ) |
| @Test |
| public class ParameterArraysTestAnnotationWithSingleAsArrayTest {} |
| |
| @OuterAnnotation(innerAnnotation = @InnerAnnotation(value = "hello from the other side")) |
| @Test |
| public class AnnotationWithinAnAnnotationTest {} |
| |
| // FILE: Annotations.kt |