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..f49ce6e5d1 --- /dev/null +++ b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/delete_mapping/config/variable6.json @@ -0,0 +1,41 @@ +{ + "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}, {i: 1}, {i: 2}]\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..b088eee437 --- /dev/null +++ b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/delete_mapping/config/variable7.json @@ -0,0 +1,41 @@ +{ + "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}, {i: 1}, {i: 2}]\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..4c85f5cdc4 --- /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 { + + } +}