Psi: Introduce KtScriptInitializer, a separate entity for script initializers which are quite a bit different from class initializers
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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<KotlinPlaceHolderStub<KtClassInitializer>>, KtAnonymousInitializer {
|
||||
constructor(node: ASTNode) : super(node)
|
||||
|
||||
constructor(stub: KotlinPlaceHolderStub<KtClassInitializer>) : super(stub, KtStubElementTypes.ANONYMOUS_INITIALIZER)
|
||||
constructor(stub: KotlinPlaceHolderStub<KtClassInitializer>) : super(stub, KtStubElementTypes.CLASS_INITIALIZER)
|
||||
|
||||
override fun <R, D> accept(visitor: KtVisitor<R, D>, data: D) = visitor.visitAnonymousInitializer(this, data)
|
||||
override fun <R, D> accept(visitor: KtVisitor<R, D>, 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<KtClassOrObject>(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<KtScript>(true).sure { "Should only be present in script" }
|
||||
|
||||
override fun <R, D> accept(visitor: KtVisitor<R, D>, data: D) = visitor.visitScriptInitializer(this, data)
|
||||
}
|
||||
@@ -38,7 +38,7 @@ class KtClassBody : KtElementImplStub<KotlinPlaceHolderStub<KtClassBody>>, KtDec
|
||||
override fun <R, D> accept(visitor: KtVisitor<R, D>, data: D) = visitor.visitClassBody(this, data)
|
||||
|
||||
val anonymousInitializers: List<KtAnonymousInitializer>
|
||||
get() = findChildrenByType(KtNodeTypes.ANONYMOUS_INITIALIZER)
|
||||
get() = findChildrenByType(KtNodeTypes.CLASS_INITIALIZER)
|
||||
|
||||
internal val secondaryConstructors: List<KtSecondaryConstructor>
|
||||
get() = getStubOrPsiChildrenAsList(KtStubElementTypes.SECONDARY_CONSTRUCTOR)
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -342,6 +342,14 @@ public class KtVisitor<R, D> 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);
|
||||
}
|
||||
|
||||
@@ -329,6 +329,14 @@ public class KtVisitorVoid extends KtVisitor<Void, Void> {
|
||||
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<Void, Void> {
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -31,8 +31,8 @@ public interface KtStubElementTypes {
|
||||
|
||||
KtClassElementType ENUM_ENTRY = new KtClassElementType("ENUM_ENTRY");
|
||||
KtObjectElementType OBJECT_DECLARATION = new KtObjectElementType("OBJECT_DECLARATION");
|
||||
KtPlaceHolderStubElementType<KtClassInitializer> ANONYMOUS_INITIALIZER =
|
||||
new KtPlaceHolderStubElementType<KtClassInitializer>("ANONYMOUS_INITIALIZER", KtClassInitializer.class);
|
||||
KtPlaceHolderStubElementType<KtClassInitializer> CLASS_INITIALIZER =
|
||||
new KtPlaceHolderStubElementType<KtClassInitializer>("CLASS_INITIALIZER", KtClassInitializer.class);
|
||||
KtPlaceHolderStubElementType<KtSecondaryConstructor> SECONDARY_CONSTRUCTOR =
|
||||
new KtPlaceHolderStubElementType<KtSecondaryConstructor>("SECONDARY_CONSTRUCTOR", KtSecondaryConstructor.class);
|
||||
KtPlaceHolderStubElementType<KtPrimaryConstructor> 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);
|
||||
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ JetFile: AnonymousInitializer.kt
|
||||
CLASS_BODY
|
||||
PsiElement(LBRACE)('{')
|
||||
PsiWhiteSpace('\n\n ')
|
||||
ANONYMOUS_INITIALIZER
|
||||
CLASS_INITIALIZER
|
||||
PsiElement(init)('init')
|
||||
PsiWhiteSpace(' ')
|
||||
BLOCK
|
||||
|
||||
@@ -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
|
||||
|
||||
+1
-1
@@ -613,7 +613,7 @@ JetFile: ShortAnnotations.kt
|
||||
PsiErrorElement:Expecting member declaration
|
||||
PsiElement(IDENTIFIER)('zoo')
|
||||
PsiWhiteSpace(' ')
|
||||
ANONYMOUS_INITIALIZER
|
||||
CLASS_INITIALIZER
|
||||
PsiElement(init)('init')
|
||||
PsiWhiteSpace(' ')
|
||||
BLOCK
|
||||
|
||||
@@ -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)('@')
|
||||
|
||||
+1
-1
@@ -1808,7 +1808,7 @@ JetFile: BinaryTree.kt
|
||||
REFERENCE_EXPRESSION
|
||||
PsiElement(IDENTIFIER)('TreeNode')
|
||||
PsiWhiteSpace('\n\n ')
|
||||
ANONYMOUS_INITIALIZER
|
||||
CLASS_INITIALIZER
|
||||
PsiElement(init)('init')
|
||||
PsiWhiteSpace(' ')
|
||||
BLOCK
|
||||
|
||||
+6
-6
@@ -11,7 +11,7 @@ JetFile: initRecovery.kt
|
||||
CLASS_BODY
|
||||
PsiElement(LBRACE)('{')
|
||||
PsiWhiteSpace('\n ')
|
||||
ANONYMOUS_INITIALIZER
|
||||
CLASS_INITIALIZER
|
||||
PsiElement(init)('init')
|
||||
PsiErrorElement:Expecting '{' after 'init'
|
||||
<empty list>
|
||||
@@ -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'
|
||||
<empty list>
|
||||
@@ -67,17 +67,17 @@ JetFile: initRecovery.kt
|
||||
PsiElement(LBRACE)('{')
|
||||
PsiElement(RBRACE)('}')
|
||||
PsiWhiteSpace('\n ')
|
||||
ANONYMOUS_INITIALIZER
|
||||
CLASS_INITIALIZER
|
||||
PsiElement(init)('init')
|
||||
PsiErrorElement:Expecting '{' after 'init'
|
||||
<empty list>
|
||||
PsiWhiteSpace('\n ')
|
||||
ANONYMOUS_INITIALIZER
|
||||
CLASS_INITIALIZER
|
||||
PsiElement(init)('init')
|
||||
PsiErrorElement:Expecting '{' after 'init'
|
||||
<empty list>
|
||||
PsiWhiteSpace('\n ')
|
||||
ANONYMOUS_INITIALIZER
|
||||
CLASS_INITIALIZER
|
||||
PsiElement(init)('init')
|
||||
PsiWhiteSpace(' ')
|
||||
BLOCK
|
||||
|
||||
+2
-2
@@ -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(' ')
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ JetFile: Shebang.kts
|
||||
PsiWhiteSpace('\n\n')
|
||||
SCRIPT
|
||||
BLOCK
|
||||
ANONYMOUS_INITIALIZER
|
||||
SCRIPT_INITIALIZER
|
||||
CALL_EXPRESSION
|
||||
REFERENCE_EXPRESSION
|
||||
PsiElement(IDENTIFIER)('println')
|
||||
|
||||
+2
-2
@@ -5,7 +5,7 @@ JetFile: ShebangIncorrect.kts
|
||||
<empty list>
|
||||
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
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@ JetFile: SimpleScript.kts
|
||||
<empty list>
|
||||
SCRIPT
|
||||
BLOCK
|
||||
ANONYMOUS_INITIALIZER
|
||||
SCRIPT_INITIALIZER
|
||||
CALL_EXPRESSION
|
||||
REFERENCE_EXPRESSION
|
||||
PsiElement(IDENTIFIER)('println')
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@ JetFile: unexpectedSymbol.kts
|
||||
<empty list>
|
||||
SCRIPT
|
||||
BLOCK
|
||||
ANONYMOUS_INITIALIZER
|
||||
SCRIPT_INITIALIZER
|
||||
CALL_EXPRESSION
|
||||
REFERENCE_EXPRESSION
|
||||
PsiElement(IDENTIFIER)('println')
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
+2
-2
@@ -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
|
||||
<empty list>
|
||||
PsiElement(SEMICOLON)(';')
|
||||
PsiWhiteSpace('\n ')
|
||||
ANONYMOUS_INITIALIZER
|
||||
CLASS_INITIALIZER
|
||||
PsiElement(init)('init')
|
||||
PsiErrorElement:Expecting '{' after 'init'
|
||||
<empty list>
|
||||
|
||||
+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