rustc_back: remove slice module in favor of std::slice::from_ref.

This commit is contained in:
Irina-Gabriela Popa 2017-11-23 16:41:51 +02:00
parent fdfbcf85d5
commit d6f70359dc
17 changed files with 28 additions and 54 deletions

3
src/Cargo.lock generated
View file

@ -1687,7 +1687,6 @@ dependencies = [
"graphviz 0.0.0", "graphviz 0.0.0",
"log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc 0.0.0", "rustc 0.0.0",
"rustc_back 0.0.0",
"rustc_errors 0.0.0", "rustc_errors 0.0.0",
"rustc_mir 0.0.0", "rustc_mir 0.0.0",
"syntax 0.0.0", "syntax 0.0.0",
@ -1701,7 +1700,6 @@ dependencies = [
"arena 0.0.0", "arena 0.0.0",
"log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc 0.0.0", "rustc 0.0.0",
"rustc_back 0.0.0",
"rustc_const_math 0.0.0", "rustc_const_math 0.0.0",
"rustc_data_structures 0.0.0", "rustc_data_structures 0.0.0",
"rustc_errors 0.0.0", "rustc_errors 0.0.0",
@ -1999,7 +1997,6 @@ dependencies = [
"fmt_macros 0.0.0", "fmt_macros 0.0.0",
"log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc 0.0.0", "rustc 0.0.0",
"rustc_back 0.0.0",
"rustc_const_math 0.0.0", "rustc_const_math 0.0.0",
"rustc_data_structures 0.0.0", "rustc_data_structures 0.0.0",
"rustc_errors 0.0.0", "rustc_errors 0.0.0",

View file

@ -46,6 +46,7 @@
#![feature(const_fn)] #![feature(const_fn)]
#![feature(core_intrinsics)] #![feature(core_intrinsics)]
#![feature(drain_filter)] #![feature(drain_filter)]
#![feature(from_ref)]
#![feature(i128)] #![feature(i128)]
#![feature(i128_type)] #![feature(i128_type)]
#![feature(inclusive_range)] #![feature(inclusive_range)]

View file

@ -26,7 +26,7 @@
use self::TargetLint::*; use self::TargetLint::*;
use rustc_back::slice; use std::slice;
use lint::{EarlyLintPassObject, LateLintPassObject}; use lint::{EarlyLintPassObject, LateLintPassObject};
use lint::{Level, Lint, LintId, LintPass, LintBuffer}; use lint::{Level, Lint, LintId, LintPass, LintBuffer};
use lint::levels::{LintLevelSets, LintLevelsBuilder}; use lint::levels::{LintLevelSets, LintLevelsBuilder};
@ -308,7 +308,7 @@ impl LintStore {
Some(ids) => CheckLintNameResult::Ok(&ids.0), Some(ids) => CheckLintNameResult::Ok(&ids.0),
} }
} }
Some(&Id(ref id)) => CheckLintNameResult::Ok(slice::ref_slice(id)), Some(&Id(ref id)) => CheckLintNameResult::Ok(slice::from_ref(id)),
} }
} }
} }

View file

