aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Xargo.toml2
-rw-r--r--components/canvas_traits/webgl_channel/mod.rs2
-rw-r--r--components/media/media_channel/mod.rs2
-rw-r--r--components/net/http_loader.rs2
-rw-r--r--components/net/tests/main.rs2
-rw-r--r--components/script/script_thread.rs30
-rw-r--r--components/script_plugins/lib.rs23
-rw-r--r--ports/glutin/events_loop.rs2
-rw-r--r--ports/libsimpleservo/capi/src/lib.rs2
-rw-r--r--python/tidy/servo_tidy/tidy.py3
-rw-r--r--python/tidy/servo_tidy_tests/script_thread.rs18
-rw-r--r--python/tidy/servo_tidy_tests/test_tidy.py6
-rw-r--r--rust-toolchain2
13 files changed, 40 insertions, 56 deletions
diff --git a/Xargo.toml b/Xargo.toml
index 147805d63d4..894a551a277 100644
--- a/Xargo.toml
+++ b/Xargo.toml
@@ -3,5 +3,5 @@ std = { features = ["panic-unwind"] }
# https://github.com/rust-lang/rust/issues/65313
[target.aarch64-uwp-windows-msvc.dependencies]
-std = {}
+std = { features = ["panic-unwind"] }
diff --git a/components/canvas_traits/webgl_channel/mod.rs b/components/canvas_traits/webgl_channel/mod.rs
index 86a6cd23bf4..30dc9543f91 100644
--- a/components/canvas_traits/webgl_channel/mod.rs
+++ b/components/canvas_traits/webgl_channel/mod.rs
@@ -15,7 +15,7 @@ use servo_config::opts;
use std::fmt;
lazy_static! {
- static ref IS_MULTIPROCESS: bool = { opts::multiprocess() };
+ static ref IS_MULTIPROCESS: bool = opts::multiprocess();
}
#[derive(Deserialize, Serialize)]
diff --git a/components/media/media_channel/mod.rs b/components/media/media_channel/mod.rs
index 5616a8479fd..241fec2db77 100644
--- a/components/media/media_channel/mod.rs
+++ b/components/media/media_channel/mod.rs
@@ -13,7 +13,7 @@ use servo_config::opts;
use std::fmt;
lazy_static! {
- static ref IS_MULTIPROCESS: bool = { opts::multiprocess() };
+ static ref IS_MULTIPROCESS: bool = opts::multiprocess();
}
#[derive(Deserialize, Serialize)]
diff --git a/components/net/http_loader.rs b/components/net/http_loader.rs
index a8ba978df54..18dff8ca0ef 100644
--- a/components/net/http_loader.rs
+++ b/components/net/http_loader.rs
@@ -55,7 +55,7 @@ use tokio::prelude::{future, Future, Stream};
use tokio::runtime::Runtime;
lazy_static! {
- pub static ref HANDLE: Mutex<Runtime> = { Mutex::new(Runtime::new().unwrap()) };
+ pub static ref HANDLE: Mutex<Runtime> = Mutex::new(Runtime::new().unwrap());
}
/// The various states an entry of the HttpCache can be in.
diff --git a/components/net/tests/main.rs b/components/net/tests/main.rs
index 5ad2c55f728..c48ac873729 100644
--- a/components/net/tests/main.rs
+++ b/components/net/tests/main.rs
@@ -51,7 +51,7 @@ use tokio::runtime::Runtime;
use tokio_openssl::SslAcceptorExt;
lazy_static! {
- pub static ref HANDLE: Mutex<Runtime> = { Mutex::new(Runtime::new().unwrap()) };
+ pub static ref HANDLE: Mutex<Runtime> = Mutex::new(Runtime::new().unwrap());
}
const DEFAULT_USER_AGENT: &'static str = "Such Browser. Very Layout. Wow.";
diff --git a/components/script/script_thread.rs b/components/script/script_thread.rs
index 7fd0fa6728b..bd65780dc19 100644
--- a/components/script/script_thread.rs
+++ b/components/script/script_thread.rs
@@ -2017,11 +2017,11 @@ impl ScriptThread {
// occurs for the rest of the messages
match msg {
WebDriverScriptCommand::ExecuteScript(script, reply) => {
- let window = { self.documents.borrow().find_window(pipeline_id) };
+ let window = self.documents.borrow().find_window(pipeline_id);
return webdriver_handlers::handle_execute_script(window, script, reply);
},
WebDriverScriptCommand::ExecuteAsyncScript(script, reply) => {
- let window = { self.documents.borrow().find_window(pipeline_id) };
+ let window = self.documents.borrow().find_window(pipeline_id);
return webdriver_handlers::handle_execute_async_script(window, script, reply);
},
_ => (),
@@ -2289,7 +2289,7 @@ impl ScriptThread {
id: PipelineId,
scroll_states: &[(UntrustedNodeAddress, Vector2D<f32, LayoutPixel>)],
) {
- let window = match { self.documents.borrow().find_window(id) } {
+ let window = match self.documents.borrow().find_window(id) {
Some(window) => window,
None => {
return warn!(
@@ -2696,7 +2696,7 @@ impl ScriptThread {
Some(r) => r,
None => return,
};
- let window = match { self.documents.borrow().find_window(pipeline_id) } {
+ let window = match self.documents.borrow().find_window(pipeline_id) {
Some(window) => window,
None => return warn!("Registration failed for {}", scope),
};
@@ -2775,7 +2775,7 @@ impl ScriptThread {
/// Handles a request for the window title.
fn handle_get_title_msg(&self, pipeline_id: PipelineId) {
- let document = match { self.documents.borrow().find_document(pipeline_id) } {
+ let document = match self.documents.borrow().find_document(pipeline_id) {
Some(document) => document,
None => return warn!("Message sent to closed pipeline {}.", pipeline_id),
};
@@ -2892,7 +2892,7 @@ impl ScriptThread {
/// Handles when layout thread finishes all animation in one tick
fn handle_tick_all_animations(&self, id: PipelineId) {
- let document = match { self.documents.borrow().find_document(id) } {
+ let document = match self.documents.borrow().find_document(id) {
Some(document) => document,
None => return warn!("Message sent to closed pipeline {}.", id),
};
@@ -2977,7 +2977,7 @@ impl ScriptThread {
old_value: Option<String>,
new_value: Option<String>,
) {
- let window = match { self.documents.borrow().find_window(pipeline_id) } {
+ let window = match self.documents.borrow().find_window(pipeline_id) {
None => return warn!("Storage event sent to closed pipeline {}.", pipeline_id),
Some(window) => window,
};
@@ -3380,7 +3380,7 @@ impl ScriptThread {
/// TODO: Actually perform DOM event dispatch.
fn handle_event(&self, pipeline_id: PipelineId, event: CompositorEvent) {
// Do not handle events if the pipeline exited.
- let window = match { self.documents.borrow().find_window(pipeline_id) } {
+ let window = match self.documents.borrow().find_window(pipeline_id) {
Some(win) => win,
None => {
return warn!(
@@ -3424,7 +3424,7 @@ impl ScriptThread {
},
MouseMoveEvent(point, node_address, pressed_mouse_buttons) => {
- let document = match { self.documents.borrow().find_document(pipeline_id) } {
+ let document = match self.documents.borrow().find_document(pipeline_id) {
Some(document) => document,
None => return warn!("Message sent to closed pipeline {}.", pipeline_id),
};
@@ -3517,7 +3517,7 @@ impl ScriptThread {
},
KeyboardEvent(key_event) => {
- let document = match { self.documents.borrow().find_document(pipeline_id) } {
+ let document = match self.documents.borrow().find_document(pipeline_id) {
Some(document) => document,
None => return warn!("Message sent to closed pipeline {}.", pipeline_id),
};
@@ -3525,7 +3525,7 @@ impl ScriptThread {
},
CompositionEvent(composition_event) => {
- let document = match { self.documents.borrow().find_document(pipeline_id) } {
+ let document = match self.documents.borrow().find_document(pipeline_id) {
Some(document) => document,
None => return warn!("Message sent to closed pipeline {}.", pipeline_id),
};
@@ -3546,7 +3546,7 @@ impl ScriptThread {
point_in_node: Option<Point2D<f32>>,
pressed_mouse_buttons: u16,
) {
- let document = match { self.documents.borrow().find_document(pipeline_id) } {
+ let document = match self.documents.borrow().find_document(pipeline_id) {
Some(document) => document,
None => return warn!("Message sent to closed pipeline {}.", pipeline_id),
};
@@ -3569,7 +3569,7 @@ impl ScriptThread {
point: Point2D<f32>,
node_address: Option<UntrustedNodeAddress>,
) -> TouchEventResult {
- let document = match { self.documents.borrow().find_document(pipeline_id) } {
+ let document = match self.documents.borrow().find_document(pipeline_id) {
Some(document) => document,
None => {
warn!("Message sent to closed pipeline {}.", pipeline_id);
@@ -3592,7 +3592,7 @@ impl ScriptThread {
point: Point2D<f32>,
node_address: Option<UntrustedNodeAddress>,
) {
- let document = match { self.documents.borrow().find_document(pipeline_id) } {
+ let document = match self.documents.borrow().find_document(pipeline_id) {
Some(document) => document,
None => return warn!("Message sent to closed pipeline {}.", pipeline_id),
};
@@ -3664,7 +3664,7 @@ impl ScriptThread {
new_size: WindowSizeData,
size_type: WindowSizeType,
) {
- let document = match { self.documents.borrow().find_document(pipeline_id) } {
+ let document = match self.documents.borrow().find_document(pipeline_id) {
Some(document) => document,
None => return warn!("Message sent to closed pipeline {}.", pipeline_id),
};
diff --git a/components/script_plugins/lib.rs b/components/script_plugins/lib.rs
index c2cd3c9062a..8de2a85a47c 100644
--- a/components/script_plugins/lib.rs
+++ b/components/script_plugins/lib.rs
@@ -19,21 +19,21 @@
#![feature(rustc_private)]
#![cfg(feature = "unrooted_must_root_lint")]
-extern crate rustc;
extern crate rustc_ast;
extern crate rustc_driver;
extern crate rustc_hir;
extern crate rustc_lint;
+extern crate rustc_middle;
extern crate rustc_session;
extern crate rustc_span;
-use rustc::ty;
use rustc_ast::ast::{AttrKind, Attribute};
use rustc_driver::plugin::Registry;
use rustc_hir::def_id::DefId;
use rustc_hir::intravisit as visit;
use rustc_hir::{self as hir, ExprKind, HirId};
use rustc_lint::{LateContext, LateLintPass, LintContext, LintPass};
+use rustc_middle::ty;
use rustc_session::declare_lint;
use rustc_span::source_map;
use rustc_span::source_map::{ExpnKind, MacroKind, Span};
@@ -101,8 +101,16 @@ fn has_lint_attr(sym: &Symbols, attrs: &[Attribute], name: Symbol) -> bool {
/// Checks if a type is unrooted or contains any owned unrooted types
fn is_unrooted_ty(sym: &Symbols, cx: &LateContext, ty: &ty::TyS, in_new_function: bool) -> bool {
let mut ret = false;
- ty.maybe_walk(|t| {
- match t.kind {
+ let mut walker = ty.walk();
+ while let Some(generic_arg) = walker.next() {
+ let t = match generic_arg.unpack() {
+ rustc_middle::ty::subst::GenericArgKind::Type(t) => t,
+ _ => {
+ walker.skip_current_subtree();
+ continue;
+ },
+ };
+ let recur_into_subtree = match t.kind {
ty::Adt(did, substs) => {
let has_attr = |did, name| has_lint_attr(sym, &cx.tcx.get_attrs(did), name);
if has_attr(did.did, sym.must_root) {
@@ -180,8 +188,11 @@ fn is_unrooted_ty(sym: &Symbols, cx: &LateContext, ty: &ty::TyS, in_new_function
ty::FnDef(..) | ty::FnPtr(_) => false,
_ => true,
+ };
+ if !recur_into_subtree {
+ walker.skip_current_subtree();
}
- });
+ }
ret
}
@@ -298,7 +309,7 @@ struct FnDefVisitor<'a, 'b: 'a, 'tcx: 'a + 'b> {
}
impl<'a, 'b, 'tcx> visit::Visitor<'tcx> for FnDefVisitor<'a, 'b, 'tcx> {
- type Map = rustc::hir::map::Map<'tcx>;
+ type Map = rustc_middle::hir::map::Map<'tcx>;
fn visit_expr(&mut self, expr: &'tcx hir::Expr) {
let cx = self.cx;
diff --git a/ports/glutin/events_loop.rs b/ports/glutin/events_loop.rs
index aac9534d3b7..9dff3492d9e 100644
--- a/ports/glutin/events_loop.rs
+++ b/ports/glutin/events_loop.rs
@@ -90,7 +90,7 @@ impl EventsLoop {
}
EventLoop::Headless(ref data) => {
let &(ref flag, ref condvar) = &**data;
- while { !*flag.lock().unwrap() } {
+ while !*flag.lock().unwrap() {
self.sleep(flag, condvar);
if callback(glutin::Event::Awakened) == glutin::ControlFlow::Break {
break;
diff --git a/ports/libsimpleservo/capi/src/lib.rs b/ports/libsimpleservo/capi/src/lib.rs
index 773c64dbeb7..60bd6a2f7a4 100644
--- a/ports/libsimpleservo/capi/src/lib.rs
+++ b/ports/libsimpleservo/capi/src/lib.rs
@@ -37,7 +37,7 @@ extern "C" fn default_panic_handler(msg: *const c_char) {
lazy_static! {
static ref ON_PANIC: RwLock<extern "C" fn(*const c_char)> = RwLock::new(default_panic_handler);
static ref SERVO_VERSION: CString =
- { CString::new(simpleservo::servo_version()).expect("Can't create string") };
+ CString::new(simpleservo::servo_version()).expect("Can't create string");
}
#[no_mangle]
diff --git a/python/tidy/servo_tidy/tidy.py b/python/tidy/servo_tidy/tidy.py
index cbbb1a542d4..cfeef216869 100644
--- a/python/tidy/servo_tidy/tidy.py
+++ b/python/tidy/servo_tidy/tidy.py
@@ -625,9 +625,6 @@ def check_rust(file_name, lines):
(r": &Root<", "use &T instead of &Root<T>", no_filter),
(r": &DomRoot<", "use &T instead of &DomRoot<T>", no_filter),
(r"^&&", "operators should go at the end of the first line", no_filter),
- # This particular pattern is not reentrant-safe in script_thread.rs
- (r"match self.documents.borrow", "use a separate variable for the match expression",
- lambda match, line: file_name.endswith('script_thread.rs')),
# -> () is unnecessary
(r"-> \(\)", "encountered function signature with -> ()", no_filter),
]
diff --git a/python/tidy/servo_tidy_tests/script_thread.rs b/python/tidy/servo_tidy_tests/script_thread.rs
deleted file mode 100644
index 5dbeaec0e17..00000000000
--- a/python/tidy/servo_tidy_tests/script_thread.rs
+++ /dev/null
@@ -1,18 +0,0 @@
-fn main() {
- // This should trigger an error.
- match self.documents.borrow_mut() {
- _ => {}
- }
- // This should trigger an error.
- match self.documents.borrow() {
- _ => {}
- }
- // This should not trigger an error.
- match { self.documents.borrow().find_window(id) } {
- => {}
- }
- // This should not trigger an error.
- match self.documents_status.borrow() {
- => {}
- }
-}
diff --git a/python/tidy/servo_tidy_tests/test_tidy.py b/python/tidy/servo_tidy_tests/test_tidy.py
index 441e9250c51..12f384b8674 100644
--- a/python/tidy/servo_tidy_tests/test_tidy.py
+++ b/python/tidy/servo_tidy_tests/test_tidy.py
@@ -140,12 +140,6 @@ class CheckTidiness(unittest.TestCase):
self.assertEqual('method declared in webidl is missing a comment with a specification link', next(errors)[2])
self.assertNoMoreErrors(errors)
- def test_script_thread(self):
- errors = tidy.collect_errors_for_files(iterFile('script_thread.rs'), [], [tidy.check_rust], print_text=False)
- self.assertEqual('use a separate variable for the match expression', next(errors)[2])
- self.assertEqual('use a separate variable for the match expression', next(errors)[2])
- self.assertNoMoreErrors(errors)
-
def test_webidl(self):
errors = tidy.collect_errors_for_files(iterFile('spec.webidl'), [tidy.check_webidl_spec], [], print_text=False)
self.assertEqual('No specification link found.', next(errors)[2])
diff --git a/rust-toolchain b/rust-toolchain
index a391a62a866..0bddeb45c82 100644
--- a/rust-toolchain
+++ b/rust-toolchain
@@ -1 +1 @@
-nightly-2020-03-16
+nightly-2020-04-08