summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@redhat.com>2021-03-23 15:35:55 +0400
committerEmmanuele Bassi <ebassi@gmail.com>2021-06-20 21:28:02 +0000
commit01821d5e4986a36d7a8de9278540205e54144e1d (patch)
tree1eebd143dfc3c1568587629ec54da1468b5ec2e6
parentd5cdbba5fa6d25ea82ecb39b7ba1839d7fed020a (diff)
downloadgobject-introspection-01821d5e4986a36d7a8de9278540205e54144e1d.tar.gz
scanner: fix enum member c:identifier
Don't rely on runtime name, but on C header parsed symbol. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
-rw-r--r--giscanner/gdumpparser.py6
-rw-r--r--tests/scanner/Regress-1.0-expected.gir6
2 files changed, 8 insertions, 4 deletions
diff --git a/giscanner/gdumpparser.py b/giscanner/gdumpparser.py
index 3d9720d0..ada1503d 100644
--- a/giscanner/gdumpparser.py
+++ b/giscanner/gdumpparser.py
@@ -262,10 +262,12 @@ blob containing data gleaned from GObject's primitive introspection."""
# values as a 32-bit signed integer, even if they were unsigned
# in the source code.
previous_values = {}
+ previous_symbols = {}
previous = self._namespace.get(enum_name)
if isinstance(previous, (ast.Enum, ast.Bitfield)):
for member in previous.members:
previous_values[member.name] = member.value
+ previous_symbols[member.name] = member.symbol
members = []
for member in xmlnode.findall('member'):
@@ -275,12 +277,14 @@ blob containing data gleaned from GObject's primitive introspection."""
if name in previous_values:
value = previous_values[name]
+ symbol = previous_symbols[name]
else:
value = member.attrib['value']
+ symbol = member.attrib['name']
members.append(ast.Member(name,
value,
- member.attrib['name'],
+ symbol,
member.attrib['nick']))
if xmlnode.tag == 'flags':
diff --git a/tests/scanner/Regress-1.0-expected.gir b/tests/scanner/Regress-1.0-expected.gir
index c5044d99..302800cc 100644
--- a/tests/scanner/Regress-1.0-expected.gir
+++ b/tests/scanner/Regress-1.0-expected.gir
@@ -3446,17 +3446,17 @@ use it should be.</doc>
c:type="RegressTestFlags">
<member name="flag1"
value="1"
- c:identifier="TEST_FLAG1"
+ c:identifier="REGRESS_TEST_FLAG1"
glib:nick="flag1">
</member>
<member name="flag2"
value="2"
- c:identifier="TEST_FLAG2"
+ c:identifier="REGRESS_TEST_FLAG2"
glib:nick="flag2">
</member>
<member name="flag3"
value="4"
- c:identifier="TEST_FLAG3"
+ c:identifier="REGRESS_TEST_FLAG3"
glib:nick="flag3">
</member>
</bitfield>