Fix get_def_path

This fix is obsolet once rust-lang/rust#59779 and #3926 is merged.
This commit is contained in:
flip1995 2019-04-12 10:58:25 +02:00
parent 6104aefef5
commit 3fe5eea4e4
No known key found for this signature in database
GPG key ID: 01C836B640FFDFB1
2 changed files with 7 additions and 9 deletions

View file

@ -16,7 +16,7 @@ use std::convert::TryInto;
use std::hash::{Hash, Hasher};
use syntax::ast::{FloatTy, LitKind};
use syntax::ptr::P;
use syntax_pos::symbol::Symbol;
use syntax_pos::symbol::{LocalInternedString, Symbol};
/// A `LitKind`-like enum to fold constant `Expr`s into.
#[derive(Debug, Clone)]
@ -249,7 +249,10 @@ impl<'c, 'cc> ConstEvalLateContext<'c, 'cc> {
if let ExprKind::Path(qpath) = &callee.node;
let def = self.tables.qpath_def(qpath, callee.hir_id);
if let Some(def_id) = def.opt_def_id();
let def_path = get_def_path(self.tcx, def_id);
let def_path = get_def_path(self.tcx, def_id)
.iter()
.map(LocalInternedString::get)
.collect::<Vec<_>>();
if let &["core", "num", impl_ty, "max_value"] = &def_path[..];
then {
let value = match impl_ty {

View file

@ -220,13 +220,8 @@ pub fn match_def_path<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, def_id: DefId, path
/// // The given `def_id` is that of an `Option` type
/// };
/// ```
pub fn get_def_path<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, def_id: DefId) -> Vec<&'static str> {
AbsolutePathPrinter { tcx }
.print_def_path(def_id, &[])
.unwrap()
.iter()
.map(LocalInternedString::get)
.collect()
pub fn get_def_path<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, def_id: DefId) -> Vec<LocalInternedString> {
AbsolutePathPrinter { tcx }.print_def_path(def_id, &[]).unwrap()
}
/// Checks if type is struct, enum or union type with the given def path.