stage.required_features.glsl_version = module->shared.required_features.glsl_version;
inject_block(stage.content, module->shared.content);
- if(Stage *builtins = get_builtins(stage.type))
+ if(const Stage *builtins = get_builtins(stage.type))
inject_block(stage.content, builtins->content);
- if(Stage *builtins = get_builtins(Stage::SHARED))
+ if(const Stage *builtins = get_builtins(Stage::SHARED))
inject_block(stage.content, builtins->content);
// Initial resolving pass
BlockHierarchyResolver().apply(stage);
+ TypeResolver().apply(stage);
FunctionResolver().apply(stage);
VariableResolver().apply(stage);
/* All variables local to a stage have been resolved. Resolve non-local
variables through interfaces. */
InterfaceGenerator().apply(stage);
+ TypeResolver().apply(stage);
VariableResolver().apply(stage);
FunctionResolver().apply(stage);
bool Compiler::validate(Stage &stage)
{
DeclarationValidator().apply(stage);
+ ReferenceValidator().apply(stage);
for(vector<Diagnostic>::const_iterator i=stage.diagnostics.begin(); i!=stage.diagnostics.end(); ++i)
if(i->severity==Diagnostic::ERR)
any_inlined |= ExpressionInliner().apply(stage);
if(any_inlined)
{
+ TypeResolver().apply(stage);
VariableResolver().apply(stage);
FunctionResolver().apply(stage);
}