Skip to content
This repository was archived by the owner on Nov 7, 2018. It is now read-only.

Commit 285eda0

Browse files
committed
servo: Merge #18327 - Upgrade to rustc 1.21.0-nightly (7eeac1b81 2017-08-30) (from servo:rustup); r=nox
Fix this error in the new Rust Nightly: ```rust Compiling script v0.0.1 (file:///home/simon/servo2/components/script) error[E0599]: no method named `trace` found for type `&fn(&dom::node::Node) -> u16` in the current scope --> /home/simon/servo2/components/script/dom/treewalker.rs:464:10 | 464 | #[derive(JSTraceable)] | ^^^^^^^^^^^ | = note: JSTraceable is a function, perhaps you wish to call it = help: items from traits can only be used if the trait is implemented and in scope = note: the following trait defines an item `trace`, perhaps you need to implement it: candidate #1: `dom::bindings::trace::JSTraceable` error: aborting due to previous error error: Could not compile `script`. ``` ~I’ve tried to reproduce it in a minimal test case, but `impl<A, B> SomeTrait for fn(A) -> B` did not apply for `fn(&u32) -> u32` even on Rust 1.19.0 stable. So I don’t know what changed.~ This is very likely servo/servo#18327. Source-Repo: https://github.com/servo/servo Source-Revision: fd833d9f18cd9196502b9768ab0ac8c1498b2f68
1 parent f86dce2 commit 285eda0

File tree

3 files changed

+9
-2
lines changed

3 files changed

+9
-2
lines changed

servo/components/script/dom/bindings/trace.rs

+7
Original file line numberDiff line numberDiff line change
@@ -425,6 +425,13 @@ unsafe impl<A, B> JSTraceable for fn(A) -> B {
425425
}
426426
}
427427

428+
unsafe impl<'a, A, B> JSTraceable for fn(&A) -> B {
429+
#[inline]
430+
unsafe fn trace(&self, _: *mut JSTracer) {
431+
// Do nothing
432+
}
433+
}
434+
428435
unsafe impl<T> JSTraceable for IpcSender<T> where T: for<'de> Deserialize<'de> + Serialize {
429436
#[inline]
430437
unsafe fn trace(&self, _: *mut JSTracer) {

servo/components/script_plugins/utils.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ pub fn match_def_path(cx: &LateContext, def_id: DefId, path: &[&str]) -> bool {
2929
}
3030

3131
pub fn in_derive_expn(span: Span) -> bool {
32-
if let Some(i) = span.ctxt.outer().expn_info() {
32+
if let Some(i) = span.ctxt().outer().expn_info() {
3333
if let ExpnFormat::MacroAttribute(n) = i.callee.format {
3434
n.as_str().contains("derive")
3535
} else {

servo/rust-toolchain

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
nightly-2017-08-30
1+
nightly-2017-08-31

0 commit comments

Comments
 (0)