mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-21 22:34:05 +00:00
Make the crate work both in rustc and locally
This commit is contained in:
parent
615f8c5dbb
commit
9abcb5c7b5
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…
Reference in New Issue
Block a user