Support the conversion behavior from ECMAScript value to restricted float.

This is defined by WebIDL spec:

- http://heycam.github.io/webidl/#es-float
- http://heycam.github.io/webidl/#es-double
This commit is contained in:
Tetsuharu OHZEKI 2015-03-25 02:48:17 +09:00
parent f7fd34c0aa
commit 4c96732077

View file

@ -887,12 +887,23 @@ def getJSToNativeConversionInfo(type, descriptorProvider, failureCode=None,
if type.nullable():
declType = CGWrapper(declType, pre="Option<", post=">")
#XXXjdm support conversionBehavior here
template = (
"match FromJSValConvertible::from_jsval(cx, ${val}, ()) {\n"
" Ok(v) => v,\n"
" Err(_) => { %s }\n"
"}" % exceptionCode)
template = ""
if type.isFloat() and not type.isUnrestricted():
template = (
"match FromJSValConvertible::from_jsval(cx, ${val}, ()) {\n"
" Ok(v) => v,\n"
" Err(_) => {\n"
" throw_type_error(cx, \"this argument is not a finite floating-point value\");\n"
" %s\n"
" }\n"
"}" % exceptionCode)
else:
#XXXjdm support conversionBehavior here
template = (
"match FromJSValConvertible::from_jsval(cx, ${val}, ()) {\n"
" Ok(v) => v,\n"
" Err(_) => { %s }\n"
"}" % exceptionCode)
if defaultValue is not None:
if isinstance(defaultValue, IDLNullValue):