diff --git a/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRenderer.java b/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRenderer.java index b46e4d8ec36..4ca1a9e398b 100644 --- a/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRenderer.java +++ b/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRenderer.java @@ -44,11 +44,11 @@ public interface DescriptorRenderer extends Renderer { DescriptorRenderer COMPACT = new DescriptorRendererBuilder() .setWithDefinedIn(false) - .setModifiers(false).build(); + .setModifiers().build(); DescriptorRenderer STARTS_FROM_NAME = new DescriptorRendererBuilder() .setWithDefinedIn(false) - .setModifiers(false) + .setModifiers() .setStartFromName(true).build(); DescriptorRenderer TEXT = new DescriptorRendererBuilder().build(); @@ -77,6 +77,10 @@ public interface DescriptorRenderer extends Renderer { RENDER_OVERRIDE, RENDER_OPEN, RENDER_OPEN_OVERRIDE } + enum Modifier { + VISIBILITY, MODALITY, OVERRIDE, ANNOTATIONS, INNER, MEMBER_KIND + } + /** @see DefaultValueParameterHandler */ interface ValueParametersHandler { void appendBeforeValueParameters(@NotNull FunctionDescriptor function, @NotNull StringBuilder stringBuilder); diff --git a/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRendererBuilder.java b/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRendererBuilder.java index f13cb6ef643..b0b73877723 100644 --- a/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRendererBuilder.java +++ b/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRendererBuilder.java @@ -16,16 +16,18 @@ package org.jetbrains.jet.renderer; +import com.google.common.collect.ImmutableSet; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.lang.resolve.name.FqName; import java.util.Collection; import java.util.Collections; +import java.util.Set; public class DescriptorRendererBuilder { private boolean shortNames = false; private boolean withDefinedIn = true; - private boolean modifiers = true; + private Set modifiers = ImmutableSet.copyOf(DescriptorRenderer.Modifier.values()); private boolean startFromName = false; private boolean debugMode = false; private boolean classWithPrimaryConstructor = false; @@ -57,11 +59,15 @@ public class DescriptorRendererBuilder { return this; } - public DescriptorRendererBuilder setModifiers(boolean modifiers) { + public DescriptorRendererBuilder setModifiers(Set modifiers) { this.modifiers = modifiers; return this; } + public DescriptorRendererBuilder setModifiers(DescriptorRenderer.Modifier... modifiers) { + return setModifiers(ImmutableSet.copyOf(modifiers)); + } + public DescriptorRendererBuilder setStartFromName(boolean startFromName) { this.startFromName = startFromName; return this; diff --git a/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java b/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java index 4dfdc201f02..42830fb9462 100644 --- a/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java +++ b/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java @@ -50,7 +50,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer { private final boolean shortNames; private final boolean withDefinedIn; - private final boolean modifiers; + private final Set modifiers; private final boolean startFromName; private final boolean debugMode; private final boolean classWithPrimaryConstructor; @@ -72,7 +72,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer { /* package */ DescriptorRendererImpl( boolean shortNames, boolean withDefinedIn, - boolean modifiers, + Set modifiers, boolean startFromName, boolean debugMode, boolean classWithPrimaryConstructor, @@ -312,7 +312,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer { } private void renderAnnotations(@NotNull Annotated annotated, @NotNull StringBuilder builder) { - if (!modifiers) return; + if (!modifiers.contains(Modifier.ANNOTATIONS)) return; for (AnnotationDescriptor annotation : annotated.getAnnotations()) { ClassDescriptor annotationClass = (ClassDescriptor) annotation.getType().getConstructor().getDeclarationDescriptor(); assert annotationClass != null; @@ -328,7 +328,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer { } private void renderVisibility(@NotNull Visibility visibility, @NotNull StringBuilder builder) { - if (!modifiers) return; + if (!modifiers.contains(Modifier.VISIBILITY)) return; if (normalizedVisibilities) { visibility = visibility.normalize(); } @@ -337,13 +337,13 @@ public class DescriptorRendererImpl implements DescriptorRenderer { } private void renderModality(@NotNull Modality modality, @NotNull StringBuilder builder) { - if (!modifiers) return; + if (!modifiers.contains(Modifier.MODALITY)) return; String keyword = modality.name().toLowerCase(); builder.append(renderKeyword(keyword)).append(" "); } private void renderInner(boolean isInner, @NotNull StringBuilder builder) { - if (!modifiers) return; + if (!modifiers.contains(Modifier.INNER)) return; if (isInner) { builder.append(renderKeyword("inner")).append(" "); } @@ -365,7 +365,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer { } private void renderOverride(@NotNull CallableMemberDescriptor callableMember, @NotNull StringBuilder builder) { - if (!modifiers) return; + if (!modifiers.contains(Modifier.OVERRIDE)) return; if (overridesSomething(callableMember)) { if (overrideRenderingPolicy != OverrideRenderingPolicy.RENDER_OPEN) { builder.append("override "); @@ -377,7 +377,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer { } private void renderMemberKind(CallableMemberDescriptor callableMember, StringBuilder builder) { - if (!modifiers) return; + if (!modifiers.contains(Modifier.MEMBER_KIND)) return; if (verbose && callableMember.getKind() != CallableMemberDescriptor.Kind.DECLARATION) { builder.append("/*").append(callableMember.getKind().name().toLowerCase()).append("*/ "); } diff --git a/idea/src/org/jetbrains/jet/plugin/codeInsight/OverrideImplementMethodsHandler.java b/idea/src/org/jetbrains/jet/plugin/codeInsight/OverrideImplementMethodsHandler.java index 6db64343292..f18f58ede90 100644 --- a/idea/src/org/jetbrains/jet/plugin/codeInsight/OverrideImplementMethodsHandler.java +++ b/idea/src/org/jetbrains/jet/plugin/codeInsight/OverrideImplementMethodsHandler.java @@ -38,6 +38,7 @@ import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.plugin.project.AnalyzerFacadeWithCache; import org.jetbrains.jet.renderer.DescriptorRenderer; +import org.jetbrains.jet.renderer.DescriptorRendererBuilder; import java.util.ArrayList; import java.util.Collections; @@ -46,6 +47,13 @@ import java.util.Set; public abstract class OverrideImplementMethodsHandler implements LanguageCodeInsightActionHandler { + private static final DescriptorRenderer OVERRIDE_RENDERER = new DescriptorRendererBuilder() + .setModifiers(DescriptorRenderer.Modifier.OVERRIDE) + .setWithDefinedIn(false) + .setShortNames(false) + .setOverrideRenderingPolicy(DescriptorRenderer.OverrideRenderingPolicy.RENDER_OVERRIDE) + .setUnitReturnType(false).build(); + public static List membersFromDescriptors( JetFile file, Iterable missingImplementations, BindingContext bindingContext @@ -147,7 +155,7 @@ public abstract class OverrideImplementMethodsHandler implements LanguageCodeIns else { bodyBuilder.append(" = ?"); } - return JetPsiFactory.createProperty(project, DescriptorRenderer.SOURCE_CODE.render(newDescriptor) + bodyBuilder.toString()); + return JetPsiFactory.createProperty(project, OVERRIDE_RENDERER.render(newDescriptor) + bodyBuilder.toString()); } @NotNull @@ -186,7 +194,7 @@ public abstract class OverrideImplementMethodsHandler implements LanguageCodeIns boolean returnsNotUnit = returnType != null && !builtIns.getUnitType().equals(returnType); String body = "{" + (returnsNotUnit && !isAbstractFun ? "return " : "") + delegationBuilder.toString() + "}"; - return JetPsiFactory.createFunction(project, DescriptorRenderer.SOURCE_CODE.render(newDescriptor) + body); + return JetPsiFactory.createFunction(project, OVERRIDE_RENDERER.render(newDescriptor) + body); } @NotNull diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/HtmlTabledDescriptorRenderer.java b/idea/src/org/jetbrains/jet/plugin/highlighter/HtmlTabledDescriptorRenderer.java index 47d0f6b5126..77e1856b284 100644 --- a/idea/src/org/jetbrains/jet/plugin/highlighter/HtmlTabledDescriptorRenderer.java +++ b/idea/src/org/jetbrains/jet/plugin/highlighter/HtmlTabledDescriptorRenderer.java @@ -199,7 +199,7 @@ public class HtmlTabledDescriptorRenderer extends TabledDescriptorRenderer { public static final DescriptorRenderer DESCRIPTOR_IN_TABLE = new DescriptorRendererBuilder() .setWithDefinedIn(false) - .setModifiers(false) + .setModifiers() .setValueParametersHandler(VALUE_PARAMETERS_HANDLER) .setTextFormat(DescriptorRenderer.TextFormat.HTML).build(); diff --git a/idea/src/org/jetbrains/jet/plugin/ktSignature/KotlinSignatureAnnotationIntention.java b/idea/src/org/jetbrains/jet/plugin/ktSignature/KotlinSignatureAnnotationIntention.java index 86e47869e4b..fbf1e92256d 100644 --- a/idea/src/org/jetbrains/jet/plugin/ktSignature/KotlinSignatureAnnotationIntention.java +++ b/idea/src/org/jetbrains/jet/plugin/ktSignature/KotlinSignatureAnnotationIntention.java @@ -53,7 +53,7 @@ import static org.jetbrains.jet.lang.resolve.java.DescriptorSearchRule.IGNORE_KO public class KotlinSignatureAnnotationIntention extends BaseIntentionAction implements Iconable { private static final DescriptorRenderer RENDERER = new DescriptorRendererBuilder() .setShortNames(true) - .setModifiers(false) + .setModifiers() .setWithDefinedIn(false).build(); @NotNull diff --git a/idea/testData/codeInsight/overrideImplement/genericTypesSeveralMethods.kt.after b/idea/testData/codeInsight/overrideImplement/genericTypesSeveralMethods.kt.after index d9cb6fc7128..878a88641a4 100644 --- a/idea/testData/codeInsight/overrideImplement/genericTypesSeveralMethods.kt.after +++ b/idea/testData/codeInsight/overrideImplement/genericTypesSeveralMethods.kt.after @@ -2,7 +2,7 @@ class MyClass> : Iterable { - public override fun iterator(): Iterator { + override fun iterator(): Iterator { throw UnsupportedOperationException() } } \ No newline at end of file diff --git a/idea/testData/codeInsight/overrideImplement/implementSamAdapters/foo/Impl.kt.after b/idea/testData/codeInsight/overrideImplement/implementSamAdapters/foo/Impl.kt.after index 14825990b7e..a72cf84c898 100644 --- a/idea/testData/codeInsight/overrideImplement/implementSamAdapters/foo/Impl.kt.after +++ b/idea/testData/codeInsight/overrideImplement/implementSamAdapters/foo/Impl.kt.after @@ -2,7 +2,7 @@ package foo class Impl: B { - public override fun foo(r: Runnable?) { + override fun foo(r: Runnable?) { throw UnsupportedOperationException() } } diff --git a/idea/testData/codeInsight/overrideImplement/inheritVisibilities.kt.after b/idea/testData/codeInsight/overrideImplement/inheritVisibilities.kt.after index 57bfde91a94..b33052db5ba 100644 --- a/idea/testData/codeInsight/overrideImplement/inheritVisibilities.kt.after +++ b/idea/testData/codeInsight/overrideImplement/inheritVisibilities.kt.after @@ -16,12 +16,12 @@ class C : A(), B { super.internalFun() } override val internalProperty: Int = 0 - protected override fun protectedFun() { + override fun protectedFun() { super.protectedFun() } - protected override val protectedProperty: Int = 0 - public override fun publicFun() { + override val protectedProperty: Int = 0 + override fun publicFun() { super.publicFun() } - public override val publicProperty: Int = 0 + override val publicProperty: Int = 0 } diff --git a/idea/testData/codeInsight/overrideImplement/javaInterfaceMethod/foo/Impl.kt.after b/idea/testData/codeInsight/overrideImplement/javaInterfaceMethod/foo/Impl.kt.after index 0efef3d7a2d..a8d4e037f35 100644 --- a/idea/testData/codeInsight/overrideImplement/javaInterfaceMethod/foo/Impl.kt.after +++ b/idea/testData/codeInsight/overrideImplement/javaInterfaceMethod/foo/Impl.kt.after @@ -2,7 +2,7 @@ import foo.Intf class Impl(): Intf { - public override fun getFooBar(): String? { + override fun getFooBar(): String? { throw UnsupportedOperationException() } } diff --git a/idea/testData/codeInsight/overrideImplement/javaMethodWithPackageProtectedVisibility/foo/Impl.kt.after b/idea/testData/codeInsight/overrideImplement/javaMethodWithPackageProtectedVisibility/foo/Impl.kt.after index 9619b14ac14..b38f8ab0226 100644 --- a/idea/testData/codeInsight/overrideImplement/javaMethodWithPackageProtectedVisibility/foo/Impl.kt.after +++ b/idea/testData/codeInsight/overrideImplement/javaMethodWithPackageProtectedVisibility/foo/Impl.kt.after @@ -4,7 +4,7 @@ import foo.Intf class Impl(): Intf() { - protected override fun getFooBar(): String? { + override fun getFooBar(): String? { return super.getFooBar() } } diff --git a/idea/testData/codeInsight/overrideImplement/javaParameters/foo/Impl.kt.after b/idea/testData/codeInsight/overrideImplement/javaParameters/foo/Impl.kt.after index a289c190484..887a6acaea9 100644 --- a/idea/testData/codeInsight/overrideImplement/javaParameters/foo/Impl.kt.after +++ b/idea/testData/codeInsight/overrideImplement/javaParameters/foo/Impl.kt.after @@ -2,7 +2,7 @@ import foo.Intf class Impl(): Intf { - public override fun fooBar(i: Int, s: Array?, foo: Any?) { + override fun fooBar(i: Int, s: Array?, foo: Any?) { throw UnsupportedOperationException() } } diff --git a/idea/testData/codeInsight/overrideImplement/overrideJavaMethod/foo/Impl.kt.after b/idea/testData/codeInsight/overrideImplement/overrideJavaMethod/foo/Impl.kt.after index 8fdb67028fa..fd713244d25 100644 --- a/idea/testData/codeInsight/overrideImplement/overrideJavaMethod/foo/Impl.kt.after +++ b/idea/testData/codeInsight/overrideImplement/overrideJavaMethod/foo/Impl.kt.after @@ -2,7 +2,7 @@ import foo.A class C : A() { - public override fun getAnswer(array: Array?, number: Int, value: Any?): Int { + override fun getAnswer(array: Array?, number: Int, value: Any?): Int { return super.getAnswer(array, number, value) } } diff --git a/idea/testData/codeInsight/overrideImplement/overrideSamAdapters/foo/Impl.kt.after b/idea/testData/codeInsight/overrideImplement/overrideSamAdapters/foo/Impl.kt.after index b281b5951e7..a6e0ebef908 100644 --- a/idea/testData/codeInsight/overrideImplement/overrideSamAdapters/foo/Impl.kt.after +++ b/idea/testData/codeInsight/overrideImplement/overrideSamAdapters/foo/Impl.kt.after @@ -2,7 +2,7 @@ package foo class Impl: B() { - public override fun foo(r: Runnable?) { + override fun foo(r: Runnable?) { super.foo(r) } } diff --git a/idea/testData/codeInsight/overrideImplement/respectCaretPosition.kt.after b/idea/testData/codeInsight/overrideImplement/respectCaretPosition.kt.after index ba9524b576a..eca1ae1ca4b 100644 --- a/idea/testData/codeInsight/overrideImplement/respectCaretPosition.kt.after +++ b/idea/testData/codeInsight/overrideImplement/respectCaretPosition.kt.after @@ -5,10 +5,10 @@ trait Test { class SomeTest : Test { val hello = 12 - public override fun test() { + override fun test() { throw UnsupportedOperationException() } - protected override val testProp: Int = 0 + override val testProp: Int = 0 /** * test