@ -31,7 +31,7 @@ use syntax_pos::Span;
use errors::DiagnosticBuilder; use errors::DiagnosticBuilder;
use util::common::ErrorReported; use util::common::ErrorReported;
use util::nodemap::{NodeMap, NodeSet, FxHashSet, FxHashMap, DefIdMap}; use util::nodemap::{NodeMap, NodeSet, FxHashSet, FxHashMap, DefIdMap};
use rustc_back::slice; use std::slice;
use hir; use hir;
use hir::intravisit::{self, Visitor, NestedVisitorMap}; use hir::intravisit::{self, Visitor, NestedVisitorMap};
@ -530,7 +530,7 @@ impl<'a, 'tcx> Visitor<'tcx> for LifetimeContext<'a, 'tcx> {
fn visit_lifetime(&mut self, lifetime_ref: &'tcx hir::Lifetime) { fn visit_lifetime(&mut self, lifetime_ref: &'tcx hir::Lifetime) {
if lifetime_ref.is_elided() { if lifetime_ref.is_elided() {
self.resolve_elided_lifetimes(slice::ref_slice(lifetime_ref)); self.resolve_elided_lifetimes(slice::from_ref(lifetime_ref));
return; return;
} }
if lifetime_ref.is_static() { if lifetime_ref.is_static() {

View file

@ -25,7 +25,7 @@ use ty::subst::{Subst, Substs};
use ty::{self, AdtDef, ClosureSubsts, Region, Ty, TyCtxt, GeneratorInterior}; use ty::{self, AdtDef, ClosureSubsts, Region, Ty, TyCtxt, GeneratorInterior};
use ty::fold::{TypeFoldable, TypeFolder, TypeVisitor}; use ty::fold::{TypeFoldable, TypeFolder, TypeVisitor};
use util::ppaux; use util::ppaux;
use rustc_back::slice; use std::slice;
use hir::{self, InlineAsm}; use hir::{self, InlineAsm};
use std::ascii; use std::ascii;
use std::borrow::{Cow}; use std::borrow::{Cow};
@ -754,28 +754,28 @@ impl<'tcx> TerminatorKind<'tcx> {
pub fn successors(&self) -> Cow<[BasicBlock]> { pub fn successors(&self) -> Cow<[BasicBlock]> {
use self::TerminatorKind::*; use self::TerminatorKind::*;
match *self { match *self {
Goto { target: ref b } => slice::ref_slice(b).into_cow(), Goto { target: ref b } => slice::from_ref(b).into_cow(),
SwitchInt { targets: ref b, .. } => b[..].into_cow(), SwitchInt { targets: ref b, .. } => b[..].into_cow(),
Resume | GeneratorDrop => (&[]).into_cow(), Resume | GeneratorDrop => (&[]).into_cow(),
Return => (&[]).into_cow(), Return => (&[]).into_cow(),
Unreachable => (&[]).into_cow(), Unreachable => (&[]).into_cow(),
Call { destination: Some((_, t)), cleanup: Some(c), .. } => vec![t, c].into_cow(), Call { destination: Some((_, t)), cleanup: Some(c), .. } => vec![t, c].into_cow(),
Call { destination: Some((_, ref t)), cleanup: None, .. } => Call { destination: Some((_, ref t)), cleanup: None, .. } =>
slice::ref_slice(t).into_cow(), slice::from_ref(t).into_cow(),
Call { destination: None, cleanup: Some(ref c), .. } => slice::ref_slice(c).into_cow(), Call { destination: None, cleanup: Some(ref c), .. } => slice::from_ref(c).into_cow(),
Call { destination: None, cleanup: None, .. } => (&[]).into_cow(), Call { destination: None, cleanup: None, .. } => (&[]).into_cow(),
Yield { resume: t, drop: Some(c), .. } => vec![t, c].into_cow(), Yield { resume: t, drop: Some(c), .. } => vec![t, c].into_cow(),
Yield { resume: ref t, drop: None, .. } => slice::ref_slice(t).into_cow(), Yield { resume: ref t, drop: None, .. } => slice::from_ref(t).into_cow(),
DropAndReplace { target, unwind: Some(unwind), .. } | DropAndReplace { target, unwind: Some(unwind), .. } |
Drop { target, unwind: Some(unwind), .. } => { Drop { target, unwind: Some(unwind), .. } => {
vec![target, unwind].into_cow() vec![target, unwind].into_cow()
} }
DropAndReplace { ref target, unwind: None, .. } | DropAndReplace { ref target, unwind: None, .. } |
Drop { ref target, unwind: None, .. } => { Drop { ref target, unwind: None, .. } => {
slice::ref_slice(target).into_cow() slice::from_ref(target).into_cow()
} }
Assert { target, cleanup: Some(unwind), .. } => vec![target, unwind].into_cow(), Assert { target, cleanup: Some(unwind), .. } => vec![target, unwind].into_cow(),
Assert { ref target, .. } => slice::ref_slice(target).into_cow(), Assert { ref target, .. } => slice::from_ref(target).into_cow(),
FalseEdges { ref real_target, ref imaginary_targets } => { FalseEdges { ref real_target, ref imaginary_targets } => {
let mut s = vec![*real_target]; let mut s = vec![*real_target];
s.extend_from_slice(imaginary_targets); s.extend_from_slice(imaginary_targets);

View file

@ -40,7 +40,6 @@ extern crate serialize as rustc_serialize; // used by deriving
pub mod tempdir; pub mod tempdir;
pub mod target; pub mod target;
pub mod slice;
pub mod dynamic_lib; pub mod dynamic_lib;
use std::str::FromStr; use std::str::FromStr;

View file

@ -1,19 +0,0 @@
// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.
use std::mem;
pub fn ref_slice<T>(ptr: &T) -> &[T; 1] {
unsafe { mem::transmute(ptr) }
}
pub fn mut_ref_slice<T>(ptr: &mut T) -> &mut [T; 1] {
unsafe { mem::transmute(ptr) }
}

View file

@ -15,6 +15,5 @@ syntax = { path = "../libsyntax" }
syntax_pos = { path = "../libsyntax_pos" } syntax_pos = { path = "../libsyntax_pos" }
graphviz = { path = "../libgraphviz" } graphviz = { path = "../libgraphviz" }
rustc = { path = "../librustc" } rustc = { path = "../librustc" }
rustc_back = { path = "../librustc_back" }
rustc_mir = { path = "../librustc_mir" } rustc_mir = { path = "../librustc_mir" }
rustc_errors = { path = "../librustc_errors" } rustc_errors = { path = "../librustc_errors" }

View file

@ -13,7 +13,7 @@ use rustc::hir::{self, HirId};
use rustc::lint::builtin::UNUSED_MUT; use rustc::lint::builtin::UNUSED_MUT;
use rustc::ty; use rustc::ty;
use rustc::util::nodemap::{FxHashMap, FxHashSet}; use rustc::util::nodemap::{FxHashMap, FxHashSet};
use rustc_back::slice; use std::slice;
use syntax::ptr::P; use syntax::ptr::P;
use borrowck::BorrowckCtxt; use borrowck::BorrowckCtxt;
@ -26,7 +26,7 @@ pub fn check<'a, 'tcx>(bccx: &BorrowckCtxt<'a, 'tcx>, body: &'tcx hir::Body) {
}.visit_expr(&body.value); }.visit_expr(&body.value);
let mut cx = UnusedMutCx { bccx, used_mut }; let mut cx = UnusedMutCx { bccx, used_mut };
for arg in body.arguments.iter() { for arg in body.arguments.iter() {
cx.check_unused_mut_pat(slice::ref_slice(&arg.pat)); cx.check_unused_mut_pat(slice::from_ref(&arg.pat));
} }
cx.visit_expr(&body.value); cx.visit_expr(&body.value);
} }
@ -101,7 +101,7 @@ impl<'a, 'tcx> Visitor<'tcx> for UnusedMutCx<'a, 'tcx> {
} }
fn visit_local(&mut self, local: &hir::Local) { fn visit_local(&mut self, local: &hir::Local) {
self.check_unused_mut_pat(slice::ref_slice(&local.pat)); self.check_unused_mut_pat(slice::from_ref(&local.pat));
} }
} }

View file

@ -15,6 +15,7 @@
#![allow(non_camel_case_types)] #![allow(non_camel_case_types)]
#![feature(from_ref)]
#![feature(match_default_bindings)] #![feature(match_default_bindings)]
#![feature(quote)] #![feature(quote)]
@ -22,7 +23,6 @@
extern crate syntax; extern crate syntax;
extern crate syntax_pos; extern crate syntax_pos;
extern crate rustc_errors as errors; extern crate rustc_errors as errors;
extern crate rustc_back;
// for "clarity", rename the graphviz crate to dot; graphviz within `borrowck` // for "clarity", rename the graphviz crate to dot; graphviz within `borrowck`
// refers to the borrowck-specific graphviz adapter traits. // refers to the borrowck-specific graphviz adapter traits.

View file

@ -12,7 +12,6 @@ crate-type = ["dylib"]
arena = { path = "../libarena" } arena = { path = "../libarena" }
log = "0.3" log = "0.3"
rustc = { path = "../librustc" } rustc = { path = "../librustc" }
rustc_back = { path = "../librustc_back" }
rustc_const_math = { path = "../librustc_const_math" } rustc_const_math = { path = "../librustc_const_math" }
rustc_data_structures = { path = "../librustc_data_structures" } rustc_data_structures = { path = "../librustc_data_structures" }
rustc_errors = { path = "../librustc_errors" } rustc_errors = { path = "../librustc_errors" }

View file

@ -31,7 +31,7 @@ use rustc::hir::def_id::DefId;
use rustc::hir::intravisit::{self, Visitor, NestedVisitorMap}; use rustc::hir::intravisit::{self, Visitor, NestedVisitorMap};
use rustc::hir::{self, Pat, PatKind}; use rustc::hir::{self, Pat, PatKind};
use rustc_back::slice; use std::slice;
use syntax::ast; use syntax::ast;
use syntax::ptr::P; use syntax::ptr::P;
@ -114,7 +114,7 @@ impl<'a, 'tcx> Visitor<'tcx> for MatchVisitor<'a, 'tcx> {
}); });
// Check legality of move bindings and `@` patterns. // Check legality of move bindings and `@` patterns.
self.check_patterns(false, slice::ref_slice(&loc.pat)); self.check_patterns(false, slice::from_ref(&loc.pat));
} }
fn visit_body(&mut self, body: &'tcx hir::Body) { fn visit_body(&mut self, body: &'tcx hir::Body) {
@ -122,7 +122,7 @@ impl<'a, 'tcx> Visitor<'tcx> for MatchVisitor<'a, 'tcx> {
for arg in &body.arguments { for arg in &body.arguments {
self.check_irrefutable(&arg.pat, "function argument"); self.check_irrefutable(&arg.pat, "function argument");
self.check_patterns(false, slice::ref_slice(&arg.pat)); self.check_patterns(false, slice::from_ref(&arg.pat));
} }
} }
} }

