Java 8 rules for method overrides:

- report errors on implementing methods of Any in interfaces
- update testData

~~~

Java 8 override restrictions: interface can't implement a method of 'Any'
- update compiler sources
This commit is contained in:
Dmitry Petrov
2015-10-08 13:00:13 +03:00
parent 5d9ee7efee
commit 7e9e427d4c
36 changed files with 247 additions and 190 deletions
@@ -33,7 +33,7 @@ public class SamConstructorDescriptor(
samInterface.getSource()
)
public object SamConstructorDescriptorKindExclude : DescriptorKindExclude {
public object SamConstructorDescriptorKindExclude : DescriptorKindExclude() {
override fun excludes(descriptor: DeclarationDescriptor) = descriptor is SamConstructorDescriptor
override val fullyExcludedDescriptorKinds: Int get() = 0
@@ -211,21 +211,21 @@ public class DescriptorKindFilter(
}
}
public interface DescriptorKindExclude {
public fun excludes(descriptor: DeclarationDescriptor): Boolean
public abstract class DescriptorKindExclude {
public abstract fun excludes(descriptor: DeclarationDescriptor): Boolean
public val fullyExcludedDescriptorKinds: Int
public abstract val fullyExcludedDescriptorKinds: Int
override fun toString() = this.javaClass.getSimpleName()
public object Extensions : DescriptorKindExclude {
public object Extensions : DescriptorKindExclude() {
override fun excludes(descriptor: DeclarationDescriptor)
= descriptor is CallableDescriptor && descriptor.getExtensionReceiverParameter() != null
override val fullyExcludedDescriptorKinds: Int get() = 0
}
public object NonExtensions : DescriptorKindExclude {
public object NonExtensions : DescriptorKindExclude() {
override fun excludes(descriptor: DeclarationDescriptor)
= descriptor !is CallableDescriptor || descriptor.getExtensionReceiverParameter() == null
@@ -233,14 +233,14 @@ public interface DescriptorKindExclude {
get() = DescriptorKindFilter.ALL_KINDS_MASK and (DescriptorKindFilter.FUNCTIONS_MASK or DescriptorKindFilter.VARIABLES_MASK).inv()
}
public object EnumEntry : DescriptorKindExclude {
public object EnumEntry : DescriptorKindExclude() {
override fun excludes(descriptor: DeclarationDescriptor)
= descriptor is ClassDescriptor && descriptor.getKind() == ClassKind.ENUM_ENTRY
override val fullyExcludedDescriptorKinds: Int get() = 0
}
public object TopLevelPackages : DescriptorKindExclude {
public object TopLevelPackages : DescriptorKindExclude() {
override fun excludes(descriptor: DeclarationDescriptor): Boolean {
val fqName = when (descriptor) {
is PackageFragmentDescriptor -> descriptor.fqName