Search in sources :

Example 1 with NameReference

use of org.ballerinalang.plugins.idea.psi.references.NameReference in project ballerina by ballerina-lang.

the class IdentifierPSINode method suggestReferenceTypeForInvocation.

@Nullable
private PsiReference suggestReferenceTypeForInvocation() {
    PsiElement parent = getParent();
    PsiElement prevSibling = parent.getPrevSibling();
    if (prevSibling == null) {
        return null;
    }
    PsiReference reference = null;
    if (parent instanceof AnyIdentifierNameNode) {
        InvocationNode invocationNode = PsiTreeUtil.getParentOfType(parent, InvocationNode.class);
        if (invocationNode != null) {
            PsiElement invocationNodePrevSibling = invocationNode.getPrevSibling();
            if (invocationNodePrevSibling != null) {
                if (invocationNodePrevSibling instanceof VariableReferenceNode) {
                    InvocationNode node = PsiTreeUtil.getChildOfType(invocationNodePrevSibling, InvocationNode.class);
                    if (node != null) {
                        IdentifierPSINode identifier = PsiTreeUtil.findChildOfType(node, IdentifierPSINode.class);
                        if (identifier != null) {
                            reference = identifier.findReferenceAt(identifier.getTextLength());
                        }
                    } else {
                        NameReferenceNode nameReferenceNode = PsiTreeUtil.getChildOfType(invocationNodePrevSibling, NameReferenceNode.class);
                        if (nameReferenceNode != null) {
                            IdentifierPSINode identifier = PsiTreeUtil.findChildOfType(nameReferenceNode, IdentifierPSINode.class);
                            if (identifier != null) {
                                reference = identifier.findReferenceAt(identifier.getTextLength());
                            }
                        }
                    }
                } else {
                    reference = invocationNodePrevSibling.findReferenceAt(invocationNodePrevSibling.getTextLength());
                }
            }
        }
    } else if (prevSibling instanceof VariableReferenceNode) {
        InvocationNode invocationNode = PsiTreeUtil.getChildOfType(prevSibling, InvocationNode.class);
        if (invocationNode != null) {
            IdentifierPSINode identifier = PsiTreeUtil.getChildOfType(invocationNode, IdentifierPSINode.class);
            if (identifier == null) {
                return null;
            }
            reference = identifier.findReferenceAt(identifier.getTextLength());
        }
        FieldNode fieldNode = PsiTreeUtil.getChildOfType(prevSibling, FieldNode.class);
        if (fieldNode != null) {
            IdentifierPSINode identifier = PsiTreeUtil.getChildOfType(fieldNode, IdentifierPSINode.class);
            if (identifier == null) {
                return null;
            }
            reference = identifier.findReferenceAt(identifier.getTextLength());
        }
        FunctionInvocationNode functionInvocationNode = PsiTreeUtil.getChildOfType(prevSibling, FunctionInvocationNode.class);
        if (functionInvocationNode != null) {
            FunctionReferenceNode functionReferenceNode = PsiTreeUtil.getChildOfType(functionInvocationNode, FunctionReferenceNode.class);
            if (functionReferenceNode != null) {
                return new NameReference(this);
            }
        }
        if (reference == null) {
            reference = prevSibling.findReferenceAt(prevSibling.getTextLength());
        }
    } else {
        reference = prevSibling.findReferenceAt(prevSibling.getTextLength());
    }
    if (reference == null) {
        return null;
    }
    PsiElement resolvedElement = reference.resolve();
    if (resolvedElement == null) {
        return null;
    }
    PsiElement definitionNode = resolvedElement.getParent();
    if (definitionNode instanceof VariableDefinitionNode) {
        ConnectorDefinitionNode connectorDefinitionNode = BallerinaPsiImplUtil.resolveConnectorFromVariableDefinitionNode((definitionNode));
        if (connectorDefinitionNode != null) {
            return new ActionInvocationReference(this);
        }
    } else if (definitionNode instanceof EndpointDeclarationNode) {
        ConnectorReferenceNode connectorReferenceNode = PsiTreeUtil.getChildOfType(definitionNode, ConnectorReferenceNode.class);
        if (connectorReferenceNode != null) {
            return new ActionInvocationReference(this);
        }
    } else if (definitionNode instanceof FunctionDefinitionNode) {
        return new NameReference(this);
    }
    reference = checkAndSuggestReferenceAfterDot();
    if (reference != null) {
        return reference;
    }
    return new InvocationReference(this);
}
Also used : PackageNameReference(org.ballerinalang.plugins.idea.psi.references.PackageNameReference) NameReference(org.ballerinalang.plugins.idea.psi.references.NameReference) ActionInvocationReference(org.ballerinalang.plugins.idea.psi.references.ActionInvocationReference) PsiReference(com.intellij.psi.PsiReference) ActionInvocationReference(org.ballerinalang.plugins.idea.psi.references.ActionInvocationReference) InvocationReference(org.ballerinalang.plugins.idea.psi.references.InvocationReference) PsiElement(com.intellij.psi.PsiElement) Nullable(org.jetbrains.annotations.Nullable)

