Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Subtype predicates only exist on inference types, so we can allow them to register opaque types within them. #123979

Merged
merged 1 commit into from
Apr 16, 2024

Conversation

oli-obk
Copy link
Contributor

@oli-obk oli-obk commented Apr 15, 2024

We were unable to come up with an example where this could be reached (subtype predicates with either side not being an infer var gets consumed during any select_where_possible invocation, of which we have a lot in typeck). To ensure we don't silently accept new behaviour in case we missed a situation where this could occur, I have added an assert that prevents opaque types from having their hidden type constrained.

r? @compiler-errors

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Apr 15, 2024
@compiler-errors
Copy link
Member

@rustbot author

@rustbot rustbot added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Apr 15, 2024
@oli-obk oli-obk added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Apr 16, 2024
@compiler-errors
Copy link
Member

@bors r+

@bors
Copy link
Contributor

bors commented Apr 16, 2024

📌 Commit 82e7773 has been approved by compiler-errors

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Apr 16, 2024
bors added a commit to rust-lang-ci/rust that referenced this pull request Apr 16, 2024
…llaumeGomez

Rollup of 7 pull requests

Successful merges:

 - rust-lang#122811 (Move `SourceMap` initialization)
 - rust-lang#123512 (Match ergonomics 2024: Implement eat-one-layer)
 - rust-lang#123811 (Use queue-based `RwLock` on more platforms)
 - rust-lang#123859 (Remove uneeded clones now that TrustedStep implies Copy)
 - rust-lang#123979 (Subtype predicates only exist on inference types, so we can allow them to register opaque types within them.)
 - rust-lang#124016 (Outline default query and hook provider function implementations)
 - rust-lang#124023 (Allow workproducts without object files.)

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit f939d1f into rust-lang:master Apr 16, 2024
12 checks passed
@rustbot rustbot added this to the 1.79.0 milestone Apr 16, 2024
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Apr 16, 2024
Rollup merge of rust-lang#123979 - oli-obk:define_opaque_types7, r=compiler-errors

Subtype predicates only exist on inference types, so we can allow them to register opaque types within them.

We were unable to come up with an example where this could be reached (subtype predicates with either side not being an infer var gets consumed during any `select_where_possible` invocation, of which we have a lot in typeck). To ensure we don't silently accept new behaviour in case we missed a situation where this could occur, I have added an assert that prevents opaque types from having their hidden type constrained.

r? `@compiler-errors`
@oli-obk oli-obk deleted the define_opaque_types7 branch April 17, 2024 10:05
oli-obk added a commit to oli-obk/rust that referenced this pull request May 24, 2024
…s7, r=compiler-errors"

This reverts commit f939d1f, reversing
changes made to 183c706.
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request May 24, 2024
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request May 24, 2024
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request May 24, 2024
Rollup merge of rust-lang#125489 - oli-obk:revert_stuff_2, r=compiler-errors

Revert problematic opaque type change

fixes rust-lang#124891
fixes rust-lang#125192

reverts rust-lang#123979
c4rrao pushed a commit to Vudvud/rust that referenced this pull request May 25, 2024
…s7, r=compiler-errors"

This reverts commit f939d1f, reversing
changes made to 183c706.
c4rrao pushed a commit to Vudvud/rust that referenced this pull request May 25, 2024
Add a fast-path to `Debug` ASCII `&str`

Instead of going through the `EscapeDebug` machinery, we can just skip over ASCII chars that don’t need any escaping.

Introduce printable-ASCII fast-path for `impl Debug for str`

Instead of having a single loop that works on utf-8 `char`s,
this splits the implementation into a loop that quickly skips over
printable ASCII, falling back to per-char iteration for other chunks.

Switch to primarily using `&str`

Surprisingly, benchmarks have shown that using `&str`
instead of `&[u8]` with some `unsafe` code is actually faster.

Process a single not-ASCII-printable `char` per iteration

This avoids having to collect a non-ASCII-printable run before processing it.

std: simplify key-based thread locals

