net.sourceforge.pmd.lang.modelica.resolver.ModelicaScope Maven / Gradle / Ivy
/**
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
*/
package net.sourceforge.pmd.lang.modelica.resolver;
import java.util.List;
import net.sourceforge.pmd.lang.modelica.resolver.internal.ResolutionState;
/**
* A lexical scope of Modelica code.
* That is, a component declaration does not have one, it is its type that does (but these may be resolved to multiple
* classes or not resolved at all, these classes generally reside in other files, etc.)
*
* Please do not confuse this with {@link SubcomponentResolver} that represents "view from the outside" on something
* possibly looked up from other file via component reference.
*/
public interface ModelicaScope {
/**
* Returns the declarations that were lexically declared in this scope.
*/
List getContainedDeclarations();
/**
* Resolves a name as if it is written inside this lexical scope in a file.
*/
ResolutionResult safeResolveLexically(Class clazz, ResolutionState state, CompositeName name);
/**
* Returns the parent (i.e., containing) scope.
*/
ModelicaScope getParent();
RootScope getRoot();
}