Kotlin / dukat

Converter of <any kind of declarations> to Kotlin external declarations
552 stars 42 forks source link

Translation failure when trying to nullify intersection type #305

Closed Schahen closed 4 years ago

Schahen commented 4 years ago

translation of

interface A{}
interface B{}
interface C{}

interface Foo {
    propABCIntersection?: A & B & C;
}

Fails with: java.lang.Exception: makeNullable does not recognize type IntersectionTypeDeclaration(params=[TypeDeclaration(value=A, params=[], reference=ReferenceDeclaration(uid=67b0-a31f-f702-efae-InterfaceDeclaration-A, origin=IRRELEVANT, kind=INTERFACE), nullable=false, meta=null), TypeDeclaration(value=B, params=[], reference=ReferenceDeclaration(uid=7a48-54ab-a757-75d2-InterfaceDeclaration-B, origin=IRRELEVANT, kind=INTERFACE), nullable=false, meta=null), TypeDeclaration(value=C, params=[], reference=ReferenceDeclaration(uid=c779-220e-4785-0818-InterfaceDeclaration-C, origin=IRRELEVANT, kind=INTERFACE), nullable=false, meta=null)], nullable=false, meta=null)

in panic mode which is explainable however still surprising -we are not supposed to have intersections up to the point when it fails