Commit Graph

80 Commits

Author SHA1 Message Date
Esteban Küber
38abca8c2d Point at internal span in format string 2018-07-22 23:09:00 -07:00
bors
3d51086303 Auto merge of #52394 - estebank:println, r=oli-obk
Improve suggestion for missing fmt str in println

Avoid using `concat!(fmt, "\n")` to improve the diagnostics being
emitted when the first `println!()` argument isn't a formatting string
literal.

Fix #52347.
2018-07-22 06:52:48 +00:00
Esteban Küber
83a8af50bb Suggest space separated format str literal 2018-07-21 12:16:06 -07:00
Matthew Jasper
a06b2433fc Update tests for new NLL mutability errors 2018-07-20 20:01:15 +01:00
Esteban Küber
154dee2dcc rework println 2018-07-19 23:18:07 -07:00
Esteban Küber
fbce952193 review comments: modify note wording and change println
- Don't print the newline on its own to avoid the possibility of
  printing it out of order due to `stdout` locking.
- Modify wording of `concat!()` with non-literals to not mislead into
  believing that only `&str` literals are accepted.
- Add test for `concat!()` with non-literals.
2018-07-19 23:18:07 -07:00
Esteban Küber
f53c145ef1 Improve suggestion for missing fmt str in println
Avoid using `concat!(fmt, "\n")` to improve the diagnostics being
emitted when the first `println!()` argument isn't a formatting string
literal.
2018-07-19 23:18:07 -07:00
csmoe
790c09e849 suggest on new snippet 2018-07-11 18:53:37 +08:00
csmoe
88f475c808 suggests with whole macro call 2018-07-06 22:31:55 +08:00
csmoe
b79a83b4e4 Suggestion for print 2018-07-03 20:39:17 +08:00
Felix S. Klock II
2d4df5b53e NLL: Updates to diagnostic output in test/ui. 2018-06-19 19:38:37 +02:00
Pietro Albini
1df7817122
Revert "Auto merge of #49719 - mark-i-m:no_sep, r=petrochenkov"
This reverts commit d6ba1b9b02, reversing
changes made to 8de5353f75.
2018-06-07 17:07:05 +02:00
Simon Sapin
b825477154 Remove the unstable Float trait
Following up to #49896 and #50629. Fixes #32110.

E0689 is weird.
2018-05-22 19:19:09 +02:00
Alex Burka
394945ee36 stabilize :lifetime 2018-05-13 19:51:32 +00:00
Simon Sapin
18ab16b510 Move intrinsics-based float methods out of libcore into libstd
Affected methods are `abs`, `signum`, and `powi`.
CC https://github.com/rust-lang/rust/issues/32110#issuecomment-379503183
2018-04-21 09:47:37 +02:00
bors
d6ba1b9b02 Auto merge of #49719 - mark-i-m:no_sep, r=petrochenkov
Update `?` repetition disambiguation.

**Do not merge** (yet)

This is a test implementation of some ideas from discussion in https://github.com/rust-lang/rust/issues/48075 . This PR
- disallows `?` repetition from taking a separator, since the separator is never used.
- disallows the use of `?` as a separator. This allows patterns like `$(a)?+` to match `+` and `a+` rather than `a?a?a`. This is a _breaking change_, but maybe that's ok? Perhaps a crater run is the right approach?

cc @durka @alexreg @nikomatsakis
2018-04-16 00:06:10 +00:00
bors
5724462f62 Auto merge of #49326 - petrochenkov:nteq, r=eddyb
macros: Remove matching on "complex" nonterminals requiring AST comparisons

So, you can actually use nonterminals from outer macros in left hand side of nested macros and invocations of nested macros will try to match passed arguments to them.

```rust
macro outer($nt_item: item) {
    macro inner($nt_item) {
        struct S;
    }

    inner!($nt_item); // OK, `$nt_item` matches `$nt_item`
}
```

Why this is bad:
- We can't do this matching correctly. When two nonterminals are compared, the original tokens are lost and we have to compare AST fragments instead. Right now the comparison is done by `PartialEq` impls derived on AST structures.
    - On one hand, AST loses information compared to original tokens (e.g. trailing separators and other simplifications done during parsing to AST), so we can produce matches that are not actually correct.
    - On another hand derived `PartialEq` impls for AST structures don't make much sense in general and compare various auxiliary garbage like spans. For the argument nonterminal to match we should use literally the same token (possibly cloned) as was used in the macro LHS (as in the example above). So we can reject matches that are actually correct.
    - Support for nonterminal matching is the only thing that forces us to derive `PartialEq` for all (!) AST structures. As I mentioned these impls are also mostly nonsensical.

This PR removes support for matching on all nonterminals except for "simple" ones like `ident`, `lifetime` and `tt` for which we have original tokens that can be compared.
After this is done I'll submit another PR removing huge number of `PartialEq` impls from AST and HIR structures.

