FIR UAST: prototype plugin entrypoint, declarations, test infra
This commit is contained in:
committed by
Ilya Kirillov
parent
225e3a747c
commit
40eaabdbb5
@@ -0,0 +1,10 @@
|
||||
@file:JvmName("Utils")
|
||||
@file:JvmMultifileClass
|
||||
|
||||
package declaration
|
||||
|
||||
fun foo(): Int = 42
|
||||
|
||||
fun String.buzz(): String {
|
||||
return "$this... zzz..."
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
UFile (package = declaration)
|
||||
UAnnotation (fqName = kotlin.jvm.JvmName)
|
||||
UNamedExpression (name = name)
|
||||
ULiteralExpression (value = "Utils")
|
||||
UAnnotation (fqName = kotlin.jvm.JvmMultifileClass)
|
||||
UClass (name = Utils)
|
||||
UMethod (name = foo)
|
||||
UBlockExpression
|
||||
UReturnExpression
|
||||
ULiteralExpression (value = 42)
|
||||
UMethod (name = buzz)
|
||||
UParameter (name = $this$buzz)
|
||||
UAnnotation (fqName = org.jetbrains.annotations.NotNull)
|
||||
UBlockExpression
|
||||
UReturnExpression
|
||||
UPolyadicExpression (operator = +)
|
||||
UThisExpression (label = null)
|
||||
ULiteralExpression (value = "... zzz...")
|
||||
@@ -0,0 +1 @@
|
||||
UFile (package = declaration)
|
||||
@@ -0,0 +1,12 @@
|
||||
@kotlin.jvm.JvmName(name = "Utils")
|
||||
@kotlin.jvm.JvmMultifileClass
|
||||
package declaration
|
||||
|
||||
public final class Utils {
|
||||
public static final fun foo() : int {
|
||||
return 42
|
||||
}
|
||||
public static final fun buzz(@org.jetbrains.annotations.NotNull $this$buzz: java.lang.String) : java.lang.String {
|
||||
return this + "... zzz..."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
package declaration
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
package declaration
|
||||
|
||||
import java.lang.Thread.*
|
||||
import java.util.*
|
||||
@@ -0,0 +1,3 @@
|
||||
UFile (package = declaration)
|
||||
UImportStatement (isOnDemand = true)
|
||||
UImportStatement (isOnDemand = true)
|
||||
@@ -0,0 +1,3 @@
|
||||
UFile (package = declaration)
|
||||
UImportStatement (isOnDemand = true)
|
||||
UImportStatement (isOnDemand = true)
|
||||
@@ -0,0 +1,4 @@
|
||||
package declaration
|
||||
|
||||
import java.lang.Thread
|
||||
import java.util
|
||||
@@ -0,0 +1,4 @@
|
||||
package declaration
|
||||
|
||||
import java.lang.Thread
|
||||
import java.util
|
||||
@@ -0,0 +1,27 @@
|
||||
import java.lang.Runnable
|
||||
import java.lang.Thread
|
||||
|
||||
val topRunnable = object : Runnable {
|
||||
override fun run() {
|
||||
println("I'm running")
|
||||
}
|
||||
}
|
||||
|
||||
object RunnableManager {
|
||||
val tasks : MutableList<Runnable> = mutableListOf<Runnable>()
|
||||
|
||||
fun register(runnable : Runnable) {
|
||||
tasks.add(runnable)
|
||||
}
|
||||
|
||||
fun runAll() {
|
||||
for (t : tasks) {
|
||||
Thread(t).start()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun main() {
|
||||
RunnableManager.register(topRunnable)
|
||||
RunnableManager.runAll()
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
UFile (package = )
|
||||
UImportStatement (isOnDemand = false)
|
||||
UImportStatement (isOnDemand = false)
|
||||
UClass (name = ObjectsKt)
|
||||
UField (name = topRunnable)
|
||||
UAnnotation (fqName = org.jetbrains.annotations.NotNull)
|
||||
UObjectLiteralExpression
|
||||
UClass (name = null)
|
||||
UMethod (name = run)
|
||||
UBlockExpression
|
||||
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))
|
||||
UIdentifier (Identifier (println))
|
||||
USimpleNameReferenceExpression (identifier = println, resolvesTo = null)
|
||||
ULiteralExpression (value = "I'm running")
|
||||
UMethod (name = )
|
||||
UMethod (name = getTopRunnable)
|
||||
UMethod (name = main)
|
||||
UBlockExpression
|
||||
UQualifiedReferenceExpression
|
||||
USimpleNameReferenceExpression (identifier = RunnableManager)
|
||||
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))
|
||||
UIdentifier (Identifier (register))
|
||||
USimpleNameReferenceExpression (identifier = register, resolvesTo = null)
|
||||
USimpleNameReferenceExpression (identifier = topRunnable)
|
||||
UQualifiedReferenceExpression
|
||||
USimpleNameReferenceExpression (identifier = RunnableManager)
|
||||
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 0))
|
||||
UIdentifier (Identifier (runAll))
|
||||
USimpleNameReferenceExpression (identifier = runAll, resolvesTo = null)
|
||||
UClass (name = RunnableManager)
|
||||
UField (name = tasks)
|
||||
UAnnotation (fqName = org.jetbrains.annotations.NotNull)
|
||||
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 0))
|
||||
UIdentifier (Identifier (mutableListOf))
|
||||
USimpleNameReferenceExpression (identifier = mutableListOf, resolvesTo = null)
|
||||
UField (name = INSTANCE)
|
||||
UAnnotation (fqName = null)
|
||||
UMethod (name = getTasks)
|
||||
UMethod (name = register)
|
||||
UParameter (name = runnable)
|
||||
UAnnotation (fqName = org.jetbrains.annotations.NotNull)
|
||||
UBlockExpression
|
||||
UQualifiedReferenceExpression
|
||||
USimpleNameReferenceExpression (identifier = tasks)
|
||||
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))
|
||||
UIdentifier (Identifier (add))
|
||||
USimpleNameReferenceExpression (identifier = add, resolvesTo = null)
|
||||
USimpleNameReferenceExpression (identifier = runnable)
|
||||
UMethod (name = runAll)
|
||||
UBlockExpression
|
||||
UForEachExpression
|
||||
UastEmptyExpression
|
||||
UBlockExpression
|
||||
UQualifiedReferenceExpression
|
||||
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))
|
||||
UIdentifier (Identifier (Thread))
|
||||
USimpleNameReferenceExpression (identifier = <anonymous class>, resolvesTo = null)
|
||||
USimpleNameReferenceExpression (identifier = t)
|
||||
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 0))
|
||||
UIdentifier (Identifier (start))
|
||||
USimpleNameReferenceExpression (identifier = <anonymous class>, resolvesTo = null)
|
||||
UMethod (name = RunnableManager)
|
||||
@@ -0,0 +1,14 @@
|
||||
UFile (package = )
|
||||
UImportStatement (isOnDemand = false)
|
||||
UImportStatement (isOnDemand = false)
|
||||
UClass (name = RunnableManager)
|
||||
UField (name = INSTANCE)
|
||||
UField (name = tasks)
|
||||
[!] FirUnknownKotlinExpression (CALL_EXPRESSION)
|
||||
UMethod (name = RunnableManager)
|
||||
UMethod (name = getTasks)
|
||||
UMethod (name = register)
|
||||
UParameter (name = runnable)
|
||||
[!] FirUnknownKotlinExpression (BLOCK)
|
||||
UMethod (name = runAll)
|
||||
[!] FirUnknownKotlinExpression (BLOCK)
|
||||
@@ -0,0 +1,30 @@
|
||||
import java.lang.Runnable
|
||||
import java.lang.Thread
|
||||
|
||||
public final class ObjectsKt {
|
||||
@org.jetbrains.annotations.NotNull private static final var topRunnable: java.lang.Runnable = anonymous object : Runnable {
|
||||
override fun run() {
|
||||
println("I'm running")
|
||||
}
|
||||
}
|
||||
public static final fun getTopRunnable() : java.lang.Runnable = UastEmptyExpression
|
||||
public static final fun main() : void {
|
||||
RunnableManager.register(topRunnable)
|
||||
RunnableManager.runAll()
|
||||
}
|
||||
}
|
||||
|
||||
public final class RunnableManager {
|
||||
@org.jetbrains.annotations.NotNull private static final var tasks: java.util.List<java.lang.Runnable> = mutableListOf()
|
||||
@null public static final var INSTANCE: RunnableManager
|
||||
public final fun getTasks() : java.util.List<java.lang.Runnable> = UastEmptyExpression
|
||||
public final fun register(@org.jetbrains.annotations.NotNull runnable: java.lang.Runnable) : void {
|
||||
tasks.add(runnable)
|
||||
}
|
||||
public final fun runAll() : void {
|
||||
for (t : UastEmptyExpression) {
|
||||
<anonymous class>(t).<anonymous class>()
|
||||
}
|
||||
}
|
||||
private fun RunnableManager() = UastEmptyExpression
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
import java.lang.Runnable
|
||||
import java.lang.Thread
|
||||
|
||||
public final class RunnableManager {
|
||||
public static final var INSTANCE: RunnableManager
|
||||
private final var tasks: java.util.List<java.lang.Runnable> = [!] FirUnknownKotlinExpression (CALL_EXPRESSION)
|
||||
private fun RunnableManager() = UastEmptyExpression
|
||||
public final fun getTasks() : java.util.List<java.lang.Runnable> = UastEmptyExpression
|
||||
public final fun register(runnable: java.lang.Runnable) : void = [!] FirUnknownKotlinExpression (BLOCK)
|
||||
public final fun runAll() : void = [!] FirUnknownKotlinExpression (BLOCK)
|
||||
}
|
||||
Reference in New Issue
Block a user