package org.erlide.scoping; import com.google.inject.Inject; import java.util.Iterator; import java.util.List; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.common.util.TreeIterator; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.xtend2.lib.StringConcatenation; import org.eclipse.xtext.junit4.InjectWith; import org.eclipse.xtext.junit4.XtextRunner; import org.eclipse.xtext.junit4.util.ParseHelper; import org.eclipse.xtext.xbase.lib.Exceptions; import org.eclipse.xtext.xbase.lib.Extension; import org.eclipse.xtext.xbase.lib.Functions.Function1; import org.eclipse.xtext.xbase.lib.IterableExtensions; import org.eclipse.xtext.xbase.lib.IteratorExtensions; import org.erlide.ErlangInjectorProvider; import org.erlide.erlang.ModelExtensions; import org.erlide.erlang.Module; import org.erlide.scoping.ErlangLinkingHelper; import org.junit.Test; import org.junit.runner.RunWith; @RunWith(XtextRunner.class) @InjectWith(ErlangInjectorProvider.class) @SuppressWarnings("all") public class ErlangLinkingContextTest { @Inject private ParseHelper<Module> parser; @Inject @Extension private ModelExtensions _modelExtensions; @Inject @Extension private ErlangLinkingHelper _erlangLinkingHelper; @Test public void simpleAtom() { try { StringConcatenation _builder = new StringConcatenation(); _builder.append("-module(m)."); _builder.newLine(); _builder.append("f() ->"); _builder.newLine(); _builder.append("\t"); _builder.append("g(3),"); _builder.newLine(); _builder.append("\t"); _builder.append("ok."); _builder.newLine(); _builder.append("g(X) -> ok."); _builder.newLine(); final Module module = this.parser.parse(_builder); Resource _eResource = module.eResource(); TreeIterator<EObject> _allContents = _eResource.getAllContents(); final Function1<EObject, Boolean> _function = new Function1<EObject, Boolean>() { @Override public Boolean apply(final EObject it) { EList<EObject> _eCrossReferences = it.eCrossReferences(); boolean _isEmpty = _eCrossReferences.isEmpty(); return Boolean.valueOf((!_isEmpty)); } }; Iterator<EObject> _filter = IteratorExtensions.<EObject>filter(_allContents, _function); final Function1<EObject, EObject> _function_1 = new Function1<EObject, EObject>() { @Override public EObject apply(final EObject it) { EList<EObject> _eCrossReferences = it.eCrossReferences(); return IterableExtensions.<EObject>head(_eCrossReferences); } }; Iterator<EObject> _map = IteratorExtensions.<EObject, EObject>map(_filter, _function_1); final Function1<EObject, Boolean> _function_2 = new Function1<EObject, Boolean>() { @Override public Boolean apply(final EObject it) { boolean _eIsProxy = it.eIsProxy(); return Boolean.valueOf((!_eIsProxy)); } }; Iterator<EObject> _filter_1 = IteratorExtensions.<EObject>filter(_map, _function_2); final List<EObject> refs = IteratorExtensions.<EObject>toList(_filter_1); } catch (Throwable _e) { throw Exceptions.sneakyThrow(_e); } } }