diff options
| author | Mazdak Farrokhzad <twingoow@gmail.com> | 2020-02-25 03:43:29 +0100 |
|---|---|---|
| committer | Mazdak Farrokhzad <twingoow@gmail.com> | 2020-02-25 03:43:34 +0100 |
| commit | 9b6e0e8b9442b0e930aed950bac4f3d151d295ae (patch) | |
| tree | 22d55a8ac36264e0381145bd5592a54dc66621d1 /src | |
| parent | 834bc5650acf7019a53b409db68986857822812c (diff) | |
| download | rust-9b6e0e8b9442b0e930aed950bac4f3d151d295ae.tar.gz rust-9b6e0e8b9442b0e930aed950bac4f3d151d295ae.zip | |
simplify check_pat_lit
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc_typeck/check/pat.rs | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/src/librustc_typeck/check/pat.rs b/src/librustc_typeck/check/pat.rs index 2c7cbed6a2d..3fdae81c766 100644 --- a/src/librustc_typeck/check/pat.rs +++ b/src/librustc_typeck/check/pat.rs @@ -11,7 +11,7 @@ use rustc_infer::infer; use rustc_infer::infer::type_variable::{TypeVariableOrigin, TypeVariableOriginKind}; use rustc_infer::traits::Pattern; use rustc_span::hygiene::DesugaringKind; -use rustc_span::Span; +use rustc_span::source_map::{Span, Spanned}; use syntax::ast; use syntax::util::lev_distance::find_best_match_for_name; @@ -361,16 +361,11 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { // Byte string patterns behave the same way as array patterns // They can denote both statically and dynamically-sized byte arrays. let mut pat_ty = ty; - if let hir::ExprKind::Lit(ref lt) = lt.kind { - if let ast::LitKind::ByteStr(_) = lt.node { - let expected_ty = self.structurally_resolved_type(span, expected); - if let ty::Ref(_, r_ty, _) = expected_ty.kind { - if let ty::Slice(_) = r_ty.kind { - let tcx = self.tcx; - pat_ty = - tcx.mk_imm_ref(tcx.lifetimes.re_static, tcx.mk_slice(tcx.types.u8)); - } - } + if let hir::ExprKind::Lit(Spanned { node: ast::LitKind::ByteStr(_), .. }) = lt.kind { + let expected = self.structurally_resolved_type(span, expected); + if let ty::Ref(_, ty::TyS { kind: ty::Slice(_), .. }, _) = expected.kind { + let tcx = self.tcx; + pat_ty = tcx.mk_imm_ref(tcx.lifetimes.re_static, tcx.mk_slice(tcx.types.u8)); } } |