Example 2 with NameReference

use of org.ballerinalang.plugins.idea.psi.references.NameReference in project ballerina by ballerina-lang.

the class IdentifierPSINode method getReference.

/**
 * Create and return a PsiReference object associated with this ID
 * node. The reference object will be asked to resolve this ref
 * by using the text of this node to identify the appropriate definition
 * site. The definition site is typically a subtree for a function
 * or variable definition whereas this reference is just to this ID
 * leaf node.
 * <p>
 * As the AST factory has no context and cannot create different kinds
 * of PsiNamedElement nodes according to context, every ID node
 * in the tree will be of this type. So, we distinguish references
 * from definitions or other uses by looking at context in this method
 * as we have parent (context) information.
 */
@Override
public PsiReference getReference() {
    PsiElement parent = getParent();
    IElementType elType = parent.getNode().getElementType();
    PsiElement prevVisibleLeaf;
    // do not return a reference for the ID nodes in a definition
    if (elType instanceof RuleIElementType) {
        XmlAttribNode xmlAttribNode = PsiTreeUtil.getParentOfType(parent, XmlAttribNode.class);
        switch(((RuleIElementType) elType).getRuleIndex()) {
            case RULE_packageName:
                if (xmlAttribNode != null) {
                    return new NameSpaceReference(this);
                }
                AliasNode aliasNode = PsiTreeUtil.getParentOfType(parent, AliasNode.class);
                if (aliasNode != null) {
                    return null;
                }
                return new PackageNameReference(this);
            case RULE_nameReference:
                // If we are currently resolving a var variable, we don't need to resolve it since it is the
                // definition.
                PsiElement element = getPsi();
                if (element instanceof IdentifierPSINode) {
                    AssignmentStatementNode assignmentStatementNode = PsiTreeUtil.getParentOfType(element, AssignmentStatementNode.class);
                    if (assignmentStatementNode != null && BallerinaPsiImplUtil.isVarAssignmentStatement(assignmentStatementNode)) {
                        IdentifierPSINode identifier = (IdentifierPSINode) element;
                        if (BallerinaPsiImplUtil.isRedeclaredVar(identifier)) {
                            return new NameReference(this);
                        }
                        if (BallerinaPsiImplUtil.isValidVarVariable(assignmentStatementNode, identifier)) {
                            return null;
                        }
                    }
                }
                if (xmlAttribNode != null) {
                    return new NameSpaceReference(this);
                }
                RecordKeyNode recordKeyNode = PsiTreeUtil.getParentOfType(parent, RecordKeyNode.class);
                if (recordKeyNode != null) {
                    return new RecordKeyReference(this);
                }
                RecordValueNode recordValueNode = PsiTreeUtil.getParentOfType(parent, RecordValueNode.class);
                if (recordValueNode != null) {
                    return new RecordValueReference(this);
                }
                prevVisibleLeaf = PsiTreeUtil.prevVisibleLeaf(parent);
                if (prevVisibleLeaf != null) {
                    if (".".equals(prevVisibleLeaf.getText())) {
                        // Todo - update logic
                        PsiReference reference = checkAndSuggestReferenceAfterDot();
                        if (reference != null) {
                            return reference;
                        }
                        return new FieldReference(this);
                    }
                    // Todo - remove ","
                    if ((prevVisibleLeaf instanceof IdentifierPSINode) && prevVisibleLeaf.getParent() instanceof AnnotationDefinitionNode) {
                        return null;
                    } else if (("attach".equals(prevVisibleLeaf.getText()) || ",".equals(prevVisibleLeaf.getText())) && prevVisibleLeaf.getParent() instanceof AnnotationDefinitionNode) {
                        return new AttachmentPointReference(this);
                    }
                }
                return new NameReference(this);
            case RULE_field:
                prevVisibleLeaf = PsiTreeUtil.prevVisibleLeaf(parent);
                PsiReference variableReference = null;
                if (prevVisibleLeaf != null && ".".equals(prevVisibleLeaf.getText())) {
                    PsiElement connectorVariable = PsiTreeUtil.prevVisibleLeaf(prevVisibleLeaf);
                    if (connectorVariable != null) {
                        variableReference = connectorVariable.findReferenceAt(connectorVariable.getTextLength());
                    }
                } else {
                    PsiElement prevSibling = parent.getPrevSibling();
                    if (prevSibling != null) {
                        PsiReference reference = checkAndSuggestReferenceAfterDot();
                        if (reference != null) {
                            return reference;
                        }
                        return new FieldReference(this);
                    }
                }
                if (variableReference == null) {
                    return null;
                }
                PsiElement variableDefinition = variableReference.resolve();
                if (variableDefinition == null) {
                    return new FieldReference(this);
                }
                ConnectorDefinitionNode connectorDefinitionNode = BallerinaPsiImplUtil.resolveConnectorFromVariableDefinitionNode(variableDefinition.getParent());
                if (connectorDefinitionNode != null) {
                    return new ActionInvocationReference(this);
                }
                return new FieldReference(this);
            case RULE_functionReference:
                return new FunctionReference(this);
            case RULE_workerReference:
                return new WorkerReference(this);
            case RULE_attachmentPoint:
                return new AttachmentPointReference(this);
            case RULE_statement:
                // Todo - update logic
                PsiReference reference = checkAndSuggestReferenceAfterDot();
                if (reference != null) {
                    return reference;
                }
                prevVisibleLeaf = PsiTreeUtil.prevVisibleLeaf(getParent());
                if (prevVisibleLeaf != null) {
                    if (".".equals(prevVisibleLeaf.getText())) {
                        PsiElement psiElement = PsiTreeUtil.prevVisibleLeaf(prevVisibleLeaf);
                        if (psiElement == null) {
                            return new FieldReference(this);
                        }
                        reference = psiElement.findReferenceAt(psiElement.getTextLength());
                        if (reference == null) {
                            return new FieldReference(this);
                        }
                        PsiElement resolvedElement = reference.resolve();
                        if (resolvedElement == null) {
                            return new FieldReference(this);
                        }
                        PsiElement resolvedElementParent = resolvedElement.getParent();
                        if (resolvedElementParent instanceof ConnectorDefinitionNode) {
                            return new ActionInvocationReference(this);
                        }
                        if (resolvedElementParent instanceof VariableDefinitionNode) {
                            connectorDefinitionNode = BallerinaPsiImplUtil.resolveConnectorFromVariableDefinitionNode((resolvedElementParent));
                            if (connectorDefinitionNode != null) {
                                return new ActionInvocationReference(this);
                            }
                        }
                        return new FieldReference(this);
                    } else if (prevVisibleLeaf.getText().matches("[,]")) {
                        return new NameReference(this);
                    } else if (prevVisibleLeaf.getText().matches("[{]")) {
                        return new RecordKeyReference(this);
                    }
                }
                PsiElement nextVisibleLeaf = PsiTreeUtil.nextVisibleLeaf(getPsi());
                if (nextVisibleLeaf != null && ":".equals(nextVisibleLeaf.getText())) {
                    return new PackageNameReference(this);
                }
                return new StatementReference(this);
            case RULE_invocation:
                return suggestReferenceTypeForInvocation();
            case RULE_structReference:
                return new StructReference(this);
            case RULE_transformerReference:
                return new TransformerReference(this);
            case RULE_recordKey:
                return new RecordKeyReference(this);
            case RULE_anyIdentifierName:
                return suggestReferenceTypeForInvocation();
            // return new DocVariableReference(this);
            default:
                return null;
        }
    }
    if (parent instanceof PsiErrorElement) {
        return suggestReferenceType(parent);
    }
    return null;
}
Also used : TransformerReference(org.ballerinalang.plugins.idea.psi.references.TransformerReference) PackageNameReference(org.ballerinalang.plugins.idea.psi.references.PackageNameReference) NameReference(org.ballerinalang.plugins.idea.psi.references.NameReference) PackageNameReference(org.ballerinalang.plugins.idea.psi.references.PackageNameReference) StatementReference(org.ballerinalang.plugins.idea.psi.references.StatementReference) NameSpaceReference(org.ballerinalang.plugins.idea.psi.references.NameSpaceReference) FunctionReference(org.ballerinalang.plugins.idea.psi.references.FunctionReference) RecordValueReference(org.ballerinalang.plugins.idea.psi.references.RecordValueReference) WorkerReference(org.ballerinalang.plugins.idea.psi.references.WorkerReference) PsiElement(com.intellij.psi.PsiElement) FieldReference(org.ballerinalang.plugins.idea.psi.references.FieldReference) EnumFieldReference(org.ballerinalang.plugins.idea.psi.references.EnumFieldReference) StructReference(org.ballerinalang.plugins.idea.psi.references.StructReference) ActionInvocationReference(org.ballerinalang.plugins.idea.psi.references.ActionInvocationReference) RuleIElementType(org.antlr.jetbrains.adaptor.lexer.RuleIElementType) PsiReference(com.intellij.psi.PsiReference) IElementType(com.intellij.psi.tree.IElementType) RuleIElementType(org.antlr.jetbrains.adaptor.lexer.RuleIElementType) PsiErrorElement(com.intellij.psi.PsiErrorElement) AttachmentPointReference(org.ballerinalang.plugins.idea.psi.references.AttachmentPointReference) RecordKeyReference(org.ballerinalang.plugins.idea.psi.references.RecordKeyReference)

