summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ast.h9
-rw-r--r--glsl_parser.ypp12
2 files changed, 11 insertions, 10 deletions
diff --git a/ast.h b/ast.h
index 3631692092..3eb8e5f20f 100644
--- a/ast.h
+++ b/ast.h
@@ -150,6 +150,15 @@ public:
ast_expression(int oper, ast_expression *,
ast_expression *, ast_expression *);
+ ast_expression(const char *identifier) :
+ oper(ast_identifier)
+ {
+ subexpressions[0] = NULL;
+ subexpressions[1] = NULL;
+ subexpressions[2] = NULL;
+ primary_expression.identifier = (char *) identifier;
+ }
+
static const char *operator_string(enum ast_operators op);
virtual ir_instruction *hir(exec_list *instructions,
diff --git a/glsl_parser.ypp b/glsl_parser.ypp
index c755725458..debbcea936 100644
--- a/glsl_parser.ypp
+++ b/glsl_parser.ypp
@@ -351,19 +351,11 @@ function_identifier:
}
| IDENTIFIER
{
- ast_expression *expr =
- new ast_expression(ast_identifier, NULL, NULL, NULL);
- expr->primary_expression.identifier = $1;
-
- $$ = (struct ast_node *) expr;
+ $$ = new ast_expression($1);
}
| FIELD_SELECTION
{
- ast_expression *expr =
- new ast_expression(ast_identifier, NULL, NULL, NULL);
- expr->primary_expression.identifier = $1;
-
- $$ = (struct ast_node *) expr;
+ $$ = new ast_expression($1);
}
;