mirror of
https://github.com/servo/servo.git
synced 2025-06-11 01:50:10 +00:00
Rewrite the dictionary codegen to use pattern matching rather than is_some/unwrap.
This commit is contained in:
parent
2a91e987b4
commit
ebd9b9a519
1 changed files with 9 additions and 8 deletions
|
@ -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)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue