Skip to content

Commit 58f8afd

Browse files
committed
remove bindings_after_at feature
1 parent 0424226 commit 58f8afd

File tree

6 files changed

+211
-78
lines changed

6 files changed

+211
-78
lines changed

clippy_lints/src/lib.rs

-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
#![cfg_attr(feature = "deny-warnings", deny(warnings))]
1313
#![feature(crate_visibility_modifier)]
1414
#![feature(concat_idents)]
15-
#![feature(bindings_after_at)]
1615

1716
// FIXME: switch to something more ergonomic here, once available.
1817
// (Currently there is no way to opt into sysroot crates without `extern crate`.)

clippy_lints/src/use_self.rs

+13-14
Original file line numberDiff line numberDiff line change
@@ -199,24 +199,23 @@ impl<'a, 'tcx> Visitor<'tcx> for ImplVisitor<'a, 'tcx> {
199199
}
200200
},
201201
// type-relative fn calls (`Foo::new()`) and tuple-like instantiation (`Foo(arg)` or `Enum::Foo(arg)`)
202-
ExprKind::Call(
203-
fun
204-
@ Expr {
202+
ExprKind::Call(fun, _) => {
203+
if let Expr {
205204
kind: ExprKind::Path(ref qpath),
206205
..
207-
},
208-
_,
209-
) => {
210-
if expr_ty_matches(expr, self.self_ty, self.cx) {
211-
let res = self.cx.tables.qpath_res(qpath, fun.hir_id);
206+
} = fun
207+
{
208+
if expr_ty_matches(expr, self.self_ty, self.cx) {
209+
let res = self.cx.tables.qpath_res(qpath, fun.hir_id);
212210

213-
if let def::Res::Def(DefKind::Ctor(ctor_of, _), ..) = res {
214-
match ctor_of {
215-
def::CtorOf::Variant => span_lint_on_qpath_resolved(self.cx, qpath, true),
216-
def::CtorOf::Struct => span_lint_on_qpath_resolved(self.cx, qpath, false),
211+
if let def::Res::Def(DefKind::Ctor(ctor_of, _), ..) = res {
212+
match ctor_of {
213+
def::CtorOf::Variant => span_lint_on_qpath_resolved(self.cx, qpath, true),
214+
def::CtorOf::Struct => span_lint_on_qpath_resolved(self.cx, qpath, false),
215+
}
216+
} else if let def::Res::Def(DefKind::Variant, ..) = res {
217+
span_lint_on_qpath_resolved(self.cx, qpath, true);
217218
}
218-
} else if let def::Res::Def(DefKind::Variant, ..) = res {
219-
span_lint_on_qpath_resolved(self.cx, qpath, true);
220219
}
221220
}
222221
},

tests/ui/large_const_arrays.stderr

+74-61
Original file line numberDiff line numberDiff line change
@@ -8,69 +8,82 @@ LL | pub(crate) const FOO_PUB_CRATE: [u32; 1_000_000] = [0u32; 1_000_000];
88
|
99
= note: `-D clippy::large-const-arrays` implied by `-D warnings`
1010

11-
error: large array defined as const
12-
--> $DIR/large_const_arrays.rs:13:1
13-
|
14-
LL | pub const FOO_PUB: [u32; 1_000_000] = [0u32; 1_000_000];
15-
| ^^^^-----^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
16-
| |
17-
| help: make this a static item: `static`
18-
19-
error: large array defined as const
20-
--> $DIR/large_const_arrays.rs:14:1
21-
|
22-
LL | const FOO: [u32; 1_000_000] = [0u32; 1_000_000];
23-
| -----^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
24-
| |
25-
| help: make this a static item: `static`
26-
27-
error: large array defined as const
28-
--> $DIR/large_const_arrays.rs:23:5
29-
|
30-
LL | pub const BAR_PUB: [u32; 1_000_000] = [0u32; 1_000_000];
31-
| ^^^^-----^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
32-
| |
33-
| help: make this a static item: `static`
34-
35-
error: large array defined as const
36-
--> $DIR/large_const_arrays.rs:24:5
37-
|
38-
LL | const BAR: [u32; 1_000_000] = [0u32; 1_000_000];
39-
| -----^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
40-
| |
41-
| help: make this a static item: `static`
11+
thread 'rustc' panicked at 'aborting due to `-Z treat-err-as-bug=1`', src/librustc_errors/lib.rs:930:13
12+
stack backtrace:
13+
0: backtrace::backtrace::libunwind::trace
14+
at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.46/src/backtrace/libunwind.rs:86
15+
1: backtrace::backtrace::trace_unsynchronized
16+
at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.46/src/backtrace/mod.rs:66
17+
2: std::sys_common::backtrace::_print_fmt
18+
at src/libstd/sys_common/backtrace.rs:78
19+
3: <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt
20+
at src/libstd/sys_common/backtrace.rs:59
21+
4: core::fmt::write
22+
at src/libcore/fmt/mod.rs:1069
23+
5: std::io::Write::write_fmt
24+
at src/libstd/io/mod.rs:1504
25+
6: std::sys_common::backtrace::_print
26+
at src/libstd/sys_common/backtrace.rs:62
27+
7: std::sys_common::backtrace::print
28+
at src/libstd/sys_common/backtrace.rs:49
29+
8: std::panicking::default_hook::{{closure}}
30+
at src/libstd/panicking.rs:198
31+
9: std::panicking::default_hook
32+
at src/libstd/panicking.rs:218
33+
10: <alloc::boxed::Box<F> as core::ops::function::Fn<A>>::call
34+
at /rustc/7f3b3df9e2f2efe3434b4f6fc76462d2c8ad332f/src/liballoc/boxed.rs:1038
35+
11: clippy_driver::report_clippy_ice
36+
at src/driver.rs:242
37+
12: <clippy_driver::ICE_HOOK as core::ops::deref::Deref>::deref::__static_ref_initialize::{{closure}}
38+
at src/driver.rs:235
39+
13: std::panicking::rust_panic_with_hook
40+
at src/libstd/panicking.rs:481
41+
14: std::panicking::begin_panic
42+
15: rustc_errors::HandlerInner::emit_diagnostic
43+
16: rustc_errors::diagnostic_builder::DiagnosticBuilder::emit
44+
17: clippy_lints::utils::diagnostics::span_lint_and_then::{{closure}}
45+
at clippy_lints/src/utils/diagnostics.rs:137
46+
18: core::ops::function::FnOnce::call_once{{vtable.shim}}
47+
at /rustc/7f3b3df9e2f2efe3434b4f6fc76462d2c8ad332f/src/libcore/ops/function.rs:232
48+
19: rustc_middle::lint::struct_lint_level::struct_lint_level_impl
49+
20: rustc_middle::lint::struct_lint_level
50+
at /rustc/7f3b3df9e2f2efe3434b4f6fc76462d2c8ad332f/src/librustc_middle/lint.rs:332
51+
21: rustc_middle::ty::context::TyCtxt::struct_span_lint_hir
52+
at /rustc/7f3b3df9e2f2efe3434b4f6fc76462d2c8ad332f/src/librustc_middle/ty/context.rs:2595
53+
22: <rustc_lint::context::LateContext as rustc_lint::context::LintContext>::lookup
54+
at /rustc/7f3b3df9e2f2efe3434b4f6fc76462d2c8ad332f/src/librustc_lint/context.rs:641
55+
23: rustc_lint::context::LintContext::struct_span_lint
56+
at /rustc/7f3b3df9e2f2efe3434b4f6fc76462d2c8ad332f/src/librustc_lint/context.rs:594
57+
24: clippy_lints::utils::diagnostics::span_lint_and_then
58+
at clippy_lints/src/utils/diagnostics.rs:133
59+
25: <clippy_lints::large_const_arrays::LargeConstArrays as rustc_lint::passes::LateLintPass>::check_item
60+
at clippy_lints/src/large_const_arrays.rs:68
61+
26: <rustc_lint::late::LateLintPassObjects as rustc_lint::passes::LateLintPass>::check_item
62+
27: rustc_hir::intravisit::Visitor::visit_nested_item
63+
28: rustc_hir::intravisit::walk_crate
64+
29: rustc_lint::late::late_lint_pass_crate
65+
30: rustc_session::utils::<impl rustc_session::session::Session>::time
66+
31: rustc_session::utils::<impl rustc_session::session::Session>::time
67+
32: rustc_interface::passes::analysis::{{closure}}::{{closure}}
68+
33: rustc_session::utils::<impl rustc_session::session::Session>::time
69+
34: rustc_interface::passes::analysis
70+
35: rustc_middle::ty::query::<impl rustc_query_system::query::config::QueryAccessors<rustc_middle::ty::context::TyCtxt> for rustc_middle::ty::query::queries::analysis>::compute
71+
36: rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl
72+
37: rustc_query_system::query::plumbing::get_query
73+
38: rustc_middle::ty::context::tls::enter_global
74+
39: rustc_interface::interface::run_compiler_in_existing_thread_pool
75+
40: scoped_tls::ScopedKey<T>::set
76+
41: rustc_ast::attr::with_globals
77+
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
4278

43-
error: large array defined as const
44-
--> $DIR/large_const_arrays.rs:25:5
45-
|
46-
LL | pub const BAR_STRUCT_PUB: [S; 5_000] = [S { data: [0; 32] }; 5_000];
47-
| ^^^^-----^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
48-
| |
49-
| help: make this a static item: `static`
50-
51-
error: large array defined as const
52-
--> $DIR/large_const_arrays.rs:26:5
53-
|
54-
LL | const BAR_STRUCT: [S; 5_000] = [S { data: [0; 32] }; 5_000];
55-
| -----^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
56-
| |
57-
| help: make this a static item: `static`
79+
error: internal compiler error: unexpected panic
5880

59-
error: large array defined as const
60-
--> $DIR/large_const_arrays.rs:27:5
61-
|
62-
LL | pub const BAR_S_PUB: [Option<&str>; 200_000] = [Some("str"); 200_000];
63-
| ^^^^-----^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
64-
| |
65-
| help: make this a static item: `static`
81+
note: the compiler unexpectedly panicked. this is a bug.
6682

67-
error: large array defined as const
68-
--> $DIR/large_const_arrays.rs:28:5
69-
|
70-
LL | const BAR_S: [Option<&str>; 200_000] = [Some("str"); 200_000];
71-
| -----^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
72-
| |
73-
| help: make this a static item: `static`
83+
note: we would appreciate a bug report: https://github.com/rust-lang/rust-clippy/issues/new
7484

75-
error: aborting due to 9 previous errors
85+
note: Clippy version: clippy 0.0.212 (87a6f3fc 2020-04-26)
7686

87+
query stack during panic:
88+
#0 [analysis] running analysis passes on this crate
89+
end of query stack
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,107 @@
11
error: internal compiler error: src/librustc_middle/ty/context.rs:516: node_type: no type for node `expr N (hir_id=HirId { owner: DefId(0:8 ~ could_be_const[317d]::{{impl}}[0]::const_generic_params[0]), local_id: 22 })`
22

33
thread 'rustc' panicked at 'Box<Any>', src/librustc_errors/lib.rs:904:9
4-
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
4+
stack backtrace:
5+
0: backtrace::backtrace::libunwind::trace
6+
at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.46/src/backtrace/libunwind.rs:86
7+
1: backtrace::backtrace::trace_unsynchronized
8+
at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.46/src/backtrace/mod.rs:66
9+
2: std::sys_common::backtrace::_print_fmt
10+
at src/libstd/sys_common/backtrace.rs:78
11+
3: <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt
12+
at src/libstd/sys_common/backtrace.rs:59
13+
4: core::fmt::write
14+
at src/libcore/fmt/mod.rs:1069
15+
5: std::io::Write::write_fmt
16+
at src/libstd/io/mod.rs:1504
17+
6: std::sys_common::backtrace::_print
18+
at src/libstd/sys_common/backtrace.rs:62
19+
7: std::sys_common::backtrace::print
20+
at src/libstd/sys_common/backtrace.rs:49
21+
8: std::panicking::default_hook::{{closure}}
22+
at src/libstd/panicking.rs:198
23+
9: std::panicking::default_hook
24+
at src/libstd/panicking.rs:218
25+
10: <alloc::boxed::Box<F> as core::ops::function::Fn<A>>::call
26+
at /rustc/7f3b3df9e2f2efe3434b4f6fc76462d2c8ad332f/src/liballoc/boxed.rs:1038
27+
11: clippy_driver::report_clippy_ice
28+
at src/driver.rs:242
29+
12: <clippy_driver::ICE_HOOK as core::ops::deref::Deref>::deref::__static_ref_initialize::{{closure}}
30+
at src/driver.rs:235
31+
13: std::panicking::rust_panic_with_hook
32+
at src/libstd/panicking.rs:481
33+
14: std::panicking::begin_panic
34+
15: rustc_errors::HandlerInner::bug
35+
16: rustc_errors::Handler::bug
36+
17: rustc_middle::util::bug::opt_span_bug_fmt::{{closure}}
37+
18: rustc_middle::ty::context::tls::with_opt::{{closure}}
38+
19: rustc_middle::ty::context::tls::with_opt
39+
20: rustc_middle::util::bug::opt_span_bug_fmt
40+
21: rustc_middle::util::bug::bug_fmt
41+
22: rustc_middle::ty::context::TypeckTables::node_type::{{closure}}
42+
23: rustc_middle::ty::context::TypeckTables::node_type
43+
24: <clippy_lints::use_self::ImplVisitor as rustc_hir::intravisit::Visitor>::visit_expr::expr_ty_matches
44+
at clippy_lints/src/use_self.rs:184
45+
25: <clippy_lints::use_self::ImplVisitor as rustc_hir::intravisit::Visitor>::visit_expr
46+
at clippy_lints/src/use_self.rs:219
47+
26: rustc_hir::intravisit::walk_body
48+
at /rustc/7f3b3df9e2f2efe3434b4f6fc76462d2c8ad332f/src/librustc_hir/intravisit.rs:485
49+
27: rustc_hir::intravisit::Visitor::visit_body
50+
at /rustc/7f3b3df9e2f2efe3434b4f6fc76462d2c8ad332f/src/librustc_hir/intravisit.rs:302
51+
28: rustc_hir::intravisit::Visitor::visit_nested_body
52+
at /rustc/7f3b3df9e2f2efe3434b4f6fc76462d2c8ad332f/src/librustc_ast/visit.rs:236
53+
29: rustc_hir::intravisit::walk_anon_const
54+
at /rustc/7f3b3df9e2f2efe3434b4f6fc76462d2c8ad332f/src/librustc_hir/intravisit.rs:1061
55+
30: rustc_hir::intravisit::Visitor::visit_anon_const
56+
at /rustc/7f3b3df9e2f2efe3434b4f6fc76462d2c8ad332f/src/librustc_hir/intravisit.rs:348
57+
31: rustc_hir::intravisit::walk_ty
58+
at /rustc/7f3b3df9e2f2efe3434b4f6fc76462d2c8ad332f/src/librustc_hir/intravisit.rs:698
59+
32: <clippy_lints::use_self::ImplVisitor as rustc_hir::intravisit::Visitor>::visit_ty
60+
at clippy_lints/src/use_self.rs:179
61+
33: rustc_hir::intravisit::walk_ty
62+
at /rustc/7f3b3df9e2f2efe3434b4f6fc76462d2c8ad332f/src/librustc_hir/intravisit.rs:679
63+
34: <clippy_lints::use_self::ImplVisitor as rustc_hir::intravisit::Visitor>::visit_ty
64+
at clippy_lints/src/use_self.rs:179
65+
35: rustc_hir::intravisit::walk_fn_decl
66+
at /rustc/7f3b3df9e2f2efe3434b4f6fc76462d2c8ad332f/src/librustc_hir/intravisit.rs:901
67+
36: rustc_hir::intravisit::Visitor::visit_fn_decl
68+
at /rustc/7f3b3df9e2f2efe3434b4f6fc76462d2c8ad332f/src/librustc_hir/intravisit.rs:366
69+
37: rustc_hir::intravisit::walk_fn
70+
at /rustc/7f3b3df9e2f2efe3434b4f6fc76462d2c8ad332f/src/librustc_hir/intravisit.rs:924
71+
38: rustc_hir::intravisit::Visitor::visit_fn
72+
at /rustc/7f3b3df9e2f2efe3434b4f6fc76462d2c8ad332f/src/librustc_hir/intravisit.rs:369
73+
39: rustc_hir::intravisit::walk_impl_item
74+
at /rustc/7f3b3df9e2f2efe3434b4f6fc76462d2c8ad332f/src/librustc_hir/intravisit.rs:997
75+
40: <clippy_lints::use_self::ImplVisitor as rustc_hir::intravisit::Visitor>::visit_impl_item
76+
at clippy_lints/src/use_self.rs:240
77+
41: <clippy_lints::use_self::UseSelf as rustc_lint::passes::LateLintPass>::check_item
78+
at clippy_lints/src/use_self.rs:276
79+
42: <rustc_lint::late::LateLintPassObjects as rustc_lint::passes::LateLintPass>::check_item
80+
43: rustc_hir::intravisit::Visitor::visit_nested_item
81+
44: rustc_hir::intravisit::walk_crate
82+
45: rustc_lint::late::late_lint_pass_crate
83+
46: rustc_session::utils::<impl rustc_session::session::Session>::time
84+
47: rustc_session::utils::<impl rustc_session::session::Session>::time
85+
48: rustc_interface::passes::analysis::{{closure}}::{{closure}}
86+
49: rustc_session::utils::<impl rustc_session::session::Session>::time
87+
50: rustc_interface::passes::analysis
88+
51: rustc_middle::ty::query::<impl rustc_query_system::query::config::QueryAccessors<rustc_middle::ty::context::TyCtxt> for rustc_middle::ty::query::queries::analysis>::compute
89+
52: rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl
90+
53: rustc_query_system::query::plumbing::get_query
91+
54: rustc_middle::ty::context::tls::enter_global
92+
55: rustc_interface::interface::run_compiler_in_existing_thread_pool
93+
56: scoped_tls::ScopedKey<T>::set
94+
57: rustc_ast::attr::with_globals
95+
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
596

697
note: the compiler unexpectedly panicked. this is a bug.
798

899
note: we would appreciate a bug report: https://github.com/rust-lang/rust-clippy/issues/new
9100

10-
note: Clippy version: clippy 0.0.212 (517d0ff3 2020-04-23)
101+
note: Clippy version: clippy 0.0.212 (87a6f3fc 2020-04-26)
11102

103+
query stack during panic:
104+
#0 [analysis] running analysis passes on this crate
105+
end of query stack
12106
error: aborting due to previous error
13107

tests/ui/use_self.fixed

+14
Original file line numberDiff line numberDiff line change
@@ -364,3 +364,17 @@ mod issue3859 {
364364
}
365365
}
366366
}
367+
368+
/* mod issue4305 {
369+
trait Foo: 'static {}
370+
371+
struct Bar;
372+
373+
impl Foo for Bar {}
374+
375+
impl<T: Foo> From<T> for Box<dyn Foo> {
376+
fn from(t: T) -> Self {
377+
Box::new(t)
378+
}
379+
}
380+
} */

tests/ui/use_self.rs

+14
Original file line numberDiff line numberDiff line change
@@ -364,3 +364,17 @@ mod issue3859 {
364364
}
365365
}
366366
}
367+
368+
/* mod issue4305 {
369+
trait Foo: 'static {}
370+
371+
struct Bar;
372+
373+
impl Foo for Bar {}
374+
375+
impl<T: Foo> From<T> for Box<dyn Foo> {
376+
fn from(t: T) -> Self {
377+
Box::new(t)
378+
}
379+
}
380+
} */

0 commit comments

Comments
 (0)