@@ -11,7 +11,10 @@ import com.intellij.psi.PsiElement
11
11
import com.intellij.psi.impl.PsiSuperMethodImplUtil
12
12
import org.jetbrains.kotlin.asJava.elements.KtLightField
13
13
import org.jetbrains.kotlin.asJava.elements.KtLightMethod
14
+ import org.jetbrains.kotlin.lexer.KtTokens
14
15
import org.jetbrains.kotlin.psi.KtClassOrObject
16
+ import org.jetbrains.kotlin.psi.KtNamedFunction
17
+ import org.jetbrains.kotlin.psi.KtProperty
15
18
16
19
class KtUltraLightInlineClass (
17
20
classOrObject : KtClassOrObject ,
@@ -23,29 +26,50 @@ class KtUltraLightInlineClass(
23
26
24
27
override fun getScope (): PsiElement ? = parent
25
28
29
+ private val membersBuilder: UltraLightMembersCreator by lazyPub {
30
+ UltraLightMembersCreator (
31
+ containingClass = this ,
32
+ containingClassIsNamedObject = false ,
33
+ containingClassIsSealed = false ,
34
+ mangleInternalFunctions = false ,
35
+ support = support
36
+ )
37
+ }
38
+
26
39
private val _ownMethods : List <KtLightMethod > by lazyPub {
27
40
41
+ val result = arrayListOf<KtLightMethod >()
42
+
43
+ val applicableDeclarations = this .classOrObject.declarations
44
+ .filter { it.hasModifier(KtTokens .OVERRIDE_KEYWORD ) }
45
+ .filterNot { it.isHiddenByDeprecation(support) }
46
+
47
+ for (declaration in applicableDeclarations) {
48
+ when (declaration) {
49
+ is KtNamedFunction -> result.addAll(membersBuilder.createMethods(declaration, forceStatic = false ))
50
+ is KtProperty -> result.addAll(
51
+ membersBuilder.propertyAccessors(declaration, declaration.isVar, forceStatic = false , onlyJvmStatic = false )
52
+ )
53
+ }
54
+ }
55
+
28
56
val inlineClassParameter = classOrObject
29
57
.primaryConstructor
30
58
?.valueParameters
31
59
?.firstOrNull()
32
- ? : return @lazyPub emptyList()
33
-
34
60
35
- UltraLightMembersCreator (
36
- containingClass = this ,
37
- containingClassIsNamedObject = false ,
38
- containingClassIsSealed = false ,
39
- mangleInternalFunctions = false ,
40
- support = support
41
- ).run {
42
- propertyAccessors(
61
+ if (inlineClassParameter != = null ) {
62
+ membersBuilder.propertyAccessors(
43
63
inlineClassParameter,
44
64
mutable = false ,
45
65
forceStatic = false ,
46
66
onlyJvmStatic = false
47
- )
67
+ ).let {
68
+ result.addAll(it)
69
+ }
48
70
}
71
+
72
+ result;
49
73
}
50
74
51
75
override fun getOwnFields (): List <KtLightField > = emptyList()
0 commit comments