REDO_PREVIOUS
};
+ enum ResolveFlags
+ {
+ RESOLVE_BLOCKS = 1,
+ RESOLVE_TYPES = 2,
+ RESOLVE_VARIABLES = 4,
+ RESOLVE_EXPRESSIONS = 8,
+ RESOLVE_FUNCTIONS = 16,
+ RESOLVE_ALL = 31
+ };
+
Features features;
Module *module;
std::vector<std::string> imported_names;
variables. */
void generate(Stage &, Mode);
- /** Resolves references and expression types. */
- void resolve(Stage &);
+ template<typename T>
+ bool resolve(Stage &, unsigned &, unsigned);
+
+ /** Resolves various references between nodes. Flags can be specified to
+ request resolving particular aspects. Resolving may ripple into other
+ aspects as necessary. */
+ void resolve(Stage &, unsigned = RESOLVE_ALL);
bool validate(Stage &);