Remove propertyDelegate and fix unused parameter checker for provideDelegate.
This commit is contained in:
@@ -657,7 +657,7 @@ class ControlFlowInformationProvider private constructor(
|
|||||||
|| DescriptorUtils.isEffectivelyExternal(functionDescriptor)
|
|| DescriptorUtils.isEffectivelyExternal(functionDescriptor)
|
||||||
|| OperatorNameConventions.GET_VALUE == functionName
|
|| OperatorNameConventions.GET_VALUE == functionName
|
||||||
|| OperatorNameConventions.SET_VALUE == functionName
|
|| OperatorNameConventions.SET_VALUE == functionName
|
||||||
|| OperatorNameConventions.PROPERTY_DELEGATED == functionName) {
|
|| OperatorNameConventions.PROVIDE_DELEGATE == functionName) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
report(UNUSED_PARAMETER.on(element, variableDescriptor), ctxt)
|
report(UNUSED_PARAMETER.on(element, variableDescriptor), ctxt)
|
||||||
|
|||||||
+1
-1
@@ -20,7 +20,7 @@ fun Any.getValue(thisRef: Any?, prop: KProperty<*>): String = ":)"
|
|||||||
fun Any.setValue(thisRef: Any?, prop: KProperty<*>, value: String) {
|
fun Any.setValue(thisRef: Any?, prop: KProperty<*>, value: String) {
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Any.propertyDelegated(prop: KProperty<*>) {
|
fun Any.provideDelegate(thisRef: Any?, prop: KProperty<*>) {
|
||||||
}
|
}
|
||||||
|
|
||||||
fun get(<!UNUSED_PARAMETER!>p<!>: Any) {
|
fun get(<!UNUSED_PARAMETER!>p<!>: Any) {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ public fun foo(/*0*/ s: kotlin.String): kotlin.Unit
|
|||||||
public fun get(/*0*/ p: kotlin.Any): kotlin.Unit
|
public fun get(/*0*/ p: kotlin.Any): kotlin.Unit
|
||||||
public fun set(/*0*/ p: kotlin.Any): kotlin.Unit
|
public fun set(/*0*/ p: kotlin.Any): kotlin.Unit
|
||||||
public fun kotlin.Any.getValue(/*0*/ thisRef: kotlin.Any?, /*1*/ prop: kotlin.reflect.KProperty<*>): kotlin.String
|
public fun kotlin.Any.getValue(/*0*/ thisRef: kotlin.Any?, /*1*/ prop: kotlin.reflect.KProperty<*>): kotlin.String
|
||||||
public fun kotlin.Any.propertyDelegated(/*0*/ prop: kotlin.reflect.KProperty<*>): kotlin.Unit
|
public fun kotlin.Any.provideDelegate(/*0*/ thisRef: kotlin.Any?, /*1*/ prop: kotlin.reflect.KProperty<*>): kotlin.Unit
|
||||||
public fun kotlin.Any.setValue(/*0*/ thisRef: kotlin.Any?, /*1*/ prop: kotlin.reflect.KProperty<*>, /*2*/ value: kotlin.String): kotlin.Unit
|
public fun kotlin.Any.setValue(/*0*/ thisRef: kotlin.Any?, /*1*/ prop: kotlin.reflect.KProperty<*>, /*2*/ value: kotlin.String): kotlin.Unit
|
||||||
|
|
||||||
public final class C {
|
public final class C {
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ import org.jetbrains.kotlin.name.Name
|
|||||||
object OperatorNameConventions {
|
object OperatorNameConventions {
|
||||||
@JvmField val GET_VALUE = Name.identifier("getValue")
|
@JvmField val GET_VALUE = Name.identifier("getValue")
|
||||||
@JvmField val SET_VALUE = Name.identifier("setValue")
|
@JvmField val SET_VALUE = Name.identifier("setValue")
|
||||||
@JvmField val PROPERTY_DELEGATED = Name.identifier("propertyDelegated")
|
|
||||||
@JvmField val PROVIDE_DELEGATE = Name.identifier("provideDelegate")
|
@JvmField val PROVIDE_DELEGATE = Name.identifier("provideDelegate")
|
||||||
|
|
||||||
@JvmField val EQUALS = Name.identifier("equals")
|
@JvmField val EQUALS = Name.identifier("equals")
|
||||||
|
|||||||
@@ -37,7 +37,6 @@ import org.jetbrains.kotlin.util.OperatorNameConventions.CONTAINS
|
|||||||
import org.jetbrains.kotlin.util.OperatorNameConventions.COROUTINE_HANDLE_EXCEPTION
|
import org.jetbrains.kotlin.util.OperatorNameConventions.COROUTINE_HANDLE_EXCEPTION
|
||||||
import org.jetbrains.kotlin.util.OperatorNameConventions.COROUTINE_HANDLE_RESULT
|
import org.jetbrains.kotlin.util.OperatorNameConventions.COROUTINE_HANDLE_RESULT
|
||||||
import org.jetbrains.kotlin.util.OperatorNameConventions.COROUTINE_INTERCEPT_RESUME
|
import org.jetbrains.kotlin.util.OperatorNameConventions.COROUTINE_INTERCEPT_RESUME
|
||||||
import org.jetbrains.kotlin.util.OperatorNameConventions.PROVIDE_DELEGATE
|
|
||||||
import org.jetbrains.kotlin.util.OperatorNameConventions.DEC
|
import org.jetbrains.kotlin.util.OperatorNameConventions.DEC
|
||||||
import org.jetbrains.kotlin.util.OperatorNameConventions.EQUALS
|
import org.jetbrains.kotlin.util.OperatorNameConventions.EQUALS
|
||||||
import org.jetbrains.kotlin.util.OperatorNameConventions.GET
|
import org.jetbrains.kotlin.util.OperatorNameConventions.GET
|
||||||
@@ -47,7 +46,7 @@ import org.jetbrains.kotlin.util.OperatorNameConventions.INC
|
|||||||
import org.jetbrains.kotlin.util.OperatorNameConventions.INVOKE
|
import org.jetbrains.kotlin.util.OperatorNameConventions.INVOKE
|
||||||
import org.jetbrains.kotlin.util.OperatorNameConventions.ITERATOR
|
import org.jetbrains.kotlin.util.OperatorNameConventions.ITERATOR
|
||||||
import org.jetbrains.kotlin.util.OperatorNameConventions.NEXT
|
import org.jetbrains.kotlin.util.OperatorNameConventions.NEXT
|
||||||
import org.jetbrains.kotlin.util.OperatorNameConventions.PROPERTY_DELEGATED
|
import org.jetbrains.kotlin.util.OperatorNameConventions.PROVIDE_DELEGATE
|
||||||
import org.jetbrains.kotlin.util.OperatorNameConventions.RANGE_TO
|
import org.jetbrains.kotlin.util.OperatorNameConventions.RANGE_TO
|
||||||
import org.jetbrains.kotlin.util.OperatorNameConventions.SET
|
import org.jetbrains.kotlin.util.OperatorNameConventions.SET
|
||||||
import org.jetbrains.kotlin.util.OperatorNameConventions.SET_VALUE
|
import org.jetbrains.kotlin.util.OperatorNameConventions.SET_VALUE
|
||||||
@@ -226,8 +225,7 @@ object OperatorChecks : AbstractModifierChecks() {
|
|||||||
ensure(parameterType.isNonExtensionFunctionType && parameterType.getValueParameterTypesFromFunctionType().isEmpty() &&
|
ensure(parameterType.isNonExtensionFunctionType && parameterType.getValueParameterTypesFromFunctionType().isEmpty() &&
|
||||||
parameterType.getReturnTypeFromFunctionType().isUnit()
|
parameterType.getReturnTypeFromFunctionType().isUnit()
|
||||||
) { "Value parameter must have a functional type '() -> Unit'" }
|
) { "Value parameter must have a functional type '() -> Unit'" }
|
||||||
},
|
}
|
||||||
Checks(PROPERTY_DELEGATED, Member, ValueParameterCountCheck.Equals(1)) //TODO: more checks required!
|
|
||||||
)
|
)
|
||||||
|
|
||||||
private fun FunctionDescriptor.checkHandleSecondParameter(): String? {
|
private fun FunctionDescriptor.checkHandleSecondParameter(): String? {
|
||||||
|
|||||||
+1
-1
@@ -183,7 +183,7 @@ abstract class OperatorReferenceSearcher<TReferenceElement : KtElement>(
|
|||||||
name == OperatorNameConventions.ITERATOR ->
|
name == OperatorNameConventions.ITERATOR ->
|
||||||
return IteratorOperatorReferenceSearcher(declaration, searchScope, consumer, optimizer, options)
|
return IteratorOperatorReferenceSearcher(declaration, searchScope, consumer, optimizer, options)
|
||||||
|
|
||||||
name == OperatorNameConventions.GET_VALUE || name == OperatorNameConventions.SET_VALUE || name == OperatorNameConventions.PROPERTY_DELEGATED ->
|
name == OperatorNameConventions.GET_VALUE || name == OperatorNameConventions.SET_VALUE || name == OperatorNameConventions.PROVIDE_DELEGATE ->
|
||||||
return PropertyDelegationOperatorReferenceSearcher(declaration, searchScope, consumer, optimizer, options)
|
return PropertyDelegationOperatorReferenceSearcher(declaration, searchScope, consumer, optimizer, options)
|
||||||
|
|
||||||
else ->
|
else ->
|
||||||
|
|||||||
+6
-6
@@ -13,18 +13,18 @@ import kotlin.reflect./*p:kotlin.reflect*/KProperty
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*p:foo.bar*/operator fun /*p:foo.bar*/D2.getValue(t: /*p:foo.bar*/Any?, p: KProperty<*>) = /*p:kotlin(Int)*/1
|
/*p:foo.bar*/operator fun /*p:foo.bar*/D2.getValue(t: /*p:foo.bar*/Any?, p: KProperty<*>) = /*p:kotlin(Int)*/1
|
||||||
/*p:foo.bar*/fun /*p:foo.bar*/D2.propertyDelegated(p: /*p:foo.bar*/Any?) {}
|
/*p:foo.bar*/operator fun /*p:foo.bar*/D2.provideDelegate(p: /*p:foo.bar*/Any?, k: /*p:foo.bar*/Any) = /*p:foo.bar(D2)*/this
|
||||||
|
|
||||||
/*p:foo.bar*/class D3 : /*p:foo.bar*/D2() {
|
/*p:foo.bar*/class D3 : /*p:foo.bar*/D2() {
|
||||||
fun propertyDelegated(p: /*c:foo.bar.D3 c:foo.bar.D2 p:foo.bar*/Any?) {}
|
operator fun provideDelegate(p: /*c:foo.bar.D3 c:foo.bar.D2 p:foo.bar*/Any?, k: /*c:foo.bar.D3 c:foo.bar.D2 p:foo.bar*/Any) = /*p:foo.bar(D3)*/this
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*p:foo.bar*/val x1 by /*p:foo.bar c:foo.bar.D1(provideDelegate) c:foo.bar.D1(getProvideDelegate) c:foo.bar.D1(getPROVIDEDelegate) p:foo.bar(provideDelegate) p:kotlin(provideDelegate) p:kotlin.annotation(provideDelegate) p:kotlin.collections(provideDelegate) p:kotlin.coroutines(provideDelegate) p:kotlin.ranges(provideDelegate) p:kotlin.sequences(provideDelegate) p:kotlin.text(provideDelegate) p:java.lang(provideDelegate) p:kotlin.jvm(provideDelegate) p:kotlin.io(provideDelegate) c:foo.bar.D1(getValue)*/D1()
|
/*p:foo.bar*/val x1 by /*p:foo.bar c:foo.bar.D1(provideDelegate) c:foo.bar.D1(getProvideDelegate) c:foo.bar.D1(getPROVIDEDelegate) p:foo.bar(provideDelegate) p:kotlin(provideDelegate) p:kotlin.annotation(provideDelegate) p:kotlin.collections(provideDelegate) p:kotlin.coroutines(provideDelegate) p:kotlin.ranges(provideDelegate) p:kotlin.sequences(provideDelegate) p:kotlin.text(provideDelegate) p:java.lang(provideDelegate) p:kotlin.jvm(provideDelegate) p:kotlin.io(provideDelegate) c:foo.bar.D1(getValue)*/D1()
|
||||||
/*p:foo.bar*/var y1 by /*p:foo.bar c:foo.bar.D1(provideDelegate) c:foo.bar.D1(getProvideDelegate) c:foo.bar.D1(getPROVIDEDelegate) p:foo.bar(provideDelegate) p:kotlin(provideDelegate) p:kotlin.annotation(provideDelegate) p:kotlin.collections(provideDelegate) p:kotlin.coroutines(provideDelegate) p:kotlin.ranges(provideDelegate) p:kotlin.sequences(provideDelegate) p:kotlin.text(provideDelegate) p:java.lang(provideDelegate) p:kotlin.jvm(provideDelegate) p:kotlin.io(provideDelegate) c:foo.bar.D1(getValue) c:foo.bar.D1(setValue) c:foo.bar.D1(getSetValue) c:foo.bar.D1(getSETValue) p:foo.bar(setValue)*/D1()
|
/*p:foo.bar*/var y1 by /*p:foo.bar c:foo.bar.D1(provideDelegate) c:foo.bar.D1(getProvideDelegate) c:foo.bar.D1(getPROVIDEDelegate) p:foo.bar(provideDelegate) p:kotlin(provideDelegate) p:kotlin.annotation(provideDelegate) p:kotlin.collections(provideDelegate) p:kotlin.coroutines(provideDelegate) p:kotlin.ranges(provideDelegate) p:kotlin.sequences(provideDelegate) p:kotlin.text(provideDelegate) p:java.lang(provideDelegate) p:kotlin.jvm(provideDelegate) p:kotlin.io(provideDelegate) c:foo.bar.D1(getValue) c:foo.bar.D1(setValue) c:foo.bar.D1(getSetValue) c:foo.bar.D1(getSETValue) p:foo.bar(setValue)*/D1()
|
||||||
|
|
||||||
/*p:foo.bar*/val x2 by /*p:foo.bar c:foo.bar.D2(provideDelegate) c:foo.bar.D2(getProvideDelegate) c:foo.bar.D2(getPROVIDEDelegate) p:foo.bar(provideDelegate) p:kotlin(provideDelegate) p:kotlin.annotation(provideDelegate) p:kotlin.collections(provideDelegate) p:kotlin.coroutines(provideDelegate) p:kotlin.ranges(provideDelegate) p:kotlin.sequences(provideDelegate) p:kotlin.text(provideDelegate) p:java.lang(provideDelegate) p:kotlin.jvm(provideDelegate) p:kotlin.io(provideDelegate) c:foo.bar.D2(getValue) c:foo.bar.D2(getGetValue) c:foo.bar.D2(getGETValue) p:foo.bar(getValue)*/D2()
|
/*p:foo.bar*/val x2 by /*p:foo.bar c:foo.bar.D2(provideDelegate) c:foo.bar.D2(getProvideDelegate) c:foo.bar.D2(getPROVIDEDelegate) p:foo.bar(provideDelegate) c:foo.bar.D2(getValue) c:foo.bar.D2(getGetValue) c:foo.bar.D2(getGETValue) p:foo.bar(getValue)*/D2()
|
||||||
/*p:foo.bar*/var y2 by /*p:foo.bar c:foo.bar.D2(provideDelegate) c:foo.bar.D2(getProvideDelegate) c:foo.bar.D2(getPROVIDEDelegate) p:foo.bar(provideDelegate) p:kotlin(provideDelegate) p:kotlin.annotation(provideDelegate) p:kotlin.collections(provideDelegate) p:kotlin.coroutines(provideDelegate) p:kotlin.ranges(provideDelegate) p:kotlin.sequences(provideDelegate) p:kotlin.text(provideDelegate) p:java.lang(provideDelegate) p:kotlin.jvm(provideDelegate) p:kotlin.io(provideDelegate) c:foo.bar.D2(getValue) c:foo.bar.D2(getGetValue) c:foo.bar.D2(getGETValue) p:foo.bar(getValue) c:foo.bar.D2(setValue)*/D2()
|
/*p:foo.bar*/var y2 by /*p:foo.bar c:foo.bar.D2(provideDelegate) c:foo.bar.D2(getProvideDelegate) c:foo.bar.D2(getPROVIDEDelegate) p:foo.bar(provideDelegate) c:foo.bar.D2(getValue) c:foo.bar.D2(getGetValue) c:foo.bar.D2(getGETValue) p:foo.bar(getValue) c:foo.bar.D2(setValue)*/D2()
|
||||||
|
|
||||||
/*p:foo.bar*/val x3 by /*p:foo.bar c:foo.bar.D3(provideDelegate) c:foo.bar.D2(provideDelegate) c:foo.bar.D3(getProvideDelegate) c:foo.bar.D3(getPROVIDEDelegate) p:foo.bar(provideDelegate) p:kotlin(provideDelegate) p:kotlin.annotation(provideDelegate) p:kotlin.collections(provideDelegate) p:kotlin.coroutines(provideDelegate) p:kotlin.ranges(provideDelegate) p:kotlin.sequences(provideDelegate) p:kotlin.text(provideDelegate) p:java.lang(provideDelegate) p:kotlin.jvm(provideDelegate) p:kotlin.io(provideDelegate) c:foo.bar.D3(getValue) c:foo.bar.D2(getValue) c:foo.bar.D3(getGetValue) c:foo.bar.D3(getGETValue) p:foo.bar(getValue)*/D3()
|
/*p:foo.bar*/val x3 by /*p:foo.bar c:foo.bar.D3(provideDelegate) c:foo.bar.D2(provideDelegate) c:foo.bar.D3(getValue) c:foo.bar.D2(getValue) c:foo.bar.D3(getGetValue) c:foo.bar.D3(getGETValue) p:foo.bar(getValue)*/D3()
|
||||||
/*p:foo.bar*/var y3 by /*p:foo.bar c:foo.bar.D3(provideDelegate) c:foo.bar.D2(provideDelegate) c:foo.bar.D3(getProvideDelegate) c:foo.bar.D3(getPROVIDEDelegate) p:foo.bar(provideDelegate) p:kotlin(provideDelegate) p:kotlin.annotation(provideDelegate) p:kotlin.collections(provideDelegate) p:kotlin.coroutines(provideDelegate) p:kotlin.ranges(provideDelegate) p:kotlin.sequences(provideDelegate) p:kotlin.text(provideDelegate) p:java.lang(provideDelegate) p:kotlin.jvm(provideDelegate) p:kotlin.io(provideDelegate) c:foo.bar.D3(getValue) c:foo.bar.D2(getValue) c:foo.bar.D3(getGetValue) c:foo.bar.D3(getGETValue) p:foo.bar(getValue) c:foo.bar.D3(setValue) c:foo.bar.D2(setValue)*/D3()
|
/*p:foo.bar*/var y3 by /*p:foo.bar c:foo.bar.D3(provideDelegate) c:foo.bar.D2(provideDelegate) c:foo.bar.D3(getValue) c:foo.bar.D2(getValue) c:foo.bar.D3(getGetValue) c:foo.bar.D3(getGETValue) p:foo.bar(getValue) c:foo.bar.D3(setValue) c:foo.bar.D2(setValue)*/D3()
|
||||||
|
|||||||
Reference in New Issue
Block a user