package org.applause.lang.scoping;
import static org.eclipse.xtext.scoping.Scopes.scopedElementsFor;
import org.applause.lang.applauseDsl.VariableDeclaration;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.resource.IEObjectDescription;
import org.eclipse.xtext.scoping.IScope;
import org.eclipse.xtext.scoping.impl.AbstractScope;
import com.google.common.base.Preconditions;
import com.google.common.collect.Iterables;
public class VariableDeclarationScope extends AbstractScope {
protected final EObject context;
public VariableDeclarationScope(EObject context) {
Preconditions.checkNotNull(context);
this.context = context;
}
public IScope getOuterScope() {
if(context.eContainer() == null)
return IScope.NULLSCOPE;
else
return new VariableDeclarationScope(context.eContainer());
}
@Override
protected Iterable<IEObjectDescription> internalGetContents() {
Iterable<VariableDeclaration> declarations = Iterables.filter(context.eContents(), VariableDeclaration.class);
return scopedElementsFor(declarations);
}
}