Skip to content

Commit

Permalink
Auto merge of #18327 - servo:rustup, r=nox
Browse files Browse the repository at this point in the history
Upgrade to rustc 1.21.0-nightly (7eeac1b81 2017-08-30)

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 #18327.

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/18327)
<!-- Reviewable:end -->
  • Loading branch information
bors-servo authored Sep 1, 2017
2 parents 15c57e8 + 1dcede7 commit 5957016
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 2 deletions.
7 changes: 7 additions & 0 deletions components/script/dom/bindings/trace.rs
Original file line number Diff line number Diff line change
Expand Up @@ -425,6 +425,13 @@ unsafe impl<A, B> JSTraceable for fn(A) -> B {
}
}

unsafe impl<'a, A, B> JSTraceable for fn(&A) -> B {
#[inline]
unsafe fn trace(&self, _: *mut JSTracer) {
// Do nothing
}
}

unsafe impl<T> JSTraceable for IpcSender<T> where T: for<'de> Deserialize<'de> + Serialize {
#[inline]
unsafe fn trace(&self, _: *mut JSTracer) {
Expand Down
2 changes: 1 addition & 1 deletion components/script_plugins/utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ pub fn match_def_path(cx: &LateContext, def_id: DefId, path: &[&str]) -> bool {
}

pub fn in_derive_expn(span: Span) -> bool {
if let Some(i) = span.ctxt.outer().expn_info() {
if let Some(i) = span.ctxt().outer().expn_info() {
if let ExpnFormat::MacroAttribute(n) = i.callee.format {
n.as_str().contains("derive")
} else {
Expand Down
2 changes: 1 addition & 1 deletion rust-toolchain
Original file line number Diff line number Diff line change
@@ -1 +1 @@
nightly-2017-08-30
nightly-2017-08-31

0 comments on commit 5957016

Please sign in to comment.