X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fglsl%2Fvalidate.cpp;h=6d0f8e51ac2cb9a95ee94883f8a7449f0c97fa44;hb=4c805f55d89919d6971d600102ab4d6d65d56dc3;hp=1e967dc88f6f4d54f0e54f9a1f90cb499aaf7c86;hpb=734bc4a781ace5aecd98254ad1b50d52a06af0af;p=libs%2Fgl.git diff --git a/source/glsl/validate.cpp b/source/glsl/validate.cpp index 1e967dc8..6d0f8e51 100644 --- a/source/glsl/validate.cpp +++ b/source/glsl/validate.cpp @@ -12,15 +12,12 @@ Validator::Validator(): stage(0) { } -void Validator::diagnose(Statement *statement, Diagnostic::Severity severity, const string &message) +void Validator::diagnose(Node &node, Diagnostic::Severity severity, const string &message) { Diagnostic diag; diag.severity = severity; - if(statement) - { - diag.source = statement->source; - diag.line = statement->line; - } + diag.source = node.source; + diag.line = node.line; diag.message = message; stage->diagnostics.push_back(diag); } @@ -32,8 +29,8 @@ DeclarationValidator::DeclarationValidator(): void DeclarationValidator::multiple_definition(const string &name, Statement &statement, Statement &previous) { - error(&statement, format("Multiple definition of %s", name)); - diagnose(&previous, Diagnostic::INFO, "Previous definition is here"); + error(statement, format("Multiple definition of %s", name)); + diagnose(previous, Diagnostic::INFO, "Previous definition is here"); } Statement *DeclarationValidator::find_definition(const string &name) @@ -63,6 +60,11 @@ void DeclarationValidator::record_definition(const string &name, Statement &stat declarations[current_block->parent].insert(make_pair(name, &statement)); } +void DeclarationValidator::visit(TypeDeclaration &type) +{ + check_definition(type.name, type); +} + void DeclarationValidator::visit(StructDeclaration &strct) { check_definition(strct.name, strct);