Psi: Introduce KtScriptInitializer, a separate entity for script initializers which are quite a bit different from class initializers
This commit is contained in:
+4
-2
@@ -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);
|
||||
|
||||
@@ -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))
|
||||
|
||||
+1
-1
@@ -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:
|
||||
|
||||
+2
-2
@@ -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:
|
||||
|
||||
@@ -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())
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user