Skip to content

Commit 556732a

Browse files
Added a lot of extensions and some changes
1 parent 4a9c46a commit 556732a

File tree

39 files changed

+513
-149
lines changed

39 files changed

+513
-149
lines changed

CHANGELOG.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,31 @@
44

55
### Added
66

7+
- ir `annotations` extensions
8+
- ir `callableId` extensions
9+
- ir `fqName` extensions
10+
- ir `irCall` extensions
11+
- ir `irClass` extensions
12+
- ir `irClassId` extensions
13+
- ir `irClassId` extensions
14+
- ir `irConst` extensions
15+
- ir `irElement` extensions
16+
- ir `irFunction` extensions
17+
- ir `irGeneration` extensions
18+
- ir `irGetEnumValue` extensions
19+
- ir `irReturn` extensions
20+
- ir `irReturn` extensions
21+
- ir `irTreeNode` extensions
22+
- ir `irType` extensions
23+
- ir `irTypeArgument` extensions
24+
- ir `irValueParameter` extensions
25+
- ir `name` extensions
26+
- ir `aIr` extensions
27+
728
### Changed
829

30+
- `kotlin-compiler-test` to `kotlin-compiler-extensions-test`
31+
932
### Deprecated
1033

1134
### Removed

build.gradle.kts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@ plugins {
55
hubdle {
66
config {
77
analysis()
8-
// TODO: Uncomment with Kotlin 2.0
9-
// binaryCompatibilityValidator()
8+
binaryCompatibilityValidator()
109
coverage()
1110
documentation {
1211
api()

gradle/libs.versions.toml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
[versions]
2-
hubdle = "0.5.0-SNAPSHOT"
3-
#hubdle = "0.5.0-alpha.25"
2+
hubdle = "0.5.0-alpha.27"
43

54
[plugins]
65
javiersc-hubdle = { id = "com.javiersc.hubdle", version.ref = "hubdle" }
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
public final class com/javiersc/kotlin/compiler/extensions/ir/AnnotationsKt {
2+
public static final fun getAnnotations (Lorg/jetbrains/kotlin/ir/expressions/IrFunctionAccessExpression;)Ljava/util/List;
3+
public static final fun hasAnnotation (Lorg/jetbrains/kotlin/ir/IrElement;Lorg/jetbrains/kotlin/name/FqName;)Z
4+
public static final fun hasAnnotation (Lorg/jetbrains/kotlin/ir/expressions/IrFunctionAccessExpression;Lorg/jetbrains/kotlin/name/FqName;)Z
5+
}
6+
7+
public final class com/javiersc/kotlin/compiler/extensions/ir/CallableIdKt {
8+
public static final fun getCallableId (Lorg/jetbrains/kotlin/ir/expressions/IrFunctionAccessExpression;)Lorg/jetbrains/kotlin/name/CallableId;
9+
public static final fun toCallableId (Ljava/lang/String;)Lorg/jetbrains/kotlin/name/CallableId;
10+
public static final fun toCallableId (Lorg/jetbrains/kotlin/name/FqName;)Lorg/jetbrains/kotlin/name/CallableId;
11+
}
12+
13+
public final class com/javiersc/kotlin/compiler/extensions/ir/FqNameKt {
14+
public static final fun getPackageFqName (Lorg/jetbrains/kotlin/ir/expressions/IrFunctionAccessExpression;)Lorg/jetbrains/kotlin/name/FqName;
15+
public static final fun toFqName (Ljava/lang/String;)Lorg/jetbrains/kotlin/name/FqName;
16+
public static final fun toFqName (Lkotlin/reflect/KClass;)Lorg/jetbrains/kotlin/name/FqName;
17+
}
18+
19+
public final class com/javiersc/kotlin/compiler/extensions/ir/IrCallKt {
20+
public static final fun toIrCall (Lorg/jetbrains/kotlin/ir/declarations/IrFunction;IILorg/jetbrains/kotlin/ir/symbols/IrFunctionSymbol;Lorg/jetbrains/kotlin/ir/types/IrType;IILorg/jetbrains/kotlin/ir/expressions/IrStatementOrigin;Lorg/jetbrains/kotlin/ir/symbols/IrClassSymbol;)Lorg/jetbrains/kotlin/ir/expressions/IrCall;
21+
public static final fun toIrCall (Lorg/jetbrains/kotlin/ir/declarations/IrSimpleFunction;IILorg/jetbrains/kotlin/ir/symbols/IrSimpleFunctionSymbol;Lorg/jetbrains/kotlin/ir/types/IrType;IILorg/jetbrains/kotlin/ir/expressions/IrStatementOrigin;Lorg/jetbrains/kotlin/ir/symbols/IrClassSymbol;)Lorg/jetbrains/kotlin/ir/expressions/IrCall;
22+
public static final fun toIrCall (Lorg/jetbrains/kotlin/ir/symbols/IrSimpleFunctionSymbol;IILorg/jetbrains/kotlin/ir/types/IrType;IILorg/jetbrains/kotlin/ir/expressions/IrStatementOrigin;Lorg/jetbrains/kotlin/ir/symbols/IrClassSymbol;)Lorg/jetbrains/kotlin/ir/expressions/IrCall;
23+
public static synthetic fun toIrCall$default (Lorg/jetbrains/kotlin/ir/declarations/IrFunction;IILorg/jetbrains/kotlin/ir/symbols/IrFunctionSymbol;Lorg/jetbrains/kotlin/ir/types/IrType;IILorg/jetbrains/kotlin/ir/expressions/IrStatementOrigin;Lorg/jetbrains/kotlin/ir/symbols/IrClassSymbol;ILjava/lang/Object;)Lorg/jetbrains/kotlin/ir/expressions/IrCall;
24+
public static synthetic fun toIrCall$default (Lorg/jetbrains/kotlin/ir/declarations/IrSimpleFunction;IILorg/jetbrains/kotlin/ir/symbols/IrSimpleFunctionSymbol;Lorg/jetbrains/kotlin/ir/types/IrType;IILorg/jetbrains/kotlin/ir/expressions/IrStatementOrigin;Lorg/jetbrains/kotlin/ir/symbols/IrClassSymbol;ILjava/lang/Object;)Lorg/jetbrains/kotlin/ir/expressions/IrCall;
25+
public static synthetic fun toIrCall$default (Lorg/jetbrains/kotlin/ir/symbols/IrSimpleFunctionSymbol;IILorg/jetbrains/kotlin/ir/types/IrType;IILorg/jetbrains/kotlin/ir/expressions/IrStatementOrigin;Lorg/jetbrains/kotlin/ir/symbols/IrClassSymbol;ILjava/lang/Object;)Lorg/jetbrains/kotlin/ir/expressions/IrCall;
26+
}
27+
28+
public final class com/javiersc/kotlin/compiler/extensions/ir/IrClassIdKt {
29+
public static final fun toClassId (Ljava/lang/String;)Lorg/jetbrains/kotlin/name/ClassId;
30+
public static final fun toClassId (Lorg/jetbrains/kotlin/name/FqName;)Lorg/jetbrains/kotlin/name/ClassId;
31+
}
32+
33+
public final class com/javiersc/kotlin/compiler/extensions/ir/IrClassKt {
34+
public static final fun findIrClass (Lorg/jetbrains/kotlin/backend/common/extensions/IrPluginContext;Lorg/jetbrains/kotlin/name/ClassId;)Lorg/jetbrains/kotlin/ir/declarations/IrClass;
35+
public static final fun findIrClassSymbol (Lorg/jetbrains/kotlin/backend/common/extensions/IrPluginContext;Lorg/jetbrains/kotlin/name/ClassId;)Lorg/jetbrains/kotlin/ir/symbols/IrClassSymbol;
36+
}
37+
38+
public final class com/javiersc/kotlin/compiler/extensions/ir/IrConstKt {
39+
public static final fun toIrConst (Lorg/jetbrains/kotlin/ir/expressions/IrExpression;Lorg/jetbrains/kotlin/ir/types/IrType;II)Lorg/jetbrains/kotlin/ir/expressions/IrConst;
40+
public static synthetic fun toIrConst$default (Lorg/jetbrains/kotlin/ir/expressions/IrExpression;Lorg/jetbrains/kotlin/ir/types/IrType;IIILjava/lang/Object;)Lorg/jetbrains/kotlin/ir/expressions/IrConst;
41+
public static final fun toIrConstOrNull (Lorg/jetbrains/kotlin/ir/expressions/IrExpression;Lorg/jetbrains/kotlin/ir/types/IrType;II)Lorg/jetbrains/kotlin/ir/expressions/IrConst;
42+
public static synthetic fun toIrConstOrNull$default (Lorg/jetbrains/kotlin/ir/expressions/IrExpression;Lorg/jetbrains/kotlin/ir/types/IrType;IIILjava/lang/Object;)Lorg/jetbrains/kotlin/ir/expressions/IrConst;
43+
}
44+
45+
public final class com/javiersc/kotlin/compiler/extensions/ir/IrElementKt {
46+
public static final fun dump (Ljava/lang/Iterable;)Ljava/lang/String;
47+
public static final fun dumpKotlinLike (Ljava/lang/Iterable;)Ljava/lang/String;
48+
}
49+
50+
public final class com/javiersc/kotlin/compiler/extensions/ir/IrFunctionKt {
51+
public static final fun findIrFunction (Lorg/jetbrains/kotlin/backend/common/extensions/IrPluginContext;Lorg/jetbrains/kotlin/name/CallableId;)Lorg/jetbrains/kotlin/ir/declarations/IrFunction;
52+
public static final fun findIrFunctionSymbol (Lorg/jetbrains/kotlin/backend/common/extensions/IrPluginContext;Lorg/jetbrains/kotlin/name/CallableId;)Lorg/jetbrains/kotlin/ir/symbols/IrFunctionSymbol;
53+
public static final fun findIrSimpleFunction (Lorg/jetbrains/kotlin/backend/common/extensions/IrPluginContext;Lorg/jetbrains/kotlin/name/CallableId;)Lorg/jetbrains/kotlin/ir/declarations/IrSimpleFunction;
54+
public static final fun findIrSimpleFunctionSymbol (Lorg/jetbrains/kotlin/backend/common/extensions/IrPluginContext;Lorg/jetbrains/kotlin/name/CallableId;)Lorg/jetbrains/kotlin/ir/symbols/IrSimpleFunctionSymbol;
55+
}
56+
57+
public final class com/javiersc/kotlin/compiler/extensions/ir/IrGetEnumValueKt {
58+
public static final fun toIrGetEnumValue (Lorg/jetbrains/kotlin/ir/types/IrType;Lorg/jetbrains/kotlin/ir/declarations/IrEnumEntry;)Lorg/jetbrains/kotlin/ir/expressions/IrGetEnumValue;
59+
}
60+
61+
public final class com/javiersc/kotlin/compiler/extensions/ir/IrReturnKt {
62+
public static final fun buildIrReturn (Lorg/jetbrains/kotlin/ir/declarations/IrFunction;Lorg/jetbrains/kotlin/ir/expressions/IrExpression;)Lorg/jetbrains/kotlin/ir/expressions/IrReturn;
63+
}
64+
65+
public final class com/javiersc/kotlin/compiler/extensions/ir/IrTreeNodeKt {
66+
public static final fun dump (Lcom/javiersc/kotlin/stdlib/tree/TreeNode;)Ljava/lang/String;
67+
public static final fun dumpKotlinLike (Lcom/javiersc/kotlin/stdlib/tree/TreeNode;)Ljava/lang/String;
68+
public static final fun getClassName (Lcom/javiersc/kotlin/stdlib/tree/TreeNode;)Ljava/lang/String;
69+
public static final fun getFileName (Lcom/javiersc/kotlin/stdlib/tree/TreeNode;)Ljava/lang/String;
70+
public static final fun getFunctionName (Lcom/javiersc/kotlin/stdlib/tree/TreeNode;)Ljava/lang/String;
71+
public static final fun getLineNumber (Lcom/javiersc/kotlin/stdlib/tree/TreeNode;)Ljava/lang/Integer;
72+
public static final fun getTreeNode (Lorg/jetbrains/kotlin/ir/IrElement;)Lcom/javiersc/kotlin/stdlib/tree/TreeNode;
73+
public static final fun render (Lcom/javiersc/kotlin/stdlib/tree/TreeNode;)Ljava/lang/String;
74+
public static final fun toIrTreeNode (Lorg/jetbrains/kotlin/ir/IrElement;)Lcom/javiersc/kotlin/stdlib/tree/TreeNode;
75+
}
76+
77+
public final class com/javiersc/kotlin/compiler/extensions/ir/IrTypeArgumentKt {
78+
public static final fun dumpKotlinLike (Ljava/lang/Iterable;)Ljava/lang/String;
79+
}
80+
81+
public final class com/javiersc/kotlin/compiler/extensions/ir/IrTypeKt {
82+
public static final fun dumpKotlinLike (Ljava/lang/Iterable;)Ljava/lang/String;
83+
}
84+
85+
public final class com/javiersc/kotlin/compiler/extensions/ir/NameKt {
86+
public static final fun getName (Lorg/jetbrains/kotlin/ir/expressions/IrFunctionAccessExpression;)Lorg/jetbrains/kotlin/name/Name;
87+
public static final fun toName (Ljava/lang/String;)Lorg/jetbrains/kotlin/name/Name;
88+
}
89+
90+
public final class com/javiersc/kotlin/compiler/extensions/ir/context/receivers/IrFunctionKt {
91+
public static final fun findIrFunction (Lorg/jetbrains/kotlin/backend/common/extensions/IrPluginContext;Lorg/jetbrains/kotlin/name/CallableId;)Lorg/jetbrains/kotlin/ir/declarations/IrFunction;
92+
public static final fun findIrFunctionSymbol (Lorg/jetbrains/kotlin/backend/common/extensions/IrPluginContext;Lorg/jetbrains/kotlin/name/CallableId;)Lorg/jetbrains/kotlin/ir/symbols/IrFunctionSymbol;
93+
public static final fun findIrSimpleFunction (Lorg/jetbrains/kotlin/backend/common/extensions/IrPluginContext;Lorg/jetbrains/kotlin/name/CallableId;)Lorg/jetbrains/kotlin/ir/declarations/IrSimpleFunction;
94+
public static final fun findIrSimpleFunctionSymbol (Lorg/jetbrains/kotlin/backend/common/extensions/IrPluginContext;Lorg/jetbrains/kotlin/name/CallableId;)Lorg/jetbrains/kotlin/ir/symbols/IrSimpleFunctionSymbol;
95+
}
96+
97+
public abstract interface class com/javiersc/kotlin/compiler/extensions/ir/context/receivers/IrGeneration {
98+
public abstract fun generate (Lorg/jetbrains/kotlin/ir/declarations/IrModuleFragment;Lorg/jetbrains/kotlin/backend/common/extensions/IrPluginContext;)V
99+
public abstract fun getExtension ()Lorg/jetbrains/kotlin/backend/common/extensions/IrGenerationExtension;
100+
}
101+
102+
public final class com/javiersc/kotlin/compiler/extensions/ir/context/receivers/IrGeneration$DefaultImpls {
103+
public static fun getExtension (Lcom/javiersc/kotlin/compiler/extensions/ir/context/receivers/IrGeneration;)Lorg/jetbrains/kotlin/backend/common/extensions/IrGenerationExtension;
104+
}
105+

kotlin-compiler-extensions/build.gradle.kts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,14 @@ hubdle {
2525

2626
main {
2727
dependencies {
28-
api(hubdle.github.adriankuta.treeStructure)
2928
api(hubdle.jetbrains.kotlin.kotlinCompiler)
3029
}
3130
}
3231

3332
test {
3433
dependencies {
3534
compileOnly(hubdle.jetbrains.kotlin.kotlinCompilerInternalTestFramework)
36-
implementation(projects.kotlinCompilerTest)
35+
implementation(projects.kotlinCompilerTestExtensions)
3736
}
3837
}
3938
}

kotlin-compiler-extensions/main/kotlin/com/javiersc/kotlin/compiler/extensions/ir/IrElementTree.kt

Lines changed: 0 additions & 23 deletions
This file was deleted.
Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.javiersc.kotlin.compiler.extensions.ir
22

3+
import org.jetbrains.kotlin.ir.IrElement
34
import org.jetbrains.kotlin.ir.declarations.IrAnnotationContainer
5+
import org.jetbrains.kotlin.ir.declarations.IrClass
46
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
57
import org.jetbrains.kotlin.ir.expressions.IrFunctionAccessExpression
68
import org.jetbrains.kotlin.ir.util.hasAnnotation
@@ -10,10 +12,17 @@ public val IrFunctionAccessExpression.annotations: List<IrConstructorCall>
1012
get() = symbol.owner.annotations
1113

1214
public inline fun <reified T : Annotation> IrAnnotationContainer.hasAnnotation(): Boolean =
13-
annotations.hasAnnotation(T::class.toFqName())
15+
annotations.hasAnnotation(fqName<T>())
1416

1517
public inline fun <reified T : Annotation> IrFunctionAccessExpression.hasAnnotation(): Boolean =
16-
(this as IrAnnotationContainer).hasAnnotation<T>()
18+
annotations.hasAnnotation(fqName<T>())
1719

1820
public fun IrFunctionAccessExpression.hasAnnotation(annotation: FqName): Boolean =
1921
annotations.hasAnnotation(annotation)
22+
23+
public fun IrElement.hasAnnotation(annotation: FqName): Boolean =
24+
when (this) {
25+
is IrClass -> hasAnnotation(annotation)
26+
is IrFunctionAccessExpression -> hasAnnotation(annotation)
27+
else -> false
28+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.javiersc.kotlin.compiler.extensions.ir
2+
3+
import org.jetbrains.kotlin.ir.IrElement
4+
import org.jetbrains.kotlin.ir.types.IrType
5+
6+
public inline fun <reified I : IrType> IrType?.asIr(): I? = this@asIr as? I?
7+
8+
public inline fun <reified I : IrElement> IrElement?.asIr(): I? = this@asIr as? I?
Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
11
package com.javiersc.kotlin.compiler.extensions.ir
22

3+
import org.jetbrains.kotlin.ir.expressions.IrFunctionAccessExpression
34
import org.jetbrains.kotlin.name.CallableId
45
import org.jetbrains.kotlin.name.FqName
5-
import org.jetbrains.kotlin.name.Name
66

7-
public fun buildCallableId(packageFqName: FqName, callableName: Name): CallableId =
8-
CallableId(packageFqName, callableName)
7+
public fun String.toCallableId(): CallableId =
8+
FqName(this).run { CallableId(parent(), shortName()) }
9+
10+
public fun FqName.toCallableId(): CallableId = CallableId(parent(), shortName())
11+
12+
public val IrFunctionAccessExpression.callableId: CallableId
13+
get() = CallableId(packageFqName, name)

kotlin-compiler-extensions/main/kotlin/com/javiersc/kotlin/compiler/extensions/ir/IrGeneration.kt renamed to kotlin-compiler-extensions/main/kotlin/com/javiersc/kotlin/compiler/extensions/ir/context/receivers/IrGeneration.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.javiersc.kotlin.compiler.extensions.ir
1+
package com.javiersc.kotlin.compiler.extensions.ir.context.receivers
22

33
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
44
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
@@ -9,7 +9,7 @@ public fun interface IrGeneration {
99
context(IrModuleFragment, IrPluginContext)
1010
public fun generate()
1111

12-
public val extension: IrGenerationExtension get() = object : IrGenerationExtension {
12+
public fun getExtension(): IrGenerationExtension = object : IrGenerationExtension {
1313
override fun generate(moduleFragment: IrModuleFragment, pluginContext: IrPluginContext) {
1414
with(moduleFragment) {
1515
with(pluginContext) {

0 commit comments

Comments
 (0)