Do not add explicit visibility modifiers in Override/Implement

This commit is contained in:
Andrey Breslav
2013-09-05 21:52:56 +04:00
parent a3a5f9015a
commit fa2ea75c09
15 changed files with 47 additions and 29 deletions
@@ -44,11 +44,11 @@ public interface DescriptorRenderer extends Renderer<DeclarationDescriptor> {
DescriptorRenderer COMPACT = new DescriptorRendererBuilder() DescriptorRenderer COMPACT = new DescriptorRendererBuilder()
.setWithDefinedIn(false) .setWithDefinedIn(false)
.setModifiers(false).build(); .setModifiers().build();
DescriptorRenderer STARTS_FROM_NAME = new DescriptorRendererBuilder() DescriptorRenderer STARTS_FROM_NAME = new DescriptorRendererBuilder()
.setWithDefinedIn(false) .setWithDefinedIn(false)
.setModifiers(false) .setModifiers()
.setStartFromName(true).build(); .setStartFromName(true).build();
DescriptorRenderer TEXT = new DescriptorRendererBuilder().build(); DescriptorRenderer TEXT = new DescriptorRendererBuilder().build();
@@ -77,6 +77,10 @@ public interface DescriptorRenderer extends Renderer<DeclarationDescriptor> {
RENDER_OVERRIDE, RENDER_OPEN, RENDER_OPEN_OVERRIDE RENDER_OVERRIDE, RENDER_OPEN, RENDER_OPEN_OVERRIDE
} }
enum Modifier {
VISIBILITY, MODALITY, OVERRIDE, ANNOTATIONS, INNER, MEMBER_KIND
}
/** @see DefaultValueParameterHandler */ /** @see DefaultValueParameterHandler */
interface ValueParametersHandler { interface ValueParametersHandler {
void appendBeforeValueParameters(@NotNull FunctionDescriptor function, @NotNull StringBuilder stringBuilder); void appendBeforeValueParameters(@NotNull FunctionDescriptor function, @NotNull StringBuilder stringBuilder);
@@ -16,16 +16,18 @@
package org.jetbrains.jet.renderer; package org.jetbrains.jet.renderer;
import com.google.common.collect.ImmutableSet;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.FqName;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.Set;
public class DescriptorRendererBuilder { public class DescriptorRendererBuilder {
private boolean shortNames = false; private boolean shortNames = false;
private boolean withDefinedIn = true; private boolean withDefinedIn = true;
private boolean modifiers = true; private Set<DescriptorRenderer.Modifier> modifiers = ImmutableSet.copyOf(DescriptorRenderer.Modifier.values());
private boolean startFromName = false; private boolean startFromName = false;
private boolean debugMode = false; private boolean debugMode = false;
private boolean classWithPrimaryConstructor = false; private boolean classWithPrimaryConstructor = false;
@@ -57,11 +59,15 @@ public class DescriptorRendererBuilder {
return this; return this;
} }
public DescriptorRendererBuilder setModifiers(boolean modifiers) { public DescriptorRendererBuilder setModifiers(Set<DescriptorRenderer.Modifier> modifiers) {
this.modifiers = modifiers; this.modifiers = modifiers;
return this; return this;
} }
public DescriptorRendererBuilder setModifiers(DescriptorRenderer.Modifier... modifiers) {
return setModifiers(ImmutableSet.copyOf(modifiers));
}
public DescriptorRendererBuilder setStartFromName(boolean startFromName) { public DescriptorRendererBuilder setStartFromName(boolean startFromName) {
this.startFromName = startFromName; this.startFromName = startFromName;
return this; return this;
@@ -50,7 +50,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
private final boolean shortNames; private final boolean shortNames;
private final boolean withDefinedIn; private final boolean withDefinedIn;
private final boolean modifiers; private final Set<DescriptorRenderer.Modifier> modifiers;
private final boolean startFromName; private final boolean startFromName;
private final boolean debugMode; private final boolean debugMode;
private final boolean classWithPrimaryConstructor; private final boolean classWithPrimaryConstructor;
@@ -72,7 +72,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
/* package */ DescriptorRendererImpl( /* package */ DescriptorRendererImpl(
boolean shortNames, boolean shortNames,
boolean withDefinedIn, boolean withDefinedIn,
boolean modifiers, Set<DescriptorRenderer.Modifier> modifiers,
boolean startFromName, boolean startFromName,
boolean debugMode, boolean debugMode,
boolean classWithPrimaryConstructor, boolean classWithPrimaryConstructor,
@@ -312,7 +312,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
} }
private void renderAnnotations(@NotNull Annotated annotated, @NotNull StringBuilder builder) { private void renderAnnotations(@NotNull Annotated annotated, @NotNull StringBuilder builder) {
if (!modifiers) return; if (!modifiers.contains(Modifier.ANNOTATIONS)) return;
for (AnnotationDescriptor annotation : annotated.getAnnotations()) { for (AnnotationDescriptor annotation : annotated.getAnnotations()) {
ClassDescriptor annotationClass = (ClassDescriptor) annotation.getType().getConstructor().getDeclarationDescriptor(); ClassDescriptor annotationClass = (ClassDescriptor) annotation.getType().getConstructor().getDeclarationDescriptor();
assert annotationClass != null; assert annotationClass != null;
@@ -328,7 +328,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
} }
private void renderVisibility(@NotNull Visibility visibility, @NotNull StringBuilder builder) { private void renderVisibility(@NotNull Visibility visibility, @NotNull StringBuilder builder) {
if (!modifiers) return; if (!modifiers.contains(Modifier.VISIBILITY)) return;
if (normalizedVisibilities) { if (normalizedVisibilities) {
visibility = visibility.normalize(); visibility = visibility.normalize();
} }
@@ -337,13 +337,13 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
} }
private void renderModality(@NotNull Modality modality, @NotNull StringBuilder builder) { private void renderModality(@NotNull Modality modality, @NotNull StringBuilder builder) {
if (!modifiers) return; if (!modifiers.contains(Modifier.MODALITY)) return;
String keyword = modality.name().toLowerCase(); String keyword = modality.name().toLowerCase();
builder.append(renderKeyword(keyword)).append(" "); builder.append(renderKeyword(keyword)).append(" ");
} }
private void renderInner(boolean isInner, @NotNull StringBuilder builder) { private void renderInner(boolean isInner, @NotNull StringBuilder builder) {
if (!modifiers) return; if (!modifiers.contains(Modifier.INNER)) return;
if (isInner) { if (isInner) {
builder.append(renderKeyword("inner")).append(" "); builder.append(renderKeyword("inner")).append(" ");
} }
@@ -365,7 +365,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
} }
private void renderOverride(@NotNull CallableMemberDescriptor callableMember, @NotNull StringBuilder builder) { private void renderOverride(@NotNull CallableMemberDescriptor callableMember, @NotNull StringBuilder builder) {
if (!modifiers) return; if (!modifiers.contains(Modifier.OVERRIDE)) return;
if (overridesSomething(callableMember)) { if (overridesSomething(callableMember)) {
if (overrideRenderingPolicy != OverrideRenderingPolicy.RENDER_OPEN) { if (overrideRenderingPolicy != OverrideRenderingPolicy.RENDER_OPEN) {
builder.append("override "); builder.append("override ");
@@ -377,7 +377,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
} }
private void renderMemberKind(CallableMemberDescriptor callableMember, StringBuilder builder) { private void renderMemberKind(CallableMemberDescriptor callableMember, StringBuilder builder) {
if (!modifiers) return; if (!modifiers.contains(Modifier.MEMBER_KIND)) return;
if (verbose && callableMember.getKind() != CallableMemberDescriptor.Kind.DECLARATION) { if (verbose && callableMember.getKind() != CallableMemberDescriptor.Kind.DECLARATION) {
builder.append("/*").append(callableMember.getKind().name().toLowerCase()).append("*/ "); builder.append("/*").append(callableMember.getKind().name().toLowerCase()).append("*/ ");
} }
@@ -38,6 +38,7 @@ import org.jetbrains.jet.lang.types.JetType;
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
import org.jetbrains.jet.plugin.project.AnalyzerFacadeWithCache; import org.jetbrains.jet.plugin.project.AnalyzerFacadeWithCache;
import org.jetbrains.jet.renderer.DescriptorRenderer; import org.jetbrains.jet.renderer.DescriptorRenderer;
import org.jetbrains.jet.renderer.DescriptorRendererBuilder;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
@@ -46,6 +47,13 @@ import java.util.Set;
public abstract class OverrideImplementMethodsHandler implements LanguageCodeInsightActionHandler { 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<DescriptorClassMember> membersFromDescriptors( public static List<DescriptorClassMember> membersFromDescriptors(
JetFile file, Iterable<CallableMemberDescriptor> missingImplementations, JetFile file, Iterable<CallableMemberDescriptor> missingImplementations,
BindingContext bindingContext BindingContext bindingContext
@@ -147,7 +155,7 @@ public abstract class OverrideImplementMethodsHandler implements LanguageCodeIns
else { else {
bodyBuilder.append(" = ?"); bodyBuilder.append(" = ?");
} }
return JetPsiFactory.createProperty(project, DescriptorRenderer.SOURCE_CODE.render(newDescriptor) + bodyBuilder.toString()); return JetPsiFactory.createProperty(project, OVERRIDE_RENDERER.render(newDescriptor) + bodyBuilder.toString());
} }
@NotNull @NotNull
@@ -186,7 +194,7 @@ public abstract class OverrideImplementMethodsHandler implements LanguageCodeIns
boolean returnsNotUnit = returnType != null && !builtIns.getUnitType().equals(returnType); boolean returnsNotUnit = returnType != null && !builtIns.getUnitType().equals(returnType);
String body = "{" + (returnsNotUnit && !isAbstractFun ? "return " : "") + delegationBuilder.toString() + "}"; 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 @NotNull
@@ -199,7 +199,7 @@ public class HtmlTabledDescriptorRenderer extends TabledDescriptorRenderer {
public static final DescriptorRenderer DESCRIPTOR_IN_TABLE = new DescriptorRendererBuilder() public static final DescriptorRenderer DESCRIPTOR_IN_TABLE = new DescriptorRendererBuilder()
.setWithDefinedIn(false) .setWithDefinedIn(false)
.setModifiers(false) .setModifiers()
.setValueParametersHandler(VALUE_PARAMETERS_HANDLER) .setValueParametersHandler(VALUE_PARAMETERS_HANDLER)
.setTextFormat(DescriptorRenderer.TextFormat.HTML).build(); .setTextFormat(DescriptorRenderer.TextFormat.HTML).build();
@@ -53,7 +53,7 @@ import static org.jetbrains.jet.lang.resolve.java.DescriptorSearchRule.IGNORE_KO
public class KotlinSignatureAnnotationIntention extends BaseIntentionAction implements Iconable { public class KotlinSignatureAnnotationIntention extends BaseIntentionAction implements Iconable {
private static final DescriptorRenderer RENDERER = new DescriptorRendererBuilder() private static final DescriptorRenderer RENDERER = new DescriptorRendererBuilder()
.setShortNames(true) .setShortNames(true)
.setModifiers(false) .setModifiers()
.setWithDefinedIn(false).build(); .setWithDefinedIn(false).build();
@NotNull @NotNull
@@ -2,7 +2,7 @@
class MyClass<A: Comparable<A>> : Iterable<A> { class MyClass<A: Comparable<A>> : Iterable<A> {
public override fun iterator(): Iterator<A> { override fun iterator(): Iterator<A> {
throw UnsupportedOperationException() throw UnsupportedOperationException()
} }
} }
@@ -2,7 +2,7 @@ package foo
class Impl: B { class Impl: B {
public override fun foo(r: Runnable?) { override fun foo(r: Runnable?) {
throw UnsupportedOperationException() throw UnsupportedOperationException()
} }
} }
@@ -16,12 +16,12 @@ class C : A(), B {
super<A>.internalFun() super<A>.internalFun()
} }
override val internalProperty: Int = 0 override val internalProperty: Int = 0
protected override fun protectedFun() { override fun protectedFun() {
super<A>.protectedFun() super<A>.protectedFun()
} }
protected override val protectedProperty: Int = 0 override val protectedProperty: Int = 0
public override fun publicFun() { override fun publicFun() {
super<A>.publicFun() super<A>.publicFun()
} }
public override val publicProperty: Int = 0 override val publicProperty: Int = 0
} }
@@ -2,7 +2,7 @@ import foo.Intf
class Impl(): Intf { class Impl(): Intf {
public override fun getFooBar(): String? { override fun getFooBar(): String? {
throw UnsupportedOperationException() throw UnsupportedOperationException()
} }
} }
@@ -4,7 +4,7 @@ import foo.Intf
class Impl(): Intf() { class Impl(): Intf() {
protected override fun getFooBar(): String? { override fun getFooBar(): String? {
return super<Intf>.getFooBar() return super<Intf>.getFooBar()
} }
} }
@@ -2,7 +2,7 @@ import foo.Intf
class Impl(): Intf { class Impl(): Intf {
public override fun fooBar(i: Int, s: Array<out String>?, foo: Any?) { override fun fooBar(i: Int, s: Array<out String>?, foo: Any?) {
throw UnsupportedOperationException() throw UnsupportedOperationException()
} }
} }
@@ -2,7 +2,7 @@ import foo.A
class C : A() { class C : A() {
public override fun getAnswer(array: Array<out String>?, number: Int, value: Any?): Int { override fun getAnswer(array: Array<out String>?, number: Int, value: Any?): Int {
return super<A>.getAnswer(array, number, value) return super<A>.getAnswer(array, number, value)
} }
} }
@@ -2,7 +2,7 @@ package foo
class Impl: B() { class Impl: B() {
public override fun foo(r: Runnable?) { override fun foo(r: Runnable?) {
super<B>.foo(r) super<B>.foo(r)
} }
} }
@@ -5,10 +5,10 @@ trait Test {
class SomeTest : Test { class SomeTest : Test {
val hello = 12 val hello = 12
public override fun test() { override fun test() {
throw UnsupportedOperationException() throw UnsupportedOperationException()
} }
protected override val testProp: Int = 0 override val testProp: Int = 0
/** /**
* test * test