diff --git a/language-server/modules/langserver-core/src/main/java/org/ballerinalang/langserver/signature/SignatureHelpUtil.java b/language-server/modules/langserver-core/src/main/java/org/ballerinalang/langserver/signature/SignatureHelpUtil.java index d5e1b2542e84..52c6c7ca6d56 100644 --- a/language-server/modules/langserver-core/src/main/java/org/ballerinalang/langserver/signature/SignatureHelpUtil.java +++ b/language-server/modules/langserver-core/src/main/java/org/ballerinalang/langserver/signature/SignatureHelpUtil.java @@ -30,6 +30,7 @@ import org.ballerinalang.langserver.completions.SymbolInfo; import org.ballerinalang.langserver.sourceprune.SourcePruneKeys; import org.ballerinalang.model.elements.MarkdownDocAttachment; +import org.ballerinalang.model.tree.IdentifierNode; import org.eclipse.lsp4j.MarkupContent; import org.eclipse.lsp4j.ParameterInformation; import org.eclipse.lsp4j.SignatureInformation; @@ -355,6 +356,30 @@ public static SignatureInformation getSignatureInformation(BInvokableSymbol bInv return signatureInformation; } + private static String getFullyQualifiedName(BLangInvocation bLangInvocation, LSServiceOperationContext context) { + String result = bLangInvocation.getName().getValue(); + // If there's a object ref + if (bLangInvocation.getExpression() instanceof BLangSimpleVarRef) { + result = ((BLangSimpleVarRef) bLangInvocation.getExpression()).variableName + "." + result; + } + + // Add module import prefix, if necessary + return addPackagePrefix(bLangInvocation.getPackageAlias(), context, result); + } + + private static String addPackagePrefix(IdentifierNode identifierNode, LSServiceOperationContext context, + String nodeName) { + String pkgAlias = identifierNode.getValue(); + if (!pkgAlias.isEmpty()) { + BLangPackage pkg = context.get(DocumentServiceKeys.CURRENT_BLANG_PACKAGE_CONTEXT_KEY); + Optional optImport = CommonUtil.getCurrentFileImports(pkg, context).stream() + .filter(p -> pkgAlias.equals(p.alias.value)) + .findFirst(); + nodeName = (optImport.isPresent() ? optImport.get().getQualifiedPackageName() : pkgAlias) + ":" + nodeName; + } + return nodeName; + } + /** * Get the required signature information filled model. *