package org.erlide.scoping;
import com.google.inject.Inject;
import com.google.inject.Provider;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.resource.ResourceSet;
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.naming.IQualifiedNameConverter;
import org.eclipse.xtext.resource.IEObjectDescription;
import org.eclipse.xtext.resource.XtextResourceSet;
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.InputOutput;
import org.eclipse.xtext.xbase.lib.IterableExtensions;
import org.erlide.ErlangInjectorProvider;
import org.erlide.erlang.Form;
import org.erlide.erlang.Function;
import org.erlide.erlang.Module;
import org.erlide.erlang.ScopeExtensions;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(XtextRunner.class)
@InjectWith(ErlangInjectorProvider.class)
@SuppressWarnings("all")
public class GlobalSearchTest {
@Inject
private ParseHelper<Module> parser;
@Inject
private IQualifiedNameConverter cvtr;
@Inject
private Provider<XtextResourceSet> resourceSetProvider;
@Inject
@Extension
private ScopeExtensions _scopeExtensions;
@Test
public void canFindFunction() {
try {
final ResourceSet set = this.resourceSetProvider.get();
StringConcatenation _builder = new StringConcatenation();
_builder.append("-module(x).");
_builder.newLine();
_builder.append("-export([f/0]).");
_builder.newLine();
_builder.append("g(X) -> X.");
_builder.newLine();
_builder.append("f() -> ok.");
_builder.newLine();
final Module module_x = this.parser.parse(_builder, set);
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append("-module(z).");
_builder_1.newLine();
_builder_1.append("-export([f/0]).");
_builder_1.newLine();
_builder_1.append("g(X) -> X.");
_builder_1.newLine();
_builder_1.append("f() -> ok.");
_builder_1.newLine();
final Module module_z = this.parser.parse(_builder_1, set);
final Iterable<IEObjectDescription> eFuns_x = this._scopeExtensions.getExportedFunctions(module_x);
final Iterable<IEObjectDescription> eFuns_z = this._scopeExtensions.getExportedFunctions(module_z);
EList<Form> _forms = module_x.getForms();
final Function1<Form, Boolean> _function = new Function1<Form, Boolean>() {
@Override
public Boolean apply(final Form it) {
Class<? extends Form> _class = it.getClass();
return Boolean.valueOf(Function.class.isAssignableFrom(_class));
}
};
Form _findFirst = IterableExtensions.<Form>findFirst(_forms, _function);
final Function f1 = ((Function) _findFirst);
InputOutput.<Function>println(f1);
InputOutput.<ResourceSet>println(set);
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
}