diff options
author | Treehugger Robot <treehugger-gerrit@google.com> | 2021-08-20 12:06:25 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2021-08-20 12:06:25 +0000 |
commit | 7c184e12cc272bee8de2ff0f1f2b71c9e458a314 (patch) | |
tree | 82f8cb29c80dc85af2409c3e1f7d1ed38348a60a | |
parent | d03b4fb747dd302445b78e422ea9ac9a664f6827 (diff) | |
parent | fa49dd270c43ab697be3f1adadc7ac1f6f89df7f (diff) | |
download | support-7c184e12cc272bee8de2ff0f1f2b71c9e458a314.tar.gz |
Merge "Remove asMemberOf workaround in XProcessing" into androidx-main
-rw-r--r-- | room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KSAsMemberOf.kt | 41 |
1 files changed, 2 insertions, 39 deletions
diff --git a/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KSAsMemberOf.kt b/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KSAsMemberOf.kt index 1fd802b5920..53cd24a7cb6 100644 --- a/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KSAsMemberOf.kt +++ b/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KSAsMemberOf.kt @@ -16,13 +16,10 @@ package androidx.room.compiler.processing.ksp -import com.google.devtools.ksp.symbol.KSFunction import com.google.devtools.ksp.symbol.KSFunctionDeclaration import com.google.devtools.ksp.symbol.KSPropertyDeclaration import com.google.devtools.ksp.symbol.KSType -import com.google.devtools.ksp.symbol.KSTypeParameter import com.google.devtools.ksp.symbol.KSValueParameter -import java.lang.UnsupportedOperationException /** * Returns the type of a property as if it is member of the given [ksType]. @@ -67,7 +64,7 @@ internal fun KSValueParameter.typeAsMemberOf( if (ksType == null) { return resolved } - val asMember = functionDeclaration.safeAsMemberOf( + val asMember = functionDeclaration.asMemberOf( containing = ksType ) // TODO b/173224718 @@ -89,42 +86,8 @@ internal fun KSFunctionDeclaration.returnTypeAsMemberOf( // object resolved } - else -> this.safeAsMemberOf( + else -> this.asMemberOf( containing = ksType ).returnType } ?: error("cannot find return type for $this") } - -/** - * Runs asMemberOf while working around a KSP bug where if a java method overrides a property, - * calling as member of fails it. - */ -private fun KSFunctionDeclaration.safeAsMemberOf( - containing: KSType -): KSFunction { - return try { - asMemberOf(containing) - } catch (unsupported: UnsupportedOperationException) { - SyntheticKSFunction(this) - } -} - -/** - * Workaround for https://github.com/google/ksp/issues/462 - */ -private class SyntheticKSFunction( - val declaration: KSFunctionDeclaration -) : KSFunction { - override val extensionReceiverType: KSType? - get() = declaration.extensionReceiver?.resolve() - override val isError: Boolean - get() = false - override val parameterTypes: List<KSType?> - get() = declaration.parameters.map { param -> - param.type.resolve() - } - override val returnType: KSType? - get() = declaration.returnType?.resolve() - override val typeParameters: List<KSTypeParameter> - get() = declaration.typeParameters -}
\ No newline at end of file |