diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/mesa/shader/slang/slang_codegen.c | 15 | 
1 files changed, 15 insertions, 0 deletions
| diff --git a/src/mesa/shader/slang/slang_codegen.c b/src/mesa/shader/slang/slang_codegen.c index 8d2655ec51..8abb642a72 100644 --- a/src/mesa/shader/slang/slang_codegen.c +++ b/src/mesa/shader/slang/slang_codegen.c @@ -2028,6 +2028,21 @@ _slang_gen_function_call_name(slang_assemble_ctx *A, const char *name,        return NULL;     } +   /* type checking to be sure function's return type matches 'dest' type */ +   if (dest) { +      slang_typeinfo t0; + +      slang_typeinfo_construct(&t0); +      _slang_typeof_operation(A, dest, &t0); + +      if (!slang_type_specifier_equal(&t0.spec, &fun->header.type.specifier)) { +         slang_info_log_error(A->log, +                              "Incompatible type returned by call to '%s'", +                              name); +         return NULL; +      } +   } +     n = _slang_gen_function_call(A, fun, oper, dest);     if (n && !n->Store && !dest | 