Example 3 with NameReference

use of org.ballerinalang.plugins.idea.psi.references.NameReference in project ballerina by ballerina-lang.

the class BallerinaKeywordsCompletionContributor method fillCompletionVariants.

@Override
public void fillCompletionVariants(@NotNull CompletionParameters parameters, @NotNull CompletionResultSet result) {
    PsiElement element = parameters.getPosition();
    PsiElement parent = element.getParent();
    if (element instanceof LeafPsiElement) {
        IElementType elementType = ((LeafPsiElement) element).getElementType();
        if (elementType == BallerinaTypes.FLOATING_POINT) {
            return;
        }
    }
    if (parent instanceof NameReferenceNode) {
        PsiElement prevVisibleLeaf = PsiTreeUtil.prevVisibleLeaf(element);
        if (prevVisibleLeaf != null && "public".equals(prevVisibleLeaf.getText())) {
            result.addAllElements(getFileLevelKeywordsAsLookups(false, true, true));
        }
        if (prevVisibleLeaf instanceof IdentifierPSINode) {
            result.addElement(getAttachKeyword());
            return;
        }
        ANTLRPsiNode definitionParent = PsiTreeUtil.getParentOfType(parent, CallableUnitBodyNode.class, ServiceBodyNode.class, ConnectorBodyNode.class);
        if (definitionParent != null && prevVisibleLeaf != null && "=".equals(prevVisibleLeaf.getText())) {
            result.addElement(getCreateKeyword());
            result.addElement(getTypeOfKeyword());
            result.addElement(getLengthOfKeyword());
            result.addAllElements(getValueKeywords());
        }
        ExpressionNode expressionNode = PsiTreeUtil.getParentOfType(parent, ExpressionNode.class);
        if (expressionNode != null && expressionNode.getChildren().length == 1) {
            PsiReference referenceAt = parent.findReferenceAt(0);
            if (referenceAt == null || referenceAt instanceof NameReference) {
                result.addAllElements(getValueKeywords());
            }
            PsiElement nextVisibleLeaf = PsiTreeUtil.nextVisibleLeaf(element);
            if ((prevVisibleLeaf != null && "(".equals(prevVisibleLeaf.getText())) || (nextVisibleLeaf != null && ")".equals(nextVisibleLeaf.getText()) && !":".equals(prevVisibleLeaf.getText()))) {
                addOtherTypeAsLookup(result);
                addValueTypesAsLookups(result);
                addReferenceTypesAsLookups(result);
            }
        }
        AnnotationAttachmentNode attachmentNode = PsiTreeUtil.getParentOfType(parent, AnnotationAttachmentNode.class);
        if (attachmentNode != null) {
            result.addAllElements(getValueKeywords());
        }
        TypeNameNode typeNameNode = PsiTreeUtil.getParentOfType(parent, TypeNameNode.class);
        if (typeNameNode != null && prevVisibleLeaf != null && !prevVisibleLeaf.getText().matches("[:.=]")) {
            AnnotationDefinitionNode annotationDefinitionNode = PsiTreeUtil.getParentOfType(typeNameNode, AnnotationDefinitionNode.class);
            if (annotationDefinitionNode == null) {
                addOtherTypeAsLookup(result);
                addXmlnsAsLookup(result);
                addValueTypesAsLookups(result);
                addReferenceTypesAsLookups(result);
            }
        }
    }
    if (parent instanceof StatementNode) {
        PsiElement prevVisibleSibling = PsiTreeUtil.prevVisibleLeaf(element);
        if (prevVisibleSibling != null && "=".equals(prevVisibleSibling.getText())) {
            result.addElement(getCreateKeyword());
            result.addElement(getTypeOfKeyword());
            result.addElement(getLengthOfKeyword());
        }
    }
    if (parent instanceof ConstantDefinitionNode || parent instanceof PsiErrorElement) {
        PsiElement prevVisibleSibling = PsiTreeUtil.prevVisibleLeaf(element);
        if (prevVisibleSibling != null && "const".equals(prevVisibleSibling.getText())) {
            addValueTypesAsLookups(result);
            return;
        }
    }
    if (parent instanceof PsiErrorElement) {
        PsiElement prevVisibleSibling = PsiTreeUtil.prevVisibleLeaf(element);
        PsiElement definitionNode = PsiTreeUtil.getParentOfType(element, FunctionDefinitionNode.class, ServiceDefinitionNode.class, ConnectorDefinitionNode.class, ResourceDefinitionNode.class);
        if (definitionNode != null) {
            if (prevVisibleSibling != null && "=".equals(prevVisibleSibling.getText())) {
                result.addElement(getCreateKeyword());
                result.addAllElements(getValueKeywords());
                result.addElement(getTypeOfKeyword());
                result.addElement(getLengthOfKeyword());
            }
            if (prevVisibleSibling != null && prevVisibleSibling.getText().matches("[;{}]") && !(prevVisibleSibling.getParent() instanceof AnnotationAttachmentNode)) {
                // Todo - change method
                addOtherTypeAsLookup(result);
                addXmlnsAsLookup(result);
                addValueTypesAsLookups(result);
                addReferenceTypesAsLookups(result);
                if (definitionNode instanceof FunctionDefinitionNode) {
                    result.addAllElements(getFunctionSpecificKeywords());
                }
                if (definitionNode instanceof ResourceDefinitionNode) {
                    result.addAllElements(getResourceSpecificKeywords());
                }
                if (definitionNode instanceof ServiceDefinitionNode) {
                    result.addAllElements(getServiceSpecificKeywords());
                }
                if (definitionNode instanceof ConnectorDefinitionNode) {
                    result.addAllElements(getConnectorSpecificKeywords());
                }
                if (!(definitionNode instanceof ServiceDefinitionNode || definitionNode instanceof ConnectorDefinitionNode)) {
                    result.addAllElements(getCommonKeywords());
                }
            }
            if (prevVisibleSibling != null && !prevVisibleSibling.getText().matches("[{}]")) /*|| !(prevVisibleSibling.getParent() instanceof AnnotationAttachmentNode)*/
            {
                result.addAllElements(getValueKeywords());
            }
        }
        ConnectorBodyNode connectorBodyNode = PsiTreeUtil.getParentOfType(element, ConnectorBodyNode.class);
        if (connectorBodyNode != null) {
            result.addAllElements(getConnectorSpecificKeywords());
        }
        ConnectorDefinitionNode connectorDefinitionNode = PsiTreeUtil.getParentOfType(element, ConnectorDefinitionNode.class);
        if (connectorDefinitionNode != null) {
            result.addAllElements(getConnectorSpecificKeywords());
        }
        return;
    }
    if (parent instanceof NameReferenceNode) {
        RecordKeyValueNode recordKeyValueNode = PsiTreeUtil.getParentOfType(parent, RecordKeyValueNode.class);
        if (recordKeyValueNode == null) {
            PsiElement prevVisibleSibling = PsiTreeUtil.prevVisibleLeaf(element);
            if (prevVisibleSibling != null && "{".equals(prevVisibleSibling.getText())) {
                FunctionDefinitionNode functionDefinitionNode = PsiTreeUtil.getParentOfType(element, FunctionDefinitionNode.class);
                if (functionDefinitionNode != null) {
                    // Todo - change method
                    addOtherTypeAsLookup(result);
                    addXmlnsAsLookup(result);
                    addValueTypesAsLookups(result);
                    addReferenceTypesAsLookups(result);
                    result.addAllElements(getFunctionSpecificKeywords());
                    result.addAllElements(getCommonKeywords());
                    result.addAllElements(getValueKeywords());
                }
                ServiceBodyNode serviceBodyNode = PsiTreeUtil.getParentOfType(element, ServiceBodyNode.class);
                if (serviceBodyNode != null) {
                    result.addAllElements(getServiceSpecificKeywords());
                }
                ConnectorBodyNode connectorBodyNode = PsiTreeUtil.getParentOfType(element, ConnectorBodyNode.class);
                if (connectorBodyNode != null) {
                    result.addAllElements(getConnectorSpecificKeywords());
                }
            } else if (prevVisibleSibling != null && "}".equals(prevVisibleSibling.getText())) {
                result.addAllElements(getFileLevelKeywordsAsLookups(true, false, false));
            }
        }
    }
    if (parent instanceof ResourceDefinitionNode) {
        result.addAllElements(getServiceSpecificKeywords());
    }
    if (parent.getPrevSibling() == null) {
        GlobalVariableDefinitionNode globalVariableDefinitionNode = PsiTreeUtil.getParentOfType(element, GlobalVariableDefinitionNode.class);
        if (globalVariableDefinitionNode != null) {
            PsiElement prevVisibleSibling = PsiTreeUtil.prevVisibleLeaf(element);
            if (prevVisibleSibling != null && !(";".equals(prevVisibleSibling.getText()))) {
                if (!(prevVisibleSibling.getText().matches("[:=]") || prevVisibleSibling instanceof IdentifierPSINode || "create".equals(prevVisibleSibling.getText()))) {
                    if (prevVisibleSibling instanceof LeafPsiElement) {
                        IElementType elementType = ((LeafPsiElement) prevVisibleSibling).getElementType();
                        if (BallerinaParserDefinition.KEYWORDS.contains(elementType)) {
                            return;
                        }
                    }
                    result.addAllElements(getCommonKeywords());
                }
                return;
            }
            PsiElement definitionNode = globalVariableDefinitionNode.getParent();
            PackageDeclarationNode prevPackageDeclarationNode = PsiTreeUtil.getPrevSiblingOfType(definitionNode, PackageDeclarationNode.class);
            ImportDeclarationNode prevImportDeclarationNode = PsiTreeUtil.getPrevSiblingOfType(definitionNode, ImportDeclarationNode.class);
            ConstantDefinitionNode prevConstantDefinitionNode = PsiTreeUtil.getPrevSiblingOfType(definitionNode, ConstantDefinitionNode.class);
            DefinitionNode prevDefinitionNode = PsiTreeUtil.getPrevSiblingOfType(definitionNode, DefinitionNode.class);
            GlobalVariableDefinitionNode prevGlobalVariableDefinition = PsiTreeUtil.findChildOfType(prevDefinitionNode, GlobalVariableDefinitionNode.class);
            if (prevPackageDeclarationNode == null && prevImportDeclarationNode == null && prevConstantDefinitionNode == null && prevGlobalVariableDefinition == null) {
                result.addAllElements(getFileLevelKeywordsAsLookups(true, true, true));
            } else if ((prevPackageDeclarationNode != null || prevImportDeclarationNode != null) && prevConstantDefinitionNode == null && prevGlobalVariableDefinition == null) {
                result.addAllElements(getFileLevelKeywordsAsLookups(true, false, true));
            } else {
                result.addAllElements(getFileLevelKeywordsAsLookups(true, false, false));
            }
            addTypeNamesAsLookups(result);
        }
    }
    if (element instanceof IdentifierPSINode) {
        PsiReference reference = element.findReferenceAt(element.getTextLength());
        if (reference instanceof WorkerReference) {
            result.addAllElements(getWorkerInteractionKeywords());
        }
    }
}
Also used : RecordKeyValueNode(org.ballerinalang.plugins.idea.psi.RecordKeyValueNode) NameReference(org.ballerinalang.plugins.idea.psi.references.NameReference) ConstantDefinitionNode(org.ballerinalang.plugins.idea.psi.ConstantDefinitionNode) ImportDeclarationNode(org.ballerinalang.plugins.idea.psi.ImportDeclarationNode) LeafPsiElement(com.intellij.psi.impl.source.tree.LeafPsiElement) FunctionDefinitionNode(org.ballerinalang.plugins.idea.psi.FunctionDefinitionNode) IdentifierPSINode(org.ballerinalang.plugins.idea.psi.IdentifierPSINode) WorkerReference(org.ballerinalang.plugins.idea.psi.references.WorkerReference) PsiElement(com.intellij.psi.PsiElement) LeafPsiElement(com.intellij.psi.impl.source.tree.LeafPsiElement) ServiceBodyNode(org.ballerinalang.plugins.idea.psi.ServiceBodyNode) AnnotationAttachmentNode(org.ballerinalang.plugins.idea.psi.AnnotationAttachmentNode) ConnectorBodyNode(org.ballerinalang.plugins.idea.psi.ConnectorBodyNode) PsiReference(com.intellij.psi.PsiReference) StatementNode(org.ballerinalang.plugins.idea.psi.StatementNode) ANTLRPsiNode(org.antlr.jetbrains.adaptor.psi.ANTLRPsiNode) ConnectorDefinitionNode(org.ballerinalang.plugins.idea.psi.ConnectorDefinitionNode) PackageDeclarationNode(org.ballerinalang.plugins.idea.psi.PackageDeclarationNode) IElementType(com.intellij.psi.tree.IElementType) PsiErrorElement(com.intellij.psi.PsiErrorElement) ResourceDefinitionNode(org.ballerinalang.plugins.idea.psi.ResourceDefinitionNode) AnnotationDefinitionNode(org.ballerinalang.plugins.idea.psi.AnnotationDefinitionNode) ServiceDefinitionNode(org.ballerinalang.plugins.idea.psi.ServiceDefinitionNode) DefinitionNode(org.ballerinalang.plugins.idea.psi.DefinitionNode) ConstantDefinitionNode(org.ballerinalang.plugins.idea.psi.ConstantDefinitionNode) ConnectorDefinitionNode(org.ballerinalang.plugins.idea.psi.ConnectorDefinitionNode) FunctionDefinitionNode(org.ballerinalang.plugins.idea.psi.FunctionDefinitionNode) GlobalVariableDefinitionNode(org.ballerinalang.plugins.idea.psi.GlobalVariableDefinitionNode) ResourceDefinitionNode(org.ballerinalang.plugins.idea.psi.ResourceDefinitionNode) ServiceDefinitionNode(org.ballerinalang.plugins.idea.psi.ServiceDefinitionNode) ExpressionNode(org.ballerinalang.plugins.idea.psi.ExpressionNode) TypeNameNode(org.ballerinalang.plugins.idea.psi.TypeNameNode) AnnotationDefinitionNode(org.ballerinalang.plugins.idea.psi.AnnotationDefinitionNode) NameReferenceNode(org.ballerinalang.plugins.idea.psi.NameReferenceNode) GlobalVariableDefinitionNode(org.ballerinalang.plugins.idea.psi.GlobalVariableDefinitionNode)

