ballerina-lang icon indicating copy to clipboard operation
ballerina-lang copied to clipboard

[Bug]: Compiler crashes with a dependently-typed function call

Open SasinduDilshara opened this issue 1 year ago • 0 comments

Description

import ballerina/io;
import ballerina/jballerina.java;
type A record {};
type B A[];

public function func(typedesc<record{}> t = <>) 
      returns t[] = @java:Method {'class: "io.ballerina.stdlib.data.csvdata.csv.Native"} external;


public function main() returns error? {
    B|error a = check func();
    io:println(a);
}

When we run the above code with U9, this will gives following compiler crash

[2024-07-01 10:56:02,918] SEVERE {b7a.log.crash} - class org.wso2.ballerinalang.compiler.semantics.model.types.BTypeReferenceType cannot be cast to class org.wso2.ballerinalang.compiler.semantics.model.types.BArrayType (org.wso2.ballerinalang.compiler.semantics.model.types.BTypeReferenceType and org.wso2.ballerinalang.compiler.semantics.model.types.BArrayType are in unnamed module of loader 'app') 
java.lang.ClassCastException: class org.wso2.ballerinalang.compiler.semantics.model.types.BTypeReferenceType cannot be cast to class org.wso2.ballerinalang.compiler.semantics.model.types.BArrayType (org.wso2.ballerinalang.compiler.semantics.model.types.BTypeReferenceType and org.wso2.ballerinalang.compiler.semantics.model.types.BArrayType are in unnamed module of loader 'app')
        at org.wso2.ballerinalang.compiler.util.Unifier.visit(Unifier.java:189)
        at org.wso2.ballerinalang.compiler.util.Unifier.visit(Unifier.java:81)
        at org.wso2.ballerinalang.compiler.semantics.model.types.BArrayType.accept(BArrayType.java:87)
        at org.wso2.ballerinalang.compiler.util.Unifier.build(Unifier.java:103)
        at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkInvocationArgs(TypeChecker.java:7536)
        at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkInvocationParam(TypeChecker.java:7263)
        at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkInvocationParamAndReturnType(TypeChecker.java:7125)
        at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkFunctionInvocationExpr(TypeChecker.java:6768)
        at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.visit(TypeChecker.java:3732)
        at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.visit(TypeChecker.java:220)
        at org.wso2.ballerinalang.compiler.tree.expressions.BLangInvocation.accept(BLangInvocation.java:133)
        at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkExpr(TypeChecker.java:411)

Steps to Reproduce

No response

Affected Version(s)

2201.9.0

OS, DB, other environment details and versions

No response

Related area

-> Compilation

Related issue(s) (optional)

No response

Suggested label(s) (optional)

No response

Suggested assignee(s) (optional)

No response

SasinduDilshara avatar Jul 01 '24 05:07 SasinduDilshara