rendernodeparser: Failing to parse a string is an error
authorBenjamin Otte <otte@redhat.com>
Tue, 28 Mar 2023 19:09:01 +0000 (21:09 +0200)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 1 Apr 2023 00:26:12 +0000 (20:26 -0400)
Testcase included.

gsk/gskrendernodeparser.c
testsuite/gsk/meson.build
testsuite/gsk/nodeparser/string-error.errors [new file with mode: 0644]
testsuite/gsk/nodeparser/string-error.node [new file with mode: 0644]
testsuite/gsk/nodeparser/string-error.ref.node [new file with mode: 0644]

index 6cceafcad771e10b0c063dcbbae26d51aa089deb..e377e82d8beffea4c9b59fdd59067bede1cad51d 100644 (file)
@@ -416,7 +416,10 @@ parse_string (GtkCssParser *parser,
 
   token = gtk_css_parser_get_token (parser);
   if (!gtk_css_token_is (token, GTK_CSS_TOKEN_STRING))
-    return FALSE;
+    {
+      gtk_css_parser_error_syntax (parser, "Expected a string");
+      return FALSE;
+    }
 
   s = g_strdup (gtk_css_token_get_string (token));
   gtk_css_parser_consume_token (parser);
index ca8f8335898bc33cc8f323007f1b2381fb0c5901..3fe529521080f72311aba914af1184f39355dfb5 100644 (file)
@@ -228,6 +228,9 @@ node_parser_tests = [
   'shadow-fail.node',
   'shadow-fail.ref.node',
   'shadow-fail.errors',
+  'string-error.errors',
+  'string-error.node',
+  'string-error.ref.node',
   'testswitch.node',
   'text-fail.node',
   'text-fail.ref.node',
diff --git a/testsuite/gsk/nodeparser/string-error.errors b/testsuite/gsk/nodeparser/string-error.errors
new file mode 100644 (file)
index 0000000..47ad1d1
--- /dev/null
@@ -0,0 +1 @@
+<data>:2:12-13: error: GTK_CSS_PARSER_ERROR_SYNTAX
diff --git a/testsuite/gsk/nodeparser/string-error.node b/testsuite/gsk/nodeparser/string-error.node
new file mode 100644 (file)
index 0000000..6e62f6a
--- /dev/null
@@ -0,0 +1,3 @@
+debug {
+  message: 5;
+}
diff --git a/testsuite/gsk/nodeparser/string-error.ref.node b/testsuite/gsk/nodeparser/string-error.ref.node
new file mode 100644 (file)
index 0000000..fc7e73a
--- /dev/null
@@ -0,0 +1,6 @@
+debug {
+  child: color {
+    bounds: 0 0 50 50;
+    color: rgb(255,0,204);
+  }
+}