Uast: fallback to call braces in getting the anchor for call-expressions in complex cases (KT-36273)
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
A -> UClass (name = A)
|
||||
invoke -> UMethod (name = invoke)
|
||||
this -> USimpleNameReferenceExpression (identifier = this)
|
||||
invoke -> UMethod (name = invoke)
|
||||
f -> UParameter (name = f)
|
||||
Unit -> USimpleNameReferenceExpression (identifier = Unit)
|
||||
main -> UMethod (name = main)
|
||||
a -> UParameter (name = a)
|
||||
A -> USimpleNameReferenceExpression (identifier = A)
|
||||
a -> USimpleNameReferenceExpression (identifier = a)
|
||||
!! -> USimpleNameReferenceExpression (identifier = !!)
|
||||
p -> ULocalVariable (name = p)
|
||||
A -> UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 0))
|
||||
a -> USimpleNameReferenceExpression (identifier = a)
|
||||
!! -> USimpleNameReferenceExpression (identifier = !!)
|
||||
p -> UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))
|
||||
A -> UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 0))
|
||||
@@ -0,0 +1,21 @@
|
||||
class A {
|
||||
|
||||
operator fun invoke(){
|
||||
this()
|
||||
}
|
||||
|
||||
operator fun invoke(f: ()-> Unit){
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fun main(a: A?){
|
||||
a!!()
|
||||
val p = A()
|
||||
a!! {
|
||||
p {
|
||||
A()()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
UFile (package = )
|
||||
UClass (name = NonTrivialIdentifiersKt)
|
||||
UMethod (name = main)
|
||||
UParameter (name = a)
|
||||
UAnnotation (fqName = org.jetbrains.annotations.Nullable)
|
||||
UBlockExpression
|
||||
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 0))
|
||||
UIdentifier (Identifier (())
|
||||
USimpleNameReferenceExpression (identifier = invoke, resolvesTo = null)
|
||||
UDeclarationsExpression
|
||||
ULocalVariable (name = p)
|
||||
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 0))
|
||||
UIdentifier (Identifier (A))
|
||||
USimpleNameReferenceExpression (identifier = <init>, resolvesTo = A)
|
||||
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))
|
||||
UIdentifier (Identifier ({))
|
||||
USimpleNameReferenceExpression (identifier = invoke, resolvesTo = null)
|
||||
ULambdaExpression
|
||||
UBlockExpression
|
||||
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))
|
||||
UIdentifier (Identifier (p))
|
||||
USimpleNameReferenceExpression (identifier = invoke, resolvesTo = null)
|
||||
ULambdaExpression
|
||||
UBlockExpression
|
||||
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 0))
|
||||
UIdentifier (Identifier (())
|
||||
USimpleNameReferenceExpression (identifier = invoke, resolvesTo = null)
|
||||
UClass (name = A)
|
||||
UMethod (name = invoke)
|
||||
UBlockExpression
|
||||
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 0))
|
||||
UIdentifier (Identifier (())
|
||||
USimpleNameReferenceExpression (identifier = invoke, resolvesTo = null)
|
||||
UMethod (name = invoke)
|
||||
UParameter (name = f)
|
||||
UAnnotation (fqName = org.jetbrains.annotations.NotNull)
|
||||
UBlockExpression
|
||||
UMethod (name = A)
|
||||
@@ -0,0 +1,7 @@
|
||||
Unit -> USimpleNameReferenceExpression (identifier = Unit) from KtNameReferenceExpression
|
||||
A -> USimpleNameReferenceExpression (identifier = A) from KtNameReferenceExpression
|
||||
a -> USimpleNameReferenceExpression (identifier = a) from KtNameReferenceExpression
|
||||
A -> UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 0)) from KtNameReferenceExpression
|
||||
a -> USimpleNameReferenceExpression (identifier = a) from KtNameReferenceExpression
|
||||
p -> UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) from KtNameReferenceExpression
|
||||
A -> UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 0)) from KtNameReferenceExpression
|
||||
@@ -0,0 +1,20 @@
|
||||
public final class NonTrivialIdentifiersKt {
|
||||
public static final fun main(@org.jetbrains.annotations.Nullable a: A) : void {
|
||||
invoke()
|
||||
var p: A = <init>()
|
||||
invoke({
|
||||
invoke({
|
||||
invoke()
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
public final class A {
|
||||
public final fun invoke() : void {
|
||||
invoke()
|
||||
}
|
||||
public final fun invoke(@org.jetbrains.annotations.NotNull f: kotlin.jvm.functions.Function0<kotlin.Unit>) : void {
|
||||
}
|
||||
public fun A() = UastEmptyExpression
|
||||
}
|
||||
Reference in New Issue
Block a user