builder: Print warnings for unknown properties

This commit is contained in:
Alexander Larsson
2017-04-19 20:17:54 +02:00
parent 0f3e8e0910
commit eebcefa3b2
6 changed files with 27 additions and 0 deletions

View File

@@ -1021,6 +1021,7 @@ serializable_iface_init (JsonSerializableIface *serializable_iface)
{
serializable_iface->serialize_property = builder_manifest_serialize_property;
serializable_iface->deserialize_property = builder_manifest_deserialize_property;
serializable_iface->find_property = builder_serializable_find_property_with_error;
}
const char *

View File

@@ -779,6 +779,7 @@ serializable_iface_init (JsonSerializableIface *serializable_iface)
{
serializable_iface->serialize_property = builder_module_serialize_property;
serializable_iface->deserialize_property = builder_module_deserialize_property;
serializable_iface->find_property = builder_serializable_find_property_with_error;
}
const char *

View File

@@ -473,6 +473,7 @@ serializable_iface_init (JsonSerializableIface *serializable_iface)
{
serializable_iface->serialize_property = builder_options_serialize_property;
serializable_iface->deserialize_property = builder_options_deserialize_property;
serializable_iface->find_property = builder_serializable_find_property_with_error;
}
static GList *

View File

@@ -208,9 +208,19 @@ builder_source_init (BuilderSource *self)
{
}
static GParamSpec *
builder_source_find_property (JsonSerializable *serializable,
const char *name)
{
if (strcmp (name, "type") == 0)
return NULL;
return builder_serializable_find_property_with_error (serializable, name);
}
static void
serializable_iface_init (JsonSerializableIface *serializable_iface)
{
serializable_iface->find_property = builder_source_find_property;
}
JsonNode *

View File

@@ -1666,3 +1666,13 @@ builder_download_uri (const char *url,
return TRUE;
}
GParamSpec *
builder_serializable_find_property_with_error (JsonSerializable *serializable,
const char *name)
{
GParamSpec *pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (serializable), name);
if (pspec == NULL)
g_warning ("Unknown property %s for type %s\n", name, g_type_name_from_instance ((GTypeInstance *)serializable));
return pspec;
}

View File

@@ -23,6 +23,7 @@
#include <gio/gio.h>
#include <libsoup/soup.h>
#include <json-glib/json-glib.h>
G_BEGIN_DECLS
@@ -68,6 +69,9 @@ gboolean builder_download_uri (const char *url,
SoupSession *soup_session,
GError **error);
GParamSpec * builder_serializable_find_property_with_error (JsonSerializable *serializable,
const char *name);
G_END_DECLS
#endif /* __BUILDER_UTILS_H__ */