ballerina-platform / ballerina-lang

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

Calling semantic API after desugar results in Bad Sad Error in observability flow #27510

Closed niveathika closed 3 years ago

niveathika commented 3 years ago

Description: $subject

Sample: https://github.com/ballerina-platform/ballerina-distribution/blob/master/examples/jdbc-parameterized-query/jdbc_parameterized_query.bal

Noticed the failures after https://github.com/ballerina-platform/ballerina-lang/pull/27487 was merged.

Stacktrace

[2020-12-15 23:43:23,111] SEVERE {b7a.log.crash} - class org.wso2.ballerinalang.compiler.semantics.model.symbols.BObjectTypeSymbol cannot be cast to class org.wso2.ballerinalang.compiler.semantics.model.symbols.BClassSymbol (org.wso2.ballerinalang.compiler.semantics.model.symbols.BObjectTypeSymbol and org.wso2.ballerinalang.compiler.semantics.model.symbols.BClassSymbol are in unnamed module of loader 'app') 
java.lang.ClassCastException: class org.wso2.ballerinalang.compiler.semantics.model.symbols.BObjectTypeSymbol cannot be cast to class org.wso2.ballerinalang.compiler.semantics.model.symbols.BClassSymbol (org.wso2.ballerinalang.compiler.semantics.model.symbols.BObjectTypeSymbol and org.wso2.ballerinalang.compiler.semantics.model.symbols.BClassSymbol are in unnamed module of loader 'app')
    at io.ballerina.compiler.api.impl.symbols.TypesFactory.getTypeDescriptor(TypesFactory.java:145)
    at io.ballerina.compiler.api.impl.symbols.BallerinaTypeReferenceTypeSymbol.typeDescriptor(BallerinaTypeReferenceTypeSymbol.java:53)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.getRawType(SyntaxTreeMapGenerator.java:198)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.transformSyntaxNode(SyntaxTreeMapGenerator.java:107)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.transformSyntaxNode(SyntaxTreeMapGenerator.java:62)
    at io.ballerina.compiler.syntax.tree.NodeTransformer.transform(NodeTransformer.java:432)
    at io.ballerina.compiler.syntax.tree.InterpolationNode.apply(InterpolationNode.java:54)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.apply(SyntaxTreeMapGenerator.java:276)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.transformSyntaxNode(SyntaxTreeMapGenerator.java:81)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.transformSyntaxNode(SyntaxTreeMapGenerator.java:62)
    at io.ballerina.compiler.syntax.tree.NodeTransformer.transform(NodeTransformer.java:404)
    at io.ballerina.compiler.syntax.tree.TemplateExpressionNode.apply(TemplateExpressionNode.java:59)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.apply(SyntaxTreeMapGenerator.java:276)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.transformSyntaxNode(SyntaxTreeMapGenerator.java:85)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.transformSyntaxNode(SyntaxTreeMapGenerator.java:62)
    at io.ballerina.compiler.syntax.tree.NodeTransformer.transform(NodeTransformer.java:76)
    at io.ballerina.compiler.syntax.tree.VariableDeclarationNode.apply(VariableDeclarationNode.java:67)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.apply(SyntaxTreeMapGenerator.java:276)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.transformSyntaxNode(SyntaxTreeMapGenerator.java:81)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.transformSyntaxNode(SyntaxTreeMapGenerator.java:62)
    at io.ballerina.compiler.syntax.tree.NodeTransformer.transform(NodeTransformer.java:316)
    at io.ballerina.compiler.syntax.tree.FunctionBodyBlockNode.apply(FunctionBodyBlockNode.java:59)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.apply(SyntaxTreeMapGenerator.java:276)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.transformSyntaxNode(SyntaxTreeMapGenerator.java:85)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.transformSyntaxNode(SyntaxTreeMapGenerator.java:62)
    at io.ballerina.compiler.syntax.tree.NodeTransformer.transform(NodeTransformer.java:48)
    at io.ballerina.compiler.syntax.tree.FunctionDefinitionNode.apply(FunctionDefinitionNode.java:71)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.apply(SyntaxTreeMapGenerator.java:276)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.transformSyntaxNode(SyntaxTreeMapGenerator.java:81)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.transformSyntaxNode(SyntaxTreeMapGenerator.java:62)
    at io.ballerina.compiler.syntax.tree.NodeTransformer.transform(NodeTransformer.java:44)
    at org.ballerinalang.diagramutil.DiagramUtil.getSyntaxTreeJSON(DiagramUtil.java:51)
    at org.ballerinalang.observability.anaylze.DefaultObservabilitySymbolCollector.process(DefaultObservabilitySymbolCollector.java:89)
    at io.ballerina.projects.JBallerinaBackend.emitExecutable(JBallerinaBackend.java:520)
    at io.ballerina.projects.JBallerinaBackend.emit(JBallerinaBackend.java:146)
    at io.ballerina.cli.task.CreateExecutableTask.execute(CreateExecutableTask.java:109)
    at io.ballerina.cli.TaskExecutor.executeTasks(TaskExecutor.java:40)
    at io.ballerina.cli.cmd.BuildCommand.execute(BuildCommand.java:238)
    at java.base/java.util.Optional.ifPresent(Optional.java:183)
    at org.ballerinalang.tool.Main.main(Main.java:57)
niveathika commented 3 years ago

Found similar issues for following bbes too, Class Definition https://github.com/ballerina-platform/ballerina-distribution/blob/master/examples/class-definition/class_definition.bal

Graphql with record https://github.com/ballerina-platform/ballerina-distribution/blob/master/examples/graphql-resources-with-record-values/graphql_resources_with_record_values.bal

[2020-12-16 01:59:22,799] SEVERE {b7a.log.crash} - null 
java.lang.StackOverflowError
    at java.base/java.lang.Class.getMethods(Class.java:1904)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.lambda$generateTypeJson$0(SyntaxTreeMapGenerator.java:207)
    at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:271)
    at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
    at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.generateTypeJson(SyntaxTreeMapGenerator.java:208)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.generateTypeJson(SyntaxTreeMapGenerator.java:241)
niveathika commented 3 years ago

Functional Iteration https://github.com/ballerina-platform/ballerina-distribution/blob/master/examples/functional-iteration/functional_iteration.bal

[2020-12-16 01:59:53,221] SEVERE {b7a.log.crash} - class org.wso2.ballerinalang.compiler.semantics.model.symbols.BVarSymbol cannot be cast to class org.wso2.ballerinalang.compiler.semantics.model.symbols.BInvokableSymbol (org.wso2.ballerinalang.compiler.semantics.model.symbols.BVarSymbol and org.wso2.ballerinalang.compiler.semantics.model.symbols.BInvokableSymbol are in unnamed module of loader 'app') 
java.lang.ClassCastException: class org.wso2.ballerinalang.compiler.semantics.model.symbols.BVarSymbol cannot be cast to class org.wso2.ballerinalang.compiler.semantics.model.symbols.BInvokableSymbol (org.wso2.ballerinalang.compiler.semantics.model.symbols.BVarSymbol and org.wso2.ballerinalang.compiler.semantics.model.symbols.BInvokableSymbol are in unnamed module of loader 'app')
    at io.ballerina.compiler.api.impl.SymbolFactory.getBCompiledSymbol(SymbolFactory.java:115)
    at io.ballerina.compiler.api.impl.BallerinaSemanticModel.symbol(BallerinaSemanticModel.java:138)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.transformSyntaxNode(SyntaxTreeMapGenerator.java:104)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.transformSyntaxNode(SyntaxTreeMapGenerator.java:62)
    at io.ballerina.compiler.syntax.tree.NodeTransformer.transform(NodeTransformer.java:332)
    at io.ballerina.compiler.syntax.tree.SimpleNameReferenceNode.apply(SimpleNameReferenceNode.java:46)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.apply(SyntaxTreeMapGenerator.java:276)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.transformSyntaxNode(SyntaxTreeMapGenerator.java:81)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.transformSyntaxNode(SyntaxTreeMapGenerator.java:62)
    at io.ballerina.compiler.syntax.tree.NodeTransformer.transform(NodeTransformer.java:556)
    at io.ballerina.compiler.syntax.tree.ImplicitAnonymousFunctionParameters.apply(ImplicitAnonymousFunctionParameters.java:54)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.apply(SyntaxTreeMapGenerator.java:276)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.transformSyntaxNode(SyntaxTreeMapGenerator.java:85)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.transformSyntaxNode(SyntaxTreeMapGenerator.java:62)
    at io.ballerina.compiler.syntax.tree.NodeTransformer.transform(NodeTransformer.java:560)
    at io.ballerina.compiler.syntax.tree.ImplicitAnonymousFunctionExpressionNode.apply(ImplicitAnonymousFunctionExpressionNode.java:54)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.apply(SyntaxTreeMapGenerator.java:276)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.transformSyntaxNode(SyntaxTreeMapGenerator.java:85)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.transformSyntaxNode(SyntaxTreeMapGenerator.java:62)
    at io.ballerina.compiler.syntax.tree.NodeTransformer.transform(NodeTransformer.java:220)
    at io.ballerina.compiler.syntax.tree.PositionalArgumentNode.apply(PositionalArgumentNode.java:46)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.apply(SyntaxTreeMapGenerator.java:276)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.transformSyntaxNode(SyntaxTreeMapGenerator.java:81)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.transformSyntaxNode(SyntaxTreeMapGenerator.java:62)
    at io.ballerina.compiler.syntax.tree.NodeTransformer.transform(NodeTransformer.java:160)
    at io.ballerina.compiler.syntax.tree.MethodCallExpressionNode.apply(MethodCallExpressionNode.java:66)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.apply(SyntaxTreeMapGenerator.java:276)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.transformSyntaxNode(SyntaxTreeMapGenerator.java:85)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.transformSyntaxNode(SyntaxTreeMapGenerator.java:62)
    at io.ballerina.compiler.syntax.tree.NodeTransformer.transform(NodeTransformer.java:160)
    at io.ballerina.compiler.syntax.tree.MethodCallExpressionNode.apply(MethodCallExpressionNode.java:66)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.apply(SyntaxTreeMapGenerator.java:276)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.transformSyntaxNode(SyntaxTreeMapGenerator.java:85)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.transformSyntaxNode(SyntaxTreeMapGenerator.java:62)
    at io.ballerina.compiler.syntax.tree.NodeTransformer.transform(NodeTransformer.java:160)
    at io.ballerina.compiler.syntax.tree.MethodCallExpressionNode.apply(MethodCallExpressionNode.java:66)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.apply(SyntaxTreeMapGenerator.java:276)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.transformSyntaxNode(SyntaxTreeMapGenerator.java:85)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.transformSyntaxNode(SyntaxTreeMapGenerator.java:62)
    at io.ballerina.compiler.syntax.tree.NodeTransformer.transform(NodeTransformer.java:92)
    at io.ballerina.compiler.syntax.tree.ExpressionStatementNode.apply(ExpressionStatementNode.java:50)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.apply(SyntaxTreeMapGenerator.java:276)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.transformSyntaxNode(SyntaxTreeMapGenerator.java:81)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.transformSyntaxNode(SyntaxTreeMapGenerator.java:62)
    at io.ballerina.compiler.syntax.tree.NodeTransformer.transform(NodeTransformer.java:316)
    at io.ballerina.compiler.syntax.tree.FunctionBodyBlockNode.apply(FunctionBodyBlockNode.java:59)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.apply(SyntaxTreeMapGenerator.java:276)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.transformSyntaxNode(SyntaxTreeMapGenerator.java:85)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.transformSyntaxNode(SyntaxTreeMapGenerator.java:62)
    at io.ballerina.compiler.syntax.tree.NodeTransformer.transform(NodeTransformer.java:48)
    at io.ballerina.compiler.syntax.tree.FunctionDefinitionNode.apply(FunctionDefinitionNode.java:71)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.apply(SyntaxTreeMapGenerator.java:276)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.transformSyntaxNode(SyntaxTreeMapGenerator.java:81)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.transformSyntaxNode(SyntaxTreeMapGenerator.java:62)
    at io.ballerina.compiler.syntax.tree.NodeTransformer.transform(NodeTransformer.java:44)
    at org.ballerinalang.diagramutil.DiagramUtil.getSyntaxTreeJSON(DiagramUtil.java:51)
    at org.ballerinalang.observability.anaylze.DefaultObservabilitySymbolCollector.process(DefaultObservabilitySymbolCollector.java:89)
    at io.ballerina.projects.JBallerinaBackend.emitExecutable(JBallerinaBackend.java:520)
    at io.ballerina.projects.JBallerinaBackend.emit(JBallerinaBackend.java:146)
    at io.ballerina.cli.task.CreateExecutableTask.execute(CreateExecutableTask.java:109)
    at io.ballerina.cli.TaskExecutor.executeTasks(TaskExecutor.java:40)
    at io.ballerina.cli.cmd.BuildCommand.execute(BuildCommand.java:238)
    at java.base/java.util.Optional.ifPresent(Optional.java:183)
    at org.ballerinalang.tool.Main.main(Main.java:57)
