Vadim Petrochenkov
09703e3843
Adjust other names after the Mark renaming
2019-07-19 12:01:49 +03:00
Vadim Petrochenkov
31e10aec83
libsyntax: Remove Mark into ExpnId
2019-07-19 12:01:48 +03:00
bors
a3369981de
Auto merge of #61749 - davidtwco:rfc-2203-const-array-repeat-exprs, r=eddyb
...
rustc/rustc_mir: Implement RFC 2203.
This PR implements RFC 2203, allowing constants in array repeat
expressions. Part of #49147 .
r? @eddyb
2019-07-18 20:41:40 +00:00
Mark Rousskov
94b16d4bd0
Rollup merge of #62703 - fakenine:normalize_use_of_backticks_compiler_messages_p6, r=eddyb
...
normalize use of backticks in compiler messages for libsyntax/parse
https://github.com/rust-lang/rust/issues/60532
2019-07-16 11:38:58 -04:00
Mark Rousskov
ae2672340c
Rollup merge of #62666 - estebank:preempt-ice, r=eddyb
...
Cancel unemitted diagnostics during error recovery
Follow up to https://github.com/rust-lang/rust/pull/62604 . Use @eddyb's preferred style and catch other case of the same problem.
r? @eddyb
2019-07-16 11:38:52 -04:00
Mark Rousskov
f9576a6fce
Rollup merge of #62668 - goodmanjonathan:fix-62660, r=estebank
...
Fix #62660
If the explicitly given type of a `self` parameter fails to parse correctly, we need to propagate the error rather than dropping it and causing an ICE.
Fixes #62660 .
2019-07-15 19:55:10 -04:00
Mark Rousskov
4efdff7dbb
Rollup merge of #62646 - estebank:wording, r=petrochenkov
...
Tweak wording in feature gate errors
2019-07-15 19:55:07 -04:00
Samy Kacimi
7ddafaf6f9
normalize use of backticks in compiler messages for libsyntax/parse
...
https://github.com/rust-lang/rust/issues/60532
2019-07-16 00:07:30 +02:00
Vadim Petrochenkov
0cdd18d0a7
pprust: Support macro macros
2019-07-15 12:42:07 +03:00
Vadim Petrochenkov
a2a1cd1864
pprust: Fix formatting regressions from the previous commits
...
Fix some remaining cases of bad formatting
Update some failing tests
2019-07-15 12:42:07 +03:00
Vadim Petrochenkov
75896011dc
pprust: Do not convert attributes into MetaItems for printing
...
Fixes https://github.com/rust-lang/rust/issues/62628
2019-07-15 12:42:07 +03:00
Vadim Petrochenkov
160c40bc88
pprust: Remove the box from print_tts
...
Wrap the whole attribute into a box instead
2019-07-15 12:42:07 +03:00
Vadim Petrochenkov
11585b598c
pprust: Use print_mac_common for delimited token groups
2019-07-15 12:42:07 +03:00
Vadim Petrochenkov
23c5c1bfe7
pprust: Use print_mac_common for attributes
2019-07-15 12:42:07 +03:00
Vadim Petrochenkov
500b00127b
pprust: Use print_mac_common for macro_rules definitions
2019-07-15 12:42:07 +03:00
Vadim Petrochenkov
65a714a6a0
pprust: Move some methods to the PrintState trait
...
So that path and macro argument printing code can be shared
2019-07-15 12:42:07 +03:00
bors
e452e2929d
Auto merge of #62670 - estebank:extern-fn-with-body, r=petrochenkov
...
Detect `fn` with a body in an `extern` block
Fix #62109 .
2019-07-15 02:13:55 +00:00
bors
d82fd9ecd3
Auto merge of #62643 - estebank:parse-recovery-type-errs, r=petrochenkov
...
Do not emit type errors after parse error in last statement of block
When recovering from a parse error inside a block, do not emit type
errors generating on that block's recovered return expression.
Fix #57383 .
2019-07-14 22:51:05 +00:00
bors
83e4eed16e
Auto merge of #62638 - estebank:issue-62554, r=petrochenkov
...
Use snippet instead of pprinting statement
Fix #62554 .
2019-07-14 17:29:17 +00:00
Esteban Küber
f2a6a4e5af
review comment
2019-07-13 22:25:23 -07:00
Esteban Küber
c8d9cd99fa
Detect fn with a body in an extern block
2019-07-13 22:24:11 -07:00
Jonathan Goodman
7111328556
Don't drop DiagnosticBuilder if parsing fails
...
If the explicitly given type of a `self` parameter fails to parse correctly,
we need to propagate the error rather than dropping it and causing an ICE.
Fixes #62660 .
2019-07-13 19:46:13 -05:00
Esteban Küber
f05dfe07f6
Cancel unemitted diagnostics during error recovery
2019-07-13 16:04:12 -07:00
Esteban Küber
84dfb2c4d7
Tweak wording in feature gate errors
2019-07-13 12:03:05 -07:00
Mazdak Farrokhzad
791ceb6a9c
Rollup merge of #62651 - matthewjasper:rustc-macro-hygiene, r=petrochenkov
...
Make some rustc macros more hygienic
2019-07-13 16:18:41 +02:00
Mazdak Farrokhzad
4fe6e63cd6
Rollup merge of #62604 - estebank:unemitted-err-ice, r=pnkfelix
...
Handle errors during error recovery gracefully
Fix #62546 .
2019-07-13 16:18:38 +02:00
Matthew Jasper
199931ce91
Make register_[long_]diagnostics hygienic
2019-07-13 10:25:57 +01:00
Matthew Jasper
313ba7c4d1
Make newtype_index hygienic and use allow_internal_unstable
2019-07-13 10:25:57 +01:00
Esteban Küber
8259a2dd42
Do not emit type errors after parse error in last statement of block
...
When recovering from a parse error inside a block, do not emit type
errors generating on that block's recovered return expression.
Fix #57383 .
2019-07-12 18:55:01 -07:00
Esteban Küber
726aa1437f
Use snippet instead of pprinting statement
2019-07-12 14:01:13 -07:00
Mazdak Farrokhzad
a7f1649fbb
Rollup merge of #62607 - estebank:this-mem-is-out-of-control, r=petrochenkov
...
Correctly break out of recovery loop
Fix #61858 .
2019-07-12 22:46:52 +02:00
Mazdak Farrokhzad
d709e8d9d0
Rollup merge of #62605 - estebank:emit-dropped-err, r=pnkfelix
...
Emit dropped unemitted errors to aid in ICE debugging
2019-07-12 22:46:50 +02:00
Esteban Küber
cc481a46cb
Correctly break out of recovery loop
2019-07-11 20:02:54 -07:00
Esteban Küber
c9f7a3d206
Emit dropped unemitted errors to aid in ICE debugging
2019-07-11 16:59:19 -07:00
Esteban Küber
e1c7747cf0
Handle errors during error recovery gracefully
2019-07-11 16:54:33 -07:00
Lzu Tao
8347917dd9
Remove feature gate dropck_parametricity completely
...
Therefore we also remove `#[unsafe_destructor_blind_to_params]`
attribute completly.
2019-07-11 18:44:56 +00:00
Vadim Petrochenkov
e38106599a
Address review comments
2019-07-11 12:34:57 +03:00
Vadim Petrochenkov
af26e7f4f4
pretty-print: Merge print_tts and print_tts_ext
2019-07-11 12:08:29 +03:00
Vadim Petrochenkov
da50d59881
pretty-print: Do not lose the $crate printing flag in print_tt
2019-07-11 12:07:35 +03:00
Mazdak Farrokhzad
7697b2927f
Rollup merge of #62476 - petrochenkov:expref, r=matthewjasper
...
Continue refactoring macro expansion and resolution
This PR continues the work started in https://github.com/rust-lang/rust/pull/62042 .
It contains a set of more or less related refactorings with the general goal of making things simpler and more orthogonal.
Along the way most of the issues uncovered in https://github.com/rust-lang/rust/pull/62086 are fixed.
The PR is better read in per-commit fashion with whitespace changes ignored.
I tried to leave some more detailed commit messages describing the motivation behind the individual changes.
Fixes https://github.com/rust-lang/rust/issues/44692
Fixes https://github.com/rust-lang/rust/issues/52363
Unblocks https://github.com/rust-lang/rust/pull/62086
r? @matthewjasper
2019-07-11 04:33:17 +02:00
Vadim Petrochenkov
baddce5155
expand: Move "derive containers" into a separate InvocationKind variant
...
`InvocationKind::Attr { attr: None, .. }` meaning something entirely different from a regular attribute was confusing as hell.
2019-07-11 00:12:57 +03:00
Vadim Petrochenkov
b003dd6d9b
expand: Merge expand_{bang,attr,derive}_invoc into a single function
...
It's more convenient to have all this highly related stuff together on one screen (for future refactorings).
The `expand_invoc` function is compact enough now, after all the previous refactorings.
2019-07-11 00:12:57 +03:00
Vadim Petrochenkov
374a80a86d
expand: It's always possible to create a dummy AST fragment
...
Remove a bunch of `Option`s that assumed that dummy fragment creation could fail.
The test output changed due to not performing the expansion in `fn expand_invoc` in case of the recursion limit hit.
2019-07-11 00:12:57 +03:00
Vadim Petrochenkov
eac900ac87
hygiene: Make sure each Mark has an associated expansion info
...
The root expansion was missing one.
Expansions created for "derive containers" (see one of the next commits for the description) also didn't get expansion info.
2019-07-11 00:12:57 +03:00
Vadim Petrochenkov
99c7432896
hygiene: Introduce a helper method for creating new expansions
...
Creating a fresh expansion and immediately generating a span from it is the most common scenario.
Also avoid allocating `allow_internal_unstable` lists for derive markers repeatedly.
And rename `ExpnInfo::with_unstable` to `ExpnInfo::allow_unstable`, seems to be a better fitting name.
2019-07-11 00:12:57 +03:00
Vadim Petrochenkov
d1949b1ab0
expand: Do not overwrite existing ExpnInfo when injecting derive markers
...
Create a fresh expansion for them instead - this is the usual way to allow unstable features for generated/desugared code.
Fixes https://github.com/rust-lang/rust/issues/52363
2019-07-11 00:12:08 +03:00
Vadim Petrochenkov
3041ec6118
resolve/expand: Catch macro kind mismatches early in resolve
...
This way we are processing all of them in a single point, rather than separately for each syntax extension kind.
Also, the standard expected/found wording is used.
2019-07-11 00:12:08 +03:00
Vadim Petrochenkov
f16993d4ac
resolve/expand: resolve_macro_invocation no longer returns determinate errors
...
It either returns the indeterminacy error, or valid (but perhaps dummy) `SyntaxExtension`.
With this change enum `Determinacy` is no longer used in libsyntax and can be moved to resolve.
The regressions in diagnosics are fixed in the next commits.
2019-07-11 00:12:08 +03:00
Vadim Petrochenkov
cd0fd630e8
resolve: Make proc macro stubs less stubby
...
Create real working and registered (even if dummy) `SyntaxExtension`s for them.
This improves error recovery and allows to avoid all special cases for proc macro stubs (except for the error on use, of course).
The introduced dummy `SyntaxExtension`s can be used for any other inappropriately resolved macros as well.
2019-07-11 00:12:08 +03:00
Vadim Petrochenkov
aff9738462
hygiene: Reuse MacroKind in ExpnKind
...
Orthogonality and reuse are good.
2019-07-11 00:12:08 +03:00