psi.referenceContributor is never initialized

I’m writing a plugin for .dot files. In my plugin.xml I have:

<extensions defaultExtensionNs="com.intellij">
    <psi.referenceContributor
            implementation="org.abpubli.dot.lang.reference.DotNodeReferenceContributor"/>
    <lang.findUsagesProvider
            language="DOT"
            implementationClass="org.abpubli.dot.lang.navigation.DotFindUsagesProvider"/>
</extensions>

The DotNodeReferenceContributor class is never initialized — I have a log in the constructor:

public class DotNodeReferenceContributor extends PsiReferenceContributor {
    private static final Logger LOG = Logger.getInstance(DotNodeReferenceContributor.class);

    public DotNodeReferenceContributor() {
        LOG.warn("DotNodeReferenceContributor CONSTRUCTOR – loaded");
    }

    @Override
    public void registerReferenceProviders(@NotNull PsiReferenceRegistrar registrar) {
        ...
    }
}

Maybe DotNodeReferenceContributor is initialized lazy and is never initialized due to error in DotFindUsagesProvider?

My minimal example: https://drive.google.com/file/d/1ckrKdExi8VfE6j9aW_MkCW9rRbscBuws/view?usp=drive_link
uses .graph files like:

node1;
node2;
node1->node2;
1 Like

I can guess that the corresponding language elements for DOT never call PsiReferenceService.getReferences().

Read more

Only elements that override getReference and delegate to PsiReferenceService support additional reference providers.

1 Like