diff options
author | Anthony Ramine <n.oxyde@gmail.com> | 2015-08-15 13:19:57 +0200 |
---|---|---|
committer | Anthony Ramine <n.oxyde@gmail.com> | 2015-08-16 14:16:32 +0200 |
commit | 44aabbe64d5994e836cc80e4668d8d1c74103676 (patch) | |
tree | 4e7ce1bac1a1f80c7998a9a4c9e4faa49738b212 /components/script/dom/bindings/codegen/CodegenRust.py | |
parent | efe982392eb2f4b21069b55c68707e508d060c2b (diff) | |
download | servo-44aabbe64d5994e836cc80e4668d8d1c74103676.tar.gz servo-44aabbe64d5994e836cc80e4668d8d1c74103676.zip |
Support required dictionary members (fixes #7216)
Diffstat (limited to 'components/script/dom/bindings/codegen/CodegenRust.py')
-rw-r--r-- | components/script/dom/bindings/codegen/CodegenRust.py | 8 |
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 |