diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/CodegenContext.java b/compiler/backend/src/org/jetbrains/jet/codegen/CodegenContext.java index 629d58da1e2..f91c55491fa 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/CodegenContext.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/CodegenContext.java @@ -251,12 +251,12 @@ public abstract class CodegenContext { PropertyDescriptor myAccessor = new PropertyDescriptor(contextType, Collections.emptyList(), pd.getModality(), + pd.getVisibility(), pd.isVar(), pd.isObjectDeclaration(), pd.getName() + "$bridge$" + accessors.size(), CallableMemberDescriptor.Kind.DECLARATION ); - myAccessor.setVisibility(pd.getVisibility()); JetType receiverType = pd.getReceiverParameter().exists() ? pd.getReceiverParameter().getType() : null; myAccessor.setType(pd.getType(), Collections.emptyList(), pd.getExpectedThisObject(), receiverType); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java index bc7d6827673..2cc4e9cc3a9 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java @@ -1150,11 +1150,11 @@ public class JavaDescriptorResolver { owner, resolveAnnotations(anyMember.getMember().psiMember), modality, + resolveVisibilityFromPsiModifiers(anyMember.getMember().psiMember), isVar, false, propertyName, CallableMemberDescriptor.Kind.DECLARATION); - propertyDescriptor.setVisibility(resolveVisibilityFromPsiModifiers(anyMember.getMember().psiMember)); PropertyGetterDescriptor getterDescriptor = null; PropertySetterDescriptor setterDescriptor = null; diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/ConstructorDescriptorImpl.java b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/ConstructorDescriptorImpl.java index 2a4cc9af5fe..9d949bc0982 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/ConstructorDescriptorImpl.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/ConstructorDescriptorImpl.java @@ -48,8 +48,7 @@ public class ConstructorDescriptorImpl extends FunctionDescriptorImpl implements //isStatic - for java only public ConstructorDescriptorImpl initialize(@NotNull List typeParameters, @NotNull List unsubstitutedValueParameters, Visibility visibility, boolean isStatic) { - super.initialize(null, isStatic ? ReceiverDescriptor.NO_RECEIVER : getExpectedThisObject(getContainingDeclaration()), typeParameters, unsubstitutedValueParameters, null, Modality.FINAL); - setVisibility(visibility); + super.initialize(null, isStatic ? ReceiverDescriptor.NO_RECEIVER : getExpectedThisObject(getContainingDeclaration()), typeParameters, unsubstitutedValueParameters, null, Modality.FINAL, visibility); return this; } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/FunctionDescriptorImpl.java b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/FunctionDescriptorImpl.java index b419258433b..18123e6947e 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/FunctionDescriptorImpl.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/FunctionDescriptorImpl.java @@ -78,11 +78,13 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorImpl i @NotNull List typeParameters, @NotNull List unsubstitutedValueParameters, @Nullable JetType unsubstitutedReturnType, - @Nullable Modality modality) { + @Nullable Modality modality, + @NotNull Visibility visibility) { this.typeParameters = typeParameters; this.unsubstitutedValueParameters = unsubstitutedValueParameters; this.unsubstitutedReturnType = unsubstitutedReturnType; this.modality = modality; + this.visibility = visibility; this.receiver = receiverType == null ? NO_RECEIVER : new ExtensionReceiver(this, receiverType); this.expectedThisObject = expectedThisObject; @@ -104,10 +106,6 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorImpl i return this; } - public void setVisibility(@NotNull Visibility visibility) { - this.visibility = visibility; - } - public void setReturnType(@NotNull JetType unsubstitutedReturnType) { this.unsubstitutedReturnType = unsubstitutedReturnType; } @@ -223,8 +221,9 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorImpl i substitutedTypeParameters, substitutedValueParameters, substitutedReturnType, - newModality); - substitutedDescriptor.setVisibility(visibility); + newModality, + visibility + ); if (copyOverrides) { for (FunctionDescriptor overriddenFunction : overriddenFunctions) { substitutedDescriptor.addOverriddenDescriptor(overriddenFunction.substitute(substitutor)); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/FunctionDescriptorUtil.java b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/FunctionDescriptorUtil.java index 5db71933722..95b0446da29 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/FunctionDescriptorUtil.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/FunctionDescriptorUtil.java @@ -126,8 +126,8 @@ public class FunctionDescriptorUtil { Collections.emptyList(), JetStandardClasses.getValueParameters(functionDescriptor, functionType), JetStandardClasses.getReturnTypeFromFunctionType(functionType), - Modality.FINAL); - functionDescriptor.setVisibility(Visibilities.LOCAL); + Modality.FINAL, + Visibilities.LOCAL); } public static D alphaConvertTypeParameters(D candidate) { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/PropertyDescriptor.java b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/PropertyDescriptor.java index 77192e72b0e..c614cca9161 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/PropertyDescriptor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/PropertyDescriptor.java @@ -67,6 +67,7 @@ public class PropertyDescriptor extends VariableDescriptorImpl implements Callab @NotNull DeclarationDescriptor containingDeclaration, @NotNull List annotations, @NotNull Modality modality, + @NotNull Visibility visibility, boolean isVar, boolean isObject, @NotNull String name, @@ -75,6 +76,7 @@ public class PropertyDescriptor extends VariableDescriptorImpl implements Callab this.isVar = isVar; this.isObject = isObject; this.modality = modality; + this.visibility = visibility; this.original = original == null ? this : original.getOriginal(); this.kind = kind; } @@ -83,11 +85,12 @@ public class PropertyDescriptor extends VariableDescriptorImpl implements Callab @NotNull DeclarationDescriptor containingDeclaration, @NotNull List annotations, @NotNull Modality modality, + @NotNull Visibility visibility, boolean isVar, boolean isObject, @NotNull String name, Kind kind) { - this(null, containingDeclaration, annotations, modality, isVar, isObject, name, kind); + this(null, containingDeclaration, annotations, modality, visibility, isVar, isObject, name, kind); } public PropertyDescriptor( @@ -103,7 +106,7 @@ public class PropertyDescriptor extends VariableDescriptorImpl implements Callab @NotNull JetType outType, Kind kind ) { - this(containingDeclaration, annotations, modality, isVar, isObject, name, kind); + this(containingDeclaration, annotations, modality, visibility, isVar, isObject, name, kind); setType(outType, Collections.emptyList(), expectedThisObject, receiverType); } @@ -128,10 +131,6 @@ public class PropertyDescriptor extends VariableDescriptorImpl implements Callab this.setter = setter; } - public void setVisibility(@NotNull Visibility visibility) { - this.visibility = visibility; - } - @NotNull @Override public List getTypeParameters() { @@ -207,16 +206,8 @@ public class PropertyDescriptor extends VariableDescriptorImpl implements Callab private PropertyDescriptor doSubstitute(TypeSubstitutor originalSubstitutor, DeclarationDescriptor newOwner, Modality newModality, boolean preserveOriginal, boolean copyOverrides, Kind kind) { - final PropertyDescriptor thisProperty = this; PropertyDescriptor substitutedDescriptor = new PropertyDescriptor(preserveOriginal ? getOriginal() : this, newOwner, - getAnnotations(), newModality, isVar(), isObjectDeclaration(), getName(), kind) { - @NotNull - @Override - public Visibility getVisibility() { - // visibility of property can be not set yet - return thisProperty.getVisibility(); - } - }; + getAnnotations(), newModality, getVisibility(), isVar(), isObjectDeclaration(), getName(), kind); List substitutedTypeParameters = Lists.newArrayList(); TypeSubstitutor substitutor = DescriptorSubstitutor.substituteTypeParameters(getTypeParameters(), originalSubstitutor, substitutedDescriptor, substitutedTypeParameters); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/SimpleFunctionDescriptorImpl.java b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/SimpleFunctionDescriptorImpl.java index 25e9ccd15d8..685e7880a70 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/SimpleFunctionDescriptorImpl.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/SimpleFunctionDescriptorImpl.java @@ -59,8 +59,7 @@ public class SimpleFunctionDescriptorImpl extends FunctionDescriptorImpl impleme @Nullable Modality modality, @NotNull Visibility visibility, boolean isInline) { - super.initialize(receiverType, expectedThisObject, typeParameters, unsubstitutedValueParameters, unsubstitutedReturnType, modality); - setVisibility(visibility); + super.initialize(receiverType, expectedThisObject, typeParameters, unsubstitutedValueParameters, unsubstitutedReturnType, modality, visibility); this.isInline = isInline; return this; } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/PositioningStrategies.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/PositioningStrategies.java index faef5b871bc..5cfdb034a23 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/PositioningStrategies.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/PositioningStrategies.java @@ -125,6 +125,11 @@ public class PositioningStrategies { result.add(element.getModifierList().getModifierNode(token).getTextRange()); } } + if (result.isEmpty()) { + if (element.hasModifier(JetTokens.OVERRIDE_KEYWORD)) { + result.add(element.getModifierList().getModifierNode(JetTokens.OVERRIDE_KEYWORD).getTextRange()); + } + } return result; } }; diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java index 7e8f10a329b..771149fb1f3 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java @@ -486,12 +486,12 @@ public class DescriptorResolver { containingDeclaration, annotationResolver.createAnnotationStubs(modifierList, trace), Modality.FINAL, + resolveVisibilityFromModifiers(modifierList), false, true, JetPsiUtil.safeName(objectDeclaration.getName()), CallableMemberDescriptor.Kind.DECLARATION ); - propertyDescriptor.setVisibility(resolveVisibilityFromModifiers(modifierList)); propertyDescriptor.setType(classDescriptor.getDefaultType(), Collections.emptyList(), DescriptorUtils.getExpectedThisObjectIfNeeded(containingDeclaration), ReceiverDescriptor.NO_RECEIVER); propertyDescriptor.initialize(createDefaultGetter(propertyDescriptor), null); JetObjectDeclarationName nameAsDeclaration = objectDeclaration.getNameAsDeclaration(); @@ -543,12 +543,12 @@ public class DescriptorResolver { containingDeclaration, annotationResolver.resolveAnnotations(scope, modifierList, trace), resolveModalityFromModifiers(property.getModifierList(), defaultModality), + resolveVisibilityFromModifiers(property.getModifierList()), isVar, false, JetPsiUtil.safeName(property.getName()), CallableMemberDescriptor.Kind.DECLARATION ); - propertyDescriptor.setVisibility(resolveVisibilityFromModifiers(property.getModifierList())); List typeParameterDescriptors; JetScope scopeWithTypeParameters; @@ -861,12 +861,12 @@ public class DescriptorResolver { classDescriptor, annotationResolver.resolveAnnotations(scope, modifierList, trace), resolveModalityFromModifiers(parameter.getModifierList(), Modality.FINAL), + resolveVisibilityFromModifiers(parameter.getModifierList()), isMutable, false, name == null ? "" : name, CallableMemberDescriptor.Kind.DECLARATION ); - propertyDescriptor.setVisibility(resolveVisibilityFromModifiers(parameter.getModifierList())); propertyDescriptor.setType(type, Collections.emptyList(), DescriptorUtils.getExpectedThisObjectIfNeeded(classDescriptor), ReceiverDescriptor.NO_RECEIVER); PropertyGetterDescriptor getter = createDefaultGetter(propertyDescriptor); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverrideResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverrideResolver.java index 8aaf3bbb538..a0b1f7a5cdf 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverrideResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverrideResolver.java @@ -69,9 +69,7 @@ public class OverrideResolver { public void process() { generateOverrides(); checkOverrides(); - //functions and properties visibility can be inherited when overriding, so it can be resolved only after overrides resolve is finished - //also invisible overridden descriptors are removed here - resolveVisibilityForFunctionsAndProperties(); + checkVisibilityForOverriddenMembers(); } /** @@ -421,69 +419,31 @@ public class OverrideResolver { return false; } - private void resolveVisibilityForFunctionsAndProperties() { + private void checkVisibilityForOverriddenMembers() { for (Map.Entry entry : context.getFunctions().entrySet()) { JetNamedFunction function = entry.getKey(); SimpleFunctionDescriptor functionDescriptor = entry.getValue(); - Visibility visibility = resolveVisibilityForMember(function, functionDescriptor); - ((SimpleFunctionDescriptorImpl) functionDescriptor).setVisibility(visibility); + checkVisibilityForMember(functionDescriptor.getVisibility(), function, functionDescriptor.getOverriddenDescriptors()); } for (Map.Entry entry : context.getProperties().entrySet()) { JetProperty property = entry.getKey(); PropertyDescriptor propertyDescriptor = entry.getValue(); - Visibility visibility = resolveVisibilityForMember(property, propertyDescriptor); - propertyDescriptor.setVisibility(visibility); + checkVisibilityForMember(propertyDescriptor.getVisibility(), property, propertyDescriptor.getOverriddenDescriptors()); } } - private Visibility resolveVisibilityForMember(JetDeclaration member, CallableMemberDescriptor memberDescriptor) { - removeInvisibleOverriddenDescriptors(memberDescriptor); - Visibility defaultVisibility = findMaxVisibility(memberDescriptor.getOverriddenDescriptors()); - Visibility visibility = DescriptorResolver.resolveVisibilityFromModifiers(member.getModifierList(), defaultVisibility); - checkMaxVisibility(visibility, member, memberDescriptor.getOverriddenDescriptors()); - return visibility; - } - - private void removeInvisibleOverriddenDescriptors(@NotNull CallableDescriptor descriptor) { - Set overriddenDescriptors = descriptor.getOverriddenDescriptors(); - for (Iterator iterator = overriddenDescriptors.iterator(); iterator.hasNext(); ) { - CallableDescriptor superDescriptor = iterator.next(); - if (!Visibilities.isVisible(superDescriptor, descriptor)) { - iterator.remove(); - } - } - } - - private Visibility findMaxVisibility(@NotNull Collection descriptors) { - Visibility maxVisibility = null; - for (DeclarationDescriptorWithVisibility descriptor : descriptors) { - Visibility visibility = descriptor.getVisibility(); - if (maxVisibility == null) { - maxVisibility = visibility; - continue; - } - Integer compare = Visibilities.compare(visibility, maxVisibility); - if (compare == null) { - maxVisibility = Visibilities.PUBLIC; //todo error or warning when inference only from incomparable visibilities - continue; - } - if (compare > 0) { - maxVisibility = visibility; - } - } - return maxVisibility != null ? maxVisibility : Visibilities.INTERNAL; - } - - private void checkMaxVisibility(@NotNull Visibility visibility, @NotNull JetModifierListOwner modifierListOwner, @NotNull Collection descriptors) { + private void checkVisibilityForMember(@NotNull Visibility visibility, + @NotNull JetModifierListOwner modifierListOwner, + @NotNull Collection descriptors) { for (CallableMemberDescriptor descriptor : descriptors) { Integer compare = Visibilities.compare(visibility, descriptor.getVisibility()); if (compare == null) { trace.report(CANNOT_CHANGE_ACCESS_PRIVILEGE.on(modifierListOwner, descriptor.getVisibility(), descriptor, descriptor.getContainingDeclaration())); return; } - else if (compare < 0) { + if (compare < 0) { trace.report(CANNOT_WEAKEN_ACCESS_PRIVILEGE.on(modifierListOwner, descriptor.getVisibility(), descriptor, descriptor.getContainingDeclaration())); return; } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverridingUtil.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverridingUtil.java index 6d60875f35e..2d6b8ccbd32 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverridingUtil.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverridingUtil.java @@ -93,6 +93,9 @@ public class OverridingUtil { @NotNull public static OverrideCompatibilityInfo isOverridableBy(@NotNull CallableDescriptor superDescriptor, @NotNull CallableDescriptor subDescriptor) { + if (!Visibilities.isVisible(superDescriptor, subDescriptor)) { + return OverrideCompatibilityInfo.invisibleMember(); + } if (superDescriptor instanceof FunctionDescriptor) { if (subDescriptor instanceof PropertyDescriptor) return OverrideCompatibilityInfo.memberKindMismatch(); } @@ -318,6 +321,11 @@ public class OverridingUtil { return new OverrideCompatibilityInfo(Result.INCOMPATIBLE, "varOverriddenByVal"); // TODO } + @NotNull + public static OverrideCompatibilityInfo invisibleMember() { + return new OverrideCompatibilityInfo(Result.INCOMPATIBLE, "invisibleMember"); + } + //////////////////////////////////////////////////////////////////////////////////////////////////////////////// private final Result overridable; diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/lang/JetStandardClasses.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/lang/JetStandardClasses.java index a4400b4a6eb..6ed1135cd21 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/lang/JetStandardClasses.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/lang/JetStandardClasses.java @@ -155,8 +155,7 @@ public class JetStandardClasses { Collections.emptyList(), true, Variance.OUT_VARIANCE, "T" + (j + 1), j); parameters.add(typeParameterDescriptor); - PropertyDescriptor propertyDescriptor = new PropertyDescriptor(classDescriptor, Collections.emptyList(), Modality.FINAL, false, false, "_" + (j + 1), CallableMemberDescriptor.Kind.DECLARATION); - propertyDescriptor.setVisibility(Visibilities.PUBLIC); + PropertyDescriptor propertyDescriptor = new PropertyDescriptor(classDescriptor, Collections.emptyList(), Modality.FINAL, Visibilities.PUBLIC, false, false, "_" + (j + 1), CallableMemberDescriptor.Kind.DECLARATION); propertyDescriptor.setType(typeParameterDescriptor.getDefaultType(), Collections.emptyList(), classDescriptor.getImplicitReceiver(), ReceiverDescriptor.NO_RECEIVER); PropertyGetterDescriptor getterDescriptor = new PropertyGetterDescriptor(propertyDescriptor, Collections.emptyList(), Modality.FINAL, Visibilities.PUBLIC, false, true, CallableMemberDescriptor.Kind.DECLARATION); getterDescriptor.initialize(typeParameterDescriptor.getDefaultType()); diff --git a/compiler/testData/codegen/classes/classObjectInterface.jet b/compiler/testData/codegen/classes/classObjectInterface.jet index 432bb37bee0..0672b7f4b65 100644 --- a/compiler/testData/codegen/classes/classObjectInterface.jet +++ b/compiler/testData/codegen/classes/classObjectInterface.jet @@ -2,7 +2,7 @@ class C() { fun getInstance(): Runnable = C class object: Runnable { - override fun run(): Unit { } + public override fun run(): Unit { } } } diff --git a/compiler/testData/codegen/controlStructures/forUserType.jet b/compiler/testData/codegen/controlStructures/forUserType.jet index 7c0a4d1203d..e08bbe4f86d 100644 --- a/compiler/testData/codegen/controlStructures/forUserType.jet +++ b/compiler/testData/codegen/controlStructures/forUserType.jet @@ -78,25 +78,25 @@ fun box() : String { } class MyCollection1(): java.lang.Iterable { - override fun iterator(): java.util.Iterator = MyIterator() + public override fun iterator(): java.util.Iterator = MyIterator() class MyIterator(): java.util.Iterator { var k : Int = 5 - override fun next() : Int = k-- - override fun hasNext() = k > 0 - override fun remove() {} + public override fun next() : Int = k-- + public override fun hasNext() = k > 0 + public override fun remove() {} } } class MyCollection2(): Iterable { - override fun iterator(): Iterator = MyIterator() + public override fun iterator(): Iterator = MyIterator() class MyIterator(): Iterator { var k : Int = 5 - override fun next() : Int = k-- - override val hasNext : Boolean + public override fun next() : Int = k-- + public override val hasNext : Boolean get() = k > 0 } } diff --git a/compiler/testData/codegen/controlStructures/sync.jet b/compiler/testData/codegen/controlStructures/sync.jet index 317fa64a53a..dcec0d68127 100644 --- a/compiler/testData/codegen/controlStructures/sync.jet +++ b/compiler/testData/codegen/controlStructures/sync.jet @@ -3,7 +3,7 @@ import java.util.concurrent.atomic.* fun thread(block: ()->Unit ) { val thread = object: Thread() { - override fun run() { + public override fun run() { block() } } diff --git a/compiler/testData/codegen/objects/objectLiteral.jet b/compiler/testData/codegen/objects/objectLiteral.jet index ca3f96cf336..d12b396b33f 100644 --- a/compiler/testData/codegen/objects/objectLiteral.jet +++ b/compiler/testData/codegen/objects/objectLiteral.jet @@ -1,7 +1,7 @@ class C(x: Int, val y : Int) { fun initChild(var x: Int) : java.lang.Object { return object : java.lang.Object() { - override fun toString(): String? { + public override fun toString(): String? { x = x + y return "child" + x } diff --git a/compiler/testData/codegen/objects/objectLiteralInClosure.jet b/compiler/testData/codegen/objects/objectLiteralInClosure.jet index d63c1c879fa..fcfb11e91b6 100644 --- a/compiler/testData/codegen/objects/objectLiteralInClosure.jet +++ b/compiler/testData/codegen/objects/objectLiteralInClosure.jet @@ -3,7 +3,7 @@ package p class C(val y : Int) { val initChild = { -> object : java.lang.Object() { - override fun toString(): String { + public override fun toString(): String { return "child" + y } } diff --git a/compiler/testData/codegen/regressions/kt1136.kt b/compiler/testData/codegen/regressions/kt1136.kt index e3214c521fa..293ef9781e3 100644 --- a/compiler/testData/codegen/regressions/kt1136.kt +++ b/compiler/testData/codegen/regressions/kt1136.kt @@ -2,7 +2,7 @@ import java.util.ArrayList public object SomeObject { private val workerThread = object : Thread() { - override fun run() { + public override fun run() { foo() } } diff --git a/compiler/testData/codegen/regressions/kt1157.kt b/compiler/testData/codegen/regressions/kt1157.kt index a053a0e54cd..f8cc35b8f29 100644 --- a/compiler/testData/codegen/regressions/kt1157.kt +++ b/compiler/testData/codegen/regressions/kt1157.kt @@ -2,7 +2,7 @@ public object SomeClass { var bug: Any = "" private val workerThread = object : Thread() { - override fun run() { + public override fun run() { try { foo() bug = "none" diff --git a/compiler/testData/codegen/regressions/kt1159.kt b/compiler/testData/codegen/regressions/kt1159.kt index c8bb69a04c1..bcc902cc21e 100644 --- a/compiler/testData/codegen/regressions/kt1159.kt +++ b/compiler/testData/codegen/regressions/kt1159.kt @@ -1,6 +1,6 @@ public object RefreshQueue { private val workerThread: Thread = Thread(object : Runnable { - override fun run() { + public override fun run() { workerThread.isInterrupted() } }); diff --git a/compiler/testData/codegen/regressions/kt1168.kt b/compiler/testData/codegen/regressions/kt1168.kt index fc931784687..bf614a7d355 100644 --- a/compiler/testData/codegen/regressions/kt1168.kt +++ b/compiler/testData/codegen/regressions/kt1168.kt @@ -7,9 +7,9 @@ public abstract class BaseClass() { } public class Subclass : BaseClass() { - override val kind : String = "Physical" + protected override val kind : String = "Physical" - override val kind2 : String = " kind2" + protected override val kind2 : String = " kind2" } fun box():String = if(Subclass().debug() == "Physical kind2") "OK" else "fail" diff --git a/compiler/testData/codegen/regressions/kt299.jet b/compiler/testData/codegen/regressions/kt299.jet index 4aa31a44dc8..3a34b3f6e5a 100644 --- a/compiler/testData/codegen/regressions/kt299.jet +++ b/compiler/testData/codegen/regressions/kt299.jet @@ -1,5 +1,5 @@ class MyRange1() : Range { - override fun contains(item: Int) = true + public override fun contains(item: Int) = true } class MyRange2() { diff --git a/compiler/testData/codegen/regressions/kt344.jet b/compiler/testData/codegen/regressions/kt344.jet index 1f35cb5e138..8f08096b5da 100644 --- a/compiler/testData/codegen/regressions/kt344.jet +++ b/compiler/testData/codegen/regressions/kt344.jet @@ -163,7 +163,7 @@ fun t11(var x: Int) : Int { fun t12(x: Int) : Int { var y = x val runnable = object : Runnable { - override fun run () { + public override fun run () { y = y + 1 } } diff --git a/compiler/testData/codegen/regressions/kt533.kt b/compiler/testData/codegen/regressions/kt533.kt index 0714d67fb27..e40f2a036a5 100644 --- a/compiler/testData/codegen/regressions/kt533.kt +++ b/compiler/testData/codegen/regressions/kt533.kt @@ -95,11 +95,11 @@ fun LinkedList.sum(f : (Int, Int) -> Int) : Int { } fun List.backwards() : Iterable = object : Iterable { - override fun iterator() : jet.Iterator = + public override fun iterator() : jet.Iterator = object : jet.Iterator { var current = size() - override fun next() : T = get(--current) - override val hasNext : Boolean get() = current > 0 + public override fun next() : T = get(--current) + public override val hasNext : Boolean get() = current > 0 } } diff --git a/compiler/testData/codegen/regressions/kt887.jet b/compiler/testData/codegen/regressions/kt887.jet index ee1c57ec1d3..28289154899 100644 --- a/compiler/testData/codegen/regressions/kt887.jet +++ b/compiler/testData/codegen/regressions/kt887.jet @@ -1,5 +1,5 @@ class Book(val name: String) : Comparable { - override fun compareTo(other: Book) = name.compareTo(other.name) + public override fun compareTo(other: Book) = name.compareTo(other.name) } fun box() = if(Book("239").compareTo(Book("932")) != 0) "OK" else "fail" \ No newline at end of file diff --git a/compiler/testData/codegen/regressions/kt940.kt b/compiler/testData/codegen/regressions/kt940.kt index a81d971ffba..702b6c05788 100644 --- a/compiler/testData/codegen/regressions/kt940.kt +++ b/compiler/testData/codegen/regressions/kt940.kt @@ -3,13 +3,13 @@ import java.util.* fun box() : String { val w = object : Comparator { - override fun compare(o1 : String?, o2 : String?) : Int { + public override fun compare(o1 : String?, o2 : String?) : Int { val l1 : Int = o1?.length ?: 0 val l2 = o2?.length ?: 0 return l1 - l2 } - override fun equals(obj: Any?): Boolean = obj === this + public override fun equals(obj: Any?): Boolean = obj === this } w.compare("aaa", "bbb") diff --git a/compiler/testData/codegen/super/basicmethodSuperClass.jet b/compiler/testData/codegen/super/basicmethodSuperClass.jet index 1b8a48bbfe9..19d9ae7afcb 100644 --- a/compiler/testData/codegen/super/basicmethodSuperClass.jet +++ b/compiler/testData/codegen/super/basicmethodSuperClass.jet @@ -1,7 +1,7 @@ import java.util.ArrayList class N() : ArrayList() { - override fun add(el: Any) : Boolean { + public override fun add(el: Any) : Boolean { if (!super.add(el)) { throw Exception() } diff --git a/compiler/testData/codegen/traits/simple.jet b/compiler/testData/codegen/traits/simple.jet index f8119547d2d..537f03a6ef8 100644 --- a/compiler/testData/codegen/traits/simple.jet +++ b/compiler/testData/codegen/traits/simple.jet @@ -3,7 +3,7 @@ trait SimpleClass : java.lang.Object { } class SimpleClassImpl() : SimpleClass { - override fun toString() = "SimpleClassImpl" + public override fun toString() = "SimpleClassImpl" } fun box() : String { diff --git a/compiler/testData/codegen/traits/stdlib.jet b/compiler/testData/codegen/traits/stdlib.jet index 235263a95eb..b7b3e16b928 100644 --- a/compiler/testData/codegen/traits/stdlib.jet +++ b/compiler/testData/codegen/traits/stdlib.jet @@ -3,7 +3,7 @@ trait ISized { } trait javaUtilIterator : java.util.Iterator { - override fun remove() : Unit { + public override fun remove() : Unit { throw UnsupportedOperationException() } } @@ -11,9 +11,9 @@ trait javaUtilIterator : java.util.Iterator { class MyIterator(val array : ReadOnlyArray) : javaUtilIterator { private var index = 0 - override fun hasNext() : Boolean = index < array.size + public override fun hasNext() : Boolean = index < array.size - override fun next() : T = array.get(index++) + public override fun next() : T = array.get(index++) } trait ReadOnlyArray : ISized, java.lang.Iterable { @@ -23,7 +23,7 @@ trait ReadOnlyArray : ISized, java.lang.Iterable { fun check(v: Any) = v is T } - override fun iterator() : java.util.Iterator = MyIterator(this) + public override fun iterator() : java.util.Iterator = MyIterator(this) } trait WriteOnlyArray : ISized { diff --git a/compiler/testData/diagnostics/tests/PrimaryConstructors.jet b/compiler/testData/diagnostics/tests/PrimaryConstructors.jet index 2a3de6e374a..cd2489ad285 100644 --- a/compiler/testData/diagnostics/tests/PrimaryConstructors.jet +++ b/compiler/testData/diagnostics/tests/PrimaryConstructors.jet @@ -18,12 +18,12 @@ class Z : Y() { class MyIterable : Iterable { - override fun iterator(): Iterator = MyIterator() + public override fun iterator(): Iterator = MyIterator() class MyIterator : Iterator { - override val hasNext: Boolean = false - override fun next(): T { + public override val hasNext: Boolean = false + public override fun next(): T { throw UnsupportedOperationException() } } diff --git a/compiler/testData/diagnostics/tests/extensions/GenericIterator.jet b/compiler/testData/diagnostics/tests/extensions/GenericIterator.jet index a41644e2446..37bb8d0d31a 100644 --- a/compiler/testData/diagnostics/tests/extensions/GenericIterator.jet +++ b/compiler/testData/diagnostics/tests/extensions/GenericIterator.jet @@ -1,10 +1,10 @@ import java.util.Enumeration inline fun java.util.Enumeration.iterator() = object: Iterator { - override val hasNext: Boolean + public override val hasNext: Boolean get() = hasMoreElements() - override fun next() = nextElement() + public override fun next() = nextElement() } fun a(e : java.util.Enumeration) { diff --git a/compiler/testData/diagnostics/tests/regressions/kt588.jet b/compiler/testData/diagnostics/tests/regressions/kt588.jet index fee5c198ebc..e98a4c3d989 100644 --- a/compiler/testData/diagnostics/tests/regressions/kt588.jet +++ b/compiler/testData/diagnostics/tests/regressions/kt588.jet @@ -6,7 +6,7 @@ class Test() : Thread("Test") { } } - override fun run() { + public override fun run() { init2() // unresolved Test.init2() // ok } diff --git a/compiler/testData/diagnostics/tests/scopes/visibility2.jet b/compiler/testData/diagnostics/tests/scopes/visibility2.jet index b31b44b58fa..40afa0ee60c 100644 --- a/compiler/testData/diagnostics/tests/scopes/visibility2.jet +++ b/compiler/testData/diagnostics/tests/scopes/visibility2.jet @@ -38,7 +38,7 @@ class Q { } } -//check that 'toString' can be invoked without specifying 'public' and ': String' +//check that 'toString' can be invoked without specifying return type class NewClass : java.util.ArrayList() { - override fun toString() = "a" + public override fun toString() = "a" } diff --git a/compiler/testData/diagnostics/tests/scopes/visibility_inherit_modifier.jet b/compiler/testData/diagnostics/tests/scopes/visibility_inherit_modifier.jet index 273f4f8c705..345369ca996 100644 --- a/compiler/testData/diagnostics/tests/scopes/visibility_inherit_modifier.jet +++ b/compiler/testData/diagnostics/tests/scopes/visibility_inherit_modifier.jet @@ -18,7 +18,7 @@ open class D { } class E : D() { - internal override fun self() = this + internal override fun self() = this fun test() { val s : E = self() @@ -31,11 +31,7 @@ open class F { } class G : F() { - override fun protected_fun() {} -} - -fun test_fun_stays_protected(g: G) { - g.protected_fun() + override fun protected_fun() {} } //------------ @@ -61,11 +57,11 @@ trait T { } open class L : T { - override fun foo() {} + override fun foo() {} } class M : L() { - internal override fun foo() {} + internal override fun foo() {} } //--------------- trait R { @@ -82,4 +78,4 @@ trait Q : R { class S : P, Q { internal override fun foo() {} -} +} \ No newline at end of file diff --git a/libraries/kunit/src/main/kotlin/junit/JUnit.kt b/libraries/kunit/src/main/kotlin/junit/JUnit.kt index ebd721e5447..5af3d342a4c 100644 --- a/libraries/kunit/src/main/kotlin/junit/JUnit.kt +++ b/libraries/kunit/src/main/kotlin/junit/JUnit.kt @@ -4,23 +4,23 @@ import kotlin.test.Asserter import org.junit.Assert class JUnitAsserter : Asserter { - override fun assertEquals(message : String, expected : Any?, actual : Any?) { + public override fun assertEquals(message : String, expected : Any?, actual : Any?) { Assert.assertEquals(message, expected, actual) } - override fun assertNotNull(message : String, actual : Any?) { + public override fun assertNotNull(message : String, actual : Any?) { Assert.assertNotNull(message, actual) } - override fun assertNull(message : String, actual : Any?) { + public override fun assertNull(message : String, actual : Any?) { Assert.assertNull(message, actual) } - override fun assertTrue(message : String, actual : Boolean) { + public override fun assertTrue(message : String, actual : Boolean) { Assert.assertTrue(message, actual) } - override fun fail(message : String) { + public override fun fail(message : String) { Assert.fail(message) } } \ No newline at end of file diff --git a/libraries/stdlib/src/kotlin/Standard.kt b/libraries/stdlib/src/kotlin/Standard.kt index 266766d554c..b94495c3d12 100644 --- a/libraries/stdlib/src/kotlin/Standard.kt +++ b/libraries/stdlib/src/kotlin/Standard.kt @@ -21,7 +21,7 @@ public inline fun java.util.Iterator.iterator() : java.util.Iterator = Helper to make java.util.Enumeration usable in for */ public fun java.util.Enumeration.iterator(): Iterator = object: Iterator { - override val hasNext: Boolean + public override val hasNext: Boolean get() = hasMoreElements() public override fun next() : T = nextElement().sure() diff --git a/libraries/stdlib/src/kotlin/concurrent/FunctionalList.kt b/libraries/stdlib/src/kotlin/concurrent/FunctionalList.kt index 8d105274018..949346d9e98 100644 --- a/libraries/stdlib/src/kotlin/concurrent/FunctionalList.kt +++ b/libraries/stdlib/src/kotlin/concurrent/FunctionalList.kt @@ -35,15 +35,15 @@ abstract class FunctionalList(public val size: Int) { return head } - override val hasNext: Boolean + public override val hasNext: Boolean get() = !cur.empty } class object { class Empty() : FunctionalList(0) { - override val head: T + public override val head: T get() = throw java.util.NoSuchElementException() - override val tail: FunctionalList + public override val tail: FunctionalList get() = throw java.util.NoSuchElementException() } diff --git a/libraries/stdlib/src/kotlin/dom/Dom.kt b/libraries/stdlib/src/kotlin/dom/Dom.kt index 37d81f17283..19a13fd8776 100644 --- a/libraries/stdlib/src/kotlin/dom/Dom.kt +++ b/libraries/stdlib/src/kotlin/dom/Dom.kt @@ -201,7 +201,7 @@ fun Node.nextSiblings() : Iterator = NextSiblingIterator(this) class NextSiblingIterator(var node: Node) : AbstractIterator() { - override fun computeNext(): Unit { + protected override fun computeNext(): Unit { val next = node.getNextSibling() if (next != null) { setNext(next) @@ -215,7 +215,7 @@ fun Node.previousSiblings() : Iterator = PreviousSiblingIterator(this) class PreviousSiblingIterator(var node: Node) : AbstractIterator() { - override fun computeNext(): Unit { + protected override fun computeNext(): Unit { val next = node.getPreviousSibling() if (next != null) { setNext(next) @@ -323,7 +323,7 @@ fun NodeList?.toXmlString(xmlDeclaration: Boolean = false): String { } class NodeListAsList(val nodeList: NodeList): AbstractList() { - override fun get(index: Int): Node { + public override fun get(index: Int): Node { val node = nodeList.item(index) if (node == null) { throw IndexOutOfBoundsException("NodeList does not contain a node at index: " + index) @@ -332,11 +332,11 @@ class NodeListAsList(val nodeList: NodeList): AbstractList() { } } - override fun size(): Int = nodeList.getLength() + public override fun size(): Int = nodeList.getLength() } class ElementListAsList(val nodeList: NodeList): AbstractList() { - override fun get(index: Int): Element { + public override fun get(index: Int): Element { val node = nodeList.item(index) if (node is Element) { return node @@ -349,7 +349,7 @@ class ElementListAsList(val nodeList: NodeList): AbstractList() { } } - override fun size(): Int = nodeList.getLength() + public override fun size(): Int = nodeList.getLength() } diff --git a/libraries/stdlib/src/kotlin/io/JIO.kt b/libraries/stdlib/src/kotlin/io/JIO.kt index 64e03fcd449..559ba8ed130 100644 --- a/libraries/stdlib/src/kotlin/io/JIO.kt +++ b/libraries/stdlib/src/kotlin/io/JIO.kt @@ -172,7 +172,7 @@ public inline fun T.use(block: (T)-> R) : R { /** Returns an [Iterator] of bytes over an input stream */ public fun InputStream.iterator() : ByteIterator = object: ByteIterator() { - override val hasNext : Boolean + public override val hasNext : Boolean get() = available() > 0 public override fun nextByte() : Byte = read().toByte() @@ -236,7 +236,7 @@ class LineIterator(val reader: BufferedReader) : Iterator { private var nextValue: String? = null private var done = false - override val hasNext: Boolean + public override val hasNext: Boolean get() { if (nextValue == null && !done) { nextValue = reader.readLine() diff --git a/libraries/stdlib/src/kotlin/support/AbstractIterator.kt b/libraries/stdlib/src/kotlin/support/AbstractIterator.kt index 1c67ec0ad74..cddaaa2f083 100644 --- a/libraries/stdlib/src/kotlin/support/AbstractIterator.kt +++ b/libraries/stdlib/src/kotlin/support/AbstractIterator.kt @@ -17,7 +17,7 @@ public abstract class AbstractIterator: java.util.Iterator { private var state: State = State.NotReady private var next: T? = null - override fun hasNext(): Boolean { + public override fun hasNext(): Boolean { require(state != State.Failed) return when (state) { State.Done -> false @@ -26,13 +26,13 @@ public abstract class AbstractIterator: java.util.Iterator { } } - override fun next(): T { + public override fun next(): T { if (!hasNext()) throw NoSuchElementException() state = State.NotReady return next.sure() } - override fun remove() { + public override fun remove() { throw UnsupportedOperationException() } diff --git a/libraries/stdlib/test/CollectionTest.kt b/libraries/stdlib/test/CollectionTest.kt index b06fdcf2a13..deea459146f 100644 --- a/libraries/stdlib/test/CollectionTest.kt +++ b/libraries/stdlib/test/CollectionTest.kt @@ -406,7 +406,7 @@ class CollectionTest { class IterableWrapper(collection : java.lang.Iterable) : java.lang.Iterable { private val collection = collection - override fun iterator(): java.util.Iterator { + public override fun iterator(): java.util.Iterator { return collection.iterator().sure() } } diff --git a/libraries/stdlib/test/CompareTest.kt b/libraries/stdlib/test/CompareTest.kt index 81235609264..c0826f4aca2 100644 --- a/libraries/stdlib/test/CompareTest.kt +++ b/libraries/stdlib/test/CompareTest.kt @@ -43,10 +43,10 @@ class CompareTest { Test fun sortUsingCustomComparator() { val c = object : Comparator{ - override fun compare(o1: Item?, o2: Item?): Int { + public override fun compare(o1: Item?, o2: Item?): Int { return compareBy(o1, o2, {(it: Item) -> it.name}, {(it: Item) -> it.rating}) } - override fun equals(obj: Any?): Boolean { + public override fun equals(obj: Any?): Boolean { return this == obj } } diff --git a/libraries/stdlib/test/Test.kt b/libraries/stdlib/test/Test.kt index cb74e35f5d9..42cb6b755af 100644 --- a/libraries/stdlib/test/Test.kt +++ b/libraries/stdlib/test/Test.kt @@ -17,13 +17,13 @@ class TestBuilt(name: String, val builder: TestBuilder, val test: TestBuil get() = myState.sure() set(newState: T) { myState = newState } - override fun countTestCases(): Int = 1 + public override fun countTestCases(): Int = 1 - override fun setUp() = this.(builder.setUp)() + protected override fun setUp() = this.(builder.setUp)() - override fun tearDown() = this.(builder.tearDown)() + protected override fun tearDown() = this.(builder.tearDown)() - override fun runTest() = this.(test)() + protected override fun runTest() = this.(test)() } open class TestBuilder(name: String) { diff --git a/libraries/stdlib/test/concurrent/SerialFunAndTupleTest.kt b/libraries/stdlib/test/concurrent/SerialFunAndTupleTest.kt index 498aa1095e4..c279f3564e3 100644 --- a/libraries/stdlib/test/concurrent/SerialFunAndTupleTest.kt +++ b/libraries/stdlib/test/concurrent/SerialFunAndTupleTest.kt @@ -10,7 +10,7 @@ import junit.framework.TestCase import junit.framework.Assert class Serial(val a : String) : java.lang.Object(), Serializable { - override fun toString() = a + public override fun toString() = a } class SerialTest() : TestCase() { diff --git a/libraries/stdlib/test/properties/PropertiesTest.kt b/libraries/stdlib/test/properties/PropertiesTest.kt index b31dab87288..9d3d197e79a 100644 --- a/libraries/stdlib/test/properties/PropertiesTest.kt +++ b/libraries/stdlib/test/properties/PropertiesTest.kt @@ -28,7 +28,7 @@ class Customer() : ChangeSupport() { class MyChangeListener() : ChangeListener { val events = ArrayList() - override fun onPropertyChange(event: ChangeEvent): Unit { + public override fun onPropertyChange(event: ChangeEvent): Unit { println("Property changed: $event") events.add(event) }