From dbd49c37c112871113b6d8902cd922ee02c6d7f1 Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Thu, 19 Nov 2015 15:32:44 +0300 Subject: [PATCH] Psi: Introduce KtScriptInitializer, a separate entity for script initializers which are quite a bit different from class initializers --- .../src/org/jetbrains/kotlin/KtNodeTypes.java | 3 +- .../parsing/KotlinExpressionParsing.java | 2 +- .../kotlin/parsing/KotlinParsing.java | 2 +- .../kotlin/psi/KtAnonymousInitializer.kt | 39 +++++++++---------- .../org/jetbrains/kotlin/psi/KtClassBody.kt | 2 +- .../kotlin/psi/KtDeclarationImpl.java | 2 +- .../org/jetbrains/kotlin/psi/KtVisitor.java | 8 ++++ .../jetbrains/kotlin/psi/KtVisitorVoid.java | 20 ++++++++++ .../stubs/elements/KtStubElementTypes.java | 6 +-- .../testData/psi/AnonymousInitializer.txt | 2 +- .../psi/PropertiesFollowedByInitializers.txt | 4 +- .../psi/annotation/ShortAnnotations.txt | 2 +- .../psi/annotation/at/validDeclarations.txt | 2 +- compiler/testData/psi/examples/BinaryTree.txt | 2 +- .../testData/psi/recovery/initRecovery.txt | 12 +++--- .../testData/psi/script/ComplexScript.txt | 4 +- compiler/testData/psi/script/Shebang.txt | 2 +- .../testData/psi/script/ShebangIncorrect.txt | 4 +- compiler/testData/psi/script/SimpleScript.txt | 2 +- .../testData/psi/script/unexpectedSymbol.txt | 2 +- .../anonymousInitializer.txt | 6 +-- .../psi/secondaryConstructors/enumParsing.txt | 4 +- .../psi/semicolonBetweenDeclarations.txt | 4 +- .../upDownMover/KotlinDeclarationMover.java | 6 ++- .../idea/formatter/kotlinSpacingRules.kt | 6 +-- .../stubs/NotStorePropertiesFrom.expected | 2 +- .../stubs/SecondaryConstructors.expected | 4 +- .../kotlin/idea/stubs/DebugTextByStubTest.kt | 2 +- 28 files changed, 93 insertions(+), 63 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/KtNodeTypes.java b/compiler/frontend/src/org/jetbrains/kotlin/KtNodeTypes.java index 2d0f5dcf612..98a71dfa4db 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/KtNodeTypes.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/KtNodeTypes.java @@ -35,7 +35,8 @@ public interface KtNodeTypes { IElementType OBJECT_DECLARATION = KtStubElementTypes.OBJECT_DECLARATION; IElementType ENUM_ENTRY = KtStubElementTypes.ENUM_ENTRY; - IElementType ANONYMOUS_INITIALIZER = KtStubElementTypes.ANONYMOUS_INITIALIZER; + IElementType CLASS_INITIALIZER = KtStubElementTypes.CLASS_INITIALIZER; + IElementType SCRIPT_INITIALIZER = new KtNodeType("SCRIPT_INITIALIZER", KtScriptInitializer.class); IElementType SECONDARY_CONSTRUCTOR = KtStubElementTypes.SECONDARY_CONSTRUCTOR; IElementType PRIMARY_CONSTRUCTOR = KtStubElementTypes.PRIMARY_CONSTRUCTOR; diff --git a/compiler/frontend/src/org/jetbrains/kotlin/parsing/KotlinExpressionParsing.java b/compiler/frontend/src/org/jetbrains/kotlin/parsing/KotlinExpressionParsing.java index 7c42b207612..98aac6e1aea 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/parsing/KotlinExpressionParsing.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/parsing/KotlinExpressionParsing.java @@ -1230,7 +1230,7 @@ public class KotlinExpressionParsing extends AbstractKotlinParsing { else if (isScriptTopLevel){ PsiBuilder.Marker scriptInitializer = mark(); parseExpression(); - scriptInitializer.done(ANONYMOUS_INITIALIZER); + scriptInitializer.done(SCRIPT_INITIALIZER); } else { parseExpression(); diff --git a/compiler/frontend/src/org/jetbrains/kotlin/parsing/KotlinParsing.java b/compiler/frontend/src/org/jetbrains/kotlin/parsing/KotlinParsing.java index dbc9febca88..3e186e07954 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/parsing/KotlinParsing.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/parsing/KotlinParsing.java @@ -1083,7 +1083,7 @@ public class KotlinParsing extends AbstractKotlinParsing { else { mark().error("Expecting '{' after 'init'"); } - declType = ANONYMOUS_INITIALIZER; + declType = CLASS_INITIALIZER; } else if (at(CONSTRUCTOR_KEYWORD)) { parseSecondaryConstructor(); diff --git a/compiler/frontend/src/org/jetbrains/kotlin/psi/KtAnonymousInitializer.kt b/compiler/frontend/src/org/jetbrains/kotlin/psi/KtAnonymousInitializer.kt index 1f58fe2d0c6..5ef304cfaa8 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/psi/KtAnonymousInitializer.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/psi/KtAnonymousInitializer.kt @@ -18,40 +18,39 @@ package org.jetbrains.kotlin.psi import com.intellij.lang.ASTNode import com.intellij.psi.PsiElement -import com.intellij.psi.util.PsiTreeUtil +import org.jetbrains.kotlin.psi.psiUtil.getParentOfType import org.jetbrains.kotlin.psi.stubs.KotlinPlaceHolderStub import org.jetbrains.kotlin.psi.stubs.elements.KtStubElementTypes import org.jetbrains.kotlin.utils.sure +interface KtAnonymousInitializer : KtDeclaration, KtStatementExpression { + val containingDeclaration: KtDeclaration + val body: KtExpression? +} + class KtClassInitializer : KtDeclarationStub>, KtAnonymousInitializer { constructor(node: ASTNode) : super(node) - constructor(stub: KotlinPlaceHolderStub) : super(stub, KtStubElementTypes.ANONYMOUS_INITIALIZER) + constructor(stub: KotlinPlaceHolderStub) : super(stub, KtStubElementTypes.CLASS_INITIALIZER) - override fun accept(visitor: KtVisitor, data: D) = visitor.visitAnonymousInitializer(this, data) + override fun accept(visitor: KtVisitor, data: D) = visitor.visitClassInitializer(this, data) override val body: KtExpression? get() = findChildByClass(KtExpression::class.java) - override val openBraceNode: PsiElement? - get() { - val body = body - return if (body is KtBlockExpression) body.lBrace else null - } + val openBraceNode: PsiElement? + get() = (body as? KtBlockExpression)?.lBrace override val containingDeclaration: KtDeclaration - get() { - val classOrObject = PsiTreeUtil.getParentOfType(this, KtClassOrObject::class.java, true) - if (classOrObject != null) { - return classOrObject - } - val type = PsiTreeUtil.getParentOfType(this, KtScript::class.java, true) - return type.sure { "Should only be present in class, object or script" } - } + get() = getParentOfType(true).sure { "Should only be present in class or object" } } -public interface KtAnonymousInitializer : KtDeclaration, KtStatementExpression { - val containingDeclaration: KtDeclaration - val body: KtExpression? - val openBraceNode: PsiElement? +class KtScriptInitializer(node: ASTNode) : KtDeclarationImpl(node), KtAnonymousInitializer { + override val body: KtExpression? + get() = findChildByClass(KtExpression::class.java) + + override val containingDeclaration: KtDeclaration + get() = getParentOfType(true).sure { "Should only be present in script" } + + override fun accept(visitor: KtVisitor, data: D) = visitor.visitScriptInitializer(this, data) } \ No newline at end of file diff --git a/compiler/frontend/src/org/jetbrains/kotlin/psi/KtClassBody.kt b/compiler/frontend/src/org/jetbrains/kotlin/psi/KtClassBody.kt index b7d15e82975..b10d93c28fe 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/psi/KtClassBody.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/psi/KtClassBody.kt @@ -38,7 +38,7 @@ class KtClassBody : KtElementImplStub>, KtDec override fun accept(visitor: KtVisitor, data: D) = visitor.visitClassBody(this, data) val anonymousInitializers: List - get() = findChildrenByType(KtNodeTypes.ANONYMOUS_INITIALIZER) + get() = findChildrenByType(KtNodeTypes.CLASS_INITIALIZER) internal val secondaryConstructors: List get() = getStubOrPsiChildrenAsList(KtStubElementTypes.SECONDARY_CONSTRUCTOR) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/psi/KtDeclarationImpl.java b/compiler/frontend/src/org/jetbrains/kotlin/psi/KtDeclarationImpl.java index 0768a81eb81..d899295e83d 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/psi/KtDeclarationImpl.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/psi/KtDeclarationImpl.java @@ -28,7 +28,7 @@ import org.jetbrains.kotlin.psi.findDocComment.FindDocCommentKt; import java.util.Collections; import java.util.List; -abstract class KtDeclarationImpl extends KtExpressionImpl implements KtDeclaration { +public abstract class KtDeclarationImpl extends KtExpressionImpl implements KtDeclaration { public KtDeclarationImpl(@NotNull ASTNode node) { super(node); } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/psi/KtVisitor.java b/compiler/frontend/src/org/jetbrains/kotlin/psi/KtVisitor.java index e9ce237df49..8ec07193fb2 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/psi/KtVisitor.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/psi/KtVisitor.java @@ -342,6 +342,14 @@ public class KtVisitor extends PsiElementVisitor { return visitDeclaration(initializer, data); } + public R visitScriptInitializer(@NotNull KtScriptInitializer initializer, D data) { + return visitAnonymousInitializer(initializer, data); + } + + public R visitClassInitializer(@NotNull KtClassInitializer initializer, D data) { + return visitAnonymousInitializer(initializer, data); + } + public R visitPropertyAccessor(@NotNull KtPropertyAccessor accessor, D data) { return visitDeclaration(accessor, data); } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/psi/KtVisitorVoid.java b/compiler/frontend/src/org/jetbrains/kotlin/psi/KtVisitorVoid.java index cb0f926293d..6da98d1571f 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/psi/KtVisitorVoid.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/psi/KtVisitorVoid.java @@ -329,6 +329,14 @@ public class KtVisitorVoid extends KtVisitor { super.visitAnonymousInitializer(initializer, null); } + public void visitScriptInitializer(@NotNull KtScriptInitializer initializer) { + super.visitScriptInitializer(initializer, null); + } + + public void visitClassInitializer(@NotNull KtClassInitializer initializer) { + super.visitClassInitializer(initializer, null); + } + public void visitPropertyAccessor(@NotNull KtPropertyAccessor accessor) { super.visitPropertyAccessor(accessor, null); } @@ -1043,4 +1051,16 @@ public class KtVisitorVoid extends KtVisitor { visitPackageDirective(directive); return null; } + + @Override + public Void visitScriptInitializer(@NotNull KtScriptInitializer initializer, Void data) { + visitScriptInitializer(initializer); + return null; + } + + @Override + public Void visitClassInitializer(@NotNull KtClassInitializer initializer, Void data) { + visitClassInitializer(initializer); + return null; + } } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/psi/stubs/elements/KtStubElementTypes.java b/compiler/frontend/src/org/jetbrains/kotlin/psi/stubs/elements/KtStubElementTypes.java index bb1a722ea2d..2928819cf75 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/psi/stubs/elements/KtStubElementTypes.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/psi/stubs/elements/KtStubElementTypes.java @@ -31,8 +31,8 @@ public interface KtStubElementTypes { KtClassElementType ENUM_ENTRY = new KtClassElementType("ENUM_ENTRY"); KtObjectElementType OBJECT_DECLARATION = new KtObjectElementType("OBJECT_DECLARATION"); - KtPlaceHolderStubElementType ANONYMOUS_INITIALIZER = - new KtPlaceHolderStubElementType("ANONYMOUS_INITIALIZER", KtClassInitializer.class); + KtPlaceHolderStubElementType CLASS_INITIALIZER = + new KtPlaceHolderStubElementType("CLASS_INITIALIZER", KtClassInitializer.class); KtPlaceHolderStubElementType SECONDARY_CONSTRUCTOR = new KtPlaceHolderStubElementType("SECONDARY_CONSTRUCTOR", KtSecondaryConstructor.class); KtPlaceHolderStubElementType PRIMARY_CONSTRUCTOR = @@ -119,7 +119,7 @@ public interface KtStubElementTypes { KtScriptElementType SCRIPT = new KtScriptElementType("SCRIPT"); TokenSet DECLARATION_TYPES = - TokenSet.create(CLASS, OBJECT_DECLARATION, FUNCTION, PROPERTY, ANONYMOUS_INITIALIZER, SECONDARY_CONSTRUCTOR, ENUM_ENTRY); + TokenSet.create(CLASS, OBJECT_DECLARATION, FUNCTION, PROPERTY, CLASS_INITIALIZER, SECONDARY_CONSTRUCTOR, ENUM_ENTRY); TokenSet DELEGATION_SPECIFIER_TYPES = TokenSet.create(DELEGATOR_BY, DELEGATOR_SUPER_CALL, DELEGATOR_SUPER_CLASS); diff --git a/compiler/testData/psi/AnonymousInitializer.txt b/compiler/testData/psi/AnonymousInitializer.txt index 2ab8ba38053..dc68f8a6dcb 100644 --- a/compiler/testData/psi/AnonymousInitializer.txt +++ b/compiler/testData/psi/AnonymousInitializer.txt @@ -11,7 +11,7 @@ JetFile: AnonymousInitializer.kt CLASS_BODY PsiElement(LBRACE)('{') PsiWhiteSpace('\n\n ') - ANONYMOUS_INITIALIZER + CLASS_INITIALIZER PsiElement(init)('init') PsiWhiteSpace(' ') BLOCK diff --git a/compiler/testData/psi/PropertiesFollowedByInitializers.txt b/compiler/testData/psi/PropertiesFollowedByInitializers.txt index 7830559d09d..15752ef8b7e 100644 --- a/compiler/testData/psi/PropertiesFollowedByInitializers.txt +++ b/compiler/testData/psi/PropertiesFollowedByInitializers.txt @@ -124,7 +124,7 @@ JetFile: PropertiesFollowedByInitializers.kt PROPERTY_ACCESSOR PsiElement(get)('get') PsiWhiteSpace('\n ') - ANONYMOUS_INITIALIZER + CLASS_INITIALIZER PsiElement(init)('init') PsiWhiteSpace(' ') BLOCK @@ -180,7 +180,7 @@ JetFile: PropertiesFollowedByInitializers.kt PsiElement(get)('get') PsiElement(SEMICOLON)(';') PsiWhiteSpace(' ') - ANONYMOUS_INITIALIZER + CLASS_INITIALIZER PsiElement(init)('init') PsiWhiteSpace(' ') BLOCK diff --git a/compiler/testData/psi/annotation/ShortAnnotations.txt b/compiler/testData/psi/annotation/ShortAnnotations.txt index 581ed451c85..9968d7487e9 100644 --- a/compiler/testData/psi/annotation/ShortAnnotations.txt +++ b/compiler/testData/psi/annotation/ShortAnnotations.txt @@ -613,7 +613,7 @@ JetFile: ShortAnnotations.kt PsiErrorElement:Expecting member declaration PsiElement(IDENTIFIER)('zoo') PsiWhiteSpace(' ') - ANONYMOUS_INITIALIZER + CLASS_INITIALIZER PsiElement(init)('init') PsiWhiteSpace(' ') BLOCK diff --git a/compiler/testData/psi/annotation/at/validDeclarations.txt b/compiler/testData/psi/annotation/at/validDeclarations.txt index 4a59784dbae..69f8c317d18 100644 --- a/compiler/testData/psi/annotation/at/validDeclarations.txt +++ b/compiler/testData/psi/annotation/at/validDeclarations.txt @@ -435,7 +435,7 @@ JetFile: validDeclarations.kt INTEGER_CONSTANT PsiElement(INTEGER_LITERAL)('1') PsiWhiteSpace('\n\n ') - ANONYMOUS_INITIALIZER + CLASS_INITIALIZER MODIFIER_LIST ANNOTATION_ENTRY PsiElement(AT)('@') diff --git a/compiler/testData/psi/examples/BinaryTree.txt b/compiler/testData/psi/examples/BinaryTree.txt index 58d352f8f93..27e44f466e6 100644 --- a/compiler/testData/psi/examples/BinaryTree.txt +++ b/compiler/testData/psi/examples/BinaryTree.txt @@ -1808,7 +1808,7 @@ JetFile: BinaryTree.kt REFERENCE_EXPRESSION PsiElement(IDENTIFIER)('TreeNode') PsiWhiteSpace('\n\n ') - ANONYMOUS_INITIALIZER + CLASS_INITIALIZER PsiElement(init)('init') PsiWhiteSpace(' ') BLOCK diff --git a/compiler/testData/psi/recovery/initRecovery.txt b/compiler/testData/psi/recovery/initRecovery.txt index 77959ca0de7..bc83de351d7 100644 --- a/compiler/testData/psi/recovery/initRecovery.txt +++ b/compiler/testData/psi/recovery/initRecovery.txt @@ -11,7 +11,7 @@ JetFile: initRecovery.kt CLASS_BODY PsiElement(LBRACE)('{') PsiWhiteSpace('\n ') - ANONYMOUS_INITIALIZER + CLASS_INITIALIZER PsiElement(init)('init') PsiErrorElement:Expecting '{' after 'init' @@ -26,7 +26,7 @@ JetFile: initRecovery.kt CLASS_BODY PsiElement(LBRACE)('{') PsiWhiteSpace('\n ') - ANONYMOUS_INITIALIZER + CLASS_INITIALIZER MODIFIER_LIST ANNOTATION_ENTRY PsiElement(AT)('@') @@ -50,7 +50,7 @@ JetFile: initRecovery.kt INTEGER_CONSTANT PsiElement(INTEGER_LITERAL)('1') PsiWhiteSpace('\n ') - ANONYMOUS_INITIALIZER + CLASS_INITIALIZER PsiElement(init)('init') PsiErrorElement:Expecting '{' after 'init' @@ -67,17 +67,17 @@ JetFile: initRecovery.kt PsiElement(LBRACE)('{') PsiElement(RBRACE)('}') PsiWhiteSpace('\n ') - ANONYMOUS_INITIALIZER + CLASS_INITIALIZER PsiElement(init)('init') PsiErrorElement:Expecting '{' after 'init' PsiWhiteSpace('\n ') - ANONYMOUS_INITIALIZER + CLASS_INITIALIZER PsiElement(init)('init') PsiErrorElement:Expecting '{' after 'init' PsiWhiteSpace('\n ') - ANONYMOUS_INITIALIZER + CLASS_INITIALIZER PsiElement(init)('init') PsiWhiteSpace(' ') BLOCK diff --git a/compiler/testData/psi/script/ComplexScript.txt b/compiler/testData/psi/script/ComplexScript.txt index 029a5a8c99e..2cd94ec14d8 100644 --- a/compiler/testData/psi/script/ComplexScript.txt +++ b/compiler/testData/psi/script/ComplexScript.txt @@ -58,7 +58,7 @@ JetFile: ComplexScript.kts PsiWhiteSpace('\n') PsiElement(RBRACE)('}') PsiWhiteSpace('\n\n') - ANONYMOUS_INITIALIZER + SCRIPT_INITIALIZER IF PsiElement(if)('if') PsiWhiteSpace(' ') @@ -98,7 +98,7 @@ JetFile: ComplexScript.kts PsiWhiteSpace('\n') PsiElement(RBRACE)('}') PsiWhiteSpace('\n\n') - ANONYMOUS_INITIALIZER + SCRIPT_INITIALIZER FOR PsiElement(for)('for') PsiWhiteSpace(' ') diff --git a/compiler/testData/psi/script/Shebang.txt b/compiler/testData/psi/script/Shebang.txt index d5f50f29402..65670d56759 100644 --- a/compiler/testData/psi/script/Shebang.txt +++ b/compiler/testData/psi/script/Shebang.txt @@ -7,7 +7,7 @@ JetFile: Shebang.kts PsiWhiteSpace('\n\n') SCRIPT BLOCK - ANONYMOUS_INITIALIZER + SCRIPT_INITIALIZER CALL_EXPRESSION REFERENCE_EXPRESSION PsiElement(IDENTIFIER)('println') diff --git a/compiler/testData/psi/script/ShebangIncorrect.txt b/compiler/testData/psi/script/ShebangIncorrect.txt index f86b7ae7b42..5ead0e16487 100644 --- a/compiler/testData/psi/script/ShebangIncorrect.txt +++ b/compiler/testData/psi/script/ShebangIncorrect.txt @@ -5,7 +5,7 @@ JetFile: ShebangIncorrect.kts SCRIPT BLOCK - ANONYMOUS_INITIALIZER + SCRIPT_INITIALIZER CALL_EXPRESSION REFERENCE_EXPRESSION PsiElement(IDENTIFIER)('println') @@ -19,7 +19,7 @@ JetFile: ShebangIncorrect.kts PsiWhiteSpace(' ') PsiErrorElement:Expecting an element PsiElement(HASH)('#') - ANONYMOUS_INITIALIZER + SCRIPT_INITIALIZER BINARY_EXPRESSION PREFIX_EXPRESSION OPERATION_REFERENCE diff --git a/compiler/testData/psi/script/SimpleScript.txt b/compiler/testData/psi/script/SimpleScript.txt index 06a9ac9044a..b1cd7768bf0 100644 --- a/compiler/testData/psi/script/SimpleScript.txt +++ b/compiler/testData/psi/script/SimpleScript.txt @@ -5,7 +5,7 @@ JetFile: SimpleScript.kts SCRIPT BLOCK - ANONYMOUS_INITIALIZER + SCRIPT_INITIALIZER CALL_EXPRESSION REFERENCE_EXPRESSION PsiElement(IDENTIFIER)('println') diff --git a/compiler/testData/psi/script/unexpectedSymbol.txt b/compiler/testData/psi/script/unexpectedSymbol.txt index 68236c1d34d..d5a40fa87e1 100644 --- a/compiler/testData/psi/script/unexpectedSymbol.txt +++ b/compiler/testData/psi/script/unexpectedSymbol.txt @@ -5,7 +5,7 @@ JetFile: unexpectedSymbol.kts SCRIPT BLOCK - ANONYMOUS_INITIALIZER + SCRIPT_INITIALIZER CALL_EXPRESSION REFERENCE_EXPRESSION PsiElement(IDENTIFIER)('println') diff --git a/compiler/testData/psi/secondaryConstructors/anonymousInitializer.txt b/compiler/testData/psi/secondaryConstructors/anonymousInitializer.txt index d4a1176903a..56c092189f9 100644 --- a/compiler/testData/psi/secondaryConstructors/anonymousInitializer.txt +++ b/compiler/testData/psi/secondaryConstructors/anonymousInitializer.txt @@ -11,14 +11,14 @@ JetFile: anonymousInitializer.kt CLASS_BODY PsiElement(LBRACE)('{') PsiWhiteSpace('\n ') - ANONYMOUS_INITIALIZER + CLASS_INITIALIZER PsiElement(init)('init') PsiWhiteSpace(' ') BLOCK PsiElement(LBRACE)('{') PsiElement(RBRACE)('}') PsiWhiteSpace('\n\n ') - ANONYMOUS_INITIALIZER + CLASS_INITIALIZER MODIFIER_LIST PsiElement(private)('private') PsiWhiteSpace(' ') @@ -42,7 +42,7 @@ JetFile: anonymousInitializer.kt PsiElement(LPAR)('(') PsiElement(RPAR)(')') PsiWhiteSpace('\n ') - ANONYMOUS_INITIALIZER + CLASS_INITIALIZER PsiElement(init)('init') PsiWhiteSpace(' ') BLOCK diff --git a/compiler/testData/psi/secondaryConstructors/enumParsing.txt b/compiler/testData/psi/secondaryConstructors/enumParsing.txt index d6c38872d0f..2ae229502cf 100644 --- a/compiler/testData/psi/secondaryConstructors/enumParsing.txt +++ b/compiler/testData/psi/secondaryConstructors/enumParsing.txt @@ -93,7 +93,7 @@ JetFile: enumParsing.kt PsiElement(LBRACE)('{') PsiElement(RBRACE)('}') PsiWhiteSpace('\n\n ') - ANONYMOUS_INITIALIZER + CLASS_INITIALIZER PsiElement(init)('init') PsiWhiteSpace(' ') BLOCK @@ -126,7 +126,7 @@ JetFile: enumParsing.kt PsiElement(LBRACE)('{') PsiElement(RBRACE)('}') PsiWhiteSpace('\n ') - ANONYMOUS_INITIALIZER + CLASS_INITIALIZER PsiElement(init)('init') PsiWhiteSpace(' ') BLOCK diff --git a/compiler/testData/psi/semicolonBetweenDeclarations.txt b/compiler/testData/psi/semicolonBetweenDeclarations.txt index 9a1ddcc614f..cd0f3826120 100644 --- a/compiler/testData/psi/semicolonBetweenDeclarations.txt +++ b/compiler/testData/psi/semicolonBetweenDeclarations.txt @@ -96,7 +96,7 @@ JetFile: semicolonBetweenDeclarations.kt PsiElement(RPAR)(')') PsiElement(SEMICOLON)(';') PsiWhiteSpace('\n\n ') - ANONYMOUS_INITIALIZER + CLASS_INITIALIZER PsiElement(init)('init') PsiWhiteSpace(' ') BLOCK @@ -162,7 +162,7 @@ JetFile: semicolonBetweenDeclarations.kt PsiElement(SEMICOLON)(';') PsiWhiteSpace('\n ') - ANONYMOUS_INITIALIZER + CLASS_INITIALIZER PsiElement(init)('init') PsiErrorElement:Expecting '{' after 'init' diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInsight/upDownMover/KotlinDeclarationMover.java b/idea/src/org/jetbrains/kotlin/idea/codeInsight/upDownMover/KotlinDeclarationMover.java index 535dc243aee..afd1e5849ed 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInsight/upDownMover/KotlinDeclarationMover.java +++ b/idea/src/org/jetbrains/kotlin/idea/codeInsight/upDownMover/KotlinDeclarationMover.java @@ -21,7 +21,9 @@ import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.TextRange; -import com.intellij.psi.*; +import com.intellij.psi.PsiComment; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiFile; import com.intellij.psi.util.PsiTreeUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -87,7 +89,7 @@ public class KotlinDeclarationMover extends AbstractKotlinUpDownMover { declaration.accept( new KtVisitorVoid() { @Override - public void visitAnonymousInitializer(@NotNull KtAnonymousInitializer initializer) { + public void visitClassInitializer(@NotNull KtClassInitializer initializer) { PsiElement brace = initializer.getOpenBraceNode(); if (brace != null) { memberSuspects.add(brace); diff --git a/idea/src/org/jetbrains/kotlin/idea/formatter/kotlinSpacingRules.kt b/idea/src/org/jetbrains/kotlin/idea/formatter/kotlinSpacingRules.kt index f1a0bd315ba..9b37be03be2 100644 --- a/idea/src/org/jetbrains/kotlin/idea/formatter/kotlinSpacingRules.kt +++ b/idea/src/org/jetbrains/kotlin/idea/formatter/kotlinSpacingRules.kt @@ -49,7 +49,7 @@ fun createSpacingBuilder(settings: CodeStyleSettings): KotlinSpacingBuilder { return rules(settings) { val DECLARATIONS = - TokenSet.create(PROPERTY, FUN, CLASS, OBJECT_DECLARATION, ENUM_ENTRY, SECONDARY_CONSTRUCTOR, ANONYMOUS_INITIALIZER) + TokenSet.create(PROPERTY, FUN, CLASS, OBJECT_DECLARATION, ENUM_ENTRY, SECONDARY_CONSTRUCTOR, CLASS_INITIALIZER) custom { inPosition(left = CLASS, right = CLASS).emptyLinesIfLineBreakInLeft(1) @@ -102,7 +102,7 @@ fun createSpacingBuilder(settings: CodeStyleSettings): KotlinSpacingBuilder { between(OBJECT_DECLARATION, DECLARATIONS).blankLines(1) between(SECONDARY_CONSTRUCTOR, DECLARATIONS).blankLines(1) - between(ANONYMOUS_INITIALIZER, DECLARATIONS).blankLines(1) + between(CLASS_INITIALIZER, DECLARATIONS).blankLines(1) // ENUM_ENTRY - ENUM_ENTRY is exception between(ENUM_ENTRY, DECLARATIONS).blankLines(1) @@ -292,7 +292,7 @@ fun createSpacingBuilder(settings: CodeStyleSettings): KotlinSpacingBuilder { inPosition(parent = FUN, right = BLOCK).customRule(leftBraceRule()) inPosition(parent = SECONDARY_CONSTRUCTOR, right = BLOCK).customRule(leftBraceRule()) - inPosition(parent = ANONYMOUS_INITIALIZER, right = BLOCK).customRule(leftBraceRule()) + inPosition(parent = CLASS_INITIALIZER, right = BLOCK).customRule(leftBraceRule()) inPosition(parent = PROPERTY_ACCESSOR, right = BLOCK).customRule(leftBraceRule()) inPosition(right = CLASS_BODY).customRule(leftBraceRule(blockType = CLASS_BODY)) diff --git a/idea/testData/stubs/NotStorePropertiesFrom.expected b/idea/testData/stubs/NotStorePropertiesFrom.expected index 593fa1a55b4..364f4dd00c5 100644 --- a/idea/testData/stubs/NotStorePropertiesFrom.expected +++ b/idea/testData/stubs/NotStorePropertiesFrom.expected @@ -6,6 +6,6 @@ PsiJetFileStubImpl[package=] VALUE_PARAMETER_LIST: CLASS_BODY: PROPERTY:[fqName=Test.test, hasDelegate=false, hasDelegateExpression=false, hasInitializer=true, hasReturnTypeRef=false, isExtension=false, isTopLevel=false, isVar=false, name=test] - ANONYMOUS_INITIALIZER: + CLASS_INITIALIZER: FUN:[fqName=Test.more, hasBlockBody=true, hasBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=false, isTopLevel=false, name=more] VALUE_PARAMETER_LIST: diff --git a/idea/testData/stubs/SecondaryConstructors.expected b/idea/testData/stubs/SecondaryConstructors.expected index 278b03e45a1..3898ed4d59d 100644 --- a/idea/testData/stubs/SecondaryConstructors.expected +++ b/idea/testData/stubs/SecondaryConstructors.expected @@ -10,7 +10,7 @@ PsiJetFileStubImpl[package=test] USER_TYPE:[isAbsoluteInRootPackage=false] REFERENCE_EXPRESSION:[referencedName=Boolean] CLASS_BODY: - ANONYMOUS_INITIALIZER: + CLASS_INITIALIZER: SECONDARY_CONSTRUCTOR: MODIFIER_LIST:[] ANNOTATION_ENTRY:[hasValueArguments=false, shortName=anno] @@ -23,7 +23,7 @@ PsiJetFileStubImpl[package=test] TYPE_REFERENCE: USER_TYPE:[isAbsoluteInRootPackage=false] REFERENCE_EXPRESSION:[referencedName=String] - ANONYMOUS_INITIALIZER: + CLASS_INITIALIZER: SECONDARY_CONSTRUCTOR: MODIFIER_LIST:[private] VALUE_PARAMETER_LIST: diff --git a/idea/tests/org/jetbrains/kotlin/idea/stubs/DebugTextByStubTest.kt b/idea/tests/org/jetbrains/kotlin/idea/stubs/DebugTextByStubTest.kt index 9257f6c86dc..78245e3cf03 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/stubs/DebugTextByStubTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/stubs/DebugTextByStubTest.kt @@ -194,7 +194,7 @@ public class DebugTextByStubTest : LightCodeInsightFixtureTestCase() { fun testClassInitializer() { val tree = createStubTree("class A {\n init {} }") val initializer = tree.findChildStubByType(KtStubElementTypes.CLASS)!!.findChildStubByType(KtStubElementTypes.CLASS_BODY)!! - .findChildStubByType(KtStubElementTypes.ANONYMOUS_INITIALIZER) + .findChildStubByType(KtStubElementTypes.CLASS_INITIALIZER) assertEquals("initializer in STUB: class A", KtClassInitializer(initializer as KotlinPlaceHolderStub).getDebugText()) }