private static String hasUnrelatedDefaults(List<PsiClass> defaults) {
if (defaults.size() > 1) {
- for (int i = 0; i < defaults.size(); i++) {
- final PsiClass aClass1 = defaults.get(i);
- for (int j = i + 1; j < defaults.size(); j++) {
- final PsiClass aClass2 = defaults.get(j);
- if (aClass2 != null && !belongToOneHierarchy(aClass1, aClass2)) {
- return HighlightUtil.formatClass(aClass1) + " and " + HighlightUtil.formatClass(aClass2);
- }
- }
+ PsiClass[] defaultClasses = defaults.toArray(PsiClass.EMPTY_ARRAY);
+ ArrayList<PsiClass> classes = new ArrayList<>(defaults);
+ for (final PsiClass aClass1 : defaultClasses) {
+ classes.removeIf(aClass2 -> aClass1.isInheritor(aClass2, true));
+ }
+
+ if (classes.size() > 1) {
+ return HighlightUtil.formatClass(classes.get(0)) + " and " + HighlightUtil.formatClass(classes.get(1));
}
}
--- /dev/null
+
+interface OraModMajorObject extends OraMajorObject {}
+interface OraModStoredSchemaObject extends OraStoredSchemaObject {}
+interface OraModCluster extends OraCluster, OraModMajorObject, OraModStoredSchemaObject {}
+
+interface OraStoredSchemaObject {
+ default boolean isNameSurrogate() {
+ return false;
+ }
+}
+interface OraMajorObject {
+ default boolean isNameSurrogate() {
+ return false;
+ }
+}
+interface OraCluster extends OraMajorObject, OraStoredSchemaObject {
+ default boolean isNameSurrogate() {
+ return false;
+ }
+}
\ No newline at end of file
/*
- * Copyright 2000-2013 JetBrains s.r.o.
+ * Copyright 2000-2016 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
doTest(false, false);
}
+ public void testUnrelatedDefaultsWhenOneInterfaceOverrides2Unrelated() throws Exception {
+ doTest(false, false);
+ }
+
public void testStaticMethodAccessibleBothThroughStaticImportAndInheritance() throws Exception {
myFixture.addClass("package p; public interface Foo {" +
" static void foo() {}" +