Make the crate work both in rustc and locally
This commit is contained in:
parent
615f8c5dbb
commit
9abcb5c7b5
6 changed files with 45 additions and 14 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
target
|
||||
11
Cargo.toml
11
Cargo.toml
|
|
@ -4,7 +4,10 @@ version = "0.0.0"
|
|||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
rustc_middle = { path = "../rustc_middle" }
|
||||
rustc_driver = { path = "../rustc_driver" }
|
||||
rustc_borrowck = { path = "../rustc_borrowck" }
|
||||
rustc_interface = { path = "../rustc_interface" }
|
||||
rustc_middle = { path = "../rustc_middle", optional = true }
|
||||
rustc_driver = { path = "../rustc_driver", optional = true }
|
||||
rustc_borrowck = { path = "../rustc_borrowck", optional = true }
|
||||
rustc_interface = { path = "../rustc_interface", optional = true }
|
||||
|
||||
[features]
|
||||
default = ["rustc_middle", "rustc_driver", "rustc_borrowck", "rustc_interface"]
|
||||
|
|
|
|||
12
README.md
12
README.md
|
|
@ -7,6 +7,18 @@ sync is pushed entirely onto us, without affecting rustc workflows negatively.
|
|||
This may change in the future, but changes to policy should only be done via a
|
||||
compiler team MCP.
|
||||
|
||||
## Instructions for working on this crate locally
|
||||
|
||||
Since the crate is the same in the rustc repo and here, the dependencies on rustc_* crates
|
||||
will only either work here or there, but never in both places at the same time. Thus we use
|
||||
optional dependencies on the rustc_* crates, requiring local development to use
|
||||
|
||||
```
|
||||
cargo build --no-default-features -Zavoid-dev-deps
|
||||
```
|
||||
|
||||
in order to compile successfully.
|
||||
|
||||
## Instructions for syncing
|
||||
|
||||
### Updating this repository
|
||||
|
|
|
|||
|
|
@ -11,6 +11,8 @@
|
|||
test(attr(allow(unused_variables), deny(warnings)))
|
||||
)]
|
||||
|
||||
#![cfg_attr(not(feature = "default"), feature(rustc_private))]
|
||||
|
||||
pub mod mir;
|
||||
|
||||
pub mod very_unstable;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
pub use rustc_middle::mir::{
|
||||
pub use crate::very_unstable::middle::mir::{
|
||||
visit::MutVisitor, AggregateKind, AssertKind, BasicBlock, BasicBlockData, BinOp, BindingForm,
|
||||
BlockTailInfo, Body, BorrowKind, CastKind, ClearCrossCrate, Constant, ConstantKind,
|
||||
CopyNonOverlapping, Coverage, FakeReadCause, Field, GeneratorInfo, ImplicitSelfKind,
|
||||
|
|
|
|||
|
|
@ -3,12 +3,25 @@
|
|||
//! Only use rustc_smir in your dependencies and use the reexports here instead of
|
||||
//! directly referring to the unstable crates.
|
||||
|
||||
pub use rustc_borrowck as borrowck;
|
||||
pub use rustc_driver as driver;
|
||||
pub use rustc_hir as hir;
|
||||
pub use rustc_interface as interface;
|
||||
pub use rustc_middle as middle;
|
||||
pub use rustc_mir_dataflow as dataflow;
|
||||
pub use rustc_mir_transform as transform;
|
||||
pub use rustc_serialize as serialize;
|
||||
pub use rustc_trait_selection as trait_selection;
|
||||
macro_rules! crates {
|
||||
($($rustc_name:ident -> $name:ident,)*) => {
|
||||
$(
|
||||
#[cfg(not(feature = "default"))]
|
||||
pub extern crate $rustc_name as $name;
|
||||
#[cfg(feature = "default")]
|
||||
pub use $rustc_name as $name;
|
||||
)*
|
||||
}
|
||||
}
|
||||
|
||||
crates! {
|
||||
rustc_borrowck -> borrowck,
|
||||
rustc_driver -> driver,
|
||||
rustc_hir -> hir,
|
||||
rustc_interface -> interface,
|
||||
rustc_middle -> middle,
|
||||
rustc_mir_dataflow -> dataflow,
|
||||
rustc_mir_transform -> transform,
|
||||
rustc_serialize -> serialize,
|
||||
rustc_trait_selection -> trait_selection,
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue