diff options
author | Ms2ger <ms2ger@gmail.com> | 2014-06-03 18:47:59 +0200 |
---|---|---|
committer | Ms2ger <ms2ger@gmail.com> | 2014-06-03 18:47:59 +0200 |
commit | d8801da9c5e3bc1d1fe4f40853ce9422aedb6103 (patch) | |
tree | d30463cd4c6dc652113c4403ddec82712ba44c06 /src/components/script/dom/bindings/codegen/CodegenRust.py | |
parent | a90f1e3773671b3664c5c630085211cac908701e (diff) | |
download | servo-d8801da9c5e3bc1d1fe4f40853ce9422aedb6103.tar.gz servo-d8801da9c5e3bc1d1fe4f40853ce9422aedb6103.zip |
Move WebIDL unions into their own module.
This will allow multiple unions to contain the same type.
Diffstat (limited to 'src/components/script/dom/bindings/codegen/CodegenRust.py')
-rw-r--r-- | src/components/script/dom/bindings/codegen/CodegenRust.py | 39 |
1 files changed, 22 insertions, 17 deletions
diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py index 5f613f8790e..62cb66d5f1f 100644 --- a/src/components/script/dom/bindings/codegen/CodegenRust.py +++ b/src/components/script/dom/bindings/codegen/CodegenRust.py @@ -555,7 +555,7 @@ def getJSToNativeConversionTemplate(type, descriptorProvider, failureCode=None, raise TypeError("Can't handle unions as members, we have a " "holderType") - declType = CGGeneric(type.name) + declType = CGGeneric(type.name + "::" + type.name) if type.nullable(): declType = CGWrapper(declType, pre="Option<", post=" >") @@ -1657,6 +1657,20 @@ def UnionTypes(descriptors, dictionaries, callbacks, config): Returns a CGList containing CGUnionStructs for every union. """ + imports = [ + 'dom::bindings::utils::unwrap_jsmanaged', + 'dom::bindings::codegen::PrototypeList', + 'dom::bindings::conversions::FromJSValConvertible', + 'dom::bindings::conversions::ToJSValConvertible', + 'dom::bindings::conversions::Default', + 'dom::bindings::error::throw_not_in_union', + 'dom::bindings::js::JS', + 'dom::types::*', + 'js::jsapi::JSContext', + 'js::jsval::JSVal', + 'servo_util::str::DOMString', + ] + # Now find all the things we'll need as arguments and return values because # we need to wrap or unwrap them. unionStructs = dict() @@ -1668,7 +1682,12 @@ def UnionTypes(descriptors, dictionaries, callbacks, config): name = str(t) if not name in unionStructs: provider = descriptor or config.getDescriptorProvider() - unionStructs[name] = CGList([CGUnionStruct(t, provider), CGUnionConversionStruct(t, provider)]) + unionStructs[name] = CGNamespace(name, + CGImports(CGList([ + CGUnionStruct(t, provider), + CGUnionConversionStruct(t, provider) + ]), [], imports), + public=True) return CGList(SortedDictValues(unionStructs), "\n\n") @@ -4531,7 +4550,7 @@ class CGNativeMember(ClassMethod): if type.isUnion(): if type.nullable(): type = type.inner - return str(type), False, True + return str(type) + "::" + str(type), False, True if type.isGeckoInterface() and not type.isCallbackInterface(): iface = type.unroll().inner @@ -5315,20 +5334,6 @@ class GlobalGenRoots(): config.getCallbacks(), config) - curr = CGImports(curr, [], [ - 'dom::bindings::utils::unwrap_jsmanaged', - 'dom::bindings::codegen::PrototypeList', - 'dom::bindings::conversions::FromJSValConvertible', - 'dom::bindings::conversions::ToJSValConvertible', - 'dom::bindings::conversions::Default', - 'dom::bindings::error::throw_not_in_union', - 'dom::bindings::js::JS', - 'dom::types::*', - 'js::jsapi::JSContext', - 'js::jsval::JSVal', - 'servo_util::str::DOMString', - ]) - # Add the auto-generated comment. curr = CGWrapper(curr, pre=AUTOGENERATED_WARNING_COMMENT) |