mirror of
https://github.com/servo/servo.git
synced 2025-07-22 23:03:42 +01:00
Properly generate typedef identities in unions
This commit is contained in:
parent
3631e314b9
commit
3976d974fc
4 changed files with 23 additions and 6 deletions
|
@ -2134,7 +2134,7 @@ class CGCallbackTempRoot(CGGeneric):
|
|||
CGGeneric.__init__(self, "%s::new(${val}.get().to_object())" % name)
|
||||
|
||||
|
||||
def getAllTypes(descriptors, dictionaries, callbacks):
|
||||
def getAllTypes(descriptors, dictionaries, callbacks, typedefs):
|
||||
"""
|
||||
Generate all the types we're dealing with. For each type, a tuple
|
||||
containing type, descriptor, dictionary is yielded. The
|
||||
|
@ -2150,9 +2150,11 @@ def getAllTypes(descriptors, dictionaries, callbacks):
|
|||
for callback in callbacks:
|
||||
for t in getTypesFromCallback(callback):
|
||||
yield (t, None, None)
|
||||
for typedef in typedefs:
|
||||
yield (typedef.innerType, None, None)
|
||||
|
||||
|
||||
def UnionTypes(descriptors, dictionaries, callbacks, config):
|
||||
def UnionTypes(descriptors, dictionaries, callbacks, typedefs, config):
|
||||
"""
|
||||
Returns a CGList containing CGUnionStructs for every union.
|
||||
"""
|
||||
|
@ -2181,7 +2183,7 @@ def UnionTypes(descriptors, dictionaries, callbacks, config):
|
|||
# Now find all the things we'll need as arguments and return values because
|
||||
# we need to wrap or unwrap them.
|
||||
unionStructs = dict()
|
||||
for (t, descriptor, dictionary) in getAllTypes(descriptors, dictionaries, callbacks):
|
||||
for (t, descriptor, dictionary) in getAllTypes(descriptors, dictionaries, callbacks, typedefs):
|
||||
assert not descriptor or not dictionary
|
||||
t = t.unroll()
|
||||
if not t.isUnion():
|
||||
|
@ -6913,6 +6915,7 @@ impl %(base)s {
|
|||
curr = UnionTypes(config.getDescriptors(),
|
||||
config.getDictionaries(),
|
||||
config.getCallbacks(),
|
||||
config.typedefs,
|
||||
config)
|
||||
|
||||
# Add the auto-generated comment.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue