Browse Source

property validate assignment condition in new variables, fixes #9411

Juan Linietsky 8 years ago
parent
commit
834112772b
1 changed files with 7 additions and 1 deletions
  1. 7 1
      servers/visual/shader_language.cpp

+ 7 - 1
servers/visual/shader_language.cpp

@@ -1931,7 +1931,8 @@ bool ShaderLanguage::_validate_function_call(BlockNode *p_block, OperatorNode *p
 		}
 		}
 
 
 		if (!fail) {
 		if (!fail) {
-			p_func->return_cache = pfunc->return_type;
+			if (r_ret_type)
+				*r_ret_type = pfunc->return_type;
 			return true;
 			return true;
 		}
 		}
 	}
 	}
@@ -3150,6 +3151,11 @@ Error ShaderLanguage::_parse_block(BlockNode *p_block, const Map<StringName, Dat
 					assign->op = OP_ASSIGN;
 					assign->op = OP_ASSIGN;
 					p_block->statements.push_back(assign);
 					p_block->statements.push_back(assign);
 					tk = _get_token();
 					tk = _get_token();
+
+					if (!_validate_operator(assign)) {
+						_set_error("Invalid assignment of '" + get_datatype_name(n->get_datatype()) + "' to '" + get_datatype_name(type) + "'");
+						return ERR_PARSE_ERROR;
+					}
 				}
 				}
 
 
 				if (tk.type == TK_COMMA) {
 				if (tk.type == TK_COMMA) {