From d0d0e67aee2561d73a60cbfe8ae784f0559e1443 Mon Sep 17 00:00:00 2001 From: Manuranga Perera Date: Tue, 21 Nov 2023 10:37:57 +0530 Subject: [PATCH] Replace duplicate symbol in owner --- .../compiler/desugar/ASTBuilderUtil.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/compiler/ballerina-lang/src/main/java/org/wso2/ballerinalang/compiler/desugar/ASTBuilderUtil.java b/compiler/ballerina-lang/src/main/java/org/wso2/ballerinalang/compiler/desugar/ASTBuilderUtil.java index 3d39deb5d241..062396f0448c 100644 --- a/compiler/ballerina-lang/src/main/java/org/wso2/ballerinalang/compiler/desugar/ASTBuilderUtil.java +++ b/compiler/ballerina-lang/src/main/java/org/wso2/ballerinalang/compiler/desugar/ASTBuilderUtil.java @@ -32,9 +32,11 @@ import org.wso2.ballerinalang.compiler.semantics.model.Scope; import org.wso2.ballerinalang.compiler.semantics.model.SymbolTable; import org.wso2.ballerinalang.compiler.semantics.model.symbols.BAnnotationAttachmentSymbol; +import org.wso2.ballerinalang.compiler.semantics.model.symbols.BAttachedFunction; import org.wso2.ballerinalang.compiler.semantics.model.symbols.BInvokableSymbol; import org.wso2.ballerinalang.compiler.semantics.model.symbols.BObjectTypeSymbol; import org.wso2.ballerinalang.compiler.semantics.model.symbols.BOperatorSymbol; +import org.wso2.ballerinalang.compiler.semantics.model.symbols.BStructureTypeSymbol; import org.wso2.ballerinalang.compiler.semantics.model.symbols.BSymbol; import org.wso2.ballerinalang.compiler.semantics.model.symbols.BVarSymbol; import org.wso2.ballerinalang.compiler.semantics.model.symbols.Symbols; @@ -852,6 +854,16 @@ public static BInvokableSymbol duplicateInvokableSymbol(BInvokableSymbol invokab dupFuncSymbol.type = dupInvokableType; dupFuncSymbol.dependentGlobalVars = invokableSymbol.dependentGlobalVars; + if (!Symbols.isFlagOn(invokableSymbol.flags, Flags.ATTACHED)) { + return dupFuncSymbol; + } + List attachedFuncs = ((BStructureTypeSymbol) invokableSymbol.owner).attachedFuncs; + for (BAttachedFunction attachedFunc : attachedFuncs) { + if (attachedFunc.symbol == invokableSymbol) { + attachedFunc.symbol = dupFuncSymbol; + break; + } + } return dupFuncSymbol; }