[gobject-introspection] scanner: fix enum member c:identifier



commit 01821d5e4986a36d7a8de9278540205e54144e1d
Author: Marc-André Lureau <marcandre lureau redhat com>
Date:   Tue Mar 23 15:35:55 2021 +0400

    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>

 giscanner/gdumpparser.py               | 6 +++++-
 tests/scanner/Regress-1.0-expected.gir | 6 +++---
 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>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]