diff options
author | Giovanni Campagna <gcampagna@src.gnome.org> | 2012-06-18 19:10:50 +0200 |
---|---|---|
committer | Giovanni Campagna <gcampagna@src.gnome.org> | 2012-06-18 23:07:50 +0200 |
commit | 64f3832893080f8faf476fdf730c51a52beb5dfa (patch) | |
tree | db7cdbb992bfc63b222a813d5020bd488be5d684 /tests | |
parent | 981f0111c39725cf9b25c50d5b130b14f47dd8dd (diff) | |
download | gobject-introspection-64f3832893080f8faf476fdf730c51a52beb5dfa.tar.gz |
scanner: complete the enum-to-error-quark fix
Turns out that the problem was not only in the wrong matching
to GType enums, but also that the non-GType heuristics used
to_underscores instead of to_underscores_noprefix, turning DBusError
into D_Bus_Error instead of DBus_Error.
Complete with various tests.
https://bugzilla.gnome.org/show_bug.cgi?id=669350
Diffstat (limited to 'tests')
-rw-r--r-- | tests/scanner/Regress-1.0-expected.gir | 123 | ||||
-rw-r--r-- | tests/scanner/regress.c | 84 | ||||
-rw-r--r-- | tests/scanner/regress.h | 62 |
3 files changed, 269 insertions, 0 deletions
diff --git a/tests/scanner/Regress-1.0-expected.gir b/tests/scanner/Regress-1.0-expected.gir index e774948b..3f2b6ddf 100644 --- a/tests/scanner/Regress-1.0-expected.gir +++ b/tests/scanner/Regress-1.0-expected.gir @@ -32,6 +32,13 @@ and/or use gtk-doc annotations. --> <doc xml:whitespace="preserve">Typedef'd va_list for additional reasons</doc> <type name="va_list" c:type="va_list"/> </alias> + <enumeration name="ATestError" + c:type="RegressATestError" + glib:error-domain="regress-atest-error"> + <member name="code0" value="0" c:identifier="REGRESS_ATEST_ERROR_CODE0"/> + <member name="code1" value="1" c:identifier="REGRESS_ATEST_ERROR_CODE1"/> + <member name="code2" value="2" c:identifier="REGRESS_ATEST_ERROR_CODE2"/> + </enumeration> <constant name="DOUBLE_CONSTANT" value="44.220000" c:type="REGRESS_DOUBLE_CONSTANT"> @@ -70,6 +77,29 @@ use it should be.</doc> <type name="gdouble" c:type="double"/> </field> </record> + <enumeration name="TestABCError" + glib:type-name="RegressTestABCError" + glib:get-type="regress_test_abc_error_get_type" + c:type="RegressTestABCError" + glib:error-domain="regress-test-abc-error"> + <member name="code1" + value="1" + c:identifier="REGRESS_TEST_ABC_ERROR_CODE1" + glib:nick="code1"/> + <member name="code2" + value="2" + c:identifier="REGRESS_TEST_ABC_ERROR_CODE2" + glib:nick="code2"/> + <member name="code3" + value="3" + c:identifier="REGRESS_TEST_ABC_ERROR_CODE3" + glib:nick="code3"/> + <function name="quark" c:identifier="regress_test_abc_error_quark"> + <return-value transfer-ownership="none"> + <type name="GLib.Quark" c:type="GQuark"/> + </return-value> + </function> + </enumeration> <record name="TestBoxed" c:type="RegressTestBoxed" glib:type-name="RegressTestBoxed" @@ -286,6 +316,19 @@ use it should be.</doc> </parameter> </parameters> </callback> + <enumeration name="TestDEFError" + c:type="RegressTestDEFError" + glib:error-domain="regress-test-def-error"> + <member name="code0" + value="0" + c:identifier="REGRESS_TEST_DEF_ERROR_CODE0"/> + <member name="code1" + value="1" + c:identifier="REGRESS_TEST_DEF_ERROR_CODE1"/> + <member name="code2" + value="2" + c:identifier="REGRESS_TEST_DEF_ERROR_CODE2"/> + </enumeration> <enumeration name="TestEnum" glib:type-name="RegressTestEnum" glib:get-type="regress_test_enum_get_type" @@ -335,6 +378,29 @@ use it should be.</doc> c:identifier="REGRESS_TEST_UNSIGNED_VALUE2" glib:nick="value2"/> </enumeration> + <enumeration name="TestError" + glib:type-name="RegressTestError" + glib:get-type="regress_test_error_get_type" + c:type="RegressTestError" + glib:error-domain="regress-test-error"> + <member name="code1" + value="1" + c:identifier="REGRESS_TEST_ERROR_CODE1" + glib:nick="code1"/> + <member name="code2" + value="2" + c:identifier="REGRESS_TEST_ERROR_CODE2" + glib:nick="code2"/> + <member name="code3" + value="3" + c:identifier="REGRESS_TEST_ERROR_CODE3" + glib:nick="code3"/> + <function name="quark" c:identifier="regress_test_error_quark"> + <return-value transfer-ownership="none"> + <type name="GLib.Quark" c:type="GQuark"/> + </return-value> + </function> + </enumeration> <bitfield name="TestFlags" glib:type-name="RegressTestFlags" glib:get-type="regress_test_flags_get_type" @@ -1213,6 +1279,30 @@ Use with regress_test_obj_emit_sig_with_obj</doc> </callback> </field> </record> + <enumeration name="TestOtherError" + glib:type-name="RegressTestOtherError" + glib:get-type="regress_test_unconventional_error_get_type" + c:type="RegressTestOtherError" + glib:error-domain="regress-test-other-error"> + <member name="code1" + value="1" + c:identifier="REGRESS_TEST_OTHER_ERROR_CODE1" + glib:nick="code1"/> + <member name="code2" + value="2" + c:identifier="REGRESS_TEST_OTHER_ERROR_CODE2" + glib:nick="code2"/> + <member name="code3" + value="3" + c:identifier="REGRESS_TEST_OTHER_ERROR_CODE3" + glib:nick="code3"/> + <function name="quark" + c:identifier="regress_test_unconventional_error_quark"> + <return-value transfer-ownership="none"> + <type name="GLib.Quark" c:type="GQuark"/> + </return-value> + </function> + </enumeration> <bitfield name="TestPrivateEnum" c:type="RegressTestPrivateEnum"> <member name="public_enum_before" value="1" @@ -1542,6 +1632,12 @@ Use with regress_test_obj_emit_sig_with_obj</doc> </parameter> </parameters> </function> + <function name="atest_error_quark" + c:identifier="regress_atest_error_quark"> + <return-value transfer-ownership="none"> + <type name="GLib.Quark" c:type="GQuark"/> + </return-value> + </function> <function name="func_obj_null_in" c:identifier="regress_func_obj_null_in"> <return-value transfer-ownership="none"> <type name="none" c:type="void"/> @@ -1640,6 +1736,13 @@ libgnome-keyring.</doc> </parameter> </parameters> </function> + <function name="test_abc_error_quark" + c:identifier="regress_test_abc_error_quark" + moved-to="TestABCError.quark"> + <return-value transfer-ownership="none"> + <type name="GLib.Quark" c:type="GQuark"/> + </return-value> + </function> <function name="test_array_callback" c:identifier="regress_test_array_callback"> <return-value transfer-ownership="none"> @@ -2175,6 +2278,12 @@ call and can be released on return.</doc> <type name="GObject.Value" c:type="GValue*"/> </return-value> </function> + <function name="test_def_error_quark" + c:identifier="regress_test_def_error_quark"> + <return-value transfer-ownership="none"> + <type name="GLib.Quark" c:type="GQuark"/> + </return-value> + </function> <function name="test_double" c:identifier="regress_test_double"> <return-value transfer-ownership="none"> <type name="gdouble" c:type="gdouble"/> @@ -2197,6 +2306,13 @@ call and can be released on return.</doc> </parameter> </parameters> </function> + <function name="test_error_quark" + c:identifier="regress_test_error_quark" + moved-to="TestError.quark"> + <return-value transfer-ownership="none"> + <type name="GLib.Quark" c:type="GQuark"/> + </return-value> + </function> <function name="test_filename_return" c:identifier="regress_test_filename_return"> <return-value transfer-ownership="full"> @@ -3133,6 +3249,13 @@ What we're testing here is that the scanner ignores the @a nested inside XML.</d </parameter> </parameters> </function> + <function name="test_unconventional_error_quark" + c:identifier="regress_test_unconventional_error_quark" + moved-to="TestOtherError.quark"> + <return-value transfer-ownership="none"> + <type name="GLib.Quark" c:type="GQuark"/> + </return-value> + </function> <function name="test_unichar" c:identifier="regress_test_unichar"> <return-value transfer-ownership="none"> <type name="gunichar" c:type="gunichar"/> diff --git a/tests/scanner/regress.c b/tests/scanner/regress.c index 13b18887..6ba2bdf1 100644 --- a/tests/scanner/regress.c +++ b/tests/scanner/regress.c @@ -1572,6 +1572,90 @@ regress_global_get_flags_out (RegressTestFlags *v) *v = REGRESS_TEST_FLAG1 | REGRESS_TEST_FLAG3; } +/* error domains */ + +GType +regress_test_error_get_type (void) +{ + static GType etype = 0; + if (G_UNLIKELY(etype == 0)) { + static const GEnumValue values[] = { + { REGRESS_TEST_ERROR_CODE1, "REGRESS_TEST_ERROR_CODE1", "code1" }, + { REGRESS_TEST_ERROR_CODE2, "REGRESS_TEST_ERROR_CODE2", "code2" }, + { REGRESS_TEST_ERROR_CODE3, "REGRESS_TEST_ERROR_CODE3", "code3" }, + { 0, NULL, NULL } + }; + etype = g_enum_register_static (g_intern_static_string ("RegressTestError"), values); + } + + return etype; +} + +GQuark +regress_test_error_quark (void) +{ + return g_quark_from_static_string ("regress-test-error"); +} + +GType +regress_test_abc_error_get_type (void) +{ + static GType etype = 0; + if (G_UNLIKELY(etype == 0)) { + static const GEnumValue values[] = { + { REGRESS_TEST_ABC_ERROR_CODE1, "REGRESS_TEST_ABC_ERROR_CODE1", "code1" }, + { REGRESS_TEST_ABC_ERROR_CODE2, "REGRESS_TEST_ABC_ERROR_CODE2", "code2" }, + { REGRESS_TEST_ABC_ERROR_CODE3, "REGRESS_TEST_ABC_ERROR_CODE3", "code3" }, + { 0, NULL, NULL } + }; + etype = g_enum_register_static (g_intern_static_string ("RegressTestABCError"), values); + } + + return etype; +} + +GQuark +regress_test_abc_error_quark (void) +{ + return g_quark_from_static_string ("regress-test-abc-error"); +} + +GType +regress_test_unconventional_error_get_type (void) +{ + static GType etype = 0; + if (G_UNLIKELY(etype == 0)) { + static const GEnumValue values[] = { + { REGRESS_TEST_OTHER_ERROR_CODE1, "REGRESS_TEST_OTHER_ERROR_CODE1", "code1" }, + { REGRESS_TEST_OTHER_ERROR_CODE2, "REGRESS_TEST_OTHER_ERROR_CODE2", "code2" }, + { REGRESS_TEST_OTHER_ERROR_CODE3, "REGRESS_TEST_OTHER_ERROR_CODE3", "code3" }, + { 0, NULL, NULL } + }; + etype = g_enum_register_static (g_intern_static_string ("RegressTestOtherError"), values); + } + + return etype; +} + +GQuark +regress_test_unconventional_error_quark (void) +{ + return g_quark_from_static_string ("regress-test-other-error"); +} + + +GQuark +regress_test_def_error_quark (void) +{ + return g_quark_from_static_string ("regress-test-def-error"); +} + +GQuark +regress_atest_error_quark (void) +{ + return g_quark_from_static_string ("regress-atest-error"); +} + /* structures */ /** diff --git a/tests/scanner/regress.h b/tests/scanner/regress.h index 4d47430f..13916374 100644 --- a/tests/scanner/regress.h +++ b/tests/scanner/regress.h @@ -188,6 +188,68 @@ const gchar * regress_test_unsigned_enum_param(RegressTestEnumUnsigned e); void regress_global_get_flags_out (RegressTestFlags *v); +/* error domains */ + +typedef enum +{ + REGRESS_TEST_ERROR_CODE1 = 1, + REGRESS_TEST_ERROR_CODE2 = 2, + REGRESS_TEST_ERROR_CODE3 = 3 +} RegressTestError; + +GType regress_test_error_get_type (void); +GQuark regress_test_error_quark (void); + +/* Test weird names, with and without + c_symbol_prefix given by a GType +*/ +typedef enum +{ + REGRESS_TEST_ABC_ERROR_CODE1 = 1, + REGRESS_TEST_ABC_ERROR_CODE2 = 2, + REGRESS_TEST_ABC_ERROR_CODE3 = 3 +} RegressTestABCError; + +GType regress_test_abc_error_get_type (void); +GQuark regress_test_abc_error_quark (void); + +typedef enum +{ + REGRESS_TEST_OTHER_ERROR_CODE1 = 1, + REGRESS_TEST_OTHER_ERROR_CODE2 = 2, + REGRESS_TEST_OTHER_ERROR_CODE3 = 3 +} RegressTestOtherError; + +/* This returns a GType for RegressTestOtherError. + The difference is intentional, although it + is mainly meant for capitalization problems. +*/ +GType regress_test_unconventional_error_get_type (void); +GQuark regress_test_unconventional_error_quark (void); + +typedef enum +{ + REGRESS_TEST_DEF_ERROR_CODE0 = 0, + REGRESS_TEST_DEF_ERROR_CODE1 = 1, + REGRESS_TEST_DEF_ERROR_CODE2 = 2 +} RegressTestDEFError; + +GQuark regress_test_def_error_quark (void); + +/* the scanner used to have problem + with two uppercase letter right after + the identifier prefix, that's why + we break the RegressTest convention */ +typedef enum +{ + REGRESS_ATEST_ERROR_CODE0 = 0, + REGRESS_ATEST_ERROR_CODE1 = 1, + REGRESS_ATEST_ERROR_CODE2 = 2 +} RegressATestError; + +GQuark regress_atest_error_quark (void); + + /* constants */ #define REGRESS_INT_CONSTANT 4422 |