ballerina-platform / ballerina-library

The Ballerina Library
https://ballerina.io/learn/api-docs/ballerina/
Apache License 2.0
138 stars 56 forks source link

Update `FunctionBodyGenerator` for `NodeFactory.createOnFailClauseNode` change #6434

Open MaryamZi opened 11 months ago

MaryamZi commented 11 months ago

Description: With https://github.com/ballerina-platform/ballerina-lang/pull/41049, we are adding support for error typed binding patterns in the on-fail clause.

With this, NodeFactory.createOnFailClauseNode changes from

    public static OnFailClauseNode createOnFailClauseNode(
            Token onKeyword,
            Token failKeyword,
            TypeDescriptorNode typeDescriptor,
            IdentifierToken failErrorName,
            BlockStatementNode blockStatement) {

to

    public static OnFailClauseNode createOnFailClauseNode(
            Token onKeyword,
            Token failKeyword,
            TypedBindingPatternNode typedBindingPattern,
            BlockStatementNode blockStatement) {

We need to update usage in https://github.com/ballerina-platform/graphql-tools/blob/main/graphql-code-generator/src/main/java/io/ballerina/graphql/generator/client/generator/ballerina/FunctionBodyGenerator.java#L281 and pass a typed binding pattern (similar to https://github.com/ballerina-platform/graphql-tools/blob/main/graphql-code-generator/src/main/java/io/ballerina/graphql/generator/client/generator/ballerina/FunctionBodyGenerator.java#L401) instead of the type descriptor and identifier separately.

Timestamped version with the change - 2201.8.0-20230720-214400-9518f4f5

We are planning on adding this to update 8.

MaryamZi commented 11 months ago
Diff ```diff $ git diff diff --git a/gradle.properties b/gradle.properties index 73551c9..9e8ec63 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,7 +3,7 @@ group=io.ballerina version=0.7.1-SNAPSHOT #dependency -ballerinaLangVersion=2201.7.0 +ballerinaLangVersion=2201.8.0-20230720-214400-9518f4f5 githubJohnrengelmanShadowVersion=5.2.0 underCouchDownloadVersion=4.0.4 researchgateReleaseVersion=2.8.0 diff --git a/graphql-code-generator/src/main/java/io/ballerina/graphql/generator/client/generator/ballerina/FunctionBodyGenerator.java b/graphql-code-generator/src/main/java/io/ballerina/graphql/generator/client/generator/ballerina/FunctionBodyGenerator.java index c219c78..3301530 100644 --- a/graphql-code-generator/src/main/java/io/ballerina/graphql/generator/client/generator/ballerina/FunctionBodyGenerator.java +++ b/graphql-code-generator/src/main/java/io/ballerina/graphql/generator/client/generator/ballerina/FunctionBodyGenerator.java @@ -269,7 +269,6 @@ public class FunctionBodyGenerator { createNodeList(nodes), createToken(CLOSE_BRACE_TOKEN)); TypeDescriptorNode varNode = NodeFactory.createTypeReferenceTypeDescNode(NodeFactory. createSimpleNameReferenceNode(createToken(VAR_KEYWORD))); - IdentifierToken errorParamName = createIdentifierToken("e"); // TODO : Revert this change after issue in graphql:HttpError is fixed ExpressionNode errorNode = NodeParser.parseExpression(" error(\"GraphQL Client " + "Error\", e, body = ())"); @@ -278,8 +277,10 @@ public class FunctionBodyGenerator { NodeList failNodeList = createNodeList(returnStatementNode); BlockStatementNode failBlockStatementNode = NodeFactory.createBlockStatementNode(createToken(OPEN_BRACE_TOKEN), failNodeList, createToken(CLOSE_BRACE_TOKEN)); + TypedBindingPatternNode typedBindingPatternNode = NodeFactory.createTypedBindingPatternNode(varNode, + NodeFactory.createCaptureBindingPatternNode(createIdentifierToken("e"))); OnFailClauseNode onFailClauseNode = NodeFactory.createOnFailClauseNode(createToken(ON_KEYWORD), - createToken(FAIL_KEYWORD), varNode, errorParamName, failBlockStatementNode); + createToken(FAIL_KEYWORD), typedBindingPatternNode, failBlockStatementNode); return NodeFactory.createDoStatementNode(createToken(DO_KEYWORD), doBlockStatementNode, onFailClauseNode); } ```
NipunaRanasinghe commented 10 months ago

Keeping this on-hold, as the related language side changes are expected to be shipped with U9.