mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-04 03:18:08 +02:00
Make ast_function_expression subclass of ast_expression
This commit is contained in:
parent
d10fe19495
commit
7cfddf1941
3 changed files with 39 additions and 17 deletions
17
ast.h
17
ast.h
|
|
@ -192,6 +192,23 @@ public:
|
|||
virtual void print(void) const;
|
||||
};
|
||||
|
||||
/**
|
||||
* Subclass of expressions for function calls
|
||||
*/
|
||||
class ast_function_expression : public ast_expression {
|
||||
public:
|
||||
ast_function_expression(ast_node *callee)
|
||||
: ast_expression(ast_function_call, (ast_expression *) callee,
|
||||
NULL, NULL)
|
||||
{
|
||||
/* empty */
|
||||
}
|
||||
|
||||
|
||||
virtual ir_instruction *hir(exec_list *instructions,
|
||||
struct _mesa_glsl_parse_state *state);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Number of possible operators for an ast_expression
|
||||
|
|
|
|||
|
|
@ -630,21 +630,10 @@ ast_expression::hir(exec_list *instructions,
|
|||
break;
|
||||
|
||||
case ast_function_call:
|
||||
/* There are three sorts of function calls.
|
||||
*
|
||||
* 1. contstructors - The first subexpression is an ast_type_specifier.
|
||||
* 2. methods - Only the .length() method of array types.
|
||||
* 3. functions - Calls to regular old functions.
|
||||
*
|
||||
* Method calls are actually detected when the ast_field_selection
|
||||
* expression is handled.
|
||||
/* Should *NEVER* get here. ast_function_call should always be handled
|
||||
* by ast_function_expression::hir.
|
||||
*/
|
||||
#if 0
|
||||
result = _mesa_ast_function_call_to_hir(this->subexpressions[0],
|
||||
this->subexpressions[1],
|
||||
state);
|
||||
type = result->type;
|
||||
#endif
|
||||
assert(0);
|
||||
break;
|
||||
|
||||
case ast_identifier: {
|
||||
|
|
@ -721,6 +710,24 @@ ast_expression::hir(exec_list *instructions,
|
|||
}
|
||||
|
||||
|
||||
ir_instruction *
|
||||
ast_function_expression::hir(exec_list *instructions,
|
||||
struct _mesa_glsl_parse_state *state)
|
||||
{
|
||||
/* There are three sorts of function calls.
|
||||
*
|
||||
* 1. contstructors - The first subexpression is an ast_type_specifier.
|
||||
* 2. methods - Only the .length() method of array types.
|
||||
* 3. functions - Calls to regular old functions.
|
||||
*
|
||||
* Method calls are actually detected when the ast_field_selection
|
||||
* expression is handled.
|
||||
*/
|
||||
(void) instructions;
|
||||
(void) state;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ir_instruction *
|
||||
ast_expression_statement::hir(exec_list *instructions,
|
||||
struct _mesa_glsl_parse_state *state)
|
||||
|
|
|
|||
|
|
@ -338,9 +338,7 @@ function_call_header_with_parameters:
|
|||
function_call_header:
|
||||
function_identifier '('
|
||||
{
|
||||
$$ = new ast_expression(ast_function_call,
|
||||
(struct ast_expression *) $1,
|
||||
NULL, NULL);
|
||||
$$ = new ast_function_expression($1);
|
||||
}
|
||||
;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue