From ebd9b9a519d06dffdb3b48fa6f940df4126fd568 Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Mon, 2 Jun 2014 15:44:03 +0200 Subject: [PATCH] Rewrite the dictionary codegen to use pattern matching rather than is_some/unwrap. --- .../script/dom/bindings/codegen/CodegenRust.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py index 5dbc9483be4..ed70d7a1ecb 100644 --- a/src/components/script/dom/bindings/codegen/CodegenRust.py +++ b/src/components/script/dom/bindings/codegen/CodegenRust.py @@ -4123,25 +4123,26 @@ class CGDictionary(CGThing): return declType.define() def getMemberConversion(self, memberInfo): + def indent(s): + return CGIndenter(CGGeneric(s), 8).define() + member, (templateBody, default, declType, _) = memberInfo if not member.defaultValue: raise TypeError("We don't support dictionary members without a " "default value.") - replacements = { "val": "value.unwrap()" } + replacements = { "val": "value" } conversion = string.Template(templateBody).substitute(replacements) - conversion = CGIndenter( - CGIfElseWrapper("value.is_some()", - CGGeneric(conversion), - CGGeneric(default)), 8).define() - conversion = ( "match get_dictionary_property(cx, object, \"%s\") {\n" " Err(()) => return Err(()),\n" - " Ok(value) => {\n" + " Ok(Some(value)) => {\n" "%s\n" " },\n" - "}") % (member.identifier.name, conversion) + " Ok(None) => {\n" + "%s\n" + " },\n" + "}") % (member.identifier.name, indent(conversion), indent(default)) return CGGeneric(conversion)