ballerina-platform / ballerina-lang

The Ballerina Programming Language
https://ballerina.io/
Apache License 2.0
3.58k stars 738 forks source link

[Bug]: ClassCastException in Language Server Client #43193

Open Shadow-Devil opened 1 month ago

Shadow-Devil commented 1 month ago

Description

Stacktrace:

SEVERE {b7a.log.crash} - class org.wso2.ballerinalang.compiler.semantics.model.types.BAnydataType cannot be cast to class org.wso2.ballerinalang.compiler.semantics.model.types.BTypedescType (org.wso2.ballerinalang.compiler.semantics.model.types.BAnydataType and org.wso2.ballerinalang.compiler.semantics.model.types.BTypedescType are in unnamed module of loader 'app') 
java.lang.ClassCastException: class org.wso2.ballerinalang.compiler.semantics.model.types.BAnydataType cannot be cast to class org.wso2.ballerinalang.compiler.semantics.model.types.BTypedescType (org.wso2.ballerinalang.compiler.semantics.model.types.BAnydataType and org.wso2.ballerinalang.compiler.semantics.model.types.BTypedescType are in unnamed module of loader 'app')
    at org.wso2.ballerinalang.compiler.util.Unifier.visit(Unifier.java:564)
    at org.wso2.ballerinalang.compiler.util.Unifier.visit(Unifier.java:81)
    at org.wso2.ballerinalang.compiler.semantics.model.types.BParameterizedType.accept(BParameterizedType.java:65)
    at org.wso2.ballerinalang.compiler.util.Unifier.visit(Unifier.java:445)
    at org.wso2.ballerinalang.compiler.util.Unifier.visit(Unifier.java:81)
    at org.wso2.ballerinalang.compiler.semantics.model.types.BUnionType.accept(BUnionType.java:139)
    at org.wso2.ballerinalang.compiler.util.Unifier.build(Unifier.java:103)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkInvocationArgs(TypeChecker.java:7530)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkInvocationParam(TypeChecker.java:7257)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkInvocationParamAndReturnType(TypeChecker.java:7119)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.getLangLibMethod(TypeChecker.java:7112)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkInLangLib(TypeChecker.java:4223)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.visitInvocation(TypeChecker.java:3760)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.visit(TypeChecker.java:3739)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.QueryTypeChecker.visit(QueryTypeChecker.java:968)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.QueryTypeChecker.visit(QueryTypeChecker.java:108)
    at org.wso2.ballerinalang.compiler.tree.expressions.BLangInvocation.accept(BLangInvocation.java:133)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkExpr(TypeChecker.java:411)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkExpr(TypeChecker.java:352)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkExpr(TypeChecker.java:348)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.getCandidateType(TypeChecker.java:6548)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.visitCheckAndCheckPanicExpr(TypeChecker.java:6405)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.QueryTypeChecker.visit(QueryTypeChecker.java:960)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.QueryTypeChecker.visit(QueryTypeChecker.java:108)
    at org.wso2.ballerinalang.compiler.tree.expressions.BLangCheckedExpr.accept(BLangCheckedExpr.java:70)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkExpr(TypeChecker.java:411)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkExpr(TypeChecker.java:352)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkMappingField(TypeChecker.java:7921)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.validateSpecifiedFields(TypeChecker.java:2724)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkMappingConstructorCompatibility(TypeChecker.java:2608)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.visit(TypeChecker.java:2376)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.visit(TypeChecker.java:220)
    at org.wso2.ballerinalang.compiler.tree.expressions.BLangRecordLiteral.accept(BLangRecordLiteral.java:77)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkExpr(TypeChecker.java:411)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkExpr(TypeChecker.java:356)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkExprSilent(TypeChecker.java:3917)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkExprSilent(TypeChecker.java:3931)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.QueryTypeChecker.solveSelectTypeAndResolveType(QueryTypeChecker.java:423)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.QueryTypeChecker.resolveQueryType(QueryTypeChecker.java:295)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.QueryTypeChecker.checkQueryType(QueryTypeChecker.java:184)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.visit(TypeChecker.java:6375)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.visit(TypeChecker.java:220)
    at org.wso2.ballerinalang.compiler.tree.expressions.BLangQueryExpr.accept(BLangQueryExpr.java:122)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkExpr(TypeChecker.java:411)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkExpr(TypeChecker.java:352)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkExpr(TypeChecker.java:348)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.getCandidateType(TypeChecker.java:6548)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.visitCheckAndCheckPanicExpr(TypeChecker.java:6405)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.visit(TypeChecker.java:6365)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.visit(TypeChecker.java:220)
    at org.wso2.ballerinalang.compiler.tree.expressions.BLangCheckedExpr.accept(BLangCheckedExpr.java:70)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkExpr(TypeChecker.java:411)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkExpr(TypeChecker.java:383)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.visit(SemanticAnalyzer.java:2331)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.visit(SemanticAnalyzer.java:253)
    at org.wso2.ballerinalang.compiler.tree.statements.BLangAssignment.accept(BLangAssignment.java:86)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.analyzeNode(SemanticAnalyzer.java:4371)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.analyzeNode(SemanticAnalyzer.java:4345)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.analyzeStmt(SemanticAnalyzer.java:4293)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.visit(SemanticAnalyzer.java:591)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.visit(SemanticAnalyzer.java:253)
    at org.wso2.ballerinalang.compiler.tree.BLangBlockFunctionBody.accept(BLangBlockFunctionBody.java:65)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.analyzeNode(SemanticAnalyzer.java:4371)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.visit(SemanticAnalyzer.java:570)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.visit(SemanticAnalyzer.java:253)
    at org.wso2.ballerinalang.compiler.tree.BLangFunction.accept(BLangFunction.java:82)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.analyzeNode(SemanticAnalyzer.java:4371)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.analyzeNode(SemanticAnalyzer.java:4345)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.visit(SemanticAnalyzer.java:366)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.visit(SemanticAnalyzer.java:253)
    at org.wso2.ballerinalang.compiler.tree.BLangPackage.accept(BLangPackage.java:172)
    at org.wso2.ballerinalang.compiler.tree.SimpleBLangNodeAnalyzer.visitNode(SimpleBLangNodeAnalyzer.java:217)
    at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.analyze(SemanticAnalyzer.java:304)
    at io.ballerina.projects.internal.CompilerPhaseRunner.typeCheck(CompilerPhaseRunner.java:184)
    at io.ballerina.projects.internal.CompilerPhaseRunner.performTypeCheckPhases(CompilerPhaseRunner.java:110)
    at io.ballerina.projects.ModuleContext.compileInternal(ModuleContext.java:435)
    at io.ballerina.projects.ModuleCompilationState$1.compile(ModuleCompilationState.java:45)
    at io.ballerina.projects.ModuleContext.compile(ModuleContext.java:383)
    at io.ballerina.projects.PackageCompilation.compileModulesInternal(PackageCompilation.java:211)
    at io.ballerina.projects.PackageCompilation.compileModules(PackageCompilation.java:195)
    at io.ballerina.projects.PackageCompilation.compile(PackageCompilation.java:102)
    at io.ballerina.projects.PackageCompilation.from(PackageCompilation.java:97)
    at io.ballerina.projects.PackageContext.getPackageCompilation(PackageContext.java:224)
    at io.ballerina.projects.Package.getCompilation(Package.java:147)
    at org.ballerinalang.langserver.workspace.BallerinaWorkspaceManager.waitAndGetPackageCompilation(BallerinaWorkspaceManager.java:346)
    at org.ballerinalang.langserver.workspace.BallerinaWorkspaceManager.waitAndGetPackageCompilation(BallerinaWorkspaceManager.java:373)
    at org.ballerinalang.langserver.workspace.BallerinaWorkspaceManager.waitAndGetPackageCompilation(BallerinaWorkspaceManager.java:380)
    at org.ballerinalang.langserver.workspace.BallerinaWorkspaceManager.semanticModel(BallerinaWorkspaceManager.java:320)
    at org.ballerinalang.langserver.contexts.AbstractDocumentServiceContext.currentSemanticModel(AbstractDocumentServiceContext.java:227)
    at org.ballerinalang.langserver.codeaction.CompilerPluginCodeActionExtension.execute(CompilerPluginCodeActionExtension.java:89)
    at org.ballerinalang.langserver.codeaction.CompilerPluginCodeActionExtension.execute(CompilerPluginCodeActionExtension.java:71)
    at org.ballerinalang.langserver.LangExtensionDelegator.codeActions(LangExtensionDelegator.java:169)
    at org.ballerinalang.langserver.BallerinaTextDocumentService.lambda$codeAction$8(BallerinaTextDocumentService.java:346)
    at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:646)
    at java.base/java.util.concurrent.CompletableFuture$Completion.exec(CompletableFuture.java:483)
    at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373)
    at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182)
    at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655)
    at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622)
    at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165)

Unfortunatly I cannot share the code, since I only noticed it later and it probably happened during code editing.

Steps to Reproduce

No response

Affected Version(s)

Swan Lake 9.2

OS, DB, other environment details and versions

Windows 11

Related area

-> Editor

Related issue(s) (optional)

No response

Suggested label(s) (optional)

No response

Suggested assignee(s) (optional)

No response

LakshanWeerasinghe commented 1 month ago

@Shadow-Devil can you provide the code snippet which gave this error?

Shadow-Devil commented 1 month ago

Unfortunatly not. It happened during editing but I dont know when exactly. I cannot reproduce this currently. If it happens again, I will provide the code snippet.