View file

@ -24,12 +24,12 @@
#![feature(box_patterns)] #![feature(box_patterns)]
#![feature(box_syntax)] #![feature(box_syntax)]
#![feature(i128_type)] #![feature(i128_type)]
#![feature(from_ref)]
extern crate arena; extern crate arena;
#[macro_use] extern crate syntax; #[macro_use] extern crate syntax;
#[macro_use] extern crate log; #[macro_use] extern crate log;
#[macro_use] extern crate rustc; #[macro_use] extern crate rustc;
extern crate rustc_back;
extern crate rustc_const_math; extern crate rustc_const_math;
extern crate rustc_data_structures; extern crate rustc_data_structures;
extern crate rustc_errors; extern crate rustc_errors;

View file

@ -15,7 +15,6 @@ syntax = { path = "../libsyntax" }
arena = { path = "../libarena" } arena = { path = "../libarena" }
fmt_macros = { path = "../libfmt_macros" } fmt_macros = { path = "../libfmt_macros" }
rustc = { path = "../librustc" } rustc = { path = "../librustc" }
rustc_back = { path = "../librustc_back" }
rustc_const_math = { path = "../librustc_const_math" } rustc_const_math = { path = "../librustc_const_math" }
rustc_data_structures = { path = "../librustc_data_structures" } rustc_data_structures = { path = "../librustc_data_structures" }
rustc_platform_intrinsics = { path = "../librustc_platform_intrinsics" } rustc_platform_intrinsics = { path = "../librustc_platform_intrinsics" }

