diff options
Diffstat (limited to 'src/main/kotlin/com/replaymod/gradle/remap/PsiUtils.kt')
-rw-r--r-- | src/main/kotlin/com/replaymod/gradle/remap/PsiUtils.kt | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/main/kotlin/com/replaymod/gradle/remap/PsiUtils.kt b/src/main/kotlin/com/replaymod/gradle/remap/PsiUtils.kt index 63f0e76..936ab89 100644 --- a/src/main/kotlin/com/replaymod/gradle/remap/PsiUtils.kt +++ b/src/main/kotlin/com/replaymod/gradle/remap/PsiUtils.kt @@ -7,6 +7,7 @@ import org.cadixdev.bombe.type.ObjectType import org.cadixdev.bombe.type.Type import org.cadixdev.bombe.type.VoidType import org.cadixdev.bombe.type.signature.MethodSignature +import org.jetbrains.kotlin.com.intellij.openapi.util.text.StringUtil import org.jetbrains.kotlin.com.intellij.psi.* import org.jetbrains.kotlin.com.intellij.psi.util.PsiTreeUtil import org.jetbrains.kotlin.com.intellij.psi.util.TypeConversionUtil @@ -18,6 +19,19 @@ internal val PsiClass.dollarQualifiedName: String? get() { return "$parentName$$selfName" } +internal val PsiNameValuePair.resolvedLiteralValue: Pair<PsiLiteralExpression, String>? get () { + var value: PsiElement? = value + while (value is PsiReferenceExpression) { + val resolved = value.resolve() + value = when (resolved) { + is PsiField -> resolved.initializer + else -> resolved + } + } + val literal = value as? PsiLiteralExpression ?: return null + return Pair(literal, StringUtil.unquoteString(literal.text)) +} + internal object PsiUtils { fun getSignature(method: PsiMethod): MethodSignature = MethodSignature(method.name, getDescriptor(method)) |