package org.erlide.scoping; import com.google.common.base.Objects; import com.google.common.collect.ImmutableList; import com.google.inject.Inject; import java.util.List; import org.eclipse.emf.ecore.EAttribute; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EReference; import org.eclipse.xtext.linking.impl.DefaultLinkingService; import org.eclipse.xtext.nodemodel.INode; import org.eclipse.xtext.xbase.lib.CollectionLiterals; import org.erlide.erlang.Atom; import org.erlide.erlang.AtomRefTarget; import org.erlide.erlang.DefineAttribute; import org.erlide.erlang.ErlangPackage; import org.erlide.erlang.Macro; import org.erlide.scoping.ErlangLinkingHelper; @SuppressWarnings("all") public class ErlangLinkingService extends DefaultLinkingService { @Inject private ErlangLinkingHelper linkHelper; private static List<EObject> NONE = ImmutableList.<EObject>copyOf(CollectionLiterals.<EObject>newArrayList()); @Override public List<EObject> getLinkedObjects(final EObject context, final EReference ref, final INode node) { EObject aref = null; EAttribute _atom_Value = ErlangPackage.eINSTANCE.getAtom_Value(); boolean _equals = Objects.equal(ref, _atom_Value); if (_equals) { AtomRefTarget _atomReference = this.linkHelper.getAtomReference(((Atom) context)); aref = _atomReference; return this.wrap(aref); } EReference _macro_Value = ErlangPackage.eINSTANCE.getMacro_Value(); boolean _equals_1 = Objects.equal(ref, _macro_Value); if (_equals_1) { DefineAttribute _macroReference = this.linkHelper.getMacroReference(((Macro) context)); aref = _macroReference; return this.wrap(aref); } return super.getLinkedObjects(context, ref, node); } private List<EObject> wrap(final EObject aref) { List<EObject> _xifexpression = null; boolean _equals = Objects.equal(aref, null); if (_equals) { _xifexpression = ErlangLinkingService.NONE; } else { _xifexpression = CollectionLiterals.<EObject>newArrayList(aref); } return _xifexpression; } }