Aggregations

PsiElement (com.intellij.psi.PsiElement)3 PsiReference (com.intellij.psi.PsiReference)3 NameReference (org.ballerinalang.plugins.idea.psi.references.NameReference)3 PsiErrorElement (com.intellij.psi.PsiErrorElement)2 IElementType (com.intellij.psi.tree.IElementType)2 ActionInvocationReference (org.ballerinalang.plugins.idea.psi.references.ActionInvocationReference)2 PackageNameReference (org.ballerinalang.plugins.idea.psi.references.PackageNameReference)2 WorkerReference (org.ballerinalang.plugins.idea.psi.references.WorkerReference)2 LeafPsiElement (com.intellij.psi.impl.source.tree.LeafPsiElement)1 RuleIElementType (org.antlr.jetbrains.adaptor.lexer.RuleIElementType)1 ANTLRPsiNode (org.antlr.jetbrains.adaptor.psi.ANTLRPsiNode)1 AnnotationAttachmentNode (org.ballerinalang.plugins.idea.psi.AnnotationAttachmentNode)1 AnnotationDefinitionNode (org.ballerinalang.plugins.idea.psi.AnnotationDefinitionNode)1 ConnectorBodyNode (org.ballerinalang.plugins.idea.psi.ConnectorBodyNode)1 ConnectorDefinitionNode (org.ballerinalang.plugins.idea.psi.ConnectorDefinitionNode)1 ConstantDefinitionNode (org.ballerinalang.plugins.idea.psi.ConstantDefinitionNode)1 DefinitionNode (org.ballerinalang.plugins.idea.psi.DefinitionNode)1 ExpressionNode (org.ballerinalang.plugins.idea.psi.ExpressionNode)1 FunctionDefinitionNode (org.ballerinalang.plugins.idea.psi.FunctionDefinitionNode)1 GlobalVariableDefinitionNode (org.ballerinalang.plugins.idea.psi.GlobalVariableDefinitionNode)1