diff options
author | Carl Worth <cworth@cworth.org> | 2010-07-21 11:23:51 -0700 |
---|---|---|
committer | Carl Worth <cworth@cworth.org> | 2010-07-21 11:42:27 -0700 |
commit | c24bcad9f88379ffba9e2f0ff92f22cdf60c2927 (patch) | |
tree | 0763d225cdac2ad5e8728c7a52c822ea6cc41267 /src/glsl/ast_to_hir.cpp | |
parent | f38d15b80d4e4c8ecb7a76087cdc49835f0aa271 (diff) |
glsl: Correctly handle unary plus operator.
Previously, any occurence of the unary plus operator would trigger a
bogus type mismatch error. Fix this by making the ast_plus case look
more like the ast_neg case as far as type-checking is concerned.
With this change the shaders/CorrectPreprocess8.frag test in piglit
now passes.
Diffstat (limited to 'src/glsl/ast_to_hir.cpp')
-rw-r--r-- | src/glsl/ast_to_hir.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp index 5cadcd1946..e9257eee28 100644 --- a/src/glsl/ast_to_hir.cpp +++ b/src/glsl/ast_to_hir.cpp @@ -660,9 +660,9 @@ ast_expression::hir(exec_list *instructions, case ast_plus: op[0] = this->subexpressions[0]->hir(instructions, state); - error_emitted = op[0]->type->is_error(); - if (type->is_error()) - op[0]->type = type; + type = unary_arithmetic_result_type(op[0]->type, state, & loc); + + error_emitted = type->is_error(); result = op[0]; break; |