diff options
author | bors-servo <release+servo@mozilla.com> | 2014-04-18 09:16:16 -0400 |
---|---|---|
committer | bors-servo <release+servo@mozilla.com> | 2014-04-18 09:16:16 -0400 |
commit | 15e0b487287ff47e0ecfe13c7fc442033ef71814 (patch) | |
tree | a456a4f5483e4d7fe67b7bae13705fb958606bda /src/components/script/dom/bindings/codegen/CodegenRust.py | |
parent | 2e6a0078b34f0e3577e1fba84e5f7bb4059de061 (diff) | |
parent | 4d20d1716d2068c5594b8184e2839238958a66e4 (diff) | |
download | servo-15e0b487287ff47e0ecfe13c7fc442033ef71814.tar.gz servo-15e0b487287ff47e0ecfe13c7fc442033ef71814.zip |
auto merge of #2154 : Ms2ger/servo/enumerated-codegen, r=jdm
Diffstat (limited to 'src/components/script/dom/bindings/codegen/CodegenRust.py')
-rw-r--r-- | src/components/script/dom/bindings/codegen/CodegenRust.py | 36 |
1 files changed, 17 insertions, 19 deletions
diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py index 8d89fe1b879..9df2e31649a 100644 --- a/src/components/script/dom/bindings/codegen/CodegenRust.py +++ b/src/components/script/dom/bindings/codegen/CodegenRust.py @@ -733,31 +733,29 @@ def getJSToNativeConversionTemplate(type, descriptorProvider, failureCode=None, "yet") enum = type.inner.identifier.name if invalidEnumValueFatal: - handleInvalidEnumValueCode = " return 0;\n" + handleInvalidEnumValueCode = "return 0;" else: - handleInvalidEnumValueCode = " return 1;\n" + handleInvalidEnumValueCode = "return 1;" template = ( - "{\n" - #" int index = FindEnumStringIndex<%(invalidEnumValueFatal)s>(cx, ${val}, %(values)s, \"%(enumtype)s\", &ok);\n" - " let result = FindEnumStringIndex(cx, ${val}, %(values)s);\n" - " if result.is_err() {\n" - "%(handleInvalidEnumValueCode)s" - " }\n" - " let index = result.unwrap();\n" - " ${declName} = cast::transmute(index); //XXXjdm need some range checks up in here\n" - "}" % { "enumtype" : enum, - "values" : enum + "Values::strings", - "invalidEnumValueFatal" : toStringBool(invalidEnumValueFatal), - "handleInvalidEnumValueCode" : handleInvalidEnumValueCode }) + "match FindEnumStringIndex(cx, ${val}, %(values)s) {\n" + " Err(_) => { %(exceptionCode)s },\n" + " Ok(None) => { %(handleInvalidEnumValueCode)s },\n" + " Ok(Some(index)) => {\n" + " //XXXjdm need some range checks up in here.\n" + " ${declName} = cast::transmute(index);\n" + " },\n" + "}" % { "values" : enum + "Values::strings", + "exceptionCode" : exceptionCode, +"handleInvalidEnumValueCode" : handleInvalidEnumValueCode }) if defaultValue is not None: assert(defaultValue.type.tag() == IDLType.Tags.domstring) - template = "" #XXXjdm unfinished - #template = handleDefault(template, - # ("${declName} = %sValues::%s;" % - # (enum, - # getEnumValueName(defaultValue.value)))) + template = handleDefault(template, + ("${declName} = %sValues::%s;" % + (enum, + getEnumValueName(defaultValue.value)))) + return (template, CGGeneric(enum), None, isOptional, None) if type.isCallback(): |