std: clean up the TLS implementation

Make clamp inline

Run rustfmt on files that need it.

Somehow these files aren't properly formatted. By default `x fmt` and `x
tidy` only check files that have changed against master, so if an
ill-formatted file somehow slips in it can stay that way as long as it
doesn't get modified(?)

I found these when I ran `x fmt` explicitly on every `.rs` file in the
repo, while working on
rust-lang/compiler-team#750.

Fix the dead link in the bootstrap README

Notify kobzol after changes to `opt-dist`

Revert "Rollup merge of rust-lang#123979 - oli-obk:define_opaque_types7, r=compiler-errors"

This reverts commit f939d1f, reversing
changes made to 183c706.

Add regression tests

Only suppress binop error in favor of semicolon suggestion if we're in an assignment statement

compiler: const_eval/transform/validate.rs -> mir_transform/validate.rs

compiler: unnest rustc_const_eval::check_consts

clippy: unnest check_consts

miri: receive the blessings of validate.rs

Migrate `run-make/rustdoc-with-output-dir-option` to `rmake.rs`

Fix some SIMD intrinsics documentation

Actually just remove the special case altogether

rustdoc-json: Add test for keywords with `--document-private-items`

tag more stuff with `WG-trait-system-refactor`

Warn/error on self ctor from outer item in inner item

(Mostly) revert "Account for type param from other item in `note_and_explain`"

This mostly reverts commit 7449478.
It also removes an `opt_param_at` that really is unnecessary given our
ICE policy for malformed intrinsics.

Update cargo

use posix_memalign on most Unix targets

fix typo

Co-authored-by: Jubilee <46493976+workingjubilee@users.noreply.github.com>

Fail relating constants of different types

Use regular type equating instead of a custom query

Bump bootstrap compiler to the latest beta compiler

Remove now outdated comment since we bumped stage0

Stop using the avx512er and avx512pf x86 target features

They are no longer supported by LLVM 19.

Fixes rust-lang#125492

remove proof tree formatter, make em shallow

Don't eagerly monomorphize drop for types that are impossible to instantiate

Better ICE message for unresolved upvars

Structurally resolve before builtin_index in EUV

Add manual Sync impl for ReentrantLockGuard

Fixes: rust-lang#125526
cuviper pushed a commit to cuviper/rust that referenced this pull request Jun 6, 2024
…s7, r=compiler-errors"

This reverts commit f939d1f, reversing
changes made to 183c706.

(cherry picked from commit 56c135c)
MabezDev pushed a commit to esp-rs/rust that referenced this pull request Jun 11, 2024
…s7, r=compiler-errors"

This reverts commit f939d1f, reversing
changes made to 183c706.

(cherry picked from commit 56c135c)
jieyouxu added a commit to jieyouxu/rust that referenced this pull request Jun 19, 2024
…-errors

Allow constraining opaque types during subtyping in the trait system

Previous attempt: rust-lang#123979

Sometimes we don't immediately perform subtyping, but instead register a subtyping obligation and solve that obligation when its inference variables become resolved. Unlike immediate subtyping, we currently do not allow registering hidden types for opaque types. This PR also allows that.
fmease added a commit to fmease/rust that referenced this pull request Jun 19, 2024
…-errors

Allow constraining opaque types during subtyping in the trait system

Previous attempt: rust-lang#123979

Sometimes we don't immediately perform subtyping, but instead register a subtyping obligation and solve that obligation when its inference variables become resolved. Unlike immediate subtyping, we currently do not allow registering hidden types for opaque types. This PR also allows that.
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Jun 19, 2024
Rollup merge of rust-lang#125447 - oli-obk:eq_opaque_pred, r=compiler-errors

Allow constraining opaque types during subtyping in the trait system

Previous attempt: rust-lang#123979

Sometimes we don't immediately perform subtyping, but instead register a subtyping obligation and solve that obligation when its inference variables become resolved. Unlike immediate subtyping, we currently do not allow registering hidden types for opaque types. This PR also allows that.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants