diff --git a/src/librustc_ast_lowering/lib.rs b/src/librustc_ast_lowering/lib.rs index d61db171aa225..586355fe6136e 100644 --- a/src/librustc_ast_lowering/lib.rs +++ b/src/librustc_ast_lowering/lib.rs @@ -1145,7 +1145,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> { if let TyKind::Path(ref qself, ref path) = ty.kind { if let Some(partial_res) = self.resolver.get_partial_res(ty.id) { let res = partial_res.base_res(); - if res.ns().map(|ns| ns != Namespace::TypeNS).unwrap_or(false) { + if !res.matches_ns(Namespace::TypeNS) { debug!( "lower_generic_arg: Lowering type argument as const argument: {:?}", ty, diff --git a/src/librustc_hir/def.rs b/src/librustc_hir/def.rs index 67f20aa848f13..72310061d5cb5 100644 --- a/src/librustc_hir/def.rs +++ b/src/librustc_hir/def.rs @@ -461,4 +461,9 @@ impl Res { Res::Err => None, } } + + /// Always returns `true` if `self` is `Res::Err` + pub fn matches_ns(&self, ns: Namespace) -> bool { + self.ns().map(|actual_ns| actual_ns == ns).unwrap_or(true) + } }