[FE] Add language feature for context receivers

This commit is contained in:
Anastasiya Shadrina
2021-09-16 17:13:13 +07:00
committed by TeamCityServer
parent 369c86ebb0
commit 910660a083
91 changed files with 222 additions and 3 deletions
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
interface Common {
fun supertypeMember() {}
}
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
interface Common {
fun supertypeMember() {}
}
@@ -1,4 +1,6 @@
// !LANGUAGE: +ContextReceivers
// FIR_IDENTICAL
class File(name: String)
interface InputStream
@@ -1,3 +1,4 @@
// !LANGUAGE: +ContextReceivers
// FIR_IDENTICAL
interface Canvas
@@ -1,3 +1,4 @@
// !LANGUAGE: +ContextReceivers
// FIR_IDENTICAL
class Button
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
data class Pair<A, B>(val first: A, val second: B)
context(Comparator<T>)
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
data class Pair<A, B>(val first: A, val second: B)
context(Comparator<T>)
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
class View
context(View) val Int.dp get() = 42 * this
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
class View
context(View) val Int.dp get() = 42 * this
@@ -1,3 +1,4 @@
// !LANGUAGE: +ContextReceivers
// !DIAGNOSTICS: -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE
class Context
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
typealias IterableClass<C, T> = (C) -> Iterator<T>
context(IterableClass<C, T>)
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
typealias IterableClass<C, T> = (C) -> Iterator<T>
context(IterableClass<C, T>)
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
class JSONObject {
fun build(): JSONObject = TODO()
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
class JSONObject {
fun build(): JSONObject = TODO()
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
interface Params
interface Logger {
fun info(message: String)
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
interface Params
interface Logger {
fun info(message: String)
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
interface Semigroup<T> {
infix fun T.combine(other: T): T
}
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
interface Semigroup<T> {
infix fun T.combine(other: T): T
}
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
class Session(var lastAccess: Any?)
interface Transaction {
fun loadSession(): Session
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
class Session(var lastAccess: Any?)
interface Transaction {
fun loadSession(): Session
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
class Storage<T> {
inner class Info
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
class Storage<T> {
inner class Info
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
class Param
class C {
val c = 42
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
class Param
class C {
val c = 42
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
context(T) class A<T>
context(Collection<P>) class B<P>
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
context(T) class A<T>
context(Collection<P>) class B<P>
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
class A {
fun h1() {}
}
@@ -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>)
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
interface A {
fun f() {}
}
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
interface A {
fun f() {}
}
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
class A {
val a = 1
}
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
class A {
val a = 1
}
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
interface A {
fun a(): Int
}
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
interface A {
fun a(): Int
}
@@ -1,4 +1,4 @@
// !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
// !LANGUAGE: +InlineClasses, -JvmInlineValueClasses, +ContextReceivers
class A
@@ -1,4 +1,4 @@
// !LANGUAGE: +InlineClasses, -JvmInlineValueClasses
// !LANGUAGE: +InlineClasses, -JvmInlineValueClasses, +ContextReceivers
class A
@@ -1,3 +1,4 @@
// !LANGUAGE: +ContextReceivers
// FIR_IDENTICAL
class A
@@ -1,3 +1,4 @@
// !LANGUAGE: +ContextReceivers
// !DIAGNOSTICS: -UNUSED_PARAMETER
class Outer {
@@ -1,3 +1,4 @@
// !LANGUAGE: +ContextReceivers
// !DIAGNOSTICS: -UNUSED_PARAMETER
class Outer {
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
class Context
<!CONFLICTING_OVERLOADS!>context(Context)
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
class Context
context(Context)
@@ -1,3 +1,4 @@
// !LANGUAGE: +ContextReceivers
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_PARAMETER
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
interface Context {
fun h() {}
}
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
interface Context {
fun h() {}
}
@@ -1,4 +1,6 @@
// FIR_IDENTICAL
// !LANGUAGE: +ContextReceivers
context(
<!SYNTAX!><!>fun foo() {
}
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
class A(val a: String?)
context(A) fun f() {
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
class A(val a: String?)
context(A) fun f() {
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
class A<T>(val a: T)
class B(val b: Any)
class C(val c: Any)
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
class A<T>(val a: T)
class B(val b: Any)
class C(val c: Any)
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
class A {
val x = 1
}
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
class A {
val x = 1
}
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
class A<T>(val a: T)
class B(val b: Any)
class C(val c: Any)
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
class A<T>(val a: T)
class B(val b: Any)
class C(val c: Any)
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
class A<T>(val a: T)
class B(val b: Any)
class C(val c: Any)
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
class A<T>(val a: T)
class B(val b: Any)
class C(val c: Any)
@@ -1,3 +1,4 @@
// !LANGUAGE: +ContextReceivers
// !DIAGNOSTICS: -UNUSED_PARAMETER
class A
@@ -1,3 +1,4 @@
// !LANGUAGE: +ContextReceivers
// !DIAGNOSTICS: -UNUSED_PARAMETER
class A
@@ -1,3 +1,4 @@
// !LANGUAGE: +ContextReceivers
// !DIAGNOSTICS: -UNUSED_PARAMETER
fun <T> listOf(vararg e: T): List<T> = null!!
@@ -1,3 +1,4 @@
// !LANGUAGE: +ContextReceivers
// !DIAGNOSTICS: -UNUSED_PARAMETER
fun <T> listOf(vararg e: T): List<T> = null!!
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
open class A
class B
class C: A()
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
open class A
class B
class C: A()
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
class A
class B
class C
@@ -1,3 +1,5 @@
// !LANGUAGE: +ContextReceivers
class A
class B
class C