diff options
Diffstat (limited to 'components/script/dom/bindings/codegen')
-rw-r--r-- | components/script/dom/bindings/codegen/parser/union-typedef.patch | 22 | ||||
-rwxr-xr-x | components/script/dom/bindings/codegen/parser/update.sh | 1 |
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 |