niveathika commented 3 years ago

GraphL with scalar values https://github.com/ballerina-platform/ballerina-distribution/blob/master/examples/graphql-resources-with-scalar-values/graphql_resources_with_scalar_values.bal

[2020-12-16 02:09:44,671] SEVERE {b7a.log.crash} - null 
java.lang.StackOverflowError
    at java.base/java.util.HashMap.putVal(HashMap.java:624)
    at java.base/java.util.HashMap.put(HashMap.java:607)
    at java.base/java.util.HashSet.add(HashSet.java:220)
    at org.apache.commons.lang3.ClassUtils.getAllInterfaces(ClassUtils.java:540)
    at org.apache.commons.lang3.ClassUtils.getAllInterfaces(ClassUtils.java:524)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.generateTypeJson(SyntaxTreeMapGenerator.java:206)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.generateTypeJson(SyntaxTreeMapGenerator.java:235)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.generateTypeJson(SyntaxTreeMapGenerator.java:241)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.generateTypeJson(SyntaxTreeMapGenerator.java:235)
    at org.ballerinalang.diagramutil.SyntaxTreeMapGenerator.generateTypeJson(SyntaxTreeMapGenerator.java:241)
niveathika commented 3 years ago

Disabled BBE tests for now,

https://github.com/ballerina-platform/ballerina-distribution/pull/1055/commits/0b3c0a160d24baac3cf59664e59feec0b1ff5686

niveathika commented 3 years ago

This is fixed and bbe tests enabled in https://github.com/ballerina-platform/ballerina-distribution/pull/1079/commits/51d7bd72e6add64b772babd9073bdb35afc24b7c