Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
600607f
Move `search_for_adt_without_structural_match` to `ty/mod`
varkor Oct 20, 2019
bbd53de
Forbid non-`structural_match` types in const generics
varkor Oct 20, 2019
133cd2c
Search for generic parameters when finding non-`structural_match` types
varkor Oct 20, 2019
f0e6cd9
Remove "type parameter depends on const parameter" error from resolution
varkor Oct 20, 2019
9f788f3
Fix rustdoc const generics test
varkor Oct 21, 2019
7f13a4a
Remove FIXME
varkor Oct 22, 2019
2dda8ad
Use E0741 for structural match error
varkor Oct 22, 2019
fe3dc31
Update cargo
ehuss Oct 22, 2019
eb6d757
UI failures fix
Oct 21, 2019
8467cef
Tweak format string error to point at arguments always
estebank Oct 24, 2019
18d873e
Avoid ICE when adjusting bad self ty
estebank Oct 24, 2019
060b6cb
Update hashbrown to 0.6.2
alexcrichton Oct 24, 2019
184a61f
Don't assert for different instance on impl trait alias
csmoe Oct 24, 2019
2c16f84
rustc_driver: Remove unnecessary use of crate store
petrochenkov Oct 16, 2019
2cda75c
rustc_metadata: Remove unnecessary use of crate store in plugin loader
petrochenkov Oct 16, 2019
175d325
rustc_metadata: Move some code around
petrochenkov Oct 17, 2019
222503a
rustc: Add a convenience alias for `dyn MetadataLoader + Sync`
petrochenkov Oct 17, 2019
fb353f0
resolve: Privatize all resolver fields
petrochenkov Oct 19, 2019
5fd796a
rustc: Combine resolver outputs into a single struct
petrochenkov Oct 20, 2019
3534ca8
Turn crate store into a resolver output
petrochenkov Oct 20, 2019
c5fee33
rustc_metadata: Remove `RwLock` from `CStore`
petrochenkov Oct 20, 2019
9f5a530
rustc_metadata: Minimize use of `Lrc` in crate store
petrochenkov Oct 20, 2019
94216ce
rustc_interface: Remove `ExpansionResult` and some `Steal`s
petrochenkov Oct 21, 2019
cdb7634
Rollup merge of #65625 - petrochenkov:cstore, r=Mark-Simulacrum,Zoxc
Centril Oct 24, 2019
9c04bd1
Rollup merge of #65627 - varkor:const-generics-forbid-non-structural_…
Centril Oct 24, 2019
0da94a4
Rollup merge of #65710 - ehuss:update-cargo, r=alexcrichton
Centril Oct 24, 2019
efa5037
Rollup merge of #65729 - Wind-River:master_003, r=alexcrichton
Centril Oct 24, 2019
1e4a2ee
Rollup merge of #65746 - estebank:newcomer-format, r=Centril
Centril Oct 24, 2019
1b03671
Rollup merge of #65753 - csmoe:derive_fold, r=Centril
Centril Oct 24, 2019
7b3896f
Rollup merge of #65755 - estebank:icicle, r=davidtwco
Centril Oct 24, 2019
fd6795b
Rollup merge of #65766 - alexcrichton:less-inline-hashbrown, r=Mark-S…
Centril Oct 24, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
rustc_interface: Remove ExpansionResult and some Steals
  • Loading branch information
