mirror of
https://github.com/servo/servo.git
synced 2025-07-29 02:00:23 +01:00
Support default values for restricted float members (fixes #7217)
This commit is contained in:
parent
a1b3f477aa
commit
ec2a6b24b1
3 changed files with 15 additions and 14 deletions
|
@ -97,8 +97,8 @@ numericTags = [
|
||||||
IDLType.Tags.int16, IDLType.Tags.uint16,
|
IDLType.Tags.int16, IDLType.Tags.uint16,
|
||||||
IDLType.Tags.int32, IDLType.Tags.uint32,
|
IDLType.Tags.int32, IDLType.Tags.uint32,
|
||||||
IDLType.Tags.int64, IDLType.Tags.uint64,
|
IDLType.Tags.int64, IDLType.Tags.uint64,
|
||||||
IDLType.Tags.unrestricted_float, IDLType.Tags.float,
|
IDLType.Tags.unrestricted_float,
|
||||||
IDLType.Tags.unrestricted_double, IDLType.Tags.double
|
IDLType.Tags.unrestricted_double
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
@ -1056,7 +1056,9 @@ def getJSToNativeConversionInfo(type, descriptorProvider, failureCode=None,
|
||||||
defaultStr = "None"
|
defaultStr = "None"
|
||||||
else:
|
else:
|
||||||
tag = defaultValue.type.tag()
|
tag = defaultValue.type.tag()
|
||||||
if tag in numericTags:
|
if tag in [IDLType.Tags.float, IDLType.Tags.double]:
|
||||||
|
defaultStr = "Finite::wrap(%s)" % defaultValue.value
|
||||||
|
elif tag in numericTags:
|
||||||
defaultStr = str(defaultValue.value)
|
defaultStr = str(defaultValue.value)
|
||||||
else:
|
else:
|
||||||
assert(tag == IDLType.Tags.bool)
|
assert(tag == IDLType.Tags.bool)
|
||||||
|
|
|
@ -2920,8 +2920,7 @@ class IDLValue(IDLObject):
|
||||||
elif self.type.isInteger() and type.isFloat():
|
elif self.type.isInteger() and type.isFloat():
|
||||||
# Convert an integer literal into float
|
# Convert an integer literal into float
|
||||||
if -2**24 <= self.value <= 2**24:
|
if -2**24 <= self.value <= 2**24:
|
||||||
floatType = BuiltinTypes[IDLBuiltinType.Types.float]
|
return IDLValue(self.location, type, float(self.value))
|
||||||
return IDLValue(self.location, floatType, float(self.value))
|
|
||||||
else:
|
else:
|
||||||
raise WebIDLError("Converting value %s to %s will lose precision." %
|
raise WebIDLError("Converting value %s to %s will lose precision." %
|
||||||
(self.value, type), [location])
|
(self.value, type), [location])
|
||||||
|
@ -2939,7 +2938,7 @@ class IDLValue(IDLObject):
|
||||||
math.isnan(self.value))):
|
math.isnan(self.value))):
|
||||||
raise WebIDLError("Trying to convert unrestricted value %s to non-unrestricted"
|
raise WebIDLError("Trying to convert unrestricted value %s to non-unrestricted"
|
||||||
% self.value, [location]);
|
% self.value, [location]);
|
||||||
return self
|
return IDLValue(self.location, type, self.value)
|
||||||
elif self.type.isString() and type.isUSVString():
|
elif self.type.isString() and type.isUSVString():
|
||||||
# Allow USVStrings to use default value just like
|
# Allow USVStrings to use default value just like
|
||||||
# DOMString. No coercion is required in this case as Codegen.py
|
# DOMString. No coercion is required in this case as Codegen.py
|
||||||
|
|
|
@ -39,10 +39,10 @@ dictionary TestDictionaryDefaults {
|
||||||
unsigned long unsignedLongValue = 7;
|
unsigned long unsignedLongValue = 7;
|
||||||
long long longLongValue = 7;
|
long long longLongValue = 7;
|
||||||
unsigned long long unsignedLongLongValue = 7;
|
unsigned long long unsignedLongLongValue = 7;
|
||||||
// unrestricted float unrestrictedFloatValue = 7.0;
|
unrestricted float unrestrictedFloatValue = 7.0;
|
||||||
// float floatValue = 7.0;
|
float floatValue = 7.0;
|
||||||
// unrestricted double UnrestrictedDoubleValue = 7.0;
|
unrestricted double UnrestrictedDoubleValue = 7.0;
|
||||||
// double doubleValue = 7.0;
|
double doubleValue = 7.0;
|
||||||
DOMString stringValue = "foo";
|
DOMString stringValue = "foo";
|
||||||
USVString usvstringValue = "foo";
|
USVString usvstringValue = "foo";
|
||||||
TestEnum enumValue = "bar";
|
TestEnum enumValue = "bar";
|
||||||
|
@ -57,10 +57,10 @@ dictionary TestDictionaryDefaults {
|
||||||
unsigned long? nullableUnsignedLongValue = 7;
|
unsigned long? nullableUnsignedLongValue = 7;
|
||||||
long long? nullableLongLongValue = 7;
|
long long? nullableLongLongValue = 7;
|
||||||
unsigned long long? nullableUnsignedLongLongValue = 7;
|
unsigned long long? nullableUnsignedLongLongValue = 7;
|
||||||
// unrestricted float? nullableUnrestrictedFloatValue = 7.0;
|
unrestricted float? nullableUnrestrictedFloatValue = 7.0;
|
||||||
// float? nullableFloatValue = 7.0;
|
float? nullableFloatValue = 7.0;
|
||||||
// unrestricted double? nullableUnrestrictedDoubleValue = 7.0;
|
unrestricted double? nullableUnrestrictedDoubleValue = 7.0;
|
||||||
// double? nullableDoubleValue = 7.0;
|
double? nullableDoubleValue = 7.0;
|
||||||
DOMString? nullableStringValue = "foo";
|
DOMString? nullableStringValue = "foo";
|
||||||
USVString? nullableUsvstringValue = "foo";
|
USVString? nullableUsvstringValue = "foo";
|
||||||
// TestEnum? nullableEnumValue = "bar";
|
// TestEnum? nullableEnumValue = "bar";
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue