Commit graph

6003 commits

Author SHA1 Message Date
Ariel Ben-Yehuda
41578507a6 flatten nested slice patterns in HAIR construction
nested slice patterns have the same functionality as non-nested
ones, so flatten them in HAIR construction.

Fixes #26158.
2016-10-26 23:52:03 +03:00
Ariel Ben-Yehuda
8d3e89b484 handle mixed byte literal and byte array patterns
Convert byte literal pattern to byte array patterns when they are both
used together. so matching them is properly handled. I could've done the
conversion eagerly, but that could have caused a bad worst-case for
massive byte-array matches.

Fixes #18027.
Fixes #25051.
Fixes #26510.
2016-10-26 23:10:30 +03:00
Ariel Ben-Yehuda
76fb7d90ec remove StaticInliner and NaN checking
NaN checking was a lint for a deprecated feature. It can go away.
2016-10-26 22:41:17 +03:00
Ariel Ben-Yehuda
e313d8b290 change match checking to use HAIR
no intended functional changes
2016-10-26 22:41:17 +03:00
bors
586a988313 Auto merge of #36421 - TimNN:check-abis, r=alexcrichton
check target abi support

This PR checks for each extern function / block whether the ABI / calling convention used is supported by the current target.

This was achieved by adding an `abi_blacklist` field to the target specifications, listing the calling conventions unsupported for that target.
2016-10-25 21:49:59 -07:00
bors
a7557e758d Auto merge of #37361 - jseyfried:fix_crate_var_regressions, r=nrc
Fix `$crate`-related regressions

Fixes #37345, fixes #37357, fixes #37352, and improves the `unused_extern_crates` lint.
r? @nrc
2016-10-25 17:54:13 -07:00
Jeffrey Seyfried
0d30325286 Avoid false positive unused_extern_crates. 2016-10-25 20:38:58 +00:00
Jeffrey Seyfried
04ca378b89 Support use $crate; with a future compatibility warning. 2016-10-25 20:26:00 +00:00
Jeffrey Seyfried
199ed20aa6 Fix $crate-related regressions. 2016-10-25 20:25:59 +00:00
bors
aef18be1bc Auto merge of #37111 - TimNN:sized-enums, r=nikomatsakis
Disallow Unsized Enums

Fixes #16812.

This PR is a potential fix for #16812, an issue which is reported [again](https://github.com/rust-lang/rust/issues/36801) and [again](https://github.com/rust-lang/rust/issues/36975), with over a dozen duplicates by now.

This PR is mainly meant to promoted discussion about the issue and the correct way to fix it.

This is a [breaking-change] since the error is now reported during wfchecking, so that even the definition of a (potentially) unsized enum will cause an error (whereas it would previously cause an ICE at trans time if the enum was used in an unsized manner).
2016-10-25 12:37:43 -07:00
Tim Neumann
1422ac9a8f adapt tests 2016-10-25 19:56:36 +02:00
bors
67f26f7e0c Auto merge of #37360 - jseyfried:fix_label_scope, r=nrc
resolve: fix label scopes

Fixes #37353 (turns an ICE back into an error).
r? @nrc
2016-10-25 06:20:02 -07:00
Jonathan Turner
050499c407 Rollup merge of #37324 - GuillaumeGomez:trait_error_message, r=jonathandturner
Improve E0277 help message

Fixes #37319.

r? @jonathandturner
2016-10-24 15:41:29 -07:00
Tim Neumann
db032578a4 add new test case 2016-10-24 23:11:27 +02:00
Tim Neumann
d22f706150 adapt existing tests 2016-10-24 20:55:56 +02:00
Jeffrey Seyfried
dcdab2df67 Fix label scopes. 2016-10-22 23:37:54 +00:00
bors
a6fa57291b Auto merge of #37174 - mikhail-m1:dnlle, r=jonathandturner
improve "Doesn't live long enough" error

I've fixed only with same case

issue #36537 part of  #35233
r? @jonathandturner
2016-10-21 15:57:35 -07:00
Guillaume Gomez
1fadd868cd Improve E0277 help message 2016-10-21 16:13:52 +02:00
bors
5509ae399e Auto merge of #37290 - petrochenkov:pnp, r=jseyfried
syntax: Tweak path parsing logic

Associated paths starting with `<<` are parsed in patterns.

