diff options
40 files changed, 73 insertions, 79 deletions
diff --git a/Cargo.lock b/Cargo.lock index fb144bd8d23..9559080241e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3587,7 +3587,7 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "error-chain 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "xcb 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", + "xcb 0.7.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3602,7 +3602,7 @@ dependencies = [ [[package]] name = "xcb" -version = "0.7.6" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "libc 0.2.23 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3929,7 +3929,7 @@ dependencies = [ "checksum x11 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "db27c597c187da52194a4b8232e7d869503911aab9ff726fefb76d7a830f78ed" "checksum x11-clipboard 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "731230b8edcbb9d99247105e4c9ec0a538594d50ad68d2afa8662195f9db2973" "checksum x11-dl 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "326c500cdc166fd7c70dd8c8a829cd5c0ce7be5a5d98c25817de2b9bdc67faf8" -"checksum xcb 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "63e3a849b73e4e1905e4f4d48f1750429bc86ea9f473632ab382a6f69ecb6b33" +"checksum xcb 0.7.7 (registry+https://github.com/rust-lang/crates.io-index)" = "7cede38417fcdf2f0a9d8abf1cea1c1b066320a8a316e9583a0d717c334fafb2" "checksum xdg 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a66b7c2281ebde13cf4391d70d4c7e5946c3c25e72a7b859ca8f677dcd0b0c61" "checksum xi-unicode 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "12ea8eda4b1eb72f02d148402e23832d56a33f55d8c1b2d5bcdde91d79d47cb1" "checksum xml-rs 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7ec6c39eaa68382c8e31e35239402c0a9489d4141a8ceb0c716099a0b515b562" diff --git a/components/devtools/lib.rs b/components/devtools/lib.rs index d5a2764a710..6a25696eaed 100644 --- a/components/devtools/lib.rs +++ b/components/devtools/lib.rs @@ -306,7 +306,7 @@ fn run_server(sender: Sender<DevtoolsControlMsg>, columnNumber: console_message.columnNumber, }, }; - for mut stream in &mut *console_actor.streams.borrow_mut() { + for stream in &mut *console_actor.streams.borrow_mut() { stream.write_json_packet(&msg); } } diff --git a/components/layout/animation.rs b/components/layout/animation.rs index e4a2782c127..ebbba82fcc6 100644 --- a/components/layout/animation.rs +++ b/components/layout/animation.rs @@ -39,7 +39,7 @@ pub fn update_animation_state(constellation_chan: &IpcSender<ConstellationMsg>, // run. if let Some(ref mut animations) = running_animations.get_mut(node) { // TODO: This being linear is probably not optimal. - for mut anim in animations.iter_mut() { + for anim in animations.iter_mut() { if let Animation::Keyframes(_, ref anim_name, ref mut anim_state) = *anim { if *name == *anim_name { debug!("update_animation_state: Found other animation {}", name); diff --git a/components/layout/construct.rs b/components/layout/construct.rs index c1643c9f92c..7e49784479c 100644 --- a/components/layout/construct.rs +++ b/components/layout/construct.rs @@ -1921,7 +1921,7 @@ impl Legalizer { /// true for anonymous block children of flex flows. fn try_to_add_child(&mut self, context: &SharedStyleContext, parent: &mut FlowRef, child: &mut FlowRef) -> bool { - let mut parent = self.stack.last_mut().unwrap_or(parent); + let parent = self.stack.last_mut().unwrap_or(parent); let (parent_class, child_class) = (parent.class(), child.class()); match (parent_class, child_class) { (FlowClass::TableWrapper, FlowClass::Table) | @@ -1962,7 +1962,7 @@ impl Legalizer { } else { IS_BLOCK_FLEX_ITEM }; - let mut block = FlowRef::deref_mut(&mut block_wrapper).as_mut_block(); + let block = FlowRef::deref_mut(&mut block_wrapper).as_mut_block(); block.base.flags.insert(MARGINS_CANNOT_COLLAPSE); block.fragment.flags.insert(flag); } @@ -1979,7 +1979,7 @@ impl Legalizer { } else { IS_BLOCK_FLEX_ITEM }; - let mut block = FlowRef::deref_mut(child).as_mut_block(); + let block = FlowRef::deref_mut(child).as_mut_block(); block.base.flags.insert(MARGINS_CANNOT_COLLAPSE); block.fragment.flags.insert(flag); } diff --git a/components/layout/display_list_builder.rs b/components/layout/display_list_builder.rs index afc01739a03..3fc63df7c49 100644 --- a/components/layout/display_list_builder.rs +++ b/components/layout/display_list_builder.rs @@ -2731,7 +2731,7 @@ impl InlineFlowDisplayListBuilding for InlineFlow { self.base.clip_and_scroll_info = Some(state.current_clip_and_scroll_info); self.base.clip = state.clip_stack.last().cloned().unwrap_or_else(max_rect); - for mut fragment in self.fragments.fragments.iter_mut() { + for fragment in self.fragments.fragments.iter_mut() { let previous_cb_clip_scroll_info = state.containing_block_clip_and_scroll_info; if establishes_containing_block_for_absolute(fragment.style.get_box().position) { state.containing_block_clip_and_scroll_info = state.current_clip_and_scroll_info; diff --git a/components/layout/flex.rs b/components/layout/flex.rs index b1aa4e3dfe4..92f23e9b7fb 100644 --- a/components/layout/flex.rs +++ b/components/layout/flex.rs @@ -415,7 +415,7 @@ impl FlexFlow { let items = &mut self.items[start..]; let mut children = self.block_flow.base.children.random_access_mut(); - for mut item in items { + for item in items { let kid = children.get(item.index); item.init_sizes(kid, container_size, self.main_mode); let outer_main_size = item.outer_main_size(kid, self.main_mode); @@ -607,7 +607,7 @@ impl FlexFlow { let mut children = self.block_flow.base.children.random_access_mut(); for item in items.iter_mut() { - let mut block = children.get(item.index).as_mut_block(); + let block = children.get(item.index).as_mut_block(); block.base.block_container_writing_mode = container_mode; block.base.block_container_inline_size = inline_size; @@ -659,7 +659,7 @@ impl FlexFlow { let mut children = self.block_flow.base.children.random_access_mut(); for item in &mut self.items { - let mut base = flow::mut_base(children.get(item.index)); + let base = flow::mut_base(children.get(item.index)); if !self.main_reverse { base.position.start.b = cur_b; cur_b = cur_b + base.position.size.block; diff --git a/components/layout/inline.rs b/components/layout/inline.rs index c78f93fc318..663d8509516 100644 --- a/components/layout/inline.rs +++ b/components/layout/inline.rs @@ -435,7 +435,7 @@ impl LineBreaker { return } let last_fragment_index = self.pending_line.range.end() - FragmentIndex(1); - let mut fragment = &mut self.new_fragments[last_fragment_index.get() as usize]; + let fragment = &mut self.new_fragments[last_fragment_index.get() as usize]; let old_fragment_inline_size = fragment.border_box.size.inline; @@ -1047,7 +1047,7 @@ impl InlineFlow { let space_per_expansion_opportunity = slack_inline_size / expansion_opportunities as i32; for fragment_index in line.range.each_index() { let fragment = fragments.get_mut(fragment_index.to_usize()); - let mut scanned_text_fragment_info = match fragment.specific { + let scanned_text_fragment_info = match fragment.specific { SpecificFragmentInfo::ScannedText(ref mut info) if !info.range.is_empty() => info, _ => continue }; diff --git a/components/layout/sequential.rs b/components/layout/sequential.rs index f0f0a0e7c79..3c95b75fbb6 100644 --- a/components/layout/sequential.rs +++ b/components/layout/sequential.rs @@ -117,7 +117,7 @@ pub fn store_overflow(layout_context: &LayoutContext, flow: &mut Flow) { return; } - for mut kid in flow::mut_base(flow).child_iter_mut() { + for kid in flow::mut_base(flow).child_iter_mut() { store_overflow(layout_context, kid); } diff --git a/components/layout/table_cell.rs b/components/layout/table_cell.rs index ec1cfe5c9af..db92b71f078 100644 --- a/components/layout/table_cell.rs +++ b/components/layout/table_cell.rs @@ -136,7 +136,7 @@ impl TableCellFlow { } for kid in flow::mut_base(self).children.iter_mut() { - let mut kid_base = flow::mut_base(kid); + let kid_base = flow::mut_base(kid); if !kid_base.flags.contains(IS_ABSOLUTELY_POSITIONED) { kid_base.position.start.b += offset } diff --git a/components/layout/text.rs b/components/layout/text.rs index f1c7d40515d..d6fc89ffc23 100644 --- a/components/layout/text.rs +++ b/components/layout/text.rs @@ -460,7 +460,7 @@ fn split_first_fragment_at_newline_if_necessary(fragments: &mut LinkedList<Fragm } let new_fragment = { - let mut first_fragment = fragments.front_mut().unwrap(); + let first_fragment = fragments.front_mut().unwrap(); let string_before; let selection_before; { diff --git a/components/net/cookie_storage.rs b/components/net/cookie_storage.rs index f255f57b56d..b3147ef4dd3 100644 --- a/components/net/cookie_storage.rs +++ b/components/net/cookie_storage.rs @@ -103,7 +103,7 @@ impl CookieStorage { // Step 12 let domain = reg_host(&cookie.cookie.domain().as_ref().unwrap_or(&"")); - let mut cookies = self.cookies_map.entry(domain).or_insert(vec![]); + let cookies = self.cookies_map.entry(domain).or_insert(vec![]); if cookies.len() == self.max_per_host { let old_len = cookies.len(); diff --git a/components/profile/heartbeats.rs b/components/profile/heartbeats.rs index 4661dad6183..0d474fe3a11 100644 --- a/components/profile/heartbeats.rs +++ b/components/profile/heartbeats.rs @@ -33,7 +33,7 @@ pub fn cleanup() { ) ); if let Some(mut hbs) = hbs_opt_box { - for (_, mut v) in hbs.iter_mut() { + for (_, v) in hbs.iter_mut() { // log any remaining heartbeat records before dropping log_heartbeat_records(v); } @@ -65,7 +65,7 @@ pub fn maybe_heartbeat(category: &ProfilerCategory, if !(*hbs_ptr).contains_key(category) { maybe_create_heartbeat(&mut (*hbs_ptr), category.clone()); } - if let Some(mut h) = (*hbs_ptr).get_mut(category) { + if let Some(h) = (*hbs_ptr).get_mut(category) { (*h).heartbeat(0, 1, start_time, end_time, start_energy, end_energy); } } diff --git a/components/script/dom/bindings/js.rs b/components/script/dom/bindings/js.rs index 975ddeda13b..abfd9f47eff 100644 --- a/components/script/dom/bindings/js.rs +++ b/components/script/dom/bindings/js.rs @@ -469,7 +469,7 @@ impl RootCollection { /// Start tracking a stack-based root unsafe fn root(&self, untracked_reflector: *const Reflector) { debug_assert!(thread_state::get().is_script()); - let mut roots = &mut *self.roots.get(); + let roots = &mut *self.roots.get(); roots.push(untracked_reflector); assert!(!(*untracked_reflector).get_jsobject().is_null()) } @@ -479,7 +479,7 @@ impl RootCollection { assert!(!tracked_reflector.is_null()); assert!(!(*tracked_reflector).get_jsobject().is_null()); debug_assert!(thread_state::get().is_script()); - let mut roots = &mut *self.roots.get(); + let roots = &mut *self.roots.get(); match roots.iter().rposition(|r| *r == tracked_reflector) { Some(idx) => { roots.remove(idx); diff --git a/components/script/dom/cssstyledeclaration.rs b/components/script/dom/cssstyledeclaration.rs index 0732c9af9e4..ddf085b3491 100644 --- a/components/script/dom/cssstyledeclaration.rs +++ b/components/script/dom/cssstyledeclaration.rs @@ -238,7 +238,7 @@ impl CSSStyleDeclaration { return Err(Error::NoModificationAllowed); } - self.owner.mutate_associated_block(|ref mut pdb, mut changed| { + self.owner.mutate_associated_block(|pdb, changed| { if value.is_empty() { // Step 3 *changed = pdb.remove_property(&id); @@ -360,7 +360,7 @@ impl CSSStyleDeclarationMethods for CSSStyleDeclaration { _ => return Ok(()), }; - self.owner.mutate_associated_block(|ref mut pdb, mut changed| { + self.owner.mutate_associated_block(|pdb, changed| { // Step 5 & 6 *changed = pdb.set_importance(&id, importance); }); @@ -388,7 +388,7 @@ impl CSSStyleDeclarationMethods for CSSStyleDeclaration { }; let mut string = String::new(); - self.owner.mutate_associated_block(|mut pdb, mut changed| { + self.owner.mutate_associated_block(|pdb, changed| { pdb.property_value_to_css(&id, &mut string).unwrap(); *changed = pdb.remove_property(&id); }); @@ -438,7 +438,7 @@ impl CSSStyleDeclarationMethods for CSSStyleDeclaration { } let quirks_mode = window.Document().quirks_mode(); - self.owner.mutate_associated_block(|mut pdb, mut _changed| { + self.owner.mutate_associated_block(|pdb, _changed| { // Step 3 *pdb = parse_style_attribute(&value, &self.owner.base_url(), diff --git a/components/script/dom/cssstylerule.rs b/components/script/dom/cssstylerule.rs index a45e0ad20c8..42e56a5e8fc 100644 --- a/components/script/dom/cssstylerule.rs +++ b/components/script/dom/cssstylerule.rs @@ -100,7 +100,7 @@ impl CSSStyleRuleMethods for CSSStyleRule { if let Ok(mut s) = SelectorList::parse(&parser, &mut css_parser) { // This mirrors what we do in CSSStyleOwner::mutate_associated_block. let mut guard = self.cssrule.shared_lock().write(); - let mut stylerule = self.stylerule.write_with(&mut guard); + let stylerule = self.stylerule.write_with(&mut guard); mem::swap(&mut stylerule.selectors, &mut s); // It seems like we will want to avoid having to invalidate all // stylesheets eventually! diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index 4bc314fc7e4..39f5a8e6d38 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -633,7 +633,7 @@ impl Document { // reset_form_owner_for_listeners -> reset_form_owner -> GetElementById { let mut id_map = self.id_map.borrow_mut(); - let mut elements = id_map.entry(id.clone()).or_insert(Vec::new()); + let elements = id_map.entry(id.clone()).or_insert(Vec::new()); elements.insert_pre_order(element, root.r().upcast::<Node>()); } self.reset_form_owner_for_listeners(&id); @@ -642,7 +642,7 @@ impl Document { pub fn register_form_id_listener<T: ?Sized + FormControl>(&self, id: DOMString, listener: &T) { let mut map = self.form_id_listener_map.borrow_mut(); let listener = listener.to_element(); - let mut set = map.entry(Atom::from(id)).or_insert(HashSet::new()); + let set = map.entry(Atom::from(id)).or_insert(HashSet::new()); set.insert(JS::from_ref(listener)); } @@ -1559,7 +1559,7 @@ impl Document { /// https://html.spec.whatwg.org/multipage/#dom-window-cancelanimationframe pub fn cancel_animation_frame(&self, ident: u32) { let mut list = self.animation_frame_list.borrow_mut(); - if let Some(mut pair) = list.iter_mut().find(|pair| pair.0 == ident) { + if let Some(pair) = list.iter_mut().find(|pair| pair.0 == ident) { pair.1 = None; } } @@ -2391,7 +2391,7 @@ impl Document { if entry.snapshot.is_none() { entry.snapshot = Some(Snapshot::new(el.html_element_in_html_document())); } - let mut snapshot = entry.snapshot.as_mut().unwrap(); + let snapshot = entry.snapshot.as_mut().unwrap(); if snapshot.state.is_none() { snapshot.state = Some(el.state()); } @@ -2418,7 +2418,7 @@ impl Document { entry.hint.insert(RESTYLE_SELF); } - let mut snapshot = entry.snapshot.as_mut().unwrap(); + let snapshot = entry.snapshot.as_mut().unwrap(); if attr.local_name() == &local_name!("id") { snapshot.id_changed = true; } else if attr.local_name() == &local_name!("class") { @@ -4019,7 +4019,7 @@ impl PendingInOrderScriptVec { fn loaded(&self, element: &HTMLScriptElement, result: ScriptResult) { let mut scripts = self.scripts.borrow_mut(); - let mut entry = scripts.iter_mut().find(|entry| &*entry.element == element).unwrap(); + let entry = scripts.iter_mut().find(|entry| &*entry.element == element).unwrap(); entry.loaded(result); } diff --git a/components/script/dom/medialist.rs b/components/script/dom/medialist.rs index 0064d044509..ae20f5aa042 100644 --- a/components/script/dom/medialist.rs +++ b/components/script/dom/medialist.rs @@ -63,7 +63,7 @@ impl MediaListMethods for MediaList { // https://drafts.csswg.org/cssom/#dom-medialist-mediatext fn SetMediaText(&self, value: DOMString) { let mut guard = self.shared_lock().write(); - let mut media_queries = self.media_queries.write_with(&mut guard); + let media_queries = self.media_queries.write_with(&mut guard); // Step 2 if value.is_empty() { // Step 1 @@ -154,7 +154,7 @@ impl MediaListMethods for MediaList { // Step 3 let m_serialized = m.unwrap().to_css_string(); let mut guard = self.shared_lock().write(); - let mut media_list = self.media_queries.write_with(&mut guard); + let media_list = self.media_queries.write_with(&mut guard); let new_vec = media_list.media_queries.drain(..) .filter(|q| m_serialized != q.to_css_string()) .collect(); diff --git a/components/script/dom/range.rs b/components/script/dom/range.rs index fa849a0fc1a..1e65caedc9d 100644 --- a/components/script/dom/range.rs +++ b/components/script/dom/range.rs @@ -1049,7 +1049,7 @@ impl WeakRangeVec { let offset = context.index(); let parent = context.parent; unsafe { - let mut ranges = &mut *self.cell.get(); + let ranges = &mut *self.cell.get(); ranges.update(|entry| { let range = entry.root().unwrap(); @@ -1076,7 +1076,7 @@ impl WeakRangeVec { } unsafe { - let mut ranges = &mut *self.cell.get(); + let ranges = &mut *self.cell.get(); ranges.update(|entry| { let range = entry.root().unwrap(); diff --git a/components/script/dom/servoparser/async_html.rs b/components/script/dom/servoparser/async_html.rs index 59411fda1c7..70d2008f49f 100644 --- a/components/script/dom/servoparser/async_html.rs +++ b/components/script/dom/servoparser/async_html.rs @@ -568,7 +568,7 @@ impl TreeSink for Sink { } let node = self.new_parse_node(); { - let mut data = self.get_parse_node_data_mut(&target.id); + let data = self.get_parse_node_data_mut(&target.id); data.contents = Some(node.clone()); } self.send_op(ParseOperation::GetTemplateContents { target: target.id, contents: node.id }); @@ -596,7 +596,7 @@ impl TreeSink for Sink { let mut node = self.new_parse_node(); node.qual_name = Some(name.clone()); { - let mut node_data = self.get_parse_node_data_mut(&node.id); + let node_data = self.get_parse_node_data_mut(&node.id); node_data.is_integration_point = html_attrs.iter() .any(|attr| { let attr_value = &String::from(attr.value.clone()); diff --git a/components/script/dom/url.rs b/components/script/dom/url.rs index a02a735638f..41de4dcc0c7 100644 --- a/components/script/dom/url.rs +++ b/components/script/dom/url.rs @@ -96,8 +96,8 @@ impl URL { // https://w3c.github.io/FileAPI/#dfn-createObjectURL pub fn CreateObjectURL(global: &GlobalScope, blob: &Blob) -> DOMString { - /// XXX: Second field is an unicode-serialized Origin, it is a temporary workaround - /// and should not be trusted. See issue https://github.com/servo/servo/issues/11722 + // XXX: Second field is an unicode-serialized Origin, it is a temporary workaround + // and should not be trusted. See issue https://github.com/servo/servo/issues/11722 let origin = get_blob_origin(&global.get_url()); let id = blob.get_blob_url_id(); diff --git a/components/script/dom/vrdisplay.rs b/components/script/dom/vrdisplay.rs index 3f73a577fad..54f06fb928f 100644 --- a/components/script/dom/vrdisplay.rs +++ b/components/script/dom/vrdisplay.rs @@ -268,7 +268,7 @@ impl VRDisplayMethods for VRDisplay { fn CancelAnimationFrame(&self, handle: u32) { if self.presenting.get() { let mut list = self.raf_callback_list.borrow_mut(); - if let Some(mut pair) = list.iter_mut().find(|pair| pair.0 == handle) { + if let Some(pair) = list.iter_mut().find(|pair| pair.0 == handle) { pair.1 = None; } } else { diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs index 48e6996b85f..20fe133e02c 100644 --- a/components/script/dom/webglrenderingcontext.rs +++ b/components/script/dom/webglrenderingcontext.rs @@ -2434,7 +2434,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { } typedarray!(in(cx) let mut pixels_data: ArrayBufferView = pixels); - let (array_type, mut data) = match { pixels_data.as_mut() } { + let (array_type, data) = match { pixels_data.as_mut() } { Ok(data) => (data.get_array_type(), data.as_mut_slice()), Err(_) => return Err(Error::Type("Not an ArrayBufferView".to_owned())), }; diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs index 6ed2dda1851..e6652d79d70 100644 --- a/components/script/dom/xmlhttprequest.rs +++ b/components/script/dom/xmlhttprequest.rs @@ -627,7 +627,7 @@ impl XMLHttpRequestMethods for XMLHttpRequest { if !content_type_set { let ct = request.headers.get_mut::<ContentType>(); - if let Some(mut ct) = ct { + if let Some(ct) = ct { if let Some(encoding) = encoding { for param in &mut (ct.0).2 { if param.0 == MimeAttr::Charset { diff --git a/components/script/lib.rs b/components/script/lib.rs index cab84d54294..223f00d33c2 100644 --- a/components/script/lib.rs +++ b/components/script/lib.rs @@ -10,7 +10,6 @@ #![feature(mpsc_select)] #![feature(nonzero)] #![feature(on_unimplemented)] -#![feature(option_entry)] #![feature(plugin)] #![feature(proc_macro)] #![feature(stmt_expr_attributes)] diff --git a/components/script_plugins/unrooted_must_root.rs b/components/script_plugins/unrooted_must_root.rs index 5dbd2b1a3bd..f3f5e60ab62 100644 --- a/components/script_plugins/unrooted_must_root.rs +++ b/components/script_plugins/unrooted_must_root.rs @@ -182,7 +182,7 @@ impl<'a, 'b, 'tcx> visit::Visitor<'tcx> for FnDefVisitor<'a, 'b, 'tcx> { } match expr.node { - /// Trait casts from #[must_root] types are not allowed + // Trait casts from #[must_root] types are not allowed hir::ExprCast(ref subexpr, _) => require_rooted(cx, self.in_new_function, &*subexpr), // This catches assignments... the main point of this would be to catch mutable // references to `JS<T>`. @@ -206,13 +206,21 @@ impl<'a, 'b, 'tcx> visit::Visitor<'tcx> for FnDefVisitor<'a, 'b, 'tcx> { fn visit_pat(&mut self, pat: &'tcx hir::Pat) { let cx = self.cx; - if let hir::PatKind::Binding(hir::BindingMode::BindByValue(_), _, _, _) = pat.node { - let ty = cx.tables.pat_ty(pat); - if is_unrooted_ty(cx, ty, self.in_new_function) { - cx.span_lint(UNROOTED_MUST_ROOT, - pat.span, - &format!("Expression of type {:?} must be rooted", ty)) + // We want to detect pattern bindings that move a value onto the stack. + // When "default binding modes" https://github.com/rust-lang/rust/issues/42640 + // are implemented, the `Unannotated` case could cause false-positives. + // These should be fixable by adding an explicit `ref`. + match pat.node { + hir::PatKind::Binding(hir::BindingAnnotation::Unannotated, _, _, _) | + hir::PatKind::Binding(hir::BindingAnnotation::Mutable, _, _, _) => { + let ty = cx.tables.pat_ty(pat); + if is_unrooted_ty(cx, ty, self.in_new_function) { + cx.span_lint(UNROOTED_MUST_ROOT, + pat.span, + &format!("Expression of type {:?} must be rooted", ty)) + } } + _ => {} } visit::walk_pat(self, pat); diff --git a/components/selectors/matching.rs b/components/selectors/matching.rs index 7bd9814d26f..8f6b2fa6aa5 100644 --- a/components/selectors/matching.rs +++ b/components/selectors/matching.rs @@ -458,7 +458,7 @@ where /// Matches a complex selector. pub fn matches_complex_selector<E, F>(mut iter: SelectorIter<E::Impl>, element: &E, - mut context: &mut LocalMatchingContext<E::Impl>, + context: &mut LocalMatchingContext<E::Impl>, flags_setter: &mut F) -> bool where E: Element, diff --git a/components/selectors/parser.rs b/components/selectors/parser.rs index ee69dd14de8..ce6bfab62c8 100644 --- a/components/selectors/parser.rs +++ b/components/selectors/parser.rs @@ -1464,7 +1464,7 @@ fn parse_negation<'i, 't, P, E, Impl>(parser: &P, fn parse_compound_selector<'i, 't, P, E, Impl>( parser: &P, input: &mut CssParser<'i, 't>, - mut builder: &mut SelectorBuilder<Impl>) + builder: &mut SelectorBuilder<Impl>) -> Result<bool, ParseError<'i, SelectorParseError<'i, E>>> where P: Parser<'i, Impl=Impl, Error=E>, Impl: SelectorImpl { diff --git a/components/style/invalidation/element/invalidator.rs b/components/style/invalidation/element/invalidator.rs index 46b1d53bc1d..44f6b8da3eb 100644 --- a/components/style/invalidation/element/invalidator.rs +++ b/components/style/invalidation/element/invalidator.rs @@ -154,7 +154,7 @@ impl<'a, 'b: 'a, E> TreeStyleInvalidator<'a, 'b, E> trace!(" > visitedness change, force subtree restyle"); // We can't just return here because there may also be attribute // changes as well that imply additional hints. - let mut data = self.data.as_mut().unwrap(); + let data = self.data.as_mut().unwrap(); data.restyle.hint.insert(RestyleHint::restyle_subtree()); } diff --git a/components/style/matching.rs b/components/style/matching.rs index d16dee6f3a1..3701bfe4105 100644 --- a/components/style/matching.rs +++ b/components/style/matching.rs @@ -482,7 +482,7 @@ pub trait MatchMethods : TElement { fn finish_restyle( &self, context: &mut StyleContext<Self>, - mut data: &mut ElementData, + data: &mut ElementData, mut new_styles: ElementStyles, important_rules_changed: bool, ) -> ChildCascadeRequirement { diff --git a/components/style/properties/properties.mako.rs b/components/style/properties/properties.mako.rs index 8ba3f44df1c..4eaeb467fc8 100644 --- a/components/style/properties/properties.mako.rs +++ b/components/style/properties/properties.mako.rs @@ -3395,7 +3395,7 @@ pub fn modify_border_style_for_inline_sides(style: &mut Arc<ComputedValues>, return; } } - let mut style = Arc::make_mut(style); + let style = Arc::make_mut(style); let border = Arc::make_mut(&mut style.border); match side { PhysicalSide::Left => { diff --git a/components/style/style_adjuster.rs b/components/style/style_adjuster.rs index 3b3513c45e0..b59841abc02 100644 --- a/components/style/style_adjuster.rs +++ b/components/style/style_adjuster.rs @@ -300,7 +300,7 @@ impl<'a, 'b: 'a> StyleAdjuster<'a, 'b> { if overflow_x != original_overflow_x || overflow_y != original_overflow_y { - let mut box_style = self.style.mutate_box(); + let box_style = self.style.mutate_box(); box_style.set_overflow_x(overflow_x); box_style.set_overflow_y(overflow_y); } diff --git a/components/style/style_resolver.rs b/components/style/style_resolver.rs index d83a5961c24..07217384ab9 100644 --- a/components/style/style_resolver.rs +++ b/components/style/style_resolver.rs @@ -247,7 +247,7 @@ where Some(&*primary_style.style) }; - for (i, mut inputs) in pseudo_array.iter_mut().enumerate() { + for (i, inputs) in pseudo_array.iter_mut().enumerate() { if let Some(inputs) = inputs.take() { let pseudo = PseudoElement::from_eager_index(i); pseudo_styles.set( diff --git a/components/style/stylesheets/rule_list.rs b/components/style/stylesheets/rule_list.rs index 82e78015400..14b3dc5e769 100644 --- a/components/style/stylesheets/rule_list.rs +++ b/components/style/stylesheets/rule_list.rs @@ -150,7 +150,7 @@ impl CssRulesHelpers for RawOffsetArc<Locked<CssRules>> { { let mut write_guard = lock.write(); - let mut rules = self.write_with(&mut write_guard); + let rules = self.write_with(&mut write_guard); // Step 5 // Computes the maximum allowed parser state at a given index. let rev_state = rules.0.get(index).map_or(State::Body, CssRule::rule_state); diff --git a/components/style/stylesheets/rule_parser.rs b/components/style/stylesheets/rule_parser.rs index 8f0e556eb5b..96151840b33 100644 --- a/components/style/stylesheets/rule_parser.rs +++ b/components/style/stylesheets/rule_parser.rs @@ -209,7 +209,7 @@ impl<'a, 'i> AtRuleParser<'i> for TopLevelRuleParser<'a> { let id = register_namespace(&url) .map_err(|()| StyleParseError::UnspecifiedError)?; - let mut namespaces = self.namespaces.as_mut().unwrap(); + let namespaces = self.namespaces.as_mut().unwrap(); let opt_prefix = if let Ok(prefix) = prefix_result { let prefix = Prefix::from(prefix.as_ref()); diff --git a/components/style/stylesheets/rules_iterator.rs b/components/style/stylesheets/rules_iterator.rs index 95a3ab8b388..65e1b637ae5 100644 --- a/components/style/stylesheets/rules_iterator.rs +++ b/components/style/stylesheets/rules_iterator.rs @@ -70,7 +70,7 @@ impl<'a, 'b, C> Iterator for RulesIterator<'a, 'b, C> let rule; let sub_iter = { - let mut nested_iter = self.stack.last_mut().unwrap(); + let nested_iter = self.stack.last_mut().unwrap(); rule = match nested_iter.next() { Some(r) => r, None => { diff --git a/components/style/values/animated/color.rs b/components/style/values/animated/color.rs index 534e72fb932..77575ec2d9d 100644 --- a/components/style/values/animated/color.rs +++ b/components/style/values/animated/color.rs @@ -208,7 +208,7 @@ impl ComputeSquaredDistance for Color { impl ToAnimatedZero for Color { #[inline] fn to_animated_zero(&self) -> Result<Self, ()> { - /// FIXME(nox): This does not look correct to me. + // FIXME(nox): This does not look correct to me. Err(()) } } diff --git a/components/style/values/computed/border.rs b/components/style/values/computed/border.rs index 460bf6f759b..9ca98787730 100644 --- a/components/style/values/computed/border.rs +++ b/components/style/values/computed/border.rs @@ -39,7 +39,7 @@ impl BorderImageSideWidth { impl ToAnimatedZero for BorderCornerRadius { #[inline] fn to_animated_zero(&self) -> Result<Self, ()> { - /// FIXME(nox): Why? + // FIXME(nox): Why? Err(()) } } diff --git a/components/webdriver_server/lib.rs b/components/webdriver_server/lib.rs index bd2f667f989..28a4885f0d4 100644 --- a/components/webdriver_server/lib.rs +++ b/components/webdriver_server/lib.rs @@ -702,7 +702,7 @@ impl Handler { fn handle_set_timeouts(&mut self, parameters: &TimeoutsParameters) -> WebDriverResult<WebDriverResponse> { - let mut session = self.session + let session = self.session .as_mut() .ok_or(WebDriverError::new(ErrorStatus::SessionNotCreated, ""))?; diff --git a/rust-commit-hash b/rust-commit-hash index d4f08fe9764..a08d23cd1a7 100644 --- a/rust-commit-hash +++ b/rust-commit-hash @@ -1 +1 @@ -599be0d18f4c6ddf36366d2a5a2ca6dc65886896 +13d94d5fa8129a34f5c77a1bcd76983f5aed2434 diff --git a/tests/unit/style/stylist.rs b/tests/unit/style/stylist.rs index 2e98964c1c1..82c3dc26d2b 100644 --- a/tests/unit/style/stylist.rs +++ b/tests/unit/style/stylist.rs @@ -50,19 +50,6 @@ fn get_mock_rules(css_selectors: &[&str]) -> (Vec<Vec<Rule>>, SharedRwLock) { }).collect(), shared_lock) } -fn get_mock_map(selectors: &[&str]) -> (SelectorMap<Rule>, SharedRwLock) { - let mut map = SelectorMap::<Rule>::new(); - let (selector_rules, shared_lock) = get_mock_rules(selectors); - - for rules in selector_rules.into_iter() { - for rule in rules.into_iter() { - map.insert(rule, QuirksMode::NoQuirks) - } - } - - (map, shared_lock) -} - fn parse_selectors(selectors: &[&str]) -> Vec<Selector<SelectorImpl>> { selectors.iter() .map(|x| SelectorParser::parse_author_origin_no_namespace(x).unwrap().0 |