From 4b299afe9b7c323c3a72030a977c50658cad9f8a Mon Sep 17 00:00:00 2001 From: Jiaxiang Chen Date: Thu, 19 Jan 2023 11:12:13 -0800 Subject: Support Definitely non null type language feature. * Add api for definitely non null type element. * Implement definitely non null type element for FE1.0. fixes #1127 (cherry picked from commit c048c6b03374e86379fed40d47be6af5303cb668) --- .../google/devtools/ksp/processor/ReferenceElementProcessor.kt | 10 ++++++++++ test-utils/testData/api/referenceElement.kt | 5 +++++ 2 files changed, 15 insertions(+) (limited to 'test-utils') diff --git a/test-utils/src/main/kotlin/com/google/devtools/ksp/processor/ReferenceElementProcessor.kt b/test-utils/src/main/kotlin/com/google/devtools/ksp/processor/ReferenceElementProcessor.kt index 46a4ea47..c0843f36 100644 --- a/test-utils/src/main/kotlin/com/google/devtools/ksp/processor/ReferenceElementProcessor.kt +++ b/test-utils/src/main/kotlin/com/google/devtools/ksp/processor/ReferenceElementProcessor.kt @@ -60,6 +60,16 @@ open class ReferenceElementProcessor : AbstractTestProcessor() { ) } + val defNonNullReferences = + references.filter { it.element is KSDefNonNullReference && it.origin == Origin.KOTLIN } + .sortedBy { it.toString() } + + defNonNullReferences.forEach { + results.add( + "KSDefNonNullReferenceImpl: Enclosed type of ${(it.element as KSDefNonNullReference).enclosedType}" + ) + } + val javaReferences = references.filter { it.element is KSClassifierReference && it.origin == Origin.JAVA } .sortedBy(::refName) for (i in javaReferences) { diff --git a/test-utils/testData/api/referenceElement.kt b/test-utils/testData/api/referenceElement.kt index 4f018fb1..513ad429 100644 --- a/test-utils/testData/api/referenceElement.kt +++ b/test-utils/testData/api/referenceElement.kt @@ -26,6 +26,7 @@ // KSClassifierReferenceDescriptorImpl: Qualifier of String is null // KSClassifierReferenceDescriptorImpl: Qualifier of Y is X // KSClassifierReferenceDescriptorImpl: Qualifier of Z is X +// KSDefNonNullReferenceImpl: Enclosed type of T // KSClassifierReferenceJavaImpl: Qualifier of H is J // KSClassifierReferenceJavaImpl: Qualifier of I is J // KSClassifierReferenceJavaImpl: Qualifier of Object is null @@ -52,6 +53,10 @@ class A { inner class C } +class DefNonNull { + val u: T & Any +} + val x: A.B = A.B() val y: A.C = A().C() -- cgit v1.2.3