Merge pull request #2786 from phansch/fix_param_env_compile_fail

Fix chrono compile-fail due to empty param_env
This commit is contained in:
Philipp Hansch 2018-05-21 18:35:17 +02:00 committed by GitHub
commit 736a1a8dc3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 2 deletions

View file

@ -200,8 +200,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for NeedlessPassByValue {
let sugg = |db: &mut DiagnosticBuilder| { let sugg = |db: &mut DiagnosticBuilder| {
if let ty::TypeVariants::TyAdt(def, ..) = ty.sty { if let ty::TypeVariants::TyAdt(def, ..) = ty.sty {
if let Some(span) = cx.tcx.hir.span_if_local(def.did) { if let Some(span) = cx.tcx.hir.span_if_local(def.did) {
let param_env = ty::ParamEnv::empty(); if cx.param_env.can_type_implement_copy(cx.tcx, ty).is_ok() {
if param_env.can_type_implement_copy(cx.tcx, ty).is_ok() {
db.span_help(span, "consider marking this type as Copy"); db.span_help(span, "consider marking this type as Copy");
} }
} }

View file

@ -0,0 +1,19 @@
#![allow(unused_variables, blacklisted_name, needless_pass_by_value, dead_code)]
// This should not compile-fail with:
//
// error[E0277]: the trait bound `T: Foo` is not satisfied
//
// See https://github.com/rust-lang-nursery/rust-clippy/issues/2760
trait Foo {
type Bar;
}
struct Baz<T: Foo> {
bar: T::Bar,
}
fn take<T: Foo>(baz: Baz<T>) {}
fn main() {}