Test update for new ONLY_LOCAL_RETURN diagnostic
This commit is contained in:
@@ -762,6 +762,42 @@ public trait Function9</*0*/ in P1, /*1*/ in P2, /*2*/ in P3, /*3*/ in P4, /*4*/
|
|||||||
public abstract fun invoke(/*0*/ p1: P1, /*1*/ p2: P2, /*2*/ p3: P3, /*3*/ p4: P4, /*4*/ p5: P5, /*5*/ p6: P6, /*6*/ p7: P7, /*7*/ p8: P8, /*8*/ p9: P9): R
|
public abstract fun invoke(/*0*/ p1: P1, /*1*/ p2: P2, /*2*/ p3: P3, /*3*/ p4: P4, /*4*/ p5: P5, /*5*/ p6: P6, /*6*/ p7: P7, /*7*/ p8: P8, /*8*/ p9: P9): R
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final enum class InlineOption : kotlin.Enum<kotlin.InlineOption> {
|
||||||
|
/*primary*/ private constructor InlineOption()
|
||||||
|
public final override /*1*/ /*fake_override*/ fun name(): kotlin.String
|
||||||
|
public final override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int
|
||||||
|
|
||||||
|
public class object <class-object-for-InlineOption> {
|
||||||
|
/*primary*/ private constructor <class-object-for-InlineOption>()
|
||||||
|
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): kotlin.InlineOption
|
||||||
|
public final /*synthesized*/ fun values(): kotlin.Array<kotlin.InlineOption>
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum entry LOCAL_CONTINUE_AND_BREAK : kotlin.InlineOption {
|
||||||
|
/*primary*/ private constructor LOCAL_CONTINUE_AND_BREAK()
|
||||||
|
public final override /*1*/ /*fake_override*/ fun name(): kotlin.String
|
||||||
|
public final override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int
|
||||||
|
|
||||||
|
public class object <class-object-for-LOCAL_CONTINUE_AND_BREAK> : kotlin.InlineOption.LOCAL_CONTINUE_AND_BREAK {
|
||||||
|
/*primary*/ private constructor <class-object-for-LOCAL_CONTINUE_AND_BREAK>()
|
||||||
|
public final override /*1*/ /*fake_override*/ fun name(): kotlin.String
|
||||||
|
public final override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum entry ONLY_LOCAL_RETURN : kotlin.InlineOption {
|
||||||
|
/*primary*/ private constructor ONLY_LOCAL_RETURN()
|
||||||
|
public final override /*1*/ /*fake_override*/ fun name(): kotlin.String
|
||||||
|
public final override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int
|
||||||
|
|
||||||
|
public class object <class-object-for-ONLY_LOCAL_RETURN> : kotlin.InlineOption.ONLY_LOCAL_RETURN {
|
||||||
|
/*primary*/ private constructor <class-object-for-ONLY_LOCAL_RETURN>()
|
||||||
|
public final override /*1*/ /*fake_override*/ fun name(): kotlin.String
|
||||||
|
public final override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public final enum class InlineStrategy : kotlin.Enum<kotlin.InlineStrategy> {
|
public final enum class InlineStrategy : kotlin.Enum<kotlin.InlineStrategy> {
|
||||||
/*primary*/ private constructor InlineStrategy()
|
/*primary*/ private constructor InlineStrategy()
|
||||||
public final override /*1*/ /*fake_override*/ fun name(): kotlin.String
|
public final override /*1*/ /*fake_override*/ fun name(): kotlin.String
|
||||||
@@ -1440,6 +1476,12 @@ public final annotation class inline : kotlin.Annotation {
|
|||||||
public final fun <get-strategy>(): kotlin.InlineStrategy
|
public final fun <get-strategy>(): kotlin.InlineStrategy
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final annotation class inlineOptions : kotlin.Annotation {
|
||||||
|
/*primary*/ public constructor inlineOptions(/*0*/ vararg value: kotlin.InlineOption /*kotlin.Array<kotlin.InlineOption>*/)
|
||||||
|
internal final val value: kotlin.Array<kotlin.InlineOption>
|
||||||
|
internal final fun <get-value>(): kotlin.Array<kotlin.InlineOption>
|
||||||
|
}
|
||||||
|
|
||||||
public final annotation class noinline : kotlin.Annotation {
|
public final annotation class noinline : kotlin.Annotation {
|
||||||
/*primary*/ public constructor noinline()
|
/*primary*/ public constructor noinline()
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-2
@@ -1,5 +1,7 @@
|
|||||||
package test
|
package test
|
||||||
|
|
||||||
|
import kotlin.InlineOption.*
|
||||||
|
|
||||||
abstract class A<R> {
|
abstract class A<R> {
|
||||||
abstract fun getO() : R
|
abstract fun getO() : R
|
||||||
|
|
||||||
@@ -8,7 +10,7 @@ abstract class A<R> {
|
|||||||
abstract fun getParam() : R
|
abstract fun getParam() : R
|
||||||
}
|
}
|
||||||
|
|
||||||
inline fun <R> doWork(jobO: ()-> R, jobK: ()-> R, param: R) : A<R> {
|
inline fun <R> doWork(inlineOptions(ONLY_LOCAL_RETURN) jobO: ()-> R, inlineOptions(ONLY_LOCAL_RETURN) jobK: ()-> R, param: R) : A<R> {
|
||||||
val s = object : A<R>() {
|
val s = object : A<R>() {
|
||||||
|
|
||||||
override fun getO(): R {
|
override fun getO(): R {
|
||||||
@@ -25,7 +27,7 @@ inline fun <R> doWork(jobO: ()-> R, jobK: ()-> R, param: R) : A<R> {
|
|||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline fun <R> doWorkInConstructor(jobO: ()-> R, jobK: ()-> R, param: R) : A<R> {
|
inline fun <R> doWorkInConstructor(inlineOptions(ONLY_LOCAL_RETURN) jobO: ()-> R, inlineOptions(ONLY_LOCAL_RETURN) jobK: ()-> R, param: R) : A<R> {
|
||||||
val s = object : A<R>() {
|
val s = object : A<R>() {
|
||||||
|
|
||||||
val p = param;
|
val p = param;
|
||||||
|
|||||||
+4
-2
@@ -1,12 +1,14 @@
|
|||||||
package test
|
package test
|
||||||
|
|
||||||
|
import kotlin.InlineOption.*
|
||||||
|
|
||||||
abstract class A<R>(val param : R) {
|
abstract class A<R>(val param : R) {
|
||||||
abstract fun getO() : R
|
abstract fun getO() : R
|
||||||
|
|
||||||
abstract fun getK() : R
|
abstract fun getK() : R
|
||||||
}
|
}
|
||||||
|
|
||||||
inline fun <R> doWork(jobO: ()-> R, jobK: ()-> R, param: R) : A<R> {
|
inline fun <R> doWork(inlineOptions(ONLY_LOCAL_RETURN) jobO: ()-> R, inlineOptions(ONLY_LOCAL_RETURN) jobK: ()-> R, param: R) : A<R> {
|
||||||
val s = object : A<R>(param) {
|
val s = object : A<R>(param) {
|
||||||
|
|
||||||
override fun getO(): R {
|
override fun getO(): R {
|
||||||
@@ -19,7 +21,7 @@ inline fun <R> doWork(jobO: ()-> R, jobK: ()-> R, param: R) : A<R> {
|
|||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline fun <R> doWorkInConstructor(jobO: ()-> R, jobK: ()-> R, param: () -> R) : A<R> {
|
inline fun <R> doWorkInConstructor(inlineOptions(ONLY_LOCAL_RETURN) jobO: ()-> R, inlineOptions(ONLY_LOCAL_RETURN) jobK: ()-> R, inlineOptions(ONLY_LOCAL_RETURN) param: () -> R) : A<R> {
|
||||||
val s = object : A<R>(param()) {
|
val s = object : A<R>(param()) {
|
||||||
val o1 = jobO()
|
val o1 = jobO()
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import builders.*
|
import builders.*
|
||||||
|
import kotlin.InlineOption.*
|
||||||
|
|
||||||
inline fun testAllInline(f: () -> String) : String {
|
inline fun testAllInline(f: () -> String) : String {
|
||||||
val args = array("1", "2", "3")
|
val args = array("1", "2", "3")
|
||||||
@@ -40,7 +41,7 @@ inline fun testAllInline(f: () -> String) : String {
|
|||||||
return result.toString()!!
|
return result.toString()!!
|
||||||
}
|
}
|
||||||
|
|
||||||
inline fun testHtmlNoInline(f: () -> String) : String {
|
inline fun testHtmlNoInline(inlineOptions(ONLY_LOCAL_RETURN) f: () -> String) : String {
|
||||||
val args = array("1", "2", "3")
|
val args = array("1", "2", "3")
|
||||||
val result =
|
val result =
|
||||||
htmlNoInline() {
|
htmlNoInline() {
|
||||||
@@ -80,7 +81,7 @@ inline fun testHtmlNoInline(f: () -> String) : String {
|
|||||||
return result.toString()!!
|
return result.toString()!!
|
||||||
}
|
}
|
||||||
|
|
||||||
inline fun testBodyNoInline(f: () -> String) : String {
|
inline fun testBodyNoInline(inlineOptions(ONLY_LOCAL_RETURN) f: () -> String) : String {
|
||||||
val args = array("1", "2", "3")
|
val args = array("1", "2", "3")
|
||||||
val result =
|
val result =
|
||||||
html {
|
html {
|
||||||
@@ -120,7 +121,7 @@ inline fun testBodyNoInline(f: () -> String) : String {
|
|||||||
return result.toString()!!
|
return result.toString()!!
|
||||||
}
|
}
|
||||||
|
|
||||||
inline fun testBodyHtmlNoInline(f: () -> String) : String {
|
inline fun testBodyHtmlNoInline(inlineOptions(ONLY_LOCAL_RETURN) f: () -> String) : String {
|
||||||
val args = array("1", "2", "3")
|
val args = array("1", "2", "3")
|
||||||
val result =
|
val result =
|
||||||
htmlNoInline {
|
htmlNoInline {
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ class Title() : TagWithText("title")
|
|||||||
abstract class BodyTag(name: String) : TagWithText(name) {
|
abstract class BodyTag(name: String) : TagWithText(name) {
|
||||||
inline fun b(init: B.() -> Unit) = initTag(B(), init)
|
inline fun b(init: B.() -> Unit) = initTag(B(), init)
|
||||||
inline fun p(init: P.() -> Unit) = initTag(P(), init)
|
inline fun p(init: P.() -> Unit) = initTag(P(), init)
|
||||||
inline fun pNoInline(init: P.() -> Unit) = initTag(P(), init)
|
fun pNoInline(init: P.() -> Unit) = initTag(P(), init)
|
||||||
inline fun h1(init: H1.() -> Unit) = initTag(H1(), init)
|
inline fun h1(init: H1.() -> Unit) = initTag(H1(), init)
|
||||||
inline fun ul(init: UL.() -> Unit) = initTag(UL(), init)
|
inline fun ul(init: UL.() -> Unit) = initTag(UL(), init)
|
||||||
inline fun a(href: String, init: A.() -> Unit) {
|
inline fun a(href: String, init: A.() -> Unit) {
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package test
|
package test
|
||||||
|
|
||||||
inline fun <R> doWork(job: ()-> R) : R {
|
import kotlin.InlineOption.*
|
||||||
|
|
||||||
|
inline fun <R> doWork(inlineOptions(ONLY_LOCAL_RETURN) job: ()-> R) : R {
|
||||||
return notInline({job()})
|
return notInline({job()})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package test
|
package test
|
||||||
|
|
||||||
inline fun <R> doWork(job: ()-> R) : R {
|
import kotlin.InlineOption.*
|
||||||
|
|
||||||
|
inline fun <R> doWork(inlineOptions(ONLY_LOCAL_RETURN) job: ()-> R) : R {
|
||||||
val k = 10;
|
val k = 10;
|
||||||
return notInline({k; job()})
|
return notInline({k; job()})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package test
|
package test
|
||||||
|
|
||||||
|
import kotlin.InlineOption.*
|
||||||
|
|
||||||
public class Data()
|
public class Data()
|
||||||
|
|
||||||
public class Input(val d: Data) : Closeable {
|
public class Input(val d: Data) : Closeable {
|
||||||
@@ -27,4 +29,4 @@ public fun Input.copyTo(output: Output, size: Int): Long {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public inline fun with2<T>(receiver : T, body : T.() -> Unit) : Unit = {receiver.body()}()
|
public inline fun with2<T>(receiver : T, inlineOptions(ONLY_LOCAL_RETURN) body : T.() -> Unit) : Unit = {receiver.body()}()
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package zzz
|
package zzz
|
||||||
|
|
||||||
inline fun calc(lambda: () -> Int): Int {
|
import kotlin.InlineOption.*
|
||||||
|
|
||||||
|
inline fun calc(inlineOptions(ONLY_LOCAL_RETURN) lambda: () -> Int): Int {
|
||||||
return doCalc { lambda() }
|
return doCalc { lambda() }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+4
-2
@@ -1,5 +1,7 @@
|
|||||||
import test.*
|
import test.*
|
||||||
|
|
||||||
|
import kotlin.InlineOption.*
|
||||||
|
|
||||||
fun test1(param: String): String {
|
fun test1(param: String): String {
|
||||||
var result = "fail1"
|
var result = "fail1"
|
||||||
noInlineFun(param) { a ->
|
noInlineFun(param) { a ->
|
||||||
@@ -22,7 +24,7 @@ fun test11(param: String): String {
|
|||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
inline fun test2(param: () -> String): String {
|
inline fun test2(inlineOptions(ONLY_LOCAL_RETURN) param: () -> String): String {
|
||||||
var result = "fail1"
|
var result = "fail1"
|
||||||
noInlineFun("stub") { a ->
|
noInlineFun("stub") { a ->
|
||||||
concat(param()) {
|
concat(param()) {
|
||||||
@@ -33,7 +35,7 @@ inline fun test2(param: () -> String): String {
|
|||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
inline fun test22(param: () -> String): String {
|
inline fun test22(inlineOptions(ONLY_LOCAL_RETURN) param: () -> String): String {
|
||||||
var result = "fail1"
|
var result = "fail1"
|
||||||
{{result = param()}()}()
|
{{result = param()}()}()
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package test
|
package test
|
||||||
|
|
||||||
inline fun <R> call(f: () -> R) : R {
|
import kotlin.InlineOption.*
|
||||||
|
|
||||||
|
inline fun <R> call(inlineOptions(ONLY_LOCAL_RETURN) f: () -> R) : R {
|
||||||
return {f()} ()
|
return {f()} ()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
package test
|
package test
|
||||||
|
|
||||||
inline fun <R> doWork(job: ()-> R) : R {
|
import kotlin.InlineOption.*
|
||||||
|
|
||||||
|
inline fun <R> doWork(inlineOptions(ONLY_LOCAL_RETURN) job: ()-> R) : R {
|
||||||
val k = 10;
|
val k = 10;
|
||||||
return notInline({k; job()})
|
return notInline({k; job()})
|
||||||
}
|
}
|
||||||
|
|
||||||
inline fun <R> doWork(job: ()-> R, job2: () -> R) : R {
|
inline fun <R> doWork(inlineOptions(ONLY_LOCAL_RETURN) job: ()-> R, inlineOptions(ONLY_LOCAL_RETURN) job2: () -> R) : R {
|
||||||
val k = 10;
|
val k = 10;
|
||||||
return notInline({k; job(); job2()})
|
return notInline({k; job(); job2()})
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-3
@@ -1,6 +1,8 @@
|
|||||||
import test.*
|
import test.*
|
||||||
|
|
||||||
inline fun test1(param: () -> String): String {
|
import kotlin.InlineOption.*
|
||||||
|
|
||||||
|
inline fun test1(inlineOptions(ONLY_LOCAL_RETURN) param: () -> String): String {
|
||||||
var result = "fail"
|
var result = "fail"
|
||||||
inlineFun("1") { c ->
|
inlineFun("1") { c ->
|
||||||
{
|
{
|
||||||
@@ -18,7 +20,7 @@ inline fun test1(param: () -> String): String {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
inline fun test2(param: () -> String): String {
|
inline fun test2(inlineOptions(ONLY_LOCAL_RETURN) param: () -> String): String {
|
||||||
var result = "fail"
|
var result = "fail"
|
||||||
inlineFun("2") { a ->
|
inlineFun("2") { a ->
|
||||||
{
|
{
|
||||||
@@ -31,7 +33,7 @@ inline fun test2(param: () -> String): String {
|
|||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
inline fun test3(param: () -> String): String {
|
inline fun test3(inlineOptions(ONLY_LOCAL_RETURN) param: () -> String): String {
|
||||||
var result = "fail"
|
var result = "fail"
|
||||||
inlineFun("2") { d ->
|
inlineFun("2") { d ->
|
||||||
inlineFun("1") { c ->
|
inlineFun("1") { c ->
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package test
|
package test
|
||||||
|
|
||||||
inline fun <R> doWork(job: ()-> R) : R {
|
import kotlin.InlineOption.*
|
||||||
|
|
||||||
|
inline fun <R> doWork(inlineOptions(ONLY_LOCAL_RETURN) job: ()-> R) : R {
|
||||||
return notInline({job()})
|
return notInline({job()})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
package foo;
|
package foo;
|
||||||
|
|
||||||
|
import kotlin.InlineOption.*
|
||||||
|
|
||||||
class Foo {
|
class Foo {
|
||||||
|
|
||||||
inline fun inlineFoo(s: () -> Unit) {
|
inline fun inlineFoo(inlineOptions(ONLY_LOCAL_RETURN) s: () -> Unit) {
|
||||||
{
|
{
|
||||||
s()
|
s()
|
||||||
}()
|
}()
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
package foo;
|
package foo;
|
||||||
|
|
||||||
|
import kotlin.InlineOption.*
|
||||||
|
|
||||||
class Foo {
|
class Foo {
|
||||||
|
|
||||||
inline fun inlineFoo(s: () -> Unit) {
|
inline fun inlineFoo(inlineOptions(ONLY_LOCAL_RETURN) s: () -> Unit) {
|
||||||
val localObject = object {
|
val localObject = object {
|
||||||
fun run() {
|
fun run() {
|
||||||
s()
|
s()
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE
|
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE -NON_LOCAL_RETURN_NOT_ALLOWED
|
||||||
|
|
||||||
inline fun <R> inlineFun(p: () -> R) {
|
inline fun <R> inlineFun(p: () -> R) {
|
||||||
val s = object {
|
val s = object {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -ONLY_LOCAL_RETURN
|
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -NON_LOCAL_RETURN_NOT_ALLOWED
|
||||||
|
|
||||||
fun <T, U> Function1<T, U>.minusAssign(p: Function1<T, U>) {}
|
fun <T, U> Function1<T, U>.minusAssign(p: Function1<T, U>) {}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE
|
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE -NON_LOCAL_RETURN_NOT_ALLOWED
|
||||||
|
|
||||||
fun Function1<Int, Unit>.noInlineExt(p: Int) {}
|
fun Function1<Int, Unit>.noInlineExt(p: Int) {}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE
|
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE -NON_LOCAL_RETURN_NOT_ALLOWED
|
||||||
|
|
||||||
inline fun inlineFunWithInvoke(s: (p: Int) -> Unit, ext: Int.(p: Int) -> Unit) {
|
inline fun inlineFunWithInvoke(s: (p: Int) -> Unit, ext: Int.(p: Int) -> Unit) {
|
||||||
subInline(s, ext)
|
subInline(s, ext)
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// !DIAGNOSTICS: -NON_LOCAL_RETURN_NOT_ALLOWED
|
||||||
// FILE: Run.java
|
// FILE: Run.java
|
||||||
public interface Run {
|
public interface Run {
|
||||||
public int run();
|
public int run();
|
||||||
|
|||||||
Reference in New Issue
Block a user