Create from Usage: Show receiver type in the text of "Create extension" quick fix

(cherry picked from commit c0d5df1)
This commit is contained in:
Alexey Sedunov
2016-06-29 19:22:53 +03:00
parent 79f73d3cc2
commit 1a13c21377
97 changed files with 116 additions and 99 deletions
@@ -119,8 +119,8 @@ fun List<TypeCandidate>.getTypeByRenderedType(renderedType: String): KotlinType?
class CallableBuilderConfiguration(
val callableInfos: List<CallableInfo>,
val originalElement: KtElement,
val currentFile: KtFile,
val currentEditor: Editor?,
val currentFile: KtFile = originalElement.getContainingKtFile(),
val currentEditor: Editor? = null,
val isExtension: Boolean = false,
val enableSubstitutions: Boolean = true
)
@@ -93,7 +93,24 @@ abstract class CreateCallableFromUsageFixBase<E : KtElement>(
append(kind)
if (it.name.isNotEmpty()) {
append(" '${it.name}'")
append(" '")
if (isExtension) {
val callableBuilder =
CallableBuilderConfiguration(callableInfos, element, isExtension = isExtension)
.createBuilder()
val receiverType = callableBuilder
.computeTypeCandidates(callableInfos.first().receiverTypeInfo)
.firstOrNull()
?.theType
if (receiverType != null) {
val receiverTypeText = IdeDescriptorRenderers.SOURCE_CODE_SHORT_NAMES_IN_TYPES.renderType(receiverType)
val isFunctionType = receiverType.constructor.declarationDescriptor is FunctionClassDescriptor
append(if (isFunctionType) "($receiverTypeText)" else receiverTypeText).append('.')
}
}
append("${it.name}'")
}
}
}
@@ -123,7 +140,7 @@ abstract class CreateCallableFromUsageFixBase<E : KtElement>(
// TODO: Remove after companion object extensions are supported
if (isExtension && receiverInfo.staticContextRequired) return false
val callableBuilder = CallableBuilderConfiguration(callableInfos, element, file, null, isExtension).createBuilder()
val callableBuilder = CallableBuilderConfiguration(callableInfos, element, isExtension = isExtension).createBuilder()
val receiverTypeCandidates = callableBuilder.computeTypeCandidates(callableInfos.first().receiverTypeInfo)
val propertyInfo = callableInfos.firstOrNull { it is PropertyInfo } as PropertyInfo?
val isFunction = callableInfos.any { it.kind == CallableKind.FUNCTION }
@@ -66,7 +66,7 @@ open class CreateParameterFromUsageFix<E : KtElement>(
) : CreateParameterFromUsageFix<E>? {
val receiverClassDescriptor: ClassDescriptor
val builder = CallableBuilderConfiguration(listOf(info), element, element.getContainingKtFile(), null, false).createBuilder()
val builder = CallableBuilderConfiguration(listOf(info), element).createBuilder()
val receiverTypeCandidate = builder.computeTypeCandidates(info.receiverTypeInfo).firstOrNull()
if (receiverTypeCandidate != null) {
builder.placement = CallablePlacement.WithReceiver(receiverTypeCandidate)
@@ -1,5 +1,5 @@
// "Import" "false"
// ACTION: Create extension function 'inc'
// ACTION: Create extension function 'H?.inc'
// ACTION: Create member function 'inc'
// ACTION: Replace overloaded operator with function call
// ERROR: Unresolved reference: ++
@@ -2,7 +2,7 @@
// "Import" "false"
// ERROR: Unresolved reference: foo()["str"]
// ERROR: No get method providing array access
// ACTION: Create extension function 'get'
// ACTION: Create extension function 'Some.get'
// ACTION: Create member function 'get'
// ACTION: Replace overloaded operator with function call
@@ -2,7 +2,7 @@
// "Import" "false"
// ERROR: Unresolved reference: foo()["str"]
// ERROR: No set method providing array access
// ACTION: Create extension function 'set'
// ACTION: Create extension function 'Some.set'
// ACTION: Create member function 'set'
// ACTION: Replace overloaded operator with function call
@@ -2,7 +2,7 @@
// "Import" "false"
// ERROR: Unresolved reference: foo()["str"]
// ERROR: No get method providing array access
// ACTION: Create extension function 'get'
// ACTION: Create extension function 'Some.get'
// ACTION: Create member function 'get'
// ACTION: Replace overloaded operator with function call
@@ -1,6 +1,6 @@
// "Import" "false"
// ERROR: Unresolved reference: foo
// ACTION: Create extension function 'foo'
// ACTION: Create extension function 'H.foo'
// ACTION: Create member function 'foo'
// ACTION: Replace infix call with ordinary call
@@ -1,7 +1,7 @@
// FILE: first.before.kt
// "Import" "false"
// ERROR: Expression 'Some()' of type 'Some' cannot be invoked as a function. The function 'invoke()' is not found
// ACTION: Create extension function 'invoke'
// ACTION: Create extension function 'Some.invoke'
// ACTION: Create member function 'invoke'
@@ -1,7 +1,7 @@
// FILE: first.before.kt
// "Import" "false"
// ERROR: Destructuring declaration initializer of type Some must have a 'component1()' function
// ACTION: Create extension function 'component1'
// ACTION: Create extension function 'Some.component1'
// ACTION: Create member function 'component1'
@@ -1,5 +1,5 @@
// "Create class 'Foo'" "false"
// ACTION: Create extension function 'Foo'
// ACTION: Create extension function 'Int.Foo'
// ACTION: Rename reference
// ERROR: Unresolved reference: Foo
// WITH_RUNTIME
@@ -1,5 +1,5 @@
// "Create class 'Foo'" "false"
// ACTION: Create extension function 'Foo'
// ACTION: Create extension function 'List<T>.Foo'
// ACTION: Rename reference
// ERROR: Unresolved reference: Foo
// WITH_RUNTIME
@@ -1,5 +1,5 @@
// "Create class 'A'" "false"
// ACTION: Create extension property 'A'
// ACTION: Create extension property 'X.A'
// ACTION: Create member property 'A'
// ACTION: Create property 'A' as constructor parameter
// ACTION: Rename reference
@@ -1,5 +1,5 @@
// "Create enum constant 'A'" "false"
// ACTION: Create extension property 'A'
// ACTION: Create extension property 'X.A'
// ACTION: Create member property 'A'
// ACTION: Create property 'A' as constructor parameter
// ACTION: Rename reference
@@ -1,5 +1,5 @@
// "Create object 'A'" "false"
// ACTION: Create extension property 'A'
// ACTION: Create extension property 'X.A'
// ACTION: Create member property 'A'
// ACTION: Create property 'A' as constructor parameter
// ACTION: Rename reference
@@ -1,4 +1,4 @@
// "Create extension function 'plus'" "true"
// "Create extension function 'Int.plus'" "true"
// WITH_RUNTIME
class A<T>(val n: T)
@@ -1,4 +1,4 @@
// "Create extension function 'plus'" "true"
// "Create extension function 'Int.plus'" "true"
// WITH_RUNTIME
class A<T>(val n: T)
@@ -1,4 +1,4 @@
// "Create extension function '!u00A0'" "true"
// "Create extension function 'Int.!u00A0'" "true"
// WITH_RUNTIME
fun test() {
@@ -1,4 +1,4 @@
// "Create extension function '!u00A0'" "true"
// "Create extension function 'Int.!u00A0'" "true"
// WITH_RUNTIME
fun test() {
@@ -1,6 +1,6 @@
// "Create abstract function 'foo'" "false"
// ACTION: Convert to expression body
// ACTION: Create extension function 'foo'
// ACTION: Create extension function 'B.foo'
// ACTION: Create member function 'foo'
// ACTION: Rename reference
// ERROR: Unresolved reference: foo
@@ -1,4 +1,4 @@
// "Create extension function 'foo'" "true"
// "Create extension function 'A.foo'" "true"
fun bar(b: Boolean) {
}
@@ -1,4 +1,4 @@
// "Create extension function 'foo'" "true"
// "Create extension function 'A.foo'" "true"
fun bar(b: Boolean) {
}
@@ -1,4 +1,4 @@
// "Create extension function 'foo'" "true"
// "Create extension function 'A.foo'" "true"
// WITH_RUNTIME
fun bar(b: Boolean) {
@@ -1,4 +1,4 @@
// "Create extension function 'foo'" "true"
// "Create extension function 'A.foo'" "true"
// WITH_RUNTIME
fun bar(b: Boolean) {
@@ -1,4 +1,4 @@
// "Create extension property 'foo'" "true"
// "Create extension property 'A.foo'" "true"
// ERROR: Property must be initialized
class A(val n: Int)
@@ -1,4 +1,4 @@
// "Create extension property 'foo'" "true"
// "Create extension property 'A.foo'" "true"
// ERROR: Property must be initialized
class A(val n: Int)
@@ -1,4 +1,4 @@
// "Create extension property 'foo'" "true"
// "Create extension property 'A.foo'" "true"
// ERROR: Property must be initialized
class A(val n: Int)
@@ -1,4 +1,4 @@
// "Create extension property 'foo'" "true"
// "Create extension property 'A.foo'" "true"
// ERROR: Property must be initialized
class A(val n: Int)
@@ -1,4 +1,4 @@
// "Create extension function 'foo'" "true"
// "Create extension function 'A.foo'" "true"
// ERROR: Unresolved reference: foo
fun test(): Int {
@@ -1,4 +1,4 @@
// "Create extension function 'foo'" "true"
// "Create extension function 'A.foo'" "true"
// ERROR: Unresolved reference: foo
fun test(): Int {
@@ -1,4 +1,4 @@
// "Create extension function 'foo'" "true"
// "Create extension function 'A.foo'" "true"
// ERROR: Unresolved reference: foo
fun test(): Int? {
@@ -1,4 +1,4 @@
// "Create extension function 'foo'" "true"
// "Create extension function 'A.foo'" "true"
// ERROR: Unresolved reference: foo
fun test(): Int? {
@@ -1,4 +1,4 @@
// "Create extension function 'foo'" "true"
// "Create extension function 'T.foo'" "true"
interface T
@@ -1,4 +1,4 @@
// "Create extension function 'foo'" "true"
// "Create extension function 'T.foo'" "true"
interface T
@@ -1,4 +1,4 @@
// "Create extension function 'foo'" "true"
// "Create extension function 'A.foo'" "true"
// ERROR: Unresolved reference: foo
import package1.A
@@ -1,4 +1,4 @@
// "Create extension function 'foo'" "true"
// "Create extension function 'A.foo'" "true"
// ERROR: Unresolved reference: foo
import package1.A
@@ -1,6 +1,6 @@
// "Create member function 'foo'" "false"
// ACTION: Convert to expression body
// ACTION: Create extension function 'foo'
// ACTION: Create extension function 'A.foo'
// ACTION: Rename reference
// ERROR: Unresolved reference: foo
@@ -1,4 +1,4 @@
// "Create extension function 'foo'" "true"
// "Create extension function 'Unit.foo'" "true"
// WITH_RUNTIME
fun test() {
@@ -1,4 +1,4 @@
// "Create extension function 'foo'" "true"
// "Create extension function 'Unit.foo'" "true"
// WITH_RUNTIME
fun test() {
@@ -1,4 +1,4 @@
// "Create extension function 'foo'" "true"
// "Create extension function 'Int.foo'" "true"
// WITH_RUNTIME
class A<T>(val n: T)
@@ -1,4 +1,4 @@
// "Create extension function 'foo'" "true"
// "Create extension function 'Int.foo'" "true"
// WITH_RUNTIME
class A<T>(val n: T)
@@ -1,4 +1,4 @@
// "Create extension function 'bar'" "true"
// "Create extension function '((Int) -> String).bar'" "true"
fun foo(block: (Int) -> String) {
block.b<caret>ar()
@@ -1,4 +1,4 @@
// "Create extension function 'bar'" "true"
// "Create extension function '((Int) -> String).bar'" "true"
fun foo(block: (Int) -> String) {
block.bar()
@@ -1,4 +1,4 @@
// "Create extension function 'foo'" "true"
// "Create extension function 'List<T>.foo'" "true"
// WITH_RUNTIME
class A<T>(val items: List<T>) {
@@ -1,4 +1,4 @@
// "Create extension function 'foo'" "true"
// "Create extension function 'List<T>.foo'" "true"
// WITH_RUNTIME
class A<T>(val items: List<T>) {
@@ -1,4 +1,4 @@
// "Create extension function 'foo'" "true"
// "Create extension function 'List<T>.foo'" "true"
// WITH_RUNTIME
class A<T>(val items: List<T>) {
@@ -1,4 +1,4 @@
// "Create extension function 'foo'" "true"
// "Create extension function 'List<T>.foo'" "true"
// WITH_RUNTIME
class A<T>(val items: List<T>) {
@@ -1,4 +1,4 @@
// "Create extension function 'foo'" "true"
// "Create extension function 'List<T>.foo'" "true"
// WITH_RUNTIME
class A<T>(val items: List<T>) {
@@ -1,4 +1,4 @@
// "Create extension function 'foo'" "true"
// "Create extension function 'List<T>.foo'" "true"
// WITH_RUNTIME
class A<T>(val items: List<T>) {
@@ -1,4 +1,4 @@
// "Create extension function 'bar'" "true"
// "Create extension function 'T.bar'" "true"
fun <T> foo(t: T) {
t.<caret>bar()
}
@@ -1,4 +1,4 @@
// "Create extension function 'bar'" "true"
// "Create extension function 'T.bar'" "true"
fun <T> foo(t: T) {
t.bar()
}
@@ -1,5 +1,5 @@
// "Create member function 'bar'" "false"
// ACTION: Create extension function 'bar'
// ACTION: Create extension function 'T.bar'
// ACTION: Rename reference
// ERROR: Unresolved reference: bar
fun <T> foo(t: T) {
@@ -1,4 +1,4 @@
// "Create extension function 'foo'" "true"
// "Create extension function 'Int.foo'" "true"
// WITH_RUNTIME
fun <T, U> T.map(f: T.() -> U) = f()
@@ -1,4 +1,4 @@
// "Create extension function 'foo'" "true"
// "Create extension function 'Int.foo'" "true"
// WITH_RUNTIME
fun <T, U> T.map(f: T.() -> U) = f()
@@ -1,4 +1,4 @@
// "Create extension function 'foo'" "true"
// "Create extension function 'Int.foo'" "true"
// WITH_RUNTIME
fun <T, U> T.map(f: (T) -> U) = f(this)
@@ -1,4 +1,4 @@
// "Create extension function 'foo'" "true"
// "Create extension function 'Int.foo'" "true"
// WITH_RUNTIME
fun <T, U> T.map(f: (T) -> U) = f(this)
@@ -1,4 +1,4 @@
// "Create extension function 'component2'" "true"
// "Create extension function 'Any.component2'" "true"
// WITH_RUNTIME
class FooIterator<T> {
operator fun hasNext(): Boolean { return false }
@@ -1,4 +1,4 @@
// "Create extension function 'component2'" "true"
// "Create extension function 'Any.component2'" "true"
// WITH_RUNTIME
class FooIterator<T> {
operator fun hasNext(): Boolean { return false }
@@ -1,4 +1,4 @@
// "Create extension function 'get'" "true"
// "Create extension function 'Any.get'" "true"
// WITH_RUNTIME
fun x (y: Any) {
@@ -1,4 +1,4 @@
// "Create extension function 'get'" "true"
// "Create extension function 'Any.get'" "true"
// WITH_RUNTIME
fun x (y: Any) {
@@ -1,4 +1,4 @@
// "Create extension function 'invoke'" "true"
// "Create extension function 'Int.invoke'" "true"
// WITH_RUNTIME
class A<T>(val n: T)
@@ -1,4 +1,4 @@
// "Create extension function 'invoke'" "true"
// "Create extension function 'Int.invoke'" "true"
// WITH_RUNTIME
class A<T>(val n: T)
@@ -1,4 +1,4 @@
// "Create extension function 'set'" "true"
// "Create extension function 'Any.set'" "true"
// WITH_RUNTIME
class Foo<T> {
@@ -1,6 +1,6 @@
import java.util.ArrayList
// "Create extension function 'set'" "true"
// "Create extension function 'Any.set'" "true"
// WITH_RUNTIME
class Foo<T> {
@@ -1,4 +1,4 @@
// "Create extension function 'unaryMinus'" "true"
// "Create extension function 'Boolean.unaryMinus'" "true"
// WITH_RUNTIME
fun test() {
@@ -1,4 +1,4 @@
// "Create extension function 'unaryMinus'" "true"
// "Create extension function 'Boolean.unaryMinus'" "true"
// WITH_RUNTIME
fun test() {
@@ -1,6 +1,6 @@
// "Create local variable 'foo'" "false"
// ERROR: Unresolved reference: foo
// ACTION: Create extension function 'foo'
// ACTION: Create extension function 'Int.foo'
// ACTION: Replace infix call with ordinary call
// WITH_RUNTIME
fun refer() {
@@ -1,5 +1,5 @@
// "Create local variable '-'" "false"
// ACTION: Create extension function 'minus'
// ACTION: Create extension function 'A.minus'
// ACTION: Create member function 'minus'
// ACTION: Replace overloaded operator with function call
// ERROR: Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: <br>@InlineOnly public operator inline fun BigDecimal.minus(other: BigDecimal): BigDecimal defined in kotlin<br>@InlineOnly public operator inline fun BigInteger.minus(other: BigInteger): BigInteger defined in kotlin<br>public operator fun <T> Iterable<???>.minus(elements: Array<out ???>): List<???> defined in kotlin.collections<br>public operator fun <T> Iterable<???>.minus(elements: Iterable<???>): List<???> defined in kotlin.collections<br>public operator fun <T> Iterable<???>.minus(elements: Sequence<???>): List<???> defined in kotlin.collections<br>public operator fun <T> Iterable<A>.minus(element: A): List<A> defined in kotlin.collections<br>public operator fun <T> Set<???>.minus(elements: Array<out ???>): Set<???> defined in kotlin.collections<br>public operator fun <T> Set<???>.minus(elements: Iterable<???>): Set<???> defined in kotlin.collections<br>public operator fun <T> Set<???>.minus(elements: Sequence<???>): Set<???> defined in kotlin.collections<br>public operator fun <T> Set<A>.minus(element: A): Set<A> defined in kotlin.collections<br>public operator fun <T> Sequence<???>.minus(elements: Array<out ???>): Sequence<???> defined in kotlin.sequences<br>public operator fun <T> Sequence<???>.minus(elements: Iterable<???>): Sequence<???> defined in kotlin.sequences<br>public operator fun <T> Sequence<???>.minus(elements: Sequence<???>): Sequence<???> defined in kotlin.sequences<br>public operator fun <T> Sequence<A>.minus(element: A): Sequence<A> defined in kotlin.sequences
@@ -1,5 +1,5 @@
// "Create local variable 'foo'" "false"
// ACTION: Create extension property 'foo'
// ACTION: Create extension property 'A.foo'
// ACTION: Create member property 'foo'
// ACTION: Create property 'foo' as constructor parameter
// ACTION: Rename reference
@@ -1,6 +1,6 @@
// "Create parameter 'foo'" "false"
// ERROR: Unresolved reference: foo
// ACTION: Create extension function 'foo'
// ACTION: Create extension function 'Int.foo'
// ACTION: Replace infix call with ordinary call
// WITH_RUNTIME
fun refer() {
@@ -2,7 +2,7 @@
// ACTION: Convert to expression body
// ACTION: Create local variable 'foo'
// ACTION: Create property 'foo'
// ACTION: Create extension property 'foo'
// ACTION: Create extension property 'T.foo'
// ACTION: Rename reference
// ERROR: Unresolved reference: foo
@@ -2,7 +2,7 @@
// ACTION: Convert to expression body
// ACTION: Create local variable 'foo'
// ACTION: Create property 'foo'
// ACTION: Create extension property 'foo'
// ACTION: Create extension property 'T.foo'
// ACTION: Rename reference
// ERROR: Unresolved reference: foo
@@ -1,5 +1,5 @@
// "Create parameter '-'" "false"
// ACTION: Create extension function 'minus'
// ACTION: Create extension function 'A.minus'
// ACTION: Create member function 'minus'
// ACTION: Replace overloaded operator with function call
// ERROR: Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: <br>@InlineOnly public operator inline fun BigDecimal.minus(other: BigDecimal): BigDecimal defined in kotlin<br>@InlineOnly public operator inline fun BigInteger.minus(other: BigInteger): BigInteger defined in kotlin<br>public operator fun <T> Iterable<???>.minus(elements: Array<out ???>): List<???> defined in kotlin.collections<br>public operator fun <T> Iterable<???>.minus(elements: Iterable<???>): List<???> defined in kotlin.collections<br>public operator fun <T> Iterable<???>.minus(elements: Sequence<???>): List<???> defined in kotlin.collections<br>public operator fun <T> Iterable<A>.minus(element: A): List<A> defined in kotlin.collections<br>public operator fun <T> Set<???>.minus(elements: Array<out ???>): Set<???> defined in kotlin.collections<br>public operator fun <T> Set<???>.minus(elements: Iterable<???>): Set<???> defined in kotlin.collections<br>public operator fun <T> Set<???>.minus(elements: Sequence<???>): Set<???> defined in kotlin.collections<br>public operator fun <T> Set<A>.minus(element: A): Set<A> defined in kotlin.collections<br>public operator fun <T> Sequence<???>.minus(elements: Array<out ???>): Sequence<???> defined in kotlin.sequences<br>public operator fun <T> Sequence<???>.minus(elements: Iterable<???>): Sequence<???> defined in kotlin.sequences<br>public operator fun <T> Sequence<???>.minus(elements: Sequence<???>): Sequence<???> defined in kotlin.sequences<br>public operator fun <T> Sequence<A>.minus(element: A): Sequence<A> defined in kotlin.sequences
@@ -1,5 +1,5 @@
// "Create parameter 'foo'" "false"
// ACTION: Create extension property 'foo'
// ACTION: Create extension property 'A.foo'
// ACTION: Create member property 'foo'
// ACTION: Create property 'foo' as constructor parameter
// ACTION: Rename reference
@@ -1,6 +1,6 @@
// "Create member property 'foo' as constructor parameter" "false"
// ACTION: Create member property 'foo'
// ACTION: Create extension property 'foo'
// ACTION: Create extension property 'A.Companion.foo'
// ACTION: Rename reference
// ERROR: Unresolved reference: foo
@@ -1,7 +1,7 @@
// "Create property 'foo' as constructor parameter" "false"
// ACTION: Create member property 'foo'
// ACTION: Convert to expression body
// ACTION: Create extension property 'foo'
// ACTION: Create extension property 'A.foo'
// ACTION: Rename reference
// ERROR: Unresolved reference: foo
@@ -1,5 +1,5 @@
// "Create property 'foo' as constructor parameter" "false"
// ACTION: Create extension property 'foo'
// ACTION: Create extension property 'Int.foo'
// ACTION: Rename reference
// ERROR: Unresolved reference: foo
// WITH_RUNTIME
@@ -1,6 +1,6 @@
// "Create abstract property 'foo'" "false"
// ACTION: Convert to expression body
// ACTION: Create extension property 'foo'
// ACTION: Create extension property 'B.foo'
// ACTION: Create member property 'foo'
// ACTION: Create property 'foo' as constructor parameter
// ACTION: Rename reference
@@ -1,5 +1,5 @@
// "Create property 'foo'" "false"
// ACTION: Create extension function 'bar'
// ACTION: Create extension function 'A<Int>.bar'
// ACTION: Create member function 'bar'
// ACTION: Rename reference
// ERROR: Unresolved reference: bar
@@ -1,4 +1,4 @@
// "Create extension property 'foo'" "true"
// "Create extension property 'A.foo'" "true"
// ERROR: Unresolved reference: foo
import package1.A
@@ -1,4 +1,4 @@
// "Create extension property 'foo'" "true"
// "Create extension property 'A.foo'" "true"
// ERROR: Unresolved reference: foo
import package1.A
@@ -1,4 +1,4 @@
// "Create extension property 'foo'" "true"
// "Create extension property 'A.foo'" "true"
// ERROR: Unresolved reference: foo
val A.foo: String?
@@ -1,4 +1,4 @@
// "Create extension property 'foo'" "true"
// "Create extension property 'A.foo'" "true"
// ERROR: Unresolved reference: foo
fun test(): String? {
@@ -1,4 +1,4 @@
// "Create extension property 'foo'" "true"
// "Create extension property 'A.foo'" "true"
// ERROR: Unresolved reference: foo
val A.foo: String?
@@ -1,4 +1,4 @@
// "Create extension property 'foo'" "true"
// "Create extension property 'A.foo'" "true"
// ERROR: Unresolved reference: foo
fun test(): String? {
@@ -1,4 +1,4 @@
// "Create extension property 'bar'" "true"
// "Create extension property 'T.bar'" "true"
// ERROR: Property must be initialized
fun consume(n: Int) {}
@@ -1,4 +1,4 @@
// "Create extension property 'bar'" "true"
// "Create extension property 'T.bar'" "true"
// ERROR: Property must be initialized
fun consume(n: Int) {}
@@ -1,6 +1,6 @@
// "Create property 'foo'" "false"
// ERROR: Unresolved reference: foo
// ACTION: Create extension function 'foo'
// ACTION: Create extension function 'Int.foo'
// ACTION: Replace infix call with ordinary call
// WITH_RUNTIME
fun refer() {
@@ -1,5 +1,5 @@
// "Create member property 'bar'" "false"
// ACTION: Create extension property 'bar'
// ACTION: Create extension property 'T.bar'
// ACTION: Rename reference
// ACTION: Convert to expression body
// ERROR: Unresolved reference: bar
@@ -1,6 +1,6 @@
// "Create property 'foo'" "false"
// ACTION: Convert to expression body
// ACTION: Create extension property 'foo'
// ACTION: Create extension property 'A.foo'
// ACTION: Rename reference
// ERROR: Unresolved reference: foo
@@ -1,6 +1,6 @@
// "Create property 'foo'" "false"
// ACTION: Convert to expression body
// ACTION: Create extension property 'foo'
// ACTION: Create extension property 'A.foo'
// ACTION: Rename reference
// ERROR: Unresolved reference: foo
@@ -1,4 +1,4 @@
// "Create extension property 'foo'" "true"
// "Create extension property 'Unit.foo'" "true"
// ERROR: Property must be initialized
// WITH_RUNTIME
@@ -1,4 +1,4 @@
// "Create extension property 'foo'" "true"
// "Create extension property 'Unit.foo'" "true"
// ERROR: Property must be initialized
// WITH_RUNTIME
@@ -1,4 +1,4 @@
// "Create extension property 'foo'" "true"
// "Create extension property 'Int.foo'" "true"
// ERROR: Property must be initialized
// WITH_RUNTIME
@@ -1,4 +1,4 @@
// "Create extension property 'foo'" "true"
// "Create extension property 'Int.foo'" "true"
// ERROR: Property must be initialized
// WITH_RUNTIME
@@ -1,4 +1,4 @@
// "Create extension property 'foo'" "true"
// "Create extension property 'Int.foo'" "true"
// ERROR: Property must be initialized
// WITH_RUNTIME
@@ -1,4 +1,4 @@
// "Create extension property 'foo'" "true"
// "Create extension property 'Int.foo'" "true"
// ERROR: Property must be initialized
// WITH_RUNTIME