Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rollup of 5 pull requests #57576

Closed
wants to merge 0 commits into from
Closed

Rollup of 5 pull requests #57576

wants to merge 0 commits into from

Conversation

Centril
Copy link
Contributor

@Centril Centril commented Jan 13, 2019

Successful merges:

Failed merges:

r? @ghost

@pietroalbini
Copy link
Member

@bors r+ p=5

@bors
Copy link
Contributor

bors commented Jan 13, 2019

📌 Commit fc0b7da38ec12034b96954e38823107280f9e06a has been approved by pietroalbini

@bors bors added the S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. label Jan 13, 2019
@rust-highfive
Copy link
Collaborator

The job x86_64-gnu-llvm-6.0 of your PR failed on Travis (raw log). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem.

Click to expand the log.
travis_time:end:01020f98:start=1547392264596348508,finish=1547392352039226742,duration=87442878234
$ git checkout -qf FETCH_HEAD
travis_fold:end:git.checkout

Encrypted environment variables have been removed for security reasons.
See https://docs.travis-ci.com/user/pull-requests/#pull-requests-and-security-restrictions
$ export SCCACHE_BUCKET=rust-lang-ci-sccache2
$ export SCCACHE_REGION=us-west-1
Setting environment variables from .travis.yml
$ export IMAGE=x86_64-gnu-llvm-6.0
---
[01:00:59] .................................................................................................... 200/5298
[01:01:02] .................................................................................................... 300/5298
[01:01:05] .................................................................................................... 400/5298
[01:01:08] .................................................................................................... 500/5298
[01:01:12] ..............................i.............................................FF...................... 600/5298
[01:01:20] .................................................................................................... 800/5298
[01:01:26] ........................................................................i...............i........... 900/5298
[01:01:29] ..................................................................................................ii 1000/5298
[01:01:33] iii................................................................................................. 1100/5298
---
[01:03:54] 
[01:03:54] ---- [ui] ui/coherence/coherence-impl-trait-for-marker-trait-negative.rs stdout ----
[01:03:54] diff of stderr:
[01:03:54] 
[01:03:54] 16 LL | impl !Send for dyn Marker2 {} //~ ERROR E0117
[01:03:54] 17    | ^^^^^^^^^^^^^^^^^^^^^^^^^^ impl doesn't use types inside crate
[01:03:54] 18    |
[01:03:54] -    = note: the impl does not reference any types defined in this crate
[01:03:54] +    = note: the impl does not reference only types defined in this crate
[01:03:54] 20    = note: define and implement a trait or new type instead
[01:03:54] 21 
[01:03:54] 22 error[E0321]: cross-crate traits with a default impl, like `std::marker::Send`, can only be implemented for a struct/enum type, not `(dyn Object + 'static)`
[01:03:54] 
[01:03:54] The actual stderr differed from the expected stderr.
[01:03:54] Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/coherence/coherence-impl-trait-for-marker-trait-negative/coherence-impl-trait-for-marker-trait-negative.stderr
[01:03:54] Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/coherence/coherence-impl-trait-for-marker-trait-negative/coherence-impl-trait-for-marker-trait-negative.stderr
[01:03:54] To update references, rerun the tests and pass the `--bless` flag
[01:03:54] To only update this specific test, also pass `--test-args coherence/coherence-impl-trait-for-marker-trait-negative.rs`
[01:03:54] error: 1 errors occurred comparing output.
[01:03:54] status: exit code: 1
[01:03:54] status: exit code: 1
[01:03:54] command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/src/test/ui/coherence/coherence-impl-trait-for-marker-trait-negative.rs" "--target=x86_64-unknown-linux-gnu" "--error-format" "json" "-Zui-testing" "-C" "prefer-dynamic" "-o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/coherence/coherence-impl-trait-for-marker-trait-negative/a" "-Crpath" "-O" "-Zunstable-options" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/coherence/coherence-impl-trait-for-marker-trait-negative/auxiliary" "-A" "unused"
[01:03:54] ------------------------------------------
[01:03:54] 
[01:03:54] ------------------------------------------
[01:03:54] stderr:
[01:03:54] stderr:
[01:03:54] ------------------------------------------
[01:03:54] {"message":"the object type `(dyn Object + Marker2 + 'static)` automatically implements the trait `Marker1`","code":{"code":"E0371","explanation":"\nWhen `Trait2` is a subtrait of `Trait1` (for example, when `Trait2` has a\ndefinition like `trait Trait2: Trait1 { ... }`), it is not allowed to implement\n`Trait1` for `Trait2`. This is because `Trait2` already implements `Trait1` by\ndefinition, so it is not useful to do this.\n\nExample:\n\n```compile_fail,E0371\ntrait Foo { fn foo(&self) { } }\ntrait Bar: Foo { }\ntrait Baz: Bar { }\n\nimpl Bar for Baz { } // error, `Baz` implements `Bar` by definition\nimpl Foo for Baz { } // error, `Baz` implements `Bar` which implements `Foo`\nimpl Baz for Baz { } // error, `Baz` (trivially) implements `Baz`\nimpl Baz for Bar { } // Note: This is OK\n```\n"},"level":"error","spans":[{"file_name":"/checkout/src/test/ui/coherence/coherence-impl-trait-for-marker-trait-negative.rs","byte_start":304,"byte_end":342,"line_start":14,"line_end":14,"column_start":1,"column_end":39,"is_primary":true,"text":[{"text":"impl !Marker1 for dyn Object + Marker2 { }   //~ ERROR E0371","highlight_start":1,"highlight_end":39}],"label":"`(dyn Object + Marker2 + 'static)` automatically implements trait `Marker1`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"error[E0371]: the object type `(dyn Object + Marker2 + 'static)` automatically implements the trait `Marker1`\n  --> /checkout/src/test/ui/coherence/coherence-impl-trait-for-marker-trait-negative.rs:14:1\n   |\nLL | impl !Marker1 for dyn Object + Marker2 { }   //~ ERROR E0371\n   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `(dyn Object + Marker2 + 'static)` automatically implements trait `Marker1`\n\n"}
[01:03:54] {"message":"the object type `(dyn Object + Marker2 + 'static)` automatically implements the trait `Marker2`","code":{"code":"E0371","explanation":"\nWhen `Trait2` is a subtrait of `Trait1` (for example, when `Trait2` has a\ndefinition like `trait Trait2: Trait1 { ... }`), it is not allowed to implement\n`Trait1` for `Trait2`. This is because `Trait2` already implements `Trait1` by\ndefinition, so it is not useful to do this.\n\nExample:\n\n```compile_fail,E0371\ntrait Foo { fn foo(&self) { } }\ntrait Bar: Foo { }\ntrait Baz: Bar { }\n\nimpl Bar for Baz { } // error, `Baz` implements `Bar` by definition\nimpl Foo for Baz { } // error, `Baz` implements `Bar` which implements `Foo`\nimpl Baz for Baz { } // error, `Baz` (trivially) implements `Baz`\nimpl Baz for Bar { } // Note: This is OK\n```\n"},"level":"error","spans":[{"file_name":"/checkout/src/test/ui/coherence/coherence-impl-trait-for-marker-trait-negative.rs","byte_start":400,"byte_end":438,"line_start":16,"line_end":16,"column_start":1,"column_end":39,"is_primary":true,"text":[{"text":"impl !Marker2 for dyn Object + Marker2 { }   //~ ERROR E0371","highlight_start":1,"highlight_end":39}],"label":"`(dyn Object + Marker2 + 'static)` automatically implements trait `Marker2`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"error[E0371]: the object type `(dyn Object + Marker2 + 'static)` automatically implements the trait `Marker2`\n  --> /checkout/src/test/ui/coherence/coherence-impl-trait-for-marker-trait-negative.rs:16:1\n   |\nLL | impl !Marker2 for dyn Object + Marker2 { }   //~ ERROR E0371\n   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `(dyn Object + Marker2 + 'static)` automatically implements trait `Marker2`\n\n"}
[01:03:54] {"message":"only traits defined in the current crate can be implemented for arbitrary types","code":{"code":"E0117","explanation":"\nThis error indicates a violation of one of Rust's orphan rules for trait\nimplementations. The rule prohibits any implementation of a foreign trait (a\ntrait defined in another crate) where\n\n - the type that is implementing the trait is foreign\n - all of the parameters being passed to the trait (if there are any) are also\n   foreign.\n\nHere's one example of this error:\n\n```compile_fail,E0117\nimpl Drop for u32 {}\n```\n\nTo avoid this kind of error, ensure that at least one local type is referenced\nby the `impl`:\n\n```\npub struct Foo; // you define your type in your crate\n\nimpl Drop for Foo { // and you can implement the trait on it!\n    // code of trait implementation here\n#   fn drop(&mut self) { }\n}\n\nimpl From<Foo> for i32 { // or you use a type from your crate as\n                         // a type parameter\n    fn from(i: Foo) -> i32 {\n        0\n    }\n}\n```\n\nAlternatively, define a trait locally and implement that instead:\n\n```\ntrait Bar {\n    fn get(&self) -> usize;\n}\n\nimpl Bar for u32 {\n    fn get(&self) -> usize { 0 }\n}\n```\n\nFor information on the design of the orphan rules, see [RFC 1023].\n\n[RFC 1023]: https://github.com/rust-lang/rfcs/blob/master/text/1023-rebalancing-coherence.md\n"},"level":"error","spans":[{"file_name":"/checkout/src/test/ui/coherence/coherence-impl-trait-for-marker-trait-negative.rs","byte_start":624,"byte_end":650,"line_start":22,"line_end":22,"column_start":1,"column_end":27,"is_primary":true,"text":[{"text":"impl !Send for dyn Marker2 {} //~ ERROR E0117","highlight_start":1,"highlight_end":27}],"label":"impl doesn't use types inside crate","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"the impl does not reference only types defined in this crate","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"define and implement a trait or new type instead","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"error[E0117]: only traits defined in the current crate can be implemented for arbitrary types\n  --> /checkout/src/test/ui/coherence/coherence-impl-trait-for-marker-trait-negative.rs:22:1\n   |\nLL | impl !Send for dyn Marker2 {} //~ ERROR E0117\n   | ^^^^^^^^^^^^^^^^^^^^^^^^^^ impl doesn't use types inside crate\n   |\n   = note: the impl does not reference only types defined in this crate\n   = note: define and implement a trait or new type instead\n\n"}
[01:03:54] {"message":"cross-crate traits with a default impl, like `std::marker::Send`, can only be implemented for a struct/enum type, not `(dyn Object + 'static)`","code":{"code":"E0321","explanation":"\nA cross-crate opt-out trait was implemented on something which wasn't a struct\nor enum type. Erroneous code example:\n\n```compile_fail,E0321\n#![feature(optin_builtin_traits)]\n\nstruct Foo;\n\nimpl !Sync for Foo {}\n\nunsafe impl Send for &'static Foo {}\n// error: cross-crate traits with a default impl, like `core::marker::Send`,\n//        can only be implemented for a struct/enum type, not\n//        `&'static Foo`\n```\n\nOnly structs and enums are permitted to impl Send, Sync, and other opt-out\ntrait, and the struct or enum must be local to the current crate. So, for\nexample, `unsafe impl Send for Rc<Foo>` is not allowed.\n"},"level":"error","spans":[{"file_name":"/checkout/src/test/ui/coherence/coherence-impl-trait-for-marker-trait-negative.rs","byte_start":787,"byte_end":812,"line_start":26,"line_end":26,"column_start":1,"column_end":26,"is_primary":true,"text":[{"text":"impl !Send for dyn Object {} //~ ERROR E0321","highlight_start":1,"highlight_end":26}],"label":"can't implement cross-crate trait with a default impl for non-struct/enum type","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"error[E0321]: cross-crate traits with a default impl, like `std::marker::Send`, can only be implemented for a struct/enum type, not `(dyn Object + 'static)`\n  --> /checkout/src/test/ui/coherence/coherence-impl-trait-for-marker-trait-negative.rs:26:1\n   |\nLL | impl !Send for dyn Object {} //~ ERROR E0321\n   | ^^^^^^^^^^^^^^^^^^^^^^^^^ can't implement cross-crate trait with a default impl for non-struct/enum type\n\n"}
[01:03:54] {"message":"cross-crate traits with a default impl, like `std::marker::Send`, can only be implemented for a struct/enum type, not `(dyn Object + Marker2 + 'static)`","code":{"code":"E0321","explanation":"\nA cross-crate opt-out trait was implemented on something which wasn't a struct\nor enum type. Erroneous code example:\n\n```compile_fail,E0321\n#![feature(optin_builtin_traits)]\n\nstruct Foo;\n\nimpl !Sync for Foo {}\n\nunsafe impl Send for &'static Foo {}\n// error: cross-crate traits with a default impl, like `core::marker::Send`,\n//        can only be implemented for a struct/enum type, not\n//        `&'static Foo`\n```\n\nOnly structs and enums are permitted to impl Send, Sync, and other opt-out\ntrait, and the struct or enum must be local to the current crate. So, for\nexample, `unsafe impl Send for Rc<Foo>` is not allowed.\n"},"level":"error","spans":[{"file_name":"/checkout/src/test/ui/coherence/coherence-impl-trait-for-marker-trait-negative.rs","byte_start":832,"byte_end":867,"line_start":27,"line_end":27,"column_start":1,"column_end":36,"is_primary":true,"text":[{"text":"impl !Send for dyn Object + Marker2 {} //~ ERROR E0321","highlight_start":1,"highlight_end":36}],"label":"can't implement cross-crate trait with a default impl for non-struct/enum type","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"error[E0321]: cross-crate traits with a default impl, like `std::marker::Send`, can only be implemented for a struct/enum type, not `(dyn Object + Marker2 + 'static)`\n  --> /checkout/src/test/ui/coherence/coherence-impl-trait-for-marker-trait-negative.rs:27:1\n   |\nLL | impl !Send for dyn Object + Marker2 {} //~ ERROR E0321\n   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't implement cross-crate trait with a default impl for non-struct/enum type\n\n"}
[01:03:54] {"message":"aborting due to 5 previous errors","code":null,"level":"error","spans":[],"children":[],"rendered":"error: aborting due to 5 previous errors\n\n"}
[01:03:54] {"message":"Some errors occurred: E0117, E0321, E0371.","code":null,"level":"","spans":[],"children":[],"rendered":"Some errors occurred: E0117, E0321, E0371.\n"}
[01:03:54] 
[01:03:54] ------------------------------------------
[01:03:54] 
[01:03:54] thread '[ui] ui/coherence/coherence-impl-trait-for-marker-trait-negative.rs' panicked at 'explicit panic', src/tools/compiletest/src/runtest.rs:3245:9
[01:03:54] thread '[ui] ui/coherence/coherence-impl-trait-for-marker-trait-negative.rs' panicked at 'explicit panic', src/tools/compiletest/src/runtest.rs:3245:9
[01:03:54] note: Run with `RUST_BACKTRACE=1` for a backtrace.
[01:03:54] 
[01:03:54] ---- [ui] ui/coherence/coherence-impl-trait-for-marker-trait-positive.rs stdout ----
[01:03:54] diff of stderr:
[01:03:54] 
[01:03:54] 16 LL | unsafe impl Send for dyn Marker2 {} //~ ERROR E0117
[01:03:54] 17    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ impl doesn't use types inside crate
[01:03:54] 18    |
[01:03:54] -    = note: the impl does not reference any types defined in this crate
[01:03:54] +    = note: the impl does not reference only types defined in this crate
[01:03:54] 20    = note: define and implement a trait or new type instead
[01:03:54] 21 
[01:03:54] 22 error[E0321]: cross-crate traits with a default impl, like `std::marker::Send`, can only be implemented for a struct/enum type, not `(dyn Object + 'static)`
[01:03:54] 
[01:03:54] The actual stderr differed from the expected stderr.
[01:03:54] Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/coherence/coherence-impl-trait-for-marker-trait-positive/coherence-impl-trait-for-marker-trait-positive.stderr
[01:03:54] Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/coherence/coherence-impl-trait-for-marker-trait-positive/coherence-impl-trait-for-marker-trait-positive.stderr
[01:03:54] To update references, rerun the tests and pass the `--bless` flag
[01:03:54] To only update this specific test, also pass `--test-args coherence/coherence-impl-trait-for-marker-trait-positive.rs`
[01:03:54] error: 1 errors occurred comparing output.
[01:03:54] status: exit code: 1
[01:03:54] status: exit code: 1
[01:03:54] command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/src/test/ui/coherence/coherence-impl-trait-for-marker-trait-positive.rs" "--target=x86_64-unknown-linux-gnu" "--error-format" "json" "-Zui-testing" "-C" "prefer-dynamic" "-o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/coherence/coherence-impl-trait-for-marker-trait-positive/a" "-Crpath" "-O" "-Zunstable-options" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/coherence/coherence-impl-trait-for-marker-trait-positive/auxiliary" "-A" "unused"
[01:03:54] ------------------------------------------
[01:03:54] 
[01:03:54] ------------------------------------------
[01:03:54] stderr:
[01:03:54] stderr:
[01:03:54] ------------------------------------------
[01:03:54] {"message":"the object type `(dyn Object + Marker2 + 'static)` automatically implements the trait `Marker1`","code":{"code":"E0371","explanation":"\nWhen `Trait2` is a subtrait of `Trait1` (for example, when `Trait2` has a\ndefinition like `trait Trait2: Trait1 { ... }`), it is not allowed to implement\n`Trait1` for `Trait2`. This is because `Trait2` already implements `Trait1` by\ndefinition, so it is not useful to do this.\n\nExample:\n\n```compile_fail,E0371\ntrait Foo { fn foo(&self) { } }\ntrait Bar: Foo { }\ntrait Baz: Bar { }\n\nimpl Bar for Baz { } // error, `Baz` implements `Bar` by definition\nimpl Foo for Baz { } // error, `Baz` implements `Bar` which implements `Foo`\nimpl Baz for Baz { } // error, `Baz` (trivially) implements `Baz`\nimpl Baz for Bar { } // Note: This is OK\n```\n"},"level":"error","spans":[{"file_name":"/checkout/src/test/ui/coherence/coherence-impl-trait-for-marker-trait-positive.rs","byte_start":304,"byte_end":341,"line_start":14,"line_end":14,"column_start":1,"column_end":38,"is_primary":true,"text":[{"text":"impl Marker1 for dyn Object + Marker2 { }   //~ ERROR E0371","highlight_start":1,"highlight_end":38}],"label":"`(dyn Object + Marker2 + 'static)` automatically implements trait `Marker1`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"error[E0371]: the object type `(dyn Object + Marker2 + 'static)` automatically implements the trait `Marker1`\n  --> /checkout/src/test/ui/coherence/coherence-impl-trait-for-marker-trait-positive.rs:14:1\n   |\nLL | impl Marker1 for dyn Object + Marker2 { }   //~ ERROR E0371\n   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `(dyn Object + Marker2 + 'static)` automatically implements trait `Marker1`\n\n"}
[01:03:54] {"message":"the object type `(dyn Object + Marker2 + 'static)` automatically implements the trait `Marker2`","code":{"code":"E0371","explanation":"\nWhen `Trait2` is a subtrait of `Trait1` (for example, when `Trait2` has a\ndefinition like `trait Trait2: Trait1 { ... }`), it is not allowed to implement\n`Trait1` for `Trait2`. This is because `Trait2` already implements `Trait1` by\ndefinition, so it is not useful to do this.\n\nExample:\n\n```compile_fail,E0371\ntrait Foo { fn foo(&self) { } }\ntrait Bar: Foo { }\ntrait Baz: Bar { }\n\nimpl Bar for Baz { } // error, `Baz` implements `Bar` by definition\nimpl Foo for Baz { } // error, `Baz` implements `Bar` which implements `Foo`\nimpl Baz for Baz { } // error, `Baz` (trivially) implements `Baz`\nimpl Baz for Bar { } // Note: This is OK\n```\n"},"level":"error","spans":[{"file_name":"/checkout/src/test/ui/coherence/coherence-impl-trait-for-marker-trait-positive.rs","byte_start":399,"byte_end":436,"line_start":16,"line_end":16,"column_start":1,"column_end":38,"is_primary":true,"text":[{"text":"impl Marker2 for dyn Object + Marker2 { }   //~ ERROR E0371","highlight_start":1,"highlight_end":38}],"label":"`(dyn Object + Marker2 + 'static)` automatically implements trait `Marker2`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"error[E0371]: the object type `(dyn Object + Marker2 + 'static)` automatically implements the trait `Marker2`\n  --> /checkout/src/test/ui/coherence/coherence-impl-trait-for-marker-trait-positive.rs:16:1\n   |\nLL | impl Marker2 for dyn Object + Marker2 { }   //~ ERROR E0371\n   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `(dyn Object + Marker2 + 'static)` automatically implements trait `Marker2`\n\n"}
[01:03:54] {"message":"only traits defined in the current crate can be implemented for arbitrary types","code":{"code":"E0117","explanation":"\nThis error indicates a violation of one of Rust's orphan rules for trait\nimplementations. The rule prohibits any implementation of a foreign trait (a\ntrait defined in another crate) where\n\n - the type that is implementing the trait is foreign\n - all of the parameters being passed to the trait (if there are any) are also\n   foreign.\n\nHere's one example of this error:\n\n```compile_fail,E0117\nimpl Drop for u32 {}\n```\n\nTo avoid this kind of error, ensure that at least one local type is referenced\nby the `impl`:\n\n```\npub struct Foo; // you define your type in your crate\n\nimpl Drop for Foo { // and you can implement the trait on it!\n    // code of trait implementation here\n#   fn drop(&mut self) { }\n}\n\nimpl From<Foo> for i32 { // or you use a type from your crate as\n                         // a type parameter\n    fn from(i: Foo) -> i32 {\n        0\n    }\n}\n```\n\nAlternatively, define a trait locally and implement that instead:\n\n```\ntrait Bar {\n    fn get(&self) -> usize;\n}\n\nimpl Bar for u32 {\n    fn get(&self) -> usize { 0 }\n}\n```\n\nFor information on the design of the orphan rules, see [RFC 1023].\n\n[RFC 1023]: https://github.com/rust-lang/rfcs/blob/master/text/1023-rebalancing-coherence.md\n"},"level":"error","spans":[{"file_name":"/checkout/src/test/ui/coherence/coherence-impl-trait-for-marker-trait-positive.rs","byte_start":621,"byte_end":653,"line_start":22,"line_end":22,"column_start":1,"column_end":33,"is_primary":true,"text":[{"text":"unsafe impl Send for dyn Marker2 {} //~ ERROR E0117","highlight_start":1,"highlight_end":33}],"label":"impl doesn't use types inside crate","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"the impl does not reference only types defined in this crate","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"define and implement a trait or new type instead","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"error[E0117]: only traits defined in the current crate can be implemented for arbitrary types\n  --> /checkout/src/test/ui/coherence/coherence-impl-trait-for-marker-trait-positive.rs:22:1\n   |\nLL | unsafe impl Send for dyn Marker2 {} //~ ERROR E0117\n   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ impl doesn't use types inside crate\n   |\n   = note: the impl does not reference only types defined in this crate\n   = note: define and implement a trait or new type instead\n\n"}
[01:03:54] {"message":"cross-crate traits with a default impl, like `std::marker::Send`, can only be implemented for a struct/enum type, not `(dyn Object + 'static)`","code":{"code":"E0321","explanation":"\nA cross-crate opt-out trait was implemented on something which wasn't a struct\nor enum type. Erroneous code example:\n\n```compile_fail,E0321\n#![feature(optin_builtin_traits)]\n\nstruct Foo;\n\nimpl !Sync for Foo {}\n\nunsafe impl Send for &'static Foo {}\n// error: cross-crate traits with a default impl, like `core::marker::Send`,\n//        can only be implemented for a struct/enum type, not\n//        `&'static Foo`\n```\n\nOnly structs and enums are permitted to impl Send, Sync, and other opt-out\ntrait, and the struct or enum must be local to the current crate. So, for\nexample, `unsafe impl Send for Rc<Foo>` is not allowed.\n"},"level":"error","spans":[{"file_name":"/checkout/src/test/ui/coherence/coherence-impl-trait-for-marker-trait-positive.rs","byte_start":790,"byte_end":821,"line_start":26,"line_end":26,"column_start":1,"column_end":32,"is_primary":true,"text":[{"text":"unsafe impl Send for dyn Object {} //~ ERROR E0321","highlight_start":1,"highlight_end":32}],"label":"can't implement cross-crate trait with a default impl for non-struct/enum type","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"error[E0321]: cross-crate traits with a default impl, like `std::marker::Send`, can only be implemented for a struct/enum type, not `(dyn Object + 'static)`\n  --> /checkout/src/test/ui/coherence/coherence-impl-trait-for-marker-trait-positive.rs:26:1\n   |\nLL | unsafe impl Send for dyn Object {} //~ ERROR E0321\n   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't implement cross-crate trait with a default impl for non-struct/enum type\n\n"}
[01:03:54] {"message":"cross-crate traits with a default impl, like `std::marker::Send`, can only be implemented for a struct/enum type, not `(dyn Object + Marker2 + 'static)`","code":{"code":"E0321","explanation":"\nA cross-crate opt-out trait was implemented on something which wasn't a struct\nor enum type. Erroneous code example:\n\n```compile_fail,E0321\n#![feature(optin_builtin_traits)]\n\nstruct Foo;\n\nimpl !Sync for Foo {}\n\nunsafe impl Send for &'static Foo {}\n// error: cross-crate traits with a default impl, like `core::marker::Send`,\n//        can only be implemented for a struct/enum type, not\n//        `&'static Foo`\n```\n\nOnly structs and enums are permitted to impl Send, Sync, and other opt-out\ntrait, and the struct or enum must be local to the current crate. So, for\nexample, `unsafe impl Send for Rc<Foo>` is not allowed.\n"},"level":"error","spans":[{"file_name":"/checkout/src/test/ui/coherence/coherence-impl-trait-for-marker-trait-positive.rs","byte_start":841,"byte_end":882,"line_start":27,"line_end":27,"column_start":1,"column_end":42,"is_primary":true,"text":[{"text":"unsafe impl Send for dyn Object + Marker2 {} //~ ERROR E0321","highlight_start":1,"highlight_end":42}],"label":"can't implement cross-crate trait with a default impl for non-struct/enum type","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"error[E0321]: cross-crate traits with a default impl, like `std::marker::Send`, can only be implemented for a struct/enum type, not `(dyn Object + Marker2 + 'static)`\n  --> /checkout/src/test/ui/coherence/coherence-impl-trait-for-marker-trait-positive.rs:27:1\n   |\nLL | unsafe impl Send for dyn Object + Marker2 {} //~ ERROR E0321\n   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't implement cross-crate trait with a default impl for non-struct/enum type\n\n"}
[01:03:54] {"message":"aborting due to 5 previous errors","code":null,"level":"error","spans":[],"children":[],"rendered":"error: aborting due to 5 previous errors\n\n"}
[01:03:54] {"message":"Some errors occurred: E0117, E0321, E0371.","code":null,"level":"","spans":[],"children":[],"rendered":"Some errors occurred: E0117, E0321, E0371.\n"}
[01:03:54] 
[01:03:54] ------------------------------------------
[01:03:54] 
[01:03:54] thread '[ui] ui/coherence/coherence-impl-trait-for-marker-trait-positive.rs' panicked at 'explicit panic', src/tools/compiletest/src/runtest.rs:3245:9
---
[01:03:54] 
[01:03:54] thread 'main' panicked at 'Some tests failed', src/tools/compiletest/src/main.rs:495:22
[01:03:54] 
[01:03:54] 
[01:03:54] command did not execute successfully: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-tools-bin/compiletest" "--compile-lib-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib" "--run-lib-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib" "--rustc-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "--src-base" "/checkout/src/test/ui" "--build-base" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui" "--stage-id" "stage2-x86_64-unknown-linux-gnu" "--mode" "ui" "--target" "x86_64-unknown-linux-gnu" "--host" "x86_64-unknown-linux-gnu" "--llvm-filecheck" "/usr/lib/llvm-6.0/bin/FileCheck" "--host-rustcflags" "-Crpath -O -Zunstable-options  -Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "--target-rustcflags" "-Crpath -O -Zunstable-options  -Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "--docck-python" "/usr/bin/python2.7" "--lldb-python" "/usr/bin/python2.7" "--gdb" "/usr/bin/gdb" "--quiet" "--llvm-version" "6.0.0\n" "--system-llvm" "--cc" "" "--cxx" "" "--cflags" "" "--llvm-components" "" "--llvm-cxxflags" "" "--adb-path" "adb" "--adb-test-dir" "/data/tmp/work" "--android-cross-path" "" "--color" "always"
[01:03:54] 
[01:03:54] 
[01:03:54] failed to run: /checkout/obj/build/bootstrap/debug/bootstrap test
[01:03:54] Build completed unsuccessfully in 0:03:58
[01:03:54] Build completed unsuccessfully in 0:03:58
[01:03:54] Makefile:48: recipe for target 'check' failed
[01:03:54] make: *** [check] Error 1
The command "stamp sh -x -c "$RUN_SCRIPT"" exited with 2.
travis_time:start:00ab8c33
$ date && (curl -fs --head https://google.com | grep ^Date: | sed 's/Date: //g' || true)
Sun Jan 13 16:16:36 UTC 2019
---
travis_time:end:0643b115:start=1547396197297393420,finish=1547396197303885202,duration=6491782
travis_fold:end:after_failure.4
travis_fold:start:after_failure.5
travis_time:start:0f4165b6
$ cat ./obj/build/x86_64-unknown-linux-gnu/native/asan/build/lib/asan/clang_rt.asan-dynamic-i386.vers || true
cat: ./obj/build/x86_64-unknown-linux-gnu/native/asan/build/lib/asan/clang_rt.asan-dynamic-i386.vers: No such file or directory
travis_fold:end:after_failure.5
travis_fold:start:after_failure.6
travis_time:start:218c1c1d
$ dmesg | grep -i kill

I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact @TimNN. (Feature Requests)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
rollup A PR which is a rollup S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants