KtAnonymousInitializer: make it an interface with KtClassInitializer inheritor
This commit is contained in:
@@ -23,23 +23,23 @@ import org.jetbrains.kotlin.psi.stubs.KotlinPlaceHolderStub
|
||||
import org.jetbrains.kotlin.psi.stubs.elements.KtStubElementTypes
|
||||
import org.jetbrains.kotlin.utils.sure
|
||||
|
||||
class KtAnonymousInitializer : KtDeclarationStub<KotlinPlaceHolderStub<KtAnonymousInitializer>>, KtStatementExpression {
|
||||
class KtClassInitializer : KtDeclarationStub<KotlinPlaceHolderStub<KtClassInitializer>>, KtAnonymousInitializer {
|
||||
constructor(node: ASTNode) : super(node)
|
||||
|
||||
constructor(stub: KotlinPlaceHolderStub<KtAnonymousInitializer>) : super(stub, KtStubElementTypes.ANONYMOUS_INITIALIZER)
|
||||
constructor(stub: KotlinPlaceHolderStub<KtClassInitializer>) : super(stub, KtStubElementTypes.ANONYMOUS_INITIALIZER)
|
||||
|
||||
override fun <R, D> accept(visitor: KtVisitor<R, D>, data: D) = visitor.visitAnonymousInitializer(this, data)
|
||||
|
||||
val body: KtExpression?
|
||||
override val body: KtExpression?
|
||||
get() = findChildByClass(KtExpression::class.java)
|
||||
|
||||
val openBraceNode: PsiElement?
|
||||
override val openBraceNode: PsiElement?
|
||||
get() {
|
||||
val body = body
|
||||
return if ((body is KtBlockExpression)) body.lBrace else null
|
||||
return if (body is KtBlockExpression) body.lBrace else null
|
||||
}
|
||||
|
||||
val containingDeclaration: KtDeclaration
|
||||
override val containingDeclaration: KtDeclaration
|
||||
get() {
|
||||
val classOrObject = PsiTreeUtil.getParentOfType(this, KtClassOrObject::class.java, true)
|
||||
if (classOrObject != null) {
|
||||
@@ -49,3 +49,9 @@ class KtAnonymousInitializer : KtDeclarationStub<KotlinPlaceHolderStub<KtAnonymo
|
||||
return type.sure { "Should only be present in class, object or script" }
|
||||
}
|
||||
}
|
||||
|
||||
public interface KtAnonymousInitializer : KtDeclaration, KtStatementExpression {
|
||||
val containingDeclaration: KtDeclaration
|
||||
val body: KtExpression?
|
||||
val openBraceNode: PsiElement?
|
||||
}
|
||||
+2
-2
@@ -31,8 +31,8 @@ public interface KtStubElementTypes {
|
||||
|
||||
KtClassElementType ENUM_ENTRY = new KtClassElementType("ENUM_ENTRY");
|
||||
KtObjectElementType OBJECT_DECLARATION = new KtObjectElementType("OBJECT_DECLARATION");
|
||||
KtPlaceHolderStubElementType<KtAnonymousInitializer> ANONYMOUS_INITIALIZER =
|
||||
new KtPlaceHolderStubElementType<KtAnonymousInitializer>("ANONYMOUS_INITIALIZER", KtAnonymousInitializer.class);
|
||||
KtPlaceHolderStubElementType<KtClassInitializer> ANONYMOUS_INITIALIZER =
|
||||
new KtPlaceHolderStubElementType<KtClassInitializer>("ANONYMOUS_INITIALIZER", KtClassInitializer.class);
|
||||
KtPlaceHolderStubElementType<KtSecondaryConstructor> SECONDARY_CONSTRUCTOR =
|
||||
new KtPlaceHolderStubElementType<KtSecondaryConstructor>("SECONDARY_CONSTRUCTOR", KtSecondaryConstructor.class);
|
||||
KtPlaceHolderStubElementType<KtPrimaryConstructor> PRIMARY_CONSTRUCTOR =
|
||||
|
||||
@@ -195,7 +195,7 @@ public class DebugTextByStubTest : LightCodeInsightFixtureTestCase() {
|
||||
val tree = createStubTree("class A {\n init {} }")
|
||||
val initializer = tree.findChildStubByType(KtStubElementTypes.CLASS)!!.findChildStubByType(KtStubElementTypes.CLASS_BODY)!!
|
||||
.findChildStubByType(KtStubElementTypes.ANONYMOUS_INITIALIZER)
|
||||
assertEquals("initializer in STUB: class A", KtAnonymousInitializer(initializer as KotlinPlaceHolderStub).getDebugText())
|
||||
assertEquals("initializer in STUB: class A", KtClassInitializer(initializer as KotlinPlaceHolderStub).getDebugText())
|
||||
}
|
||||
|
||||
fun testClassObject() {
|
||||
|
||||
Reference in New Issue
Block a user