Detect and report inner classes capturing script instance
This commit is contained in:
committed by
TeamCityServer
parent
e865652602
commit
c1c94778ce
+1
-1
@@ -5,7 +5,7 @@
|
||||
// KT-19423
|
||||
val used = "abc"
|
||||
class User {
|
||||
val property = used // error: Expression is inaccessible from a nested class
|
||||
val property = used
|
||||
}
|
||||
|
||||
val rv = User().property
|
||||
|
||||
Vendored
+15
@@ -0,0 +1,15 @@
|
||||
// IGNORE_BACKEND: JS, JS_IR, JS_IR_ES6, NATIVE, WASM
|
||||
|
||||
// expected: rv: abcabc
|
||||
|
||||
// KT-19423 variation
|
||||
val used = "abc"
|
||||
|
||||
inner class Outer {
|
||||
val middle = used
|
||||
inner class User {
|
||||
val property = used
|
||||
}
|
||||
}
|
||||
|
||||
val rv = Outer().User().property + Outer().middle
|
||||
Vendored
+16
@@ -0,0 +1,16 @@
|
||||
// IGNORE_BACKEND: JS, JS_IR, JS_IR_ES6, NATIVE, WASM
|
||||
// IGNORE_BACKEND: JVM, JVM_IR
|
||||
|
||||
// expected: rv: abcabc
|
||||
|
||||
// KT-19423 variation
|
||||
val used = "abc"
|
||||
|
||||
class Outer {
|
||||
val middle = used
|
||||
class User {
|
||||
val property = used
|
||||
}
|
||||
}
|
||||
|
||||
val rv = Outer.User().property + Outer().middle
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
// IGNORE_BACKEND: JS, JS_IR, JS_IR_ES6, NATIVE, WASM
|
||||
// IGNORE_BACKEND: JVM, JVM_IR
|
||||
|
||||
// expected: rv: abc
|
||||
|
||||
// KT-19423 variation
|
||||
val used = "abc"
|
||||
|
||||
class Outer {
|
||||
class User {
|
||||
val property = used
|
||||
}
|
||||
}
|
||||
|
||||
val rv = Outer.User().property
|
||||
Vendored
+15
@@ -0,0 +1,15 @@
|
||||
// IGNORE_BACKEND: JS, JS_IR, JS_IR_ES6, NATIVE, WASM
|
||||
|
||||
// expected: rv: abc!
|
||||
|
||||
// KT-19423 variation
|
||||
val used = "abc"
|
||||
|
||||
class Outer {
|
||||
val bang = "!"
|
||||
inner class User {
|
||||
val property = used + bang
|
||||
}
|
||||
}
|
||||
|
||||
val rv = Outer().User().property
|
||||
Vendored
+15
@@ -0,0 +1,15 @@
|
||||
// IGNORE_BACKEND: JS, JS_IR, JS_IR_ES6, NATIVE, WASM
|
||||
// IGNORE_BACKEND: JVM, JVM_IR
|
||||
|
||||
// expected: rv: abc
|
||||
|
||||
// KT-19423 variation
|
||||
val used = "abc"
|
||||
|
||||
object Outer {
|
||||
class User {
|
||||
val property = used
|
||||
}
|
||||
}
|
||||
|
||||
val rv = Outer.User().property
|
||||
Vendored
+12
@@ -0,0 +1,12 @@
|
||||
// !RENDER_DIAGNOSTICS_FULL_TEXT
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
|
||||
// KT-19423 variation
|
||||
val used = "abc"
|
||||
|
||||
class Outer {
|
||||
val middle = used
|
||||
<!SCRIPT_CAPTURING_NESTED_CLASS!>class User {
|
||||
val property = used
|
||||
}<!>
|
||||
}
|
||||
Vendored
+26
@@ -0,0 +1,26 @@
|
||||
package
|
||||
|
||||
public final class NestedAndOuterClassesCaptureProperty : kotlin.script.templates.standard.ScriptTemplateWithArgs {
|
||||
public constructor NestedAndOuterClassesCaptureProperty(/*0*/ args: kotlin.Array<kotlin.String>)
|
||||
public final override /*1*/ /*fake_override*/ val args: kotlin.Array<kotlin.String>
|
||||
public final val used: kotlin.String = "abc"
|
||||
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 final class Outer {
|
||||
public constructor Outer()
|
||||
public final val middle: kotlin.String = "abc"
|
||||
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 final class User {
|
||||
public constructor User()
|
||||
public final val property: kotlin.String = "abc"
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
// !RENDER_DIAGNOSTICS_FULL_TEXT
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
|
||||
// KT-19423 variation
|
||||
val used = "abc"
|
||||
|
||||
class Outer {
|
||||
<!SCRIPT_CAPTURING_NESTED_CLASS!>class User {
|
||||
val property = used
|
||||
}<!>
|
||||
}
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
package
|
||||
|
||||
public final class NestedClassCapturesProperty : kotlin.script.templates.standard.ScriptTemplateWithArgs {
|
||||
public constructor NestedClassCapturesProperty(/*0*/ args: kotlin.Array<kotlin.String>)
|
||||
public final override /*1*/ /*fake_override*/ val args: kotlin.Array<kotlin.String>
|
||||
public final val used: kotlin.String = "abc"
|
||||
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 final class Outer {
|
||||
public constructor Outer()
|
||||
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 final class User {
|
||||
public constructor User()
|
||||
public final val property: kotlin.String = "abc"
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
Vendored
+11
@@ -0,0 +1,11 @@
|
||||
// !RENDER_DIAGNOSTICS_FULL_TEXT
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
|
||||
// KT-19423 variation
|
||||
val used = "abc"
|
||||
|
||||
object Outer {
|
||||
<!SCRIPT_CAPTURING_NESTED_CLASS!>class User {
|
||||
val property = used
|
||||
}<!>
|
||||
}
|
||||
Vendored
+25
@@ -0,0 +1,25 @@
|
||||
package
|
||||
|
||||
public final class NestedToObjectClassCapturesProperty : kotlin.script.templates.standard.ScriptTemplateWithArgs {
|
||||
public constructor NestedToObjectClassCapturesProperty(/*0*/ args: kotlin.Array<kotlin.String>)
|
||||
public final override /*1*/ /*fake_override*/ val args: kotlin.Array<kotlin.String>
|
||||
public final val used: kotlin.String = "abc"
|
||||
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 object Outer {
|
||||
private constructor Outer()
|
||||
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 final class User {
|
||||
public constructor User()
|
||||
public final val property: kotlin.String = "abc"
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user