Old backing field with dollar is now forbidden

This commit is contained in:
Mikhail Glukhikh
2015-10-08 19:51:02 +03:00
parent 5117f744f7
commit 6914d09297
77 changed files with 88 additions and 637 deletions
@@ -11,9 +11,8 @@ interface NoC {
}
class WithC() {
val x : Int
val x : Int = 1
init {
<!BACKING_FIELD_USAGE_DEPRECATED!>$x<!> = 1
<!UNRESOLVED_REFERENCE!>$y<!> = 2
val <!UNUSED_VARIABLE!>b<!> = x
@@ -10,7 +10,7 @@ public interface NoC {
public final class WithC {
public constructor WithC()
public final val a: kotlin.Int
public final val x: kotlin.Int
public final val x: kotlin.Int = 1
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
-1
View File
@@ -24,7 +24,6 @@ class WithCPI_Dup(<!UNUSED_PARAMETER!>x<!> : Int) {
class WithCPI(x : Int) {
val a = 1
val b : Int = <!BACKING_FIELD_USAGE_DEPRECATED!>$a<!>
val xy : Int = x
}
-1
View File
@@ -68,7 +68,6 @@ public final class WithC2 : WithC1 {
public final class WithCPI {
public constructor WithCPI(/*0*/ x: kotlin.Int)
public final val a: kotlin.Int = 1
public final val b: kotlin.Int = 1
public final val xy: kotlin.Int
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
+1 -4
View File
@@ -5,10 +5,7 @@ open class `$$$$$`() {
open class `$`() {
}
open class `$$`(`$$$$` : `$$$$$`?) : `$`() {
val `$$$` : `$$$$$`?
init {
<!BACKING_FIELD_USAGE_DEPRECATED!>$`$$$`<!> = `$$$$`
}
val `$$$` : `$$$$$`? = `$$$$`
open public fun `$$$$$$`() : `$$$$$`? {
return `$$$`
}
+4 -4
View File
@@ -14,16 +14,16 @@ var x : Int = 1 + <!UNINITIALIZED_VARIABLE!>x<!>
class Test() {
var a : Int = 111
var b : Int get() = <!BACKING_FIELD_USAGE_DEPRECATED!>$a<!>; set(x) {a = x; <!BACKING_FIELD_USAGE_DEPRECATED!>$a<!> = x}
var b : Int get() = <!BACKING_FIELD_USAGE_FORBIDDEN!>$a<!>; set(x) {a = x; <!BACKING_FIELD_USAGE_FORBIDDEN!>$a<!> = x}
init {
<!NO_BACKING_FIELD_CUSTOM_ACCESSORS!>$b<!> = <!BACKING_FIELD_USAGE_DEPRECATED!>$a<!>
<!BACKING_FIELD_USAGE_DEPRECATED!>$a<!> = <!NO_BACKING_FIELD_CUSTOM_ACCESSORS!>$b<!>
<!NO_BACKING_FIELD_CUSTOM_ACCESSORS!>$b<!> = <!BACKING_FIELD_USAGE_FORBIDDEN!>$a<!>
<!BACKING_FIELD_USAGE_FORBIDDEN!>$a<!> = <!NO_BACKING_FIELD_CUSTOM_ACCESSORS!>$b<!>
a = <!NO_BACKING_FIELD_CUSTOM_ACCESSORS!>$b<!>
}
fun f() {
<!NO_BACKING_FIELD_CUSTOM_ACCESSORS!>$b<!> = <!BACKING_FIELD_USAGE_DEPRECATED!>$a<!>
<!NO_BACKING_FIELD_CUSTOM_ACCESSORS!>$b<!> = <!BACKING_FIELD_USAGE_FORBIDDEN!>$a<!>
a = <!NO_BACKING_FIELD_CUSTOM_ACCESSORS!>$b<!>
}
public val i = 1
@@ -130,13 +130,4 @@ fun testObject() : Trait {
return o
}
fun testBackingFieldsNotMarked() {
val <!UNUSED_VARIABLE!>a<!> = object {
val x : Int
init {
<!BACKING_FIELD_USAGE_DEPRECATED!>$x<!> = 1
}
}
}
fun doSmth(<!UNUSED_PARAMETER!>i<!> : Int) {}
@@ -2,7 +2,6 @@ package
package unused_variables {
public fun doSmth(/*0*/ i: kotlin.Int): kotlin.Unit
public fun testBackingFieldsNotMarked(): kotlin.Unit
public fun testFunctionLiterals(): kotlin.Unit
public fun testInnerFunctions(): kotlin.Unit
public fun testObject(): unused_variables.Trait
@@ -1,11 +0,0 @@
class Flower() {
var minusOne: Int = 1
get() = field + 1
set(n: Int) { field = n - 1 }
var oldSyntax: Int = 1
get() = <!BACKING_FIELD_SYNTAX_DEPRECATED!>$oldSyntax<!> - 1
set(arg) { <!BACKING_FIELD_SYNTAX_DEPRECATED!>$oldSyntax<!> = arg + 1 }
}
@@ -1,10 +0,0 @@
package
public final class Flower {
public constructor Flower()
public final var minusOne: kotlin.Int
public final var oldSyntax: kotlin.Int
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -1,7 +0,0 @@
class ReadForward() {
init {
val <!UNUSED_VARIABLE!>x<!> = <!BACKING_FIELD_USAGE_DEPRECATED, UNINITIALIZED_VARIABLE!>$a<!>
}
val a = 1
}
@@ -1,9 +0,0 @@
package
public final class ReadForward {
public constructor ReadForward()
public final val a: kotlin.Int = 1
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -1,4 +0,0 @@
class ReadForward() {
val a = <!BACKING_FIELD_USAGE_DEPRECATED, UNINITIALIZED_VARIABLE!>$b<!>
val b = 1
}
@@ -1,10 +0,0 @@
package
public final class ReadForward {
public constructor ReadForward()
public final val a: kotlin.Int = 1
public final val b: kotlin.Int = 1
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -1,6 +0,0 @@
class ReadByAnotherPropertyInitializer() {
val a = 1
init {
val <!UNUSED_VARIABLE!>x<!> = <!BACKING_FIELD_USAGE_DEPRECATED!>$a<!>
}
}
@@ -1,9 +0,0 @@
package
public final class ReadByAnotherPropertyInitializer {
public constructor ReadByAnotherPropertyInitializer()
public final val a: kotlin.Int = 1
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -1,4 +0,0 @@
class ReadByAnotherPropertyInitializer() {
val a = 1
val b = <!BACKING_FIELD_USAGE_DEPRECATED!>$a<!>
}
@@ -1,10 +0,0 @@
package
public final class ReadByAnotherPropertyInitializer {
public constructor ReadByAnotherPropertyInitializer()
public final val a: kotlin.Int = 1
public final val b: kotlin.Int = 1
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -1,4 +0,0 @@
class ReadByAnotherPropertyInitializer() {
val a = 1
fun ff() = <!BACKING_FIELD_USAGE_DEPRECATED!>$a<!>
}
@@ -1,10 +0,0 @@
package
public final class ReadByAnotherPropertyInitializer {
public constructor ReadByAnotherPropertyInitializer()
public final val a: kotlin.Int = 1
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun ff(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -1,172 +0,0 @@
//KT-462 Consider allowing initializing properties via property names when it is safe
//KT-598 Allow to use backing fields after this expression
package kt462
abstract class TestInitializationWithoutBackingField() {
val valWithBackingField : Int
init {
valWithBackingField = 2
}
val valWithoutBackingField : Int
get() = 42
init {
<!VAL_REASSIGNMENT!>valWithoutBackingField<!> = 45
}
var finalDefaultVar : Int
init {
finalDefaultVar = 3
}
open var openVar : Int
init {
<!INITIALIZATION_USING_BACKING_FIELD_OPEN_SETTER!>openVar<!> = 4
}
var varWithCustomSetter : Int
set(v: Int) {
field = v
}
init {
<!INITIALIZATION_USING_BACKING_FIELD_CUSTOM_SETTER!>varWithCustomSetter<!> = 3
}
var varWithoutBackingField : Int
get() = 3
set(v: Int) {}
init {
varWithoutBackingField = 4
}
abstract var abstractVar : Int
init {
abstractVar = 34
}
}
abstract class TestInitializationThroughBackingField() {
val valWithBackingField : Int
init {
<!BACKING_FIELD_USAGE_DEPRECATED!>$valWithBackingField<!> = 2
}
val valWithoutBackingField : Int
get() = 42
init {
<!NO_BACKING_FIELD_CUSTOM_ACCESSORS!>$valWithoutBackingField<!> = 45
}
var finalDefaultVar : Int
init {
<!BACKING_FIELD_USAGE_DEPRECATED!>$finalDefaultVar<!> = 3
}
open var openVar : Int
init {
<!BACKING_FIELD_USAGE_DEPRECATED!>$openVar<!> = 4
}
var varWithCustomSetter : Int
set(v: Int) {
field = v
}
init {
<!BACKING_FIELD_USAGE_DEPRECATED!>$varWithCustomSetter<!> = 3
}
var varWithoutBackingField : Int
get() = 3
set(v: Int) {}
init {
<!NO_BACKING_FIELD_CUSTOM_ACCESSORS!>$varWithoutBackingField<!> = 4
}
abstract var abstractVar : Int
init {
<!NO_BACKING_FIELD_ABSTRACT_PROPERTY!>$abstractVar<!> = 34
}
}
class TestBackingFieldsVisibility() {
var a : Int = 712
init {
<!BACKING_FIELD_USAGE_DEPRECATED!>$a<!> = 37
this.$a = 357
}
fun foo() {
<!BACKING_FIELD_USAGE_DEPRECATED!>$a<!> = 334
this.$a = 347
}
fun foo(a: TestBackingFieldsVisibility) {
val <!UNUSED_VARIABLE!>b<!> : Int = 3
<!UNRESOLVED_REFERENCE!>$b<!> = 342
<!INACCESSIBLE_BACKING_FIELD!>a.$a<!> = 3
}
val x = <!INACCESSIBLE_BACKING_FIELD!>$topLevelVar<!>
inner class Inner() {
val z = this@TestBackingFieldsVisibility.<!BACKING_FIELD_USAGE_DEPRECATED!>$x<!>
}
<!ABSTRACT_PROPERTY_IN_NON_ABSTRACT_CLASS!>abstract<!> val w = 11
get() = field //test there is no second error here
}
val topLevelVar = 11
class T() {
val z : Int get() = 42
init {
<!NO_BACKING_FIELD_CUSTOM_ACCESSORS!>this.$z<!> = 34
}
fun foo() {
<!NO_BACKING_FIELD_CUSTOM_ACCESSORS!>this.$z<!> = 343
}
val a = object {
val x = <!NO_BACKING_FIELD_CUSTOM_ACCESSORS!>$z<!>
init {
<!NO_BACKING_FIELD_CUSTOM_ACCESSORS!>$z<!> = 23
}
}
var x: Int = 2
get() {
val <!UNUSED_VARIABLE!>o<!> = object {
init {
field = 34
}
fun foo() {
field = 23
}
}
return 1
}
var r: Int = <!BACKING_FIELD_USAGE_DEPRECATED!>$x<!>
set(v: Int) {
if (true) {
field = 33
}
else {
field = 35
}
}
fun bar() {
<!BACKING_FIELD_USAGE_DEPRECATED!>$x<!> = 34
val <!UNUSED_VARIABLE!>o<!> = object {
val y = <!BACKING_FIELD_USAGE_DEPRECATED!>$x<!>
init {
<!BACKING_FIELD_USAGE_DEPRECATED!>$x<!> = 422
}
}
}
}
@@ -1,66 +0,0 @@
package
package kt462 {
public val topLevelVar: kotlin.Int = 11
public final class T {
public constructor T()
public final val a: kotlin.Any
public final var r: kotlin.Int
public final var x: kotlin.Int
public final val z: kotlin.Int
public final fun bar(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun foo(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class TestBackingFieldsVisibility {
public constructor TestBackingFieldsVisibility()
public final var a: kotlin.Int
public abstract val w: kotlin.Int = 11
public final val x: kotlin.Int = 11
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun foo(): kotlin.Unit
public final fun foo(/*0*/ a: kt462.TestBackingFieldsVisibility): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public final inner class Inner {
public constructor Inner()
public final val z: kotlin.Int = 11
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
public abstract class TestInitializationThroughBackingField {
public constructor TestInitializationThroughBackingField()
public abstract var abstractVar: kotlin.Int
public final var finalDefaultVar: kotlin.Int
public open var openVar: kotlin.Int
public final val valWithBackingField: kotlin.Int
public final val valWithoutBackingField: kotlin.Int
public final var varWithCustomSetter: kotlin.Int
public final var varWithoutBackingField: kotlin.Int
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public abstract class TestInitializationWithoutBackingField {
public constructor TestInitializationWithoutBackingField()
public abstract var abstractVar: kotlin.Int
public final var finalDefaultVar: kotlin.Int
public open var openVar: kotlin.Int
public final val valWithBackingField: kotlin.Int
public final val valWithoutBackingField: kotlin.Int
public final var varWithCustomSetter: kotlin.Int
public final var varWithoutBackingField: kotlin.Int
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
@@ -113,16 +113,16 @@ val z = 10
class AnonymousInitializers(var a: String, val b: String) {
init {
<!BACKING_FIELD_USAGE_DEPRECATED!>$a<!> = "30"
a = "30"
a = "s"
<!BACKING_FIELD_USAGE_DEPRECATED, VAL_REASSIGNMENT!>$b<!> = "3"
<!VAL_REASSIGNMENT!>b<!> = "3"
b = "tt" //repeat for b
}
val i: Int
init {
<!BACKING_FIELD_USAGE_DEPRECATED!>$i<!> = 121
i = 121
}
init {
@@ -134,7 +134,7 @@ class AnonymousInitializers(var a: String, val b: String) {
get() = 20
init {
<!BACKING_FIELD_USAGE_DEPRECATED, VAL_REASSIGNMENT!>$i<!> = 13
<!VAL_REASSIGNMENT!>i<!> = 13
<!NO_BACKING_FIELD_CUSTOM_ACCESSORS!>$j<!> = 30
<!VAL_REASSIGNMENT!>j<!> = 34
}
@@ -145,31 +145,31 @@ class AnonymousInitializers(var a: String, val b: String) {
k = "a"
}
else {
<!BACKING_FIELD_USAGE_DEPRECATED!>$k<!> = "b"
k = "b"
}
}
val l: String
init {
if (1 < 3) {
<!BACKING_FIELD_USAGE_DEPRECATED!>$l<!> = "a"
l = "a"
}
else {
<!BACKING_FIELD_USAGE_DEPRECATED!>$l<!> = "b"
l = "b"
}
}
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>val o: String<!>
init {
if (1 < 3) {
<!BACKING_FIELD_USAGE_DEPRECATED!>$o<!> = "a"
o = "a"
}
}
var m: Int = 30
init {
<!BACKING_FIELD_USAGE_DEPRECATED!>$m<!> = 400
m = 400
}
val n: Int
@@ -177,7 +177,7 @@ class AnonymousInitializers(var a: String, val b: String) {
init {
while (<!UNINITIALIZED_VARIABLE!>n<!> == 0) {
}
<!BACKING_FIELD_USAGE_DEPRECATED!>$n<!> = 10
n = 10
while (n == 0) {
}
}
@@ -198,7 +198,7 @@ class LocalValsVsProperties(val a: Int, w: Int) : Open(a, w) {
val x : Int
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>val y : Int<!>
init {
<!BACKING_FIELD_USAGE_DEPRECATED!>$x<!> = 1
x = 1
val <!UNUSED_VARIABLE!>b<!> = x
}
val b = a
@@ -214,7 +214,7 @@ class LocalValsVsProperties(val a: Int, w: Int) : Open(a, w) {
var yy : Int
init {
<!VAL_REASSIGNMENT!>w<!> += 1
<!BACKING_FIELD_USAGE_DEPRECATED!>$yy<!> = w
yy = w
}
}
@@ -223,8 +223,8 @@ class Outer() {
var b : Int
init {
<!BACKING_FIELD_USAGE_DEPRECATED!>$a<!> = 1
<!BACKING_FIELD_USAGE_DEPRECATED!>$b<!> = 1
a = 1
b = 1
}
inner class Inner() {
@@ -242,7 +242,7 @@ class Outer() {
class ForwardAccessToBackingField() { //kt-147
val a = <!TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM, UNINITIALIZED_VARIABLE!>$a<!> // error
val b = <!BACKING_FIELD_USAGE_DEPRECATED, UNINITIALIZED_VARIABLE!>$c<!> // error
val b = <!UNINITIALIZED_VARIABLE!>c<!> // error
val c = 1
}
@@ -251,7 +251,7 @@ class ClassObject() {
val x : Int
init {
<!BACKING_FIELD_USAGE_DEPRECATED!>$x<!> = 1
x = 1
}
@@ -268,8 +268,8 @@ fun foo() {
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>val y : Int<!>
val z : Int
init {
<!BACKING_FIELD_USAGE_DEPRECATED!>$x<!> = 1
<!BACKING_FIELD_USAGE_DEPRECATED!>$z<!> = 3
x = 1
z = 3
}
fun foo() {
<!VAL_REASSIGNMENT!>y<!> = 10
@@ -288,7 +288,7 @@ class TestObjectExpression() {
if (true)
x = 12
else
<!BACKING_FIELD_USAGE_DEPRECATED!>$x<!> = 1
x = 1
}
fun inner1() {
<!VAL_REASSIGNMENT!>y<!> = 101
@@ -308,7 +308,7 @@ object TestObjectDeclaration {
val x : Int
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>val y : Int<!>
init {
<!BACKING_FIELD_USAGE_DEPRECATED!>$x<!> = 1
x = 1
}
fun foo() {
@@ -3,7 +3,7 @@ package h
class Square() {
var size : Double =
<!UNRESOLVED_REFERENCE!>set<!>(<!UNRESOLVED_REFERENCE!>value<!>) {
<!BACKING_FIELD_USAGE_DEPRECATED!>$area<!> = size * size
<!BACKING_FIELD_USAGE_FORBIDDEN!>$area<!> = size * size
}
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>var area : Double<!>
+1 -1
View File
@@ -2,5 +2,5 @@
class WithC() {
val a = 1
val b = <!BACKING_FIELD_USAGE_DEPRECATED!>$a<!> // error here, but must not be
val b = a
}
+2 -2
View File
@@ -12,7 +12,7 @@ class Creature() {
var bbb : Int
init {
<!BACKING_FIELD_USAGE_DEPRECATED!>$bbb<!> = 1
bbb = 1
}
}
@@ -20,7 +20,7 @@ class Creature() {
var ccc : Int
init {
<!BACKING_FIELD_USAGE_DEPRECATED!>$ccc<!> = 2
ccc = 2
}
}
@@ -1,8 +0,0 @@
// http://youtrack.jetbrains.net/issue/KT-421
// KT-421 Strange 'unresolved' bug with backing fields
class A() {
val c = 1
val a = <!UNINITIALIZED_VARIABLE!>b<!>
val b = <!BACKING_FIELD_USAGE_DEPRECATED!>$c<!> // '$c' is unresolved
}
@@ -1,11 +0,0 @@
package
public final class A {
public constructor A()
public final val a: kotlin.Int = 1
public final val b: kotlin.Int = 1
public final val c: kotlin.Int = 1
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}