78 Commits

Author SHA1 Message Date
Esteban Küber
c60aab29f1 When attempting to write str with single quote suggest double quotes 2017-12-14 22:51:42 -08:00
Alex Burka
b34a7ffb25 address review comments 2017-11-20 18:03:20 +00:00
Alex Burka
7a5a1f9857 use -Z flag instead of env var 2017-11-19 22:30:14 +00:00
Oliver Schneider
47c7e430d3
Remove left over dead code from suggestion diagnostic refactoring 2017-11-16 16:36:49 +01:00
Oliver Schneider
443332afaf
Refactor internal suggestion API 2017-11-03 16:30:04 +01:00
Oliver Schneider
6ae440e048
Make the difference between lint codes and error codes explicit 2017-11-02 10:19:41 +01:00
bors
b218a02ad8 Auto merge of #45519 - michaelwoerister:dedup-errors, r=arielb1
Don't emit the same compiler diagnostic twice.

This PR makes the compiler filter out diagnostic messages that have already been emitted during the same compilation session.
2017-10-26 18:16:15 +00:00
Michael Woerister
6fccd71f75 librustc_errors: Don't emit the same error message twice. 2017-10-25 15:01:06 +02:00
Guillaume Gomez
83bca40350 Add short message-format 2017-10-20 16:04:32 +02:00
bors
ca9cf3594a Auto merge of #43968 - petrochenkov:span2, r=michaelwoerister
Make fields of `Span` private

I actually tried to intern spans and benchmark the result<sup>*</sup>, and this was a prerequisite.
This kind of encapsulation will be a prerequisite for any other attempt to compress span's representation, so I decided to submit this change alone.

The issue https://github.com/rust-lang/rust/issues/43088 seems relevant, but it looks like `SpanId` won't be able to reuse this interface, unless the tables are global (like interner that I tried) and are not a part of HIR.
r? @michaelwoerister anyway

<sup>*</sup> Interning means 2-3 times more space is required for a single span, but duplicates are free. In practice it turned out that duplicates are not *that* common, so more memory was wasted by interning rather than saved.
2017-08-30 11:08:26 +00:00
Vadim Petrochenkov
3da868dcb6 Make fields of Span private 2017-08-30 01:38:54 +03:00
Ariel Ben-Yehuda
64a21f875f Rollup merge of #43778 - topecongiro:handler-reset-err-count, r=arielb1
Add reset_err_count() to errors::Handler

