aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/bindings/codegen
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/bindings/codegen')
-rw-r--r--components/script/dom/bindings/codegen/parser/union-typedef.patch22
-rwxr-xr-xcomponents/script/dom/bindings/codegen/parser/update.sh1
2 files changed, 23 insertions, 0 deletions
diff --git a/components/script/dom/bindings/codegen/parser/union-typedef.patch b/components/script/dom/bindings/codegen/parser/union-typedef.patch
new file mode 100644
index 00000000000..3021e14193f
--- /dev/null
+++ b/components/script/dom/bindings/codegen/parser/union-typedef.patch
@@ -0,0 +1,22 @@
+--- WebIDL.py
++++ WebIDL.py
+@@ -2481,10 +2481,18 @@ class IDLUnionType(IDLType):
+ return type.name
+
+ for (i, type) in enumerate(self.memberTypes):
++ # Exclude typedefs because if given "typedef (B or C) test",
++ # we want AOrTest, not AOrBOrC
++ if not type.isComplete() and not isinstance(type, IDLTypedefType):
++ self.memberTypes[i] = type.complete(scope)
++
++ self.name = "Or".join(typeName(type) for type in self.memberTypes)
++
++ # We do this again to complete the typedef types
++ for (i, type) in enumerate(self.memberTypes):
+ if not type.isComplete():
+ self.memberTypes[i] = type.complete(scope)
+
+- self.name = "Or".join(typeName(type) for type in self.memberTypes)
+ self.flatMemberTypes = list(self.memberTypes)
+ i = 0
+ while i < len(self.flatMemberTypes):
diff --git a/components/script/dom/bindings/codegen/parser/update.sh b/components/script/dom/bindings/codegen/parser/update.sh
index ef1da728b13..e762ca294f6 100755
--- a/components/script/dom/bindings/codegen/parser/update.sh
+++ b/components/script/dom/bindings/codegen/parser/update.sh
@@ -4,6 +4,7 @@ patch < debug.patch
patch < pref-main-thread.patch
patch < callback-location.patch
patch < bytestring.patch
+patch < union-typedef.patch
wget https://hg.mozilla.org/mozilla-central/archive/tip.tar.gz/dom/bindings/parser/tests/ -O tests.tar.gz
rm -r tests