[json-glib] [parser] Return the right expected token
- From: Emmanuele Bassi <ebassi src gnome org>
 
- To: svn-commits-list gnome org
 
- Cc: 
 
- Subject: [json-glib] [parser] Return the right expected token
 
- Date: Tue, 22 Sep 2009 14:40:36 +0000 (UTC)
 
commit bd604338b25884edbd86cf531505259948484323
Author: Emmanuele Bassi <ebassi gnome org>
Date:   Tue Sep 22 15:34:18 2009 +0100
    [parser] Return the right expected token
    
    When parsing a value embedded in a Json Object or Array we need to
    return the right expected token so that the generated syntax error
    will be correct.
 json-glib/json-parser.c |   16 ++++++++++++++--
 1 files changed, 14 insertions(+), 2 deletions(-)
---
diff --git a/json-glib/json-parser.c b/json-glib/json-parser.c
index 35747d3..419f695 100644
--- a/json-glib/json-parser.c
+++ b/json-glib/json-parser.c
@@ -337,6 +337,7 @@ json_parse_value (JsonParser   *parser,
                   guint         token,
                   JsonNode    **node)
 {
+  JsonNode *current_node = parser->priv->current_node;
   gboolean is_negative = FALSE;
 
   if (token == '-')
@@ -383,8 +384,19 @@ json_parse_value (JsonParser   *parser,
       break;
 
     default:
-      *node = NULL;
-      return G_TOKEN_RIGHT_BRACE;
+      {
+        JsonNodeType cur_type;
+
+        *node = NULL;
+
+        cur_type = json_node_get_node_type (current_node);
+        if (cur_type == JSON_NODE_ARRAY)
+          return G_TOKEN_RIGHT_BRACE;
+        else if (cur_type == JSON_NODE_OBJECT)
+          return G_TOKEN_RIGHT_CURLY;
+        else
+          return G_TOKEN_SYMBOL;
+      }
     }
 
   return G_TOKEN_NONE;
[
Date Prev][
Date Next]   [
Thread Prev][
Thread Next]   
[
Thread Index]
[
Date Index]
[
Author Index]