[Mesa-dev] [PATCH 3/5] glsl: Return error_type instead of NULL if element_type() is called on non array type.
Ian Romanick
idr at freedesktop.org
Tue Jun 18 02:24:25 PDT 2013
On 06/03/2013 01:23 PM, Fabian Bieler wrote:
> This matches the behavior of field_type() and other get_*_type() methods.
>
> I looked through the calls to element_type() and didn't find a caller that
> depends on the old behavior.
I'm a little be uncomfortable with this change. There are a few places
where the behavior could change (src/glsl/ast_to_hir.cpp:780 and
src/glsl/ast_function.cpp:658). The bigger issue is that error_type was
only ever intend to "exist" in ast_to_hir. The intention was that type
checking operations could propagate error_type up the tree. A
compilation error would be emitted once, and when another expression saw
"<int> + <error_type>" it wouldn't emit another error message. We
started off following that idea really well, but we kind of fell of the
wagon somewhere along the line.
Once compilation as completely transitioned from AST to GLSL IR, it
should be impossible to get error_type. That's the intention, anyway.
> Signed-off-by: Fabian Bieler <fabianbieler at fastmail.fm>
> ---
> src/glsl/glsl_types.h | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/src/glsl/glsl_types.h b/src/glsl/glsl_types.h
> index 31e3dd2..362c970 100644
> --- a/src/glsl/glsl_types.h
> +++ b/src/glsl/glsl_types.h
> @@ -213,12 +213,12 @@ struct glsl_type {
> * Query the type of elements in an array
> *
> * \return
> - * Pointer to the type of elements in the array for array types, or \c NULL
> - * for non-array types.
> + * Pointer to the type of elements in the array for array types, or
> + * \c glsl_type::error_type for non-array types.
> */
> const glsl_type *element_type() const
> {
> - return is_array() ? fields.array : NULL;
> + return is_array() ? fields.array : error_type;
> }
>
> /**
>
More information about the mesa-dev
mailing list