Report default object specific diagnostics on 'default' modifier
This commit is contained in:
@@ -188,8 +188,8 @@ public interface Errors {
|
|||||||
|
|
||||||
// Default objects
|
// Default objects
|
||||||
|
|
||||||
DiagnosticFactory0<JetObjectDeclaration> MANY_DEFAULT_OBJECTS = DiagnosticFactory0.create(ERROR);
|
DiagnosticFactory0<JetObjectDeclaration> MANY_DEFAULT_OBJECTS = DiagnosticFactory0.create(ERROR, DEFAULT_OBJECT);
|
||||||
DiagnosticFactory0<JetObjectDeclaration> DEFAULT_OBJECT_NOT_ALLOWED = DiagnosticFactory0.create(ERROR);
|
DiagnosticFactory0<JetObjectDeclaration> DEFAULT_OBJECT_NOT_ALLOWED = DiagnosticFactory0.create(ERROR, DEFAULT_OBJECT);
|
||||||
|
|
||||||
// Objects
|
// Objects
|
||||||
|
|
||||||
|
|||||||
@@ -364,4 +364,13 @@ public object PositioningStrategies {
|
|||||||
return markRange(element.getOperationReference(), element)
|
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<!> {
|
default <!REDECLARATION!>object<!> {
|
||||||
val x = 1
|
val x = 1
|
||||||
}
|
}
|
||||||
default <!MANY_DEFAULT_OBJECTS, REDECLARATION!>object<!> {
|
<!MANY_DEFAULT_OBJECTS!>default<!> <!REDECLARATION!>object<!> {
|
||||||
val x = 1
|
val x = 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -13,10 +13,10 @@ class AA {
|
|||||||
default object {
|
default object {
|
||||||
val x = 1
|
val x = 1
|
||||||
}
|
}
|
||||||
default <!MANY_DEFAULT_OBJECTS!>object A<!> {
|
<!MANY_DEFAULT_OBJECTS!>default<!> object A {
|
||||||
val x = 1
|
val x = 1
|
||||||
}
|
}
|
||||||
default <!MANY_DEFAULT_OBJECTS!>object AA<!> {
|
<!MANY_DEFAULT_OBJECTS!>default<!> object AA {
|
||||||
val x = 1
|
val x = 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -26,7 +26,7 @@ class B() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
object b {
|
object b {
|
||||||
default <!DEFAULT_OBJECT_NOT_ALLOWED!>object<!> {
|
<!DEFAULT_OBJECT_NOT_ALLOWED!>default<!> object {
|
||||||
val x = 1
|
val x = 1
|
||||||
} // error
|
} // error
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
class A {
|
class A {
|
||||||
inner class B {
|
inner class B {
|
||||||
default <!DEFAULT_OBJECT_NOT_ALLOWED!>object<!> { }
|
<!DEFAULT_OBJECT_NOT_ALLOWED!>default<!> object { }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
fun test() {
|
fun test() {
|
||||||
class A {
|
class A {
|
||||||
default <!DEFAULT_OBJECT_NOT_ALLOWED!>object<!> {}
|
<!DEFAULT_OBJECT_NOT_ALLOWED!>default<!> object {}
|
||||||
}
|
}
|
||||||
|
|
||||||
object {
|
object {
|
||||||
default <!DEFAULT_OBJECT_NOT_ALLOWED!>object<!> {}
|
<!DEFAULT_OBJECT_NOT_ALLOWED!>default<!> object {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+6
-6
@@ -1,17 +1,17 @@
|
|||||||
class A {
|
class A {
|
||||||
inner class I {
|
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 {
|
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
|
FIRST
|
||||||
|
|
||||||
SECOND {
|
SECOND {
|
||||||
default <!DEFAULT_OBJECT_NOT_ALLOWED!>object<!> {
|
<!DEFAULT_OBJECT_NOT_ALLOWED!>default<!> object {
|
||||||
fun foo() = 42
|
fun foo() = 42
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ class A<T> {
|
|||||||
class B {
|
class B {
|
||||||
fun test() {
|
fun test() {
|
||||||
class C<W>() : P<W, <!INACCESSIBLE_OUTER_CLASS_EXPRESSION!>T<!>> {
|
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<!>>
|
inner class D : P<W, <!INACCESSIBLE_OUTER_CLASS_EXPRESSION!>T<!>>
|
||||||
|
|||||||
@@ -18,13 +18,13 @@ class C {
|
|||||||
|
|
||||||
class D {
|
class D {
|
||||||
default object A {
|
default object A {
|
||||||
default <!DEFAULT_OBJECT_NOT_ALLOWED!>object<!> {
|
<!DEFAULT_OBJECT_NOT_ALLOWED!>default<!> object {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
<!ILLEGAL_MODIFIER!>default<!> object G {
|
<!ILLEGAL_MODIFIER!>default<!> object G {
|
||||||
default <!DEFAULT_OBJECT_NOT_ALLOWED!>object<!>
|
<!DEFAULT_OBJECT_NOT_ALLOWED!>default<!> object
|
||||||
}
|
}
|
||||||
|
|
||||||
<!ILLEGAL_MODIFIER!>default<!> trait H {
|
<!ILLEGAL_MODIFIER!>default<!> trait H {
|
||||||
@@ -33,7 +33,7 @@ class D {
|
|||||||
|
|
||||||
class J {
|
class J {
|
||||||
default object C {
|
default object C {
|
||||||
default <!DEFAULT_OBJECT_NOT_ALLOWED!>object<!>
|
<!DEFAULT_OBJECT_NOT_ALLOWED!>default<!> object
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ class A {
|
|||||||
default object {
|
default object {
|
||||||
val x = 1
|
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
|
val x = 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -14,7 +14,7 @@ class B() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
object 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
|
val x = 1
|
||||||
}
|
}
|
||||||
// error
|
// error
|
||||||
|
|||||||
Reference in New Issue
Block a user