"field": deprecated warnings introduced, compiler tests migrated to the new syntax

This commit is contained in:
Mikhail Glukhikh
2015-09-17 18:58:30 +03:00
committed by Mikhail Glukhikh
parent 028e0ec59a
commit a1e3471d92
64 changed files with 154 additions and 149 deletions
@@ -318,6 +318,9 @@ public interface Errors {
DiagnosticFactory0<PsiElement> INAPPLICABLE_LATEINIT_MODIFIER = DiagnosticFactory0.create(ERROR); DiagnosticFactory0<PsiElement> INAPPLICABLE_LATEINIT_MODIFIER = DiagnosticFactory0.create(ERROR);
DiagnosticFactory0<JetProperty> BACKING_FIELD_IN_TRAIT = DiagnosticFactory0.create(ERROR, DECLARATION_SIGNATURE); DiagnosticFactory0<JetProperty> BACKING_FIELD_IN_TRAIT = DiagnosticFactory0.create(ERROR, DECLARATION_SIGNATURE);
DiagnosticFactory0<JetSimpleNameExpression> BACKING_FIELD_SYNTAX_DEPRECATED = DiagnosticFactory0.create(WARNING);
DiagnosticFactory0<JetSimpleNameExpression> BACKING_FIELD_USAGE_DEPRECATED = DiagnosticFactory0.create(WARNING);
DiagnosticFactory2<JetModifierListOwner, String, ClassDescriptor> ABSTRACT_PROPERTY_IN_NON_ABSTRACT_CLASS = DiagnosticFactory2.create(ERROR, ABSTRACT_MODIFIER); DiagnosticFactory2<JetModifierListOwner, String, ClassDescriptor> ABSTRACT_PROPERTY_IN_NON_ABSTRACT_CLASS = DiagnosticFactory2.create(ERROR, ABSTRACT_MODIFIER);
DiagnosticFactory0<JetPropertyAccessor> VAL_WITH_SETTER = DiagnosticFactory0.create(ERROR); DiagnosticFactory0<JetPropertyAccessor> VAL_WITH_SETTER = DiagnosticFactory0.create(ERROR);
@@ -157,6 +157,9 @@ public class DefaultErrorMessages {
MAP.put(INACCESSIBLE_BACKING_FIELD, "The backing field is not accessible here"); MAP.put(INACCESSIBLE_BACKING_FIELD, "The backing field is not accessible here");
MAP.put(NOT_PROPERTY_BACKING_FIELD, "The referenced variable is not a property and doesn't have backing field"); MAP.put(NOT_PROPERTY_BACKING_FIELD, "The referenced variable is not a property and doesn't have backing field");
MAP.put(BACKING_FIELD_SYNTAX_DEPRECATED, "This backing field syntax is deprecated, use 'field' instead");
MAP.put(BACKING_FIELD_USAGE_DEPRECATED, "Backing field usage is deprecated here, soon it will be possible only in property accessors");
MAP.put(MIXING_NAMED_AND_POSITIONED_ARGUMENTS, "Mixing named and positioned arguments is not allowed"); MAP.put(MIXING_NAMED_AND_POSITIONED_ARGUMENTS, "Mixing named and positioned arguments is not allowed");
MAP.put(ARGUMENT_PASSED_TWICE, "An argument is already passed for this parameter"); MAP.put(ARGUMENT_PASSED_TWICE, "An argument is already passed for this parameter");
MAP.put(NAMED_PARAMETER_NOT_FOUND, "Cannot find a parameter with this name: {0}", ELEMENT_TEXT); MAP.put(NAMED_PARAMETER_NOT_FOUND, "Cannot find a parameter with this name: {0}", ELEMENT_TEXT);
@@ -25,11 +25,9 @@ import kotlin.jvm.functions.Function1;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.descriptors.*; import org.jetbrains.kotlin.descriptors.*;
import org.jetbrains.kotlin.descriptors.annotations.Annotations;
import org.jetbrains.kotlin.descriptors.impl.LocalVariableDescriptor;
import org.jetbrains.kotlin.descriptors.impl.SyntheticFieldDescriptor; import org.jetbrains.kotlin.descriptors.impl.SyntheticFieldDescriptor;
import org.jetbrains.kotlin.diagnostics.Errors;
import org.jetbrains.kotlin.lexer.JetTokens; import org.jetbrains.kotlin.lexer.JetTokens;
import org.jetbrains.kotlin.name.Name;
import org.jetbrains.kotlin.psi.*; import org.jetbrains.kotlin.psi.*;
import org.jetbrains.kotlin.psi.psiUtil.PsiUtilPackage; import org.jetbrains.kotlin.psi.psiUtil.PsiUtilPackage;
import org.jetbrains.kotlin.resolve.calls.CallResolver; import org.jetbrains.kotlin.resolve.calls.CallResolver;
@@ -41,7 +39,6 @@ import org.jetbrains.kotlin.resolve.calls.util.CallMaker;
import org.jetbrains.kotlin.resolve.lazy.ForceResolveUtil; import org.jetbrains.kotlin.resolve.lazy.ForceResolveUtil;
import org.jetbrains.kotlin.resolve.scopes.*; import org.jetbrains.kotlin.resolve.scopes.*;
import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValue; import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValue;
import org.jetbrains.kotlin.resolve.source.KotlinSourceElementKt;
import org.jetbrains.kotlin.types.*; import org.jetbrains.kotlin.types.*;
import org.jetbrains.kotlin.types.expressions.ExpressionTypingContext; import org.jetbrains.kotlin.types.expressions.ExpressionTypingContext;
import org.jetbrains.kotlin.types.expressions.ExpressionTypingServices; import org.jetbrains.kotlin.types.expressions.ExpressionTypingServices;
@@ -55,7 +52,6 @@ import java.util.*;
import static org.jetbrains.kotlin.diagnostics.Errors.*; import static org.jetbrains.kotlin.diagnostics.Errors.*;
import static org.jetbrains.kotlin.resolve.BindingContext.*; import static org.jetbrains.kotlin.resolve.BindingContext.*;
import static org.jetbrains.kotlin.resolve.scopes.utils.UtilsPackage.asJetScope;
import static org.jetbrains.kotlin.types.TypeUtils.NO_EXPECTED_TYPE; import static org.jetbrains.kotlin.types.TypeUtils.NO_EXPECTED_TYPE;
public class BodyResolver { public class BodyResolver {
@@ -652,6 +648,7 @@ public class BodyResolver {
// This check may be considered redundant as long as $x is only accessible from accessors to $x // This check may be considered redundant as long as $x is only accessible from accessors to $x
if (descriptor == propertyDescriptor) { // TODO : original? if (descriptor == propertyDescriptor) { // TODO : original?
trace.record(BindingContext.BACKING_FIELD_REQUIRED, propertyDescriptor); // TODO: this trace? trace.record(BindingContext.BACKING_FIELD_REQUIRED, propertyDescriptor); // TODO: this trace?
trace.report(Errors.BACKING_FIELD_SYNTAX_DEPRECATED.on(simpleNameExpression));
} }
} }
if (descriptor instanceof SyntheticFieldDescriptor) { if (descriptor instanceof SyntheticFieldDescriptor) {
@@ -4,9 +4,9 @@ open class Base() {
get() = 239 get() = 239
public var readwrite : Int = 0 public var readwrite : Int = 0
get() = $readwrite + 1 get() = field + 1
set(n : Int) { set(n : Int) {
$readwrite = n field = n
} }
} }
+4 -4
View File
@@ -1,19 +1,19 @@
public var inc: Int = 0; public var inc: Int = 0;
public var propInc: Int = 0 public var propInc: Int = 0
get() {++inc; return $propInc} get() {++inc; return field}
set(a: Int) { set(a: Int) {
++inc ++inc
$propInc = a field = a
} }
public var dec: Int = 0; public var dec: Int = 0;
public var propDec: Int = 0; public var propDec: Int = 0;
get() { --dec; return $propDec} get() { --dec; return field}
set(a: Int) { set(a: Int) {
--dec --dec
$propDec = a field = a
} }
fun box(): String { fun box(): String {
@@ -16,11 +16,11 @@ class Z {
public var prop: X = X(0) public var prop: X = X(0)
get() { get() {
counter++; return $prop counter++; return field
} }
set(a: X) { set(a: X) {
counter++ counter++
$prop = a; field = a;
} }
} }
@@ -1,19 +1,19 @@
public var inc: Int = 0; public var inc: Int = 0;
public var propInc: Int = 0 public var propInc: Int = 0
get() {inc++; return $propInc} get() {inc++; return field}
set(a: Int) { set(a: Int) {
inc++ inc++
$propInc = a field = a
} }
public var dec: Int = 0; public var dec: Int = 0;
public var propDec: Int = 0; public var propDec: Int = 0;
get() { dec--; return $propDec} get() { dec--; return field}
set(a: Int) { set(a: Int) {
dec-- dec--
$propDec = a field = a
} }
fun box(): String { fun box(): String {
@@ -33,7 +33,7 @@ class C {
class D { class D {
private var foo = 1 private var foo = 1
set(i: Int) { set(i: Int) {
$foo = i + 1 field = i + 1
} }
fun foo() { fun foo() {
@@ -9,7 +9,7 @@ class Test {
public val prop3: Int = 12 public val prop3: Int = 12
get() { get() {
return $prop3 return field
} }
var prop4 : Int = 13 var prop4 : Int = 13
@@ -23,7 +23,7 @@ class Test {
public var prop7 : Int = 20 public var prop7 : Int = 20
set(i: Int) { set(i: Int) {
$prop7++ field++
} }
} }
+2 -2
View File
@@ -24,8 +24,8 @@ open class A(val init: String) {
} }
public var backingField : Int = 0 public var backingField : Int = 0
get() = $backingField.myInc get() = field.myInc
set(s) { $backingField = s } set(s) { field = s }
} }
+1 -1
View File
@@ -2,7 +2,7 @@ class TestObject()
{ {
companion object { companion object {
var prop: Int = 1 var prop: Int = 1
get() = $prop++ get() = field++
} }
} }
@@ -14,7 +14,7 @@ class A {
var r2: Int = 1; var r2: Int = 1;
get() { get() {
holder += "getR2" holder += "getR2"
return $r2 return field
} }
fun test2() : Int { fun test2() : Int {
@@ -26,7 +26,7 @@ class A {
var r3: Int = 1; var r3: Int = 1;
set(p: Int) { set(p: Int) {
holder += "setR3" holder += "setR3"
$r3 = p field = p
} }
fun test3() : Int { fun test3() : Int {
@@ -38,11 +38,11 @@ class A {
var r4: Int = 1; var r4: Int = 1;
get() { get() {
holder += "getR4" holder += "getR4"
return $r4 return field
} }
set(p: Int) { set(p: Int) {
holder += "setR4" holder += "setR4"
$r4 = p field = p
} }
fun test4() : Int { fun test4() : Int {
+4 -4
View File
@@ -12,7 +12,7 @@ object A {
var r2: Int = 1; var r2: Int = 1;
get() { get() {
holder += "getR2" holder += "getR2"
return $r2 return field
} }
fun test2() : Int { fun test2() : Int {
@@ -24,7 +24,7 @@ object A {
var r3: Int = 1; var r3: Int = 1;
set(p: Int) { set(p: Int) {
holder += "setR3" holder += "setR3"
$r3 = p field = p
} }
fun test3() : Int { fun test3() : Int {
@@ -36,11 +36,11 @@ object A {
var r4: Int = 1; var r4: Int = 1;
get() { get() {
holder += "getR4" holder += "getR4"
return $r4 return field
} }
set(p: Int) { set(p: Int) {
holder += "setR4" holder += "setR4"
$r4 = p field = p
} }
fun test4() : Int { fun test4() : Int {
@@ -2,7 +2,7 @@ var holder = ""
var globalA: A = A(-1) var globalA: A = A(-1)
get(): A { get(): A {
holder += "getA" holder += "getA"
return $globalA return field
} }
+1 -1
View File
@@ -10,7 +10,7 @@ class A {
class B { class B {
var foo = 1 var foo = 1
private set(value) { $foo = value } private set(value) { field = value }
fun foo() { fun foo() {
foo = 2 foo = 2
+1 -1
View File
@@ -1,5 +1,5 @@
var collector: String = "" var collector: String = ""
set(it) { $collector = $collector + it } set(it) { field = field + it }
fun append(s: String): String { fun append(s: String): String {
collector = s; collector = s;
+1 -1
View File
@@ -1,5 +1,5 @@
var collector: String = "" var collector: String = ""
set(it) { $collector += it } set(it) { field += it }
fun append(s: String): String { fun append(s: String): String {
collector = s; collector = s;
@@ -2,7 +2,7 @@ package a
val prop: Int = 0 val prop: Int = 0
get() { get() {
return $prop + 1 return field + 1
} }
// 2 INVOKESTATIC a/_1Kt.getProp \(\)I // 2 INVOKESTATIC a/_1Kt.getProp \(\)I
+4 -4
View File
@@ -11,10 +11,10 @@ package MyPackage
<!MUST_BE_INITIALIZED!><!WRONG_MODIFIER_TARGET!>abstract<!> var b2: Int<!> private set <!MUST_BE_INITIALIZED!><!WRONG_MODIFIER_TARGET!>abstract<!> var b2: Int<!> private set
<!WRONG_MODIFIER_TARGET!>abstract<!> var b3: Int = 0; private set <!WRONG_MODIFIER_TARGET!>abstract<!> var b3: Int = 0; private set
<!MUST_BE_INITIALIZED!>var c: Int<!> set(v: Int) { $c = v } <!MUST_BE_INITIALIZED!>var c: Int<!> set(v: Int) { field = v }
var c1: Int = 0; set(v: Int) { $c1 = v } var c1: Int = 0; set(v: Int) { field = v }
<!MUST_BE_INITIALIZED!><!WRONG_MODIFIER_TARGET!>abstract<!> var c2: Int<!> set(v: Int) { $c2 = v } <!MUST_BE_INITIALIZED!><!WRONG_MODIFIER_TARGET!>abstract<!> var c2: Int<!> set(v: Int) { field = v }
<!WRONG_MODIFIER_TARGET!>abstract<!> var c3: Int = 0; set(v: Int) { $c3 = v } <!WRONG_MODIFIER_TARGET!>abstract<!> var c3: Int = 0; set(v: Int) { field = v }
val e: Int get() = a val e: Int get() = a
val e1: Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>0<!>; get() = a val e1: Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>0<!>; get() = a
@@ -12,10 +12,10 @@ abstract class MyAbstractClass() {
abstract var b2: Int private set abstract var b2: Int private set
abstract var b3: Int = <!ABSTRACT_PROPERTY_WITH_INITIALIZER!>0<!>; private set abstract var b3: Int = <!ABSTRACT_PROPERTY_WITH_INITIALIZER!>0<!>; private set
<!MUST_BE_INITIALIZED!>var c: Int<!> set(v: Int) { $c = v } <!MUST_BE_INITIALIZED!>var c: Int<!> set(v: Int) { field = v }
var c1: Int = 0; set(v: Int) { $c1 = v } var c1: Int = 0; set(v: Int) { field = v }
abstract var c2: Int <!ABSTRACT_PROPERTY_WITH_SETTER!>set(v: Int) { $c2 = v }<!> abstract var c2: Int <!ABSTRACT_PROPERTY_WITH_SETTER!>set(v: Int) { field = v }<!>
abstract var c3: Int = <!ABSTRACT_PROPERTY_WITH_INITIALIZER!>0<!>; <!ABSTRACT_PROPERTY_WITH_SETTER!>set(v: Int) { $c3 = v }<!> abstract var c3: Int = <!ABSTRACT_PROPERTY_WITH_INITIALIZER!>0<!>; <!ABSTRACT_PROPERTY_WITH_SETTER!>set(v: Int) { field = v }<!>
val e: Int get() = a val e: Int get() = a
val e1: Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>0<!>; get() = a val e1: Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>0<!>; get() = a
+4 -4
View File
@@ -12,10 +12,10 @@ class MyClass() {
<!ABSTRACT_PROPERTY_IN_NON_ABSTRACT_CLASS!>abstract<!> var b2: Int private set <!ABSTRACT_PROPERTY_IN_NON_ABSTRACT_CLASS!>abstract<!> var b2: Int private set
<!ABSTRACT_PROPERTY_IN_NON_ABSTRACT_CLASS!>abstract<!> var b3: Int = 0; private set <!ABSTRACT_PROPERTY_IN_NON_ABSTRACT_CLASS!>abstract<!> var b3: Int = 0; private set
<!MUST_BE_INITIALIZED!>var c: Int<!> set(v: Int) { $c = v } <!MUST_BE_INITIALIZED!>var c: Int<!> set(v: Int) { field = v }
var c1: Int = 0; set(v: Int) { $c1 = v } var c1: Int = 0; set(v: Int) { field = v }
<!ABSTRACT_PROPERTY_IN_NON_ABSTRACT_CLASS!>abstract<!> var c2: Int set(v: Int) { $c2 = v } <!ABSTRACT_PROPERTY_IN_NON_ABSTRACT_CLASS!>abstract<!> var c2: Int set(v: Int) { field = v }
<!ABSTRACT_PROPERTY_IN_NON_ABSTRACT_CLASS!>abstract<!> var c3: Int = 0; set(v: Int) { $c3 = v } <!ABSTRACT_PROPERTY_IN_NON_ABSTRACT_CLASS!>abstract<!> var c3: Int = 0; set(v: Int) { field = v }
val e: Int get() = a val e: Int get() = a
val e1: Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>0<!>; get() = a val e1: Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>0<!>; get() = a
+4 -4
View File
@@ -12,10 +12,10 @@ interface MyTrait {
<!ABSTRACT_MODIFIER_IN_TRAIT!>abstract<!> var b2: Int private set <!ABSTRACT_MODIFIER_IN_TRAIT!>abstract<!> var b2: Int private set
<!ABSTRACT_MODIFIER_IN_TRAIT!>abstract<!> var b3: Int = <!ABSTRACT_PROPERTY_WITH_INITIALIZER!>0<!>; private set <!ABSTRACT_MODIFIER_IN_TRAIT!>abstract<!> var b3: Int = <!ABSTRACT_PROPERTY_WITH_INITIALIZER!>0<!>; private set
<!BACKING_FIELD_IN_TRAIT!>var c: Int<!> set(v: Int) { $c = v } <!BACKING_FIELD_IN_TRAIT!>var c: Int<!> set(v: Int) { field = v }
<!BACKING_FIELD_IN_TRAIT!>var c1: Int<!> = <!PROPERTY_INITIALIZER_IN_TRAIT!>0<!>; set(v: Int) { $c1 = v } <!BACKING_FIELD_IN_TRAIT!>var c1: Int<!> = <!PROPERTY_INITIALIZER_IN_TRAIT!>0<!>; set(v: Int) { field = v }
<!ABSTRACT_MODIFIER_IN_TRAIT!>abstract<!> var c2: Int <!ABSTRACT_PROPERTY_WITH_SETTER!>set(v: Int) { $c2 = v }<!> <!ABSTRACT_MODIFIER_IN_TRAIT!>abstract<!> var c2: Int <!ABSTRACT_PROPERTY_WITH_SETTER!>set(v: Int) { field = v }<!>
<!ABSTRACT_MODIFIER_IN_TRAIT!>abstract<!> var c3: Int = <!ABSTRACT_PROPERTY_WITH_INITIALIZER!>0<!>; <!ABSTRACT_PROPERTY_WITH_SETTER!>set(v: Int) { $c3 = v }<!> <!ABSTRACT_MODIFIER_IN_TRAIT!>abstract<!> var c3: Int = <!ABSTRACT_PROPERTY_WITH_INITIALIZER!>0<!>; <!ABSTRACT_PROPERTY_WITH_SETTER!>set(v: Int) { field = v }<!>
val e: Int get() = a val e: Int get() = a
val e1: Int = <!PROPERTY_INITIALIZER_IN_TRAIT!>0<!>; get() = a val e1: Int = <!PROPERTY_INITIALIZER_IN_TRAIT!>0<!>; get() = a
+1 -1
View File
@@ -32,7 +32,7 @@ public abstract class A<T: Any, V: String?>(<!INAPPLICABLE_LATEINIT_MODIFIER!>la
get() = "A" get() = "A"
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit<!> var e9: String <!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit<!> var e9: String
set(v) { $e9 = v } set(v) { field = v }
abstract <!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit<!> val e10: String abstract <!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit<!> val e10: String
+2 -2
View File
@@ -1,8 +1,8 @@
var x : Int = 1 + <!UNINITIALIZED_VARIABLE!>x<!> var x : Int = 1 + <!UNINITIALIZED_VARIABLE!>x<!>
get() : Int = 1 get() : Int = 1
set(value : <!WRONG_SETTER_PARAMETER_TYPE!>Long<!>) { set(value : <!WRONG_SETTER_PARAMETER_TYPE!>Long<!>) {
$x = value.toInt() field = value.toInt()
$x = <!TYPE_MISMATCH!>1.toLong()<!> field = <!TYPE_MISMATCH!>1.toLong()<!>
} }
val xx : Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>1 + x<!> val xx : Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>1 + x<!>
+1 -1
View File
@@ -35,7 +35,7 @@ class MyTest() {
var i: Int = 23 var i: Int = 23
doSmth(i) doSmth(i)
<!UNUSED_VALUE!>i =<!> 34 <!UNUSED_VALUE!>i =<!> 34
$a = v field = v
} }
init { init {
@@ -1,7 +1,11 @@
class Flower() { class Flower() {
var minusOne: Int = 1 var minusOne: Int = 1
get() = $minusOne + 1 get() = field + 1
set(n: Int) { $minusOne = n - 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 }
} }
@@ -3,6 +3,7 @@ package
public final class Flower { public final class Flower {
public constructor Flower() public constructor Flower()
public final var minusOne: kotlin.Int 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 equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
@@ -1,4 +1,4 @@
class CustomGetVal() { class CustomGetVal() {
val zz = 1 val zz = 1
get() = $zz * 2 get() = field * 2
} }
@@ -1,3 +1,3 @@
package customGetValGlobal package customGetValGlobal
val zz = 1 val zz = 1
get() = $zz * 2 get() = field * 2
@@ -1,4 +1,4 @@
class Raise() { class Raise() {
var zz = 1 var zz = 1
get() = $zz * 2 get() = field * 2
} }
@@ -1,4 +1,4 @@
class Raise() { class Raise() {
var zz = 1 var zz = 1
set(it) { $zz = it / 2 } set(it) { field = it / 2 }
} }
@@ -27,7 +27,7 @@ abstract class TestInitializationWithoutBackingField() {
var varWithCustomSetter : Int var varWithCustomSetter : Int
set(v: Int) { set(v: Int) {
$varWithCustomSetter = v field = v
} }
init { init {
<!INITIALIZATION_USING_BACKING_FIELD_CUSTOM_SETTER!>varWithCustomSetter<!> = 3 <!INITIALIZATION_USING_BACKING_FIELD_CUSTOM_SETTER!>varWithCustomSetter<!> = 3
@@ -70,7 +70,7 @@ abstract class TestInitializationThroughBackingField() {
var varWithCustomSetter : Int var varWithCustomSetter : Int
set(v: Int) { set(v: Int) {
$varWithCustomSetter = v field = v
} }
init { init {
$varWithCustomSetter = 3 $varWithCustomSetter = 3
@@ -114,7 +114,7 @@ class TestBackingFieldsVisibility() {
} }
<!ABSTRACT_PROPERTY_IN_NON_ABSTRACT_CLASS!>abstract<!> val w = 11 <!ABSTRACT_PROPERTY_IN_NON_ABSTRACT_CLASS!>abstract<!> val w = 11
get() = $w //test there is no second error here get() = field //test there is no second error here
} }
val topLevelVar = 11 val topLevelVar = 11
@@ -141,10 +141,10 @@ class T() {
get() { get() {
val <!UNUSED_VARIABLE!>o<!> = object { val <!UNUSED_VARIABLE!>o<!> = object {
init { init {
$x = 34 field = 34
} }
fun foo() { fun foo() {
$x = 23 field = 23
} }
} }
return 1 return 1
@@ -153,10 +153,10 @@ class T() {
var r: Int = $x var r: Int = $x
set(v: Int) { set(v: Int) {
if (true) { if (true) {
$r = 33 field = 33
} }
else { else {
$r = 35 field = 35
} }
} }
@@ -6,7 +6,7 @@ val z : Int = 34
val y : Int = 11 val y : Int = 11
get() { get() {
return $y return field
} }
val x : Int val x : Int
@@ -5,7 +5,7 @@ import java.util.HashSet
val a: MutableSet<String>? = null val a: MutableSet<String>? = null
get() { get() {
if (a == null) { if (a == null) {
$a = HashSet() field = HashSet()
} }
return a return a
} }
@@ -14,7 +14,7 @@ class R {
val b: String? = null val b: String? = null
get() { get() {
if (b == null) { if (b == null) {
$b = "b" field = "b"
} }
return b return b
} }
@@ -19,7 +19,7 @@ class A() {
val a : A = A() val a : A = A()
get() { get() {
c0++ c0++
return $a return field
} }
fun box() : String { fun box() : String {
@@ -29,7 +29,7 @@ class A {
get() { get() {
val x : Int val x : Int
doSmth(<!UNINITIALIZED_VARIABLE!>x<!>) doSmth(<!UNINITIALIZED_VARIABLE!>x<!>)
return $a return field
} }
} }
+4 -4
View File
@@ -14,10 +14,10 @@ enum class MyEnum() {
abstract var b2: Int private set abstract var b2: Int private set
abstract var b3: Int = <!ABSTRACT_PROPERTY_WITH_INITIALIZER!>0<!>; private set abstract var b3: Int = <!ABSTRACT_PROPERTY_WITH_INITIALIZER!>0<!>; private set
<!MUST_BE_INITIALIZED!>var c: Int<!> set(v: Int) { $c = v } <!MUST_BE_INITIALIZED!>var c: Int<!> set(v: Int) { field = v }
var c1: Int = 0; set(v: Int) { $c1 = v } var c1: Int = 0; set(v: Int) { field = v }
abstract var c2: Int <!ABSTRACT_PROPERTY_WITH_SETTER!>set(v: Int) { $c2 = v }<!> abstract var c2: Int <!ABSTRACT_PROPERTY_WITH_SETTER!>set(v: Int) { field = v }<!>
abstract var c3: Int = <!ABSTRACT_PROPERTY_WITH_INITIALIZER!>0<!>; <!ABSTRACT_PROPERTY_WITH_SETTER!>set(v: Int) { $c3 = v }<!> abstract var c3: Int = <!ABSTRACT_PROPERTY_WITH_INITIALIZER!>0<!>; <!ABSTRACT_PROPERTY_WITH_SETTER!>set(v: Int) { field = v }<!>
val e: Int get() = a val e: Int get() = a
val e1: Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>0<!>; get() = a val e1: Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>0<!>; get() = a
@@ -16,7 +16,7 @@ abstract class Test() {
val c4 : Int val c4 : Int
get() = 1 get() = 1
<!MUST_BE_INITIALIZED!>val c5 : Int<!> <!MUST_BE_INITIALIZED!>val c5 : Int<!>
get() = $c5 + 1 get() = field + 1
abstract var y : Int abstract var y : Int
abstract var y1 : Int get abstract var y1 : Int get
@@ -32,8 +32,8 @@ abstract class Test() {
<!MUST_BE_INITIALIZED!>var v3 : Int<!> get() = 1; set <!MUST_BE_INITIALIZED!>var v3 : Int<!> get() = 1; set
var v4 : Int get() = 1; set(x){} var v4 : Int get() = 1; set(x){}
<!MUST_BE_INITIALIZED!>var v5 : Int<!> get() = 1; set(x){$v5 = x} <!MUST_BE_INITIALIZED!>var v5 : Int<!> get() = 1; set(x){field = x}
<!MUST_BE_INITIALIZED!>var v6 : Int<!> get() = $v6 + 1; set(x){} <!MUST_BE_INITIALIZED!>var v6 : Int<!> get() = field + 1; set(x){}
abstract val v7 : Int get abstract val v7 : Int get
abstract var v8 : Int get set abstract var v8 : Int get set
@@ -15,7 +15,7 @@ abstract class A() {
class FinalClass() { class FinalClass() {
<!NON_FINAL_MEMBER_IN_FINAL_CLASS!>open<!> fun foo() {} <!NON_FINAL_MEMBER_IN_FINAL_CLASS!>open<!> fun foo() {}
val i: Int = 1 val i: Int = 1
<!WRONG_MODIFIER_TARGET!>open<!> get(): Int = $i <!WRONG_MODIFIER_TARGET!>open<!> get(): Int = field
var j: Int = 1 var j: Int = 1
<!WRONG_MODIFIER_TARGET!>open<!> set(v: Int) {} <!WRONG_MODIFIER_TARGET!>open<!> set(v: Int) {}
} }
+4 -4
View File
@@ -2,7 +2,7 @@ class A() {
var x: Int = 0 var x: Int = 0
get() = <!TYPE_MISMATCH!>"s"<!> get() = <!TYPE_MISMATCH!>"s"<!>
set(value: <!WRONG_SETTER_PARAMETER_TYPE!>String<!>) { set(value: <!WRONG_SETTER_PARAMETER_TYPE!>String<!>) {
$x = <!TYPE_MISMATCH!>value<!> field = <!TYPE_MISMATCH!>value<!>
} }
val y: Int val y: Int
get(): <!WRONG_GETTER_RETURN_TYPE!>String<!> = "s" get(): <!WRONG_GETTER_RETURN_TYPE!>String<!> = "s"
@@ -13,7 +13,7 @@ class A() {
var a: Any = 1 var a: Any = 1
set(v: <!WRONG_SETTER_PARAMETER_TYPE!>String<!>) { set(v: <!WRONG_SETTER_PARAMETER_TYPE!>String<!>) {
$a = v field = v
} }
val b: Int val b: Int
get(): <!WRONG_GETTER_RETURN_TYPE!>Any<!> = "s" get(): <!WRONG_GETTER_RETURN_TYPE!>Any<!> = "s"
@@ -23,11 +23,11 @@ class A() {
} }
val d = 1 val d = 1
get() { get() {
return $d return field
} }
val e = 1 val e = 1
get(): <!WRONG_GETTER_RETURN_TYPE!>String<!> { get(): <!WRONG_GETTER_RETURN_TYPE!>String<!> {
return <!TYPE_MISMATCH!>$e<!> return <!TYPE_MISMATCH!>field<!>
} }
} }
@@ -12,7 +12,7 @@ class Test {
public val prop3: Int = 12 public val prop3: Int = 12
get() { get() {
return $prop3 return field
} }
var prop4 : Int = 13 var prop4 : Int = 13
@@ -25,7 +25,7 @@ class Test {
public var prop7 : Int = 20 public var prop7 : Int = 20
set(i: Int) { set(i: Int) {
$prop7++ field++
} }
} }
} }
@@ -12,7 +12,7 @@ interface Test {
public val prop3: Int = 12 public val prop3: Int = 12
get() { get() {
return $prop3 return field
} }
var prop4 : Int = 13 var prop4 : Int = 13
@@ -25,7 +25,7 @@ interface Test {
public var prop7 : Int = 20 public var prop7 : Int = 20
set(i: Int) { set(i: Int) {
$prop7++ field++
} }
} }
} }
@@ -2,7 +2,7 @@ class Test {
companion object { companion object {
public val prop: Int = 0 public val prop: Int = 0
get() { get() {
return $prop return field
} }
} }
} }
@@ -2,7 +2,7 @@ class Test {
companion object { companion object {
public var prop: Int = 0 public var prop: Int = 0
set(i : Int) { set(i : Int) {
$prop = i field = i
} }
} }
} }
@@ -2,7 +2,7 @@ interface Test {
companion object { companion object {
public val prop: Int = 0 public val prop: Int = 0
get() { get() {
return $prop return field
} }
} }
} }
@@ -2,7 +2,7 @@ interface Test {
companion object { companion object {
public var prop: Int = 0 public var prop: Int = 0
set(i : Int) { set(i : Int) {
$prop = i field = i
} }
} }
} }
+20 -20
View File
@@ -13,10 +13,10 @@ class MyClass() {
<error>abstract</error> var b2: Int private set <error>abstract</error> var b2: Int private set
<error>abstract</error> var b3: Int = 0; private set <error>abstract</error> var b3: Int = 0; private set
<error>var c: Int</error> set(v: Int) { $c = v } <error>var c: Int</error> set(v: Int) { field = v }
var c1: Int = 0; set(v: Int) { $c1 = v } var c1: Int = 0; set(v: Int) { field = v }
<error>abstract</error> var c2: Int set(v: Int) { $c2 = v } <error>abstract</error> var c2: Int set(v: Int) { field = v }
<error>abstract</error> var c3: Int = 0; set(v: Int) { $c3 = v } <error>abstract</error> var c3: Int = 0; set(v: Int) { field = v }
val e: Int get() = a val e: Int get() = a
val e1: Int = <error>0</error>; get() = a val e1: Int = <error>0</error>; get() = a
@@ -44,10 +44,10 @@ abstract class MyAbstractClass() {
abstract var b2: Int private set abstract var b2: Int private set
abstract var b3: Int = <error>0</error>; private set abstract var b3: Int = <error>0</error>; private set
<error>var c: Int</error> set(v: Int) { $c = v } <error>var c: Int</error> set(v: Int) { field = v }
var c1: Int = 0; set(v: Int) { $c1 = v } var c1: Int = 0; set(v: Int) { field = v }
abstract var c2: Int <error>set(v: Int) { $c2 = v }</error> abstract var c2: Int <error>set(v: Int) { field = v }</error>
abstract var c3: Int = <error>0</error>; <error>set(v: Int) { $c3 = v }</error> abstract var c3: Int = <error>0</error>; <error>set(v: Int) { field = v }</error>
val e: Int get() = a val e: Int get() = a
val e1: Int = <error>0</error>; get() = a val e1: Int = <error>0</error>; get() = a
@@ -75,10 +75,10 @@ interface MyTrait {
<warning>abstract</warning> var b2: Int private set <warning>abstract</warning> var b2: Int private set
<warning>abstract</warning> var b3: Int = <error>0</error>; private set <warning>abstract</warning> var b3: Int = <error>0</error>; private set
<error>var c: Int</error> set(v: Int) { $c = v } <error>var c: Int</error> set(v: Int) { field = v }
<error>var c1: Int</error> = <error>0</error>; set(v: Int) { $c1 = v } <error>var c1: Int</error> = <error>0</error>; set(v: Int) { field = v }
<warning>abstract</warning> var c2: Int <error>set(v: Int) { $c2 = v }</error> <warning>abstract</warning> var c2: Int <error>set(v: Int) { field = v }</error>
<warning>abstract</warning> var c3: Int = <error>0</error>; <error>set(v: Int) { $c3 = v }</error> <warning>abstract</warning> var c3: Int = <error>0</error>; <error>set(v: Int) { field = v }</error>
val e: Int get() = a val e: Int get() = a
val e1: Int = <error>0</error>; get() = a val e1: Int = <error>0</error>; get() = a
@@ -107,10 +107,10 @@ enum class MyEnum() {
abstract var b2: Int private set abstract var b2: Int private set
abstract var b3: Int = <error>0</error>; private set abstract var b3: Int = <error>0</error>; private set
<error>var c: Int</error> set(v: Int) { $c = v } <error>var c: Int</error> set(v: Int) { field = v }
var c1: Int = 0; set(v: Int) { $c1 = v } var c1: Int = 0; set(v: Int) { field = v }
abstract var c2: Int <error>set(v: Int) { $c2 = v }</error> abstract var c2: Int <error>set(v: Int) { field = v }</error>
abstract var c3: Int = <error>0</error>; <error>set(v: Int) { $c3 = v }</error> abstract var c3: Int = <error>0</error>; <error>set(v: Int) { field = v }</error>
val e: Int get() = a val e: Int get() = a
val e1: Int = <error>0</error>; get() = a val e1: Int = <error>0</error>; get() = a
@@ -139,10 +139,10 @@ var b1: Int = 0; private set
<error><error>abstract</error> var b2: Int</error> private set <error><error>abstract</error> var b2: Int</error> private set
<error>abstract</error> var b3: Int = 0; private set <error>abstract</error> var b3: Int = 0; private set
<error>var c: Int</error> set(v: Int) { $c = v } <error>var c: Int</error> set(v: Int) { field = v }
var c1: Int = 0; set(v: Int) { $c1 = v } var c1: Int = 0; set(v: Int) { field = v }
<error><error>abstract</error> var c2: Int</error> set(v: Int) { $c2 = v } <error><error>abstract</error> var c2: Int</error> set(v: Int) { field = v }
<error>abstract</error> var c3: Int = 0; set(v: Int) { $c3 = v } <error>abstract</error> var c3: Int = 0; set(v: Int) { field = v }
val e: Int get() = a val e: Int get() = a
val e1: Int = <error>0</error>; get() = a val e1: Int = <error>0</error>; get() = a
+5 -8
View File
@@ -1,8 +1,8 @@
var x : Int = 1 + <error>x</error> var x : Int = 1 + <error>x</error>
get() : Int = 1 get() : Int = 1
set(value : <error>Long</error>) { set(value : <error>Long</error>) {
$x = value.toInt() field = value.toInt()
$x = <error>1.toLong()</error> field = <error>1.toLong()</error>
} }
val xx : Int = <error>1 + x</error> val xx : Int = <error>1 + x</error>
@@ -14,15 +14,12 @@
class Test() { class Test() {
var a : Int = 111 var a : Int = 111
var b : Int get() = $a; set(x) {a = x; $a = x} var b : Int get() = a; set(x) { a = x }
init { init {
<error>$b</error> = $a
$a = <error>$b</error>
a = <error>$b</error>
} }
fun f() { fun f() {
<error>$b</error> = $a
a = <error>$b</error>
} }
} }
+3 -3
View File
@@ -16,7 +16,7 @@
val c4 : Int val c4 : Int
<info>get</info>() = 1 <info>get</info>() = 1
<error>val c5 : Int</error> <error>val c5 : Int</error>
<info>get</info>() = $c5 + 1 <info>get</info>() = field + 1
<info>abstract</info> var y : Int <info>abstract</info> var y : Int
<info>abstract</info> var y1 : Int <info>get</info> <info>abstract</info> var y1 : Int <info>get</info>
@@ -32,8 +32,8 @@
<error>var v3 : Int</error> <info>get</info>() = 1; <info>set</info> <error>var v3 : Int</error> <info>get</info>() = 1; <info>set</info>
var v4 : Int <info>get</info>() = 1; <info>set</info>(x){} var v4 : Int <info>get</info>() = 1; <info>set</info>(x){}
<error>var v5 : Int</error> <info>get</info>() = 1; <info>set</info>(x){$v5 = x} <error>var v5 : Int</error> <info>get</info>() = 1; <info>set</info>(x){field = x}
<error>var v6 : Int</error> <info>get</info>() = $v6 + 1; <info>set</info>(x){} <error>var v6 : Int</error> <info>get</info>() = field + 1; <info>set</info>(x){}
<error>var v9 : Int</error> <info>set</info> <error>var v9 : Int</error> <info>set</info>
<error>var v10 : Int</error> <info>get</info> <error>var v10 : Int</error> <info>get</info>
+4 -4
View File
@@ -2,7 +2,7 @@ class A() {
var x: Int = 0 var x: Int = 0
get() = <error>"s"</error> get() = <error>"s"</error>
set(value: <error>String</error>) { set(value: <error>String</error>) {
$x = <error>value</error> field = <error>value</error>
} }
val y: Int val y: Int
get(): <error>String</error> = "s" get(): <error>String</error> = "s"
@@ -13,7 +13,7 @@ class A() {
var a: Any = 1 var a: Any = 1
set(v: <error>String</error>) { set(v: <error>String</error>) {
$a = v field = v
} }
val b: Int val b: Int
get(): <error>Any</error> = "s" get(): <error>Any</error> = "s"
@@ -23,11 +23,11 @@ class A() {
} }
val d = 1 val d = 1
get() { get() {
return $d return field
} }
val e = 1 val e = 1
get(): <error>String</error> { get(): <error>String</error> {
return <error>$e</error> return <error>field</error>
} }
} }
@@ -15,7 +15,7 @@ trait Base2 : Base1 {
class Base2Impl() : Base2 { class Base2Impl() : Base2 {
override var prop: String = "" override var prop: String = ""
set(value) { set(value) {
$prop = "prop:${value}" field = "prop:${value}"
} }
} }
@@ -9,7 +9,7 @@ class BaseImpl(val s: String) : Base {
override fun foo(x: String) = "BaseImpl.foo: ${s}:${x}" override fun foo(x: String) = "BaseImpl.foo: ${s}:${x}"
override var prop: String = "init" override var prop: String = "init"
set(value) { set(value) {
$prop = "prop:${value}" field = "prop:${value}"
} }
} }
@@ -4,9 +4,9 @@ open class Base() {
get() = 239 get() = 239
public var readwrite: Int = 0 public var readwrite: Int = 0
get() = $readwrite + 1 get() = field + 1
set(n: Int) { set(n: Int) {
$readwrite = n field = n
} }
} }
@@ -29,7 +29,7 @@ class A() {
val a: A = A() val a: A = A()
get() { get() {
c0++ c0++
return $a return field
} }
fun box(): String { fun box(): String {
@@ -18,7 +18,7 @@ class A() {
var a: A = A() var a: A = A()
get() { get() {
c0++ c0++
return $a return field
} }
fun box(): String { fun box(): String {
@@ -17,7 +17,7 @@ class A() {
var b = MyInt(0) var b = MyInt(0)
get() { get() {
gc = gc + 1; gc = gc + 1;
return $b; return field;
} }
set(a: MyInt) { set(a: MyInt) {
sc = sc + 1; sc = sc + 1;
@@ -2,7 +2,7 @@ package foo
class A { class A {
val a: Int = 1 val a: Int = 1
get() = $a + 1 get() = field + 1
fun getA(): Int { fun getA(): Int {
return $a return $a
@@ -3,7 +3,7 @@ package foo
class Test() { class Test() {
var a: Int = 5 var a: Int = 5
set(b: Int) { set(b: Int) {
$a = 3 field = 3
} }
} }
@@ -4,7 +4,7 @@ class A {
val a: Int val a: Int
val aa: Int val aa: Int
get() { get() {
return $aa return field
} }
var aR = 0 var aR = 0
@@ -22,7 +22,7 @@ class B {
private val a: Int private val a: Int
private val aa: Int private val aa: Int
get() { get() {
return $aa return field
} }
var aR = 0 var aR = 0
@@ -8,7 +8,7 @@ trait Holder {
open class BasicHolder : Holder { open class BasicHolder : Holder {
override val element: String override val element: String
get() = $element + $element get() = field + field
init { init {
element = "1" element = "1"
@@ -5,7 +5,7 @@ open class A {
private val b = 2 private val b = 2
get() { get() {
return $b + 10 + 100 * a return field + 10 + 100 * a
} }
fun getBInA(): Int { fun getBInA(): Int {
return b return b
@@ -37,10 +37,10 @@ class C : A, B {
override val bal: Int = 1 override val bal: Int = 1
override var bar: Int = 2 override var bar: Int = 2
get() { get() {
return $bar + 20 return field + 20
} }
set(value: Int) { set(value: Int) {
$bar = value + 20 field = value + 20
} }
override var realBar: Int = 3 override var realBar: Int = 3
@@ -3,14 +3,14 @@ package foo
open class A { open class A {
open val a = 2 open val a = 2
get() { get() {
return $a + 1 return field + 1
} }
} }
class B : A() { class B : A() {
override val a: Int = 5 override val a: Int = 5
get() { get() {
return super.a + 10 * $a + 100 return super.a + 10 * field + 100
} }
} }
@@ -100,10 +100,10 @@ class Logo(override var pos: Vector) : Shape() {
val gradientGenerator: RadialGradientGenerator? = null val gradientGenerator: RadialGradientGenerator? = null
get() { get() {
if ($gradientGenerator == null) { if (field == null) {
$gradientGenerator = RadialGradientGenerator(context) field = RadialGradientGenerator(context)
} }
return $gradientGenerator return field
} }
class Creature(override var pos: Vector, val state: CanvasState) : Shape() { class Creature(override var pos: Vector, val state: CanvasState) : Shape() {