The motivation here is to allow rustfmt to recover from parse errors after failing to parse macros (cc https://github.com/rust-lang-nursery/rustfmt/issues/1742).
r? @nrc
2017-08-29 21:40:54 +00:00
Tatsuyuki Ishi
7a8d38e522 Additional libc cleanup 2017-08-27 19:02:24 +09:00
bors
e7070dd019 Auto merge of #44071 - alexcrichton:no-cycles, r=nikomatsakis
rustc: Start moving toward "try_get is a bug" for incremental

This PR is an effort to burn down some of the work items on #42633. The basic change here was to leave the `try_get` function exposed but have it return a `DiagnosticBuilder` instead of a `CycleError`. This means that it should be a compiler bug to *not* handle the error as dropping a diagnostic should result in a complier panic.

After that change it was then necessary to update the compiler's callsites of `try_get` to handle the error coming out. These were handled as:

* The `sized_constraint` and `needs_drop_raw` checks take the diagnostic and defer it as a compiler bug. This was a new piece of functionality added to the error handling infrastructure, and the idea is that for both these checks a "real" compiler error should be emitted elsewhere, so it's only a bug if we don't actually emit the complier error elsewhere.
* MIR inlining was updated to just ignore the diagnostic. This is being tracked by https://github.com/rust-lang/rust/issues/43542 which sounded like it either already had some work underway or was planning to change regardless.
* The final case, `item_path`, is still sort of up for debate. At the time of this writing this PR simply removes the invocations of `try_get` there, assuming that the query will always succeed. This turns out to be true for the test suite anyway! It sounds like, though, that this logic was intended to assist in "weird" situations like `RUST_LOG` where debug implementations can trigger at any time. This PR would therefore, however, break those implementations.

I'm unfortunately sort of out of ideas on how to handle `item_path`, but other thoughts would be welcome!

Closes #42633
2017-08-26 08:25:44 +00:00
Alex Crichton
64b0b2bfeb rustc_errors: Add the ability to delay as bugs
This adds a function to `DiagnosticBuilder` to delay the entire diagnostic as a
bug to be emitted at a later time. This'll end up getting used in the compiler
in the subsequent commits...
2017-08-25 16:08:35 -07:00
bors
83fcd4dbba Auto merge of #43994 - tamird:remove-attributes, r=alexcrichton
*: remove crate_{name,type} attributes

Fixes #41701.

r? @arielb1
2017-08-25 22:54:00 +00:00
Tamir Duberstein
b3f50caee0
*: remove crate_{name,type} attributes
Fixes #41701.
2017-08-25 16:18:21 -04:00
Alex Crichton
8e95b3a939 rustc: Capture diagnostics from all queries
This commit alters the `rustc::ty::maps` implementation to ensure that all
output diagnostics from the compiler are tracked for the duration of each query.
These are then intended to be replayed back the first time a cached value is
loaded, and otherwise the cache should operate the same as it does today.

Closes #42513
2017-08-24 15:18:06 -07:00
Seiichi Uchida
601e3dac6c Add reset_err_count() to errors::Handler
The motivation here is to allow rustfmt to recover from parse errors
after failing to parse macros.
2017-08-23 21:56:09 +09:00
bors
757b7ac2ab Auto merge of #43986 - petrochenkov:pubcrate3, r=pnkfelix
rustc: Remove some dead code

Extracted from https://github.com/rust-lang/rust/pull/43192

r? @eddyb
2017-08-21 08:14:17 +00:00
Vadim Petrochenkov
de4dbe5789 rustc: Remove some dead code 2017-08-19 13:27:16 +03:00
Oliver Schneider
8f56322694
Add an additional empty line between the suggested use and the next item 2017-08-18 12:46:28 +02:00
Zack M. Davis
1b6c9605e4 use field init shorthand EVERYWHERE
Like #43008 (f668999), but _much more aggressive_.
2017-08-15 15:29:17 -07:00
Ariel Ben-Yehuda
1057a728f5 fix -Z treat-err-as-bug 2017-07-31 18:09:02 +03:00
Esteban Küber
faf90351b7 Add flag to hide code on inline suggestions
Now there's a way to add suggestions that hide the suggested code when
presented inline, to avoid weird wording when short code snippets are
added at the end.
2017-07-17 09:27:51 -07:00
Kevin Mehall
17bd76a516 Remove unused code from librustc_errors 2017-07-06 18:49:32 -07:00
Esteban Küber
697c85a4f1 Only underline suggestion if it is not the only code being shown 2017-07-06 14:36:49 -07:00
Ariel Ben-Yehuda
77f4022303 Revert "Change error count messages"
This reverts commit 5558c64f33446225739c1153b43d2e309bb4f50e.
2017-07-02 13:49:30 +03:00
Alex Crichton
be7ebdd512 Bump version and stage0 compiler 2017-06-19 22:25:05 -07:00
Inokentiy Babushkin
271133b03e
External spans: address review.
* The lazy loading mechanism has been moved to a more appropriate place.
* Return values from the functions invoked there are properly used.
* Documentation has gotten some minor improvements.
* Possibly some larger restructuring will need to take place still.
2017-06-12 15:37:26 +02:00
Inokentiy Babushkin
a5b8851e22
Added consumption logic for external sources in FileMap
We now fetch source lines from the `external_src` member as a secondary
fallback if no regular source is present, that is, if the file map
belongs to an external crate and the source has been fetched from disk.
2017-06-11 13:31:40 +02:00
Inokentiy Babushkin
c04aa4ed0c
Improved lazy external source loading and inserted calls. 2017-06-11 11:47:00 +02:00
Inokentiy Babushkin
c2c31b2db3
Added external crates' sources to FileMap.
They are now handled in their own member to prevent mutating access to
the `src` member. This way, we can safely load external sources, while
keeping the mutation of local source strings off-limits.
2017-06-10 21:08:32 +02:00
Esteban Küber
4142d7bb89 Use callsite's span for macro calls on suggestion
When suggesting an appropriate mutability for a macro call, use the call
span instead of the expanded macro's span.
2017-05-31 23:48:19 -07:00
Guillaume Gomez
a333be7cfe Add new error code 2017-05-30 19:19:34 +02:00
Michael Kohl
5558c64f33 Change error count messages
See #33525 for details.
2017-05-24 16:14:38 +07:00
Andre Bogus
fc513861b1 fix some clippy warnings in librustc_errors 2017-05-19 01:20:48 +02:00
bors
ef3ec5ece5 Auto merge of #41965 - Mark-Simulacrum:rollup, r=Mark-Simulacrum
Rollup of 15 pull requests

- Successful merges: #41820, #41860, #41876, #41896, #41912, #41916, #41918, #41921, #41923, #41934, #41935, #41940, #41942, #41943, #41951
- Failed merges:
2017-05-13 11:35:59 +00:00
Alex Crichton
ab54f4b226 rustc: Remove #![unstable] annotation
These are now no longer necessary with `-Z force-unstable-if-unmarked`
2017-05-11 16:03:05 -07:00
Oliver Schneider
644ce5e535 Address PR reviews 2017-05-11 15:26:22 +02:00
Oliver Schneider
e2f781c7ea
Example usage of multiple suggestions 2017-05-10 13:20:27 +02:00
Oliver Schneider
67d762d896
Refactor suggestion diagnostic API to allow for multiple suggestions 2017-05-10 13:20:26 +02:00
Esteban Küber
8c9ad8d72c Group "macro expansion" notes per call span 2017-05-06 00:55:42 -07:00
Esteban Küber
56411443f2 Use diagnostics for trace_macro instead of println 2017-05-05 15:51:48 -07:00
bors
33535afda4 Auto merge of #40851 - oli-obk:multisugg, r=jonathandturner
Minimize single span suggestions into a label

changes

```
14 |     println!("☃{}", tup[0]);
   |                     ^^^^^^
   |
help: to access tuple elements, use tuple indexing syntax as shown
   |     println!("☃{}", tup.0);
```

into

```
14 |     println!("☃{}", tup[0]);
   |                     ^^^^^^ to access tuple elements, use `tup.0`
```

Also makes suggestions explicit in the backend in preparation of adding multiple suggestions to a single diagnostic. Currently that's already possible, but results in a full help message + modified code snippet per suggestion, and has no rate limit (might show 100+ suggestions).
2017-05-02 01:04:27 +00:00
Ariel Ben-Yehuda
a260df27e0 typeck: resolve type vars before calling try_index_step
`try_index_step` does not resolve type variables by itself and would
fail otherwise. Also harden the failure path in `confirm` to cause less
confusing errors.
2017-04-27 16:44:27 +03:00
Oliver Schneider
0e920fde4f
Minimize single span suggestions into a note 2017-04-25 11:04:34 +02:00
Esteban Küber
2389830dea Highlight and simplify mismatched types
Shorten mismatched types errors by replacing subtypes that are not
different with `_`, and highlighting only the subtypes that are
different.

Given a file

```rust
struct X<T1, T2> {
    x: T1,
    y: T2,
}

fn foo() -> X<X<String, String>, String> {
    X { x: X {x: "".to_string(), y: 2}, y: "".to_string()}
}

fn bar() -> Option<String> {
    "".to_string()
}
```

provide the following output

```rust
error[E0308]: mismatched types
  --> file.rs:6:5
   |
 6 |     X { x: X {x: "".to_string(), y: 2}, y: "".to_string()}
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected struct `std::string::String`, found {integer}
   |
   = note: expected type `X<X<_, std::string::String>, _>`
                                 ^^^^^^^^^^^^^^^^^^^   // < highlighted
              found type `X<X<_, {integer}>, _>`
                                 ^^^^^^^^^             // < highlighted

error[E0308]: mismatched types
  --> file.rs:6:5
   |
10 |     "".to_string()
   |     ^^^^^^^^^^^^^^ expected struct `std::option::Option`, found `std::string::String`
   |
   = note: expected type `Option<std::string::String>`
                          ^^^^^^^                   ^  // < highlighted
              found type `std::string::String`
```
2017-04-11 15:45:00 -07:00
Jeffrey Seyfried
ec7c0aece1 Merge ExpnId and SyntaxContext. 2017-03-29 00:41:10 +00:00
sinkuu
8a64cf7fb7 Fix suggestion span error with a line containing non-ASCIIs 2017-02-25 22:11:54 +09:00