diff --git a/flow-model-generator/modules/flow-model-generator-core/src/main/java/io/ballerina/flowmodelgenerator/core/TypesManager.java b/flow-model-generator/modules/flow-model-generator-core/src/main/java/io/ballerina/flowmodelgenerator/core/TypesManager.java index 4ea0ace860..f531104e1f 100644 --- a/flow-model-generator/modules/flow-model-generator-core/src/main/java/io/ballerina/flowmodelgenerator/core/TypesManager.java +++ b/flow-model-generator/modules/flow-model-generator-core/src/main/java/io/ballerina/flowmodelgenerator/core/TypesManager.java @@ -207,10 +207,12 @@ public TypeDataWithRefs getTypeDataWithRefs(TypeDefinitionSymbol typeDefSymbol) * * @param typeSymbol the type symbol to get the record selector type for * @param module the module to resolve the type symbol in + * @param isDependentType whether the type symbol is the parent type for the record selector + * (i.e. the dependent record type) * @return the record selector type for the given type symbol, or null if the type * symbol is not a record or if the record selector type cannot be generated */ - public RecordSelectorType getRecordSelectorType(TypeSymbol typeSymbol, Module module) { + public RecordSelectorType getRecordSelectorType(TypeSymbol typeSymbol, Module module, boolean isDependentType) { TypeTransformer typeTransformer = new TypeTransformer(module); TypeData.TypeDataBuilder typeDataBuilder = new TypeData.TypeDataBuilder(); Object transformedType = typeTransformer.transform(typeSymbol, typeDataBuilder); @@ -243,7 +245,17 @@ public RecordSelectorType getRecordSelectorType(TypeSymbol typeSymbol, Module mo // the same package (via CommonUtils.isWithinPackage), so it serves as the same-package predicate. for (Object ref : refs.values()) { if (ref instanceof TypeData refTypeData && refTypeData.editable()) { - result.add(refTypeData); + if (isDependentType) { + // If this is the dependent type (i.e. the record type being selected into), we want to ignore + // line range information + result.add(refTypeData.toBuilder() + .codedata() + .lineRange(null) + .stepOut() + .build()); + } else { + result.add(refTypeData); + } } } @@ -312,6 +324,7 @@ public static RecordSelectorType mergeWithTargetVarRecordSelectorType(RecordSele updatedTypeNames.put(targetMemberTypeName, new ReferenceTypeInfo(sourceMemberTypeName, sourceMemberCodedata)); memberBuilder.typeName(sourceMemberTypeName) + .refs(sourceMember.get().refs()) .type(sourceMember.get().type()); } mergedMembers.add(memberBuilder @@ -430,7 +443,7 @@ public List getTextEditsForRecordSelectorTypes(RecordSelectorType reco .findFirst(); if (field.isPresent()) { if (referencedType.metadata() != null && referencedTypeName.equals(referencedType.metadata().label())) { - String newTypeName = typePrefix + capitalize(getTypeName(referencedTypeName)) + "Type"; + String newTypeName = typePrefix + capitalize(getTypeName(field.get().name())) + "Type"; TypeData updatedRefType = referencedType.toBuilder() .name(newTypeName) .build(); diff --git a/flow-model-generator/modules/flow-model-generator-core/src/main/java/io/ballerina/flowmodelgenerator/core/model/node/CallBuilder.java b/flow-model-generator/modules/flow-model-generator-core/src/main/java/io/ballerina/flowmodelgenerator/core/model/node/CallBuilder.java index b4417537fe..c3e22c3d19 100644 --- a/flow-model-generator/modules/flow-model-generator-core/src/main/java/io/ballerina/flowmodelgenerator/core/model/node/CallBuilder.java +++ b/flow-model-generator/modules/flow-model-generator-core/src/main/java/io/ballerina/flowmodelgenerator/core/model/node/CallBuilder.java @@ -213,7 +213,7 @@ private static void addRecordFieldSelector(ParameterData paramData, Module modul // RECORD_FIELD_SELECTOR and provide the necessary type models for it. TypesManager typesManager = new TypesManager(module.document(module.documentIds().iterator().next())); RecordSelectorType recordSelectorType = typesManager.getRecordSelectorType(paramData.typeSymbol(), - module); + module, true); if (recordSelectorType != null && targetVarType != null) { TypeSymbol recordTargetVarType = targetVarType; @@ -223,7 +223,7 @@ private static void addRecordFieldSelector(ParameterData paramData, Module modul } if (CommonUtil.getRawType(recordTargetVarType).typeKind().equals(TypeDescKind.RECORD)) { RecordSelectorType targetVarRecordSelectorType = typesManager.getRecordSelectorType( - recordTargetVarType, module); + recordTargetVarType, module, false); if (targetVarRecordSelectorType != null) { recordSelectorType = mergeWithTargetVarRecordSelectorType(targetVarRecordSelectorType, recordSelectorType); diff --git a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/config/resource_action_call-persist-get-album-by-id.json b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/config/resource_action_call-persist-get-album-by-id.json index 7f85fff1d4..00f578d732 100644 --- a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/config/resource_action_call-persist-get-album-by-id.json +++ b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/config/resource_action_call-persist-get-album-by-id.json @@ -455,17 +455,9 @@ }, "codedata": { "node": "RECORD", - "lineRange": { - "fileName": "types.bal", - "startLine": { - "line": 8, - "offset": 12 - }, - "endLine": { - "line": 8, - "offset": 32 - } - } + "id": 0, + "isNew": false, + "data": {} }, "properties": { "name": { @@ -634,17 +626,9 @@ }, "codedata": { "node": "RECORD", - "lineRange": { - "fileName": "types.bal", - "startLine": { - "line": 52, - "offset": 12 - }, - "endLine": { - "line": 52, - "offset": 29 - } - } + "id": 0, + "isNew": false, + "data": {} }, "properties": { "name": { @@ -813,17 +797,9 @@ }, "codedata": { "node": "RECORD", - "lineRange": { - "fileName": "types.bal", - "startLine": { - "line": 30, - "offset": 12 - }, - "endLine": { - "line": 30, - "offset": 35 - } - } + "id": 0, + "isNew": false, + "data": {} }, "properties": { "name": { diff --git a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/config/resource_action_call-persist-get-albumrating.json b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/config/resource_action_call-persist-get-albumrating.json index 38bf383036..2f1fd37e77 100644 --- a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/config/resource_action_call-persist-get-albumrating.json +++ b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/config/resource_action_call-persist-get-albumrating.json @@ -467,17 +467,9 @@ }, "codedata": { "node": "RECORD", - "lineRange": { - "fileName": "types.bal", - "startLine": { - "line": 52, - "offset": 12 - }, - "endLine": { - "line": 52, - "offset": 29 - } - } + "id": 0, + "isNew": false, + "data": {} }, "properties": { "name": { @@ -646,17 +638,9 @@ }, "codedata": { "node": "RECORD", - "lineRange": { - "fileName": "types.bal", - "startLine": { - "line": 30, - "offset": 12 - }, - "endLine": { - "line": 30, - "offset": 35 - } - } + "id": 0, + "isNew": false, + "data": {} }, "properties": { "name": { diff --git a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/config/resource_action_call-persist-get-albums-with-mixed-args.json b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/config/resource_action_call-persist-get-albums-with-mixed-args.json index dd71e2898e..dba7f5e259 100644 --- a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/config/resource_action_call-persist-get-albums-with-mixed-args.json +++ b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/config/resource_action_call-persist-get-albums-with-mixed-args.json @@ -510,17 +510,9 @@ }, "codedata": { "node": "RECORD", - "lineRange": { - "fileName": "types.bal", - "startLine": { - "line": 8, - "offset": 12 - }, - "endLine": { - "line": 8, - "offset": 32 - } - } + "id": 0, + "isNew": false, + "data": {} }, "properties": { "name": { @@ -689,17 +681,9 @@ }, "codedata": { "node": "RECORD", - "lineRange": { - "fileName": "types.bal", - "startLine": { - "line": 52, - "offset": 12 - }, - "endLine": { - "line": 52, - "offset": 29 - } - } + "id": 0, + "isNew": false, + "data": {} }, "properties": { "name": { @@ -868,17 +852,9 @@ }, "codedata": { "node": "RECORD", - "lineRange": { - "fileName": "types.bal", - "startLine": { - "line": 30, - "offset": 12 - }, - "endLine": { - "line": 30, - "offset": 35 - } - } + "id": 0, + "isNew": false, + "data": {} }, "properties": { "name": { diff --git a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/config/resource_action_call-persist-get-albums.json b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/config/resource_action_call-persist-get-albums.json index d7f16a1483..2e17c2cfa1 100644 --- a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/config/resource_action_call-persist-get-albums.json +++ b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/config/resource_action_call-persist-get-albums.json @@ -510,17 +510,9 @@ }, "codedata": { "node": "RECORD", - "lineRange": { - "fileName": "types.bal", - "startLine": { - "line": 8, - "offset": 12 - }, - "endLine": { - "line": 8, - "offset": 32 - } - } + "id": 0, + "isNew": false, + "data": {} }, "properties": { "name": { @@ -689,17 +681,9 @@ }, "codedata": { "node": "RECORD", - "lineRange": { - "fileName": "types.bal", - "startLine": { - "line": 52, - "offset": 12 - }, - "endLine": { - "line": 52, - "offset": 29 - } - } + "id": 0, + "isNew": false, + "data": {} }, "properties": { "name": { @@ -868,17 +852,9 @@ }, "codedata": { "node": "RECORD", - "lineRange": { - "fileName": "types.bal", - "startLine": { - "line": 30, - "offset": 12 - }, - "endLine": { - "line": 30, - "offset": 35 - } - } + "id": 0, + "isNew": false, + "data": {} }, "properties": { "name": { diff --git a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/config/resource_action_call-persist-get-purchases-with-arg.json b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/config/resource_action_call-persist-get-purchases-with-arg.json index 3616e6e2b4..8ec05ed644 100644 --- a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/config/resource_action_call-persist-get-purchases-with-arg.json +++ b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/config/resource_action_call-persist-get-purchases-with-arg.json @@ -349,17 +349,9 @@ }, "codedata": { "node": "RECORD", - "lineRange": { - "fileName": "types.bal", - "startLine": { - "line": 8, - "offset": 12 - }, - "endLine": { - "line": 8, - "offset": 32 - } - } + "id": 0, + "isNew": false, + "data": {} }, "properties": { "name": { @@ -528,17 +520,9 @@ }, "codedata": { "node": "RECORD", - "lineRange": { - "fileName": "types.bal", - "startLine": { - "line": 52, - "offset": 12 - }, - "endLine": { - "line": 52, - "offset": 29 - } - } + "id": 0, + "isNew": false, + "data": {} }, "properties": { "name": { diff --git a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/config/resource_action_call-persist-get-ratings-with-named-arg.json b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/config/resource_action_call-persist-get-ratings-with-named-arg.json index 9438339f8b..3f853f43f4 100644 --- a/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/config/resource_action_call-persist-get-ratings-with-named-arg.json +++ b/flow-model-generator/modules/flow-model-generator-ls-extension/src/test/resources/node_template/config/resource_action_call-persist-get-ratings-with-named-arg.json @@ -413,17 +413,9 @@ }, "codedata": { "node": "RECORD", - "lineRange": { - "fileName": "types.bal", - "startLine": { - "line": 52, - "offset": 12 - }, - "endLine": { - "line": 52, - "offset": 29 - } - } + "id": 0, + "isNew": false, + "data": {} }, "properties": { "name": { @@ -592,17 +584,9 @@ }, "codedata": { "node": "RECORD", - "lineRange": { - "fileName": "types.bal", - "startLine": { - "line": 30, - "offset": 12 - }, - "endLine": { - "line": 30, - "offset": 35 - } - } + "id": 0, + "isNew": false, + "data": {} }, "properties": { "name": {