aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/bindings
diff options
context:
space:
mode:
authorAnthony Ramine <n.oxyde@gmail.com>2015-08-15 13:19:57 +0200
committerAnthony Ramine <n.oxyde@gmail.com>2015-08-16 14:16:32 +0200
commit44aabbe64d5994e836cc80e4668d8d1c74103676 (patch)
tree4e7ce1bac1a1f80c7998a9a4c9e4faa49738b212 /components/script/dom/bindings
parentefe982392eb2f4b21069b55c68707e508d060c2b (diff)
downloadservo-44aabbe64d5994e836cc80e4668d8d1c74103676.tar.gz
servo-44aabbe64d5994e836cc80e4668d8d1c74103676.zip
Support required dictionary members (fixes #7216)
Diffstat (limited to 'components/script/dom/bindings')
-rw-r--r--components/script/dom/bindings/codegen/CodegenRust.py8
1 files changed, 6 insertions, 2 deletions
diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py
index 31c3af4e6be..0aad0a2547b 100644
--- a/components/script/dom/bindings/codegen/CodegenRust.py
+++ b/components/script/dom/bindings/codegen/CodegenRust.py
@@ -4800,7 +4800,7 @@ class CGDictionary(CGThing):
def getMemberType(self, memberInfo):
member, info = memberInfo
declType = info.declType
- if not member.defaultValue:
+ if member.optional and not member.defaultValue:
declType = CGWrapper(info.declType, pre="Option<", post=">")
return declType.define()
@@ -4817,7 +4817,11 @@ class CGDictionary(CGThing):
conversion = "%s.get()" % conversion
assert (member.defaultValue is None) == (default is None)
- if not default:
+ if not member.optional:
+ assert default is None
+ default = ("throw_type_error(cx, \"Missing required member \\\"%s\\\".\");\n"
+ "return Err(());") % member.identifier.name
+ elif not default:
default = "None"
conversion = "Some(%s)" % conversion