зеркало из https://github.com/mozilla/gecko-dev.git
servo: Merge #1909 - Pass Option<T> for optional primitive arguments without a default value (from Ms2ger:optional-defaults); r=jdm
...(fixes #1813). Source-Repo: https://github.com/servo/servo Source-Revision: ad826efd6d31a81033261b3e038c3e6c3c094629
This commit is contained in:
Родитель
0f2f24e380
Коммит
7762e1fe18
|
@ -877,8 +877,6 @@ def getJSToNativeConversionTemplate(type, descriptorProvider, failureCode=None,
|
|||
if not type.isPrimitive():
|
||||
raise TypeError("Need conversion for argument type '%s'" % str(type))
|
||||
|
||||
typeName = builtinNames[type.tag()]
|
||||
|
||||
conversionBehavior = "eDefault"
|
||||
if isEnforceRange:
|
||||
conversionBehavior = "eEnforceRange"
|
||||
|
@ -898,10 +896,12 @@ def getJSToNativeConversionTemplate(type, descriptorProvider, failureCode=None,
|
|||
" Err(_) => { %s }\n"
|
||||
"}" % (successVal, exceptionCode))
|
||||
|
||||
declType = CGGeneric(builtinNames[type.tag()])
|
||||
if type.nullable():
|
||||
declType = CGGeneric("Option<" + typeName + ">")
|
||||
else:
|
||||
declType = CGGeneric(typeName)
|
||||
declType = CGWrapper(declType, pre="Option<", post=">")
|
||||
|
||||
if isOptional:
|
||||
declType = CGWrapper(declType, pre="Option<", post=">")
|
||||
|
||||
if defaultValue is not None:
|
||||
if isinstance(defaultValue, IDLNullValue):
|
||||
|
@ -925,10 +925,7 @@ def getJSToNativeConversionTemplate(type, descriptorProvider, failureCode=None,
|
|||
" ${declName} = %s;\n"
|
||||
"}" % defaultStr)).define()
|
||||
|
||||
initialVal = "false" if typeName == "bool" else ("0 as %s" % typeName)
|
||||
if type.nullable():
|
||||
initialVal = "Some(%s)" % initialVal
|
||||
return (template, declType, None, isOptional, initialVal)
|
||||
return (template, declType, None, isOptional, "None" if isOptional else None)
|
||||
|
||||
def instantiateJSToNativeConversionTemplate(templateTuple, replacements,
|
||||
argcAndIndex=None):
|
||||
|
|
|
@ -43,7 +43,7 @@ impl Blob {
|
|||
~""
|
||||
}
|
||||
|
||||
pub fn Slice(&self, _start: i64, _end: i64, _contentType: Option<DOMString>) -> JS<Blob> {
|
||||
pub fn Slice(&self, _start: Option<i64>, _end: Option<i64>, _contentType: Option<DOMString>) -> JS<Blob> {
|
||||
Blob::new(&self.window)
|
||||
}
|
||||
|
||||
|
|
|
@ -74,33 +74,32 @@ impl TestBinding {
|
|||
pub fn GetInterfaceAttributeNullable(&self) -> Option<JS<Blob>> { Some(Blob::new(&self.window)) }
|
||||
pub fn SetInterfaceAttributeNullable(&self, _: Option<JS<Blob>>) {}
|
||||
|
||||
// FIXME (issue #1813) Doesn't currently compile.
|
||||
// pub fn PassOptionalBoolean(&self, _: Option<bool>) {}
|
||||
// pub fn PassOptionalByte(&self, _: Option<i8>) {}
|
||||
// pub fn PassOptionalOctet(&self, _: Option<u8>) {}
|
||||
// pub fn PassOptionalShort(&self, _: Option<i16>) {}
|
||||
// pub fn PassOptionalUnsignedShort(&self, _: Option<u16>) {}
|
||||
// pub fn PassOptionalLong(&self, _: Option<i32>) {}
|
||||
// pub fn PassOptionalUnsignedLong(&self, _: Option<u32>) {}
|
||||
// pub fn PassOptionalLongLong(&self, _: Option<i64>) {}
|
||||
// pub fn PassOptionalUnsignedLongLong(&self, _: Option<u64>) {}
|
||||
// pub fn PassOptionalFloat(&self, _: Option<f32>) {}
|
||||
// pub fn PassOptionalDouble(&self, _: Option<f64>) {}
|
||||
pub fn PassOptionalBoolean(&self, _: Option<bool>) {}
|
||||
pub fn PassOptionalByte(&self, _: Option<i8>) {}
|
||||
pub fn PassOptionalOctet(&self, _: Option<u8>) {}
|
||||
pub fn PassOptionalShort(&self, _: Option<i16>) {}
|
||||
pub fn PassOptionalUnsignedShort(&self, _: Option<u16>) {}
|
||||
pub fn PassOptionalLong(&self, _: Option<i32>) {}
|
||||
pub fn PassOptionalUnsignedLong(&self, _: Option<u32>) {}
|
||||
pub fn PassOptionalLongLong(&self, _: Option<i64>) {}
|
||||
pub fn PassOptionalUnsignedLongLong(&self, _: Option<u64>) {}
|
||||
pub fn PassOptionalFloat(&self, _: Option<f32>) {}
|
||||
pub fn PassOptionalDouble(&self, _: Option<f64>) {}
|
||||
pub fn PassOptionalString(&self, _: Option<DOMString>) {}
|
||||
pub fn PassOptionalInterface(&self, _: Option<JS<Blob>>) {}
|
||||
pub fn PassOptionalAny(&self, _: *JSContext, _: Option<JSVal>) {}
|
||||
|
||||
// pub fn PassOptionalNullableBoolean(&self, _: Option<Option<bool>>) {}
|
||||
// pub fn PassOptionalNullableByte(&self, _: Option<Option<i8>>) {}
|
||||
// pub fn PassOptionalNullableOctet(&self, _: Option<Option<u8>>) {}
|
||||
// pub fn PassOptionalNullableShort(&self, _: Option<Option<i16>>) {}
|
||||
// pub fn PassOptionalNullableUnsignedShort(&self, _: Option<Option<u16>>) {}
|
||||
// pub fn PassOptionalNullableLong(&self, _: Option<Option<i32>>) {}
|
||||
// pub fn PassOptionalNullableUnsignedLong(&self, _: Option<Option<u32>>) {}
|
||||
// pub fn PassOptionalNullableLongLong(&self, _: Option<Option<i64>>) {}
|
||||
// pub fn PassOptionalNullableUnsignedLongLong(&self, _: Option<Option<u64>>) {}
|
||||
// pub fn PassOptionalNullableFloat(&self, _: Option<Option<f32>>) {}
|
||||
// pub fn PassOptionalNullableDouble(&self, _: Option<Option<f64>>) {}
|
||||
pub fn PassOptionalNullableBoolean(&self, _: Option<Option<bool>>) {}
|
||||
pub fn PassOptionalNullableByte(&self, _: Option<Option<i8>>) {}
|
||||
pub fn PassOptionalNullableOctet(&self, _: Option<Option<u8>>) {}
|
||||
pub fn PassOptionalNullableShort(&self, _: Option<Option<i16>>) {}
|
||||
pub fn PassOptionalNullableUnsignedShort(&self, _: Option<Option<u16>>) {}
|
||||
pub fn PassOptionalNullableLong(&self, _: Option<Option<i32>>) {}
|
||||
pub fn PassOptionalNullableUnsignedLong(&self, _: Option<Option<u32>>) {}
|
||||
pub fn PassOptionalNullableLongLong(&self, _: Option<Option<i64>>) {}
|
||||
pub fn PassOptionalNullableUnsignedLongLong(&self, _: Option<Option<u64>>) {}
|
||||
pub fn PassOptionalNullableFloat(&self, _: Option<Option<f32>>) {}
|
||||
pub fn PassOptionalNullableDouble(&self, _: Option<Option<f64>>) {}
|
||||
pub fn PassOptionalNullableString(&self, _: Option<Option<DOMString>>) {}
|
||||
// pub fn PassOptionalNullableInterface(&self, _: Option<Option<JS<Blob>>>) {}
|
||||
|
||||
|
|
|
@ -32,33 +32,32 @@ interface TestBinding {
|
|||
attribute DOMString? stringAttributeNullable;
|
||||
attribute Blob? interfaceAttributeNullable;
|
||||
|
||||
// FIXME (issue #1813) Doesn't currently compile.
|
||||
// void passOptionalBoolean(optional boolean arg);
|
||||
// void passOptionalByte(optional byte arg);
|
||||
// void passOptionalOctet(optional octet arg);
|
||||
// void passOptionalShort(optional short arg);
|
||||
// void passOptionalUnsignedShort(optional unsigned short arg);
|
||||
// void passOptionalLong(optional long arg);
|
||||
// void passOptionalUnsignedLong(optional unsigned long arg);
|
||||
// void passOptionalLongLong(optional long long arg);
|
||||
// void passOptionalUnsignedLongLong(optional unsigned long long arg);
|
||||
// void passOptionalFloat(optional float arg);
|
||||
// void passOptionalDouble(optional double arg);
|
||||
void passOptionalBoolean(optional boolean arg);
|
||||
void passOptionalByte(optional byte arg);
|
||||
void passOptionalOctet(optional octet arg);
|
||||
void passOptionalShort(optional short arg);
|
||||
void passOptionalUnsignedShort(optional unsigned short arg);
|
||||
void passOptionalLong(optional long arg);
|
||||
void passOptionalUnsignedLong(optional unsigned long arg);
|
||||
void passOptionalLongLong(optional long long arg);
|
||||
void passOptionalUnsignedLongLong(optional unsigned long long arg);
|
||||
void passOptionalFloat(optional float arg);
|
||||
void passOptionalDouble(optional double arg);
|
||||
void passOptionalString(optional DOMString arg);
|
||||
void passOptionalInterface(optional Blob arg);
|
||||
void passOptionalAny(optional any arg);
|
||||
|
||||
// void passOptionalNullableBoolean(optional boolean? arg);
|
||||
// void passOptionalNullableByte(optional byte? arg);
|
||||
// void passOptionalNullableOctet(optional octet? arg);
|
||||
// void passOptionalNullableShort(optional short? arg);
|
||||
// void passOptionalNullableUnsignedShort(optional unsigned short? arg);
|
||||
// void passOptionalNullableLong(optional long? arg);
|
||||
// void passOptionalNullableUnsignedLong(optional unsigned long? arg);
|
||||
// void passOptionalNullableLongLong(optional long long? arg);
|
||||
// void passOptionalNullableUnsignedLongLong(optional unsigned long long? arg);
|
||||
// void passOptionalNullableFloat(optional float? arg);
|
||||
// void passOptionalNullableDouble(optional double? arg);
|
||||
void passOptionalNullableBoolean(optional boolean? arg);
|
||||
void passOptionalNullableByte(optional byte? arg);
|
||||
void passOptionalNullableOctet(optional octet? arg);
|
||||
void passOptionalNullableShort(optional short? arg);
|
||||
void passOptionalNullableUnsignedShort(optional unsigned short? arg);
|
||||
void passOptionalNullableLong(optional long? arg);
|
||||
void passOptionalNullableUnsignedLong(optional unsigned long? arg);
|
||||
void passOptionalNullableLongLong(optional long long? arg);
|
||||
void passOptionalNullableUnsignedLongLong(optional unsigned long long? arg);
|
||||
void passOptionalNullableFloat(optional float? arg);
|
||||
void passOptionalNullableDouble(optional double? arg);
|
||||
void passOptionalNullableString(optional DOMString? arg);
|
||||
// void passOptionalNullableInterface(optional Blob? arg);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче