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
@@ -56,7 +56,7 @@ public sealed class CallType<TReceiver : JetElement?>(val descriptorKindFilter:
object TYPE : CallType<JetExpression?>(DescriptorKindFilter(DescriptorKindFilter.CLASSIFIERS_MASK or DescriptorKindFilter.PACKAGES_MASK))
private object NonInfixExclude : DescriptorKindExclude {
private object NonInfixExclude : DescriptorKindExclude() {
//TODO: check 'infix' modifier
override fun excludes(descriptor: DeclarationDescriptor) =
!(descriptor is SimpleFunctionDescriptor && descriptor.valueParameters.size() == 1)
@@ -65,7 +65,7 @@ public sealed class CallType<TReceiver : JetElement?>(val descriptorKindFilter:
get() = 0
}
private object NonOperatorExclude : DescriptorKindExclude {
private object NonOperatorExclude : DescriptorKindExclude() {
override fun excludes(descriptor: DeclarationDescriptor) =
!(descriptor is SimpleFunctionDescriptor && descriptor.isOperator)
@@ -73,7 +73,7 @@ public sealed class CallType<TReceiver : JetElement?>(val descriptorKindFilter:
get() = 0
}
private object CallableReferenceExclude : DescriptorKindExclude {
private object CallableReferenceExclude : DescriptorKindExclude() {
override fun excludes(descriptor: DeclarationDescriptor) /* currently not supported for locals, synthetic and genetic */
= descriptor !is CallableMemberDescriptor || descriptor.kind == CallableMemberDescriptor.Kind.SYNTHESIZED || descriptor.typeParameters.isNotEmpty()
@@ -397,7 +397,7 @@ class BasicCompletionSession(configuration: CompletionSessionConfiguration,
}
private companion object {
object NonAnnotationClassifierExclude : DescriptorKindExclude {
object NonAnnotationClassifierExclude : DescriptorKindExclude() {
override fun excludes(descriptor: DeclarationDescriptor): Boolean {
if (descriptor !is ClassifierDescriptor) return false
return descriptor !is ClassDescriptor || descriptor.getKind() != ClassKind.ANNOTATION_CLASS