diff options
Diffstat (limited to 'components/script/dom/bindings/codegen/CodegenRust.py')
-rw-r--r-- | components/script/dom/bindings/codegen/CodegenRust.py | 396 |
1 files changed, 32 insertions, 364 deletions
diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py index 888c70a394e..d3229fb3dd2 100644 --- a/components/script/dom/bindings/codegen/CodegenRust.py +++ b/components/script/dom/bindings/codegen/CodegenRust.py @@ -39,8 +39,13 @@ from Configuration import ( iteratorNativeType ) -AUTOGENERATED_WARNING_COMMENT = \ - "/* THIS FILE IS AUTOGENERATED - DO NOT EDIT */\n\n" +AUTOGENERATED_WARNING_COMMENT = "/* THIS FILE IS AUTOGENERATED - DO NOT EDIT */\n\n" +IGNORED_WARNING_LIST = ['non_camel_case_types', 'non_upper_case_globals', 'unused_imports', + 'unused_variables', 'unused_assignments', 'unused_mut', + 'clippy::approx_constant', 'clippy::let_unit_value', 'clippy::needless_return', + 'clippy::too_many_arguments', 'clippy::unnecessary_cast'] +IGNORED_WARNINGS = f"#![allow({','.join(IGNORED_WARNING_LIST)})]\n\n" + FINALIZE_HOOK_NAME = '_finalize' TRACE_HOOK_NAME = '_trace' CONSTRUCT_HOOK_NAME = '_constructor' @@ -2160,25 +2165,10 @@ class CGImports(CGWrapper): """ Generates the appropriate import/use statements. """ - def __init__(self, child, descriptors, callbacks, dictionaries, enums, typedefs, imports, config, - ignored_warnings=None): + def __init__(self, child, descriptors, callbacks, dictionaries, enums, typedefs, imports, config): """ Adds a set of imports. """ - if ignored_warnings is None: - ignored_warnings = [ - 'non_camel_case_types', - 'non_upper_case_globals', - 'unused_imports', - 'unused_variables', - 'unused_assignments', - 'unused_mut', - 'clippy::approx_constant', - 'clippy::let_unit_value', - 'clippy::needless_return', - 'clippy::too_many_arguments', - 'clippy::unnecessary_cast', - ] def componentTypes(type): if type.isType() and type.nullable(): @@ -2289,8 +2279,6 @@ class CGImports(CGWrapper): extras += [getModuleFromObject(t) + '::' + getIdentifier(t).name] statements = [] - if len(ignored_warnings) > 0: - statements.append('#![allow(%s)]' % ','.join(ignored_warnings)) statements.extend('use %s;' % i for i in sorted(set(imports + extras))) CGWrapper.__init__(self, child, @@ -2377,7 +2365,7 @@ class CGDOMJSClass(CGThing): def define(self): parentName = self.descriptor.getParentName() if not parentName: - parentName = "crate::dom::bindings::reflector::Reflector" + parentName = "Reflector" args = { "domClass": DOMClass(self.descriptor), @@ -2399,7 +2387,7 @@ class CGDOMJSClass(CGThing): elif self.descriptor.weakReferenceable: args["slots"] = "2" return """\ -static CLASS_OPS: js::jsapi::JSClassOps = js::jsapi::JSClassOps { +static CLASS_OPS: JSClassOps = JSClassOps { addProperty: None, delProperty: None, enumerate: None, @@ -2413,7 +2401,7 @@ static CLASS_OPS: js::jsapi::JSClassOps = js::jsapi::JSClassOps { }; static Class: DOMJSClass = DOMJSClass { - base: js::jsapi::JSClass { + base: JSClass { name: %(name)s as *const u8 as *const libc::c_char, flags: JSCLASS_IS_DOMJSCLASS | %(flags)s | (((%(slots)s) & JSCLASS_RESERVED_SLOTS_MASK) << JSCLASS_RESERVED_SLOTS_SHIFT) @@ -2442,7 +2430,7 @@ class CGAssertInheritance(CGThing): if parent: parentName = parent.identifier.name else: - parentName = "crate::dom::bindings::reflector::Reflector" + parentName = "Reflector" selfName = self.descriptor.interface.identifier.name @@ -2624,35 +2612,12 @@ def UnionTypes(descriptors, dictionaries, callbacks, typedefs, config): imports = [ 'crate::dom', - 'crate::dom::bindings::codegen::PrototypeList', - 'crate::dom::bindings::conversions::ConversionResult', - 'crate::dom::bindings::conversions::FromJSValConvertible', - 'crate::dom::bindings::conversions::ToJSValConvertible', - 'crate::dom::bindings::conversions::ConversionBehavior', - 'crate::dom::bindings::conversions::StringificationBehavior', - 'crate::dom::bindings::conversions::root_from_handlevalue', + 'crate::dom::bindings::import::base::*', 'crate::dom::bindings::conversions::windowproxy_from_handlevalue', - 'std::ptr::NonNull', - 'std::rc::Rc', 'crate::dom::bindings::record::Record', - 'crate::dom::bindings::num::Finite', - 'crate::dom::bindings::root::DomRoot', - 'crate::dom::bindings::str::ByteString', - 'crate::dom::bindings::str::DOMString', - 'crate::dom::bindings::str::USVString', - 'crate::dom::bindings::trace::RootedTraceableBox', 'crate::dom::types::*', 'crate::dom::windowproxy::WindowProxy', - 'crate::script_runtime::JSContext as SafeJSContext', - 'js::error::throw_type_error', - 'js::rust::HandleValue', - 'js::jsapi::Heap', - 'js::jsapi::IsCallable', - 'js::jsapi::JSContext', - 'js::jsapi::JSObject', - 'js::rust::MutableHandleValue', - 'js::jsval::JSVal', - 'js::typedarray' + 'js::typedarray', ] # Now find all the things we'll need as arguments and return values because @@ -2681,15 +2646,8 @@ def UnionTypes(descriptors, dictionaries, callbacks, typedefs, config): # Sort unionStructs by key, retrieve value unionStructs = (i[1] for i in sorted(list(unionStructs.items()), key=operator.itemgetter(0))) - return CGImports(CGList(unionStructs, "\n\n"), - descriptors=[], - callbacks=[], - dictionaries=[], - enums=[], - typedefs=[], - imports=imports, - config=config, - ignored_warnings=[]) + return CGImports(CGList(unionStructs, "\n\n"), descriptors=[], callbacks=[], dictionaries=[], enums=[], + typedefs=[], imports=imports, config=config) class Argument(): @@ -6344,307 +6302,6 @@ class CGWeakReferenceableTrait(CGThing): return self.code -def generate_imports(config, cgthings, descriptors, callbacks=None, dictionaries=None, enums=None, typedefs=None): - if not callbacks: - callbacks = [] - if not dictionaries: - dictionaries = [] - if not enums: - enums = [] - if not typedefs: - typedefs = [] - - return CGImports(cgthings, descriptors, callbacks, dictionaries, enums, typedefs, [ - 'js', - 'js::JSCLASS_GLOBAL_SLOT_COUNT', - 'js::JSCLASS_IS_DOMJSCLASS', - 'js::JSCLASS_IS_GLOBAL', - 'js::JSCLASS_RESERVED_SLOTS_MASK', - 'js::JS_CALLEE', - 'js::error::throw_type_error', - 'js::error::throw_internal_error', - 'js::rust::wrappers::Call', - 'js::jsapi::__BindgenBitfieldUnit', - 'js::jsapi::CallArgs', - 'js::jsapi::CurrentGlobalOrNull', - 'js::rust::wrappers::GetPropertyKeys', - 'js::rust::get_object_realm', - 'js::rust::get_context_realm', - 'js::jsapi::GCContext', - 'js::jsapi::GetWellKnownSymbol', - 'js::rust::Handle', - 'js::jsapi::Handle as RawHandle', - 'js::rust::HandleId', - 'js::jsapi::HandleId as RawHandleId', - 'js::rust::HandleObject', - 'js::jsapi::HandleObject as RawHandleObject', - 'js::rust::HandleValue', - 'js::jsapi::HandleValue as RawHandleValue', - 'js::jsapi::HandleValueArray', - 'js::jsapi::Heap', - 'js::rust::wrappers::RUST_INTERNED_STRING_TO_JSID', - 'js::jsapi::IsCallable', - 'js::jsapi::JSAutoRealm', - 'js::jsapi::JSCLASS_FOREGROUND_FINALIZE', - 'js::jsapi::JSCLASS_RESERVED_SLOTS_SHIFT', - 'js::jsapi::JSClass', - 'js::jsapi::JSContext', - 'js::jsapi::JSFunctionSpec', - 'js::jsapi::JSITER_HIDDEN', - 'js::jsapi::JSITER_OWNONLY', - 'js::jsapi::JSITER_SYMBOLS', - 'js::jsapi::JSJitGetterCallArgs', - 'js::jsapi::JSJitInfo', - 'js::jsapi::JSJitInfo__bindgen_ty_1', - 'js::jsapi::JSJitInfo__bindgen_ty_2', - 'js::jsapi::JSJitInfo__bindgen_ty_3', - 'js::jsapi::JSJitInfo_AliasSet', - 'js::jsapi::JSJitInfo_ArgType', - 'js::jsapi::JSJitInfo_OpType', - 'js::jsapi::JSJitMethodCallArgs', - 'js::jsapi::JSJitSetterCallArgs', - 'js::jsapi::JSNative', - 'js::jsapi::JSNativeWrapper', - 'js::jsapi::JSObject', - 'js::jsapi::JSPROP_ENUMERATE', - 'js::jsapi::JSPROP_PERMANENT', - 'js::jsapi::JSPROP_READONLY', - 'js::jsapi::JSPropertySpec', - 'js::jsapi::JSPropertySpec_Accessor', - 'js::jsapi::JSPropertySpec_AccessorsOrValue', - 'js::jsapi::JSPropertySpec_AccessorsOrValue_Accessors', - 'js::jsapi::JSPropertySpec_Kind', - 'js::jsapi::JSPropertySpec_Name', - 'js::jsapi::JSPropertySpec_ValueWrapper', - 'js::jsapi::JSPropertySpec_ValueWrapper_Type', - 'js::jsapi::JSPropertySpec_ValueWrapper__bindgen_ty_1', - 'js::jsapi::JSString', - 'js::jsapi::JSTracer', - 'js::jsapi::JSType', - 'js::jsapi::JSTypedMethodJitInfo', - 'js::jsapi::JSValueType', - 'js::jsapi::JS_AtomizeAndPinString', - 'js::rust::wrappers::JS_CallFunctionValue', - 'js::rust::wrappers::JS_CopyOwnPropertiesAndPrivateFields', - 'js::rust::wrappers::JS_DefineProperty', - 'js::rust::wrappers::JS_DefinePropertyById2', - 'js::jsapi::JS_ForwardGetPropertyTo', - 'js::jsapi::GetRealmErrorPrototype', - 'js::jsapi::GetRealmFunctionPrototype', - 'js::jsapi::GetRealmIteratorPrototype', - 'js::jsapi::GetRealmObjectPrototype', - 'js::rust::wrappers::JS_GetProperty', - 'js::jsapi::JS_GetPropertyById', - 'js::jsapi::JS_GetPropertyDescriptorById', - 'js::glue::JS_GetReservedSlot', - 'js::jsapi::JS_HasProperty', - 'js::jsapi::JS_HasPropertyById', - 'js::rust::wrappers::JS_InitializePropertiesFromCompatibleNativeObject', - 'js::jsapi::JS_NewPlainObject', - 'js::jsapi::JS_NewObject', - 'js::rust::RootedGuard', - 'js::rust::wrappers::JS_NewObjectWithGivenProto', - 'js::rust::wrappers::JS_NewObjectWithoutMetadata', - 'js::rust::wrappers::ObjectIsDate', - 'js::rust::wrappers::JS_SetImmutablePrototype', - 'js::rust::wrappers::JS_SetProperty', - 'js::rust::wrappers::JS_SetPrototype', - 'js::jsapi::JS_SetReservedSlot', - 'js::rust::wrappers::JS_WrapValue', - 'js::rust::wrappers::JS_WrapObject', - 'js::rust::MutableHandle', - 'js::jsapi::MutableHandle as RawMutableHandle', - 'js::rust::MutableHandleObject', - 'js::jsapi::MutableHandleObject as RawMutableHandleObject', - 'js::rust::MutableHandleValue', - 'js::jsapi::MutableHandleValue as RawMutableHandleValue', - 'js::jsapi::MutableHandleIdVector as RawMutableHandleIdVector', - 'js::jsapi::ObjectOpResult', - 'js::jsapi::PropertyDescriptor', - 'js::jsapi::Rooted', - 'js::jsapi::RootedId', - 'js::jsapi::RootedObject', - 'js::jsapi::RootedString', - 'js::jsapi::SymbolCode', - 'js::jsapi::jsid', - 'js::jsval::JSVal', - 'js::jsval::NullValue', - 'js::jsval::ObjectValue', - 'js::jsval::ObjectOrNullValue', - 'js::jsval::PrivateValue', - 'js::jsval::UndefinedValue', - 'js::jsapi::UndefinedHandleValue', - 'js::rust::wrappers::AppendToIdVector', - 'js::glue::CallJitGetterOp', - 'js::glue::CallJitMethodOp', - 'js::glue::CallJitSetterOp', - 'js::glue::CreateProxyHandler', - 'js::glue::GetProxyReservedSlot', - 'js::glue::SetProxyReservedSlot', - 'js::rust::wrappers::NewProxyObject', - 'js::glue::ProxyTraps', - 'js::rust::wrappers::RUST_SYMBOL_TO_JSID', - 'js::rust::wrappers::int_to_jsid', - 'js::glue::UnwrapObjectDynamic', - 'js::panic::maybe_resume_unwind', - 'js::panic::wrap_panic', - 'js::rust::GCMethods', - 'js::rust::CustomAutoRooterGuard', - 'js::rust::define_methods', - 'js::rust::define_properties', - 'js::rust::get_object_class', - 'js::typedarray', - 'js::typedarray::Int8Array', - 'js::typedarray::Uint8Array', - 'js::typedarray::Int16Array', - 'js::typedarray::Uint16Array', - 'js::typedarray::Int32Array', - 'js::typedarray::Uint32Array', - 'js::typedarray::Float32Array', - 'js::typedarray::Float64Array', - 'js::typedarray::ArrayBuffer', - 'js::typedarray::ArrayBufferView', - 'js::typedarray::Uint8ClampedArray', - 'crate::dom', - 'crate::dom::bindings', - 'crate::dom::bindings::codegen::InterfaceObjectMap', - 'crate::dom::bindings::constant::ConstantSpec', - 'crate::dom::bindings::constant::ConstantVal', - 'crate::dom::bindings::interface::ConstructorClassHook', - 'crate::dom::bindings::interface::InterfaceConstructorBehavior', - 'crate::dom::bindings::interface::NonCallbackInterfaceObjectClass', - 'crate::dom::bindings::interface::ProtoOrIfaceIndex', - 'crate::dom::bindings::interface::create_global_object', - 'crate::dom::bindings::interface::create_callback_interface_object', - 'crate::dom::bindings::interface::create_interface_prototype_object', - 'crate::dom::bindings::interface::create_named_constructors', - 'crate::dom::bindings::interface::create_noncallback_interface_object', - 'crate::dom::bindings::interface::define_dom_interface', - 'crate::dom::bindings::interface::define_guarded_constants', - 'crate::dom::bindings::interface::define_guarded_methods', - 'crate::dom::bindings::interface::define_guarded_properties', - 'crate::dom::bindings::interface::is_exposed_in', - 'crate::dom::bindings::interface::get_per_interface_object_handle', - 'crate::dom::bindings::interface::get_desired_proto', - 'crate::dom::bindings::htmlconstructor::pop_current_element_queue', - 'crate::dom::bindings::htmlconstructor::push_new_element_queue', - 'crate::dom::bindings::iterable::Iterable', - 'crate::dom::bindings::iterable::IteratorType', - 'crate::dom::bindings::like::Setlike', - 'crate::dom::bindings::like::Maplike', - 'crate::dom::bindings::namespace::NamespaceObjectClass', - 'crate::dom::bindings::namespace::create_namespace_object', - 'crate::dom::bindings::reflector::MutDomObject', - 'crate::dom::bindings::reflector::DomObject', - 'crate::dom::bindings::reflector::DomObjectWrap', - 'crate::dom::bindings::reflector::DomObjectIteratorWrap', - 'crate::dom::bindings::root::Dom', - 'crate::dom::bindings::root::DomRoot', - 'crate::dom::bindings::root::DomSlice', - 'crate::dom::bindings::root::MaybeUnreflectedDom', - 'crate::dom::bindings::root::OptionalHeapSetter', - 'crate::dom::bindings::root::Root', - 'crate::dom::bindings::utils::AsVoidPtr', - 'crate::dom::bindings::utils::DOMClass', - 'crate::dom::bindings::utils::DOMJSClass', - 'crate::dom::bindings::utils::DOM_PROTO_UNFORGEABLE_HOLDER_SLOT', - 'crate::dom::bindings::utils::JSCLASS_DOM_GLOBAL', - 'crate::dom::bindings::utils::ProtoOrIfaceArray', - 'crate::dom::bindings::utils::callargs_is_constructing', - 'crate::dom::bindings::utils::enumerate_global', - 'crate::dom::bindings::finalize::finalize_common', - 'crate::dom::bindings::finalize::finalize_global', - 'crate::dom::bindings::finalize::finalize_weak_referenceable', - 'crate::dom::bindings::utils::generic_getter', - 'crate::dom::bindings::utils::generic_lenient_getter', - 'crate::dom::bindings::utils::generic_lenient_setter', - 'crate::dom::bindings::utils::generic_method', - 'crate::dom::bindings::utils::generic_setter', - 'crate::dom::bindings::utils::get_array_index_from_id', - 'crate::dom::bindings::utils::get_dictionary_property', - 'crate::dom::bindings::utils::get_property_on_prototype', - 'crate::dom::bindings::utils::get_proto_or_iface_array', - 'crate::dom::bindings::utils::has_property_on_prototype', - 'crate::dom::bindings::utils::is_platform_object_dynamic', - 'crate::dom::bindings::utils::is_platform_object_static', - 'crate::dom::bindings::utils::resolve_global', - 'crate::dom::bindings::utils::set_dictionary_property', - 'crate::dom::bindings::utils::trace_global', - 'crate::dom::bindings::trace::JSTraceable', - 'crate::dom::bindings::trace::RootedTraceableBox', - 'crate::dom::bindings::callback::CallSetup', - 'crate::dom::bindings::callback::CallbackContainer', - 'crate::dom::bindings::callback::CallbackInterface', - 'crate::dom::bindings::callback::CallbackFunction', - 'crate::dom::bindings::callback::CallbackObject', - 'crate::dom::bindings::callback::ExceptionHandling', - 'crate::dom::bindings::callback::wrap_call_this_object', - 'crate::dom::bindings::conversions::ConversionBehavior', - 'crate::dom::bindings::conversions::ConversionResult', - 'crate::dom::bindings::conversions::DOM_OBJECT_SLOT', - 'crate::dom::bindings::conversions::FromJSValConvertible', - 'crate::dom::bindings::conversions::IDLInterface', - 'crate::dom::bindings::conversions::StringificationBehavior', - 'crate::dom::bindings::conversions::ToJSValConvertible', - 'crate::dom::bindings::conversions::is_array_like', - 'crate::dom::bindings::conversions::native_from_handlevalue', - 'crate::dom::bindings::conversions::native_from_object', - 'crate::dom::bindings::conversions::native_from_object_static', - 'crate::dom::bindings::conversions::private_from_object', - 'crate::dom::bindings::conversions::root_from_handleobject', - 'crate::dom::bindings::conversions::root_from_handlevalue', - 'crate::dom::bindings::conversions::root_from_object', - 'crate::dom::bindings::conversions::jsid_to_string', - 'crate::dom::bindings::codegen::PrototypeList', - 'crate::dom::bindings::codegen::RegisterBindings', - 'crate::dom::bindings::codegen::UnionTypes', - 'crate::dom::bindings::error::Error', - 'crate::dom::bindings::error::ErrorResult', - 'crate::dom::bindings::error::Fallible', - 'crate::dom::bindings::error::Error::JSFailed', - 'crate::dom::bindings::error::throw_dom_exception', - 'crate::dom::bindings::error::throw_constructor_without_new', - 'crate::dom::bindings::guard::Condition', - 'crate::dom::bindings::guard::Guard', - 'crate::dom::bindings::inheritance::Castable', - 'crate::dom::bindings::proxyhandler', - 'crate::dom::bindings::proxyhandler::ensure_expando_object', - 'crate::dom::bindings::proxyhandler::set_property_descriptor', - 'crate::dom::bindings::proxyhandler::get_expando_object', - 'crate::dom::bindings::record::Record', - 'std::ptr::NonNull', - 'crate::dom::bindings::num::Finite', - 'crate::dom::bindings::str::ByteString', - 'crate::dom::bindings::str::DOMString', - 'crate::dom::bindings::str::USVString', - 'crate::dom::bindings::weakref::DOM_WEAK_SLOT', - 'crate::dom::bindings::weakref::WeakBox', - 'crate::dom::bindings::weakref::WeakReferenceable', - 'crate::dom::windowproxy::WindowProxy', - 'crate::dom::globalscope::GlobalScope', - 'crate::mem::malloc_size_of_including_raw_self', - 'crate::realms::InRealm', - 'crate::realms::AlreadyInRealm', - 'crate::script_runtime::JSContext as SafeJSContext', - 'libc', - 'servo_config::pref', - 'servo_config::prefs', - 'std::borrow::ToOwned', - 'std::cmp', - 'std::mem', - 'std::num', - 'std::os', - 'std::panic', - 'std::ptr', - 'std::str', - 'std::rc', - 'std::rc::Rc', - 'std::default::Default', - 'std::ffi::CString', - 'std::ops::Deref', - ], config) - - class CGDescriptor(CGThing): def __init__(self, descriptor, config, soleDescriptor): CGThing.__init__(self) @@ -6828,7 +6485,16 @@ class CGDescriptor(CGThing): cgThings.append(CGCreateInterfaceObjectsMethod(descriptor, properties, haveUnscopables, haveLegacyWindowAliases)) - cgThings = generate_imports(config, CGList(cgThings, '\n'), [descriptor]) + cgThings = CGList(cgThings, '\n') + + # Add imports + # These are inside the generated module + cgThings = CGImports(cgThings, descriptors=[descriptor], callbacks=[], + dictionaries=[], enums=[], typedefs=[], imports=[ + 'crate::dom', + 'crate::dom::bindings::import::module::*', + ], config=config) + cgThings = CGWrapper(CGNamespace(toBindingNamespace(descriptor.name), cgThings, public=True), post='\n') @@ -7275,11 +6941,13 @@ class CGBindingRoot(CGThing): curr = CGWrapper(CGList(cgthings, "\n\n"), post="\n\n") # Add imports - curr = generate_imports(config, curr, callbackDescriptors, mainCallbacks, - dictionaries, enums, typedefs) + # These are the global imports (outside of the generated module) + curr = CGImports(curr, descriptors=callbackDescriptors, callbacks=mainCallbacks, + dictionaries=dictionaries, enums=enums, typedefs=typedefs, + imports=['crate::dom::bindings::import::base::*'], config=config) # Add the auto-generated comment. - curr = CGWrapper(curr, pre=AUTOGENERATED_WARNING_COMMENT) + curr = CGWrapper(curr, pre=AUTOGENERATED_WARNING_COMMENT + IGNORED_WARNINGS) # Store the final result. self.root = curr @@ -8146,7 +7814,7 @@ class GlobalGenRoots(): return CGImports(code, descriptors=[], callbacks=[], dictionaries=[], enums=[], typedefs=[], imports=[ 'crate::dom::bindings::codegen::Bindings', - ], config=config, ignored_warnings=[]) + ], config=config) @staticmethod def InterfaceTypes(config): |