Nullability of dynamic types
This commit is contained in:
@@ -199,8 +199,9 @@ public class TypeResolver(
|
||||
}
|
||||
|
||||
override fun visitNullableType(nullableType: JetNullableType) {
|
||||
val baseType = resolveTypeElement(c, annotations, nullableType.getInnerType())
|
||||
if (baseType.isNullable()) {
|
||||
val innerType = nullableType.getInnerType()
|
||||
val baseType = resolveTypeElement(c, annotations, innerType)
|
||||
if (baseType.isNullable() || innerType is JetNullableType || innerType is JetDynamicType) {
|
||||
c.trace.report(REDUNDANT_NULLABLE.on(nullableType))
|
||||
}
|
||||
else if (!baseType.isBare() && TypeUtils.hasNullableSuperType(baseType.getActualType())) {
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
// !CHECK_TYPE
|
||||
|
||||
// MODULE[js]: m1
|
||||
// FILE: k.kt
|
||||
|
||||
fun foo(dn: dynamic<!REDUNDANT_NULLABLE!>?<!>, d: dynamic, dnn: dynamic<!REDUNDANT_NULLABLE!>?<!><!REDUNDANT_NULLABLE!>?<!>) {
|
||||
dn.checkType { it : _<dynamic>}
|
||||
dn.checkType { it : _<dynamic<!REDUNDANT_NULLABLE!>?<!>>}
|
||||
d.checkType { it : _<dynamic>}
|
||||
d.checkType { it : _<dynamic<!REDUNDANT_NULLABLE!>?<!>>}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
package
|
||||
|
||||
internal fun foo(/*0*/ dn: dynamic, /*1*/ d: dynamic): kotlin.Unit
|
||||
@@ -3722,6 +3722,12 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest {
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("nullable.kt")
|
||||
public void testNullable() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/dynamicTypes/nullable.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("overloading.kt")
|
||||
public void testOverloading() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/dynamicTypes/overloading.kt");
|
||||
|
||||
Reference in New Issue
Block a user