X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fglsl%2Fvalidate.cpp;h=cb866b4ba215562c10fff9255bd1867b51ff6f00;hp=67d456a8a2a1d6abb3bc8253bab72a9ab2cac2ab;hb=6377f8efc81ffe84b7ffe44380f1caa2059f437f;hpb=7156c64692b7919b487d7fe2d7aa75430a2e53bb diff --git a/source/glsl/validate.cpp b/source/glsl/validate.cpp index 67d456a8..cb866b4b 100644 --- a/source/glsl/validate.cpp +++ b/source/glsl/validate.cpp @@ -625,6 +625,28 @@ void ExpressionValidator::visit(FunctionDeclaration &func) TraversingVisitor::visit(func); } +void ExpressionValidator::visit(Conditional &cond) +{ + if(cond.condition->type) + { + BasicTypeDeclaration *basic_cond = dynamic_cast(cond.condition->type); + if(!basic_cond || basic_cond->kind!=BasicTypeDeclaration::BOOL) + error(cond, "Condition is not a boolean"); + } + TraversingVisitor::visit(cond); +} + +void ExpressionValidator::visit(Iteration &iter) +{ + if(iter.condition->type) + { + BasicTypeDeclaration *basic_cond = dynamic_cast(iter.condition->type); + if(!basic_cond || basic_cond->kind!=BasicTypeDeclaration::BOOL) + error(iter, "Loop condition is not a boolean"); + } + TraversingVisitor::visit(iter); +} + void ExpressionValidator::visit(Return &ret) { if(current_function && current_function->return_type_declaration)