Report default object specific diagnostics on 'default' modifier
This commit is contained in:
@@ -188,8 +188,8 @@ public interface Errors {
|
||||
|
||||
// Default objects
|
||||
|
||||
DiagnosticFactory0<JetObjectDeclaration> MANY_DEFAULT_OBJECTS = DiagnosticFactory0.create(ERROR);
|
||||
DiagnosticFactory0<JetObjectDeclaration> DEFAULT_OBJECT_NOT_ALLOWED = DiagnosticFactory0.create(ERROR);
|
||||
DiagnosticFactory0<JetObjectDeclaration> MANY_DEFAULT_OBJECTS = DiagnosticFactory0.create(ERROR, DEFAULT_OBJECT);
|
||||
DiagnosticFactory0<JetObjectDeclaration> DEFAULT_OBJECT_NOT_ALLOWED = DiagnosticFactory0.create(ERROR, DEFAULT_OBJECT);
|
||||
|
||||
// Objects
|
||||
|
||||
|
||||
@@ -364,4 +364,13 @@ public object PositioningStrategies {
|
||||
return markRange(element.getOperationReference(), element)
|
||||
}
|
||||
}
|
||||
|
||||
public val DEFAULT_OBJECT: PositioningStrategy<JetObjectDeclaration> = object : PositioningStrategy<JetObjectDeclaration>() {
|
||||
override fun mark(element: JetObjectDeclaration): List<TextRange> {
|
||||
if (element.hasModifier(JetTokens.DEFAULT_KEYWORD)) {
|
||||
return modifierSetPosition(JetTokens.DEFAULT_KEYWORD).mark(element)
|
||||
}
|
||||
return DEFAULT.mark(element)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ class A {
|
||||
default <!REDECLARATION!>object<!> {
|
||||
val x = 1
|
||||
}
|
||||
default <!MANY_DEFAULT_OBJECTS, REDECLARATION!>object<!> {
|
||||
<!MANY_DEFAULT_OBJECTS!>default<!> <!REDECLARATION!>object<!> {
|
||||
val x = 1
|
||||
}
|
||||
}
|
||||
@@ -13,10 +13,10 @@ class AA {
|
||||
default object {
|
||||
val x = 1
|
||||
}
|
||||
default <!MANY_DEFAULT_OBJECTS!>object A<!> {
|
||||
<!MANY_DEFAULT_OBJECTS!>default<!> object A {
|
||||
val x = 1
|
||||
}
|
||||
default <!MANY_DEFAULT_OBJECTS!>object AA<!> {
|
||||
<!MANY_DEFAULT_OBJECTS!>default<!> object AA {
|
||||
val x = 1
|
||||
}
|
||||
}
|
||||
@@ -26,7 +26,7 @@ class B() {
|
||||
}
|
||||
|
||||
object b {
|
||||
default <!DEFAULT_OBJECT_NOT_ALLOWED!>object<!> {
|
||||
<!DEFAULT_OBJECT_NOT_ALLOWED!>default<!> object {
|
||||
val x = 1
|
||||
} // error
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
class A {
|
||||
inner class B {
|
||||
default <!DEFAULT_OBJECT_NOT_ALLOWED!>object<!> { }
|
||||
<!DEFAULT_OBJECT_NOT_ALLOWED!>default<!> object { }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
fun test() {
|
||||
class A {
|
||||
default <!DEFAULT_OBJECT_NOT_ALLOWED!>object<!> {}
|
||||
<!DEFAULT_OBJECT_NOT_ALLOWED!>default<!> object {}
|
||||
}
|
||||
|
||||
object {
|
||||
default <!DEFAULT_OBJECT_NOT_ALLOWED!>object<!> {}
|
||||
<!DEFAULT_OBJECT_NOT_ALLOWED!>default<!> object {}
|
||||
}
|
||||
}
|
||||
+6
-6
@@ -1,17 +1,17 @@
|
||||
class A {
|
||||
inner class I {
|
||||
default <!DEFAULT_OBJECT_NOT_ALLOWED!>object A<!>
|
||||
<!DEFAULT_OBJECT_NOT_ALLOWED!>default<!> object A
|
||||
|
||||
default <!MANY_DEFAULT_OBJECTS, MANY_DEFAULT_OBJECTS, DEFAULT_OBJECT_NOT_ALLOWED!>object B<!>
|
||||
<!MANY_DEFAULT_OBJECTS, MANY_DEFAULT_OBJECTS, DEFAULT_OBJECT_NOT_ALLOWED!>default<!> object B
|
||||
|
||||
default <!MANY_DEFAULT_OBJECTS, MANY_DEFAULT_OBJECTS, DEFAULT_OBJECT_NOT_ALLOWED!>object C<!>
|
||||
<!MANY_DEFAULT_OBJECTS, MANY_DEFAULT_OBJECTS, DEFAULT_OBJECT_NOT_ALLOWED!>default<!> object C
|
||||
}
|
||||
}
|
||||
|
||||
object O {
|
||||
default <!DEFAULT_OBJECT_NOT_ALLOWED!>object A<!>
|
||||
<!DEFAULT_OBJECT_NOT_ALLOWED!>default<!> object A
|
||||
|
||||
default <!MANY_DEFAULT_OBJECTS, DEFAULT_OBJECT_NOT_ALLOWED!>object B<!>
|
||||
<!MANY_DEFAULT_OBJECTS, DEFAULT_OBJECT_NOT_ALLOWED!>default<!> object B
|
||||
|
||||
default <!MANY_DEFAULT_OBJECTS, DEFAULT_OBJECT_NOT_ALLOWED!>object C<!>
|
||||
<!MANY_DEFAULT_OBJECTS, DEFAULT_OBJECT_NOT_ALLOWED!>default<!> object C
|
||||
}
|
||||
@@ -2,7 +2,7 @@ enum class E {
|
||||
FIRST
|
||||
|
||||
SECOND {
|
||||
default <!DEFAULT_OBJECT_NOT_ALLOWED!>object<!> {
|
||||
<!DEFAULT_OBJECT_NOT_ALLOWED!>default<!> object {
|
||||
fun foo() = 42
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ class A<T> {
|
||||
class B {
|
||||
fun test() {
|
||||
class C<W>() : P<W, <!INACCESSIBLE_OUTER_CLASS_EXPRESSION!>T<!>> {
|
||||
default <!DEFAULT_OBJECT_NOT_ALLOWED!>object<!> : P<<!INACCESSIBLE_OUTER_CLASS_EXPRESSION!>W<!>, <!INACCESSIBLE_OUTER_CLASS_EXPRESSION!>T<!>> {
|
||||
<!DEFAULT_OBJECT_NOT_ALLOWED!>default<!> object : P<<!INACCESSIBLE_OUTER_CLASS_EXPRESSION!>W<!>, <!INACCESSIBLE_OUTER_CLASS_EXPRESSION!>T<!>> {
|
||||
}
|
||||
|
||||
inner class D : P<W, <!INACCESSIBLE_OUTER_CLASS_EXPRESSION!>T<!>>
|
||||
|
||||
@@ -18,13 +18,13 @@ class C {
|
||||
|
||||
class D {
|
||||
default object A {
|
||||
default <!DEFAULT_OBJECT_NOT_ALLOWED!>object<!> {
|
||||
<!DEFAULT_OBJECT_NOT_ALLOWED!>default<!> object {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
<!ILLEGAL_MODIFIER!>default<!> object G {
|
||||
default <!DEFAULT_OBJECT_NOT_ALLOWED!>object<!>
|
||||
<!DEFAULT_OBJECT_NOT_ALLOWED!>default<!> object
|
||||
}
|
||||
|
||||
<!ILLEGAL_MODIFIER!>default<!> trait H {
|
||||
@@ -33,7 +33,7 @@ class D {
|
||||
|
||||
class J {
|
||||
default object C {
|
||||
default <!DEFAULT_OBJECT_NOT_ALLOWED!>object<!>
|
||||
<!DEFAULT_OBJECT_NOT_ALLOWED!>default<!> object
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ class A {
|
||||
default object {
|
||||
val x = 1
|
||||
}
|
||||
default <error descr="[MANY_DEFAULT_OBJECTS] Only one default object is allowed per class">object Another</error> { // error
|
||||
<error descr="[MANY_DEFAULT_OBJECTS] Only one default object is allowed per class">default</error> object Another { // error
|
||||
val x = 1
|
||||
}
|
||||
}
|
||||
@@ -14,7 +14,7 @@ class B() {
|
||||
}
|
||||
|
||||
object b {
|
||||
default <error descr="[DEFAULT_OBJECT_NOT_ALLOWED] A default object is not allowed here">object</error> {
|
||||
<error descr="[DEFAULT_OBJECT_NOT_ALLOWED] A default object is not allowed here">default</error> object {
|
||||
val x = 1
|
||||
}
|
||||
// error
|
||||
|
||||
Reference in New Issue
Block a user