Paths like `self::foo::bar` are interpreted as paths and not as `self` arguments in methods (cc @matklad).
Now, I believe, *all* paths are consistently parsed greedily in case of ambiguity.
Detection of `&'a mut self::` requires pretty large (but still fixed) lookahead, so I had to increase the size of parser's lookahead buffer.
Curiously, if `lookahead_distance >= lookahead_buffer_size` was used previously, the parser hung forever, I fixed this as well, now it ICEs.

r? @jseyfried
2016-10-21 06:41:45 -07:00
Mikhail Modin
e85277596e improve "Doesn't live long enough" error 2016-10-20 22:51:51 +03:00
Vadim Petrochenkov
fea630ef9d Tweak path parsing logic 2016-10-20 20:28:10 +03:00
Jeffrey Seyfried
b283aaf0ff Future proof #[no_link]. 2016-10-19 10:05:03 +00:00
Eduard-Mihai Burtescu
45683187ea Rollup merge of #37202 - petrochenkov:pretty, r=nrc
Fix some pretty printing tests

Many pretty-printing tests are un-ignored.
Some issues in classification of comments (trailing/isolated) and blank line counting are fixed.
Some comments are printed more carefully.
Some minor refactoring in pprust.rs
`no-pretty-expanded` annotations are removed because this is the default now.
`pretty-expanded` annotations are removed from compile-fail tests, they are not tested with pretty-printer.

Closes https://github.com/rust-lang/rust/issues/23623 in favor of more specific https://github.com/rust-lang/rust/issues/37201 and https://github.com/rust-lang/rust/issues/37199
r? @nrc
2016-10-19 08:00:01 +03:00
Eduard-Mihai Burtescu
c38324dee2 Rollup merge of #37193 - zackmdavis:pluralization_of_expected_type_arguments, r=nrc
correct erroneous pluralization of '1 type argument' error messages

This is in the matter of #37042.
2016-10-19 08:00:00 +03:00
Eduard-Mihai Burtescu
373fcd1bd3 Rollup merge of #37117 - pnkfelix:may-dangle-attr, r=nikomatsakis
`#[may_dangle]` attribute

`#[may_dangle]` attribute

Second step of #34761. Last big hurdle before we can work in earnest towards Allocator integration (#32838)

Note: I am not clear if this is *also* a syntax-breaking change that needs to be part of a breaking-batch.
2016-10-19 07:59:59 +03:00
Vadim Petrochenkov
4a91a80b26 Fix some pretty printing tests 2016-10-18 23:23:40 +03:00
bors
e0111758eb Auto merge of #36915 - jfirebaugh:E0308-split, r=nikomatsakis
Use a distinct error code for "if may be missing an else clause"

Introduce the possibility of assigning distinct error codes to the various origin types of E0308. Start by assigning E0317 for the "IfExpressionWithNoElse" case, and write a long diagnostic specific to this case.

Fixes #36596
2016-10-17 14:06:46 -07:00
Felix S. Klock II
4124d8e48b Moved new dropck-eyepatch compile-fail tests to the ui/ subtree. 2016-10-17 18:02:23 +02:00
Felix S. Klock II
0271a9a60a Fix Subst construction: use subst from adt_def rather than Drop impl's subst.
This addresses issue pointed out by niko that prior code would break
if the declaration order for generics does not match how they are fed
into the instantiation of the type itself. (Added some tests
exercising this scenario.)
2016-10-17 16:14:25 +02:00
bors
07b86d0d4d Auto merge of #37162 - matklad:static-mut-lint, r=jseyfried
Lint against lowercase static mut

Closes #37145.

Lint for non mut statics was added in https://github.com/rust-lang/rust/pull/7523, and it explicitly did not cover mut statics. I am not sure why.
2016-10-17 04:32:15 -07:00
Aleksey Kladov
066d62d4b4 Use one message for uppercase global lint 2016-10-17 11:10:34 +03:00
Zack M. Davis
ac42f3f206 correct erroneous pluralization of '1 type argument' error messages
This is in the matter of #37042.
2016-10-15 11:40:12 -07:00
Jonathan Turner
cd0c70f430 Rollup merge of #36307 - faebser:E0408_new_error_format, r=GuillaumeGomez
Changed error message E0408 to new format

Followed your text and was able to change the ouput to the new format.
I did not encounter any broken test therefore this is a really small commit.

Thanks for letting me hack on the compiler :)

