aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom')
-rw-r--r--components/script/dom/bindings/codegen/CodegenRust.py16
-rw-r--r--components/script/dom/webidls/TestBinding.webidl7
2 files changed, 20 insertions, 3 deletions
diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py
index 3251290f398..b7438e6be0a 100644
--- a/components/script/dom/bindings/codegen/CodegenRust.py
+++ b/components/script/dom/bindings/codegen/CodegenRust.py
@@ -1198,12 +1198,12 @@ def convertConstIDLValueToJSVal(value):
if tag == IDLType.Tags.uint32:
return "ConstantVal::UintVal(%s)" % (value.value)
if tag in [IDLType.Tags.int64, IDLType.Tags.uint64]:
- return "ConstantVal::DoubleVal(%s)" % (value.value)
+ return "ConstantVal::DoubleVal(%s as f64)" % (value.value)
if tag == IDLType.Tags.bool:
return "ConstantVal::BoolVal(true)" if value.value else "ConstantVal::BoolVal(false)"
if tag in [IDLType.Tags.unrestricted_float, IDLType.Tags.float,
IDLType.Tags.unrestricted_double, IDLType.Tags.double]:
- return "ConstantVal::DoubleVal(%s)" % (value.value)
+ return "ConstantVal::DoubleVal(%s as f64)" % (value.value)
raise TypeError("Const value of unhandled type: " + value.type)
@@ -4077,7 +4077,17 @@ class CGConstant(CGThing):
def define(self):
name = self.constant.identifier.name
value = convertConstIDLValueToRust(self.constant.value)
- return "pub const %s: %s = %s;\n" % (name, builtinNames[self.constant.value.type.tag()], value)
+
+ tag = self.constant.value.type.tag()
+ const_type = builtinNames[self.constant.value.type.tag()]
+ # Finite<f32> or Finite<f64> cannot be used un a constant declaration.
+ # Remote the Finite type from restricted float and double tag declarations.
+ if tag == IDLType.Tags.float:
+ const_type = "f32"
+ elif tag == IDLType.Tags.double:
+ const_type = "f64"
+
+ return "pub const %s: %s = %s;\n" % (name, const_type, value)
def getUnionTypeTemplateVars(type, descriptorProvider):
diff --git a/components/script/dom/webidls/TestBinding.webidl b/components/script/dom/webidls/TestBinding.webidl
index 41f73ab7a75..3e6be1b4edd 100644
--- a/components/script/dom/webidls/TestBinding.webidl
+++ b/components/script/dom/webidls/TestBinding.webidl
@@ -151,6 +151,13 @@ interface TestBinding {
[BinaryName="BinaryRenamedAttribute2"] attribute DOMString attr-to-binary-rename;
attribute DOMString attr-to-automatically-rename;
+ const long long constantInt64 = -1;
+ const unsigned long long constantUint64 = 1;
+ const float constantFloat32 = 1.0;
+ const double constantFloat64 = 1.0;
+ const unrestricted float constantUnrestrictedFloat32 = 1.0;
+ const unrestricted double constantUnrestrictedFloat64 = 1.0;
+
[PutForwards=booleanAttribute]
readonly attribute TestBinding forwardedAttribute;