зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1066776. Make variadic dictionary arguments work. r=khuey
This commit is contained in:
Родитель
14ff5707d7
Коммит
41fde7f472
|
@ -3405,6 +3405,7 @@ class IDLArgument(IDLObjectWithIdentifier):
|
|||
self._allowTreatNonCallableAsNull = False
|
||||
|
||||
assert not variadic or optional
|
||||
assert not variadic or not defaultValue
|
||||
|
||||
def addExtendedAttributes(self, attrs):
|
||||
attrs = self.checkForStringHandlingExtendedAttributes(
|
||||
|
@ -3453,9 +3454,9 @@ class IDLArgument(IDLObjectWithIdentifier):
|
|||
|
||||
if ((self.type.isDictionary() or
|
||||
self.type.isUnion() and self.type.unroll().hasDictionaryType) and
|
||||
self.optional and not self.defaultValue):
|
||||
# Default optional dictionaries to null, for simplicity,
|
||||
# so the codegen doesn't have to special-case this.
|
||||
self.optional and not self.defaultValue and not self.variadic):
|
||||
# Default optional non-variadic dictionaries to null,
|
||||
# for simplicity, so the codegen doesn't have to special-case this.
|
||||
self.defaultValue = IDLNullValue(self.location)
|
||||
elif self.type.isAny():
|
||||
assert (self.defaultValue is None or
|
||||
|
|
|
@ -714,6 +714,7 @@ public:
|
|||
void PassDictContainingDict(JSContext*, const DictContainingDict&);
|
||||
void PassDictContainingSequence(JSContext*, const DictContainingSequence&);
|
||||
void ReceiveDictContainingSequence(JSContext*, DictContainingSequence&);
|
||||
void PassVariadicDictionary(JSContext*, const Sequence<Dict>&);
|
||||
|
||||
// Typedefs
|
||||
void ExerciseTypedefInterfaces1(TestInterface&);
|
||||
|
|
|
@ -686,6 +686,7 @@ interface TestInterface {
|
|||
void passDictContainingDict(optional DictContainingDict arg);
|
||||
void passDictContainingSequence(optional DictContainingSequence arg);
|
||||
DictContainingSequence receiveDictContainingSequence();
|
||||
void passVariadicDictionary(Dict... arg);
|
||||
|
||||
// EnforceRange/Clamp tests
|
||||
void dontEnforceRangeOrClamp(byte arg);
|
||||
|
|
|
@ -550,6 +550,7 @@ interface TestExampleInterface {
|
|||
void passDictContainingDict(optional DictContainingDict arg);
|
||||
void passDictContainingSequence(optional DictContainingSequence arg);
|
||||
DictContainingSequence receiveDictContainingSequence();
|
||||
void passVariadicDictionary(Dict... arg);
|
||||
|
||||
// EnforceRange/Clamp tests
|
||||
void dontEnforceRangeOrClamp(byte arg);
|
||||
|
|
|
@ -566,6 +566,7 @@ interface TestJSImplInterface {
|
|||
void passDictContainingDict(optional DictContainingDict arg);
|
||||
void passDictContainingSequence(optional DictContainingSequence arg);
|
||||
DictContainingSequence receiveDictContainingSequence();
|
||||
void passVariadicDictionary(Dict... arg);
|
||||
|
||||
// EnforceRange/Clamp tests
|
||||
void dontEnforceRangeOrClamp(byte arg);
|
||||
|
|
Загрузка…
Ссылка в новой задаче