From a9750fc4093a5449ad30c4795ca1530b0d286e96 Mon Sep 17 00:00:00 2001 From: pasindufernando1 Date: Mon, 8 Sep 2025 13:27:13 +0530 Subject: [PATCH 1/2] Refactor array element range decision logic in deletion --- .../core/DataMapManager.java | 4 +- .../extension/DataMappingDeleteTest.java | 2 + .../delete_mapping/config/variable6.json | 40 +++++++++++++++++++ .../delete_mapping/config/variable7.json | 40 +++++++++++++++++++ .../delete_mapping/source/variable5.bal | 18 +++++++++ 5 files changed, 102 insertions(+), 2 deletions(-) create mode 100644 flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/delete_mapping/config/variable6.json create mode 100644 flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/delete_mapping/config/variable7.json create mode 100644 flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/delete_mapping/source/variable5.bal diff --git a/flow-model-generator/modules/flow-model-generator-core/src/main/java/io/ballerina/flowmodelgenerator/core/DataMapManager.java b/flow-model-generator/modules/flow-model-generator-core/src/main/java/io/ballerina/flowmodelgenerator/core/DataMapManager.java index d19a0a9ef9..9294e41df8 100644 --- a/flow-model-generator/modules/flow-model-generator-core/src/main/java/io/ballerina/flowmodelgenerator/core/DataMapManager.java +++ b/flow-model-generator/modules/flow-model-generator-core/src/main/java/io/ballerina/flowmodelgenerator/core/DataMapManager.java @@ -1322,7 +1322,7 @@ private void genDeleteMappingSource(SemanticModel semanticModel, ExpressionNode textEdits.add(new TextEdit(CommonUtils.toRange(expr.lineRange()), "")); } else { if (memberIdx + 1 == expressions.size()) { - LinePosition startPos = expressions.get(memberIdx - 1).lineRange().startLine(); + LinePosition startPos = expressions.get(memberIdx - 1).lineRange().endLine(); LinePosition endPos = expr.lineRange().endLine(); textEdits.add(new TextEdit(CommonUtils.toRange(startPos, endPos), "")); } else if (memberIdx == 0) { @@ -1330,7 +1330,7 @@ private void genDeleteMappingSource(SemanticModel semanticModel, ExpressionNode LinePosition endPos = expressions.get(1).lineRange().startLine(); textEdits.add(new TextEdit(CommonUtils.toRange(startPos, endPos), "")); } else { - LinePosition startPos = expressions.get(memberIdx - 1).lineRange().startLine(); + LinePosition startPos = expressions.get(memberIdx - 1).lineRange().endLine(); LinePosition endPos = expr.lineRange().endLine(); textEdits.add(new TextEdit(CommonUtils.toRange(startPos, endPos), "")); } diff --git a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/java/io/ballerina/flowmodelgenerator/extension/DataMappingDeleteTest.java b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/java/io/ballerina/flowmodelgenerator/extension/DataMappingDeleteTest.java index 3f5601046e..ba5f57f54a 100644 --- a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/java/io/ballerina/flowmodelgenerator/extension/DataMappingDeleteTest.java +++ b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/java/io/ballerina/flowmodelgenerator/extension/DataMappingDeleteTest.java @@ -61,6 +61,8 @@ protected Object[] getConfigsList() { {Path.of("variable5.json")}, {Path.of("function_defn1.json")}, {Path.of("function_defn2.json")}, + {Path.of("variable6.json")}, + {Path.of("variable7.json")} }; } diff --git a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/delete_mapping/config/variable6.json b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/delete_mapping/config/variable6.json new file mode 100644 index 0000000000..973a6d70c5 --- /dev/null +++ b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/delete_mapping/config/variable6.json @@ -0,0 +1,40 @@ +{ + "source": "variable5.bal", + "description": "", + "codedata": { + "node": "VARIABLE", + "lineRange": { + "fileName": "variable5.bal", + "startLine": { + "line": 11, + "offset": 8 + }, + "endLine": { + "line": 13, + "offset": 10 + } + }, + "sourceCode": "ArrType arr2 = {\n rec: [{i: 0}]\n };" + }, + "mapping": { + "output": "arr2.rec.1" + }, + "targetField": "arr2", + "output": { + "variable5.bal": [ + { + "range": { + "start": { + "line": 12, + "character": 24 + }, + "end": { + "line": 12, + "character": 32 + } + }, + "newText": "" + } + ] + } +} diff --git a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/delete_mapping/config/variable7.json b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/delete_mapping/config/variable7.json new file mode 100644 index 0000000000..aaaa6dee8d --- /dev/null +++ b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/delete_mapping/config/variable7.json @@ -0,0 +1,40 @@ +{ + "source": "variable5.bal", + "description": "", + "codedata": { + "node": "VARIABLE", + "lineRange": { + "fileName": "variable5.bal", + "startLine": { + "line": 11, + "offset": 8 + }, + "endLine": { + "line": 13, + "offset": 10 + } + }, + "sourceCode": "ArrType arr2 = {\n rec: [{i: 0}]\n };" + }, + "mapping": { + "output": "arr2.rec.2" + }, + "targetField": "arr2", + "output": { + "variable5.bal": [ + { + "range": { + "start": { + "line": 12, + "character": 32 + }, + "end": { + "line": 12, + "character": 40 + } + }, + "newText": "" + } + ] + } +} diff --git a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/delete_mapping/source/variable5.bal b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/delete_mapping/source/variable5.bal new file mode 100644 index 0000000000..c5178003d1 --- /dev/null +++ b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/delete_mapping/source/variable5.bal @@ -0,0 +1,18 @@ +type RecType record {| + int i; +|}; + +type ArrType record {| + RecType[] rec; +|} + +public function main() returns error? { + do { + ArrType arr1 = {}; + ArrType arr2 = { + rec: [{i: 0}, {i: 1}, {i: 2}] + }; + } on fail error e { + + } +} \ No newline at end of file From 747790dbdd8fccf56217f61fa284a59c45a80770 Mon Sep 17 00:00:00 2001 From: pasindufernando1 Date: Mon, 8 Sep 2025 13:33:40 +0530 Subject: [PATCH 2/2] Fix PR suggestions --- .../src/test/resources/delete_mapping/config/variable6.json | 3 ++- .../src/test/resources/delete_mapping/config/variable7.json | 3 ++- .../src/test/resources/delete_mapping/source/variable5.bal | 4 ++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/delete_mapping/config/variable6.json b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/delete_mapping/config/variable6.json index 973a6d70c5..f49ce6e5d1 100644 --- a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/delete_mapping/config/variable6.json +++ b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/delete_mapping/config/variable6.json @@ -14,7 +14,7 @@ "offset": 10 } }, - "sourceCode": "ArrType arr2 = {\n rec: [{i: 0}]\n };" + "sourceCode": "ArrType arr2 = {\n rec: [{i: 0}, {i: 1}, {i: 2}]\n };" }, "mapping": { "output": "arr2.rec.1" @@ -38,3 +38,4 @@ ] } } + diff --git a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/delete_mapping/config/variable7.json b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/delete_mapping/config/variable7.json index aaaa6dee8d..b088eee437 100644 --- a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/delete_mapping/config/variable7.json +++ b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/delete_mapping/config/variable7.json @@ -14,7 +14,7 @@ "offset": 10 } }, - "sourceCode": "ArrType arr2 = {\n rec: [{i: 0}]\n };" + "sourceCode": "ArrType arr2 = {\n rec: [{i: 0}, {i: 1}, {i: 2}]\n };" }, "mapping": { "output": "arr2.rec.2" @@ -38,3 +38,4 @@ ] } } + diff --git a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/delete_mapping/source/variable5.bal b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/delete_mapping/source/variable5.bal index c5178003d1..4c85f5cdc4 100644 --- a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/delete_mapping/source/variable5.bal +++ b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/delete_mapping/source/variable5.bal @@ -4,7 +4,7 @@ type RecType record {| type ArrType record {| RecType[] rec; -|} +|}; public function main() returns error? { do { @@ -15,4 +15,4 @@ public function main() returns error? { } on fail error e { } -} \ No newline at end of file +}