Commit graph

4415 commits

Author SHA1 Message Date
Ryan Prichard
fab3295cba Suppress the macro backtrace for fileline_note and fileline_help. 2015-04-11 16:48:31 -07:00
Ryan Prichard
0f46e4f1f2 Propagate macro backtraces more often, improve formatting diagnostics
* In noop_fold_expr, call new_span in these cases:
    - ExprMethodCall's identifier
    - ExprField's identifier
    - ExprTupField's integer

   Calling new_span for ExprMethodCall's identifier is necessary to print
   an acceptable diagnostic for write!(&2, ""). We see this error:

       <std macros>:2:20: 2:66 error: type `&mut _` does not implement any method in scope named `write_fmt`
       <std macros>:2 ( & mut * $ dst ) . write_fmt ( format_args ! ( $ ( $ arg ) * ) ) )
                                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

   With this change, we also see a macro expansion backtrace leading to
   the write!(&2, "") call site.

 * After fully expanding a macro, we replace the expansion expression's
   span with the original span. Call fld.new_span to add a backtrace to
   this span. (Note that I'm call new_span after bt.pop(), so the macro
   just expanded isn't on the backtrace.)

   The motivating example for this change is println!("{}"). The format
   string literal is concat!($fmt, "arg") and is inside the libstd macro.
   We need to see the backtrace to find the println! call site.

 * Add a backtrace to the format_args! format expression span.

Addresses #23459
2015-04-11 16:00:58 -07:00
Manish Goregaokar
5bbe386a5c Rollup merge of #24242 - nikomatsakis:escaping-closure-error-message, r=brson
Example showing sample inputs, old message, new message:

https://gist.github.com/nikomatsakis/11126784ac678b7eb6ba

Also adds infrastructure for reporting suggestions \"in situ\" and does some (minor) cleanups to `CodeMap`.

r? @brson
2015-04-11 19:04:03 +05:30
bors
0be4e0ec50 Auto merge of #24155 - chris-chambers:stmt_macros, r=sfackler
Statement macros are now treated somewhat like item macros, in that a statement macro can now expand into a series of statements, rather than just a single statement.

This allows statement macros to be nested inside other kinds of macros and expand properly, where previously the expansion would only work when no nesting was present.

See:
- `src/test/run-pass/macro-stmt_macro_in_expr_macro.rs`
- `src/test/run-pass/macro-nested_stmt_macro.rs`

This changes the interface of the MacResult trait.  make_stmt has become make_stmts and now returns a vector, rather than a single item.  Plugin writers who were implementing MacResult will have breakage, as well as anyone using MacEager::stmt.

See:
- `src/libsyntax/ext/base.rs`

This also causes a minor difference in behavior to the diagnostics produced by certain malformed macros.

See:
- `src/test/compile-fail/macro-incomplete-parse.rs`
2015-04-11 08:07:34 +00:00
Christopher Chambers
77627ea8dd Moves expand_stmt's bt_pop so that it balances correctly. 2015-04-11 00:59:00 -05:00
Christopher Chambers
22eb3193a6 Simplifications to statement macro handling.
SmallVector::pop no longer worries about converting a Many repr downward
to One or Zero.

expand_stmt makes use of `if let` for style purposes.
2015-04-10 23:42:40 -05:00
Christopher Chambers
fae29e497c Eliminates a pointless is_empty test. 2015-04-10 22:20:01 -05:00
Christopher Chambers
b16cfacbcc Improves semicolon expansion efficiency, corrects bt_pop placement.
Implements pop() on SmallVector, and uses it to expand the final semicolon
in a statement macro expansion more efficiently.

Corrects the placement of the call to fld.cx.bt_pop().  It must run
unconditionally to reverse the corresponding push.
2015-04-10 21:50:23 -05:00
Felix S. Klock II
847a897fb3 fix some comments. 2015-04-10 19:13:34 +02:00
Felix S. Klock II
781fc902a4 Incorporate repr-attr into deriving(PartialOrd) to avoid truncation errors.
remove out of date fixme.
2015-04-10 19:11:00 +02:00
Felix S. Klock II
afb7acff57 Re-add a fixme after some investigation into what's going on. 2015-04-10 16:32:31 +02:00
Felix S. Klock II
6118795ee1 Change derive expansions to use discriminant_value intrinsic.
Fix #15523.
2015-04-10 16:20:18 +02:00
Niko Matsakis
906a9728ff Add a new span_suggestion infrastructure. This lets you edit a snippet
of text (perhaps obtained by span_snippet) and then splice that edited
form back into the original file in the form of a suggestion.
2015-04-10 06:11:28 -04:00
Niko Matsakis
5156b3a6cd Modify the codemap code to use more slices and to information about
columns within a line, not just the line numbers. Also try to clarify
and use the term `line_index` when 0-based.
2015-04-10 06:11:28 -04:00
Niko Matsakis
16574e3fbd Replace the use of the rather randomly named boolean custom to mean
"highlight end" and instead add a variant to `RenderSpan`
2015-04-10 06:11:28 -04:00
Manish Goregaokar
ede25fe5d1 Rollup merge of #24225 - nrc:for-span, r=pnkfelix 2015-04-10 00:24:45 +05:30
Nick Cameron
341870a2d1 Fix the span for for expressions 2015-04-09 20:36:07 +12:00
Nick Cameron
613cf9a2a1 Debug impls for a few things in syntax::codemap 2015-04-09 18:25:48 +12:00
bors
6436e348e9 Auto merge of #24144 - richo:ptr-formatter, r=alexcrichton
~~I believe this should fix the issue. Opening a PR to ensure noone duplicates effort, I'm running check now.~~

Closes #24091
2015-04-08 22:08:31 +00:00
bors
926f38e588 Auto merge of #23998 - nrc:impl-self, r=nikomatsakis
Closes #23909

r? @nikomatsakis (or anyone else, really)
2015-04-08 09:58:05 +00:00
Richo Healey
a329a61b9b alloc: impl fmt::Pointer for Rc, Arc and Box
Closes #24091
2015-04-07 22:50:36 -07:00
Christopher Chambers
19343860aa Improves handling of statement macros.
Statement macros are now treated somewhat like item macros, in that a
statement macro can now expand into a series of statements, rather than
just a single statement.

This allows statement macros to be nested inside other kinds of macros and
expand properly, where previously the expansion would only work when no
nesting was present.

See: src/test/run-pass/macro-stmt_macro_in_expr_macro.rs
     src/test/run-pass/macro-nested_stmt_macro.rs

This changes the interface of the MacResult trait.  make_stmt has become
make_stmts and now returns a vector, rather than a single item.  Plugin
writers who were implementing MacResult will have breakage, as well as
anyone using MacEager::stmt.

See: src/libsyntax/ext/base.rs

This also causes a minor difference in behavior to the diagnostics
produced by certain malformed macros.

See: src/test/compile-fail/macro-incomplete-parse.rs
2015-04-07 09:29:05 -05:00
Will Hipschman
ab3215406d Provide context for macro expansions which result in unparsed tokens.
Issue #22425
2015-04-06 17:59:58 -07:00
Phil Dawes
e3427c3c34 Add comments suggested by Niko 2015-04-05 09:52:56 +01:00
Phil Dawes
b2bcb7229a Work towards a non-panicing parser (libsyntax)
- Functions in parser.rs return PResult<> rather than panicing
- Other functions in libsyntax call panic! explicitly for now if they rely on panicing behaviour.
- 'panictry!' macro added as scaffolding while converting panicing functions.
  (This does the same as 'unwrap()' but is easier to grep for and turn into try!())
- Leaves panicing wrappers for the following functions so that the
  quote_* macros behave the same:
  - parse_expr, parse_item, parse_pat, parse_arm, parse_ty, parse_stmt
2015-04-05 09:52:50 +01:00
Nick Cameron
dc8a8e9beb Check uses of Self in impls in the compiler rather than during expansion
Closes #23909
2015-04-03 22:47:53 +13:00
bors
5e30f05a05 Auto merge of #23974 - pnkfelix:fix-23973, r=alexcrichton
Do not suggest `#![feature(...)]` if we are in beta or stable channel.

Fix #23973
2015-04-03 01:44:00 +00:00
Felix S. Klock II
9b8957f1d4 Revise logic to match rustc::session::config::get_unstable_features_setting 2015-04-02 17:47:51 +02:00
bors
edac3ce6fb Auto merge of #23877 - richo:gardening, r=Manishearth
I also wanted to unignore https://github.com/rust-lang/rust/blob/master/src/libsyntax/ext/expand.rs#L1768-L1777 since the issue it references is closed, but the test fails, and it's internals aren't super clear to me.
2015-04-02 15:33:22 +00:00
Felix S. Klock II
eaea188d96 Do not suggest #![feature(...)] if we are in beta or stable channel.
Fix #23973
2015-04-02 17:29:22 +02:00
Vadim Petrochenkov
76567a64c1 Fix parsing of patterns in macros 2015-04-02 15:09:43 +03:00
Vadim Petrochenkov
35c1bdb2b4 syntax: Rewrite parsing of patterns 2015-04-02 13:34:26 +03:00
Alex Crichton
e3b7e6caa2 Tweak relese notes + rebase fixes 2015-04-02 00:18:45 -07:00
Alex Crichton
f92e7abefd rollup merge of #23860: nikomatsakis/copy-requires-clone
Conflicts:
	src/test/compile-fail/coherence-impls-copy.rs
2015-04-01 18:37:54 -07:00
Alex Crichton
9edbf42a34 rollup merge of #23945: pnkfelix/gate-u-negate
Feature-gate  unsigned unary negate.

Discussed in weekly meeting here: https://github.com/rust-lang/meeting-minutes/blob/master/weekly-meetings/2015-03-31.md#feature-gate--expr

and also in the internals thread here: http://internals.rust-lang.org/t/forbid-unsigned-integer/752
2015-04-01 18:36:21 -07:00
Alex Crichton
f86318d63c Test fixes and rebase conflicts, round 2
Conflicts:
	src/libcore/num/mod.rs
2015-04-02 02:07:51 +02:00
Alex Crichton
bb252a8878 rollup merge of #23948: nikomatsakis/feature-gate-rust-abi
Like it says.

r? @alexcrichton
2015-04-01 13:56:19 -07:00
Felix S. Klock II
98dd376f9c fallout when bootstrapping rustc. 2015-04-01 22:35:50 +02:00
Felix S. Klock II
d8e309320d added unary_negate feature gate. 2015-04-01 22:34:26 +02:00
Niko Matsakis
d81e86622c Feature gate rust-call ABI. 2015-04-01 15:59:50 -04:00
Manish Goregaokar
6a3e8447eb Rollup merge of #23924 - nrc:unqual-assoc3, r=alexcrichton
Basically stuff I did for unqualified assoc types which is worth landing by itself.
2015-04-02 00:40:39 +05:30
Richo Healey
85c74c6305 cleanup: Test formatting 2015-04-01 11:04:09 -07:00
Niko Matsakis
49b76a087b Fallout in libsyntax 2015-04-01 11:22:39 -04:00
Niko Matsakis
15b58fedca Fallout in libsyntax/librustc: use newtype'd options for linked lists,
since `Option` is not fundamental and hence the old impls run afoul of
the orphan rules.
2015-04-01 11:21:42 -04:00
Niko Matsakis
03d3ba7667 Implement the changes to coherence such that we consider a type to be
local only if matches `FUNDAMENTAL(LocalType)`, where `FUNDAMENTAL`
includes `&T` and types marked as fundamental (which includes `Box`).
Also apply these tests to negative reasoning.
2015-04-01 11:21:40 -04:00
Nick Cameron
a5479622ea Pretty print ids for assoc items 2015-04-01 12:40:54 +13:00
Alex Crichton
3422be3666 rollup merge of #23288: alexcrichton/issue-19470
This is a deprecated attribute that is slated for removal, and it also affects
all implementors of the trait. This commit removes the attribute and fixes up
implementors accordingly. The primary implementation which was lost was the
ability to compare `&[T]` and `Vec<T>` (in that order).

This change also modifies the `assert_eq!` macro to not consider both directions
of equality, only the one given in the left/right forms to the macro. This
modification is motivated due to the fact that `&[T] == Vec<T>` no longer
compiles, causing hundreds of errors in unit tests in the standard library (and
likely throughout the community as well).

Closes #19470
[breaking-change]
2015-03-31 15:59:35 -07:00
Alex Crichton
30532884f8 Test fixes and rebase conflicts, round 2 2015-03-31 15:56:33 -07:00
Alex Crichton
da04788efc rollup merge of #23875: aturon/revise-convert-2
* Marks `#[stable]` the contents of the `std::convert` module.

* Added methods `PathBuf::as_path`, `OsString::as_os_str`,
  `String::as_str`, `Vec::{as_slice, as_mut_slice}`.

* Deprecates `OsStr::from_str` in favor of a new, stable, and more
  general `OsStr::new`.

* Adds unstable methods `OsString::from_bytes` and `OsStr::{to_bytes,
  to_cstring}` for ergonomic FFI usage.

[breaking-change]

r? @alexcrichton
2015-03-31 15:53:26 -07:00
Alex Crichton
94137a37e9 Test fixes and rebase conflicts, round 1 2015-03-31 15:53:25 -07:00