petrochenkov committed Oct 24, 2019
commit 94216ce3adfdb7d6c206505fca736d274a98ad2b
25 changes: 4 additions & 21 deletions src/librustc_interface/passes.rs
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ fn count_nodes(krate: &ast::Crate) -> usize {
declare_box_region_type!(
pub BoxedResolver,
for(),
(&mut Resolver<'_>) -> (Result<ast::Crate>, ExpansionResult)
(&mut Resolver<'_>) -> (Result<ast::Crate>, ResolverOutputs)
);

/// Runs the "early phases" of the compiler: initial `cfg` processing,
Expand Down Expand Up @@ -149,33 +149,16 @@ pub fn configure_and_expand(
}
};
box_region_allow_access!(for(), (&mut Resolver<'_>), (&mut resolver));
ExpansionResult::from_resolver_outputs(resolver.into_outputs())
resolver.into_outputs()
});
result.map(|k| (k, resolver))
}

pub struct ExpansionResult {
pub resolver_outputs: Steal<ResolverOutputs>,
}

impl ExpansionResult {
fn from_resolver_outputs(resolver_outputs: ResolverOutputs) -> Self {
ExpansionResult { resolver_outputs: Steal::new(resolver_outputs) }
}
}

impl BoxedResolver {
pub fn to_expansion_result(
resolver: Rc<RefCell<BoxedResolver>>,
) -> ExpansionResult {
pub fn to_resolver_outputs(resolver: Rc<RefCell<BoxedResolver>>) -> ResolverOutputs {
match Rc::try_unwrap(resolver) {
Ok(resolver) => resolver.into_inner().complete(),
Err(resolver) => {
let resolver = &*resolver;
resolver.borrow_mut().access(|resolver| {
ExpansionResult::from_resolver_outputs(resolver.clone_outputs())
})
}
Err(resolver) => resolver.borrow_mut().access(|resolver| resolver.clone_outputs()),
}
}
}
Expand Down
17 changes: 10 additions & 7 deletions src/librustc_interface/queries.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use crate::interface::{Compiler, Result};
use crate::passes::{self, BoxedResolver, ExpansionResult, BoxedGlobalCtxt, PluginInfo};
use crate::passes::{self, BoxedResolver, BoxedGlobalCtxt, PluginInfo};

use rustc_incremental::DepGraphFuture;
use rustc_data_structures::sync::Lrc;
Expand All @@ -11,6 +11,7 @@ use rustc::session::Session;
use rustc::lint::LintStore;
use rustc::hir::def_id::LOCAL_CRATE;
use rustc::ty::steal::Steal;
use rustc::ty::ResolverOutputs;
use rustc::dep_graph::DepGraph;
use std::cell::{Ref, RefMut, RefCell};
use std::rc::Rc;
Expand Down Expand Up @@ -81,7 +82,7 @@ pub(crate) struct Queries {
register_plugins: Query<(ast::Crate, PluginInfo, Lrc<LintStore>)>,
expansion: Query<(ast::Crate, Steal<Rc<RefCell<BoxedResolver>>>, Lrc<LintStore>)>,
dep_graph: Query<DepGraph>,
lower_to_hir: Query<(Steal<hir::map::Forest>, ExpansionResult)>,
lower_to_hir: Query<(Steal<hir::map::Forest>, Steal<ResolverOutputs>)>,
prepare_outputs: Query<OutputFilenames>,
global_ctxt: Query<BoxedGlobalCtxt>,
ongoing_codegen: Query<Box<dyn Any>>,
Expand Down Expand Up @@ -191,7 +192,9 @@ impl Compiler {
})
}

pub fn lower_to_hir(&self) -> Result<&Query<(Steal<hir::map::Forest>, ExpansionResult)>> {
pub fn lower_to_hir(
&self,
) -> Result<&Query<(Steal<hir::map::Forest>, Steal<ResolverOutputs>)>> {
self.queries.lower_to_hir.compute(|| {
let expansion_result = self.expansion()?;
let peeked = expansion_result.peek();
Expand All @@ -207,14 +210,14 @@ impl Compiler {
&krate
)
})?);
Ok((hir, BoxedResolver::to_expansion_result(resolver)))
Ok((hir, Steal::new(BoxedResolver::to_resolver_outputs(resolver))))
})
}

pub fn prepare_outputs(&self) -> Result<&Query<OutputFilenames>> {
self.queries.prepare_outputs.compute(|| {
let expansion_result = self.expansion()?;
let (krate, boxed_resolver) = &*expansion_result.peek();
let (krate, boxed_resolver, _) = &*expansion_result.peek();
let crate_name = self.crate_name()?;
let crate_name = crate_name.peek();
passes::prepare_outputs(self.session(), self, &krate, &boxed_resolver, &crate_name)
Expand All @@ -228,12 +231,12 @@ impl Compiler {
let lint_store = self.expansion()?.peek().2.clone();
let hir = self.lower_to_hir()?;
let hir = hir.peek();
let (ref hir_forest, ref expansion) = *hir;
let (hir_forest, resolver_outputs) = &*hir;
Ok(passes::create_global_ctxt(
self,
lint_store,
hir_forest.steal(),
expansion.resolver_outputs.steal(),
resolver_outputs.steal(),
outputs,
&crate_name))
})
Expand Down