package org.erlide.scoping; import org.eclipse.xtext.diagnostics.DiagnosticMessage; import org.eclipse.xtext.diagnostics.Severity; import org.eclipse.xtext.linking.impl.LinkingDiagnosticMessageProvider; import org.erlide.erlang.Atom; import org.erlide.erlang.ModelExtensions; import org.erlide.erlang.Variable; import com.google.inject.Inject; public class ErlangLinkingDiagnosticMessageProvider extends LinkingDiagnosticMessageProvider { @Inject ModelExtensions me; @Inject ErlangLinkingHelper linkHelper; @Override public DiagnosticMessage getUnresolvedProxyMessage( final ILinkingDiagnosticContext context) { final DiagnosticMessage org = super.getUnresolvedProxyMessage(context); if (org == null) { return null; } // if this isn't really a link that can be resolved, return null if (context.getContext() instanceof Atom) { final Atom atom = (Atom) context.getContext(); final boolean linkableContext = linkHelper.isLinkableAtom(atom); if (!linkableContext) { return null; } return new DiagnosticMessage(org.getMessage(), Severity.WARNING, org.getIssueCode(), org.getIssueData()); } if (context.getContext() instanceof Variable) { // TODO return null; } if (me.isPredefinedMacro(context.getContext())) { // this can't be handled with scoping, I think return null; } return new DiagnosticMessage(org.getMessage(), Severity.WARNING, org.getIssueCode(), org.getIssueData()); } }