fix: remove unnecessary warnings for export declarations.

This commit is contained in:
Artem Kobzar
2022-05-13 11:10:17 +00:00
committed by Space
parent 4e06ff26d4
commit 6da3b3b274
4 changed files with 31 additions and 1 deletions
@@ -23,7 +23,7 @@ var x2: C<!>
@JsExport
class A(
<!NON_EXPORTABLE_TYPE("property; C"), NON_EXPORTABLE_TYPE("parameter; C")!>val x: C<!>,
<!NON_EXPORTABLE_TYPE("parameter; C")!>val x: C<!>,
<!NON_EXPORTABLE_TYPE("parameter; C")!>y: C<!>
) {
<!NON_EXPORTABLE_TYPE("return; C")!>fun foo(<!NON_EXPORTABLE_TYPE("parameter; C")!>x: C<!>)<!> = x
@@ -15,3 +15,11 @@ class A<<!NON_EXPORTABLE_TYPE("upper bound; C")!>T : C<!>, <!NON_EXPORTABLE_TYPE
@JsExport
interface I2<<!NON_EXPORTABLE_TYPE("upper bound; C"), NON_EXPORTABLE_TYPE("upper bound; I")!>T<!>> where T : C, T : I
@JsExport
class B<T>(val a: T, <!NON_EXPORTABLE_TYPE!>val b: Comparable<T><!>) {
<!NON_EXPORTABLE_TYPE!>val c: Comparable<T><!> = b
}
@JsExport
class D<T>(val a: T, val b: Array<T>)
@@ -10,6 +10,16 @@ package foo {
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@kotlin.js.JsExport public final class B</*0*/ T> {
public constructor B</*0*/ T>(/*0*/ a: T, /*1*/ b: kotlin.Comparable<T>)
public final val a: T
public final val b: kotlin.Comparable<T>
public final val c: kotlin.Comparable<T>
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public abstract class C {
public constructor C()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@@ -17,6 +27,15 @@ package foo {
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@kotlin.js.JsExport public final class D</*0*/ T> {
public constructor D</*0*/ T>(/*0*/ a: T, /*1*/ b: kotlin.Array<T>)
public final val a: T
public final val b: kotlin.Array<T>
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public interface I {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
@@ -16,6 +16,7 @@ import org.jetbrains.kotlin.js.translate.utils.AnnotationsUtils
import org.jetbrains.kotlin.psi.KtAnnotationEntry
import org.jetbrains.kotlin.psi.KtDeclaration
import org.jetbrains.kotlin.psi.KtNamedDeclaration
import org.jetbrains.kotlin.psi.KtParameter
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.BindingTrace
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
@@ -104,6 +105,7 @@ object JsExportDeclarationChecker : DeclarationChecker {
}
is PropertyDescriptor -> {
if (declaration is KtParameter) return
if (descriptor.isExtensionProperty) {
reportWrongExportedDeclaration("extension property")
return
@@ -189,6 +191,7 @@ object JsExportDeclarationChecker : DeclarationChecker {
val nonNullable = makeNotNullable()
val isPrimitiveExportableType = nonNullable.isAnyOrNullableAny() ||
nonNullable.isTypeParameter() ||
nonNullable.isDynamic() ||
nonNullable.isBoolean() ||
KotlinBuiltIns.isThrowableOrNullableThrowable(nonNullable) ||