ballerina-platform / ballerina-lang

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

Completion fails for some error cases #29569

Closed rasika closed 3 years ago

rasika commented 3 years ago

Description: try to get completions for e.

sql:ExecutionResult|sql:Error execute = dbClient->execute(
        "CREATE TABLE IF NOT EXISTS ORDER " + "(ID INTEGER, BALANCE DECIMAL, " + "PRIMARY KEY(id))");
        if (execute is sql:Error) {
            sql:Error e = <sql:Error>execute;
            e.
            // log:printError("Initializing table failed!", );
        }

Error:

[Error - 12:33:49 PM] Operation 'text/completion' failed! {uri: '/Users/rasika/Documents/WSO2/projects/bal-order-processing/main.bal', [20:15], error: 'No value present'}
java.util.NoSuchElementException: No value present
    at java.base/java.util.Optional.orElseThrow(Optional.java:382)
    at org.ballerinalang.langserver.completions.util.FieldAccessCompletionResolver.getSymbolByName(FieldAccessCompletionResolver.java:166)
    at org.ballerinalang.langserver.completions.util.FieldAccessCompletionResolver.transform(FieldAccessCompletionResolver.java:73)
    at org.ballerinalang.langserver.completions.util.FieldAccessCompletionResolver.transform(FieldAccessCompletionResolver.java:62)
    at io.ballerina.compiler.syntax.tree.SimpleNameReferenceNode.apply(SimpleNameReferenceNode.java:46)
    at org.ballerinalang.langserver.completions.util.FieldAccessCompletionResolver.getVisibleEntries(FieldAccessCompletionResolver.java:159)
    at org.ballerinalang.langserver.completions.providers.context.FieldAccessContext.getEntries(FieldAccessContext.java:54)
    at org.ballerinalang.langserver.completions.providers.context.FieldAccessExpressionNodeContext.getCompletions(FieldAccessExpressionNodeContext.java:42)
    at org.ballerinalang.langserver.completions.providers.context.FieldAccessExpressionNodeContext.getCompletions(FieldAccessExpressionNodeContext.java:32)
    at org.ballerinalang.langserver.completions.util.CompletionUtil.route(CompletionUtil.java:99)
    at org.ballerinalang.langserver.completions.util.CompletionUtil.getCompletionItems(CompletionUtil.java:56)
    at org.ballerinalang.langserver.completions.BallerinaCompletionExtension.execute(BallerinaCompletionExtension.java:51)
    at org.ballerinalang.langserver.completions.BallerinaCompletionExtension.execute(BallerinaCompletionExtension.java:37)
    at org.ballerinalang.langserver.LangExtensionDelegator.completion(LangExtensionDelegator.java:92)
    at org.ballerinalang.langserver.BallerinaTextDocumentService.lambda$completion$0(BallerinaTextDocumentService.java:139)
    at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700)
    at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1692)
    at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
    at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
    at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
    at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
    at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)

Affected Versions: 2.0.0-SLA3

nadeeshaan commented 3 years ago

Checked in the latest master and this issue has been fixed. Hence closing the issue