blob: 30a681de7c89ae9657ad9c22d113f438b9b82997 [file] [log] [blame]
/*
* Copyright 2021 Google LLC
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// WITH_RUNTIME
// TEST PROCESSOR: BackingFieldProcessor
// EXPECTED:
// lib.BaseClass.abstractProp_willBeBacked: false
// lib.BaseClass.abstractProp_wontBeBacked: false
// lib.BaseClass.lateinit_var_1: true
// lib.BaseClass.lateinit_var_2: true
// lib.BaseClass.notOverriddenAbstractProp: true
// lib.BaseClass.overriddenBaseProp_willBeBacked: true
// lib.BaseClass.overriddenBaseProp_wontBeBacked: true
// lib.ChildClass.abstractProp_willBeBacked: true
// lib.ChildClass.abstractProp_wontBeBacked: false
// lib.ChildClass.interfaceProp_willBeBacked: true
// lib.ChildClass.interfaceProp_wontBeBacked: false
// lib.ChildClass.lateinit_var_1: false
// lib.ChildClass.lateinit_var_2: true
// lib.ChildClass.lateinit_var_3: true
// lib.ChildClass.overriddenBaseProp_willBeBacked: true
// lib.ChildClass.overriddenBaseProp_wontBeBacked: false
// lib.ConstructorSetProp.propSetInConstructor: true
// lib.DataClass.value_Param: true
// lib.DataClass.variable_Param: true
// lib.JavaClass.javaField: true
// lib.JavaClass.javaFieldWithAccessors: true
// lib.MyInterface.interfaceProp_willBeBacked: false
// lib.MyInterface.interfaceProp_wontBeBacked: false
// lib.MyInterface.lateinit_var_3: false
// lib.NormalClass.Companion.companionVar: true
// lib.NormalClass.Companion.companion_noBackingVal: false
// lib.NormalClass.Companion.companion_noBackingVar: false
// lib.NormalClass.Companion.companion_withBackingAndGetter: true
// lib.NormalClass.Companion.staticVar: true
// lib.NormalClass.Companion.static_noBackingVal: false
// lib.NormalClass.Companion.static_noBackingVar: false
// lib.NormalClass.Companion.static_withBackingAndGetter: true
// lib.NormalClass.jvmField_withBacking: true
// lib.NormalClass.lateinit_var: true
// lib.NormalClass.value: true
// lib.NormalClass.value_Param: true
// lib.NormalClass.value_noBacking: false
// lib.NormalClass.value_withBacking: true
// lib.NormalClass.variable: true
// lib.NormalClass.variable_Param: true
// lib.NormalClass.variable_noBacking: false
// lib.NormalClass.variable_withBacking: true
// lib.lateinit_var: true
// lib.value: true
// lib.value_noBacking: false
// lib.value_withBacking: true
// lib.variable: true
// lib.variable_noBacking: false
// lib.variable_withBacking: true
// main.BaseClass.abstractProp_willBeBacked: false
// main.BaseClass.abstractProp_wontBeBacked: false
// main.BaseClass.lateinit_var_1: true
// main.BaseClass.lateinit_var_2: true
// main.BaseClass.notOverriddenAbstractProp: true
// main.BaseClass.overriddenBaseProp_willBeBacked: true
// main.BaseClass.overriddenBaseProp_wontBeBacked: true
// main.ChildClass.abstractProp_willBeBacked: true
// main.ChildClass.abstractProp_wontBeBacked: false
// main.ChildClass.interfaceProp_willBeBacked: true
// main.ChildClass.interfaceProp_wontBeBacked: false
// main.ChildClass.lateinit_var_1: false
// main.ChildClass.lateinit_var_2: true
// main.ChildClass.lateinit_var_3: true
// main.ChildClass.overriddenBaseProp_willBeBacked: true
// main.ChildClass.overriddenBaseProp_wontBeBacked: false
// main.ConstructorSetProp.propSetInConstructor: true
// main.DataClass.value_Param: true
// main.DataClass.variable_Param: true
// main.JavaClass.javaField: true
// main.JavaClass.javaFieldWithAccessors: true
// main.MyInterface.interfaceProp_willBeBacked: false
// main.MyInterface.interfaceProp_wontBeBacked: false
// main.MyInterface.lateinit_var_3: false
// main.NormalClass.Companion.companionVar: true
// main.NormalClass.Companion.companion_noBackingVal: false
// main.NormalClass.Companion.companion_noBackingVar: false
// main.NormalClass.Companion.companion_withBackingAndGetter: true
// main.NormalClass.Companion.staticVar: true
// main.NormalClass.Companion.static_noBackingVal: false
// main.NormalClass.Companion.static_noBackingVar: false
// main.NormalClass.Companion.static_withBackingAndGetter: true
// main.NormalClass.lateinit_var: true
// main.NormalClass.value: true
// main.NormalClass.value_Param: true
// main.NormalClass.value_noBacking: false
// main.NormalClass.value_withBacking: true
// main.NormalClass.variable: true
// main.NormalClass.variable_Param: true
// main.NormalClass.variable_noBacking: false
// main.NormalClass.variable_withBacking: true
// main.lateinit_var: true
// main.value: true
// main.value_noBacking: false
// main.value_withBacking: true
// main.variable: true
// main.variable_noBacking: false
// main.variable_withBacking: true
// END
// MODULE: lib
// FILE: lib.kt
package lib
val value: String = ""
var variable: String = ""
val value_noBacking: String
get() = "aa"
var variable_noBacking: String
get() = "aa"
set(value) {}
val value_withBacking: String = ""
get() = field
var variable_withBacking: String? = null
get() = field
lateinit var lateinit_var: String
data class DataClass(
val value_Param: String,
var variable_Param: String
)
class NormalClass(
val value_Param: String,
var variable_Param: String,
normalParam: String
) {
val value: String = ""
var variable: String = ""
val value_noBacking: String
get() = "aa"
var variable_noBacking: String
get() = "aa"
set(value) {}
val value_withBacking: String = ""
get() = field
var variable_withBacking: String? = null
get() = field
val jvmField_withBacking: String = ""
lateinit var lateinit_var: String
companion object {
@JvmStatic
var staticVar: String = ""
@JvmStatic
val static_withBackingAndGetter: String = ""
get() = field
@JvmStatic
val static_noBackingVal: String
get() = ""
@JvmStatic
var static_noBackingVar: String
get() = ""
set(value) {}
var companionVar: String = ""
val companion_withBackingAndGetter: String = ""
get() = field
@JvmStatic
val companion_noBackingVal: String
get() = ""
@JvmStatic
var companion_noBackingVar: String
get() = ""
set(value) {}
}
}
abstract class BaseClass {
open val overriddenBaseProp_willBeBacked: String = ""
open val overriddenBaseProp_wontBeBacked: String = ""
open val notOverriddenAbstractProp: String = ""
abstract val abstractProp_willBeBacked: String
abstract val abstractProp_wontBeBacked: String
open lateinit var lateinit_var_1: String
open lateinit var lateinit_var_2: String
}
interface MyInterface {
val interfaceProp_willBeBacked: String
val interfaceProp_wontBeBacked: String
var lateinit_var_3: String
}
class ChildClass: BaseClass(), MyInterface {
override val overriddenBaseProp_willBeBacked: String = ""
override val overriddenBaseProp_wontBeBacked: String
get() = ""
override val abstractProp_willBeBacked: String = ""
override val abstractProp_wontBeBacked: String
get() = ""
override val interfaceProp_willBeBacked: String = ""
override val interfaceProp_wontBeBacked: String
get() = ""
override var lateinit_var_1: String
get() = ""
set(v: String) = Unit
override var lateinit_var_2: String = ""
override lateinit var lateinit_var_3: String
}
class ConstructorSetProp {
private val propSetInConstructor: Boolean
constructor(propSetInConstructor: Boolean) {
this.propSetInConstructor = propSetInConstructor
}
}
// FILE: lib/JavaClass.java
package lib;
public class JavaClass {
private String javaField;
private String javaFieldWithAccessors;
public String getJavaFieldWithAccessors()
{ return ""; }
public void setJavaFieldWithAccessors(String value )
{}
public String getJavaAccessorWithoutField()
{ return ""; }
public void setJavaAccessorWithoutField(String value )
{}
}
// MODULE: main(lib)
// FILE: main.kt
package main
val value: String = ""
var variable: String = ""
val value_noBacking: String
get() = "aa"
var variable_noBacking: String
get() = "aa"
set(value) {}
val value_withBacking: String = ""
get() = field
var variable_withBacking: String? = null
get() = field
lateinit var lateinit_var: String
data class DataClass(
val value_Param: String,
var variable_Param: String
)
class NormalClass(
val value_Param: String,
var variable_Param: String,
normalParam: String
) {
val value: String = ""
var variable: String = ""
val value_noBacking: String
get() = "aa"
var variable_noBacking: String
get() = "aa"
set(value) {}
val value_withBacking: String = ""
get() = field
var variable_withBacking: String? = null
get() = field
lateinit var lateinit_var: String
companion object {
@JvmStatic
var staticVar: String = ""
@JvmStatic
val static_withBackingAndGetter: String = ""
get() = field
@JvmStatic
val static_noBackingVal: String
get() = ""
@JvmStatic
var static_noBackingVar: String
get() = ""
set(value) {}
var companionVar: String = ""
val companion_withBackingAndGetter: String = ""
get() = field
@JvmStatic
val companion_noBackingVal: String
get() = ""
@JvmStatic
var companion_noBackingVar: String
get() = ""
set(value) {}
}
}
abstract class BaseClass {
open val overriddenBaseProp_willBeBacked: String = ""
open val overriddenBaseProp_wontBeBacked: String = ""
open val notOverriddenAbstractProp: String = ""
abstract val abstractProp_willBeBacked: String
abstract val abstractProp_wontBeBacked: String
open lateinit var lateinit_var_1: String
open lateinit var lateinit_var_2: String
}
interface MyInterface {
val interfaceProp_willBeBacked: String
val interfaceProp_wontBeBacked: String
var lateinit_var_3: String
}
class ChildClass: BaseClass(), MyInterface {
override val overriddenBaseProp_willBeBacked: String = ""
override val overriddenBaseProp_wontBeBacked: String
get() = ""
override val abstractProp_willBeBacked: String = ""
override val abstractProp_wontBeBacked: String
get() = ""
override val interfaceProp_willBeBacked: String = ""
override val interfaceProp_wontBeBacked: String
get() = ""
override var lateinit_var_1: String
get() = ""
set(v: String) = Unit
override var lateinit_var_2: String = ""
override lateinit var lateinit_var_3: String
}
class ConstructorSetProp {
private val propSetInConstructor: Boolean
constructor(propSetInConstructor: Boolean) {
this.propSetInConstructor = propSetInConstructor
}
}
// FILE: main/JavaClass.java
package main;
public class JavaClass {
private String javaField;
private String javaFieldWithAccessors;
public String getJavaFieldWithAccessors()
{ return ""; }
public void setJavaFieldWithAccessors(String value )
{}
public String getJavaAccessorWithoutField()
{ return ""; }
public void setJavaAccessorWithoutField(String value )
{}
}