/* * This file is part of the X10 project (http://x10-lang.org). * * This file is licensed to You under the Eclipse Public License (EPL); * You may not use this file except in compliance with the License. * You may obtain a copy of the License at * http://www.opensource.org/licenses/eclipse-1.0.php * * (C) Copyright IBM Corporation 2006-2010. */ package x10.types; import polyglot.types.ClassType; import polyglot.types.CodeInstance; import polyglot.types.Flags; import polyglot.types.Ref; import polyglot.types.ContainerType; import polyglot.types.Type; /** * Represents an at.<br> * You'd think it wouldn't be necessary to have a representation of (nameless) ats in the * type system outside of <code>ClosureTypes</code>, but the control-/data-flow framework requires * that all code bodies have an associated instance. See <code>CodeNode.codeInstance()</code>, and * <code>Closure.enterScope()</code>, which needs to push something on the Context stack, but the * only reasonable thing to push is some form of <code>CodeInstance</code>. Perhaps there should be * a more general kind of "code context" class, with a corresponding push method on * <code>Context</code>. * @author rfuhrer */ public interface AtInstance extends MethodInstance { AtDef def(); CodeInstance<?> methodContainer(); ClassType typeContainer(); AtInstance flags(Flags f); ClassType container(); AtInstance container(ContainerType t); }