This is an arcane feature and I don't personally know why would anyone use it, but the change should ideally go through crater.
We'll be able to support this feature again in the future when all nonterminals have original token streams attached to them in addition to (or instead of) AST fragments.
2018-04-14 01:28:13 +00:00
Vadim Petrochenkov
7e1f73beb6 macros: Do not match on "complex" nonterminals requiring AST comparisons 2018-04-14 02:28:39 +03:00
Guillaume Gomez
812656dc95 Rename must-compile-successfully into compile-pass 2018-04-13 23:28:03 +02:00
Vadim Petrochenkov
44acea4d88 AST/HIR: Merge field access expressions for named and numeric fields 2018-04-12 23:02:09 +03:00
Felix S. Klock II
746d63a203 Checkpoint the current status of NLL on ui tests via compare-mode=nll. 2018-04-11 00:38:35 +02:00
Mark Mansi
54bba4c456 fix test 2018-04-06 17:26:51 -05:00
Mark Mansi
b2ed17b5ea No separator for ?. No ? as a separator. 2018-04-05 19:50:08 -05:00
John Kåre Alsaker
b1d872b38e Update tests 2018-03-16 11:52:46 +01:00
Guillaume Gomez
2e104a77cf update tests 2018-03-14 00:53:24 +01:00
Vadim Petrochenkov
9f9183d34d Fix rebase 2018-02-26 21:20:31 +03:00
Vadim Petrochenkov
7ba5fd168a Update UI tests 2018-02-26 20:24:42 +03:00
Vadim Petrochenkov
fa2d9fc4b9 Update UI tests 2018-02-26 20:24:02 +03:00
bors
bedbad6119 Auto merge of #48337 - GuillaumeGomez:rustc-explain, r=estebank
Rustc explain

Fixes #48041.

To make the review easier, I separated tests update to code update. Also, I used this script to generate new ui tests stderr:

```python
from os import listdir
from os.path import isdir, isfile, join

PATH = "src/test/ui"

def do_something(path):
    files = [join(path, f) for f in listdir(path)]

    for f in files:
        if isdir(f):
            do_something(f)
            continue
        if not isfile(f) or not f.endswith(".stderr"):
            continue
        x = open(f, "r")
        content = x.read().strip()
        if "error[E" not in content:
            continue
        errors = dict()
        for y in content.splitlines():
            if y.startswith("error[E"):
                errors[y[6:11]] = True
        errors = sorted(errors.keys())
        if len(errors) < 1:
            print("weird... {}".format(f))
            continue
        if len(errors) > 1:
            content += "\n\nYou've got a few errors: {}".format(", ".join(errors))
            content += "\nIf you want more information on an error, try using \"rustc --explain {}\"".format(errors[0])
        else:
            content += "\n\nIf you want more information on this error, try using \"rustc --explain {}\"".format(errors[0])
        content += "\n"
        x = open(f, "w")
        x.write(content)

do_something(PATH)
```
2018-02-26 12:34:52 +00:00
Guillaume Gomez
5747fd6611 Update ui tests 2018-02-25 12:15:05 +01:00
Mark Mansi
6ad328ca77 Move macro-at-most-once-rep-ambig test to ui test 2018-02-17 11:42:11 -06:00
Esteban Küber
aaec608367 Minimize weird spans involving macro context
Sometimes the parser attempts to synthesize spans from within a macro
context with the span for the captured argument, leading to non-sensical
spans with very bad output. Given that an incorrect span is worse than
a partially incomplete span, when detecting this situation return only
one of the spans without mergin them.
2018-02-01 11:51:49 -08:00
kennytm
35bf7f844c Rollup merge of #47481 - estebank:unused-args, r=arielb1
Point at unused arguments for format string

Avoid overlapping spans by only pointing at the arguments that are not
being used in the argument string. Enable libsyntax to have diagnostics
with multiple primary spans by accepting `Into<MultiSpan>` instead of
`Span`.

Partially addresses #41850.
2018-01-18 01:57:25 +08:00
Esteban Küber
eb3da09333 Add secondary span pointing at the statement (error span) 2018-01-16 18:13:43 -08:00
Esteban Küber
a4660dfea2 Point at unused arguments for format string
Avoid overlapping spans by only pointing at the arguments that are not
being used in the argument string. Enable libsyntax to have diagnostics
with multiple primary spans by accepting `Into<MultiSpan>` instead of
`Span`.
2018-01-15 21:38:12 -08:00
Ryan Cumming
ecd47a91c7 Don't include bang in macro replacement suggestion
When we suggest the replacement for a macro we include the "!" in the
suggested replacement but the span only contains the name of the macro
itself. Using that replacement would cause a duplicate "!" in the
resulting code.

I originally tried to extend the span to be replaced by 1 byte in
rust-lang/rust#47424. However, @zackmdavis pointed out that there can be
whitespace between the macro name and the bang.

Instead, just remove the bang from the suggested replacement.

Fixes #47418
2018-01-15 18:09:52 +11:00
Esteban Küber
f7aed3eb27 Do not use casting for suggestion to add type to numeric literal 2018-01-04 15:28:21 -08:00
Esteban Küber
87242f3cc7 Provide suggestion when trying to use method on numeric literal 2018-01-03 21:46:43 -08:00
Tommy Ip
2ad5bf056c Update ui tests' line numbers. 2017-12-10 21:14:57 +00:00
Tommy Ip
76d9b309ae Add must-compile-successfully comment to appropriate ui tests. 2017-12-10 21:14:57 +00:00
Alex Burka
5da957cbc6 mention nightly in -Z external-macro-backtrace note 2017-11-26 18:28:38 +00:00
Oliver Schneider
8937d6a6cf
Merge cfail and ui tests into ui tests 2017-11-24 11:32:35 +01: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
Alex Burka
bec62c2f12 update UI tests 2017-11-19 22:22:22 +00:00
bors
bd7ce71aab Auto merge of #45807 - tommyip:format_err, r=estebank
Make positional argument error in format! clearer

r? @estebank

Fixes #44954
2017-11-11 07:33:31 +00:00
Konrad Borowski
6a92c0fdbd Allow a trailing comma in assert_eq/ne macro 2017-11-09 14:14:49 +01:00
Tommy Ip
13a416298c Update tests for new format! error message 2017-11-06 16:28:30 +00:00
bjorn3
0a2c95b6eb Fix test 2017-09-03 10:23:00 +02:00
bjorn3
30603eee57
Fix tidy error 2017-09-02 18:14:14 +02:00