Skip to content

Rollup of 18 pull requests #32495

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 53 commits into from
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
4124466
std: Fix inheriting stdin on status()
alexcrichton Mar 15, 2016
bb43f58
Document heap allocation location guarantee
aidanhs Mar 20, 2016
bef69a1
std: Add regression test for #32074
alexcrichton Mar 21, 2016
3ee841c
Don't loop forever on error recovery with EOF
nrc Mar 18, 2016
2731dc1
Error recovery in the tokeniser
nrc Mar 22, 2016
0950dc3
Remove ungrammatical dots from the error index.
nodakai Mar 23, 2016
be87650
Add augmented assignment operator impls for time types
sfackler Mar 23, 2016
80e7a1b
Mark str::split_at inline
bluss Mar 23, 2016
f621193
Accept 0 as a valid str char boundary
bluss Mar 23, 2016
180d6b5
Tests
nrc Mar 22, 2016
2c48214
doc: remove needless bindings
tshepang Mar 22, 2016
ed28247
configure: update required LLVM version
cardoe Mar 24, 2016
7124ea4
remove broken config
steveklabnik Mar 24, 2016
8d4b1d1
Introduce name resolution fallback for primitive types
petrochenkov Mar 8, 2016
77f033b
Lift the restriction on reusing names of primitive types
petrochenkov Mar 8, 2016
b418cd2
Cleanup
petrochenkov Mar 10, 2016
78495d5
Fix unsound behaviour with null characters in thread names (issue #32…
diwic Mar 25, 2016
5bc2868
make `const_expr_to_pat` fallible (but never have it actually fail)
nikomatsakis Feb 3, 2016
99c2a6b
modify #[deriving(Eq)] to emit #[structural_match]
nikomatsakis Mar 11, 2016
05baf64
do not overwrite spans as eagerly
nikomatsakis Mar 11, 2016
f69eb8e
issue a future-compat lint for constants of invalid type
nikomatsakis Mar 11, 2016
73b4f06
suppress duplicate lints
nikomatsakis Mar 11, 2016
56ebf2b
fallout in existing tests
nikomatsakis Mar 11, 2016
7f661ec
new tests for RFC #1445
nikomatsakis Mar 11, 2016
93e4443
check for both partialeq and eq
nikomatsakis Mar 25, 2016
6ce63fb
Add note on `str` being an unsized type in strings section of book.
xevix Mar 25, 2016
b9a2311
rustc: move middle::subst into middle::ty.
eddyb Mar 22, 2016
a6f69f1
rustc: move cfg, infer, traits and ty from middle to top-level.
eddyb Mar 22, 2016
00e77be
rustc_trans: move save to librustc_save_analysis.
eddyb Mar 22, 2016
7eb0547
rustc_trans: move the contents of the trans module to top-level.
eddyb Mar 22, 2016
c7049f6
Fix the name of the 'check-cargotest' step
brson Mar 25, 2016
944dc4a
fix cargo.toml for new dependency
nikomatsakis Mar 25, 2016
2536ae5
fix error message
nikomatsakis Mar 25, 2016
88ab938
Avoid page reload upon hitting "S" when browing in local mode
Mar 25, 2016
a755a67
std: Rewrite Once with poisoning
alexcrichton Mar 18, 2016
eac55c2
Rollup merge of #32131 - petrochenkov:prim, r=eddyb
Manishearth Mar 26, 2016
1bf8d69
Rollup merge of #32199 - nikomatsakis:limiting-constants-in-patterns-…
Manishearth Mar 26, 2016
0274432
Rollup merge of #32257 - alexcrichton:fix-status-stdin, r=aturon
Manishearth Mar 26, 2016
9f2e0a6
Rollup merge of #32325 - alexcrichton:panic-once, r=aturon
Manishearth Mar 26, 2016
b27d113
Rollup merge of #32383 - aidanhs:aphs-heap-move-guarantee, r=alexcric…
Manishearth Mar 26, 2016
276d658
Rollup merge of #32387 - alexcrichton:ascii-test, r=aturon
Manishearth Mar 26, 2016
7b76b22
Rollup merge of #32432 - eddyb:dock-service, r=nikomatsakis
Manishearth Mar 26, 2016
92929be
Rollup merge of #32435 - nrc:fix-err-recover, r=nikomatsakis
Manishearth Mar 26, 2016
b6b2dbd
Rollup merge of #32440 - tshepang:compact, r=steveklabnik
Manishearth Mar 26, 2016
c5e3577
Rollup merge of #32447 - nodakai:dots-in-err-idx, r=Manishearth
Manishearth Mar 26, 2016
f6001ce
Rollup merge of #32448 - sfackler:time-augmented-assignment, r=alexcr…
Manishearth Mar 26, 2016
2e0dad7
Rollup merge of #32456 - bluss:str-zero, r=alexcrichton
Manishearth Mar 26, 2016
af2f001
Rollup merge of #32468 - cardoe:llvm-check, r=alexcrichton
Manishearth Mar 26, 2016
ab0f652
Rollup merge of #32470 - rust-lang:steveklabnik-patch-1, r=alexcrichton
Manishearth Mar 26, 2016
71fa130
Rollup merge of #32476 - diwic:63-null-thread-name, r=alexcrichton
Manishearth Mar 26, 2016
707517e
Rollup merge of #32478 - xevix:docs/strings-str-unsized-types, r=stev…
Manishearth Mar 26, 2016
49a9137
Rollup merge of #32484 - brson:cargotest, r=alexcrichton
Manishearth Mar 26, 2016
17ea3e8
Rollup merge of #32492 - xitep:master, r=alexcrichton
Manishearth Mar 26, 2016
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
do not overwrite spans as eagerly
this was required to preserve the span from
the #[structural_match] attribute -- but honestly
I am not 100% sure if it makes sense.
  • Loading branch information
nikomatsakis committed Mar 25, 2016
commit 05baf645e47a0ed3893f2413696e56be180249ff
25 changes: 25 additions & 0 deletions src/libsyntax/codemap.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1304,6 +1304,31 @@ impl CodeMap {
return a;
}

/// Check if the backtrace `subtrace` contains `suptrace` as a prefix.
pub fn more_specific_trace(&self,
mut subtrace: ExpnId,
suptrace: ExpnId)
-> bool {
loop {
if subtrace == suptrace {
return true;
}

let stop = self.with_expn_info(subtrace, |opt_expn_info| {
if let Some(expn_info) = opt_expn_info {
subtrace = expn_info.call_site.expn_id;
false
} else {
true
}
});

if stop {
return false;
}
}
}

pub fn record_expansion(&self, expn_info: ExpnInfo) -> ExpnId {
let mut expansions = self.expansions.borrow_mut();
expansions.push(expn_info);
Expand Down
42 changes: 36 additions & 6 deletions src/libsyntax/ext/expand.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ use visit::Visitor;
use std_inject;

use std::collections::HashSet;

use std::env;

pub fn expand_expr(e: P<ast::Expr>, fld: &mut MacroExpander) -> P<ast::Expr> {
let expr_span = e.span;
Expand Down Expand Up @@ -1275,11 +1275,41 @@ impl<'a, 'b> MacroExpander<'a, 'b> {
}

fn new_span(cx: &ExtCtxt, sp: Span) -> Span {
/* this discards information in the case of macro-defining macros */
Span {
lo: sp.lo,
hi: sp.hi,
expn_id: cx.backtrace(),
debug!("new_span(sp={:?})", sp);

if cx.codemap().more_specific_trace(sp.expn_id, cx.backtrace()) {
// If the span we are looking at has a backtrace that has more
// detail than our current backtrace, then we keep that
// backtrace. Honestly, I have no idea if this makes sense,
// because I have no idea why we are stripping the backtrace
// below. But the reason I made this change is because, in
// deriving, we were generating attributes with a specific
// backtrace, which was essential for `#[structural_match]` to
// be properly supported, but these backtraces were being
// stripped and replaced with a null backtrace. Sort of
// unclear why this is the case. --nmatsakis
debug!("new_span: keeping trace from {:?} because it is more specific",
sp.expn_id);
sp
} else {
// This discards information in the case of macro-defining macros.
//
// The comment above was originally added in
// b7ec2488ff2f29681fe28691d20fd2c260a9e454 in Feb 2012. I
// *THINK* the reason we are doing this is because we want to
// replace the backtrace of the macro contents with the
// backtrace that contains the macro use. But it's pretty
// unclear to me. --nmatsakis
let sp1 = Span {
lo: sp.lo,
hi: sp.hi,
expn_id: cx.backtrace(),
};
debug!("new_span({:?}) = {:?}", sp, sp1);
if sp.expn_id.into_u32() == 0 && env::var_os("NDM").is_some() {
panic!("NDM");
}
sp1
}
}

Expand Down