Felix S. Klock II
c99303351d
Revised warning-downgrade strategy for nested impl trait.
...
Instead of a sticky-boolean flag that would downgrade errors to
warnings during further recursion into the type (which is overly broad
because we were not missing errors at arbitrarily deep levels), this
instead tracks state closer to what the original bug actually was.
In particular, the actual original bug was that we were failing to
record the existence of an outer `impl Trait` solely when it occurred
as an *immediate child* during the walk of the child types in
`visit_generic_args`.
Therefore, the correct way to precisely model when that bug would
manifest itself (and thus downgrade the error-to-warning accordingly)
is to track when those outer `impl Trait` cases were previously
unrecorded.
That's what this code does, by storing a flag with the recorded outer
`impl Trait` indicating at which point in the compiler's control flow
it had been stored.
I will note that this commit passes the current test suite. A
follow-up commit will also include tests illustrating the cases that
this commit gets right (and were handled incorrectly by the previous
sticky boolean).
2019-03-11 15:14:24 +01:00
Felix S. Klock II
d6cee67c27
Unit (and regression) tests for warning cycle code.
2019-03-08 16:36:37 +01:00
Felix S. Klock II
98e40170be
Temporarily emulate the (accidentally) omitted recursion during impl Trait check.
...
Note that the two previous visitors were omitting slightly different
recursive calls, so I need two flags to properly emulate them.
2019-03-08 16:36:28 +01:00
bors
b58a0061a3
Auto merge of #58903 - estebank:forgetful-delims, r=petrochenkov
...
Always emit unclosed delimiter diagnostics
Fix #58886 .
2019-03-08 08:39:13 +00:00
bors
0547ceb200
Auto merge of #58013 - Zoxc:stable-hash-macro-simple, r=oli-obk
...
Create a derive macro for HashStable and allow proc macros in rustc
A combination of https://github.com/rust-lang/rust/pull/56864 and https://github.com/rust-lang/rust/pull/56795 . There were complications with using `serde_derive` as rustc doesn't know which crate to use for the host when there is a serde_derive in the sysroot and cargo passes another on the command line built from crates.io.
r? @eddyb (for proc macro changes) @alexcrichton (for rustbuild changes) @michaelwoerister (for the macro itself)
2019-03-08 05:46:08 +00:00
Esteban Küber
551ea65c87
Rely on drop to emit unclosed delims
2019-03-06 19:09:24 -08:00
Esteban Küber
6f0f2fc6d6
Simplify code
2019-03-06 18:46:11 -08:00
Esteban Küber
3818f8ba34
Add regression test for #58886
2019-03-06 18:46:11 -08:00
Esteban Küber
f156d92207
Always emit mismatched delim errors, never panic
2019-03-06 18:46:11 -08:00
Esteban Küber
ac6cc2d6b0
Collect unclosed delimiters in parent parser
2019-03-06 18:46:11 -08:00
Esteban Küber
51d0e86c22
Emit missing unclosed delimiter errors
2019-03-06 18:46:11 -08:00
Esteban Küber
c70a516c23
Panic when unmatched delimiters aren't emitted
2019-03-06 18:46:11 -08:00
Esteban Küber
e38e915cdf
Reduce test case
2019-03-06 18:45:59 -08:00
Esteban Küber
ed2de5a842
Emit unclosed delimiters during recovery
2019-03-06 18:45:59 -08:00
Esteban Küber
cc535a2a19
Bail when encountering a second unexpected token in the same span
2019-03-06 18:45:59 -08:00
Esteban Küber
2ec7d0b228
Do not panic on missing close paren
...
Fix #58856 .
2019-03-06 18:45:59 -08:00
bors
88f755f8a8
Auto merge of #58583 - varkor:const-generics-ty, r=oli-obk
...
Add const generics to ty (and transitive dependencies)
Split out from #53645 . This work is a collaborative effort with @yodaldevoid.
There are a number of stubs. Some I plan to leave for the next PRs (e.g. `infer` and `rustdoc`). Others I can either fix up in this PR, or as follow ups (which would avoid the time-consuming rebasing).
It was a little hard to split this up, as so much depends on ty and friends. Apologies for the large diff.
r? @eddyb
2019-03-07 00:27:07 +00:00
John Kåre Alsaker
f2ef283b72
Make Cargo a rustc tool again
2019-03-06 18:48:08 +01:00
varkor
de4478af91
Refactor const_to_op
2019-03-06 09:58:27 +00:00
varkor
ed9227abbd
Make adjustments for comments
2019-03-05 22:49:37 +00:00
varkor
5c8b3c38f1
Fix rebase fallout
2019-03-05 22:31:06 +00:00
varkor
0da0457593
Clean up some generic substs handling
2019-03-05 22:20:17 +00:00
varkor
162405f222
Fix negative integer literal test
...
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:20:01 +00:00
varkor
3e3a4212e8
Update test fallout
...
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:20:01 +00:00
varkor
4c18ee4abd
Update const generics tests
...
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:20:01 +00:00
varkor
54b935b9b9
Handle const generics elsewhere
...
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:20:01 +00:00
varkor
c236c241e6
Handle const generics in typeck
...
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:20:01 +00:00
varkor
8e56729b4d
Handle new ConstValue variants in mir
...
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:19:26 +00:00
varkor
2dfde88438
Implement structural_impls for const generics
...
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:17:42 +00:00
varkor
133e776bf0
Add HAS_CT_INFER
...
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:17:41 +00:00
varkor
fc0fbe8bb5
Stub rustdoc const generics implementations
...
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:17:41 +00:00
varkor
eb2b8be6a0
Implement collect for const parameters
...
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:17:41 +00:00
varkor
3001ae7f94
Implement wfcheck for const parameters
...
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:13:11 +00:00
varkor
a8361eb6fa
Refactor compare_method
...
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:13:10 +00:00
varkor
f7cd97f786
Add ast_const_to_const
...
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:13:10 +00:00
varkor
f761c414b1
Make a lazy const from a const param
...
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:11:33 +00:00
varkor
0d1c9c08d7
Pretty printing for const generics
...
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:11:04 +00:00
varkor
cbf5d22bcd
Add const type flags
...
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:11:04 +00:00
varkor
29c272d4ed
Take const into account in context
...
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:10:24 +00:00
varkor
63b7572d0d
Stub methods in infer
...
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:10:02 +00:00
varkor
9a9aa5b46a
Implement Hash for new types
...
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:09:31 +00:00
varkor
73a6df6079
Update diagnostics to include const parameters
...
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:09:31 +00:00
varkor
f7f60eef50
Add type constraints from const parameters
...
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:09:31 +00:00
varkor
7f2a4f7822
Add ConstValue::Param and ConstValue::Infer
...
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:08:44 +00:00
varkor
1ebc858e5d
Add const kind and UnpackedKind::Const
...
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:08:44 +00:00
varkor
691d054e05
Take const generics into account when monomorphising
...
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:08:44 +00:00
varkor
2ce19ae3d1
Use non_erasable_generics for codegen
...
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:07:37 +00:00
varkor
386e9fbda2
Add type_flags helper methods to consts
...
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:07:37 +00:00
varkor
8cbbbaae6c
Add InferConst
...
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:07:37 +00:00
varkor
a36d386c6d
Add ConstVid
...
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:07:37 +00:00