Differentiate in ast_function_expression between constructors and func. calls
This commit is contained in:
@@ -198,16 +198,35 @@ public:
|
||||
*/
|
||||
class ast_function_expression : public ast_expression {
|
||||
public:
|
||||
ast_function_expression(ast_node *callee)
|
||||
: ast_expression(ast_function_call, (ast_expression *) callee,
|
||||
NULL, NULL)
|
||||
ast_function_expression(ast_expression *callee)
|
||||
: ast_expression(ast_function_call, callee,
|
||||
NULL, NULL),
|
||||
cons(false)
|
||||
{
|
||||
/* empty */
|
||||
}
|
||||
|
||||
ast_function_expression(class ast_type_specifier *type)
|
||||
: ast_expression(ast_function_call, (ast_expression *) type,
|
||||
NULL, NULL),
|
||||
cons(true)
|
||||
{
|
||||
/* empty */
|
||||
}
|
||||
|
||||
bool is_constructor() const
|
||||
{
|
||||
return cons;
|
||||
}
|
||||
|
||||
virtual ir_instruction *hir(exec_list *instructions,
|
||||
struct _mesa_glsl_parse_state *state);
|
||||
|
||||
private:
|
||||
/**
|
||||
* Is this function call actually a constructor?
|
||||
*/
|
||||
bool cons;
|
||||
};
|
||||
|
||||
|
||||
|
||||
+5
-6
@@ -337,23 +337,22 @@ function_call_header_with_parameters:
|
||||
// recognized through "type_specifier".
|
||||
function_call_header:
|
||||
function_identifier '('
|
||||
{
|
||||
$$ = new ast_function_expression($1);
|
||||
}
|
||||
;
|
||||
|
||||
function_identifier:
|
||||
type_specifier
|
||||
{
|
||||
$$ = (struct ast_node *) $1;
|
||||
$$ = new ast_function_expression($1);
|
||||
}
|
||||
| IDENTIFIER
|
||||
{
|
||||
$$ = new ast_expression($1);
|
||||
ast_expression *callee = new ast_expression($1);
|
||||
$$ = new ast_function_expression(callee);
|
||||
}
|
||||
| FIELD_SELECTION
|
||||
{
|
||||
$$ = new ast_expression($1);
|
||||
ast_expression *callee = new ast_expression($1);
|
||||
$$ = new ast_function_expression(callee);
|
||||
}
|
||||
;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user