diff options
| author | bors <bors@rust-lang.org> | 2020-03-10 10:37:51 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2020-03-10 10:37:51 +0000 |
| commit | 3aa8da3e072651d9c68a579dcf598609983d2234 (patch) | |
| tree | 6b1f737951aa4aaea675237e1fd2ecd28f24b3f4 | |
| parent | 187bbf0e7bbc1c7da5902cd1a89f286aa063c5ff (diff) | |
| parent | 8d2a3e0a61dbcf2ec6ce5a693c68e3da587991b9 (diff) | |
| download | rust-3aa8da3e072651d9c68a579dcf598609983d2234.tar.gz rust-3aa8da3e072651d9c68a579dcf598609983d2234.zip | |
Auto merge of #5297 - JohnTitor:shadow, r=phansch
Use `node_type_opt` over `node_type` Fix ICE reported in rust-lang/rust#69873. changelog: Fix ICE in checking bindings
| -rw-r--r-- | clippy_lints/src/shadow.rs | 12 | ||||
| -rw-r--r-- | tests/ui/crashes/shadow.rs | 6 |
2 files changed, 14 insertions, 4 deletions
diff --git a/clippy_lints/src/shadow.rs b/clippy_lints/src/shadow.rs index 0dc2705550b..0ada65ec785 100644 --- a/clippy_lints/src/shadow.rs +++ b/clippy_lints/src/shadow.rs @@ -154,10 +154,14 @@ fn check_local<'a, 'tcx>(cx: &LateContext<'a, 'tcx>, local: &'tcx Local<'_>, bin } fn is_binding(cx: &LateContext<'_, '_>, pat_id: HirId) -> bool { - let var_ty = cx.tables.node_type(pat_id); - match var_ty.kind { - ty::Adt(..) => false, - _ => true, + let var_ty = cx.tables.node_type_opt(pat_id); + if let Some(var_ty) = var_ty { + match var_ty.kind { + ty::Adt(..) => false, + _ => true, + } + } else { + false } } diff --git a/tests/ui/crashes/shadow.rs b/tests/ui/crashes/shadow.rs new file mode 100644 index 00000000000..843e8ef64dc --- /dev/null +++ b/tests/ui/crashes/shadow.rs @@ -0,0 +1,6 @@ +fn main() { + let x: [i32; { + let u = 2; + 4 + }] = [2; { 4 }]; +} |