r? @jonathandturner
2016-10-14 12:07:07 -07:00
Aleksey Kladov
350b0d8946 Lint against lowercase static mut 2016-10-14 14:47:16 +03:00
Fabian Frei
595b754a4b Changed error message E0408 to new format
r? @jonathandturner
2016-10-13 00:16:52 +02:00
Alex Crichton
20991829e2 Rollup merge of #37084 - jseyfried:cleanup_expanded_macro_use_scopes, r=nrc
macros: clean up scopes of expanded `#[macro_use]` imports

This PR changes the scope of macro-expanded `#[macro_use]` imports to match that of unexpanded `#[macro_use]` imports. For example, this would be allowed:
```rust
example!();
macro_rules! m { () => { #[macro_use(example)] extern crate example_crate; } }
m!();
```

This PR also enforces the full shadowing restrictions from RFC 1560 on `#[macro_use]` imports (currently, we only enforce the weakened restrictions from #36767).

This is a [breaking-change], but I believe it is highly unlikely to cause breakage in practice.
r? @nrc
2016-10-12 14:07:56 -07:00
Alex Crichton
9d70ff384f Rollup merge of #36995 - nrc:stable, r=@nikomatsakis
stabilise ?, attributes on stmts, deprecate Reflect

r? @nikomatsakis
2016-10-12 14:07:55 -07:00
Felix S. Klock II
fa7f69cdaa tests for #[may_dangle] attribute. 2016-10-12 18:24:23 +02:00
Felix S. Klock II
e185cd5190 Fix bug in test for E0199 and add test for E0198.
In particular, as far as I can tell from the error diagnostics, the
former test for E0199 was actually a test for E0198, and there was no
test for E0198.

(I am assuming that one of my previous changes to the `unsafe impl`
checking fixed a latent bug in how these two cases were
differentiated.)
2016-10-12 18:23:23 +02:00
Felix S. Klock II
9a649c328c Require destructors using #[may_dangle] to use unsafe impl. 2016-10-12 18:23:20 +02:00
bors
a29c49f5cc Auto merge of #37095 - petrochenkov:metactor, r=alexcrichton
Temporary fix for metadata decoding for struct constructors

Same as https://github.com/rust-lang/rust/pull/37078, but for nightly.
Ideally, metadata lookup functions should "just work" for constructor ids, but this fixes the issue as well.

Fixes https://github.com/rust-lang/rust/issues/37026
r? @alexcrichton
2016-10-11 23:36:29 -07:00
bors
0b2c356420 Auto merge of #37090 - GuillaumeGomez:rollup, r=GuillaumeGomez
Rollup of 9 pull requests

- Successful merges: #36679, #36699, #36997, #37040, #37060, #37065, #37072, #37073, #37081
- Failed merges:
2016-10-11 13:29:02 -07:00
Vadim Petrochenkov
f5827d08d9 Temporary fix for metadata decoding for struct constructors 2016-10-11 23:04:29 +03:00
Nick Cameron
14c62f91b7 Deprecate Reflect
[tracking issue](https://github.com/rust-lang/rust/issues/27749)
2016-10-12 08:40:22 +13:00
Nick Cameron
a94f5934cd Stabilise attributes on statements.
Note that attributes on expressions are still unstable and are behind the `stmt_expr_attributes` flag.

cc [Tracking issue](https://github.com/rust-lang/rust/issues/15701)
2016-10-12 08:40:22 +13:00
Nick Cameron
9bc6d26092 Stabilise ?
cc [`?` tracking issue](https://github.com/rust-lang/rust/issues/31436)
2016-10-12 08:40:22 +13:00
Guillaume Gomez
ac94bde803 Rollup merge of #37060 - jfirebaugh:E0303, r=jonathandturner
Update E0303 to new error format

Fixes #35790

r? @jonathandturner
2016-10-11 17:51:26 +02:00
bors
304d0c8d85 Auto merge of #36871 - petrochenkov:pdderr, r=nikomatsakis
Turn compatibility lint `match_of_unit_variant_via_paren_dotdot` into a hard error

The lint was introduced 10 months ago and made deny-by-default 7 months ago.
In case someone is still using it, https://github.com/rust-lang/rust/pull/36868 contains a stable replacement.

r? @nikomatsakis
2016-10-11 07:39:09 -07:00
bors
1e4c8b1a81 Auto merge of #36825 - sbwtw:master, r=alexcrichton
add println!() macro with out any arguments

lets add println!() to write "\n".
like java https://docs.oracle.com/javase/7/docs/api/java/io/PrintStream.html#println()
2016-10-11 01:17:03 -07:00
Jeffrey Seyfried
829bd8c9b9 Add test. 2016-10-11 05:14:10 +00:00