From 945b25559d5d50b36c593890cff313239a361d46 Mon Sep 17 00:00:00 2001 From: Roberto Raggi Date: Mon, 29 Nov 2010 18:16:44 +0100 Subject: [PATCH] Evaluate member accesses. --- src/libs/glsl/glslsemantic.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/libs/glsl/glslsemantic.cpp b/src/libs/glsl/glslsemantic.cpp index 358e37b3e43..ec215fd5849 100644 --- a/src/libs/glsl/glslsemantic.cpp +++ b/src/libs/glsl/glslsemantic.cpp @@ -248,7 +248,19 @@ bool Semantic::visit(AssignmentExpressionAST *ast) bool Semantic::visit(MemberAccessExpressionAST *ast) { ExprResult expr = expression(ast->expr); - // ast->field + if (expr.type && ast->field) { + if (const VectorType *vecTy = expr.type->asVectorType()) { + if (Symbol *s = vecTy->find(*ast->field)) { + _expr.type = s->type(); + } + } else if (const Struct *structTy = expr.type->asStructType()) { + if (Symbol *s = structTy->find(*ast->field)) { + _expr.type = s->type(); + } + } else { + // error(ast->lineno, QString("Requested for member `%1', in a non class or vec instance").arg(*ast->field)); + } + } return false; }