From owner-svn-ports-all@freebsd.org Fri Oct 20 05:27:11 2017 Return-Path: Delivered-To: svn-ports-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5F1F0E5021F; Fri, 20 Oct 2017 05:27:11 +0000 (UTC) (envelope-from jbeich@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 2EFEC687F5; Fri, 20 Oct 2017 05:27:10 +0000 (UTC) (envelope-from jbeich@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v9K5R9G4061995; Fri, 20 Oct 2017 05:27:09 GMT (envelope-from jbeich@FreeBSD.org) Received: (from jbeich@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v9K5R844061989; Fri, 20 Oct 2017 05:27:08 GMT (envelope-from jbeich@FreeBSD.org) Message-Id: <201710200527.v9K5R844061989@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jbeich set sender to jbeich@FreeBSD.org using -f From: Jan Beich Date: Fri, 20 Oct 2017 05:27:08 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r452499 - in head/www/firefox: . files X-SVN-Group: ports-head X-SVN-Commit-Author: jbeich X-SVN-Commit-Paths: in head/www/firefox: . files X-SVN-Commit-Revision: 452499 X-SVN-Commit-Repository: ports MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-all@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the ports tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Oct 2017 05:27:11 -0000 Author: jbeich Date: Fri Oct 20 05:27:08 2017 New Revision: 452499 URL: https://svnweb.freebsd.org/changeset/ports/452499 Log: www/firefox: unbreak with Rust >= 1.21 error: doc comment not used by rustdoc --> servo/components/style/values/specified/image.rs:689:17 | 689 | /// `to` keyword is mandatory in modern syntax. | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | note: lint level defined here --> servo/components/style/lib.rs:26:9 | 26 | #![deny(warnings)] | ^^^^^^^^ = note: #[deny(unused_doc_comment)] implied by #[deny(warnings)] error: doc comment not used by rustdoc --> servo/components/style/values/specified/image.rs:695:17 | 695 | /// There is no `to` keyword in webkit prefixed syntax. If it's consumed, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: doc comment not used by rustdoc --> obj-x86_64-unknown-freebsd10.3/toolkit/library/x86_64-unknown-freebsd/release/build/style-65761c79245bf99f/out/gecko_properties.rs:9131:9 | 9131 | /// XXXManishearth this should also handle text zoom | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error[E0106]: missing lifetime specifier --> obj-x86_64-unknown-freebsd10.3/toolkit/library/x86_64-unknown-freebsd/release/build/style-65761c79245bf99f/out/gecko/bindings.rs:569:9 | 569 | -> RawGeckoNodeBorrowedOrNull; | ^^^^^^^^^^^^^^^^^^^^^^^^^^ expected lifetime parameter | = help: this function's return type contains a borrowed value with an elided lifetime, but the lifetime cannot be derived from the arguments = help: consider giving it an explicit bounded or 'static lifetime error[E0106]: missing lifetime specifier --> obj-x86_64-unknown-freebsd10.3/toolkit/library/x86_64-unknown-freebsd/release/build/style-65761c79245bf99f/out/gecko/bindings.rs:841:9 | 841 | -> RawServoAnimationValueBorrowedOrNull; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected lifetime parameter | = help: this function's return type contains a borrowed value with an elided lifetime, but the lifetime cannot be derived from the arguments = help: consider giving it an explicit bounded or 'static lifetime error: aborting due to 5 previous errors error: Could not compile `style`. Obtained from: upstream (Firefox 57) Ping: @dumbbell @riggs- (unblocks lang/rust update) Added: head/www/firefox/files/patch-bug1386887 (contents, props changed) head/www/firefox/files/patch-servo17934 (contents, props changed) head/www/firefox/files/patch-servo17969 (contents, props changed) head/www/firefox/files/patch-servo18046 (contents, props changed) head/www/firefox/files/patch-servo18126 (contents, props changed) Modified: head/www/firefox/Makefile (contents, props changed) Modified: head/www/firefox/Makefile ============================================================================== --- head/www/firefox/Makefile Fri Oct 20 03:49:22 2017 (r452498) +++ head/www/firefox/Makefile Fri Oct 20 05:27:08 2017 (r452499) @@ -4,7 +4,7 @@ PORTNAME= firefox DISTVERSION= 56.0.1 DISTVERSIONSUFFIX=.source -PORTREVISION= 1 +PORTREVISION= 2 PORTEPOCH= 1 CATEGORIES= www ipv6 MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}/source \ Added: head/www/firefox/files/patch-bug1386887 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/www/firefox/files/patch-bug1386887 Fri Oct 20 05:27:08 2017 (r452499) @@ -0,0 +1,89 @@ +commit efbe3a9af876 +Author: Manish Goregaokar +Date: Wed Aug 2 11:24:35 2017 -0700 + + Bug 1386887 - Clean up FFI lifetimes to work on nightly; r=emilio + + MozReview-Commit-ID: 5WAIVd6p2du +--- + layout/style/ServoBindingList.h | 4 ++-- + layout/style/ServoBindingTypes.h | 2 ++ + layout/style/ServoBindings.h | 4 ++-- + layout/style/ServoBindings.toml | 4 +++- + 4 files changed, 9 insertions(+), 5 deletions(-) + +diff --git layout/style/ServoBindingList.h layout/style/ServoBindingList.h +index 6c669ebb3d3e..87ade14ea4de 100644 +--- layout/style/ServoBindingList.h ++++ layout/style/ServoBindingList.h +@@ -379,10 +379,10 @@ SERVO_BINDING_FUNC(Servo_DeclarationBlock_HasCSSWideKeyword, bool, + nsCSSPropertyID property) + // Compose animation value for a given property. + // |base_values| is nsRefPtrHashtable. +-// We use void* to avoid exposing nsRefPtrHashtable in FFI. ++// We use RawServoAnimationValueTableBorrowed to avoid exposing nsRefPtrHashtable in FFI. + SERVO_BINDING_FUNC(Servo_AnimationCompose, void, + RawServoAnimationValueMapBorrowedMut animation_values, +- void* base_values, ++ RawServoAnimationValueTableBorrowed base_values, + nsCSSPropertyID property, + RawGeckoAnimationPropertySegmentBorrowed animation_segment, + RawGeckoAnimationPropertySegmentBorrowed last_segment, +diff --git layout/style/ServoBindingTypes.h layout/style/ServoBindingTypes.h +index aaf4fc27e1b9..69be15ee9f51 100644 +--- layout/style/ServoBindingTypes.h ++++ layout/style/ServoBindingTypes.h +@@ -54,6 +54,8 @@ class nsXBLBinding; + using mozilla::dom::StyleChildrenIterator; + using mozilla::ServoElementSnapshot; + ++typedef void* RawServoAnimationValueTableBorrowed; ++ + typedef nsINode RawGeckoNode; + typedef mozilla::dom::Element RawGeckoElement; + typedef nsIDocument RawGeckoDocument; +diff --git layout/style/ServoBindings.h layout/style/ServoBindings.h +index 493ca63f932b..c6ced6d1fedb 100644 +--- layout/style/ServoBindings.h ++++ layout/style/ServoBindings.h +@@ -268,9 +268,9 @@ double Gecko_GetPositionInSegment( + // Get servo's AnimationValue for |aProperty| from the cached base style + // |aBaseStyles|. + // |aBaseStyles| is nsRefPtrHashtable. +-// We use void* to avoid exposing nsRefPtrHashtable in FFI. ++// We use RawServoAnimationValueTableBorrowed to avoid exposing nsRefPtrHashtable in FFI. + RawServoAnimationValueBorrowedOrNull Gecko_AnimationGetBaseStyle( +- void* aBaseStyles, ++ RawServoAnimationValueTableBorrowed aBaseStyles, + nsCSSPropertyID aProperty); + void Gecko_StyleTransition_SetUnsupportedProperty( + mozilla::StyleTransition* aTransition, +diff --git layout/style/ServoBindings.toml layout/style/ServoBindings.toml +index 11e372541235..3c3902beea80 100644 +--- layout/style/ServoBindings.toml ++++ layout/style/ServoBindings.toml +@@ -357,6 +357,7 @@ raw-lines = [ + "pub type ServoStyleContextBorrowed<'a> = &'a ::properties::ComputedValues;", + "pub type ServoStyleContextBorrowedOrNull<'a> = Option<&'a ::properties::ComputedValues>;", + "pub type ServoComputedDataBorrowed<'a> = &'a ServoComputedData;", ++ "pub type RawServoAnimationValueTableBorrowed<'a> = &'a ();" + ] + whitelist-functions = ["Servo_.*", "Gecko_.*"] + structs-types = [ +@@ -389,7 +390,7 @@ structs-types = [ + "RawGeckoPresContext", + "RawGeckoPresContextOwned", + "RawGeckoStyleAnimationList", +- "RawGeckoStyleChildrenIteratorBorrowedMut", ++ "RawGeckoStyleChildrenIterator", + "RawGeckoServoStyleRuleList", + "RawGeckoURLExtraData", + "RawGeckoXBLBinding", +@@ -526,6 +527,7 @@ servo-borrow-types = [ + "RawGeckoFontFaceRuleList", + "RawGeckoServoStyleRuleList", + "RawGeckoServoAnimationValueList", ++ "RawGeckoStyleChildrenIterator", + ] + fixups = [ + # hack for gecko-owned string Added: head/www/firefox/files/patch-servo17934 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/www/firefox/files/patch-servo17934 Fri Oct 20 05:27:08 2017 (r452499) @@ -0,0 +1,53 @@ +commit 4cbdfa028752 +Author: Manish Goregaokar +Date: Tue Aug 1 12:57:42 2017 -0500 + + servo: Merge #17934 - Remove doc comment on statement (from Manishearth:doc-comment); r=canaltinova + + rustc warns about these now + + Source-Repo: https://github.com/servo/servo + Source-Revision: b49311c65a083a9b8eb03741bf7ea980b64f1e03 + + --HG-- + extra : subtree_source : https%3A//hg.mozilla.org/projects/converted-servo-linear + extra : subtree_revision : 6b3c7d7f4ffeb9e271c52d418cda42cac5dd378d +--- + servo/components/style/values/specified/image.rs | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git servo/components/style/values/specified/image.rs servo/components/style/values/specified/image.rs +index 37ed00ccf443..687c6f17d432 100644 +--- servo/components/style/values/specified/image.rs ++++ servo/components/style/values/specified/image.rs +@@ -686,14 +686,14 @@ impl LineDirection { + input.try(|i| { + let to_ident = i.try(|i| i.expect_ident_matching("to")); + match *compat_mode { +- /// `to` keyword is mandatory in modern syntax. ++ // `to` keyword is mandatory in modern syntax. + CompatMode::Modern => to_ident?, + // Fall back to Modern compatibility mode in case there is a `to` keyword. + // According to Gecko, `-moz-linear-gradient(to ...)` should serialize like + // `linear-gradient(to ...)`. + CompatMode::Moz if to_ident.is_ok() => *compat_mode = CompatMode::Modern, +- /// There is no `to` keyword in webkit prefixed syntax. If it's consumed, +- /// parsing should throw an error. ++ // There is no `to` keyword in webkit prefixed syntax. If it's consumed, ++ // parsing should throw an error. + CompatMode::WebKit if to_ident.is_ok() => { + return Err(SelectorParseError::UnexpectedIdent("to".into()).into()) + }, +diff --git servo/components/style/properties/gecko.mako.rs servo/components/style/properties/gecko.mako.rs +index 37ed00ccf443..687c6f17d432 100644 +--- servo/components/style/properties/gecko.mako.rs ++++ servo/components/style/properties/gecko.mako.rs +@@ -2081,7 +2081,7 @@ fn static_assert() { + return (parent_size, parent_unconstrained_size) + } + +- /// XXXManishearth this should also handle text zoom ++ // XXXManishearth this should also handle text zoom + let min = Au(parent.gecko.mScriptMinSize); + + let scale = (parent.gecko.mScriptSizeMultiplier as f32).powi(delta as i32); Added: head/www/firefox/files/patch-servo17969 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/www/firefox/files/patch-servo17969 Fri Oct 20 05:27:08 2017 (r452499) @@ -0,0 +1,110 @@ +commit 9f5c1f2e4b5b +Author: Manish Goregaokar +Date: Thu Aug 3 16:27:12 2017 -0500 + + servo: Merge #17969 - Update stylo code to work on nightly (from Manishearth:rustup); r=emilio + + r=emilio https://bugzilla.mozilla.org/show_bug.cgi?id=1386887 + + Source-Repo: https://github.com/servo/servo + Source-Revision: 7cee7d7fcc4194e410fa8a308a77d37ac452778a + + --HG-- + extra : subtree_source : https%3A//hg.mozilla.org/projects/converted-servo-linear + extra : subtree_revision : d9c874ebcfa1e64c86265d0ed2e5cff65d9133be +--- + servo/components/style/gecko/generated/bindings.rs | 12 +++++++++--- + servo/components/style/gecko/wrapper.rs | 7 ++++++- + servo/ports/geckolib/glue.rs | 3 ++- + 3 files changed, 17 insertions(+), 5 deletions(-) + +diff --git servo/components/style/gecko/generated/bindings.rs servo/components/style/gecko/generated/bindings.rs +index e46bdfe1e1ea..b6703ab95bf7 100644 +--- servo/components/style/gecko/generated/bindings.rs ++++ servo/components/style/gecko/generated/bindings.rs +@@ -8,6 +8,7 @@ type nsAString_internal = nsAString; + pub type ServoStyleContextBorrowed<'a> = &'a ::properties::ComputedValues; + pub type ServoStyleContextBorrowedOrNull<'a> = Option<&'a ::properties::ComputedValues>; + pub type ServoComputedDataBorrowed<'a> = &'a ServoComputedData; ++pub type RawServoAnimationValueTableBorrowed<'a> = &'a (); + use gecko_bindings::structs::mozilla::css::GridTemplateAreasValue; + use gecko_bindings::structs::mozilla::css::ErrorReporter; + use gecko_bindings::structs::mozilla::css::ImageValue; +@@ -37,7 +38,7 @@ use gecko_bindings::structs::RawServoStyleRule; + use gecko_bindings::structs::RawGeckoPresContext; + use gecko_bindings::structs::RawGeckoPresContextOwned; + use gecko_bindings::structs::RawGeckoStyleAnimationList; +-use gecko_bindings::structs::RawGeckoStyleChildrenIteratorBorrowedMut; ++use gecko_bindings::structs::RawGeckoStyleChildrenIterator; + use gecko_bindings::structs::RawGeckoServoStyleRuleList; + use gecko_bindings::structs::RawGeckoURLExtraData; + use gecko_bindings::structs::RawGeckoXBLBinding; +@@ -320,6 +321,10 @@ pub type RawGeckoServoAnimationValueListBorrowed<'a> = &'a RawGeckoServoAnimatio + pub type RawGeckoServoAnimationValueListBorrowedOrNull<'a> = Option<&'a RawGeckoServoAnimationValueList>; + pub type RawGeckoServoAnimationValueListBorrowedMut<'a> = &'a mut RawGeckoServoAnimationValueList; + pub type RawGeckoServoAnimationValueListBorrowedMutOrNull<'a> = Option<&'a mut RawGeckoServoAnimationValueList>; ++pub type RawGeckoStyleChildrenIteratorBorrowed<'a> = &'a RawGeckoStyleChildrenIterator; ++pub type RawGeckoStyleChildrenIteratorBorrowedOrNull<'a> = Option<&'a RawGeckoStyleChildrenIterator>; ++pub type RawGeckoStyleChildrenIteratorBorrowedMut<'a> = &'a mut RawGeckoStyleChildrenIterator; ++pub type RawGeckoStyleChildrenIteratorBorrowedMutOrNull<'a> = Option<&'a mut RawGeckoStyleChildrenIterator>; + pub type ServoCssRulesStrong = ::gecko_bindings::sugar::ownership::Strong; + pub type ServoCssRulesBorrowed<'a> = &'a ServoCssRules; + pub type ServoCssRulesBorrowedOrNull<'a> = Option<&'a ServoCssRules>; +@@ -840,7 +845,7 @@ extern "C" { + } + extern "C" { + pub fn Gecko_AnimationGetBaseStyle(aBaseStyles: +- *mut ::std::os::raw::c_void, ++ RawServoAnimationValueTableBorrowed, + aProperty: nsCSSPropertyID) + -> RawServoAnimationValueBorrowedOrNull; + } +@@ -2602,7 +2607,8 @@ extern "C" { + extern "C" { + pub fn Servo_AnimationCompose(animation_values: + RawServoAnimationValueMapBorrowedMut, +- base_values: *mut ::std::os::raw::c_void, ++ base_values: ++ RawServoAnimationValueTableBorrowed, + property: nsCSSPropertyID, + animation_segment: + RawGeckoAnimationPropertySegmentBorrowed, +diff --git servo/components/style/gecko/wrapper.rs servo/components/style/gecko/wrapper.rs +index dae898692313..6d62f54951cc 100644 +--- servo/components/style/gecko/wrapper.rs ++++ servo/components/style/gecko/wrapper.rs +@@ -387,7 +387,12 @@ impl<'a> Iterator for GeckoChildrenIterator<'a> { + curr + }, + GeckoChildrenIterator::GeckoIterator(ref mut it) => unsafe { +- Gecko_GetNextStyleChild(it).map(GeckoNode) ++ // We do this unsafe lengthening of the lifetime here because ++ // structs::StyleChildrenIterator is actually StyleChildrenIterator<'a>, ++ // however we can't express this easily with bindgen, and it would ++ // introduce functions with two input lifetimes into bindgen, ++ // which would be out of scope for elision. ++ Gecko_GetNextStyleChild(&mut * (it as *mut _)).map(GeckoNode) + } + } + } +diff --git servo/ports/geckolib/glue.rs servo/ports/geckolib/glue.rs +index 367d24ff87b2..e69959f3710b 100644 +--- servo/ports/geckolib/glue.rs ++++ servo/ports/geckolib/glue.rs +@@ -59,6 +59,7 @@ use style::gecko_bindings::bindings::RawGeckoServoStyleRuleListBorrowedMut; + use style::gecko_bindings::bindings::RawServoAnimationValueBorrowed; + use style::gecko_bindings::bindings::RawServoAnimationValueMapBorrowedMut; + use style::gecko_bindings::bindings::RawServoAnimationValueStrong; ++use style::gecko_bindings::bindings::RawServoAnimationValueTableBorrowed; + use style::gecko_bindings::bindings::RawServoStyleRuleBorrowed; + use style::gecko_bindings::bindings::ServoStyleContextBorrowedOrNull; + use style::gecko_bindings::bindings::nsTArrayBorrowed_uintptr_t; +@@ -374,7 +375,7 @@ pub extern "C" fn Servo_AnimationValues_ComputeDistance(from: RawServoAnimationV + + #[no_mangle] + pub extern "C" fn Servo_AnimationCompose(raw_value_map: RawServoAnimationValueMapBorrowedMut, +- base_values: *mut ::std::os::raw::c_void, ++ base_values: RawServoAnimationValueTableBorrowed, + css_property: nsCSSPropertyID, + segment: RawGeckoAnimationPropertySegmentBorrowed, + last_segment: RawGeckoAnimationPropertySegmentBorrowed, Added: head/www/firefox/files/patch-servo18046 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/www/firefox/files/patch-servo18046 Fri Oct 20 05:27:08 2017 (r452499) @@ -0,0 +1,763 @@ +commit ea9c8db790e4 +Author: Simon Sapin +Date: Tue Aug 15 07:31:04 2017 -0500 + + servo: Merge #18046 - Upgrade to rustc 1.21.0-nightly (13d94d5fa 2017-08-10) (from servo:rustup); r=emilio + + Source-Repo: https://github.com/servo/servo + Source-Revision: 7d9b82b9efa7b10a2e34d93df5ac535d99518f7a + + --HG-- + extra : subtree_source : https%3A//hg.mozilla.org/projects/converted-servo-linear + extra : subtree_revision : e1b3d113c3edaea3c4c07f8b206f2e02922e3caf +--- + servo/Cargo.lock | 6 +++--- + servo/components/devtools/lib.rs | 2 +- + servo/components/layout/animation.rs | 2 +- + servo/components/layout/construct.rs | 6 +++--- + servo/components/layout/display_list_builder.rs | 2 +- + servo/components/layout/flex.rs | 6 +++--- + servo/components/layout/inline.rs | 4 ++-- + servo/components/layout/sequential.rs | 2 +- + servo/components/layout/table_cell.rs | 2 +- + servo/components/layout/text.rs | 2 +- + servo/components/net/cookie_storage.rs | 2 +- + servo/components/profile/heartbeats.rs | 4 ++-- + servo/components/script/dom/bindings/js.rs | 4 ++-- + servo/components/script/dom/cssstyledeclaration.rs | 8 ++++---- + servo/components/script/dom/cssstylerule.rs | 2 +- + servo/components/script/dom/document.rs | 12 ++++++------ + servo/components/script/dom/medialist.rs | 4 ++-- + servo/components/script/dom/range.rs | 4 ++-- + .../script/dom/servoparser/async_html.rs | 4 ++-- + servo/components/script/dom/url.rs | 4 ++-- + servo/components/script/dom/vrdisplay.rs | 2 +- + .../components/script/dom/webglrenderingcontext.rs | 2 +- + servo/components/script/dom/xmlhttprequest.rs | 2 +- + servo/components/script/lib.rs | 1 - + .../script_plugins/unrooted_must_root.rs | 22 +++++++++++++++------- + servo/components/selectors/matching.rs | 2 +- + servo/components/selectors/parser.rs | 2 +- + .../style/invalidation/element/invalidator.rs | 2 +- + servo/components/style/matching.rs | 2 +- + .../components/style/properties/properties.mako.rs | 2 +- + servo/components/style/style_adjuster.rs | 2 +- + servo/components/style/style_resolver.rs | 2 +- + servo/components/style/stylesheets/rule_list.rs | 2 +- + servo/components/style/stylesheets/rule_parser.rs | 2 +- + .../components/style/stylesheets/rules_iterator.rs | 2 +- + servo/components/style/values/animated/color.rs | 2 +- + servo/components/style/values/computed/border.rs | 2 +- + servo/components/webdriver_server/lib.rs | 2 +- + servo/rust-commit-hash | 2 +- + servo/tests/unit/style/stylist.rs | 13 ------------- + 40 files changed, 73 insertions(+), 79 deletions(-) + +diff --git servo/Cargo.lock servo/Cargo.lock +index 50dd6e1a785a..2aa7bd8ea3dd 100644 +--- servo/Cargo.lock ++++ servo/Cargo.lock +@@ -3577,7 +3577,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]] +@@ -3592,7 +3592,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)", +@@ -3918,7 +3918,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 servo/components/devtools/lib.rs servo/components/devtools/lib.rs +index d5a2764a7102..6a25696eaed7 100644 +--- servo/components/devtools/lib.rs ++++ servo/components/devtools/lib.rs +@@ -306,7 +306,7 @@ fn run_server(sender: Sender, + 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 servo/components/layout/animation.rs servo/components/layout/animation.rs +index e4a2782c1271..ebbba82fcc6a 100644 +--- servo/components/layout/animation.rs ++++ servo/components/layout/animation.rs +@@ -39,7 +39,7 @@ pub fn update_animation_state(constellation_chan: &IpcSender, + // 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 servo/components/layout/construct.rs servo/components/layout/construct.rs +index c863219941e4..7ef391b42183 100644 +--- servo/components/layout/construct.rs ++++ servo/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 servo/components/layout/display_list_builder.rs servo/components/layout/display_list_builder.rs +index f8b26899b57d..783574afd2a3 100644 +--- servo/components/layout/display_list_builder.rs ++++ servo/components/layout/display_list_builder.rs +@@ -2718,7 +2718,7 @@ impl InlineFlowDisplayListBuilding for InlineFlow { + self.base.scroll_root_id = Some(state.current_scroll_root_id); + 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_containing_block_scroll_root_id = state.containing_block_scroll_root_id; + if establishes_containing_block_for_absolute(fragment.style.get_box().position) { + state.containing_block_scroll_root_id = state.current_scroll_root_id; +diff --git servo/components/layout/flex.rs servo/components/layout/flex.rs +index 353c939f58b9..d79580f8cd0d 100644 +--- servo/components/layout/flex.rs ++++ servo/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 servo/components/layout/inline.rs servo/components/layout/inline.rs +index d5813d9bea22..10e091c3c66d 100644 +--- servo/components/layout/inline.rs ++++ servo/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 servo/components/layout/sequential.rs servo/components/layout/sequential.rs +index f6f8ce429e4f..4986ebb6c852 100644 +--- servo/components/layout/sequential.rs ++++ servo/components/layout/sequential.rs +@@ -133,7 +133,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 servo/components/layout/table_cell.rs servo/components/layout/table_cell.rs +index 7ef02e28db65..fd807989b463 100644 +--- servo/components/layout/table_cell.rs ++++ servo/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 servo/components/layout/text.rs servo/components/layout/text.rs +index 6e1c7b2a43a1..9a207a2bb84e 100644 +--- servo/components/layout/text.rs ++++ servo/components/layout/text.rs +@@ -460,7 +460,7 @@ fn split_first_fragment_at_newline_if_necessary(fragments: &mut LinkedList { + roots.remove(idx); +diff --git servo/components/script/dom/cssstyledeclaration.rs servo/components/script/dom/cssstyledeclaration.rs +index 0732c9af9e45..ddf085b34913 100644 +--- servo/components/script/dom/cssstyledeclaration.rs ++++ servo/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 servo/components/script/dom/cssstylerule.rs servo/components/script/dom/cssstylerule.rs +index ea121ef900a9..12e9cdcc8694 100644 +--- servo/components/script/dom/cssstylerule.rs ++++ servo/components/script/dom/cssstylerule.rs +@@ -99,7 +99,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 servo/components/script/dom/document.rs servo/components/script/dom/document.rs +index 90ea06fbe7b4..71bb02eaa364 100644 +--- servo/components/script/dom/document.rs ++++ servo/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::()); + } + self.reset_form_owner_for_listeners(&id); +@@ -642,7 +642,7 @@ impl Document { + pub fn register_form_id_listener(&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)); + } + +@@ -1572,7 +1572,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; + } + } +@@ -2399,7 +2399,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()); + } +@@ -2426,7 +2426,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") { +@@ -4028,7 +4028,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 servo/components/script/dom/medialist.rs servo/components/script/dom/medialist.rs +index 0064d0445095..ae20f5aa0422 100644 +--- servo/components/script/dom/medialist.rs ++++ servo/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 servo/components/script/dom/range.rs servo/components/script/dom/range.rs +index fa849a0fc1a2..1e65caedc9dd 100644 +--- servo/components/script/dom/range.rs ++++ servo/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 servo/components/script/dom/servoparser/async_html.rs servo/components/script/dom/servoparser/async_html.rs +index 59411fda1c73..70d2008f49f6 100644 +--- servo/components/script/dom/servoparser/async_html.rs ++++ servo/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 servo/components/script/dom/url.rs servo/components/script/dom/url.rs +index a02a735638fc..41de4dcc0c72 100644 +--- servo/components/script/dom/url.rs ++++ servo/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 servo/components/script/dom/vrdisplay.rs servo/components/script/dom/vrdisplay.rs +index 3f73a577fad7..54f06fb928f2 100644 +--- servo/components/script/dom/vrdisplay.rs ++++ servo/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 servo/components/script/dom/webglrenderingcontext.rs servo/components/script/dom/webglrenderingcontext.rs +index 73d4ddba1b90..62c92b42785c 100644 +--- servo/components/script/dom/webglrenderingcontext.rs ++++ servo/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 servo/components/script/dom/xmlhttprequest.rs servo/components/script/dom/xmlhttprequest.rs +index 6ed2dda1851f..e6652d79d706 100644 +--- servo/components/script/dom/xmlhttprequest.rs ++++ servo/components/script/dom/xmlhttprequest.rs +@@ -627,7 +627,7 @@ impl XMLHttpRequestMethods for XMLHttpRequest { + + if !content_type_set { + let ct = request.headers.get_mut::(); +- 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 servo/components/script/lib.rs servo/components/script/lib.rs +index e1a1ab592cb7..5824d6f2e490 100644 +--- servo/components/script/lib.rs ++++ servo/components/script/lib.rs +@@ -9,7 +9,6 @@ + #![feature(mpsc_select)] + #![feature(nonzero)] + #![feature(on_unimplemented)] +-#![feature(option_entry)] + #![feature(plugin)] + #![feature(proc_macro)] + #![feature(stmt_expr_attributes)] +diff --git servo/components/script_plugins/unrooted_must_root.rs servo/components/script_plugins/unrooted_must_root.rs +index 5dbd2b1a3bdd..f3f5e60ab62a 100644 +--- servo/components/script_plugins/unrooted_must_root.rs ++++ servo/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`. +@@ -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 servo/components/selectors/matching.rs servo/components/selectors/matching.rs +index 7bd9814d26fb..8f6b2fa6aa54 100644 +--- servo/components/selectors/matching.rs ++++ servo/components/selectors/matching.rs +@@ -458,7 +458,7 @@ where + /// Matches a complex selector. + pub fn matches_complex_selector(mut iter: SelectorIter, + element: &E, +- mut context: &mut LocalMatchingContext, ++ context: &mut LocalMatchingContext, + flags_setter: &mut F) + -> bool + where E: Element, +diff --git servo/components/selectors/parser.rs servo/components/selectors/parser.rs +index 490399ce38ce..6b2c1f2b4e86 100644 +--- servo/components/selectors/parser.rs ++++ servo/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) ++ builder: &mut SelectorBuilder) + -> Result>> + where P: Parser<'i, Impl=Impl, Error=E>, Impl: SelectorImpl + { +diff --git servo/components/style/invalidation/element/invalidator.rs servo/components/style/invalidation/element/invalidator.rs +index 848c5cd13dc8..b8510ba3169b 100644 +--- servo/components/style/invalidation/element/invalidator.rs ++++ servo/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 servo/components/style/matching.rs servo/components/style/matching.rs +index b62bc54bf768..f58d7cd123e6 100644 +--- servo/components/style/matching.rs ++++ servo/components/style/matching.rs +@@ -440,7 +440,7 @@ pub trait MatchMethods : TElement { + fn finish_restyle( + &self, + context: &mut StyleContext, +- mut data: &mut ElementData, ++ data: &mut ElementData, + mut new_styles: ElementStyles, + important_rules_changed: bool, + ) -> ChildCascadeRequirement { +diff --git servo/components/style/properties/properties.mako.rs servo/components/style/properties/properties.mako.rs +index d98e173db5ba..81ff00fb6d5e 100644 +--- servo/components/style/properties/properties.mako.rs ++++ servo/components/style/properties/properties.mako.rs +@@ -3364,7 +3364,7 @@ pub fn modify_border_style_for_inline_sides(style: &mut Arc, + 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 servo/components/style/style_adjuster.rs servo/components/style/style_adjuster.rs +index 366641ebe0bc..6e51fa74072a 100644 +--- servo/components/style/style_adjuster.rs ++++ servo/components/style/style_adjuster.rs +@@ -269,7 +269,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 servo/components/style/style_resolver.rs servo/components/style/style_resolver.rs +index cf512c4fbdd2..3fc1d57cc8f7 100644 +--- servo/components/style/style_resolver.rs ++++ servo/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 servo/components/style/stylesheets/rule_list.rs servo/components/style/stylesheets/rule_list.rs +index 82e78015400d..14b3dc5e7696 100644 +--- servo/components/style/stylesheets/rule_list.rs ++++ servo/components/style/stylesheets/rule_list.rs +@@ -150,7 +150,7 @@ impl CssRulesHelpers for RawOffsetArc> { + + { + 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 servo/components/style/stylesheets/rule_parser.rs servo/components/style/stylesheets/rule_parser.rs +index 007d7e11026e..f0d224e498a7 100644 +--- servo/components/style/stylesheets/rule_parser.rs ++++ servo/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 servo/components/style/stylesheets/rules_iterator.rs servo/components/style/stylesheets/rules_iterator.rs +index 95a3ab8b3885..65e1b637ae52 100644 +--- servo/components/style/stylesheets/rules_iterator.rs ++++ servo/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 servo/components/webdriver_server/lib.rs servo/components/webdriver_server/lib.rs +index bd2f667f9892..28a4885f0d41 100644 +--- servo/components/webdriver_server/lib.rs ++++ servo/components/webdriver_server/lib.rs +@@ -702,7 +702,7 @@ impl Handler { + fn handle_set_timeouts(&mut self, *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***