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; }