Skip to content

Commit afaa02d

Browse files
Add isProperty and isFunction
1 parent 963bbeb commit afaa02d

File tree

4 files changed

+20
-0
lines changed

4 files changed

+20
-0
lines changed

CHANGELOG.md

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

55
### Added
66

7+
- `FirBasedSymbol<*>.isProperty(): Boolean`
8+
- `FirBasedSymbol<*>.isFunction(): Boolean`
79
- `FirBasedSymbol<*>.hasOwner: Boolean`
810
- `<reified T> classId(): ClassId`
911
- `ClassId.toCallableId(): CallableId`

kotlin-compiler-extensions/api/kotlin-compiler-extensions.api

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ public final class com/javiersc/kotlin/compiler/extensions/common/NameKt {
2020

2121
public final class com/javiersc/kotlin/compiler/extensions/fir/FirBasedSymbolKt {
2222
public static final fun getHasOwner (Lorg/jetbrains/kotlin/fir/symbols/FirBasedSymbol;)Z
23+
public static final fun isFunction (Lorg/jetbrains/kotlin/fir/symbols/FirBasedSymbol;)Z
24+
public static final fun isProperty (Lorg/jetbrains/kotlin/fir/symbols/FirBasedSymbol;)Z
2325
public static final fun packageFqName (Lorg/jetbrains/kotlin/fir/symbols/FirBasedSymbol;)Lorg/jetbrains/kotlin/name/FqName;
2426
}
2527

kotlin-compiler-extensions/build.gradle.kts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ hubdle {
99
// TODO: https://github.com/facebook/ktfmt/pull/400
1010
// https://github.com/facebook/ktfmt/issues/314
1111
format.isEnabled.set(false)
12+
languageSettings { //
13+
experimentalContracts()
14+
}
1215
publishing()
1316
}
1417

kotlin-compiler-extensions/main/kotlin/com/javiersc/kotlin/compiler/extensions/fir/firBasedSymbol.kt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
package com.javiersc.kotlin.compiler.extensions.fir
22

3+
import kotlin.contracts.contract
34
import org.jetbrains.kotlin.fir.getOwnerLookupTag
45
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
56
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
67
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
8+
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
9+
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
710
import org.jetbrains.kotlin.name.FqName
811

912
public fun FirBasedSymbol<*>.packageFqName(): FqName? {
@@ -16,3 +19,13 @@ public fun FirBasedSymbol<*>.packageFqName(): FqName? {
1619

1720
public val FirBasedSymbol<*>.hasOwner: Boolean
1821
get() = runCatching { getOwnerLookupTag() }.getOrNull() != null
22+
23+
public fun FirBasedSymbol<*>.isProperty(): Boolean {
24+
contract { returns(true) implies (this@FirBasedSymbol is FirPropertySymbol) }
25+
return this is FirPropertySymbol
26+
}
27+
28+
public fun FirBasedSymbol<*>.isFunction(): Boolean {
29+
contract { returns(true) implies (this@FirBasedSymbol is FirFunctionSymbol) }
30+
return this is FirFunctionSymbol
31+
}

0 commit comments

Comments
 (0)