Set isOperator property for dynamic calls by convention
This commit is contained in:
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.lexer.KtTokens
|
|||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.resolve.DescriptorFactory
|
import org.jetbrains.kotlin.resolve.DescriptorFactory
|
||||||
|
import org.jetbrains.kotlin.resolve.calls.callResolverUtil.isConventionCall
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns
|
import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns
|
||||||
import org.jetbrains.kotlin.resolve.scopes.MemberScopeImpl
|
import org.jetbrains.kotlin.resolve.scopes.MemberScopeImpl
|
||||||
import org.jetbrains.kotlin.resolve.scopes.receivers.TransientReceiver
|
import org.jetbrains.kotlin.resolve.scopes.receivers.TransientReceiver
|
||||||
@@ -134,6 +135,7 @@ class DynamicCallableDescriptors(private val storageManager: StorageManager, bui
|
|||||||
Visibilities.PUBLIC
|
Visibilities.PUBLIC
|
||||||
)
|
)
|
||||||
functionDescriptor.setHasSynthesizedParameterNames(true)
|
functionDescriptor.setHasSynthesizedParameterNames(true)
|
||||||
|
functionDescriptor.isOperator = isConventionCall(call)
|
||||||
return functionDescriptor
|
return functionDescriptor
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -1,5 +1,5 @@
|
|||||||
public final fun get(/*0*/ p0: dynamic): dynamic
|
public final operator fun get(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun get(/*0*/ p0: dynamic): dynamic
|
public final operator fun get(/*0*/ p0: dynamic): dynamic
|
||||||
public final var foo: dynamic
|
public final var foo: dynamic
|
||||||
public final fun <get-foo>(): dynamic
|
public final fun <get-foo>(): dynamic
|
||||||
public final fun <set-foo>(/*0*/ <set-?>: dynamic): kotlin.Unit
|
public final fun <set-foo>(/*0*/ <set-?>: dynamic): kotlin.Unit
|
||||||
|
|||||||
+47
-47
@@ -1,54 +1,54 @@
|
|||||||
public final fun unaryPlus(): dynamic
|
public final operator fun unaryPlus(): dynamic
|
||||||
public final fun unaryMinus(): dynamic
|
public final operator fun unaryMinus(): dynamic
|
||||||
public final fun not(): dynamic
|
public final operator fun not(): dynamic
|
||||||
public final fun plus(/*0*/ p0: dynamic): dynamic
|
public final operator fun plus(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun plus(/*0*/ p0: dynamic): dynamic
|
public final operator fun plus(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun minus(/*0*/ p0: dynamic): dynamic
|
public final operator fun minus(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun times(/*0*/ p0: dynamic): dynamic
|
public final operator fun times(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun div(/*0*/ p0: dynamic): dynamic
|
public final operator fun div(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun rem(/*0*/ p0: dynamic): dynamic
|
public final operator fun rem(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun and(/*0*/ p0: dynamic): dynamic
|
public final fun and(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun get(/*0*/ p0: dynamic): dynamic
|
public final operator fun get(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun set(/*0*/ p0: dynamic, /*1*/ p1: dynamic): dynamic
|
public final operator fun set(/*0*/ p0: dynamic, /*1*/ p1: dynamic): dynamic
|
||||||
public final fun get(/*0*/ p0: dynamic): dynamic
|
public final operator fun get(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun inc(): dynamic
|
public final operator fun inc(): dynamic
|
||||||
public final fun inc(): dynamic
|
public final operator fun inc(): dynamic
|
||||||
public final fun get(/*0*/ p0: dynamic): dynamic
|
public final operator fun get(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun get(/*0*/ p0: dynamic): dynamic
|
public final operator fun get(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun dec(): dynamic
|
public final operator fun dec(): dynamic
|
||||||
public final fun dec(): dynamic
|
public final operator fun dec(): dynamic
|
||||||
public final fun get(/*0*/ p0: dynamic): dynamic
|
public final operator fun get(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun invoke(): dynamic
|
public final fun invoke(): dynamic
|
||||||
public final fun invoke(/*0*/ p0: dynamic): dynamic
|
public final fun invoke(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun invoke(/*0*/ name: dynamic): dynamic
|
public final fun invoke(/*0*/ name: dynamic): dynamic
|
||||||
public final fun invoke(/*0*/ p0: () -> dynamic): dynamic
|
public final fun invoke(/*0*/ p0: () -> dynamic): dynamic
|
||||||
public final fun invoke(/*0*/ p0: dynamic): dynamic
|
public final fun invoke(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun compareTo(/*0*/ p0: dynamic): dynamic
|
public final operator fun compareTo(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun compareTo(/*0*/ p0: dynamic): dynamic
|
public final operator fun compareTo(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun compareTo(/*0*/ p0: dynamic): dynamic
|
public final operator fun compareTo(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun compareTo(/*0*/ p0: dynamic): dynamic
|
public final operator fun compareTo(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun foo(): dynamic
|
public final fun foo(): dynamic
|
||||||
public final fun inc(): dynamic
|
public final operator fun inc(): dynamic
|
||||||
public final fun inc(): dynamic
|
public final operator fun inc(): dynamic
|
||||||
public final fun dec(): dynamic
|
public final operator fun dec(): dynamic
|
||||||
public final fun dec(): dynamic
|
public final operator fun dec(): dynamic
|
||||||
public final fun plusAssign(/*0*/ p0: dynamic): dynamic
|
public final operator fun plusAssign(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun minusAssign(/*0*/ p0: dynamic): dynamic
|
public final operator fun minusAssign(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun timesAssign(/*0*/ p0: dynamic): dynamic
|
public final operator fun timesAssign(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun divAssign(/*0*/ p0: dynamic): dynamic
|
public final operator fun divAssign(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun remAssign(/*0*/ p0: dynamic): dynamic
|
public final operator fun remAssign(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun plusAssign(/*0*/ p0: dynamic): dynamic
|
public final operator fun plusAssign(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun minusAssign(/*0*/ p0: dynamic): dynamic
|
public final operator fun minusAssign(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun timesAssign(/*0*/ p0: dynamic): dynamic
|
public final operator fun timesAssign(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun divAssign(/*0*/ p0: dynamic): dynamic
|
public final operator fun divAssign(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun remAssign(/*0*/ p0: dynamic): dynamic
|
public final operator fun remAssign(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun get(/*0*/ p0: dynamic): dynamic
|
public final operator fun get(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun plusAssign(/*0*/ p0: dynamic): dynamic
|
public final operator fun plusAssign(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun get(/*0*/ p0: dynamic): dynamic
|
public final operator fun get(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun minusAssign(/*0*/ p0: dynamic): dynamic
|
public final operator fun minusAssign(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun get(/*0*/ p0: dynamic): dynamic
|
public final operator fun get(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun timesAssign(/*0*/ p0: dynamic): dynamic
|
public final operator fun timesAssign(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun get(/*0*/ p0: dynamic): dynamic
|
public final operator fun get(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun divAssign(/*0*/ p0: dynamic): dynamic
|
public final operator fun divAssign(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun get(/*0*/ p0: dynamic): dynamic
|
public final operator fun get(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun remAssign(/*0*/ p0: dynamic): dynamic
|
public final operator fun remAssign(/*0*/ p0: dynamic): dynamic
|
||||||
|
|||||||
+9
-9
@@ -1,9 +1,9 @@
|
|||||||
public final fun component1(): dynamic
|
public final operator fun component1(): dynamic
|
||||||
public final fun component2(): dynamic
|
public final operator fun component2(): dynamic
|
||||||
public final fun plus(/*0*/ p0: dynamic): dynamic
|
public final operator fun plus(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun component1(): dynamic
|
public final operator fun component1(): dynamic
|
||||||
public final fun component2(): dynamic
|
public final operator fun component2(): dynamic
|
||||||
public final fun plus(/*0*/ p0: dynamic): dynamic
|
public final operator fun plus(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun component1(): dynamic
|
public final operator fun component1(): dynamic
|
||||||
public final fun component2(): dynamic
|
public final operator fun component2(): dynamic
|
||||||
public final fun plus(/*0*/ p0: dynamic): dynamic
|
public final operator fun plus(/*0*/ p0: dynamic): dynamic
|
||||||
|
|||||||
+4
-4
@@ -1,4 +1,4 @@
|
|||||||
public final fun contains(/*0*/ p0: dynamic): dynamic
|
public final operator fun contains(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun contains(/*0*/ p0: dynamic): dynamic
|
public final operator fun contains(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun contains(/*0*/ p0: dynamic): dynamic
|
public final operator fun contains(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun contains(/*0*/ p0: dynamic): dynamic
|
public final operator fun contains(/*0*/ p0: dynamic): dynamic
|
||||||
|
|||||||
+4
-4
@@ -1,4 +1,4 @@
|
|||||||
public final fun get(/*0*/ p0: dynamic): dynamic
|
public final operator fun get(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun get(/*0*/ p0: dynamic, /*1*/ p1: dynamic): dynamic
|
public final operator fun get(/*0*/ p0: dynamic, /*1*/ p1: dynamic): dynamic
|
||||||
public final fun set(/*0*/ p0: dynamic, /*1*/ p1: dynamic): dynamic
|
public final operator fun set(/*0*/ p0: dynamic, /*1*/ p1: dynamic): dynamic
|
||||||
public final fun set(/*0*/ p0: dynamic, /*1*/ p1: dynamic, /*2*/ p2: dynamic): dynamic
|
public final operator fun set(/*0*/ p0: dynamic, /*1*/ p1: dynamic, /*2*/ p2: dynamic): dynamic
|
||||||
|
|||||||
+1
-1
@@ -1,2 +1,2 @@
|
|||||||
public final fun rangeTo(/*0*/ p0: dynamic): dynamic
|
public final operator fun rangeTo(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun rangeTo(/*0*/ p0: dynamic): dynamic
|
public final fun rangeTo(/*0*/ p0: dynamic): dynamic
|
||||||
|
|||||||
compiler/testData/diagnostics/testsWithJsStdLib/dynamicTypes/staticCallsInDynamicContext.dynamic.txt
Vendored
+3
-3
@@ -10,7 +10,7 @@ public final var extVal: dynamic
|
|||||||
public final fun <get-extVal>(): dynamic
|
public final fun <get-extVal>(): dynamic
|
||||||
public final fun <set-extVal>(/*0*/ <set-?>: dynamic): kotlin.Unit
|
public final fun <set-extVal>(/*0*/ <set-?>: dynamic): kotlin.Unit
|
||||||
public final fun extExtVal(): dynamic
|
public final fun extExtVal(): dynamic
|
||||||
public final fun invoke(): dynamic
|
public final operator fun invoke(): dynamic
|
||||||
public final fun plus(/*0*/ p0: dynamic): dynamic
|
public final operator fun plus(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun invoke(): dynamic
|
public final operator fun invoke(): dynamic
|
||||||
public final fun foo(): dynamic
|
public final fun foo(): dynamic
|
||||||
|
|||||||
+2
-2
@@ -1,3 +1,3 @@
|
|||||||
public final fun foo(/*0*/ p0: dynamic): dynamic
|
public final fun foo(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun get(/*0*/ p0: dynamic): dynamic
|
public final operator fun get(/*0*/ p0: dynamic): dynamic
|
||||||
public final fun get(/*0*/ p0: dynamic): dynamic
|
public final operator fun get(/*0*/ p0: dynamic): dynamic
|
||||||
|
|||||||
Vendored
+1
@@ -0,0 +1 @@
|
|||||||
|
public final operator fun unaryPlus(): dynamic
|
||||||
+11
@@ -0,0 +1,11 @@
|
|||||||
|
// !LANGUAGE: +NewInference
|
||||||
|
|
||||||
|
fun String.toDouble(): Double = (+(this.asDynamic())).unsafeCast<Double>().also {
|
||||||
|
if (it.isNaN() && !this.isNaN() || it == 0.0 && this.isBlank())
|
||||||
|
TODO()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun String.isNaN(): Boolean = when (this.toLowerCase()) {
|
||||||
|
"nan", "+nan", "-nan" -> true
|
||||||
|
else -> false
|
||||||
|
}
|
||||||
+4
@@ -0,0 +1,4 @@
|
|||||||
|
package
|
||||||
|
|
||||||
|
public fun kotlin.String.isNaN(): kotlin.Boolean
|
||||||
|
public fun kotlin.String.toDouble(): kotlin.Double
|
||||||
+5
@@ -53,6 +53,11 @@ public class DiagnosticsTestWithJsStdLibGenerated extends AbstractDiagnosticsTes
|
|||||||
runTest("compiler/testData/diagnostics/testsWithJsStdLib/runtimeAnnotations.kt");
|
runTest("compiler/testData/diagnostics/testsWithJsStdLib/runtimeAnnotations.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("unsafeCastFunctionOnDynamicType.kt")
|
||||||
|
public void testUnsafeCastFunctionOnDynamicType() throws Exception {
|
||||||
|
runTest("compiler/testData/diagnostics/testsWithJsStdLib/unsafeCastFunctionOnDynamicType.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("wrongMultipleInheritance.kt")
|
@TestMetadata("wrongMultipleInheritance.kt")
|
||||||
public void testWrongMultipleInheritance() throws Exception {
|
public void testWrongMultipleInheritance() throws Exception {
|
||||||
runTest("compiler/testData/diagnostics/testsWithJsStdLib/wrongMultipleInheritance.kt");
|
runTest("compiler/testData/diagnostics/testsWithJsStdLib/wrongMultipleInheritance.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user