From ea455708504df4b97c2ac236d91e51d9cfba0e2a Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Tue, 26 Sep 2017 16:21:51 +0200 Subject: [PATCH] gsksldeclaration: Throw an error if a variable initializer doesn't match ... the type of the declared variable and cannot be converted to it. --- gsk/gskslnode.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/gsk/gskslnode.c b/gsk/gskslnode.c index 38c4d123e3..e1452681e3 100644 --- a/gsk/gskslnode.c +++ b/gsk/gskslnode.c @@ -275,6 +275,14 @@ gsk_sl_node_parse_declaration (GskSlScope *scope, { gsk_sl_preprocessor_consume (stream, (GskSlNode *) declaration); declaration->initial = gsk_sl_expression_parse_assignment (scope, stream); + if (!gsk_sl_type_can_convert (type, gsk_sl_expression_get_return_type (declaration->initial))) + { + gsk_sl_preprocessor_error (stream, "Cannot convert from initializer type %s to variable type %s", + gsk_sl_type_get_name (gsk_sl_expression_get_return_type (declaration->initial)), + gsk_sl_type_get_name (type)); + gsk_sl_node_unref ((GskSlNode *) declaration); + return NULL; + } } gsk_sl_scope_add_variable (scope, declaration->variable);