KT-18786: J2K should move all properties to top of class
#KT-18786 fixed
This commit is contained in:
@@ -22,7 +22,7 @@ import org.jetbrains.kotlin.j2k.append
|
|||||||
|
|
||||||
abstract class Member(var annotations: Annotations, val modifiers: Modifiers) : Element()
|
abstract class Member(var annotations: Annotations, val modifiers: Modifiers) : Element()
|
||||||
|
|
||||||
class ClassBody (
|
class ClassBody(
|
||||||
val primaryConstructor: PrimaryConstructor?,
|
val primaryConstructor: PrimaryConstructor?,
|
||||||
val primaryConstructorSignature: PrimaryConstructorSignature?,
|
val primaryConstructorSignature: PrimaryConstructorSignature?,
|
||||||
val baseClassParams: List<DeferredElement<Expression>>?,
|
val baseClassParams: List<DeferredElement<Expression>>?,
|
||||||
@@ -39,7 +39,7 @@ class ClassBody (
|
|||||||
builder append " " append lBrace append "\n"
|
builder append " " append lBrace append "\n"
|
||||||
|
|
||||||
if (!classKind.isEnum()) {
|
if (!classKind.isEnum()) {
|
||||||
builder.append(membersFiltered, "\n")
|
builder.append(membersFiltered.sortedWith(PropertyComparator), "\n")
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
val (constants, otherMembers) = membersFiltered.partition { it is EnumConstant }
|
val (constants, otherMembers) = membersFiltered.partition { it is EnumConstant }
|
||||||
@@ -50,7 +50,7 @@ class ClassBody (
|
|||||||
builder.append(";\n")
|
builder.append(";\n")
|
||||||
}
|
}
|
||||||
|
|
||||||
builder.append(otherMembers, "\n")
|
builder.append(otherMembers.sortedWith(PropertyComparator), "\n")
|
||||||
}
|
}
|
||||||
|
|
||||||
appendCompanionObject(builder, membersFiltered.isNotEmpty())
|
appendCompanionObject(builder, membersFiltered.isNotEmpty())
|
||||||
@@ -64,3 +64,12 @@ class ClassBody (
|
|||||||
builder.append(companionObjectMembers, "\n", "companion object {\n", "\n}")
|
builder.append(companionObjectMembers, "\n", "companion object {\n", "\n}")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private object PropertyComparator : Comparator<Member> {
|
||||||
|
override fun compare(o1: Member?, o2: Member?): Int = when {
|
||||||
|
o1 is Property && o2 is Property -> 0
|
||||||
|
o1 is Property -> -1
|
||||||
|
o2 is Property -> 1
|
||||||
|
else -> 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
+2
-2
@@ -1,8 +1,8 @@
|
|||||||
class WithModifiersOnAccessors {
|
class WithModifiersOnAccessors {
|
||||||
@Synchronized private fun methSync() {}
|
|
||||||
@Strictfp protected fun methStrict() {}
|
|
||||||
|
|
||||||
@get:Synchronized @set:Synchronized var sync = 0
|
@get:Synchronized @set:Synchronized var sync = 0
|
||||||
|
|
||||||
@get:Strictfp var strict = 0.0
|
@get:Strictfp var strict = 0.0
|
||||||
|
@Synchronized private fun methSync() {}
|
||||||
|
@Strictfp protected fun methStrict() {}
|
||||||
}
|
}
|
||||||
@@ -1,8 +1,9 @@
|
|||||||
internal object Library {
|
internal object Library {
|
||||||
fun call() {}
|
|
||||||
|
|
||||||
val string: String
|
val string: String
|
||||||
get() = ""
|
get() = ""
|
||||||
|
|
||||||
|
fun call() {}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal class User {
|
internal class User {
|
||||||
|
|||||||
+2
-1
@@ -1,10 +1,11 @@
|
|||||||
// !forceNotNullTypes: false
|
// !forceNotNullTypes: false
|
||||||
// !specifyLocalVariableTypeByDefault: true
|
// !specifyLocalVariableTypeByDefault: true
|
||||||
internal class Library {
|
internal class Library {
|
||||||
fun call() {}
|
|
||||||
|
|
||||||
val string: String
|
val string: String
|
||||||
get() = ""
|
get() = ""
|
||||||
|
|
||||||
|
fun call() {}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal class User {
|
internal class User {
|
||||||
|
|||||||
+2
-1
@@ -1,8 +1,9 @@
|
|||||||
internal class Library {
|
internal class Library {
|
||||||
fun call() {}
|
|
||||||
|
|
||||||
val string: String
|
val string: String
|
||||||
get() = ""
|
get() = ""
|
||||||
|
|
||||||
|
fun call() {}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal class User {
|
internal class User {
|
||||||
|
|||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
internal object Util {
|
internal object Util {
|
||||||
fun util1() {}
|
|
||||||
fun util2() {}
|
|
||||||
|
|
||||||
val CONSTANT = 10
|
val CONSTANT = 10
|
||||||
|
fun util1() {}
|
||||||
|
fun util2() {}
|
||||||
}
|
}
|
||||||
+3
-3
@@ -1,7 +1,7 @@
|
|||||||
internal object Util {
|
internal object Util {
|
||||||
|
|
||||||
|
val CONSTANT = 10
|
||||||
|
|
||||||
fun util1() {}
|
fun util1() {}
|
||||||
fun util2() {}
|
fun util2() {}
|
||||||
|
}
|
||||||
val CONSTANT = 10
|
|
||||||
}
|
|
||||||
+3
-3
@@ -1,6 +1,6 @@
|
|||||||
internal object Util {
|
internal object Util {
|
||||||
fun util1() {}
|
|
||||||
fun util2() {}
|
|
||||||
|
|
||||||
val CONSTANT = 10
|
val CONSTANT = 10
|
||||||
}
|
fun util1() {}
|
||||||
|
fun util2() {}
|
||||||
|
}
|
||||||
+2
-2
@@ -3,6 +3,8 @@
|
|||||||
package foo
|
package foo
|
||||||
|
|
||||||
internal class A {
|
internal class A {
|
||||||
|
|
||||||
|
private /*it's private*/ val field = 0
|
||||||
fun /* nothing to return */ foo(/* no parameters at all */) {
|
fun /* nothing to return */ foo(/* no parameters at all */) {
|
||||||
// let declare a variable
|
// let declare a variable
|
||||||
// with 2 comments before
|
// with 2 comments before
|
||||||
@@ -12,8 +14,6 @@ internal class A {
|
|||||||
fun /* we return int*/ foo(/*int*/ p: Int/* parameter p */): Int { /* body is empty */
|
fun /* we return int*/ foo(/*int*/ p: Int/* parameter p */): Int { /* body is empty */
|
||||||
}
|
}
|
||||||
|
|
||||||
private/*it's private*/ val field = 0
|
|
||||||
|
|
||||||
/*it's public*/ fun foo(s: String): Char {}
|
/*it's public*/ fun foo(s: String): Char {}
|
||||||
|
|
||||||
protected/*it's protected*/ fun foo(c: Char) {}
|
protected/*it's protected*/ fun foo(c: Char) {}
|
||||||
|
|||||||
@@ -3,11 +3,11 @@ internal interface I {
|
|||||||
|
|
||||||
var something2: Int
|
var something2: Int
|
||||||
|
|
||||||
fun setSomething3(value: Int)
|
|
||||||
|
|
||||||
val something4: Int
|
val something4: Int
|
||||||
fun setSomething4(value: String)
|
|
||||||
|
|
||||||
val something5: Int
|
val something5: Int
|
||||||
|
|
||||||
|
fun setSomething3(value: Int)
|
||||||
|
fun setSomething4(value: String)
|
||||||
fun setSomething5(value: Int): Int
|
fun setSomething5(value: Int): Int
|
||||||
}
|
}
|
||||||
@@ -15,9 +15,9 @@ internal interface I {
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal interface I1 : I {
|
internal interface I1 : I {
|
||||||
fun setSomething1(value: Int)
|
|
||||||
|
|
||||||
val something6: Int
|
val something6: Int
|
||||||
|
fun setSomething1(value: Int)
|
||||||
}
|
}
|
||||||
|
|
||||||
internal open class B {
|
internal open class B {
|
||||||
@@ -59,14 +59,6 @@ internal abstract class C(override val something1: Int) : B(), I {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getSomething6(): Int {
|
|
||||||
return mySomething6
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun setSomething6(value: Int) {
|
|
||||||
mySomething6 = value
|
|
||||||
}
|
|
||||||
|
|
||||||
override val fromB1: String
|
override val fromB1: String
|
||||||
get() = super.fromB1
|
get() = super.fromB1
|
||||||
|
|
||||||
@@ -91,6 +83,14 @@ internal abstract class C(override val something1: Int) : B(), I {
|
|||||||
val fromB5: String
|
val fromB5: String
|
||||||
get() = ""
|
get() = ""
|
||||||
|
|
||||||
|
fun getSomething6(): Int {
|
||||||
|
return mySomething6
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun setSomething6(value: Int) {
|
||||||
|
mySomething6 = value
|
||||||
|
}
|
||||||
|
|
||||||
override fun setFromB5(value: String) {
|
override fun setFromB5(value: String) {
|
||||||
super.setFromB5(value)
|
super.setFromB5(value)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ internal class A {
|
|||||||
private val list1 = ArrayList<String>()
|
private val list1 = ArrayList<String>()
|
||||||
private val list2 = ArrayList<String>()
|
private val list2 = ArrayList<String>()
|
||||||
private val myList3 = ArrayList<String>()
|
private val myList3 = ArrayList<String>()
|
||||||
|
val list3: List<String>
|
||||||
|
get() = myList3
|
||||||
|
|
||||||
fun getList1(): List<String> {
|
fun getList1(): List<String> {
|
||||||
return list1
|
return list1
|
||||||
@@ -13,9 +15,6 @@ internal class A {
|
|||||||
return list2
|
return list2
|
||||||
}
|
}
|
||||||
|
|
||||||
val list3: List<String>
|
|
||||||
get() = myList3
|
|
||||||
|
|
||||||
fun foo() {
|
fun foo() {
|
||||||
list1.add("a")
|
list1.add("a")
|
||||||
list2.add("a")
|
list2.add("a")
|
||||||
|
|||||||
+14
-14
@@ -15,20 +15,6 @@ internal class A {
|
|||||||
private var field9: String? = "a"
|
private var field9: String? = "a"
|
||||||
private var field10: String? = foo()
|
private var field10: String? = foo()
|
||||||
|
|
||||||
fun foo(): String {
|
|
||||||
return "x"
|
|
||||||
}
|
|
||||||
|
|
||||||
fun bar() {
|
|
||||||
field5 = ArrayList()
|
|
||||||
field7++
|
|
||||||
field8++
|
|
||||||
field9 = null
|
|
||||||
field10 = null
|
|
||||||
}
|
|
||||||
|
|
||||||
internal interface I
|
|
||||||
|
|
||||||
private val anonymous: I = object : I {
|
private val anonymous: I = object : I {
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -43,6 +29,20 @@ internal class A {
|
|||||||
|
|
||||||
private var iimpl = anonymous
|
private var iimpl = anonymous
|
||||||
|
|
||||||
|
fun foo(): String {
|
||||||
|
return "x"
|
||||||
|
}
|
||||||
|
|
||||||
|
fun bar() {
|
||||||
|
field5 = ArrayList()
|
||||||
|
field7++
|
||||||
|
field8++
|
||||||
|
field9 = null
|
||||||
|
field10 = null
|
||||||
|
}
|
||||||
|
|
||||||
|
internal interface I
|
||||||
|
|
||||||
fun testAnonymousObject(i: Any) {
|
fun testAnonymousObject(i: Any) {
|
||||||
if (true) {
|
if (true) {
|
||||||
iimpl = i as I
|
iimpl = i as I
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
internal class F {
|
internal class F {
|
||||||
|
var i: Int? = 0
|
||||||
|
|
||||||
fun f1() {}
|
fun f1() {}
|
||||||
|
|
||||||
|
|
||||||
fun f2() {}
|
fun f2() {}
|
||||||
var i: Int? = 0
|
|
||||||
|
|
||||||
fun f3() {}
|
fun f3() {}
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
internal class F {
|
internal class F {
|
||||||
|
var i: Int? = 0
|
||||||
|
|
||||||
//c1
|
//c1
|
||||||
|
|
||||||
@@ -13,7 +14,6 @@ internal class F {
|
|||||||
//c4
|
//c4
|
||||||
|
|
||||||
fun f2() {}
|
fun f2() {}
|
||||||
var i: Int? = 0
|
|
||||||
|
|
||||||
fun f3() {}
|
fun f3() {}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
internal object F {
|
internal object F {
|
||||||
|
var i: Int? = 0
|
||||||
|
|
||||||
//c1
|
//c1
|
||||||
|
|
||||||
@@ -13,7 +14,6 @@ internal object F {
|
|||||||
//c4
|
//c4
|
||||||
|
|
||||||
fun f2() {}
|
fun f2() {}
|
||||||
var i: Int? = 0
|
|
||||||
|
|
||||||
fun f3() {}
|
fun f3() {}
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -1,7 +1,8 @@
|
|||||||
class Foo {
|
class Foo {
|
||||||
private external fun nativeMethod()
|
|
||||||
|
|
||||||
var bar: Int
|
var bar: Int
|
||||||
external get
|
external get
|
||||||
external set
|
external set
|
||||||
|
|
||||||
|
private external fun nativeMethod()
|
||||||
}
|
}
|
||||||
+20
-20
@@ -17,23 +17,9 @@ internal class C {
|
|||||||
*/
|
*/
|
||||||
private val i: Int = 0
|
private val i: Int = 0
|
||||||
|
|
||||||
/**
|
|
||||||
* This is a function doc comment.
|
|
||||||
*/
|
|
||||||
fun foo() {
|
|
||||||
/* This is a function comment */
|
|
||||||
}
|
|
||||||
|
|
||||||
//simple one line comment for function
|
|
||||||
fun f1() {}
|
|
||||||
|
|
||||||
//simple one line comment for field
|
//simple one line comment for field
|
||||||
var j: Int = 0
|
var j: Int = 0
|
||||||
|
|
||||||
//double c style
|
|
||||||
//comment before function
|
|
||||||
fun f2() {}
|
|
||||||
|
|
||||||
//double c style
|
//double c style
|
||||||
//comment before field
|
//comment before field
|
||||||
var k: Int = 0
|
var k: Int = 0
|
||||||
@@ -46,7 +32,24 @@ internal class C {
|
|||||||
* different
|
* different
|
||||||
*/
|
*/
|
||||||
//comments
|
//comments
|
||||||
fun f3() {}
|
var l: Int = 0
|
||||||
|
|
||||||
|
/*two*/ /*comments*//*line*/
|
||||||
|
var z: Int = 0
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is a function doc comment.
|
||||||
|
*/
|
||||||
|
fun foo() {
|
||||||
|
/* This is a function comment */
|
||||||
|
}
|
||||||
|
|
||||||
|
//simple one line comment for function
|
||||||
|
fun f1() {}
|
||||||
|
|
||||||
|
//double c style
|
||||||
|
//comment before function
|
||||||
|
fun f2() {}
|
||||||
|
|
||||||
//combination
|
//combination
|
||||||
/** of
|
/** of
|
||||||
@@ -56,8 +59,5 @@ internal class C {
|
|||||||
* different
|
* different
|
||||||
*/
|
*/
|
||||||
//comments
|
//comments
|
||||||
var l: Int = 0
|
fun f3() {}
|
||||||
|
}
|
||||||
/*two*/ /*comments*//*line*/
|
|
||||||
var z: Int = 0
|
|
||||||
}
|
|
||||||
|
|||||||
+2
-3
@@ -1,10 +1,9 @@
|
|||||||
// ERROR: Variable cannot be initialized before declaration
|
|
||||||
package demo
|
package demo
|
||||||
|
|
||||||
internal class C(a: Int) {
|
internal class C(a: Int) {
|
||||||
|
var abc = 0
|
||||||
|
|
||||||
init {
|
init {
|
||||||
abc = a * 2
|
abc = a * 2
|
||||||
}
|
}
|
||||||
|
|
||||||
var abc = 0
|
|
||||||
}
|
}
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
class Test {
|
class Test {
|
||||||
fun nullableString(p: Int): String? {
|
|
||||||
return if (p > 0) "response" else null
|
|
||||||
}
|
|
||||||
|
|
||||||
private var nullableInitializerField = nullableString(3)
|
private var nullableInitializerField = nullableString(3)
|
||||||
private val nullableInitializerFieldFinal = nullableString(3)
|
private val nullableInitializerFieldFinal = nullableString(3)
|
||||||
var nullableInitializerPublicField = nullableString(3)
|
var nullableInitializerPublicField = nullableString(3)
|
||||||
|
fun nullableString(p: Int): String? {
|
||||||
|
return if (p > 0) "response" else null
|
||||||
|
}
|
||||||
|
|
||||||
fun testProperty() {
|
fun testProperty() {
|
||||||
nullableInitializerField = "aaa"
|
nullableInitializerField = "aaa"
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
// ERROR: Type mismatch: inferred type is String? but String was expected
|
// ERROR: Type mismatch: inferred type is String? but String was expected
|
||||||
class TestJava {
|
class TestJava {
|
||||||
fun nullableObj(p: Int): Any? {
|
|
||||||
return if (p > 0) "response" else null
|
|
||||||
}
|
|
||||||
|
|
||||||
var nullableInitializerFieldCast: String = nullableObj(3) as String?
|
var nullableInitializerFieldCast: String = nullableObj(3) as String?
|
||||||
private val nullableInitializerPrivateFieldCast = nullableObj(3) as String?
|
private val nullableInitializerPrivateFieldCast = nullableObj(3) as String?
|
||||||
|
fun nullableObj(p: Int): Any? {
|
||||||
|
return if (p > 0) "response" else null
|
||||||
|
}
|
||||||
|
|
||||||
fun testProperty() {
|
fun testProperty() {
|
||||||
nullableInitializerFieldCast[0]
|
nullableInitializerFieldCast[0]
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
class Test {
|
class Test {
|
||||||
fun notNullString(p: Int): String {
|
|
||||||
return "response"
|
|
||||||
}
|
|
||||||
|
|
||||||
private val notNullInitializerField = notNullString(3)
|
private val notNullInitializerField = notNullString(3)
|
||||||
var notNullInitializerPublicField = notNullString(3)
|
var notNullInitializerPublicField = notNullString(3)
|
||||||
|
fun notNullString(p: Int): String {
|
||||||
|
return "response"
|
||||||
|
}
|
||||||
|
|
||||||
fun testProperty() {
|
fun testProperty() {
|
||||||
notNullInitializerField[0]
|
notNullInitializerField[0]
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
package test
|
package test
|
||||||
|
|
||||||
open class BaseInheritorSamePackage {
|
open class BaseInheritorSamePackage {
|
||||||
|
|
||||||
|
var i = 1
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -12,8 +15,6 @@ open class BaseInheritorSamePackage {
|
|||||||
fun foo() {
|
fun foo() {
|
||||||
BaseInheritorSamePackage(1)
|
BaseInheritorSamePackage(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
var i = 1
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal class DerivedInheritorSamePackage : BaseInheritorSamePackage() {
|
internal class DerivedInheritorSamePackage : BaseInheritorSamePackage() {
|
||||||
|
|||||||
@@ -2,11 +2,11 @@ package test
|
|||||||
|
|
||||||
class BaseSamePackage {
|
class BaseSamePackage {
|
||||||
|
|
||||||
|
var i = 1
|
||||||
|
|
||||||
fun foo() {
|
fun foo() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var i = 1
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal class DerivedSamePackage {
|
internal class DerivedSamePackage {
|
||||||
|
|||||||
@@ -10,9 +10,9 @@ internal open class BaseSuperSamePackage {
|
|||||||
|
|
||||||
internal class DerivedSuperSamePackage : BaseSuperSamePackage() {
|
internal class DerivedSuperSamePackage : BaseSuperSamePackage() {
|
||||||
|
|
||||||
|
var i = 1
|
||||||
|
|
||||||
fun foo() {
|
fun foo() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var i = 1
|
|
||||||
}
|
}
|
||||||
+3
-2
@@ -19,12 +19,13 @@ class BaseProtectedConstructor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal class DerivedSamePackage {
|
internal class DerivedSamePackage {
|
||||||
|
|
||||||
|
private val i = BaseProtectedConstructor().usageInPropertyInitializer()
|
||||||
|
|
||||||
init {
|
init {
|
||||||
BaseProtectedConstructor().usageInConstructor()
|
BaseProtectedConstructor().usageInConstructor()
|
||||||
}
|
}
|
||||||
|
|
||||||
private val i = BaseProtectedConstructor().usageInPropertyInitializer()
|
|
||||||
|
|
||||||
fun usage() {
|
fun usage() {
|
||||||
BaseProtectedConstructor().usageInMethod()
|
BaseProtectedConstructor().usageInMethod()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ internal class C {
|
|||||||
return string
|
return string
|
||||||
}
|
}
|
||||||
|
|
||||||
fun foo(i: I) {}
|
|
||||||
|
|
||||||
var string: String? = null
|
var string: String? = null
|
||||||
|
|
||||||
|
fun foo(i: I) {}
|
||||||
}
|
}
|
||||||
+5
-4
@@ -1,9 +1,10 @@
|
|||||||
class B {
|
class B {
|
||||||
|
|
||||||
|
var yy = ""
|
||||||
|
private set
|
||||||
|
|
||||||
internal fun foo(a: AAA) {
|
internal fun foo(a: AAA) {
|
||||||
a.x = a.x + 1
|
a.x = a.x + 1
|
||||||
yy += "a"
|
yy += "a"
|
||||||
}
|
}
|
||||||
|
}
|
||||||
var yy = ""
|
|
||||||
private set
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -2,9 +2,9 @@ package test
|
|||||||
|
|
||||||
open class BaseOtherPackage protected constructor() {
|
open class BaseOtherPackage protected constructor() {
|
||||||
|
|
||||||
|
protected var i = 1
|
||||||
|
|
||||||
protected fun foo() {
|
protected fun foo() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected var i = 1
|
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -1,10 +1,10 @@
|
|||||||
package test
|
package test
|
||||||
|
|
||||||
internal object Utils {
|
internal object Utils {
|
||||||
|
|
||||||
|
val staticField = 1
|
||||||
fun foo1(p: Int) {}
|
fun foo1(p: Int) {}
|
||||||
fun foo2(): Int {
|
fun foo2(): Int {
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
}
|
||||||
val staticField = 1
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user