From e6f1fa06371d0c8a52882ceb02b5cfb85e995c20 Mon Sep 17 00:00:00 2001 From: Rhys Weatherley Date: Fri, 26 Nov 2010 10:06:05 +1000 Subject: [PATCH] Fix AST for GLSL DeclarationStatement DeclarationStatement wraps a single declaration, not a list. --- src/libs/glsl/glsl.g | 2 +- src/libs/glsl/glslast.cpp | 2 +- src/libs/glsl/glslast.h | 6 +++--- src/libs/glsl/glslparser.cpp | 2 +- src/libs/glsl/glslsemantic.cpp | 5 +---- 5 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/libs/glsl/glsl.g b/src/libs/glsl/glsl.g index 1bbc63a11b7..deae342c44b 100644 --- a/src/libs/glsl/glsl.g +++ b/src/libs/glsl/glsl.g @@ -2528,7 +2528,7 @@ case $rule_number: { declaration_statement ::= declaration ; /. case $rule_number: { - ast(1) = makeAstNode(sym(1).declaration_list); + ast(1) = makeAstNode(sym(1).declaration); } break; ./ diff --git a/src/libs/glsl/glslast.cpp b/src/libs/glsl/glslast.cpp index 2c1f906cfce..16ee129760e 100644 --- a/src/libs/glsl/glslast.cpp +++ b/src/libs/glsl/glslast.cpp @@ -218,7 +218,7 @@ void CaseLabelStatementAST::accept0(Visitor *visitor) void DeclarationStatementAST::accept0(Visitor *visitor) { if (visitor->visit(this)) - accept(decls, visitor); + accept(decl, visitor); visitor->endVisit(this); } diff --git a/src/libs/glsl/glslast.h b/src/libs/glsl/glslast.h index 0fecb9b380a..7e8649393a0 100644 --- a/src/libs/glsl/glslast.h +++ b/src/libs/glsl/glslast.h @@ -642,15 +642,15 @@ public: // attributes class GLSL_EXPORT DeclarationStatementAST: public StatementAST { public: - DeclarationStatementAST(List *_decls) - : StatementAST(Kind_DeclarationStatement), decls(finish(_decls)) {} + DeclarationStatementAST(DeclarationAST *_decl) + : StatementAST(Kind_DeclarationStatement), decl(_decl) {} virtual DeclarationStatementAST *asDeclarationStatement() { return this; } virtual void accept0(Visitor *visitor); public: // attributes - List *decls; + DeclarationAST *decl; }; class GLSL_EXPORT TypeAST: public AST diff --git a/src/libs/glsl/glslparser.cpp b/src/libs/glsl/glslparser.cpp index 594d400bdcb..d856ad52428 100644 --- a/src/libs/glsl/glslparser.cpp +++ b/src/libs/glsl/glslparser.cpp @@ -1865,7 +1865,7 @@ case 260: { #line 2529 "./glsl.g" case 261: { - ast(1) = makeAstNode(sym(1).declaration_list); + ast(1) = makeAstNode(sym(1).declaration); } break; #line 2536 "./glsl.g" diff --git a/src/libs/glsl/glslsemantic.cpp b/src/libs/glsl/glslsemantic.cpp index f86a5ee9775..5353581bfab 100644 --- a/src/libs/glsl/glslsemantic.cpp +++ b/src/libs/glsl/glslsemantic.cpp @@ -281,10 +281,7 @@ bool Semantic::visit(CaseLabelStatementAST *ast) bool Semantic::visit(DeclarationStatementAST *ast) { - for (List *it = ast->decls; it; it = it->next) { - DeclarationAST *decl = it->value; - declaration(decl); - } + declaration(ast->decl); return false; }