diff options
author | root <root@rshg054.dnsready.net> | 2012-08-12 00:04:05 +0000 |
---|---|---|
committer | root <root@rshg054.dnsready.net> | 2012-08-12 00:04:05 +0000 |
commit | 012c4b7f27441c85d7f9c46a619a3b356c94cab7 (patch) | |
tree | 3d07a327d03ab3277405e9f8083afa603f468571 /community/qtcreator | |
parent | 073a889144d77058f1eff2100ad48a538bdc0422 (diff) |
Sun Aug 12 00:04:05 UTC 2012
Diffstat (limited to 'community/qtcreator')
-rw-r--r-- | community/qtcreator/PKGBUILD | 22 | ||||
-rw-r--r-- | community/qtcreator/fix-glsl-shit.patch | 2376 |
2 files changed, 2389 insertions, 9 deletions
diff --git a/community/qtcreator/PKGBUILD b/community/qtcreator/PKGBUILD index 67145e813..cdadfb2c4 100644 --- a/community/qtcreator/PKGBUILD +++ b/community/qtcreator/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 74355 2012-07-25 15:34:15Z svenstaro $ +# $Id: PKGBUILD 74977 2012-08-10 23:21:48Z svenstaro $ # Maintainer: Imanol Celaya <ornitorrincos@archlinux-es.org> # Maintainer: Sven-Hendrik Haase <sh@lutzhaase.com> # Contributor: Lukas Jirkovsky <l.jirkovsky@gmail.com> @@ -7,15 +7,15 @@ # Contributor: delor <bartekpiech gmail com> pkgname="qtcreator" -pkgver=2.5.1 -_pkgver=2.5.1 +pkgver=2.5.2 +_pkgver=2.5.2 pkgrel=1 pkgdesc='Lightweight, cross-platform integrated development environment' arch=('i686' 'x86_64') url='http://qt.nokia.com/products/developer-tools' license=('LGPL') -depends=('qt>=4.8.0') -makedepends=('qt-private-headers>=4.8.0' 'git') +depends=('qt') +makedepends=('qt-private-headers' 'git') options=('docs') optdepends=('qt-doc: for the integrated Qt documentation' 'gdb: for the debugger' @@ -27,12 +27,16 @@ optdepends=('qt-doc: for the integrated Qt documentation' 'valgrind: for analyze support') install=qtcreator.install source=("http://get.qt.nokia.com/qtcreator/qt-creator-${_pkgver}-src.tar.gz" - 'qtcreator.desktop') -md5sums=('321e6ee4640cee8177cbb302fde2ce84' - 'f1f4680b9838ff0b8f4cf11eb850d662') - + 'qtcreator.desktop' + 'fix-glsl-shit.patch') +md5sums=('4a9c09cdf4609753283c31451c84ceb8' + 'f1f4680b9838ff0b8f4cf11eb850d662' + '7453f6aabe2d61754490a874a26c087b') + build() { cd ${srcdir} + + patch -Np1 -d $srcdir/qt-creator-$_pkgver-src < $srcdir/fix-glsl-shit.patch [[ -d build ]] && rm -r build mkdir build && cd build diff --git a/community/qtcreator/fix-glsl-shit.patch b/community/qtcreator/fix-glsl-shit.patch new file mode 100644 index 000000000..4b5e504e1 --- /dev/null +++ b/community/qtcreator/fix-glsl-shit.patch @@ -0,0 +1,2376 @@ +From e91045469d59c35607faa344bcfba2b2c566da51 Mon Sep 17 00:00:00 2001 +From: Christian Kamm <christian.d.kamm@nokia.com> +Date: Mon, 6 Aug 2012 11:29:55 +0200 +Subject: [PATCH] GLSL: Fix recovery token order to avoid infinite loop. + +The case 'a = b ? ;' recovered with T_NUMBER, T_COMMA, T_NUMBER, ... + +Task-number: QTCREATORBUG-7517 +Change-Id: I3546266b21d11ce08e4af1331be94a78d3b24c19 +Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com> +--- + src/libs/glsl/glsl.g | 4 +- + src/libs/glsl/glslparser.cpp | 638 +++++++++++++++++++++--------------------- + src/libs/glsl/glslparser.h | 2 +- + 3 files changed, 322 insertions(+), 322 deletions(-) + +diff --git a/src/libs/glsl/glsl.g b/src/libs/glsl/glsl.g +index 67f564c..3c6ae7c 100644 +--- a/src/libs/glsl/glsl.g ++++ b/src/libs/glsl/glsl.g +@@ -456,7 +456,7 @@ private: + #include <iostream> + #include <cstdio> + #include <cassert> +-#include <QtCore/QDebug> ++#include <QDebug> + + using namespace GLSL; + +@@ -591,7 +591,7 @@ AST *Parser::parse(int startToken) + + static int tks[] = { + T_RIGHT_BRACE, T_RIGHT_PAREN, T_RIGHT_BRACKET, +- T_SEMICOLON, T_COMMA, T_COLON, ++ T_SEMICOLON, T_COLON, T_COMMA, + T_NUMBER, T_TYPE_NAME, T_IDENTIFIER, + T_LEFT_BRACE, T_LEFT_PAREN, T_LEFT_BRACKET, + T_WHILE, +diff --git a/src/libs/glsl/glslparser.cpp b/src/libs/glsl/glslparser.cpp +index cf4bbe4..d82096b 100644 +--- a/src/libs/glsl/glslparser.cpp ++++ b/src/libs/glsl/glslparser.cpp +@@ -1,5 +1,5 @@ + +-#line 427 "./glsl.g" ++#line 423 "./glsl.g" + + /************************************************************************** + ** +@@ -171,7 +171,7 @@ AST *Parser::parse(int startToken) + + static int tks[] = { + T_RIGHT_BRACE, T_RIGHT_PAREN, T_RIGHT_BRACKET, +- T_SEMICOLON, T_COMMA, T_COLON, ++ T_SEMICOLON, T_COLON, T_COMMA, + T_NUMBER, T_TYPE_NAME, T_IDENTIFIER, + T_LEFT_BRACE, T_LEFT_PAREN, T_LEFT_BRACKET, + T_WHILE, +@@ -215,137 +215,137 @@ AST *Parser::parse(int startToken) + return 0; + } + +-#line 647 "./glsl.g" ++#line 641 "./glsl.g" + + void Parser::reduce(int ruleno) + { + switch(ruleno) { + +-#line 656 "./glsl.g" ++#line 650 "./glsl.g" + + case 0: { + ast(1) = makeAstNode<IdentifierExpressionAST>(string(1)); + } break; + +-#line 663 "./glsl.g" ++#line 657 "./glsl.g" + + case 1: { + ast(1) = makeAstNode<LiteralExpressionAST>(string(1)); + } break; + +-#line 670 "./glsl.g" ++#line 664 "./glsl.g" + + case 2: { + ast(1) = makeAstNode<LiteralExpressionAST>(_engine->identifier("true", 4)); + } break; + +-#line 677 "./glsl.g" ++#line 671 "./glsl.g" + + case 3: { + ast(1) = makeAstNode<LiteralExpressionAST>(_engine->identifier("false", 5)); + } break; + +-#line 684 "./glsl.g" ++#line 678 "./glsl.g" + + case 4: { + // nothing to do. + } break; + +-#line 691 "./glsl.g" ++#line 685 "./glsl.g" + + case 5: { + ast(1) = ast(2); + } break; + +-#line 698 "./glsl.g" ++#line 692 "./glsl.g" + + case 6: { + // nothing to do. + } break; + +-#line 705 "./glsl.g" ++#line 699 "./glsl.g" + + case 7: { + ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_ArrayAccess, expression(1), expression(3)); + } break; + +-#line 712 "./glsl.g" ++#line 706 "./glsl.g" + + case 8: { + // nothing to do. + } break; + +-#line 719 "./glsl.g" ++#line 713 "./glsl.g" + + case 9: { + ast(1) = makeAstNode<MemberAccessExpressionAST>(expression(1), string(3)); + } break; + +-#line 726 "./glsl.g" ++#line 720 "./glsl.g" + + case 10: { + ast(1) = makeAstNode<UnaryExpressionAST>(AST::Kind_PostIncrement, expression(1)); + } break; + +-#line 733 "./glsl.g" ++#line 727 "./glsl.g" + + case 11: { + ast(1) = makeAstNode<UnaryExpressionAST>(AST::Kind_PostDecrement, expression(1)); + } break; + +-#line 740 "./glsl.g" ++#line 734 "./glsl.g" + + case 12: { + // nothing to do. + } break; + +-#line 747 "./glsl.g" ++#line 741 "./glsl.g" + + case 13: { + // nothing to do. + } break; + +-#line 754 "./glsl.g" ++#line 748 "./glsl.g" + + case 14: { + ast(1) = makeAstNode<FunctionCallExpressionAST> + (sym(1).function.id, sym(1).function.arguments); + } break; + +-#line 762 "./glsl.g" ++#line 756 "./glsl.g" + + case 15: { + ast(1) = makeAstNode<FunctionCallExpressionAST> + (expression(1), sym(3).function.id, sym(3).function.arguments); + } break; + +-#line 770 "./glsl.g" ++#line 764 "./glsl.g" + + case 16: { + // nothing to do. + } break; + +-#line 777 "./glsl.g" ++#line 771 "./glsl.g" + + case 17: { + // nothing to do. + } break; + +-#line 784 "./glsl.g" ++#line 778 "./glsl.g" + + case 18: { + sym(1).function.id = sym(1).function_identifier; + sym(1).function.arguments = 0; + } break; + +-#line 792 "./glsl.g" ++#line 786 "./glsl.g" + + case 19: { + sym(1).function.id = sym(1).function_identifier; + sym(1).function.arguments = 0; + } break; + +-#line 800 "./glsl.g" ++#line 794 "./glsl.g" + + case 20: { + sym(1).function.id = sym(1).function_identifier; +@@ -353,7 +353,7 @@ case 20: { + makeAstNode< List<ExpressionAST *> >(expression(2)); + } break; + +-#line 809 "./glsl.g" ++#line 803 "./glsl.g" + + case 21: { + sym(1).function.arguments = +@@ -361,379 +361,379 @@ case 21: { + (sym(1).function.arguments, expression(3)); + } break; + +-#line 818 "./glsl.g" ++#line 812 "./glsl.g" + + case 22: { + // nothing to do. + } break; + +-#line 825 "./glsl.g" ++#line 819 "./glsl.g" + + case 23: { + ast(1) = makeAstNode<FunctionIdentifierAST>(type(1)); + } break; + +-#line 832 "./glsl.g" ++#line 826 "./glsl.g" + + case 24: { + ast(1) = makeAstNode<FunctionIdentifierAST>(string(1)); + } break; + +-#line 839 "./glsl.g" ++#line 833 "./glsl.g" + + case 25: { + // nothing to do. + } break; + +-#line 846 "./glsl.g" ++#line 840 "./glsl.g" + + case 26: { + ast(1) = makeAstNode<UnaryExpressionAST>(AST::Kind_PreIncrement, expression(2)); + } break; + +-#line 853 "./glsl.g" ++#line 847 "./glsl.g" + + case 27: { + ast(1) = makeAstNode<UnaryExpressionAST>(AST::Kind_PreDecrement, expression(2)); + } break; + +-#line 860 "./glsl.g" ++#line 854 "./glsl.g" + + case 28: { + ast(1) = makeAstNode<UnaryExpressionAST>(sym(1).kind, expression(2)); + } break; + +-#line 867 "./glsl.g" ++#line 861 "./glsl.g" + + case 29: { + sym(1).kind = AST::Kind_UnaryPlus; + } break; + +-#line 874 "./glsl.g" ++#line 868 "./glsl.g" + + case 30: { + sym(1).kind = AST::Kind_UnaryMinus; + } break; + +-#line 881 "./glsl.g" ++#line 875 "./glsl.g" + + case 31: { + sym(1).kind = AST::Kind_LogicalNot; + } break; + +-#line 888 "./glsl.g" ++#line 882 "./glsl.g" + + case 32: { + sym(1).kind = AST::Kind_BitwiseNot; + } break; + +-#line 895 "./glsl.g" ++#line 889 "./glsl.g" + + case 33: { + // nothing to do. + } break; + +-#line 902 "./glsl.g" ++#line 896 "./glsl.g" + + case 34: { + ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_Multiply, expression(1), expression(3)); + } break; + +-#line 909 "./glsl.g" ++#line 903 "./glsl.g" + + case 35: { + ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_Divide, expression(1), expression(3)); + } break; + +-#line 916 "./glsl.g" ++#line 910 "./glsl.g" + + case 36: { + ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_Modulus, expression(1), expression(3)); + } break; + +-#line 923 "./glsl.g" ++#line 917 "./glsl.g" + + case 37: { + // nothing to do. + } break; + +-#line 930 "./glsl.g" ++#line 924 "./glsl.g" + + case 38: { + ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_Plus, expression(1), expression(3)); + } break; + +-#line 937 "./glsl.g" ++#line 931 "./glsl.g" + + case 39: { + ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_Minus, expression(1), expression(3)); + } break; + +-#line 944 "./glsl.g" ++#line 938 "./glsl.g" + + case 40: { + // nothing to do. + } break; + +-#line 951 "./glsl.g" ++#line 945 "./glsl.g" + + case 41: { + ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_ShiftLeft, expression(1), expression(3)); + } break; + +-#line 958 "./glsl.g" ++#line 952 "./glsl.g" + + case 42: { + ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_ShiftRight, expression(1), expression(3)); + } break; + +-#line 965 "./glsl.g" ++#line 959 "./glsl.g" + + case 43: { + // nothing to do. + } break; + +-#line 972 "./glsl.g" ++#line 966 "./glsl.g" + + case 44: { + ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_LessThan, expression(1), expression(3)); + } break; + +-#line 979 "./glsl.g" ++#line 973 "./glsl.g" + + case 45: { + ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_GreaterThan, expression(1), expression(3)); + } break; + +-#line 986 "./glsl.g" ++#line 980 "./glsl.g" + + case 46: { + ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_LessEqual, expression(1), expression(3)); + } break; + +-#line 993 "./glsl.g" ++#line 987 "./glsl.g" + + case 47: { + ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_GreaterEqual, expression(1), expression(3)); + } break; + +-#line 1000 "./glsl.g" ++#line 994 "./glsl.g" + + case 48: { + // nothing to do. + } break; + +-#line 1007 "./glsl.g" ++#line 1001 "./glsl.g" + + case 49: { + ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_Equal, expression(1), expression(3)); + } break; + +-#line 1014 "./glsl.g" ++#line 1008 "./glsl.g" + + case 50: { + ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_NotEqual, expression(1), expression(3)); + } break; + +-#line 1021 "./glsl.g" ++#line 1015 "./glsl.g" + + case 51: { + // nothing to do. + } break; + +-#line 1028 "./glsl.g" ++#line 1022 "./glsl.g" + + case 52: { + ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_BitwiseAnd, expression(1), expression(3)); + } break; + +-#line 1035 "./glsl.g" ++#line 1029 "./glsl.g" + + case 53: { + // nothing to do. + } break; + +-#line 1042 "./glsl.g" ++#line 1036 "./glsl.g" + + case 54: { + ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_BitwiseXor, expression(1), expression(3)); + } break; + +-#line 1049 "./glsl.g" ++#line 1043 "./glsl.g" + + case 55: { + // nothing to do. + } break; + +-#line 1056 "./glsl.g" ++#line 1050 "./glsl.g" + + case 56: { + ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_BitwiseOr, expression(1), expression(3)); + } break; + +-#line 1063 "./glsl.g" ++#line 1057 "./glsl.g" + + case 57: { + // nothing to do. + } break; + +-#line 1070 "./glsl.g" ++#line 1064 "./glsl.g" + + case 58: { + ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_LogicalAnd, expression(1), expression(3)); + } break; + +-#line 1077 "./glsl.g" ++#line 1071 "./glsl.g" + + case 59: { + // nothing to do. + } break; + +-#line 1084 "./glsl.g" ++#line 1078 "./glsl.g" + + case 60: { + ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_LogicalXor, expression(1), expression(3)); + } break; + +-#line 1091 "./glsl.g" ++#line 1085 "./glsl.g" + + case 61: { + // nothing to do. + } break; + +-#line 1098 "./glsl.g" ++#line 1092 "./glsl.g" + + case 62: { + ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_LogicalOr, expression(1), expression(3)); + } break; + +-#line 1105 "./glsl.g" ++#line 1099 "./glsl.g" + + case 63: { + // nothing to do. + } break; + +-#line 1112 "./glsl.g" ++#line 1106 "./glsl.g" + + case 64: { + ast(1) = makeAstNode<TernaryExpressionAST>(AST::Kind_Conditional, expression(1), expression(3), expression(5)); + } break; + +-#line 1119 "./glsl.g" ++#line 1113 "./glsl.g" + + case 65: { + // nothing to do. + } break; + +-#line 1126 "./glsl.g" ++#line 1120 "./glsl.g" + + case 66: { + ast(1) = makeAstNode<AssignmentExpressionAST>(sym(2).kind, expression(1), expression(3)); + } break; + +-#line 1133 "./glsl.g" ++#line 1127 "./glsl.g" + + case 67: { + sym(1).kind = AST::Kind_Assign; + } break; + +-#line 1140 "./glsl.g" ++#line 1134 "./glsl.g" + + case 68: { + sym(1).kind = AST::Kind_AssignMultiply; + } break; + +-#line 1147 "./glsl.g" ++#line 1141 "./glsl.g" + + case 69: { + sym(1).kind = AST::Kind_AssignDivide; + } break; + +-#line 1154 "./glsl.g" ++#line 1148 "./glsl.g" + + case 70: { + sym(1).kind = AST::Kind_AssignModulus; + } break; + +-#line 1161 "./glsl.g" ++#line 1155 "./glsl.g" + + case 71: { + sym(1).kind = AST::Kind_AssignPlus; + } break; + +-#line 1168 "./glsl.g" ++#line 1162 "./glsl.g" + + case 72: { + sym(1).kind = AST::Kind_AssignMinus; + } break; + +-#line 1175 "./glsl.g" ++#line 1169 "./glsl.g" + + case 73: { + sym(1).kind = AST::Kind_AssignShiftLeft; + } break; + +-#line 1182 "./glsl.g" ++#line 1176 "./glsl.g" + + case 74: { + sym(1).kind = AST::Kind_AssignShiftRight; + } break; + +-#line 1189 "./glsl.g" ++#line 1183 "./glsl.g" + + case 75: { + sym(1).kind = AST::Kind_AssignAnd; + } break; + +-#line 1196 "./glsl.g" ++#line 1190 "./glsl.g" + + case 76: { + sym(1).kind = AST::Kind_AssignXor; + } break; + +-#line 1203 "./glsl.g" ++#line 1197 "./glsl.g" + + case 77: { + sym(1).kind = AST::Kind_AssignOr; + } break; + +-#line 1210 "./glsl.g" ++#line 1204 "./glsl.g" + + case 78: { + // nothing to do. + } break; + +-#line 1217 "./glsl.g" ++#line 1211 "./glsl.g" + + case 79: { + ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_Comma, expression(1), expression(3)); + } break; + +-#line 1224 "./glsl.g" ++#line 1218 "./glsl.g" + + case 80: { + // nothing to do. + } break; + +-#line 1231 "./glsl.g" ++#line 1225 "./glsl.g" + + case 81: { + // nothing to do. + } break; + +-#line 1238 "./glsl.g" ++#line 1232 "./glsl.g" + + case 82: { + ast(1) = makeAstNode<InitDeclarationAST>(sym(1).declaration_list); + } break; + +-#line 1245 "./glsl.g" ++#line 1239 "./glsl.g" + + case 83: { + ast(1) = makeAstNode<PrecisionDeclarationAST>(sym(2).precision, type(3)); + } break; + +-#line 1252 "./glsl.g" ++#line 1246 "./glsl.g" + + case 84: { + if (sym(1).type_qualifier.qualifier != QualifiedTypeAST::Struct) { +@@ -743,7 +743,7 @@ case 84: { + ast(1) = makeAstNode<TypeDeclarationAST>(type); + } break; + +-#line 1263 "./glsl.g" ++#line 1257 "./glsl.g" + + case 85: { + if ((sym(1).type_qualifier.qualifier & QualifiedTypeAST::Struct) == 0) { +@@ -761,7 +761,7 @@ case 85: { + makeAstNode<VariableDeclarationAST>(qualtype, string(6))); + } break; + +-#line 1282 "./glsl.g" ++#line 1276 "./glsl.g" + + case 86: { + if ((sym(1).type_qualifier.qualifier & QualifiedTypeAST::Struct) == 0) { +@@ -780,7 +780,7 @@ case 86: { + (makeAstNode<ArrayTypeAST>(qualtype), string(6))); + } break; + +-#line 1302 "./glsl.g" ++#line 1296 "./glsl.g" + + case 87: { + if ((sym(1).type_qualifier.qualifier & QualifiedTypeAST::Struct) == 0) { +@@ -799,7 +799,7 @@ case 87: { + (makeAstNode<ArrayTypeAST>(qualtype, expression(8)), string(6))); + } break; + +-#line 1322 "./glsl.g" ++#line 1316 "./glsl.g" + + case 88: { + TypeAST *type = makeAstNode<QualifiedTypeAST> +@@ -808,59 +808,59 @@ case 88: { + ast(1) = makeAstNode<TypeDeclarationAST>(type); + } break; + +-#line 1332 "./glsl.g" ++#line 1326 "./glsl.g" + + case 89: { + function(1)->finishParams(); + } break; + +-#line 1339 "./glsl.g" ++#line 1333 "./glsl.g" + + case 90: { + // nothing to do. + } break; + +-#line 1346 "./glsl.g" ++#line 1340 "./glsl.g" + + case 91: { + // nothing to do. + } break; + +-#line 1353 "./glsl.g" ++#line 1347 "./glsl.g" + + case 92: { + function(1)->params = makeAstNode< List<ParameterDeclarationAST *> > + (sym(2).param_declaration); + } break; + +-#line 1361 "./glsl.g" ++#line 1355 "./glsl.g" + + case 93: { + function(1)->params = makeAstNode< List<ParameterDeclarationAST *> > + (function(1)->params, sym(3).param_declaration); + } break; + +-#line 1369 "./glsl.g" ++#line 1363 "./glsl.g" + + case 94: { + function(1) = makeAstNode<FunctionDeclarationAST>(type(1), string(2)); + } break; + +-#line 1376 "./glsl.g" ++#line 1370 "./glsl.g" + + case 95: { + sym(1).param_declarator.type = type(1); + sym(1).param_declarator.name = string(2); + } break; + +-#line 1384 "./glsl.g" ++#line 1378 "./glsl.g" + + case 96: { + sym(1).param_declarator.type = makeAstNode<ArrayTypeAST>(type(1), expression(4)); + sym(1).param_declarator.name = string(2); + } break; + +-#line 1392 "./glsl.g" ++#line 1386 "./glsl.g" + + case 97: { + ast(1) = makeAstNode<ParameterDeclarationAST> +@@ -871,7 +871,7 @@ case 97: { + sym(3).param_declarator.name); + } break; + +-#line 1404 "./glsl.g" ++#line 1398 "./glsl.g" + + case 98: { + ast(1) = makeAstNode<ParameterDeclarationAST> +@@ -880,7 +880,7 @@ case 98: { + sym(2).param_declarator.name); + } break; + +-#line 1414 "./glsl.g" ++#line 1408 "./glsl.g" + + case 99: { + ast(1) = makeAstNode<ParameterDeclarationAST> +@@ -890,7 +890,7 @@ case 99: { + (const QString *)0); + } break; + +-#line 1425 "./glsl.g" ++#line 1419 "./glsl.g" + + case 100: { + ast(1) = makeAstNode<ParameterDeclarationAST> +@@ -898,44 +898,44 @@ case 100: { + (const QString *)0); + } break; + +-#line 1434 "./glsl.g" ++#line 1428 "./glsl.g" + + case 101: { + sym(1).qualifier = ParameterDeclarationAST::In; + } break; + +-#line 1441 "./glsl.g" ++#line 1435 "./glsl.g" + + case 102: { + sym(1).qualifier = ParameterDeclarationAST::In; + } break; + +-#line 1448 "./glsl.g" ++#line 1442 "./glsl.g" + + case 103: { + sym(1).qualifier = ParameterDeclarationAST::Out; + } break; + +-#line 1455 "./glsl.g" ++#line 1449 "./glsl.g" + + case 104: { + sym(1).qualifier = ParameterDeclarationAST::InOut; + } break; + +-#line 1462 "./glsl.g" ++#line 1456 "./glsl.g" + + case 105: { + // nothing to do. + } break; + +-#line 1469 "./glsl.g" ++#line 1463 "./glsl.g" + + case 106: { + sym(1).declaration_list = makeAstNode< List<DeclarationAST *> > + (sym(1).declaration); + } break; + +-#line 1477 "./glsl.g" ++#line 1471 "./glsl.g" + + case 107: { + TypeAST *type = VariableDeclarationAST::declarationType(sym(1).declaration_list); +@@ -944,7 +944,7 @@ case 107: { + (sym(1).declaration_list, decl); + } break; + +-#line 1487 "./glsl.g" ++#line 1481 "./glsl.g" + + case 108: { + TypeAST *type = VariableDeclarationAST::declarationType(sym(1).declaration_list); +@@ -954,7 +954,7 @@ case 108: { + (sym(1).declaration_list, decl); + } break; + +-#line 1498 "./glsl.g" ++#line 1492 "./glsl.g" + + case 109: { + TypeAST *type = VariableDeclarationAST::declarationType(sym(1).declaration_list); +@@ -964,7 +964,7 @@ case 109: { + (sym(1).declaration_list, decl); + } break; + +-#line 1509 "./glsl.g" ++#line 1503 "./glsl.g" + + case 110: { + TypeAST *type = VariableDeclarationAST::declarationType(sym(1).declaration_list); +@@ -975,7 +975,7 @@ case 110: { + (sym(1).declaration_list, decl); + } break; + +-#line 1521 "./glsl.g" ++#line 1515 "./glsl.g" + + case 111: { + TypeAST *type = VariableDeclarationAST::declarationType(sym(1).declaration_list); +@@ -986,7 +986,7 @@ case 111: { + (sym(1).declaration_list, decl); + } break; + +-#line 1533 "./glsl.g" ++#line 1527 "./glsl.g" + + case 112: { + TypeAST *type = VariableDeclarationAST::declarationType(sym(1).declaration_list); +@@ -996,40 +996,40 @@ case 112: { + (sym(1).declaration_list, decl); + } break; + +-#line 1544 "./glsl.g" ++#line 1538 "./glsl.g" + + case 113: { + ast(1) = makeAstNode<TypeDeclarationAST>(type(1)); + } break; + +-#line 1551 "./glsl.g" ++#line 1545 "./glsl.g" + + case 114: { + ast(1) = makeAstNode<VariableDeclarationAST>(type(1), string(2)); + } break; + +-#line 1558 "./glsl.g" ++#line 1552 "./glsl.g" + + case 115: { + ast(1) = makeAstNode<VariableDeclarationAST> + (makeAstNode<ArrayTypeAST>(type(1)), string(2)); + } break; + +-#line 1566 "./glsl.g" ++#line 1560 "./glsl.g" + + case 116: { + ast(1) = makeAstNode<VariableDeclarationAST> + (makeAstNode<ArrayTypeAST>(type(1), expression(4)), string(2)); + } break; + +-#line 1574 "./glsl.g" ++#line 1568 "./glsl.g" + + case 117: { + ast(1) = makeAstNode<VariableDeclarationAST> + (makeAstNode<ArrayTypeAST>(type(1)), string(2), expression(6)); + } break; + +-#line 1582 "./glsl.g" ++#line 1576 "./glsl.g" + + case 118: { + ast(1) = makeAstNode<VariableDeclarationAST> +@@ -1037,26 +1037,26 @@ case 118: { + string(2), expression(7)); + } break; + +-#line 1591 "./glsl.g" ++#line 1585 "./glsl.g" + + case 119: { + ast(1) = makeAstNode<VariableDeclarationAST> + (type(1), string(2), expression(4)); + } break; + +-#line 1599 "./glsl.g" ++#line 1593 "./glsl.g" + + case 120: { + ast(1) = makeAstNode<InvariantDeclarationAST>(string(2)); + } break; + +-#line 1606 "./glsl.g" ++#line 1600 "./glsl.g" + + case 121: { + ast(1) = makeAstNode<QualifiedTypeAST>(0, type(1), (List<LayoutQualifierAST *> *)0); + } break; + +-#line 1613 "./glsl.g" ++#line 1607 "./glsl.g" + + case 122: { + ast(1) = makeAstNode<QualifiedTypeAST> +@@ -1064,207 +1064,207 @@ case 122: { + sym(1).type_qualifier.layout_list); + } break; + +-#line 1622 "./glsl.g" ++#line 1616 "./glsl.g" + + case 123: { + sym(1).qualifier = QualifiedTypeAST::Invariant; + } break; + +-#line 1629 "./glsl.g" ++#line 1623 "./glsl.g" + + case 124: { + sym(1).qualifier = QualifiedTypeAST::Smooth; + } break; + +-#line 1636 "./glsl.g" ++#line 1630 "./glsl.g" + + case 125: { + sym(1).qualifier = QualifiedTypeAST::Flat; + } break; + +-#line 1643 "./glsl.g" ++#line 1637 "./glsl.g" + + case 126: { + sym(1).qualifier = QualifiedTypeAST::NoPerspective; + } break; + +-#line 1650 "./glsl.g" ++#line 1644 "./glsl.g" + + case 127: { + sym(1) = sym(3); + } break; + +-#line 1657 "./glsl.g" ++#line 1651 "./glsl.g" + + case 128: { + sym(1).layout_list = makeAstNode< List<LayoutQualifierAST *> >(sym(1).layout); + } break; + +-#line 1664 "./glsl.g" ++#line 1658 "./glsl.g" + + case 129: { + sym(1).layout_list = makeAstNode< List<LayoutQualifierAST *> >(sym(1).layout_list, sym(3).layout); + } break; + +-#line 1671 "./glsl.g" ++#line 1665 "./glsl.g" + + case 130: { + sym(1).layout = makeAstNode<LayoutQualifierAST>(string(1), (const QString *)0); + } break; + +-#line 1678 "./glsl.g" ++#line 1672 "./glsl.g" + + case 131: { + sym(1).layout = makeAstNode<LayoutQualifierAST>(string(1), string(3)); + } break; + +-#line 1685 "./glsl.g" ++#line 1679 "./glsl.g" + + case 132: { + sym(1).qualifier = QualifiedTypeAST::Const; + } break; + +-#line 1692 "./glsl.g" ++#line 1686 "./glsl.g" + + case 133: { + sym(1).type_qualifier.qualifier = sym(1).qualifier; + sym(1).type_qualifier.layout_list = 0; + } break; + +-#line 1700 "./glsl.g" ++#line 1694 "./glsl.g" + + case 134: { + sym(1).type_qualifier.layout_list = sym(1).layout_list; + sym(1).type_qualifier.qualifier = 0; + } break; + +-#line 1708 "./glsl.g" ++#line 1702 "./glsl.g" + + case 135: { + sym(1).type_qualifier.layout_list = sym(1).layout_list; + sym(1).type_qualifier.qualifier = sym(2).qualifier; + } break; + +-#line 1716 "./glsl.g" ++#line 1710 "./glsl.g" + + case 136: { + sym(1).type_qualifier.qualifier = sym(1).qualifier | sym(2).qualifier; + sym(1).type_qualifier.layout_list = 0; + } break; + +-#line 1724 "./glsl.g" ++#line 1718 "./glsl.g" + + case 137: { + sym(1).type_qualifier.qualifier = sym(1).qualifier; + sym(1).type_qualifier.layout_list = 0; + } break; + +-#line 1732 "./glsl.g" ++#line 1726 "./glsl.g" + + case 138: { + sym(1).type_qualifier.qualifier = sym(1).qualifier | sym(2).qualifier; + sym(1).type_qualifier.layout_list = 0; + } break; + +-#line 1740 "./glsl.g" ++#line 1734 "./glsl.g" + + case 139: { + sym(1).type_qualifier.qualifier = sym(1).qualifier | sym(2).qualifier | sym(3).qualifier; + sym(1).type_qualifier.layout_list = 0; + } break; + +-#line 1748 "./glsl.g" ++#line 1742 "./glsl.g" + + case 140: { + sym(1).type_qualifier.qualifier = QualifiedTypeAST::Invariant; + sym(1).type_qualifier.layout_list = 0; + } break; + +-#line 1756 "./glsl.g" ++#line 1750 "./glsl.g" + + case 141: { + sym(1).qualifier = QualifiedTypeAST::Const; + } break; + +-#line 1763 "./glsl.g" ++#line 1757 "./glsl.g" + + case 142: { + sym(1).qualifier = QualifiedTypeAST::Attribute; + } break; + +-#line 1770 "./glsl.g" ++#line 1764 "./glsl.g" + + case 143: { + sym(1).qualifier = QualifiedTypeAST::Varying; + } break; + +-#line 1777 "./glsl.g" ++#line 1771 "./glsl.g" + + case 144: { + sym(1).qualifier = QualifiedTypeAST::CentroidVarying; + } break; + +-#line 1784 "./glsl.g" ++#line 1778 "./glsl.g" + + case 145: { + sym(1).qualifier = QualifiedTypeAST::In; + } break; + +-#line 1791 "./glsl.g" ++#line 1785 "./glsl.g" + + case 146: { + sym(1).qualifier = QualifiedTypeAST::Out; + } break; + +-#line 1798 "./glsl.g" ++#line 1792 "./glsl.g" + + case 147: { + sym(1).qualifier = QualifiedTypeAST::CentroidIn; + } break; + +-#line 1805 "./glsl.g" ++#line 1799 "./glsl.g" + + case 148: { + sym(1).qualifier = QualifiedTypeAST::CentroidOut; + } break; + +-#line 1812 "./glsl.g" ++#line 1806 "./glsl.g" + + case 149: { + sym(1).qualifier = QualifiedTypeAST::PatchIn; + } break; + +-#line 1819 "./glsl.g" ++#line 1813 "./glsl.g" + + case 150: { + sym(1).qualifier = QualifiedTypeAST::PatchOut; + } break; + +-#line 1826 "./glsl.g" ++#line 1820 "./glsl.g" + + case 151: { + sym(1).qualifier = QualifiedTypeAST::SampleIn; + } break; + +-#line 1833 "./glsl.g" ++#line 1827 "./glsl.g" + + case 152: { + sym(1).qualifier = QualifiedTypeAST::SampleOut; + } break; + +-#line 1840 "./glsl.g" ++#line 1834 "./glsl.g" + + case 153: { + sym(1).qualifier = QualifiedTypeAST::Uniform; + } break; + +-#line 1847 "./glsl.g" ++#line 1841 "./glsl.g" + + case 154: { + // nothing to do. + } break; + +-#line 1854 "./glsl.g" ++#line 1848 "./glsl.g" + + case 155: { + if (!type(2)->setPrecision(sym(1).precision)) { +@@ -1273,595 +1273,595 @@ case 155: { + ast(1) = type(2); + } break; + +-#line 1864 "./glsl.g" ++#line 1858 "./glsl.g" + + case 156: { + // nothing to do. + } break; + +-#line 1871 "./glsl.g" ++#line 1865 "./glsl.g" + + case 157: { + ast(1) = makeAstNode<ArrayTypeAST>(type(1)); + } break; + +-#line 1878 "./glsl.g" ++#line 1872 "./glsl.g" + + case 158: { + ast(1) = makeAstNode<ArrayTypeAST>(type(1), expression(3)); + } break; + +-#line 1885 "./glsl.g" ++#line 1879 "./glsl.g" + + case 159: { + ast(1) = makeBasicType(T_VOID); + } break; + +-#line 1892 "./glsl.g" ++#line 1886 "./glsl.g" + + case 160: { + ast(1) = makeBasicType(T_FLOAT); + } break; + +-#line 1899 "./glsl.g" ++#line 1893 "./glsl.g" + + case 161: { + ast(1) = makeBasicType(T_DOUBLE); + } break; + +-#line 1906 "./glsl.g" ++#line 1900 "./glsl.g" + + case 162: { + ast(1) = makeBasicType(T_INT); + } break; + +-#line 1913 "./glsl.g" ++#line 1907 "./glsl.g" + + case 163: { + ast(1) = makeBasicType(T_UINT); + } break; + +-#line 1920 "./glsl.g" ++#line 1914 "./glsl.g" + + case 164: { + ast(1) = makeBasicType(T_BOOL); + } break; + +-#line 1927 "./glsl.g" ++#line 1921 "./glsl.g" + + case 165: { + ast(1) = makeBasicType(T_VEC2); + } break; + +-#line 1934 "./glsl.g" ++#line 1928 "./glsl.g" + + case 166: { + ast(1) = makeBasicType(T_VEC3); + } break; + +-#line 1941 "./glsl.g" ++#line 1935 "./glsl.g" + + case 167: { + ast(1) = makeBasicType(T_VEC4); + } break; + +-#line 1948 "./glsl.g" ++#line 1942 "./glsl.g" + + case 168: { + ast(1) = makeBasicType(T_DVEC2); + } break; + +-#line 1955 "./glsl.g" ++#line 1949 "./glsl.g" + + case 169: { + ast(1) = makeBasicType(T_DVEC3); + } break; + +-#line 1962 "./glsl.g" ++#line 1956 "./glsl.g" + + case 170: { + ast(1) = makeBasicType(T_DVEC4); + } break; + +-#line 1969 "./glsl.g" ++#line 1963 "./glsl.g" + + case 171: { + ast(1) = makeBasicType(T_BVEC2); + } break; + +-#line 1976 "./glsl.g" ++#line 1970 "./glsl.g" + + case 172: { + ast(1) = makeBasicType(T_BVEC3); + } break; + +-#line 1983 "./glsl.g" ++#line 1977 "./glsl.g" + + case 173: { + ast(1) = makeBasicType(T_BVEC4); + } break; + +-#line 1990 "./glsl.g" ++#line 1984 "./glsl.g" + + case 174: { + ast(1) = makeBasicType(T_IVEC2); + } break; + +-#line 1997 "./glsl.g" ++#line 1991 "./glsl.g" + + case 175: { + ast(1) = makeBasicType(T_IVEC3); + } break; + +-#line 2004 "./glsl.g" ++#line 1998 "./glsl.g" + + case 176: { + ast(1) = makeBasicType(T_IVEC4); + } break; + +-#line 2011 "./glsl.g" ++#line 2005 "./glsl.g" + + case 177: { + ast(1) = makeBasicType(T_UVEC2); + } break; + +-#line 2018 "./glsl.g" ++#line 2012 "./glsl.g" + + case 178: { + ast(1) = makeBasicType(T_UVEC3); + } break; + +-#line 2025 "./glsl.g" ++#line 2019 "./glsl.g" + + case 179: { + ast(1) = makeBasicType(T_UVEC4); + } break; + +-#line 2032 "./glsl.g" ++#line 2026 "./glsl.g" + + case 180: { + ast(1) = makeBasicType(T_MAT2); + } break; + +-#line 2039 "./glsl.g" ++#line 2033 "./glsl.g" + + case 181: { + ast(1) = makeBasicType(T_MAT3); + } break; + +-#line 2046 "./glsl.g" ++#line 2040 "./glsl.g" + + case 182: { + ast(1) = makeBasicType(T_MAT4); + } break; + +-#line 2053 "./glsl.g" ++#line 2047 "./glsl.g" + + case 183: { + ast(1) = makeBasicType(T_MAT2); + } break; + +-#line 2060 "./glsl.g" ++#line 2054 "./glsl.g" + + case 184: { + ast(1) = makeBasicType(T_MAT2X3); + } break; + +-#line 2067 "./glsl.g" ++#line 2061 "./glsl.g" + + case 185: { + ast(1) = makeBasicType(T_MAT2X4); + } break; + +-#line 2074 "./glsl.g" ++#line 2068 "./glsl.g" + + case 186: { + ast(1) = makeBasicType(T_MAT3X2); + } break; + +-#line 2081 "./glsl.g" ++#line 2075 "./glsl.g" + + case 187: { + ast(1) = makeBasicType(T_MAT3); + } break; + +-#line 2088 "./glsl.g" ++#line 2082 "./glsl.g" + + case 188: { + ast(1) = makeBasicType(T_MAT3X4); + } break; + +-#line 2095 "./glsl.g" ++#line 2089 "./glsl.g" + + case 189: { + ast(1) = makeBasicType(T_MAT4X2); + } break; + +-#line 2102 "./glsl.g" ++#line 2096 "./glsl.g" + + case 190: { + ast(1) = makeBasicType(T_MAT4X3); + } break; + +-#line 2109 "./glsl.g" ++#line 2103 "./glsl.g" + + case 191: { + ast(1) = makeBasicType(T_MAT4); + } break; + +-#line 2116 "./glsl.g" ++#line 2110 "./glsl.g" + + case 192: { + ast(1) = makeBasicType(T_DMAT2); + } break; + +-#line 2123 "./glsl.g" ++#line 2117 "./glsl.g" + + case 193: { + ast(1) = makeBasicType(T_DMAT3); + } break; + +-#line 2130 "./glsl.g" ++#line 2124 "./glsl.g" + + case 194: { + ast(1) = makeBasicType(T_DMAT4); + } break; + +-#line 2137 "./glsl.g" ++#line 2131 "./glsl.g" + + case 195: { + ast(1) = makeBasicType(T_DMAT2); + } break; + +-#line 2144 "./glsl.g" ++#line 2138 "./glsl.g" + + case 196: { + ast(1) = makeBasicType(T_DMAT2X3); + } break; + +-#line 2151 "./glsl.g" ++#line 2145 "./glsl.g" + + case 197: { + ast(1) = makeBasicType(T_DMAT2X4); + } break; + +-#line 2158 "./glsl.g" ++#line 2152 "./glsl.g" + + case 198: { + ast(1) = makeBasicType(T_DMAT3X2); + } break; + +-#line 2165 "./glsl.g" ++#line 2159 "./glsl.g" + + case 199: { + ast(1) = makeBasicType(T_DMAT3); + } break; + +-#line 2172 "./glsl.g" ++#line 2166 "./glsl.g" + + case 200: { + ast(1) = makeBasicType(T_DMAT3X4); + } break; + +-#line 2179 "./glsl.g" ++#line 2173 "./glsl.g" + + case 201: { + ast(1) = makeBasicType(T_DMAT4X2); + } break; + +-#line 2186 "./glsl.g" ++#line 2180 "./glsl.g" + + case 202: { + ast(1) = makeBasicType(T_DMAT4X3); + } break; + +-#line 2193 "./glsl.g" ++#line 2187 "./glsl.g" + + case 203: { + ast(1) = makeBasicType(T_DMAT4); + } break; + +-#line 2200 "./glsl.g" ++#line 2194 "./glsl.g" + + case 204: { + ast(1) = makeBasicType(T_SAMPLER1D); + } break; + +-#line 2207 "./glsl.g" ++#line 2201 "./glsl.g" + + case 205: { + ast(1) = makeBasicType(T_SAMPLER2D); + } break; + +-#line 2214 "./glsl.g" ++#line 2208 "./glsl.g" + + case 206: { + ast(1) = makeBasicType(T_SAMPLER3D); + } break; + +-#line 2221 "./glsl.g" ++#line 2215 "./glsl.g" + + case 207: { + ast(1) = makeBasicType(T_SAMPLERCUBE); + } break; + +-#line 2228 "./glsl.g" ++#line 2222 "./glsl.g" + + case 208: { + ast(1) = makeBasicType(T_SAMPLER1DSHADOW); + } break; + +-#line 2235 "./glsl.g" ++#line 2229 "./glsl.g" + + case 209: { + ast(1) = makeBasicType(T_SAMPLER2DSHADOW); + } break; + +-#line 2242 "./glsl.g" ++#line 2236 "./glsl.g" + + case 210: { + ast(1) = makeBasicType(T_SAMPLERCUBESHADOW); + } break; + +-#line 2249 "./glsl.g" ++#line 2243 "./glsl.g" + + case 211: { + ast(1) = makeBasicType(T_SAMPLER1DARRAY); + } break; + +-#line 2256 "./glsl.g" ++#line 2250 "./glsl.g" + + case 212: { + ast(1) = makeBasicType(T_SAMPLER2DARRAY); + } break; + +-#line 2263 "./glsl.g" ++#line 2257 "./glsl.g" + + case 213: { + ast(1) = makeBasicType(T_SAMPLER1DARRAYSHADOW); + } break; + +-#line 2270 "./glsl.g" ++#line 2264 "./glsl.g" + + case 214: { + ast(1) = makeBasicType(T_SAMPLER2DARRAYSHADOW); + } break; + +-#line 2277 "./glsl.g" ++#line 2271 "./glsl.g" + + case 215: { + ast(1) = makeBasicType(T_SAMPLERCUBEARRAY); + } break; + +-#line 2284 "./glsl.g" ++#line 2278 "./glsl.g" + + case 216: { + ast(1) = makeBasicType(T_SAMPLERCUBEARRAYSHADOW); + } break; + +-#line 2291 "./glsl.g" ++#line 2285 "./glsl.g" + + case 217: { + ast(1) = makeBasicType(T_ISAMPLER1D); + } break; + +-#line 2298 "./glsl.g" ++#line 2292 "./glsl.g" + + case 218: { + ast(1) = makeBasicType(T_ISAMPLER2D); + } break; + +-#line 2305 "./glsl.g" ++#line 2299 "./glsl.g" + + case 219: { + ast(1) = makeBasicType(T_ISAMPLER3D); + } break; + +-#line 2312 "./glsl.g" ++#line 2306 "./glsl.g" + + case 220: { + ast(1) = makeBasicType(T_ISAMPLERCUBE); + } break; + +-#line 2319 "./glsl.g" ++#line 2313 "./glsl.g" + + case 221: { + ast(1) = makeBasicType(T_ISAMPLER1DARRAY); + } break; + +-#line 2326 "./glsl.g" ++#line 2320 "./glsl.g" + + case 222: { + ast(1) = makeBasicType(T_ISAMPLER2DARRAY); + } break; + +-#line 2333 "./glsl.g" ++#line 2327 "./glsl.g" + + case 223: { + ast(1) = makeBasicType(T_ISAMPLERCUBEARRAY); + } break; + +-#line 2340 "./glsl.g" ++#line 2334 "./glsl.g" + + case 224: { + ast(1) = makeBasicType(T_USAMPLER1D); + } break; + +-#line 2347 "./glsl.g" ++#line 2341 "./glsl.g" + + case 225: { + ast(1) = makeBasicType(T_USAMPLER2D); + } break; + +-#line 2354 "./glsl.g" ++#line 2348 "./glsl.g" + + case 226: { + ast(1) = makeBasicType(T_USAMPLER3D); + } break; + +-#line 2361 "./glsl.g" ++#line 2355 "./glsl.g" + + case 227: { + ast(1) = makeBasicType(T_USAMPLERCUBE); + } break; + +-#line 2368 "./glsl.g" ++#line 2362 "./glsl.g" + + case 228: { + ast(1) = makeBasicType(T_USAMPLER1DARRAY); + } break; + +-#line 2375 "./glsl.g" ++#line 2369 "./glsl.g" + + case 229: { + ast(1) = makeBasicType(T_USAMPLER2DARRAY); + } break; + +-#line 2382 "./glsl.g" ++#line 2376 "./glsl.g" + + case 230: { + ast(1) = makeBasicType(T_USAMPLERCUBEARRAY); + } break; + +-#line 2389 "./glsl.g" ++#line 2383 "./glsl.g" + + case 231: { + ast(1) = makeBasicType(T_SAMPLER2DRECT); + } break; + +-#line 2396 "./glsl.g" ++#line 2390 "./glsl.g" + + case 232: { + ast(1) = makeBasicType(T_SAMPLER2DRECTSHADOW); + } break; + +-#line 2403 "./glsl.g" ++#line 2397 "./glsl.g" + + case 233: { + ast(1) = makeBasicType(T_ISAMPLER2DRECT); + } break; + +-#line 2410 "./glsl.g" ++#line 2404 "./glsl.g" + + case 234: { + ast(1) = makeBasicType(T_USAMPLER2DRECT); + } break; + +-#line 2417 "./glsl.g" ++#line 2411 "./glsl.g" + + case 235: { + ast(1) = makeBasicType(T_SAMPLERBUFFER); + } break; + +-#line 2424 "./glsl.g" ++#line 2418 "./glsl.g" + + case 236: { + ast(1) = makeBasicType(T_ISAMPLERBUFFER); + } break; + +-#line 2431 "./glsl.g" ++#line 2425 "./glsl.g" + + case 237: { + ast(1) = makeBasicType(T_USAMPLERBUFFER); + } break; + +-#line 2438 "./glsl.g" ++#line 2432 "./glsl.g" + + case 238: { + ast(1) = makeBasicType(T_SAMPLER2DMS); + } break; + +-#line 2445 "./glsl.g" ++#line 2439 "./glsl.g" + + case 239: { + ast(1) = makeBasicType(T_ISAMPLER2DMS); + } break; + +-#line 2452 "./glsl.g" ++#line 2446 "./glsl.g" + + case 240: { + ast(1) = makeBasicType(T_USAMPLER2DMS); + } break; + +-#line 2459 "./glsl.g" ++#line 2453 "./glsl.g" + + case 241: { + ast(1) = makeBasicType(T_SAMPLER2DMSARRAY); + } break; + +-#line 2466 "./glsl.g" ++#line 2460 "./glsl.g" + + case 242: { + ast(1) = makeBasicType(T_ISAMPLER2DMSARRAY); + } break; + +-#line 2473 "./glsl.g" ++#line 2467 "./glsl.g" + + case 243: { + ast(1) = makeBasicType(T_USAMPLER2DMSARRAY); + } break; + +-#line 2480 "./glsl.g" ++#line 2474 "./glsl.g" + + case 244: { + // nothing to do. + } break; + +-#line 2487 "./glsl.g" ++#line 2481 "./glsl.g" + + case 245: { + ast(1) = makeAstNode<NamedTypeAST>(string(1)); + } break; + +-#line 2494 "./glsl.g" ++#line 2488 "./glsl.g" + + case 246: { + sym(1).precision = TypeAST::Highp; + } break; + +-#line 2501 "./glsl.g" ++#line 2495 "./glsl.g" + + case 247: { + sym(1).precision = TypeAST::Mediump; + } break; + +-#line 2508 "./glsl.g" ++#line 2502 "./glsl.g" + + case 248: { + sym(1).precision = TypeAST::Lowp; + } break; + +-#line 2515 "./glsl.g" ++#line 2509 "./glsl.g" + + case 249: { + ast(1) = makeAstNode<StructTypeAST>(string(2), sym(4).field_list); + } break; + +-#line 2522 "./glsl.g" ++#line 2516 "./glsl.g" + + case 250: { + ast(1) = makeAstNode<StructTypeAST>(sym(3).field_list); + } break; + +-#line 2529 "./glsl.g" ++#line 2523 "./glsl.g" + + case 251: { + // nothing to do. + } break; + +-#line 2536 "./glsl.g" ++#line 2530 "./glsl.g" + + case 252: { + sym(1).field_list = appendLists(sym(1).field_list, sym(2).field_list); + } break; + +-#line 2543 "./glsl.g" ++#line 2537 "./glsl.g" + + case 253: { + sym(1).field_list = StructTypeAST::fixInnerTypes(type(1), sym(2).field_list); + } break; + +-#line 2550 "./glsl.g" ++#line 2544 "./glsl.g" + + case 254: { + sym(1).field_list = StructTypeAST::fixInnerTypes +@@ -1870,106 +1870,106 @@ case 254: { + sym(1).type_qualifier.layout_list), sym(3).field_list); + } break; + +-#line 2560 "./glsl.g" ++#line 2554 "./glsl.g" + + case 255: { + // nothing to do. + sym(1).field_list = makeAstNode< List<StructTypeAST::Field *> >(sym(1).field); + } break; + +-#line 2568 "./glsl.g" ++#line 2562 "./glsl.g" + + case 256: { + sym(1).field_list = makeAstNode< List<StructTypeAST::Field *> >(sym(1).field_list, sym(3).field); + } break; + +-#line 2575 "./glsl.g" ++#line 2569 "./glsl.g" + + case 257: { + sym(1).field = makeAstNode<StructTypeAST::Field>(string(1)); + } break; + +-#line 2582 "./glsl.g" ++#line 2576 "./glsl.g" + + case 258: { + sym(1).field = makeAstNode<StructTypeAST::Field> + (string(1), makeAstNode<ArrayTypeAST>((TypeAST *)0)); + } break; + +-#line 2590 "./glsl.g" ++#line 2584 "./glsl.g" + + case 259: { + sym(1).field = makeAstNode<StructTypeAST::Field> + (string(1), makeAstNode<ArrayTypeAST>((TypeAST *)0, expression(3))); + } break; + +-#line 2598 "./glsl.g" ++#line 2592 "./glsl.g" + + case 260: { + // nothing to do. + } break; + +-#line 2605 "./glsl.g" ++#line 2599 "./glsl.g" + + case 261: { + ast(1) = makeAstNode<DeclarationStatementAST>(sym(1).declaration); + } break; + +-#line 2612 "./glsl.g" ++#line 2606 "./glsl.g" + + case 262: { + // nothing to do. + } break; + +-#line 2619 "./glsl.g" ++#line 2613 "./glsl.g" + + case 263: { + // nothing to do. + } break; + +-#line 2626 "./glsl.g" ++#line 2620 "./glsl.g" + + case 264: { + // nothing to do. + } break; + +-#line 2633 "./glsl.g" ++#line 2627 "./glsl.g" + + case 265: { + // nothing to do. + } break; + +-#line 2640 "./glsl.g" ++#line 2634 "./glsl.g" + + case 266: { + // nothing to do. + } break; + +-#line 2647 "./glsl.g" ++#line 2641 "./glsl.g" + + case 267: { + // nothing to do. + } break; + +-#line 2654 "./glsl.g" ++#line 2648 "./glsl.g" + + case 268: { + // nothing to do. + } break; + +-#line 2661 "./glsl.g" ++#line 2655 "./glsl.g" + + case 269: { + // nothing to do. + } break; + +-#line 2668 "./glsl.g" ++#line 2662 "./glsl.g" + + case 270: { + // nothing to do. + } break; + +-#line 2675 "./glsl.g" ++#line 2669 "./glsl.g" + + case 271: { + CompoundStatementAST *stmt = makeAstNode<CompoundStatementAST>(); +@@ -1978,7 +1978,7 @@ case 271: { + ast(1) = stmt; + } break; + +-#line 2685 "./glsl.g" ++#line 2679 "./glsl.g" + + case 272: { + CompoundStatementAST *stmt = makeAstNode<CompoundStatementAST>(sym(2).statement_list); +@@ -1987,19 +1987,19 @@ case 272: { + ast(1) = stmt; + } break; + +-#line 2695 "./glsl.g" ++#line 2689 "./glsl.g" + + case 273: { + // nothing to do. + } break; + +-#line 2702 "./glsl.g" ++#line 2696 "./glsl.g" + + case 274: { + // nothing to do. + } break; + +-#line 2709 "./glsl.g" ++#line 2703 "./glsl.g" + + case 275: { + CompoundStatementAST *stmt = makeAstNode<CompoundStatementAST>(); +@@ -2008,7 +2008,7 @@ case 275: { + ast(1) = stmt; + } break; + +-#line 2719 "./glsl.g" ++#line 2713 "./glsl.g" + + case 276: { + CompoundStatementAST *stmt = makeAstNode<CompoundStatementAST>(sym(2).statement_list); +@@ -2017,186 +2017,186 @@ case 276: { + ast(1) = stmt; + } break; + +-#line 2729 "./glsl.g" ++#line 2723 "./glsl.g" + + case 277: { + sym(1).statement_list = makeAstNode< List<StatementAST *> >(sym(1).statement); + } break; + +-#line 2736 "./glsl.g" ++#line 2730 "./glsl.g" + + case 278: { + sym(1).statement_list = makeAstNode< List<StatementAST *> >(sym(1).statement_list, sym(2).statement); + } break; + +-#line 2743 "./glsl.g" ++#line 2737 "./glsl.g" + + case 279: { + ast(1) = makeAstNode<CompoundStatementAST>(); // Empty statement + } break; + +-#line 2750 "./glsl.g" ++#line 2744 "./glsl.g" + + case 280: { + ast(1) = makeAstNode<ExpressionStatementAST>(expression(1)); + } break; + +-#line 2757 "./glsl.g" ++#line 2751 "./glsl.g" + + case 281: { + ast(1) = makeAstNode<IfStatementAST>(expression(3), sym(5).ifstmt.thenClause, sym(5).ifstmt.elseClause); + } break; + +-#line 2764 "./glsl.g" ++#line 2758 "./glsl.g" + + case 282: { + sym(1).ifstmt.thenClause = statement(1); + sym(1).ifstmt.elseClause = statement(3); + } break; + +-#line 2772 "./glsl.g" ++#line 2766 "./glsl.g" + + case 283: { + sym(1).ifstmt.thenClause = statement(1); + sym(1).ifstmt.elseClause = 0; + } break; + +-#line 2780 "./glsl.g" ++#line 2774 "./glsl.g" + + case 284: { + // nothing to do. + } break; + +-#line 2787 "./glsl.g" ++#line 2781 "./glsl.g" + + case 285: { + ast(1) = makeAstNode<DeclarationExpressionAST> + (type(1), string(2), expression(4)); + } break; + +-#line 2795 "./glsl.g" ++#line 2789 "./glsl.g" + + case 286: { + ast(1) = makeAstNode<SwitchStatementAST>(expression(3), statement(6)); + } break; + +-#line 2802 "./glsl.g" ++#line 2796 "./glsl.g" + + case 287: { + ast(1) = makeAstNode<CompoundStatementAST>(); + } break; + +-#line 2809 "./glsl.g" ++#line 2803 "./glsl.g" + + case 288: { + ast(1) = makeAstNode<CompoundStatementAST>(sym(1).statement_list); + } break; + +-#line 2816 "./glsl.g" ++#line 2810 "./glsl.g" + + case 289: { + ast(1) = makeAstNode<CaseLabelStatementAST>(expression(2)); + } break; + +-#line 2823 "./glsl.g" ++#line 2817 "./glsl.g" + + case 290: { + ast(1) = makeAstNode<CaseLabelStatementAST>(); + } break; + +-#line 2830 "./glsl.g" ++#line 2824 "./glsl.g" + + case 291: { + ast(1) = makeAstNode<WhileStatementAST>(expression(3), statement(5)); + } break; + +-#line 2837 "./glsl.g" ++#line 2831 "./glsl.g" + + case 292: { + ast(1) = makeAstNode<DoStatementAST>(statement(2), expression(5)); + } break; + +-#line 2844 "./glsl.g" ++#line 2838 "./glsl.g" + + case 293: { + ast(1) = makeAstNode<ForStatementAST>(statement(3), sym(4).forstmt.condition, sym(4).forstmt.increment, statement(6)); + } break; + +-#line 2851 "./glsl.g" ++#line 2845 "./glsl.g" + + case 294: { + // nothing to do. + } break; + +-#line 2858 "./glsl.g" ++#line 2852 "./glsl.g" + + case 295: { + // nothing to do. + } break; + +-#line 2865 "./glsl.g" ++#line 2859 "./glsl.g" + + case 296: { + // nothing to do. + } break; + +-#line 2872 "./glsl.g" ++#line 2866 "./glsl.g" + + case 297: { + // nothing to do. + } break; + +-#line 2879 "./glsl.g" ++#line 2873 "./glsl.g" + + case 298: { + sym(1).forstmt.condition = expression(1); + sym(1).forstmt.increment = 0; + } break; + +-#line 2887 "./glsl.g" ++#line 2881 "./glsl.g" + + case 299: { + sym(1).forstmt.condition = expression(1); + sym(1).forstmt.increment = expression(3); + } break; + +-#line 2895 "./glsl.g" ++#line 2889 "./glsl.g" + + case 300: { + ast(1) = makeAstNode<JumpStatementAST>(AST::Kind_Continue); + } break; + +-#line 2902 "./glsl.g" ++#line 2896 "./glsl.g" + + case 301: { + ast(1) = makeAstNode<JumpStatementAST>(AST::Kind_Break); + } break; + +-#line 2909 "./glsl.g" ++#line 2903 "./glsl.g" + + case 302: { + ast(1) = makeAstNode<ReturnStatementAST>(); + } break; + +-#line 2916 "./glsl.g" ++#line 2910 "./glsl.g" + + case 303: { + ast(1) = makeAstNode<ReturnStatementAST>(expression(2)); + } break; + +-#line 2923 "./glsl.g" ++#line 2917 "./glsl.g" + + case 304: { + ast(1) = makeAstNode<JumpStatementAST>(AST::Kind_Discard); + } break; + +-#line 2930 "./glsl.g" ++#line 2924 "./glsl.g" + + case 305: { + ast(1) = makeAstNode<TranslationUnitAST>(sym(1).declaration_list); + } break; + +-#line 2937 "./glsl.g" ++#line 2931 "./glsl.g" + + case 306: { + if (sym(1).declaration) { +@@ -2207,7 +2207,7 @@ case 306: { + } + } break; + +-#line 2949 "./glsl.g" ++#line 2943 "./glsl.g" + + case 307: { + if (sym(1).declaration_list && sym(2).declaration) { +@@ -2223,49 +2223,49 @@ case 307: { + } + } break; + +-#line 2966 "./glsl.g" ++#line 2960 "./glsl.g" + + case 308: { + // nothing to do. + } break; + +-#line 2973 "./glsl.g" ++#line 2967 "./glsl.g" + + case 309: { + // nothing to do. + } break; + +-#line 2980 "./glsl.g" ++#line 2974 "./glsl.g" + + case 310: { + ast(1) = 0; + } break; + +-#line 2987 "./glsl.g" ++#line 2981 "./glsl.g" + + case 311: { + function(1)->body = statement(2); + } break; + +-#line 2994 "./glsl.g" ++#line 2988 "./glsl.g" + + case 312: { + ast(1) = 0; + } break; + +-#line 3002 "./glsl.g" ++#line 2996 "./glsl.g" + + case 313: { + ast(1) = ast(2); + } break; + +-#line 3009 "./glsl.g" ++#line 3003 "./glsl.g" + + case 314: { + ast(1) = ast(2); + } break; + +-#line 3015 "./glsl.g" ++#line 3009 "./glsl.g" + + } // end switch + } // end Parser::reduce() +diff --git a/src/libs/glsl/glslparser.h b/src/libs/glsl/glslparser.h +index 7bf70e2..bab2616 100644 +--- a/src/libs/glsl/glslparser.h ++++ b/src/libs/glsl/glslparser.h +@@ -1,5 +1,5 @@ + +-#line 217 "./glsl.g" ++#line 215 "./glsl.g" + + /************************************************************************** + ** +-- +1.7.10 + |