View file

@ -23,7 +23,7 @@ use rustc::ty::subst::{Kind, Subst, Substs};
use rustc::traits; use rustc::traits;
use rustc::ty::{self, RegionKind, Ty, TyCtxt, ToPredicate, TypeFoldable}; use rustc::ty::{self, RegionKind, Ty, TyCtxt, ToPredicate, TypeFoldable};
use rustc::ty::wf::object_region_bounds; use rustc::ty::wf::object_region_bounds;
use rustc_back::slice; use std::slice;
use require_c_abi_if_variadic; use require_c_abi_if_variadic;
use util::common::ErrorReported; use util::common::ErrorReported;
use util::nodemap::FxHashSet; use util::nodemap::FxHashSet;
@ -782,7 +782,7 @@ impl<'o, 'gcx: 'tcx, 'tcx> AstConv<'gcx, 'tcx>+'o {
debug!("associated_path_def_to_ty: {:?}::{}", ty, assoc_name); debug!("associated_path_def_to_ty: {:?}::{}", ty, assoc_name);
self.prohibit_type_params(slice::ref_slice(item_segment)); self.prohibit_type_params(slice::from_ref(item_segment));
// Find the type of the associated item, and the trait where the associated // Find the type of the associated item, and the trait where the associated
// item is declared. // item is declared.
@ -859,7 +859,7 @@ impl<'o, 'gcx: 'tcx, 'tcx> AstConv<'gcx, 'tcx>+'o {
let tcx = self.tcx(); let tcx = self.tcx();
let trait_def_id = tcx.parent_def_id(item_def_id).unwrap(); let trait_def_id = tcx.parent_def_id(item_def_id).unwrap();
self.prohibit_type_params(slice::ref_slice(item_segment)); self.prohibit_type_params(slice::from_ref(item_segment));
let self_ty = if let Some(ty) = opt_self_ty { let self_ty = if let Some(ty) = opt_self_ty {
ty ty

View file

@ -87,7 +87,7 @@ use self::TupleArgumentsFlag::*;
use astconv::AstConv; use astconv::AstConv;
use hir::def::{Def, CtorKind}; use hir::def::{Def, CtorKind};
use hir::def_id::{CrateNum, DefId, LOCAL_CRATE}; use hir::def_id::{CrateNum, DefId, LOCAL_CRATE};
use rustc_back::slice::ref_slice; use std::slice;
use namespace::Namespace; use namespace::Namespace;
use rustc::infer::{self, InferCtxt, InferOk, RegionVariableOrigin}; use rustc::infer::{self, InferCtxt, InferOk, RegionVariableOrigin};
use rustc::infer::type_variable::{TypeVariableOrigin}; use rustc::infer::type_variable::{TypeVariableOrigin};
@ -130,7 +130,6 @@ use rustc::hir::itemlikevisit::ItemLikeVisitor;
use rustc::hir::map::Node; use rustc::hir::map::Node;
use rustc::hir::{self, PatKind}; use rustc::hir::{self, PatKind};
use rustc::middle::lang_items; use rustc::middle::lang_items;
use rustc_back::slice;
use rustc_const_math::ConstInt; use rustc_const_math::ConstInt;
mod autoderef; mod autoderef;
@ -4168,7 +4167,7 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
if let Some(cached_def) = self.tables.borrow().type_dependent_defs().get(hir_id) { if let Some(cached_def) = self.tables.borrow().type_dependent_defs().get(hir_id) {
// Return directly on cache hit. This is useful to avoid doubly reporting // Return directly on cache hit. This is useful to avoid doubly reporting
// errors with default match binding modes. See #44614. // errors with default match binding modes. See #44614.
return (*cached_def, Some(ty), slice::ref_slice(&**item_segment)) return (*cached_def, Some(ty), slice::from_ref(&**item_segment))
} }
let item_name = item_segment.name; let item_name = item_segment.name;
let def = match self.resolve_ufcs(span, item_name, ty, node_id) { let def = match self.resolve_ufcs(span, item_name, ty, node_id) {
@ -4187,7 +4186,7 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
// Write back the new resolution. // Write back the new resolution.
self.tables.borrow_mut().type_dependent_defs_mut().insert(hir_id, def); self.tables.borrow_mut().type_dependent_defs_mut().insert(hir_id, def);
(def, Some(ty), slice::ref_slice(&**item_segment)) (def, Some(ty), slice::from_ref(&**item_segment))
} }
pub fn check_decl_initializer(&self, pub fn check_decl_initializer(&self,
@ -4325,7 +4324,7 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
CoerceMany::new(coerce_to_ty) CoerceMany::new(coerce_to_ty)
} else { } else {
let tail_expr: &[P<hir::Expr>] = match tail_expr { let tail_expr: &[P<hir::Expr>] = match tail_expr {
Some(e) => ref_slice(e), Some(e) => slice::from_ref(e),
None => &[], None => &[],
}; };
CoerceMany::with_coercion_sites(coerce_to_ty, tail_expr) CoerceMany::with_coercion_sites(coerce_to_ty, tail_expr)

View file

@ -77,6 +77,7 @@ This API is completely unstable and subject to change.
#![feature(box_syntax)] #![feature(box_syntax)]
#![feature(crate_visibility_modifier)] #![feature(crate_visibility_modifier)]
#![feature(conservative_impl_trait)] #![feature(conservative_impl_trait)]
#![feature(from_ref)]
#![feature(match_default_bindings)] #![feature(match_default_bindings)]
#![feature(never_type)] #![feature(never_type)]
#![feature(quote)] #![feature(quote)]
@ -90,7 +91,6 @@ extern crate syntax_pos;
extern crate arena; extern crate arena;
#[macro_use] extern crate rustc; #[macro_use] extern crate rustc;
extern crate rustc_platform_intrinsics as intrinsics; extern crate rustc_platform_intrinsics as intrinsics;
extern crate rustc_back;
extern crate rustc_const_math; extern crate rustc_const_math;
extern crate rustc_data_structures; extern crate rustc_data_structures;
extern crate rustc_errors as errors; extern crate rustc_errors as errors;