[FE] Add language feature for context receivers
This commit is contained in:
committed by
TeamCityServer
parent
369c86ebb0
commit
910660a083
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
interface Common {
|
||||
fun supertypeMember() {}
|
||||
}
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
interface Common {
|
||||
fun supertypeMember() {}
|
||||
}
|
||||
|
||||
+2
@@ -1,4 +1,6 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
// FIR_IDENTICAL
|
||||
|
||||
class File(name: String)
|
||||
interface InputStream
|
||||
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
// FIR_IDENTICAL
|
||||
|
||||
interface Canvas
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
// FIR_IDENTICAL
|
||||
|
||||
class Button
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
data class Pair<A, B>(val first: A, val second: B)
|
||||
|
||||
context(Comparator<T>)
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
data class Pair<A, B>(val first: A, val second: B)
|
||||
|
||||
context(Comparator<T>)
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
class View
|
||||
|
||||
context(View) val Int.dp get() = 42 * this
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
class View
|
||||
|
||||
context(View) val Int.dp get() = 42 * this
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
// !DIAGNOSTICS: -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE
|
||||
|
||||
class Context
|
||||
|
||||
Vendored
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
typealias IterableClass<C, T> = (C) -> Iterator<T>
|
||||
|
||||
context(IterableClass<C, T>)
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
typealias IterableClass<C, T> = (C) -> Iterator<T>
|
||||
|
||||
context(IterableClass<C, T>)
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
class JSONObject {
|
||||
fun build(): JSONObject = TODO()
|
||||
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
class JSONObject {
|
||||
fun build(): JSONObject = TODO()
|
||||
|
||||
|
||||
Vendored
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
interface Params
|
||||
interface Logger {
|
||||
fun info(message: String)
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
interface Params
|
||||
interface Logger {
|
||||
fun info(message: String)
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
interface Semigroup<T> {
|
||||
infix fun T.combine(other: T): T
|
||||
}
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
interface Semigroup<T> {
|
||||
infix fun T.combine(other: T): T
|
||||
}
|
||||
|
||||
Vendored
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
class Session(var lastAccess: Any?)
|
||||
interface Transaction {
|
||||
fun loadSession(): Session
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
class Session(var lastAccess: Any?)
|
||||
interface Transaction {
|
||||
fun loadSession(): Session
|
||||
|
||||
Vendored
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
class Storage<T> {
|
||||
inner class Info
|
||||
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
class Storage<T> {
|
||||
inner class Info
|
||||
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
class Param
|
||||
class C {
|
||||
val c = 42
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
class Param
|
||||
class C {
|
||||
val c = 42
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
context(T) class A<T>
|
||||
|
||||
context(Collection<P>) class B<P>
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
context(T) class A<T>
|
||||
|
||||
context(Collection<P>) class B<P>
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
class A {
|
||||
fun h1() {}
|
||||
}
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
class A {
|
||||
fun h1() {}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
interface Lazy<T>
|
||||
|
||||
context(Lazy<Int>, Lazy<CharSequence>)
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
interface Lazy<T>
|
||||
|
||||
context(Lazy<Int>, Lazy<CharSequence>)
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
interface A {
|
||||
fun f() {}
|
||||
}
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
interface A {
|
||||
fun f() {}
|
||||
}
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
class A {
|
||||
val a = 1
|
||||
}
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
class A {
|
||||
val a = 1
|
||||
}
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
interface A {
|
||||
fun a(): Int
|
||||
}
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
interface A {
|
||||
fun a(): Int
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
// !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
|
||||
// !LANGUAGE: +InlineClasses, -JvmInlineValueClasses, +ContextReceivers
|
||||
|
||||
class A
|
||||
|
||||
|
||||
compiler/testData/diagnostics/tests/extensions/contextReceivers/noContextReceiversOnInlineClasses.kt
Vendored
+1
-1
@@ -1,4 +1,4 @@
|
||||
// !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
|
||||
// !LANGUAGE: +InlineClasses, -JvmInlineValueClasses, +ContextReceivers
|
||||
|
||||
class A
|
||||
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
// FIR_IDENTICAL
|
||||
|
||||
class A
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
|
||||
class Outer {
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
|
||||
class Outer {
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
class Context
|
||||
|
||||
<!CONFLICTING_OVERLOADS!>context(Context)
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
class Context
|
||||
|
||||
context(Context)
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
// FIR_IDENTICAL
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
interface Context {
|
||||
fun h() {}
|
||||
}
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
interface Context {
|
||||
fun h() {}
|
||||
}
|
||||
|
||||
+2
@@ -1,4 +1,6 @@
|
||||
// FIR_IDENTICAL
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
context(
|
||||
<!SYNTAX!><!>fun foo() {
|
||||
}
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
class A(val a: String?)
|
||||
|
||||
context(A) fun f() {
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
class A(val a: String?)
|
||||
|
||||
context(A) fun f() {
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
class A<T>(val a: T)
|
||||
class B(val b: Any)
|
||||
class C(val c: Any)
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
class A<T>(val a: T)
|
||||
class B(val b: Any)
|
||||
class C(val c: Any)
|
||||
|
||||
compiler/testData/diagnostics/tests/extensions/contextReceivers/thisWithReceiverLabelsClasses.fir.kt
Vendored
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
class A {
|
||||
val x = 1
|
||||
}
|
||||
|
||||
Vendored
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
class A {
|
||||
val x = 1
|
||||
}
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
class A<T>(val a: T)
|
||||
class B(val b: Any)
|
||||
class C(val c: Any)
|
||||
|
||||
Vendored
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
class A<T>(val a: T)
|
||||
class B(val b: Any)
|
||||
class C(val c: Any)
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
class A<T>(val a: T)
|
||||
class B(val b: Any)
|
||||
class C(val c: Any)
|
||||
|
||||
Vendored
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
class A<T>(val a: T)
|
||||
class B(val b: Any)
|
||||
class C(val c: Any)
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
|
||||
class A
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
|
||||
class A
|
||||
|
||||
Vendored
+1
@@ -1,3 +1,4 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
|
||||
fun <T> listOf(vararg e: T): List<T> = null!!
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
|
||||
fun <T> listOf(vararg e: T): List<T> = null!!
|
||||
|
||||
Vendored
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
open class A
|
||||
class B
|
||||
class C: A()
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
open class A
|
||||
class B
|
||||
class C: A()
|
||||
|
||||
Vendored
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
class A
|
||||
class B
|
||||
class C
|
||||
|
||||
Vendored
+2
@@ -1,3 +1,5 @@
|
||||
// !LANGUAGE: +ContextReceivers
|
||||
|
||||
class A
|
||||
class B
|
||||
class C
|
||||
|
||||
Reference in New Issue
Block a user