Oli Scherer
7f608eb9ed
Prevent two opaque types in their defining scopes from being defined via the other
2022-02-02 15:40:12 +00:00
Oli Scherer
bae04fb3de
Ensure we error in case of non-higher-kinded lifetimes
2022-02-02 15:40:12 +00:00
Oli Scherer
7a1ccf9a03
Avoid an ICE in the presence of HKL
2022-02-02 15:40:12 +00:00
Oli Scherer
ebf2772c58
Add regression test
2022-02-02 15:40:12 +00:00
Oli Scherer
ee2158f1ee
run rustfmt
2022-02-02 15:40:12 +00:00
Oli Scherer
59d0bff0e6
Reduce follow-up errors that are not helpful
2022-02-02 15:40:12 +00:00
Oli Scherer
6560d77a53
Bail out early if there already were errors
2022-02-02 15:40:12 +00:00
Oli Scherer
29c8732436
Make the error for opaque types that have no hidden types a bit informative
2022-02-02 15:40:12 +00:00
Oli Scherer
4d2e965106
Make a span more useful
2022-02-02 15:40:12 +00:00
Oli Scherer
5518d1931d
Guess head span of async blocks
2022-02-02 15:40:12 +00:00
Oli Scherer
7fd9c7e6de
undo a useless change
2022-02-02 15:40:12 +00:00
Oli Scherer
b6d57ecc0b
Hide further opaque type errors if items that could constrain the opaque type have errors
2022-02-02 15:40:12 +00:00
Oli Scherer
e4794d9d1b
Undo a change that is now unnecessary
2022-02-02 15:40:12 +00:00
Oli Scherer
c564898110
Remove a now-useless field
2022-02-02 15:40:12 +00:00
Oli Scherer
3d4b9b8b8b
Remove some unused arguments and update a comment
2022-02-02 15:40:12 +00:00
Oli Scherer
dc36b38526
Make a comment more obvious
2022-02-02 15:40:12 +00:00
Oli Scherer
d3b534b6b5
manual formatting
2022-02-02 15:40:12 +00:00
Oli Scherer
d8c29b3e28
Simplify diff
2022-02-02 15:40:11 +00:00
Oli Scherer
dbda675419
Undo a diff
2022-02-02 15:40:11 +00:00
Oli Scherer
b45fabddfd
Inline a function that is only used once
2022-02-02 15:40:11 +00:00
Oli Scherer
d35d1ef4f5
Remove unnecessary field
2022-02-02 15:40:11 +00:00
Oli Scherer
5b49b8e2d5
Remove unnecessary closure in favour of just passing the argument directly
2022-02-02 15:40:11 +00:00
Oli Scherer
fcba8d31c4
Remove the Instantiator now that we don't recurse within it anymore
2022-02-02 15:40:11 +00:00
Oli Scherer
e03edd287e
Inline a function that is only ever used in one place
2022-02-02 15:40:11 +00:00
Oli Scherer
22477784a7
Fixup changes that aren't neccessary anymore
2022-02-02 15:40:11 +00:00
Oli Scherer
94d6a9acc9
This can't happen anymore. An opaque type can't end up with itself as its hidden type
2022-02-02 15:40:11 +00:00
Oli Scherer
3146c961fe
We're equating hidden types eagerly now
2022-02-02 15:40:11 +00:00
Oli Scherer
5a374dc813
Add some tests to show what happens when you compare two opaque types that are both within the defining scope
2022-02-02 15:40:11 +00:00
Oli Scherer
cbfd736292
Update an outdated test explanation
2022-02-02 15:40:11 +00:00
Oli Scherer
77aacc1768
Test recursive TAIT declarations
2022-02-02 15:40:11 +00:00
Oli Scherer
7795f6233c
Add explanation for early abort in TAIT hidden type computation
2022-02-02 15:40:11 +00:00
Oli Scherer
64c5b9a3d6
Add backcompat hack to support
...
```rust
fn foo() -> impl MyTrait {
panic!();
MyStruct
}
struct MyStruct;
trait MyTrait {}
impl MyTrait for MyStruct {}
```
2022-02-02 15:40:11 +00:00
Oli Scherer
edaf9625fb
Clean up leftovers from eager hidden type merging
2022-02-02 15:40:11 +00:00
Oli Scherer
38f50d1ecb
Eagerly merge hidden types.
2022-02-02 15:40:11 +00:00
Oli Scherer
a745797142
Stop generating inference vars for nested impl trait and let type equality handle it.
...
This means we stop supporting the case where a locally defined trait has only a single impl so we can always use that impl (see nested-tait-inference.rs).
2022-02-02 15:40:11 +00:00
Oli Scherer
7bce50c01a
Register member constraints on the final merged hidden type
...
Previously we did this per hidden type candiate, which didn't always have all the information available.
2022-02-02 15:40:11 +00:00
Oli Scherer
9110911353
bless
2022-02-02 15:40:11 +00:00
Oli Scherer
0f6e06b7c0
Lazily resolve type-alias-impl-trait defining uses
...
by using an opaque type obligation to bubble up comparisons between opaque types and other types
Also uses proper obligation causes so that the body id works, because out of some reason nll uses body ids for logic instead of just diagnostics.
2022-02-02 15:40:11 +00:00
Oli Scherer
8d2b598459
More sanity checks
2022-02-02 15:40:10 +00:00
Oli Scherer
f7abc1b6f8
Expose current span to type equality checking in nll
2022-02-02 15:40:10 +00:00
Oli Scherer
47a6a24d51
Add a convenient way to inject rustc flags somewhere late in the bootstrap pipeline without causing rebuilds
...
Useful for -Ztreat-err-as-bug
2022-02-02 15:40:10 +00:00
Oli Scherer
4e1a5968f1
Found suspicious comparison of constants
2022-02-02 15:40:10 +00:00
Oli Scherer
bbbdcb327f
Update some comments
2022-02-02 15:40:10 +00:00
Oli Scherer
a4c1cec4f8
Add some sanity assertions to make sure we use the opaque types correctly
2022-02-02 15:40:10 +00:00
Oli Scherer
d49b0746f6
Add roll back infrastructure for opaque type caches
2022-02-02 15:40:10 +00:00
bors
dca1e7aa5a
Auto merge of #93154 - michaelwoerister:fix-generic-closure-and-generator-debuginfo, r=wesleywiser
...
debuginfo: Make sure that type names for closure and generator environments are unique in debuginfo.
Before this change, closure/generator environments coming from different instantiations of the same generic function were all assigned the same name even though they were distinct types with potentially different data layout. Now we append the generic arguments of the originating function to the type name.
This commit also emits `{closure_env#0}` as the name of these types in order to disambiguate them from the accompanying closure function (which keeps being called `{closure#0}`). Previously both were assigned the same name.
NOTE: Changing debuginfo names like this can break pretty printers and other debugger plugins. I think it's OK in this particular case because the names we are changing were ambiguous anyway. In general though it would be great to have a process for doing changes like these.
2022-02-02 12:37:28 +00:00
bors
250384edc5
Auto merge of #93573 - matthiaskrgr:rollup-nrjmygz, r=matthiaskrgr
...
Rollup of 7 pull requests
Successful merges:
- #92758 (librustdoc: impl core::fmt::Write for rustdoc::html::render::Buffer)
- #92788 (Detect `::` -> `:` typo in type argument)
- #93420 (Improve wrapping on settings page)
- #93493 (Document valid values of the char type)
- #93531 (Fix incorrect panic message in example)
- #93559 (Add missing | between print options)
- #93560 (Fix two incorrect "it's" (typos in comments))
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
2022-02-02 09:39:18 +00:00
Matthias Krüger
344bb59530
Rollup merge of #93560 - steffahn:a_typo, r=petrochenkov
...
Fix two incorrect "it's" (typos in comments)
Found one of these while reading the documentation online. The other came up because it's in the same file.
2022-02-02 07:11:09 +01:00
Matthias Krüger
c483b9f1bf
Rollup merge of #93559 - danielframpton:link-args-typo, r=oli-obk
...
Add missing | between print options
The help text for the newly stabilized print option is missing a | between stack-protector-strategies and link-args.
2022-02-02 07:11:08 +01:00
Matthias Krüger
b836b281a8
Rollup merge of #93531 - TheColdVoid:patch-1, r=m-ou-se
...
Fix incorrect panic message in example
The panic message when calling the `connect()` should probably be a message about connection failure, not a message about binding address failure.
2022-02-02 07:11:07 +01:00