Highlight only declarations, without body, on platform signature clashes

This commit is contained in:
Andrey Breslav
2014-05-28 12:35:50 +04:00
parent 3575c375e3
commit 22c47c2f82
43 changed files with 95 additions and 76 deletions
@@ -203,7 +203,7 @@ public interface Errors {
DiagnosticFactory0<JetNamedDeclaration> PUBLIC_MEMBER_SHOULD_SPECIFY_TYPE = DiagnosticFactory0.create(ERROR, NAMED_ELEMENT);
DiagnosticFactory2<JetDeclaration, CallableMemberDescriptor, String> CONFLICTING_OVERLOADS = DiagnosticFactory2.create(ERROR, DECLARATION);
DiagnosticFactory1<PsiElement, String> CONFLICTING_PLATFORM_DECLARATIONS = DiagnosticFactory1.create(ERROR);
DiagnosticFactory1<PsiElement, String> CONFLICTING_PLATFORM_DECLARATIONS = DiagnosticFactory1.create(ERROR, DECLARATION_OR_DEFAULT);
DiagnosticFactory0<JetNamedDeclaration> NON_FINAL_MEMBER_IN_FINAL_CLASS = DiagnosticFactory0.create(WARNING, modifierSetPosition(
JetTokens.OPEN_KEYWORD));
@@ -190,6 +190,25 @@ public class PositioningStrategies {
}
};
public static final PositioningStrategy<PsiElement> DECLARATION_OR_DEFAULT = new PositioningStrategy<PsiElement>() {
@NotNull
@Override
public List<TextRange> mark(@NotNull PsiElement element) {
if (element instanceof JetDeclaration) {
return DECLARATION.mark((JetDeclaration) element);
}
return DEFAULT.mark(element);
}
@Override
public boolean isValid(@NotNull PsiElement element) {
if (element instanceof JetDeclaration) {
return DECLARATION.isValid((JetDeclaration) element);
}
return DEFAULT.isValid(element);
}
};
public static final PositioningStrategy<JetModifierListOwner> ABSTRACT_MODIFIER = modifierSetPosition(JetTokens.ABSTRACT_KEYWORD);
public static final PositioningStrategy<JetModifierListOwner> OVERRIDE_MODIFIER = modifierSetPosition(JetTokens.OVERRIDE_KEYWORD);
@@ -4,5 +4,5 @@ open class B {
class C : B() {
val x: Int
<!CONFLICTING_PLATFORM_DECLARATIONS!>get() = 1<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>get()<!> = 1
}
@@ -4,5 +4,5 @@ open class B {
}
class C : B() {
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun getX() = 1<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun getX()<!> = 1
}
@@ -4,5 +4,5 @@ trait T {
}
class C : T {
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun getX() = 1<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun getX()<!> = 1
}
@@ -1,4 +1,4 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun foo(s: List<String>) {}<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun foo(s: MutableList<String>) {}<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun foo(s: List<String>)<!> {}
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun foo(s: MutableList<String>)<!> {}
@@ -8,5 +8,5 @@ trait Bar<T> {
fun foo(l: List<T>)
}
<!CONFLICTING_PLATFORM_DECLARATIONS!>class Baz(f: Foo<String>, b: Bar<Int>): Foo<String> by f, Bar<Int> by b {
}<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>class Baz(f: Foo<String>, b: Bar<Int>)<!>: Foo<String> by f, Bar<Int> by b {
}
@@ -5,5 +5,5 @@ trait Foo<T> {
}
class Bar(f: Foo<String>): Foo<String> by f {
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun foo(l: List<Int>) {}<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun foo(l: List<Int>)<!> {}
}
@@ -2,5 +2,5 @@
class G<T>
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun foo(x: G<String>): G<Int> {null!!}<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun foo(x: G<Int>): G<String> {null!!}<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun foo(x: G<String>): G<Int><!> {null!!}
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun foo(x: G<Int>): G<String><!> {null!!}
@@ -1,4 +1,4 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER -PLATFORM_CLASS_MAPPED_TO_KOTLIN
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun foo(s: List<String>) {}<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun foo(s: java.util.List<String>) {}<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun foo(s: List<String>)<!> {}
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun foo(s: java.util.List<String>)<!> {}
@@ -1,4 +1,4 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun foo(x: String) {}<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun foo(x: String?) {}<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun foo(x: String)<!> {}
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun foo(x: String?)<!> {}
@@ -1,4 +1,4 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER -PLATFORM_CLASS_MAPPED_TO_KOTLIN
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun foo(s: java.lang.String) {}<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun foo(s: String) {}<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun foo(s: java.lang.String)<!> {}
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun foo(s: String)<!> {}
@@ -1,4 +1,4 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun <T> foo(x: T): T {null!!}<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun foo(x: Any): Any {null!!}<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun <T> foo(x: T): T<!> {null!!}
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun foo(x: Any): Any<!> {null!!}
@@ -2,5 +2,5 @@
trait Foo
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun <T: Foo> foo(x: T): T {null!!}<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun foo(x: Foo): Foo {null!!}<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun <T: Foo> foo(x: T): T<!> {null!!}
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun foo(x: Foo): Foo<!> {null!!}
@@ -3,6 +3,6 @@
trait Foo
trait Bar
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun <T: Foo> foo(x: T): T where T: Bar {null!!}<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun foo(x: Foo): Foo {null!!}<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun <T: Foo> foo(x: T): T where T: Bar<!> {null!!}
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun foo(x: Foo): Foo<!> {null!!}
fun foo(x: Bar): Bar {null!!}
@@ -3,6 +3,6 @@
trait Foo
trait Bar
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun <T> foo(x: T): T where T: Foo, T: Bar {null!!}<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun foo(x: Foo): Foo {null!!}<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun <T> foo(x: T): T where T: Foo, T: Bar<!> {null!!}
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun foo(x: Foo): Foo<!> {null!!}
fun foo(x: Bar): Bar {null!!}
@@ -1,4 +1,4 @@
class C {
<!CONFLICTING_PLATFORM_DECLARATIONS!>val x = 1<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun getX() = 1<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>val x<!> = 1
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun getX()<!> = 1
}
@@ -1,6 +1,6 @@
class C {
class object {
<!CONFLICTING_PLATFORM_DECLARATIONS!>val x = 1<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun getX() = 1<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>val x<!> = 1
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun getX()<!> = 1
}
}
@@ -1,6 +1,6 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
class C {
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun foo(x: Any) {}<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun Any.foo() {}<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun foo(x: Any)<!> {}
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun Any.foo()<!> {}
}
@@ -1,7 +1,7 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
class C {
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun getX(t: Any) = 1<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun getX(t: Any)<!> = 1
val Any.x: Int
<!CONFLICTING_PLATFORM_DECLARATIONS!>get() = 1<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>get()<!> = 1
}
@@ -1,7 +1,7 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
class C {
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun setX(x: Int) {}<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun setX(x: Int)<!> {}
<!CONFLICTING_PLATFORM_DECLARATIONS!>var x: Int = 1<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>var x: Int<!> = 1
}
@@ -1,7 +1,7 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
class C {
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun setX(x: Int) {}<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun setX(x: Int)<!> {}
var x: Int = 1
<!CONFLICTING_PLATFORM_DECLARATIONS!>set(v) {}<!>
@@ -1,6 +1,6 @@
fun foo() {
class C {
<!CONFLICTING_PLATFORM_DECLARATIONS!>val x = 1<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun getX() = 1<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>val x<!> = 1
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun getX()<!> = 1
}
}
@@ -1,6 +1,6 @@
class B {
class C {
<!CONFLICTING_PLATFORM_DECLARATIONS!>val x = 1<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun getX() = 1<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>val x<!> = 1
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun getX()<!> = 1
}
}
@@ -1,4 +1,4 @@
object C {
<!CONFLICTING_PLATFORM_DECLARATIONS!>val x = 1<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun getX() = 1<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>val x<!> = 1
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun getX()<!> = 1
}
@@ -1,5 +1,5 @@
fun foo() =
object {
<!CONFLICTING_PLATFORM_DECLARATIONS!>val x = 1<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun getX() = 1<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>val x<!> = 1
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun getX()<!> = 1
}
@@ -1,2 +1,2 @@
<!CONFLICTING_PLATFORM_DECLARATIONS!>val x = 1<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun getX() = 1<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>val x<!> = 1
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun getX()<!> = 1
@@ -1,5 +1,5 @@
// FILE: a.kt
<!CONFLICTING_PLATFORM_DECLARATIONS!>val x = 1<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>val x<!> = 1
// FILE: b.kt
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun getX() = 1<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun getX()<!> = 1
@@ -1,3 +1,3 @@
val x: Int
<!CONFLICTING_PLATFORM_DECLARATIONS!>get() = 1<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun getX() = 1<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>get()<!> = 1
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun getX()<!> = 1
@@ -1,5 +1,5 @@
trait T {
val x: Int
<!CONFLICTING_PLATFORM_DECLARATIONS!>get() = 1<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun getX() = 1<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>get()<!> = 1
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun getX()<!> = 1
}
@@ -1,5 +1,5 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
data class C(val c: Int) {
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun `copy$default`(c: C, x: Int, m: Int) = 1<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun `copy$default`(c: C, x: Int, m: Int)<!> = 1
}
@@ -1,6 +1,6 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
<!CONFLICTING_PLATFORM_DECLARATIONS!>class C {
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun `a$default`(c: C, x: Int, m: Int) {}<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>class C<!> {
<!CONFLICTING_PLATFORM_DECLARATIONS!>fun `a$default`(c: C, x: Int, m: Int)<!> {}
fun a(x: Int = 1) {}
}<!>
}
@@ -1,5 +1,5 @@
trait Foo
class Bar(f: Foo) : Foo by f {
<!CONFLICTING_PLATFORM_DECLARATIONS!>val `$delegate_0`: Foo? = null<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>val `$delegate_0`: Foo?<!> = null
}
@@ -1,7 +1,7 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
class C {
<!CONFLICTING_PLATFORM_DECLARATIONS!>inner class D {
<!CONFLICTING_PLATFORM_DECLARATIONS!>val `this$0`: C? = null<!>
}<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>inner class D<!> {
<!CONFLICTING_PLATFORM_DECLARATIONS!>val `this$0`: C?<!> = null
}
}
@@ -3,5 +3,5 @@ trait T {
}
class C : T {
<!CONFLICTING_PLATFORM_DECLARATIONS!>val x = 1<!>
<!CONFLICTING_PLATFORM_DECLARATIONS!>val x<!> = 1
}
@@ -1,4 +1,4 @@
class C {
<error>val x = 1</error>
<error>fun getX() = 1</error>
<error>val x</error> = 1
<error>fun getX()</error> = 1
}
@@ -1,6 +1,6 @@
class C {
class object {
<error>val x = 1</error>
<error>fun getX() = 1</error>
<error>val x</error> = 1
<error>fun getX()</error> = 1
}
}
@@ -1,6 +1,6 @@
fun foo() {
class C {
<error>val x = 1</error>
<error>fun getX() = 1</error>
<error>val x</error> = 1
<error>fun getX()</error> = 1
}
}
@@ -1,6 +1,6 @@
class B {
class C {
<error>val x = 1</error>
<error>fun getX() = 1</error>
<error>val x</error> = 1
<error>fun getX()</error> = 1
}
}
@@ -1,4 +1,4 @@
object C {
<error>val x = 1</error>
<error>fun getX() = 1</error>
<error>val x</error> = 1
<error>fun getX()</error> = 1
}
@@ -1,5 +1,5 @@
fun foo() =
object {
<error>val x = 1</error>
<error>fun getX() = 1</error>
<error>val x</error> = 1
<error>fun getX()</error> = 1
}
@@ -1,2 +1,2 @@
<error>val x = 1</error>
<error>fun getX() = 1</error>
<error>val x</error> = 1
<error>fun getX()</error> = 1
@@ -7,5 +7,5 @@ trait T2 {
get() = 1
}
<error>class C : T1, T2</error> {
class <error>C</error> : T1, T2 {
}