diff --git a/idea/formatter/src/org/jetbrains/kotlin/idea/formatter/KotlinCommonBlock.kt b/idea/formatter/src/org/jetbrains/kotlin/idea/formatter/KotlinCommonBlock.kt index 351bab002df..b33c7044a48 100644 --- a/idea/formatter/src/org/jetbrains/kotlin/idea/formatter/KotlinCommonBlock.kt +++ b/idea/formatter/src/org/jetbrains/kotlin/idea/formatter/KotlinCommonBlock.kt @@ -18,7 +18,6 @@ import com.intellij.psi.tree.IElementType import com.intellij.psi.tree.TokenSet import org.jetbrains.kotlin.KtNodeTypes import org.jetbrains.kotlin.KtNodeTypes.* -import org.jetbrains.kotlin.idea.KotlinLanguage import org.jetbrains.kotlin.idea.core.formatter.KotlinCodeStyleSettings import org.jetbrains.kotlin.idea.formatter.NodeIndentStrategy.Companion.strategy import org.jetbrains.kotlin.idea.util.requireNode @@ -513,13 +512,13 @@ abstract class KotlinCommonBlock( ANNOTATIONS, !node.treeParent.isFirstParameter() ) - is KtClassOrObject -> + is KtClassOrObject, is KtTypeAlias -> return getWrappingStrategyForItemList( commonSettings.CLASS_ANNOTATION_WRAP, ANNOTATIONS ) - is KtNamedFunction -> + is KtNamedFunction, is KtSecondaryConstructor -> return getWrappingStrategyForItemList( commonSettings.METHOD_ANNOTATION_WRAP, ANNOTATIONS @@ -539,10 +538,10 @@ abstract class KotlinCommonBlock( elementType === KtNodeTypes.VALUE_PARAMETER -> return wrapAfterAnnotation(commonSettings.PARAMETER_ANNOTATION_WRAP) - nodePsi is KtClassOrObject -> + nodePsi is KtClassOrObject || nodePsi is KtTypeAlias -> return wrapAfterAnnotation(commonSettings.CLASS_ANNOTATION_WRAP) - nodePsi is KtNamedFunction -> + nodePsi is KtNamedFunction || nodePsi is KtSecondaryConstructor -> return wrap@{ childElement -> getWrapAfterAnnotation(childElement, commonSettings.METHOD_ANNOTATION_WRAP)?.let { return@wrap it diff --git a/idea/testData/formatter/AnnotationBeforeTypeAliasOrConstructor.after.kt b/idea/testData/formatter/AnnotationBeforeTypeAliasOrConstructor.after.kt new file mode 100644 index 00000000000..37659341a1e --- /dev/null +++ b/idea/testData/formatter/AnnotationBeforeTypeAliasOrConstructor.after.kt @@ -0,0 +1,11 @@ +@Target(AnnotationTarget.TYPEALIAS, AnnotationTarget.CONSTRUCTOR) +annotation class Ann + +@Ann +typealias Alias = Int + +class C @Ann constructor(val x: Int) { + @Ann + constructor() : this(42) { + } +} \ No newline at end of file diff --git a/idea/testData/formatter/AnnotationBeforeTypeAliasOrConstructor.kt b/idea/testData/formatter/AnnotationBeforeTypeAliasOrConstructor.kt new file mode 100644 index 00000000000..630caf17ace --- /dev/null +++ b/idea/testData/formatter/AnnotationBeforeTypeAliasOrConstructor.kt @@ -0,0 +1,9 @@ +@Target(AnnotationTarget.TYPEALIAS, AnnotationTarget.CONSTRUCTOR) +annotation class Ann + +@Ann typealias Alias = Int + +class C @Ann constructor(val x: Int) { + @Ann constructor(): this(42) { + } +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/formatter/FormatterTestGenerated.java b/idea/tests/org/jetbrains/kotlin/formatter/FormatterTestGenerated.java index bba60930cc3..f26b8e6aecd 100644 --- a/idea/tests/org/jetbrains/kotlin/formatter/FormatterTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/formatter/FormatterTestGenerated.java @@ -41,6 +41,11 @@ public class FormatterTestGenerated extends AbstractFormatterTest { runTest("idea/testData/formatter/AnnotationBeforeExpression.after.kt"); } + @TestMetadata("AnnotationBeforeTypeAliasOrConstructor.after.kt") + public void testAnnotationBeforeTypeAliasOrConstructor() throws Exception { + runTest("idea/testData/formatter/AnnotationBeforeTypeAliasOrConstructor.after.kt"); + } + @TestMetadata("AnonymousInitializers.after.kt") public void testAnonymousInitializers() throws Exception { runTest("idea/testData/formatter/AnonymousInitializers.after.kt");