Commit 740033a0 authored by Jinseong Jeon's avatar Jinseong Jeon
Browse files

FIR/UAST: fix call kind of SAM constructor

parent bb75523b
Showing with 63 additions and 45 deletions
+63 -45
......@@ -161,7 +161,6 @@ interface UastResolveApiFixtureTestBase : UastPluginSelection {
TestCase.assertEquals(firstArgument, firstParameter)
}
fun checkResolveFromBaseJava(myFixture: JavaCodeInsightTestFixture) {
myFixture.addClass(
"""public class X {
......@@ -219,7 +218,6 @@ interface UastResolveApiFixtureTestBase : UastPluginSelection {
"""
)
val functionCall =
file.toUElement()!!.findElementByTextFromPsi<UElement>("main").getContainingUMethod()!!
.findElementByText<UElement>("foo").uastParent as KotlinUFunctionCallExpression
......@@ -258,7 +256,6 @@ interface UastResolveApiFixtureTestBase : UastPluginSelection {
""".trimIndent()
)
for (i in 1..3) {
myFixture.addFileToProject(
"pkg/mffacade$i.kt", """
......@@ -317,7 +314,6 @@ interface UastResolveApiFixtureTestBase : UastPluginSelection {
"""
)
val functionCall =
file.toUElement()!!.findElementByTextFromPsi<UElement>("main").getContainingUMethod()!!
.findElementByText<UElement>("MyClass").uastParent as KotlinUFunctionCallExpression
......@@ -838,4 +834,18 @@ interface UastResolveApiFixtureTestBase : UastPluginSelection {
TestCase.assertEquals("PsiType:String", uCallExpression.receiverType?.toString())
}
fun checkCallKindOfSamConstructor(myFixture: JavaCodeInsightTestFixture) {
myFixture.configureByText(
"main.kt", """
val r = java.lang.Runnable { }
""".trimIndent()
)
val uFile = myFixture.file.toUElement()!!
val uCallExpression = uFile.findElementByTextFromPsi<UCallExpression>("Runnable", strict = false)
.orFail("cant convert to UCallExpression")
TestCase.assertEquals("Runnable", uCallExpression.methodName)
TestCase.assertEquals(UastCallKind.CONSTRUCTOR_CALL, uCallExpression.kind)
}
}
......@@ -225,6 +225,7 @@ interface FirKotlinUastResolveProviderService : BaseKotlinUastResolveProviderSer
ktCallElement.resolveCall().singleFunctionCallOrNull()?.symbol ?: return UastCallKind.METHOD_CALL
val fqName = resolvedFunctionLikeSymbol.callableIdIfNonLocal?.asSingleFqName()
return when {
resolvedFunctionLikeSymbol is KtSamConstructorSymbol ||
resolvedFunctionLikeSymbol is KtConstructorSymbol -> UastCallKind.CONSTRUCTOR_CALL
fqName != null && isAnnotationArgumentArrayInitializer(ktCallElement, fqName) -> UastCallKind.NESTED_ARRAY_INITIALIZER
else -> UastCallKind.METHOD_CALL
......
......@@ -173,4 +173,8 @@ class FirUastResolveApiFixtureTest : KotlinLightCodeInsightFixtureTestCase(), Ua
fun testSubstitutedReceiverType() {
doCheck("SubstitutedReceiverType", ::checkSubstitutedReceiverType)
}
fun testCallKindOfSamConstructor() {
doCheck("CallKindOfSamConstructor", ::checkCallKindOfSamConstructor)
}
}
......@@ -12,7 +12,7 @@ foo -> UMethod (name = foo)
runnable -> USimpleNameReferenceExpression (identifier = runnable)
run -> UCallExpression (kind = UastCallKind(name='method_call'), argCount = 0))
runnable2 -> ULocalVariable (name = runnable2)
Runnable -> UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))
Runnable -> UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1))
println -> UCallExpression (kind = UastCallKind(name='method_call'), argCount = 0))
runnable2 -> USimpleNameReferenceExpression (identifier = runnable2)
run -> UCallExpression (kind = UastCallKind(name='method_call'), argCount = 0))
......
......@@ -12,7 +12,7 @@ Runnable -> USimpleNameReferenceExpression (identifier = Runnable) from KtNameRe
run -> UCallExpression (kind = UastCallKind(name='method_call'), argCount = 0)) from KtDotQualifiedExpression
runnable -> USimpleNameReferenceExpression (identifier = runnable) from KtNameReferenceExpression
run -> UCallExpression (kind = UastCallKind(name='method_call'), argCount = 0)) from KtNameReferenceExpression
Runnable -> UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) from KtNameReferenceExpression
Runnable -> UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1)) from KtNameReferenceExpression
println -> UCallExpression (kind = UastCallKind(name='method_call'), argCount = 0)) from KtNameReferenceExpression
run -> UCallExpression (kind = UastCallKind(name='method_call'), argCount = 0)) from KtDotQualifiedExpression
runnable2 -> USimpleNameReferenceExpression (identifier = runnable2) from KtNameReferenceExpression
......
......@@ -32,7 +32,7 @@ Runnable -> USimpleNameReferenceExpression (identifier = Runnable)
baz -> UField (name = baz)
java -> USimpleNameReferenceExpression (identifier = java)
lang -> USimpleNameReferenceExpression (identifier = lang)
Runnable -> UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))
Runnable -> UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1))
runRunnable -> UMethod (name = runRunnable)
r -> UParameter (name = r)
java -> USimpleNameReferenceExpression (identifier = java)
......@@ -46,13 +46,13 @@ test1 -> UMethod (name = test1)
test2 -> UMethod (name = test2)
thread2 -> ULocalVariable (name = thread2)
Thread -> UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1))
Runnable -> UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))
Runnable -> UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1))
println -> UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))
test3 -> UMethod (name = test3)
ambiguousSamAcceptor -> UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))
Supplier -> UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))
Supplier -> UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1))
ambiguousSamAcceptor -> UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))
Callable -> UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))
Callable -> UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1))
ambiguousSamAcceptor -> UMethod (name = ambiguousSamAcceptor)
s -> UParameter (name = s)
Supplier -> USimpleNameReferenceExpression (identifier = Supplier)
......
......@@ -33,11 +33,11 @@ java -> USimpleNameReferenceExpression (identifier = java) from KtNameReferenceE
lang -> USimpleNameReferenceExpression (identifier = lang) from KtNameReferenceExpression
Runnable -> USimpleNameReferenceExpression (identifier = Runnable) from KtNameReferenceExpression
runRunnable -> UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) from KtNameReferenceExpression
Runnable -> UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) from KtDotQualifiedExpression
Runnable -> UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1)) from KtDotQualifiedExpression
lang -> USimpleNameReferenceExpression (identifier = lang) from KtDotQualifiedExpression
java -> USimpleNameReferenceExpression (identifier = java) from KtNameReferenceExpression
lang -> USimpleNameReferenceExpression (identifier = lang) from KtNameReferenceExpression
Runnable -> UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) from KtNameReferenceExpression
Runnable -> UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1)) from KtNameReferenceExpression
java -> USimpleNameReferenceExpression (identifier = java) from KtNameReferenceExpression
lang -> USimpleNameReferenceExpression (identifier = lang) from KtNameReferenceExpression
Runnable -> USimpleNameReferenceExpression (identifier = Runnable) from KtNameReferenceExpression
......@@ -45,12 +45,12 @@ r -> UCallExpression (kind = UastCallKind(name='method_call'), argCount = 0)) fr
Thread -> UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1)) from KtNameReferenceExpression
println -> UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) from KtNameReferenceExpression
Thread -> UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1)) from KtNameReferenceExpression
Runnable -> UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) from KtNameReferenceExpression
Runnable -> UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1)) from KtNameReferenceExpression
println -> UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) from KtNameReferenceExpression
ambiguousSamAcceptor -> UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) from KtNameReferenceExpression
Supplier -> UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) from KtNameReferenceExpression
Supplier -> UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1)) from KtNameReferenceExpression
ambiguousSamAcceptor -> UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) from KtNameReferenceExpression
Callable -> UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) from KtNameReferenceExpression
Callable -> UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1)) from KtNameReferenceExpression
Supplier -> USimpleNameReferenceExpression (identifier = Supplier) from KtNameReferenceExpression
String -> USimpleNameReferenceExpression (identifier = String) from KtNameReferenceExpression
String -> USimpleNameReferenceExpression (identifier = String) from KtNameReferenceExpression
......
......@@ -18,7 +18,7 @@ UFile (package = )
USimpleNameReferenceExpression (identifier = run, resolvesTo = null)
UDeclarationsExpression
ULocalVariable (name = runnable2)
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1))
UIdentifier (Identifier (Runnable))
USimpleNameReferenceExpression (identifier = Runnable, resolvesTo = PsiClass: Runnable)
ULambdaExpression
......
......@@ -18,7 +18,7 @@ UFile (package = )
UQualifiedReferenceExpression
USimpleNameReferenceExpression (identifier = java)
USimpleNameReferenceExpression (identifier = lang)
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1))
UIdentifier (Identifier (Runnable))
USimpleNameReferenceExpression (identifier = Runnable, resolvesTo = PsiClass: Runnable)
ULambdaExpression
......@@ -77,7 +77,7 @@ UFile (package = )
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1))
UIdentifier (Identifier (Thread))
USimpleNameReferenceExpression (identifier = <init>, resolvesTo = PsiClass: Thread)
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1))
UIdentifier (Identifier (Runnable))
USimpleNameReferenceExpression (identifier = Runnable, resolvesTo = PsiClass: Runnable)
ULambdaExpression
......@@ -91,7 +91,7 @@ UFile (package = )
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))
UIdentifier (Identifier (ambiguousSamAcceptor))
USimpleNameReferenceExpression (identifier = ambiguousSamAcceptor, resolvesTo = null)
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1))
UIdentifier (Identifier (Supplier))
USimpleNameReferenceExpression (identifier = Supplier, resolvesTo = PsiClass: Supplier)
ULambdaExpression
......@@ -101,7 +101,7 @@ UFile (package = )
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))
UIdentifier (Identifier (ambiguousSamAcceptor))
USimpleNameReferenceExpression (identifier = ambiguousSamAcceptor, resolvesTo = null)
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1))
UIdentifier (Identifier (Callable))
USimpleNameReferenceExpression (identifier = Callable, resolvesTo = PsiClass: Callable)
ULambdaExpression
......
......@@ -13,7 +13,7 @@ UQualifiedReferenceExpression -> USimpleNameReferenceExpression (identifier = In
UBlockExpression -> UQualifiedReferenceExpression -> Kotlin_Light_Method: run
UQualifiedReferenceExpression -> USimpleNameReferenceExpression (identifier = runnable) -> Kotlin_Light_Variable: runnable
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 0))(resolves to Kotlin_Light_Method) -> USimpleNameReferenceExpression (identifier = run) -> Kotlin_Light_Method: run
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))(resolves to null) -> USimpleNameReferenceExpression (identifier = Runnable) -> Decompiled_Class: Runnable
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1))(resolves to null) -> USimpleNameReferenceExpression (identifier = Runnable) -> Decompiled_Class: Runnable
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 0))(resolves to Decompiled_Method) -> USimpleNameReferenceExpression (identifier = println) -> Decompiled_Method: println
UBlockExpression -> UQualifiedReferenceExpression -> Decompiled_Method: run
UQualifiedReferenceExpression -> USimpleNameReferenceExpression (identifier = runnable2) -> Kotlin_Light_Variable: runnable2
......
......@@ -39,7 +39,7 @@ UField (name = baz) -> UQualifiedReferenceExpression -> Decompiled_Class: Runnab
UQualifiedReferenceExpression -> UQualifiedReferenceExpression -> PsiPackage:java.lang: lang
UQualifiedReferenceExpression -> USimpleNameReferenceExpression (identifier = java) -> PsiPackage:java: java
UQualifiedReferenceExpression -> USimpleNameReferenceExpression (identifier = lang) -> PsiPackage:java.lang: lang
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))(resolves to null) -> USimpleNameReferenceExpression (identifier = Runnable) -> Decompiled_Class: Runnable
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1))(resolves to null) -> USimpleNameReferenceExpression (identifier = Runnable) -> Decompiled_Class: Runnable
UTypeReferenceExpression (name = java.lang.Runnable) -> USimpleNameReferenceExpression (identifier = java) -> PsiPackage:java: java
UTypeReferenceExpression (name = java.lang.Runnable) -> USimpleNameReferenceExpression (identifier = lang) -> PsiPackage:java.lang: lang
UTypeReferenceExpression (name = java.lang.Runnable) -> USimpleNameReferenceExpression (identifier = Runnable) -> Decompiled_Class: Runnable
......@@ -47,12 +47,12 @@ UCallExpression (kind = UastCallKind(name='method_call'), argCount = 0))(resolve
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1))(resolves to Decompiled_Method) -> USimpleNameReferenceExpression (identifier = Thread) -> Decompiled_Method: Thread
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))(resolves to Decompiled_Method) -> USimpleNameReferenceExpression (identifier = println) -> Decompiled_Method: println
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1))(resolves to Decompiled_Method) -> USimpleNameReferenceExpression (identifier = Thread) -> Decompiled_Method: Thread
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))(resolves to null) -> USimpleNameReferenceExpression (identifier = Runnable) -> Decompiled_Class: Runnable
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1))(resolves to null) -> USimpleNameReferenceExpression (identifier = Runnable) -> Decompiled_Class: Runnable
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))(resolves to Decompiled_Method) -> USimpleNameReferenceExpression (identifier = println) -> Decompiled_Method: println
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))(resolves to Kotlin_Light_Method) -> USimpleNameReferenceExpression (identifier = ambiguousSamAcceptor) -> Kotlin_Light_Method: ambiguousSamAcceptor
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))(resolves to null) -> USimpleNameReferenceExpression (identifier = Supplier) -> Decompiled_Class: Supplier
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1))(resolves to null) -> USimpleNameReferenceExpression (identifier = Supplier) -> Decompiled_Class: Supplier
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))(resolves to Kotlin_Light_Method) -> USimpleNameReferenceExpression (identifier = ambiguousSamAcceptor) -> Kotlin_Light_Method: ambiguousSamAcceptor
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))(resolves to null) -> USimpleNameReferenceExpression (identifier = Callable) -> Decompiled_Class: Callable
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1))(resolves to null) -> USimpleNameReferenceExpression (identifier = Callable) -> Decompiled_Class: Callable
UTypeReferenceExpression (name = java.util.function.Supplier<java.lang.String>) -> USimpleNameReferenceExpression (identifier = Supplier) -> Decompiled_Class: Supplier
UTypeReferenceExpression (name = java.lang.String) -> USimpleNameReferenceExpression (identifier = String) -> Decompiled_Class: String
UTypeReferenceExpression (name = java.lang.String) -> USimpleNameReferenceExpression (identifier = String) -> Decompiled_Class: String
......
......@@ -39,7 +39,7 @@ UField (name = baz) -> UQualifiedReferenceExpression -> null: null
UQualifiedReferenceExpression -> UQualifiedReferenceExpression -> PsiPackage:java.lang: lang
UQualifiedReferenceExpression -> USimpleNameReferenceExpression (identifier = java) -> PsiPackage:java: java
UQualifiedReferenceExpression -> USimpleNameReferenceExpression (identifier = lang) -> PsiPackage:java.lang: lang
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))(resolves to null) -> USimpleNameReferenceExpression (identifier = Runnable) -> Decompiled_Class: Runnable
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1))(resolves to null) -> USimpleNameReferenceExpression (identifier = Runnable) -> Decompiled_Class: Runnable
UTypeReferenceExpression (name = java.lang.Runnable) -> USimpleNameReferenceExpression (identifier = java) -> PsiPackage:java: java
UTypeReferenceExpression (name = java.lang.Runnable) -> USimpleNameReferenceExpression (identifier = lang) -> PsiPackage:java.lang: lang
UTypeReferenceExpression (name = java.lang.Runnable) -> USimpleNameReferenceExpression (identifier = Runnable) -> Decompiled_Class: Runnable
......@@ -47,12 +47,12 @@ UCallExpression (kind = UastCallKind(name='method_call'), argCount = 0))(resolve
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1))(resolves to Decompiled_Method) -> USimpleNameReferenceExpression (identifier = Thread) -> Decompiled_Method: Thread
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))(resolves to Decompiled_Method) -> USimpleNameReferenceExpression (identifier = println) -> Decompiled_Method: println
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1))(resolves to Decompiled_Method) -> USimpleNameReferenceExpression (identifier = Thread) -> Decompiled_Method: Thread
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))(resolves to null) -> USimpleNameReferenceExpression (identifier = Runnable) -> Decompiled_Class: Runnable
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1))(resolves to null) -> USimpleNameReferenceExpression (identifier = Runnable) -> Decompiled_Class: Runnable
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))(resolves to Decompiled_Method) -> USimpleNameReferenceExpression (identifier = println) -> Decompiled_Method: println
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))(resolves to Kotlin_Light_Method) -> USimpleNameReferenceExpression (identifier = ambiguousSamAcceptor) -> Kotlin_Light_Method: ambiguousSamAcceptor
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))(resolves to null) -> USimpleNameReferenceExpression (identifier = Supplier) -> Decompiled_Class: Supplier
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1))(resolves to null) -> USimpleNameReferenceExpression (identifier = Supplier) -> Decompiled_Class: Supplier
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))(resolves to Kotlin_Light_Method) -> USimpleNameReferenceExpression (identifier = ambiguousSamAcceptor) -> Kotlin_Light_Method: ambiguousSamAcceptor
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))(resolves to null) -> USimpleNameReferenceExpression (identifier = Callable) -> Decompiled_Class: Callable
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1))(resolves to null) -> USimpleNameReferenceExpression (identifier = Callable) -> Decompiled_Class: Callable
UTypeReferenceExpression (name = java.util.function.Supplier<java.lang.String>) -> USimpleNameReferenceExpression (identifier = Supplier) -> Decompiled_Class: Supplier
UTypeReferenceExpression (name = java.lang.String) -> USimpleNameReferenceExpression (identifier = String) -> Decompiled_Class: String
UTypeReferenceExpression (name = java.lang.String) -> USimpleNameReferenceExpression (identifier = String) -> Decompiled_Class: String
......
......@@ -18,7 +18,7 @@ UFile (package = ) [import java.io.Closeable...]
USimpleNameReferenceExpression (identifier = run, resolvesTo = null) [run] : PsiType:Unit
UDeclarationsExpression [var runnable2: java.lang.Runnable = Runnable({ ...})]
ULocalVariable (name = runnable2) [var runnable2: java.lang.Runnable = Runnable({ ...})]
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) [Runnable({ ...})] : PsiType:Runnable
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1)) [Runnable({ ...})] : PsiType:Runnable
UIdentifier (Identifier (Runnable)) [UIdentifier (Identifier (Runnable))]
USimpleNameReferenceExpression (identifier = Runnable, resolvesTo = PsiClass: Runnable) [Runnable] : PsiType:Runnable
ULambdaExpression [{ ...}] : PsiType:Function0<? extends Unit>
......
......@@ -18,7 +18,7 @@ UFile (package = ) [import java.io.Closeable...]
USimpleNameReferenceExpression (identifier = run, resolvesTo = null) [run] : PsiType:Unit
UDeclarationsExpression [var runnable2: java.lang.Runnable = Runnable({ ...})]
ULocalVariable (name = runnable2) [var runnable2: java.lang.Runnable = Runnable({ ...})]
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) [Runnable({ ...})] : PsiType:Runnable
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1)) [Runnable({ ...})] : PsiType:Runnable
UIdentifier (Identifier (Runnable)) [UIdentifier (Identifier (Runnable))]
USimpleNameReferenceExpression (identifier = Runnable, resolvesTo = PsiClass: Runnable) [Runnable] : PsiType:Runnable
ULambdaExpression [{ ...}] : PsiType:Function0<? extends Unit>
......
......@@ -18,7 +18,7 @@ UFile (package = ) [import java.lang.Thread...]
UQualifiedReferenceExpression [java.lang]
USimpleNameReferenceExpression (identifier = java) [java]
USimpleNameReferenceExpression (identifier = lang) [lang]
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) [Runnable({ ...})] : PsiType:Runnable
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1)) [Runnable({ ...})] : PsiType:Runnable
UIdentifier (Identifier (Runnable)) [UIdentifier (Identifier (Runnable))]
USimpleNameReferenceExpression (identifier = Runnable, resolvesTo = PsiClass: Runnable) [Runnable] : PsiType:Runnable
ULambdaExpression [{ ...}] : PsiType:Function0<? extends Unit>
......@@ -77,7 +77,7 @@ UFile (package = ) [import java.lang.Thread...]
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1)) [<init>(Runnable({ ...}))] : PsiType:Thread
UIdentifier (Identifier (Thread)) [UIdentifier (Identifier (Thread))]
USimpleNameReferenceExpression (identifier = <init>, resolvesTo = PsiClass: Thread) [<init>] : PsiType:Thread
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) [Runnable({ ...})] : PsiType:Runnable
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1)) [Runnable({ ...})] : PsiType:Runnable
UIdentifier (Identifier (Runnable)) [UIdentifier (Identifier (Runnable))]
USimpleNameReferenceExpression (identifier = Runnable, resolvesTo = PsiClass: Runnable) [Runnable] : PsiType:Runnable
ULambdaExpression [{ ...}] : PsiType:Function0<? extends Unit>
......@@ -91,7 +91,7 @@ UFile (package = ) [import java.lang.Thread...]
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) [ambiguousSamAcceptor(Supplier({ ...}))] : PsiType:String
UIdentifier (Identifier (ambiguousSamAcceptor)) [UIdentifier (Identifier (ambiguousSamAcceptor))]
USimpleNameReferenceExpression (identifier = ambiguousSamAcceptor, resolvesTo = null) [ambiguousSamAcceptor] : PsiType:String
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) [Supplier({ ...})] : PsiType:Supplier<String>
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1)) [Supplier({ ...})] : PsiType:Supplier<String>
UIdentifier (Identifier (Supplier)) [UIdentifier (Identifier (Supplier))]
USimpleNameReferenceExpression (identifier = Supplier, resolvesTo = PsiClass: Supplier) [Supplier] : PsiType:Supplier<String>
ULambdaExpression [{ ...}] : PsiType:Function0<? extends String>
......@@ -101,7 +101,7 @@ UFile (package = ) [import java.lang.Thread...]
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) [ambiguousSamAcceptor(Callable({ ...}))] : PsiType:String
UIdentifier (Identifier (ambiguousSamAcceptor)) [UIdentifier (Identifier (ambiguousSamAcceptor))]
USimpleNameReferenceExpression (identifier = ambiguousSamAcceptor, resolvesTo = null) [ambiguousSamAcceptor] : PsiType:String
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) [Callable({ ...})] : PsiType:Callable<String>
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1)) [Callable({ ...})] : PsiType:Callable<String>
UIdentifier (Identifier (Callable)) [UIdentifier (Identifier (Callable))]
USimpleNameReferenceExpression (identifier = Callable, resolvesTo = PsiClass: Callable) [Callable] : PsiType:Callable<String>
ULambdaExpression [{ ...}] : PsiType:Function0<? extends String>
......
......@@ -18,7 +18,7 @@ UFile (package = ) [import java.lang.Thread...]
UQualifiedReferenceExpression [java.lang] : PsiType:Unit
USimpleNameReferenceExpression (identifier = java) [java] : PsiType:Unit
USimpleNameReferenceExpression (identifier = lang) [lang] : PsiType:Unit
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) [Runnable({ ...})] : PsiType:Runnable
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1)) [Runnable({ ...})] : PsiType:Runnable
UIdentifier (Identifier (Runnable)) [UIdentifier (Identifier (Runnable))]
USimpleNameReferenceExpression (identifier = Runnable, resolvesTo = PsiClass: Runnable) [Runnable] : PsiType:Runnable
ULambdaExpression [{ ...}] : PsiType:Function0<? extends Unit>
......@@ -77,7 +77,7 @@ UFile (package = ) [import java.lang.Thread...]
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1)) [<init>(Runnable({ ...}))] : PsiType:Thread
UIdentifier (Identifier (Thread)) [UIdentifier (Identifier (Thread))]
USimpleNameReferenceExpression (identifier = <init>, resolvesTo = PsiClass: Thread) [<init>] : PsiType:Thread
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) [Runnable({ ...})] : PsiType:Runnable
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1)) [Runnable({ ...})] : PsiType:Runnable
UIdentifier (Identifier (Runnable)) [UIdentifier (Identifier (Runnable))]
USimpleNameReferenceExpression (identifier = Runnable, resolvesTo = PsiClass: Runnable) [Runnable] : PsiType:Runnable
ULambdaExpression [{ ...}] : PsiType:Function0<? extends Unit>
......@@ -91,7 +91,7 @@ UFile (package = ) [import java.lang.Thread...]
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) [ambiguousSamAcceptor(Supplier({ ...}))] : PsiType:String
UIdentifier (Identifier (ambiguousSamAcceptor)) [UIdentifier (Identifier (ambiguousSamAcceptor))]
USimpleNameReferenceExpression (identifier = ambiguousSamAcceptor, resolvesTo = null) [ambiguousSamAcceptor] : PsiType:String
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) [Supplier({ ...})] : PsiType:Supplier<String>
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1)) [Supplier({ ...})] : PsiType:Supplier<String>
UIdentifier (Identifier (Supplier)) [UIdentifier (Identifier (Supplier))]
USimpleNameReferenceExpression (identifier = Supplier, resolvesTo = PsiClass: Supplier) [Supplier] : PsiType:Supplier<String>
ULambdaExpression [{ ...}] : PsiType:Function0<? extends String>
......@@ -101,7 +101,7 @@ UFile (package = ) [import java.lang.Thread...]
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) [ambiguousSamAcceptor(Callable({ ...}))] : PsiType:String
UIdentifier (Identifier (ambiguousSamAcceptor)) [UIdentifier (Identifier (ambiguousSamAcceptor))]
USimpleNameReferenceExpression (identifier = ambiguousSamAcceptor, resolvesTo = null) [ambiguousSamAcceptor] : PsiType:String
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) [Callable({ ...})] : PsiType:Callable<String>
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1)) [Callable({ ...})] : PsiType:Callable<String>
UIdentifier (Identifier (Callable)) [UIdentifier (Identifier (Callable))]
USimpleNameReferenceExpression (identifier = Callable, resolvesTo = PsiClass: Callable) [Callable] : PsiType:Callable<String>
ULambdaExpression [{ ...}] : PsiType:Function0<? extends String>
......
......@@ -18,7 +18,7 @@ UFile (package = ) [import java.io.Closeable...]
USimpleNameReferenceExpression (identifier = run, resolvesTo = null) [run] = external run()()
UDeclarationsExpression [var runnable2: java.lang.Runnable = Runnable({ ...})] = Undetermined
ULocalVariable (name = runnable2) [var runnable2: java.lang.Runnable = Runnable({ ...})]
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) [Runnable({ ...})] = external Runnable({
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1)) [Runnable({ ...})] = external Runnable({
println()
})(Undetermined)
UIdentifier (Identifier (Runnable)) [UIdentifier (Identifier (Runnable))]
......
......@@ -18,7 +18,7 @@ UFile (package = ) [import java.io.Closeable...]
USimpleNameReferenceExpression (identifier = run, resolvesTo = null) [run] = external run()()
UDeclarationsExpression [var runnable2: java.lang.Runnable = Runnable({ ...})] = Undetermined
ULocalVariable (name = runnable2) [var runnable2: java.lang.Runnable = Runnable({ ...})]
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) [Runnable({ ...})] = external Runnable({
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1)) [Runnable({ ...})] = external Runnable({
println()
})(Undetermined)
UIdentifier (Identifier (Runnable)) [UIdentifier (Identifier (Runnable))]
......
......@@ -20,7 +20,7 @@ UFile (package = ) [import java.lang.Thread...]
UQualifiedReferenceExpression [java.lang] = external lang()
USimpleNameReferenceExpression (identifier = java) [java] = external java()
USimpleNameReferenceExpression (identifier = lang) [lang] = external lang()
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) [Runnable({ ...})] = external Runnable({
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1)) [Runnable({ ...})] = external Runnable({
})(Undetermined)
UIdentifier (Identifier (Runnable)) [UIdentifier (Identifier (Runnable))]
......@@ -99,7 +99,7 @@ UFile (package = ) [import java.lang.Thread...]
}))(external Runnable({
println("hello2")
})(Undetermined))
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) [Runnable({ ...})] = external Runnable({
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1)) [Runnable({ ...})] = external Runnable({
println("hello2")
})(Undetermined)
UIdentifier (Identifier (Runnable)) [UIdentifier (Identifier (Runnable))]
......@@ -129,7 +129,7 @@ UFile (package = ) [import java.lang.Thread...]
}))(external Supplier({
return "Supplier"
})(Undetermined))
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) [Supplier({ ...})] = external Supplier({
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1)) [Supplier({ ...})] = external Supplier({
return "Supplier"
})(Undetermined)
UIdentifier (Identifier (Supplier)) [UIdentifier (Identifier (Supplier))]
......@@ -151,7 +151,7 @@ UFile (package = ) [import java.lang.Thread...]
}))(external Callable({
return "Callable"
})(Undetermined))
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) [Callable({ ...})] = external Callable({
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1)) [Callable({ ...})] = external Callable({
return "Callable"
})(Undetermined)
UIdentifier (Identifier (Callable)) [UIdentifier (Identifier (Callable))]
......
......@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameUnsafe
import org.jetbrains.kotlin.resolve.lazy.ForceResolveUtil
import org.jetbrains.kotlin.resolve.sam.SamConstructorDescriptor
import org.jetbrains.kotlin.resolve.source.getPsi
import org.jetbrains.kotlin.synthetic.SyntheticJavaPropertyDescriptor
import org.jetbrains.kotlin.types.*
......@@ -209,6 +210,8 @@ interface KotlinUastResolveProviderService : BaseKotlinUastResolveProviderServic
val resolvedCall = ktCallElement.getResolvedCall(ktCallElement.analyze()) ?: return UastCallKind.METHOD_CALL
val fqName = DescriptorUtils.getFqNameSafe(resolvedCall.candidateDescriptor)
return when {
resolvedCall.resultingDescriptor is SamConstructorDescriptor ||
resolvedCall.resultingDescriptor.original is SamConstructorDescriptor ||
resolvedCall.resultingDescriptor is ConstructorDescriptor -> UastCallKind.CONSTRUCTOR_CALL
isAnnotationArgumentArrayInitializer(ktCallElement, fqName) -> UastCallKind.NESTED_ARRAY_INITIALIZER
else -> UastCallKind.METHOD_CALL
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment