diff options
author | Mark Doffman <mark.doffman@codethink.co.uk> | 2014-03-27 20:48:55 +0000 |
---|---|---|
committer | Mark Doffman <mark.doffman@codethink.co.uk> | 2014-03-27 20:48:55 +0000 |
commit | 53061f6d4736f028729c561448b1f5a8ae874334 (patch) | |
tree | 4029198495b842ef66e97b2d4e135158a1eb011a | |
parent | f239507998dad2a7bac232b210cf6697699d10b4 (diff) | |
download | gobject-introspection-53061f6d4736f028729c561448b1f5a8ae874334.tar.gz |
Revert "scanner: Correctly handle large 64 bit integer constants"
This reverts commit ac7376e0b2671ac6cb12c69b0289e029a3c2302b.
-rw-r--r-- | giscanner/giscannermodule.c | 5 | ||||
-rw-r--r-- | giscanner/scannerparser.y | 14 | ||||
-rw-r--r-- | giscanner/sourcescanner.h | 1 | ||||
-rw-r--r-- | tests/scanner/Regress-1.0-expected.gir | 15 | ||||
-rw-r--r-- | tests/scanner/regress.h | 5 |
5 files changed, 6 insertions, 34 deletions
diff --git a/giscanner/giscannermodule.c b/giscanner/giscannermodule.c index 4a854413..0da20f18 100644 --- a/giscanner/giscannermodule.c +++ b/giscanner/giscannermodule.c @@ -162,10 +162,7 @@ symbol_get_const_int (PyGISourceSymbol *self, return Py_None; } - if (self->symbol->const_int_is_unsigned) - return PyLong_FromUnsignedLongLong ((unsigned long long)self->symbol->const_int); - else - return PyLong_FromLongLong ((long long)self->symbol->const_int); + return PyLong_FromLongLong ((long long)self->symbol->const_int); } static PyObject * diff --git a/giscanner/scannerparser.y b/giscanner/scannerparser.y index cc495cc3..06a10efa 100644 --- a/giscanner/scannerparser.y +++ b/giscanner/scannerparser.y @@ -1,4 +1,4 @@ -/* GObject introspection: C parser -*- indent-tabs-mode: t; tab-width: 8 -*- +/* GObject introspection: C parser * * Copyright (c) 1997 Sandro Sigala <ssigala@globalnet.it> * Copyright (c) 2007-2008 Jürg Billeter <j@bitron.ch> @@ -232,19 +232,15 @@ primary_expression } | INTEGER { - char *rest; - guint64 value; $$ = gi_source_symbol_new (CSYMBOL_TYPE_CONST, scanner->current_filename, lineno); $$->const_int_set = TRUE; if (g_str_has_prefix (yytext, "0x") && strlen (yytext) > 2) { - value = g_ascii_strtoull (yytext + 2, &rest, 16); + $$->const_int = g_ascii_strtoll (yytext + 2, NULL, 16); } else if (g_str_has_prefix (yytext, "0") && strlen (yytext) > 1) { - value = g_ascii_strtoull (yytext + 1, &rest, 8); + $$->const_int = g_ascii_strtoll (yytext + 1, NULL, 8); } else { - value = g_ascii_strtoull (yytext, &rest, 10); + $$->const_int = g_ascii_strtoll (yytext, NULL, 10); } - $$->const_int = value; - $$->const_int_is_unsigned = (rest && (rest[0] == 'U')); } | CHARACTER { @@ -386,7 +382,7 @@ unary_expression { $$ = $3; if ($$->const_int_set) { - $$->base_type = gi_source_basic_type_new ($$->const_int_is_unsigned ? "guint64" : "gint64"); + $$->base_type = gi_source_basic_type_new ("gint64"); } } | INTUL_CONST '(' unary_expression ')' diff --git a/giscanner/sourcescanner.h b/giscanner/sourcescanner.h index a2834caf..df16cf6a 100644 --- a/giscanner/sourcescanner.h +++ b/giscanner/sourcescanner.h @@ -126,7 +126,6 @@ struct _GISourceSymbol gboolean const_int_set; gboolean private; gint64 const_int; /* 64-bit we can handle signed and unsigned 32-bit values */ - gboolean const_int_is_unsigned; char *const_string; gboolean const_double_set; double const_double; diff --git a/tests/scanner/Regress-1.0-expected.gir b/tests/scanner/Regress-1.0-expected.gir index 1adc5caf..8d123f7a 100644 --- a/tests/scanner/Regress-1.0-expected.gir +++ b/tests/scanner/Regress-1.0-expected.gir @@ -87,26 +87,11 @@ and/or use gtk-doc annotations. --> <type name="gdouble" c:type="double"/> </field> </record> - <constant name="MAXUINT64" - value="18446744073709551615" - c:type="REGRESS_MAXUINT64"> - <type name="guint64" c:type="guint64"/> - </constant> - <constant name="MININT64" - value="-9223372036854775808" - c:type="REGRESS_MININT64"> - <type name="gint64" c:type="gint64"/> - </constant> <constant name="Mixed_Case_Constant" value="4423" c:type="REGRESS_Mixed_Case_Constant"> <type name="gint" c:type="gint"/> </constant> - <constant name="NEGATIVE_INT_CONSTANT" - value="-42" - c:type="REGRESS_NEGATIVE_INT_CONSTANT"> - <type name="gint" c:type="gint"/> - </constant> <constant name="STRING_CONSTANT" value="Some String" c:type="REGRESS_STRING_CONSTANT"> diff --git a/tests/scanner/regress.h b/tests/scanner/regress.h index e1024b04..635ea7bd 100644 --- a/tests/scanner/regress.h +++ b/tests/scanner/regress.h @@ -255,7 +255,6 @@ GQuark regress_atest_error_quark (void); /* constants */ -#define REGRESS_NEGATIVE_INT_CONSTANT -42 #define REGRESS_INT_CONSTANT 4422 #define REGRESS_DOUBLE_CONSTANT 44.22 #define REGRESS_STRING_CONSTANT "Some String" @@ -900,8 +899,4 @@ typedef struct { double dummy2; } RegressLikeGnomeKeyringPasswordSchema; -/* https://bugzilla.gnome.org/show_bug.cgi?id=685022 */ -#define REGRESS_MININT64 ((gint64) G_GINT64_CONSTANT(0x8000000000000000)) -#define REGRESS_MAXUINT64 (G_GINT64_CONSTANT(0xffffffffffffffffU)) - #endif /* __GITESTTYPES_H__ */ |