Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
小 白蛋
Intellij Community
Commits
740033a0
Commit
740033a0
authored
2 years ago
by
Jinseong Jeon
Browse files
Options
Download
Email Patches
Plain Diff
FIR/UAST: fix call kind of SAM constructor
parent
bb75523b
Changes
25
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
plugins/kotlin/uast/uast-kotlin-base/test/org/jetbrains/uast/test/common/kotlin/UastResolveApiFixtureTestBase.kt
+14
-4
.../uast/test/common/kotlin/UastResolveApiFixtureTestBase.kt
plugins/kotlin/uast/uast-kotlin-fir/src/org/jetbrains/uast/kotlin/FirKotlinUastResolveProviderService.kt
+1
-0
...brains/uast/kotlin/FirKotlinUastResolveProviderService.kt
plugins/kotlin/uast/uast-kotlin-fir/test/org/jetbrains/kotlin/idea/fir/uast/FirUastResolveApiFixtureTest.kt
+4
-0
...ains/kotlin/idea/fir/uast/FirUastResolveApiFixtureTest.kt
plugins/kotlin/uast/uast-kotlin-fir/testData/legacyIdentifiers/Anonymous.identifiers.txt
+1
-1
...-fir/testData/legacyIdentifiers/Anonymous.identifiers.txt
plugins/kotlin/uast/uast-kotlin-fir/testData/legacyIdentifiers/Anonymous.refNames.txt
+1
-1
...lin-fir/testData/legacyIdentifiers/Anonymous.refNames.txt
plugins/kotlin/uast/uast-kotlin-fir/testData/legacyIdentifiers/SAM.identifiers.txt
+4
-4
...kotlin-fir/testData/legacyIdentifiers/SAM.identifiers.txt
plugins/kotlin/uast/uast-kotlin-fir/testData/legacyIdentifiers/SAM.refNames.txt
+5
-5
...st-kotlin-fir/testData/legacyIdentifiers/SAM.refNames.txt
plugins/kotlin/uast/uast-kotlin-fir/testData/legacyRenderLog/Anonymous.log.txt
+1
-1
...ast-kotlin-fir/testData/legacyRenderLog/Anonymous.log.txt
plugins/kotlin/uast/uast-kotlin-fir/testData/legacyRenderLog/SAM.log.txt
+4
-4
...uast/uast-kotlin-fir/testData/legacyRenderLog/SAM.log.txt
plugins/kotlin/uast/uast-kotlin-fir/testData/legacyResolved/Anonymous.resolved.txt
+1
-1
...kotlin-fir/testData/legacyResolved/Anonymous.resolved.txt
plugins/kotlin/uast/uast-kotlin-fir/testData/legacyResolved/SAM.resolved.fe10.txt
+4
-4
...-kotlin-fir/testData/legacyResolved/SAM.resolved.fe10.txt
plugins/kotlin/uast/uast-kotlin-fir/testData/legacyResolved/SAM.resolved.fir.txt
+4
-4
...t-kotlin-fir/testData/legacyResolved/SAM.resolved.fir.txt
plugins/kotlin/uast/uast-kotlin-fir/testData/legacyTypes/Anonymous.types.fe10.txt
+1
-1
...-kotlin-fir/testData/legacyTypes/Anonymous.types.fe10.txt
plugins/kotlin/uast/uast-kotlin-fir/testData/legacyTypes/Anonymous.types.fir.txt
+1
-1
...t-kotlin-fir/testData/legacyTypes/Anonymous.types.fir.txt
plugins/kotlin/uast/uast-kotlin-fir/testData/legacyTypes/SAM.types.fe10.txt
+4
-4
...t/uast-kotlin-fir/testData/legacyTypes/SAM.types.fe10.txt
plugins/kotlin/uast/uast-kotlin-fir/testData/legacyTypes/SAM.types.fir.txt
+4
-4
...st/uast-kotlin-fir/testData/legacyTypes/SAM.types.fir.txt
plugins/kotlin/uast/uast-kotlin-fir/testData/legacyValues/Anonymous.values.fe10.txt
+1
-1
...otlin-fir/testData/legacyValues/Anonymous.values.fe10.txt
plugins/kotlin/uast/uast-kotlin-fir/testData/legacyValues/Anonymous.values.fir.txt
+1
-1
...kotlin-fir/testData/legacyValues/Anonymous.values.fir.txt
plugins/kotlin/uast/uast-kotlin-fir/testData/legacyValues/SAM.values.txt
+4
-4
...uast/uast-kotlin-fir/testData/legacyValues/SAM.values.txt
plugins/kotlin/uast/uast-kotlin/src/org/jetbrains/uast/kotlin/KotlinUastResolveProviderService.kt
+3
-0
...jetbrains/uast/kotlin/KotlinUastResolveProviderService.kt
with
63 additions
and
45 deletions
+63
-45
plugins/kotlin/uast/uast-kotlin-base/test/org/jetbrains/uast/test/common/kotlin/UastResolveApiFixtureTestBase.kt
+
14
-
4
View file @
740033a0
...
...
@@ -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
)
}
}
This diff is collapsed.
Click to expand it.
plugins/kotlin/uast/uast-kotlin-fir/src/org/jetbrains/uast/kotlin/FirKotlinUastResolveProviderService.kt
+
1
-
0
View file @
740033a0
...
...
@@ -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
...
...
This diff is collapsed.
Click to expand it.
plugins/kotlin/uast/uast-kotlin-fir/test/org/jetbrains/kotlin/idea/fir/uast/FirUastResolveApiFixtureTest.kt
+
4
-
0
View file @
740033a0
...
...
@@ -173,4 +173,8 @@ class FirUastResolveApiFixtureTest : KotlinLightCodeInsightFixtureTestCase(), Ua
fun
testSubstitutedReceiverType
()
{
doCheck
(
"SubstitutedReceiverType"
,
::
checkSubstitutedReceiverType
)
}
fun
testCallKindOfSamConstructor
()
{
doCheck
(
"CallKindOfSamConstructor"
,
::
checkCallKindOfSamConstructor
)
}
}
This diff is collapsed.
Click to expand it.
plugins/kotlin/uast/uast-kotlin-fir/testData/legacyIdentifiers/Anonymous.identifiers.txt
+
1
-
1
View file @
740033a0
...
...
@@ -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))
...
...
This diff is collapsed.
Click to expand it.
plugins/kotlin/uast/uast-kotlin-fir/testData/legacyIdentifiers/Anonymous.refNames.txt
+
1
-
1
View file @
740033a0
...
...
@@ -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
...
...
This diff is collapsed.
Click to expand it.
plugins/kotlin/uast/uast-kotlin-fir/testData/legacyIdentifiers/SAM.identifiers.txt
+
4
-
4
View file @
740033a0
...
...
@@ -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)
...
...
This diff is collapsed.
Click to expand it.
plugins/kotlin/uast/uast-kotlin-fir/testData/legacyIdentifiers/SAM.refNames.txt
+
5
-
5
View file @
740033a0
...
...
@@ -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
...
...
This diff is collapsed.
Click to expand it.
plugins/kotlin/uast/uast-kotlin-fir/testData/legacyRenderLog/Anonymous.log.txt
+
1
-
1
View file @
740033a0
...
...
@@ -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
...
...
This diff is collapsed.
Click to expand it.
plugins/kotlin/uast/uast-kotlin-fir/testData/legacyRenderLog/SAM.log.txt
+
4
-
4
View file @
740033a0
...
...
@@ -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
...
...
This diff is collapsed.
Click to expand it.
plugins/kotlin/uast/uast-kotlin-fir/testData/legacyResolved/Anonymous.resolved.txt
+
1
-
1
View file @
740033a0
...
...
@@ -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
...
...
This diff is collapsed.
Click to expand it.
plugins/kotlin/uast/uast-kotlin-fir/testData/legacyResolved/SAM.resolved.fe10.txt
+
4
-
4
View file @
740033a0
...
...
@@ -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
...
...
This diff is collapsed.
Click to expand it.
plugins/kotlin/uast/uast-kotlin-fir/testData/legacyResolved/SAM.resolved.fir.txt
+
4
-
4
View file @
740033a0
...
...
@@ -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
...
...
This diff is collapsed.
Click to expand it.
plugins/kotlin/uast/uast-kotlin-fir/testData/legacyTypes/Anonymous.types.fe10.txt
+
1
-
1
View file @
740033a0
...
...
@@ -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>
...
...
This diff is collapsed.
Click to expand it.
plugins/kotlin/uast/uast-kotlin-fir/testData/legacyTypes/Anonymous.types.fir.txt
+
1
-
1
View file @
740033a0
...
...
@@ -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>
...
...
This diff is collapsed.
Click to expand it.
plugins/kotlin/uast/uast-kotlin-fir/testData/legacyTypes/SAM.types.fe10.txt
+
4
-
4
View file @
740033a0
...
...
@@ -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>
...
...
This diff is collapsed.
Click to expand it.
plugins/kotlin/uast/uast-kotlin-fir/testData/legacyTypes/SAM.types.fir.txt
+
4
-
4
View file @
740033a0
...
...
@@ -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>
...
...
This diff is collapsed.
Click to expand it.
plugins/kotlin/uast/uast-kotlin-fir/testData/legacyValues/Anonymous.values.fe10.txt
+
1
-
1
View file @
740033a0
...
...
@@ -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))]
...
...
This diff is collapsed.
Click to expand it.
plugins/kotlin/uast/uast-kotlin-fir/testData/legacyValues/Anonymous.values.fir.txt
+
1
-
1
View file @
740033a0
...
...
@@ -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))]
...
...
This diff is collapsed.
Click to expand it.
plugins/kotlin/uast/uast-kotlin-fir/testData/legacyValues/SAM.values.txt
+
4
-
4
View file @
740033a0
...
...
@@ -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))]
...
...
This diff is collapsed.
Click to expand it.
plugins/kotlin/uast/uast-kotlin/src/org/jetbrains/uast/kotlin/KotlinUastResolveProviderService.kt
+
3
-
0
View file @
740033a0
...
...
@@ -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
...
...
This diff is collapsed.
Click to expand it.
Prev
1
2
Next
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment