[gtk/wip/otte/css: 20/30] cssparser: Add error functions that take locations
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/wip/otte/css: 20/30] cssparser: Add error functions that take locations
- Date: Fri, 12 Apr 2019 03:17:45 +0000 (UTC)
commit 24aaaf18211b415413f410b7a7736cdf0b88efe3
Author: Benjamin Otte <otte redhat com>
Date: Wed Apr 10 19:42:09 2019 +0200
cssparser: Add error functions that take locations
... and use them to report better error locations for the warning when
blocks aren't terminated properly.
gtk/css/gtkcssparser.c | 52 +++++++++++++++++++++++++++++++++++++++++--
gtk/css/gtkcssparserprivate.h | 13 +++++++++++
2 files changed, 63 insertions(+), 2 deletions(-)
---
diff --git a/gtk/css/gtkcssparser.c b/gtk/css/gtkcssparser.c
index b3347ee067..e812df259b 100644
--- a/gtk/css/gtkcssparser.c
+++ b/gtk/css/gtkcssparser.c
@@ -415,13 +415,21 @@ gtk_css_parser_end_block (GtkCssParser *self)
if (gtk_css_token_is (&self->token, GTK_CSS_TOKEN_EOF))
{
- gtk_css_parser_warn_syntax (self, "Unterminated block at end of document");
+ gtk_css_parser_warn (self,
+ GTK_CSS_PARSER_WARNING_SYNTAX,
+ gtk_css_parser_get_block_location (self),
+ gtk_css_parser_get_start_location (self),
+ "Unterminated block at end of document");
g_array_set_size (self->blocks, self->blocks->len - 1);
}
else if (gtk_css_token_is (&self->token, block->inherited_end_token))
{
g_assert (block->end_token == GTK_CSS_TOKEN_SEMICOLON);
- gtk_css_parser_warn_syntax (self, "Expected ';' at end of block");
+ gtk_css_parser_warn (self,
+ GTK_CSS_PARSER_WARNING_SYNTAX,
+ gtk_css_parser_get_block_location (self),
+ gtk_css_parser_get_start_location (self),
+ "Expected ';' at end of block");
g_array_set_size (self->blocks, self->blocks->len - 1);
}
else
@@ -498,6 +506,26 @@ gtk_css_parser_emit_error (GtkCssParser *self,
self->error_func (self, start, end, error, self->user_data);
}
+void
+gtk_css_parser_error (GtkCssParser *self,
+ GtkCssParserError code,
+ const GtkCssLocation *start,
+ const GtkCssLocation *end,
+ const char *format,
+ ...)
+{
+ va_list args;
+ GError *error;
+
+ va_start (args, format);
+ error = g_error_new_valist (GTK_CSS_PARSER_ERROR,
+ code,
+ format, args);
+ gtk_css_parser_emit_error (self, start, end, error);
+ g_error_free (error);
+ va_end (args);
+}
+
void
gtk_css_parser_error_syntax (GtkCssParser *self,
const char *format,
@@ -558,6 +586,26 @@ gtk_css_parser_error_import (GtkCssParser *self,
va_end (args);
}
+void
+gtk_css_parser_warn (GtkCssParser *self,
+ GtkCssParserWarning code,
+ const GtkCssLocation *start,
+ const GtkCssLocation *end,
+ const char *format,
+ ...)
+{
+ va_list args;
+ GError *error;
+
+ va_start (args, format);
+ error = g_error_new_valist (GTK_CSS_PARSER_WARNING,
+ code,
+ format, args);
+ gtk_css_parser_emit_error (self, start, end, error);
+ g_error_free (error);
+ va_end (args);
+}
+
void
gtk_css_parser_warn_syntax (GtkCssParser *self,
const char *format,
diff --git a/gtk/css/gtkcssparserprivate.h b/gtk/css/gtkcssparserprivate.h
index 2942bb86f1..31b44cbce6 100644
--- a/gtk/css/gtkcssparserprivate.h
+++ b/gtk/css/gtkcssparserprivate.h
@@ -21,6 +21,7 @@
#ifndef __GTK_CSS_PARSER_H__
#define __GTK_CSS_PARSER_H__
+#include "gtkcssenums.h"
#include "gtkcsstokenizerprivate.h"
#include <gio/gio.h>
@@ -87,6 +88,12 @@ void gtk_css_parser_emit_error (GtkCssParser
const GtkCssLocation *start,
const GtkCssLocation *end,
const GError *error);
+void gtk_css_parser_error (GtkCssParser *self,
+ GtkCssParserError code,
+ const GtkCssLocation *start,
+ const GtkCssLocation *end,
+ const char *format,
+ ...) G_GNUC_PRINTF(5, 6);
void gtk_css_parser_error_syntax (GtkCssParser *self,
const char *format,
...) G_GNUC_PRINTF(2, 3);
@@ -96,6 +103,12 @@ void gtk_css_parser_error_value (GtkCssParser
void gtk_css_parser_error_import (GtkCssParser *self,
const char *format,
...) G_GNUC_PRINTF(2, 3);
+void gtk_css_parser_warn (GtkCssParser *self,
+ GtkCssParserWarning code,
+ const GtkCssLocation *start,
+ const GtkCssLocation *end,
+ const char *format,
+ ...) G_GNUC_PRINTF(5, 6);
void gtk_css_parser_warn_syntax (GtkCssParser *self,
const char *format,
...) G_GNUC_PRINTF(2, 3);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]