FIR UAST: prototype plugin entrypoint, declarations, test infra

This commit is contained in:
Jinseong Jeon
2021-04-20 11:02:36 -07:00
committed by Ilya Kirillov
parent 225e3a747c
commit 40eaabdbb5
76 changed files with 2490 additions and 41 deletions
+10
View File
@@ -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
+27
View File
@@ -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)
}