diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py index a5e43e69755..069254b7c16 100644 --- a/src/components/script/dom/bindings/codegen/CodegenRust.py +++ b/src/components/script/dom/bindings/codegen/CodegenRust.py @@ -551,10 +551,6 @@ def getJSToNativeConversionTemplate(type, descriptorProvider, failureCode=None, raise TypeError("Can't handle sequence arguments yet") if type.isUnion(): - if isMember: - raise TypeError("Can't handle unions as members, we have a " - "holderType") - declType = CGGeneric(type.name + "::" + type.name) if type.nullable(): declType = CGWrapper(declType, pre="Option<", post=" >") diff --git a/src/components/script/dom/testbinding.rs b/src/components/script/dom/testbinding.rs index dd439a1622a..4f0a2081bf7 100644 --- a/src/components/script/dom/testbinding.rs +++ b/src/components/script/dom/testbinding.rs @@ -255,6 +255,26 @@ pub trait TestBindingMethods { // fn PassOptionalNullableDoubleWithNonNullDefault(&self, _: Option) {} fn PassOptionalNullableStringWithNonNullDefault(&self, _: Option) {} // fn PassOptionalNullableEnumWithNonNullDefault(&self, _: Option) {} + + fn PassVariadicBoolean(&self, _: Vec) {} + fn PassVariadicByte(&self, _: Vec) {} + fn PassVariadicOctet(&self, _: Vec) {} + fn PassVariadicShort(&self, _: Vec) {} + fn PassVariadicUnsignedShort(&self, _: Vec) {} + fn PassVariadicLong(&self, _: Vec) {} + fn PassVariadicUnsignedLong(&self, _: Vec) {} + fn PassVariadicLongLong(&self, _: Vec) {} + fn PassVariadicUnsignedLongLong(&self, _: Vec) {} + fn PassVariadicFloat(&self, _: Vec) {} + fn PassVariadicDouble(&self, _: Vec) {} + fn PassVariadicString(&self, _: Vec) {} + fn PassVariadicByteString(&self, _: Vec) {} + fn PassVariadicEnum(&self, _: Vec) {} + // fn PassVariadicInterface(&self, _: Vec>) {} + fn PassVariadicUnion(&self, _: Vec) {} + fn PassVariadicUnion2(&self, _: Vec) {} + fn PassVariadicUnion3(&self, _: Vec) {} + fn PassVariadicAny(&self, _: *mut JSContext, _: Vec) {} } impl<'a> TestBindingMethods for JSRef<'a, TestBinding> { diff --git a/src/components/script/dom/webidls/TestBinding.webidl b/src/components/script/dom/webidls/TestBinding.webidl index 6d2137cdd60..2437514a2c1 100644 --- a/src/components/script/dom/webidls/TestBinding.webidl +++ b/src/components/script/dom/webidls/TestBinding.webidl @@ -246,4 +246,24 @@ interface TestBinding { // void passOptionalNullableEnumWithNonNullDefault(optional TestEnum? arg = "foo"); // void passOptionalNullableUnionWithNonNullDefault(optional (HTMLElement or long)? arg = 7); // void passOptionalNullableUnion2WithNonNullDefault(optional (Event or DOMString)? data = "foo"); + + void passVariadicBoolean(boolean... args); + void passVariadicByte(byte... args); + void passVariadicOctet(octet... args); + void passVariadicShort(short... args); + void passVariadicUnsignedShort(unsigned short... args); + void passVariadicLong(long... args); + void passVariadicUnsignedLong(unsigned long... args); + void passVariadicLongLong(long long... args); + void passVariadicUnsignedLongLong(unsigned long long... args); + void passVariadicFloat(float... args); + void passVariadicDouble(double... args); + void passVariadicString(DOMString... args); + void passVariadicByteString(ByteString... args); + void passVariadicEnum(TestEnum... args); + // void passVariadicInterface(Blob... args); + void passVariadicUnion((HTMLElement or long)... args); + void passVariadicUnion2((Event or DOMString)... args); + void passVariadicUnion3((Blob or DOMString)... args); + void passVariadicAny(any... args); };