aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script/dom/bindings/codegen/CodegenRust.py
diff options
context:
space:
mode:
authorbors-servo <release+servo@mozilla.com>2014-04-18 09:16:16 -0400
committerbors-servo <release+servo@mozilla.com>2014-04-18 09:16:16 -0400
commit15e0b487287ff47e0ecfe13c7fc442033ef71814 (patch)
treea456a4f5483e4d7fe67b7bae13705fb958606bda /src/components/script/dom/bindings/codegen/CodegenRust.py
parent2e6a0078b34f0e3577e1fba84e5f7bb4059de061 (diff)
parent4d20d1716d2068c5594b8184e2839238958a66e4 (diff)
downloadservo-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.py36
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():