Commit graph

1737 commits

Author SHA1 Message Date
bors
e44fc6c52d Auto merge of #48523 - varkor:generics-ty-generalisations, r=nikomatsakis
The Great Generics Generalisation: Ty Edition

Part of the generic parameter refactoring effort, split off from https://github.com/rust-lang/rust/pull/48149. Contains the `ty`-relative refactoring.

r? @eddyb
2018-05-15 23:03:04 +00:00
varkor
25bf73d31c Update bad-annotation error message 2018-05-15 14:21:32 +01:00
Guillaume Gomez
7c7941dc26
Rollup merge of #50712 - leodasvacas:improve-eager-resolution-error-message, r=estebank
Improve eager type resolution error message

This PR improves the span of eager resolution type errors referring to indexing and field access to use the base span rather than the whole expression.

Also a "note: type must be known at this point" is added where in the past we emitted the "type must be known at this context" error, so that early failures can be differentiated and will hopefully be less surprising.

Fixes #50692 (or at least does the best we can for the moment)

r? @estebank
2018-05-15 14:27:02 +02:00
bors
cb1ce7ddf8 Auto merge of #50385 - durka:stabilize-macro-lifetime, r=petrochenkov
stabilize macro_lifetime_matcher

This stabilizes `:lifetime` which has completed FCP in #34303.
2018-05-14 12:24:45 +00:00
bors
4468e3ea3e Auto merge of #50675 - csmoe:var_span, r=oli-obk
Reduce span highlighted code in unused_variables lint

Fixes #50472
- [X] reduce var span
- [ ] mark applicable

Before:
```
mut unused_mut_var
^^^^^^^^^^^^^^^^^^
```
After:
```
mut unused_mut_var
    ^^^^^^^^^^^^^^
```
2018-05-14 02:24:13 +00:00
Alex Burka
e6f7cf7e75 remove stray ui stderr 2018-05-13 19:51:32 +00:00
Alex Burka
394945ee36 stabilize :lifetime 2018-05-13 19:51:32 +00:00
Dan Aloni
37ed2ab910 Macros: Add a 'literal' fragment specifier
Implements RFC 1576.

See: https://github.com/rust-lang/rfcs/blob/master/text/1576-macros-literal-matcher.md

Changes are mostly in libsyntax, docs, and tests. Feature gate is
enabled for 1.27.0.

Many thanks to Vadim Petrochenkov for following through code reviews
and suggestions.

Example:

````rust

macro_rules! test_literal {
    ($l:literal) => {
        println!("literal: {}", $l);
    };
    ($e:expr) => {
        println!("expr: {}", $e);
    };
}

fn main() {
    let a = 1;
    test_literal!(a);
    test_literal!(2);
    test_literal!(-3);
}
```

Output:

```
expr: 1
literal: 2
literal: -3
```
2018-05-13 19:17:02 +03:00
leonardo.yvens
87890561f3 Improve eager type resolution error message
This PR improves the span of eager resolution type errors referring to indexing and field access to use the base span rather than the whole expression.

Also a note "Type must be known at this point." is added to where we at some point in the past emitted the "type must be known at this context" error, so that early failures can be differentiated and will hopefully be less surprising.

Fixes #50692 (or at least does the best we can for the moment)

r? @estebank
2018-05-13 13:02:34 -03:00
csmoe
c4e99dd85d Revert "mark applicability"
This reverts commit a880971128.
2018-05-13 22:56:37 +08:00
csmoe
a880971128 mark applicability 2018-05-13 21:10:15 +08:00
bors
3e955a0581 Auto merge of #50704 - kennytm:rollup, r=kennytm
Rollup of 8 pull requests

Successful merges:

 - #50624 (fs::write: Add example writing a &str)
 - #50634 (Do not silently truncate offsets for `read_at`/`write_at` on emscripten)
 - #50644 (AppVeyor: Read back trace from crash dump on failure.)
 - #50661 (Ignore non .rs files for tidy libcoretest)
 - #50663 (rustc: Allow an edition's feature on that edition)
 - #50667 (rustc: Only suggest deleting `extern crate` if it works)
 - #50670 (rustc: Include semicolon when removing `extern crate`)
 - #50678 (Update openbsd targets)

Failed merges:
2018-05-13 11:32:21 +00:00
kennytm
b0d3170485
Rollup merge of #50670 - alexcrichton:remove-extern-crate-correct-span, r=Manishearth
rustc: Include semicolon when removing `extern crate`

Currently the lint for removing `extern crate` suggests removing `extern crate`
most of the time, but the rest of the time it suggest replacing it with `use
crate_name`. Unfortunately though when spliced into the original code you're
replacing

    extern crate foo;

with

    use foo

which is syntactically invalid! This commit ensure that the trailing semicolon
is included in rustc's suggestion to ensure that the code continues to compile
afterwards.
2018-05-13 17:20:31 +08:00
bors
0d48c96507 Auto merge of #50643 - dlrobertson:fix_ice, r=oli-obk
typeck: Fix ICE with struct update syntax

If check_expr_struct_fields fails, do not continue to record update.
If we continue to record update, the struct may cause us to ICE later
on indexing a field that may or may not exist.

Fixes: #50618
2018-05-13 09:16:11 +00:00
csmoe
6c682eb46a reduce variable span 2018-05-13 16:34:27 +08:00
bors
6fb34bdfc6 Auto merge of #50536 - leodasvacas:report-fullfilment-errors-in-copy-derive, r=estebank
Better error reporting in Copy derive

In Copy derive, report all fulfillment erros when present and do not report errors for types tainted with `TyErr`. Also report all fields which are not Copy rather than just the first.

Also refactored `fn fully_normalize`, removing the not very useful helper function along with a FIXME to the closed issue #26721 that looks out of context now.

Fixes #50480

r? @estebank
2018-05-12 22:48:16 +00:00
leonardo.yvens
6389f35ef9 Fix rebase 2018-05-12 15:07:15 -03:00
leonardo.yvens
3deb75729e Merge all "Copy not implemented" errors 2018-05-12 14:24:02 -03:00
leonardo.yvens
804bcf7716 Better error reporting in Copy derive
In Copy derive, report all fulfillment erros when present and do not
report errors for types tainted with `TyErr`. Also report all fields
which are not Copy rather than just the first.

Also refactored `fn fully_normalize`, removing the not very useful
helper function along with a FIXME to the closed issue #26721 that's
looks out of context now.
2018-05-12 14:24:01 -03:00
Mark Simulacrum
3603d241d8
Rollup merge of #50545 - rizakrko:const_time, r=oli-obk
Made some functions in time module const

They may be const, or i missed something?
2018-05-12 07:32:25 -06:00
bors
5f98fe714e Auto merge of #50476 - zackmdavis:tame_unreachable_pub_suggestion, r=Manishearth
don't make crazy suggestion for unreachable braced pub-use

The Higher Intermediate Representation doesn't have spans for visibility
keywords, so we were assuming that the first whitespace-delimited token
in the item span was the `pub` to be weakened. This doesn't work for
brace-grouped `use`s, which get lowered as if they were several
individual `use` statements, but with spans that only cover the braced
path-segments. Constructing a correct suggestion here presents some
challenges—until someone works those out, we can at least protect the
dignity of our compiler by not offering any suggestion at all for `use` items.

This resolves #50455 (but again, it would be desirable in the future to
make a correct suggestion instead of copping out like this).

r? @Manishearth
2018-05-12 05:42:10 +00:00
Dan Robertson
f6a46cf4d1
typeck: Fix ICE with struct update syntax
If check_expr_struct_fields fails, do not continue to record update.
If we continue to record update, the struct may cause us to ICE later
on indexing a field that may or may not exist.
2018-05-12 02:47:58 +00:00
Alex Crichton
6de899f42d rustc: Include semicolon when removing extern crate
Currently the lint for removing `extern crate` suggests removing `extern crate`
most of the time, but the rest of the time it suggest replacing it with `use
crate_name`. Unfortunately though when spliced into the original code you're
replacing

    extern crate foo;

with

    use foo

which is syntactically invalid! This commit ensure that the trailing semicolon
is included in rustc's suggestion to ensure that the code continues to compile
afterwards.
2018-05-11 12:44:00 -07:00
Roman Stoliar
d9b71d2156 fixed double ref hint 2018-05-11 15:12:53 +03:00
Roman Stoliar
747d5d99cd [wip] fixed some error, added missing test 2018-05-11 15:12:53 +03:00
Roman Stoliar
56fbc63456 unary op filter, dereference hint 2018-05-11 15:12:53 +03:00
Roman Stoliar
2f6945c776 added missing implementation hint 2018-05-11 15:12:30 +03:00
Zack M. Davis
7006018745 don't make crazy suggestion for unreachable braced pub-use
The Higher Intermediate Representation doesn't have spans for visibility
keywords, so we were assuming that the first whitespace-delimited token
in the item span was the `pub` to be weakened. This doesn't work for
brace-grouped `use`s, which get lowered as if they were several
individual `use` statements, but with spans that only cover the braced
path-segments. Constructing a correct suggestion here presents some
challenges—until someone works those out, we can at least protect the
dignity of our compiler marking the suggestion for `use` items as
potentially incorrect.

This resolves #50455 (but again, it would be desirable in the future to
make a correct suggestion instead of copping out like this).
2018-05-10 20:48:18 -07:00
bors
4e5a155a93 Auto merge of #50440 - nikomatsakis:single-use-lifetimes, r=cramertj
Improve single-use and zero-use lifetime lints

The code now correctly identifies *when* to lint -- or more correctly, anyhow -- but it doesn't yet offer suggestions for how to fix.

(I just remembered when writing this I had meant to go back over some of these cases around e.g. impl Trait and double check that everything is right...)

cc #44752

r? @cramertj
2018-05-11 02:14:25 +00:00
Roman Stoliar
4d8d0a6f85 const time
added rustc_const_unstable attribute

extended tests

added conversion test

fixed tidy test

added feature attribute
2018-05-10 22:10:11 +03:00
Alex Crichton
1f1c65de4a
Rollup merge of #50590 - estebank:off-by-one, r=nikomatsakis
Fix tuple struct field spans

Fix #50578. Will have a merge conflict with #50536.
2018-05-10 11:35:34 -05:00
Alex Crichton
7bd4fdadfe
Rollup merge of #50447 - ehuss:fix-update-references, r=alexcrichton
Fix update-references for tests within subdirectories.

Fixes #50438.

I'll make this more robust later for #49815.
2018-05-10 11:35:19 -05:00
Alex Crichton
ecd9898b60
Rollup merge of #49423 - gavento:gavento-dev, r=nikomatsakis
Extend tests for RFC1598 (GAT)

More GAT tests, namely some usage for `Iterable` and `StreamingIterator`, shadowing (lifetimes and type params), `Collection<T>` and `CollectionFamily` from [the series](http://smallcultfollowing.com/babysteps/blog/2016/11/03/associated-type-constructors-part-2-family-traits/) with default associated types. Tracking issue: #44265

r? @nikomatsakis

Wrong GAT argument numbers / kinds and default values are next.
2018-05-10 11:35:16 -05:00
Esteban Küber
85f57389bf Fix tuple struct field spans 2018-05-10 09:15:47 -07:00
Eric Huss
5128affbc4 Fix update-references for tests within subdirectories.
Fixes #50438.

I'll make this more robust later for #49815.
2018-05-08 20:27:34 -07:00
Oliver Schneider
5258871825
Fix thinning pointers to extern types in miri 2018-05-08 13:52:20 +02:00
Zack M. Davis
5a5a25c701 in which the must-use additional messaging is tucked into a note
Also, a comment is edited to reflect that spaces around the equals-sign in
attributes is the standard (q.v. rust-lang-nursery/fmt-rfcs@bea80532e7).
2018-05-06 21:51:23 -07:00
Kornel
1e38eee63b Suggest more helpful formatting string 2018-05-05 11:50:02 +01:00
Alex Crichton
6f2d023028 Fold rustfix tests back into the UI test suite 2018-05-04 15:01:28 -07:00
Pascal Hertleif
fd6aa149bc First step towards rustfix compiletest mode
This is the first small step towards testing auto-fixable compiler
suggestions using compiletest. Currently, it only checks if next to a
UI test there also happens to a `*.rs.fixed` file, and then uses rustfix
(added as external crate) on the original file, and asserts that it
produces the fixed version.

To show that this works, I've included one such test. I picked this test
case at random (and because it was simple) -- It is not relevant to the
2018 edition. Indeed, in the near future, we want to be able to restrict
rustfix to edition-lints, so this test cast might go away soon.

In case you still think this is somewhat feature-complete, here's a
quick list of things currently missing that I want to add before telling
people they can use this:

- [ ] Make this an actual compiletest mode, with `test [fix] …` output
  and everything
- [ ] Assert that fixed files still compile
- [ ] Assert that fixed files produce no (or a known set of) diagnostics
  output
- [ ] Update `update-references.sh` to support rustfix
- [ ] Use a published version of rustfix (i.e.: publish a new version
  rustfix that exposes a useful API for this)
2018-05-04 15:01:28 -07:00
Niko Matsakis
0a9dcaf04f add warnings for unused lifetime parameters 2018-05-04 05:54:01 -04:00
Niko Matsakis
aef29a0583 fix single-use lint 2018-05-04 05:54:01 -04:00
Niko Matsakis
b406d0b268 handle relative paths again in update-references.sh 2018-05-04 05:54:01 -04:00
bors
e82261dfbb Auto merge of #50413 - kennytm:rollup, r=kennytm
Rollup of 12 pull requests

Successful merges:

 - #50302 (Add query search order check)
 - #50320 (Fix invalid path generation in rustdoc search)
 - #50349 (Rename "show type declaration" to "show declaration")
 - #50360 (Clarify wordings of the `unstable_name_collision` lint.)
 - #50365 (Use two vectors in nearest_common_ancestor.)
 - #50393 (Allow unaligned reads in constants)
 - #50401 (Revert "Implement FromStr for PathBuf")
 - #50406 (Forbid constructing empty identifiers from concat_idents)
 - #50407 (Always inline simple BytePos and CharPos methods.)
 - #50416 (check if the token is a lifetime before parsing)
 - #50417 (Update Cargo)
 - #50421 (Fix ICE when using a..=b in a closure.)

Failed merges:
2018-05-03 20:45:54 +00:00
kennytm
4cc4a67cea
Rollup merge of #50406 - ExpHP:concat-nonzero-idents, r=dtolnay
Forbid constructing empty identifiers from concat_idents

The empty identifier is a [reserved identifier](8a37c75a3a/src/libsyntax_pos/symbol.rs (L300-L305)) in rust, apparently used for black magicks like representing the crate root or somesuch... and therefore, being able to construct it is Ungood.  Presumably.

...even if the macro that lets you construct it is so useless that you can't actually do any damage with it. (and believe me, I tried)

Fixes #50403.

**Note:** I noticed that when you try to do something similar with `proc_macro::Term`, the compiler actually catches it and flags the identifier as reserved.  Perhaps a better solution would be to somehow have that same check applied here.
2018-05-04 02:16:39 +08:00
kennytm
46bc2c28b9
Rollup merge of #50393 - oli-obk:packed_const_panic, r=eddyb
Allow unaligned reads in constants

fixes #50356

introduced in https://github.com/rust-lang/rust/pull/49513
2018-05-04 02:12:50 +08:00
kennytm
06a47dc26e
Rollup merge of #50360 - kennytm:fix-50232-clarify-unstable-name-collision, r=nikomatsakis
Clarify wordings of the `unstable_name_collision` lint.

Stabilizing an inherent method may cause change in behavior instead of inference error. Updated to use the wording from [varkor's comment].

Closes #50232.

[varkor's comment]: https://github.com/rust-lang/rust/issues/50232#issuecomment-384678097
2018-05-04 02:12:47 +08:00
bors
d68b0eceaa Auto merge of #50030 - flip1995:rfc2103, r=petrochenkov
Implement tool_attributes feature (RFC 2103)

cc #44690

This is currently just a rebased and compiling (hopefully) version of #47773.

Let's see if travis likes this. I will add the implementation for `tool_lints` this week.
2018-05-03 11:52:03 +00:00
Michael Lamparski
fbc57a7c7a add missing output for ui test 2018-05-03 00:25:14 -04:00
Michael Lamparski
cd54b3e448 forbid empty identifiers from concat_idents 2018-05-02 22:58:28 -04:00