Skip to content

Don't synthesize host effect args inside trait object types - #119540

Merged
bors merged 1 commit into
rust-lang:masterfrom
fmease:no-effect-args-inside-dyn-trait
Jan 4, 2024
Merged

Don't synthesize host effect args inside trait object types#119540
bors merged 1 commit into
rust-lang:masterfrom
fmease:no-effect-args-inside-dyn-trait

Conversation

@fmease

@fmeasefmease commented Jan 3, 2024

Copy link
Copy Markdown
Member

While we were indeed emitting an error for ~const & const trait bounds in trait object types, we were still synthesizing host effect args for them.

Since we don't record the original trait bound modifiers for dyn-Trait in hir::TyKind::TraitObject (unlike we do for let's say impl-Trait, hir::TyKind::OpaqueTy), AstConv just assumes ty::BoundConstness::NotConst in conv_object_ty_poly_trait_ref which given <host> dyn ~const NonConstTrait resulted in us not realizing that ~const was used on a non-const trait which lead to a failed assertion in the end.

Instead of updating hir::TyKind::TraitObject to track this kind of information, just strip the user-provided constness (similar to #119505).

Fixes#119524.

@rustbot

Copy link
Copy Markdown
Collaborator

r? @wesleywiser

(rustbot has picked a reviewer for you, use r? to override)

@rustbotrustbot 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 Jan 3, 2024
@fmeasefmease added the F-effects `#![feature(effects)]` label Jan 3, 2024
@compiler-errors

Copy link
Copy Markdown
Contributor

@bors r+

@bors

bors commented Jan 3, 2024

Copy link
Copy Markdown
Collaborator

📌 Commit 695a02e has been approved by compiler-errors

It is now in the queue for this repository.

@borsbors 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 Jan 3, 2024
@compiler-errors

Copy link
Copy Markdown
Contributor

@bors rollup

matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Jan 3, 2024
…rait, r=compiler-errors
Don't synthesize host effect args inside trait object types
While we were indeed emitting an error for `~const` & `const` trait bounds in trait object types, we were still synthesizing host effect args for them.
Since we don't record the original trait bound modifiers for dyn-Trait in `hir::TyKind::TraitObject` (unlike we do for let's say impl-Trait, `hir::TyKind::OpaqueTy`), AstConv just assumes `ty::BoundConstness::NotConst` in `conv_object_ty_poly_trait_ref` which given `<host> dyn ~const NonConstTrait` resulted in us not realizing that `~const` was used on a non-const trait which lead to a failed assertion in the end.
Instead of updating `hir::TyKind::TraitObject` to track this kind of information, just strip the user-provided constness (similar to rust-lang#119505).
Fixesrust-lang#119524.
bors added a commit to rust-lang-ci/rust that referenced this pull request Jan 4, 2024
…iaskrgr
Rollup of 8 pull requests
Successful merges:
- rust-lang#119184 (Switch from using `//~ERROR` annotations with `--error-format` to `error-pattern`)
- rust-lang#119325 (custom mir: make it clear what the return block is)
- rust-lang#119391 (Use Result::flatten in catch_with_exit_code)
- rust-lang#119397 (Recover parentheses in range patterns)
- rust-lang#119414 (bootstrap: Move -Clto= setting from Rustc::run to rustc_cargo)
- rust-lang#119417 (Uplift some miscellaneous coroutine-specific machinery into `check_closure`)
- rust-lang#119527 (don't reexport atomic::ordering via rustc_data_structures, use std import)
- rust-lang#119540 (Don't synthesize host effect args inside trait object types)
r? `@ghost`
`@rustbot` modify labels: rollup
compiler-errors added a commit to compiler-errors/rust that referenced this pull request Jan 4, 2024
…rait, r=compiler-errors
Don't synthesize host effect args inside trait object types
While we were indeed emitting an error for `~const` & `const` trait bounds in trait object types, we were still synthesizing host effect args for them.
Since we don't record the original trait bound modifiers for dyn-Trait in `hir::TyKind::TraitObject` (unlike we do for let's say impl-Trait, `hir::TyKind::OpaqueTy`), AstConv just assumes `ty::BoundConstness::NotConst` in `conv_object_ty_poly_trait_ref` which given `<host> dyn ~const NonConstTrait` resulted in us not realizing that `~const` was used on a non-const trait which lead to a failed assertion in the end.
Instead of updating `hir::TyKind::TraitObject` to track this kind of information, just strip the user-provided constness (similar to rust-lang#119505).
Fixesrust-lang#119524.
bors added a commit to rust-lang-ci/rust that referenced this pull request Jan 4, 2024
…mpiler-errors
Rollup of 10 pull requests
Successful merges:
- rust-lang#118521 (Enable address sanitizer for MSVC targets using INFERASANLIBS linker flag)
- rust-lang#119026 (std::net::bind using -1 for openbsd which in turn sets it to somaxconn.)
- rust-lang#119195 (Make named_asm_labels lint not trigger on unicode and trigger on format args)
- rust-lang#119204 (macro_rules: Less hacky heuristic for using `tt` metavariable spans)
- rust-lang#119362 (Make `derive(Trait)` suggestion more accurate)
- rust-lang#119397 (Recover parentheses in range patterns)
- rust-lang#119414 (bootstrap: Move -Clto= setting from Rustc::run to rustc_cargo)
- rust-lang#119417 (Uplift some miscellaneous coroutine-specific machinery into `check_closure`)
- rust-lang#119540 (Don't synthesize host effect args inside trait object types)
- rust-lang#119555 (Add codegen test for RVO on MaybeUninit)
r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request Jan 4, 2024
…mpiler-errors
Rollup of 10 pull requests
Successful merges:
- rust-lang#118521 (Enable address sanitizer for MSVC targets using INFERASANLIBS linker flag)
- rust-lang#119026 (std::net::bind using -1 for openbsd which in turn sets it to somaxconn.)
- rust-lang#119195 (Make named_asm_labels lint not trigger on unicode and trigger on format args)
- rust-lang#119204 (macro_rules: Less hacky heuristic for using `tt` metavariable spans)
- rust-lang#119362 (Make `derive(Trait)` suggestion more accurate)
- rust-lang#119397 (Recover parentheses in range patterns)
- rust-lang#119414 (bootstrap: Move -Clto= setting from Rustc::run to rustc_cargo)
- rust-lang#119417 (Uplift some miscellaneous coroutine-specific machinery into `check_closure`)
- rust-lang#119540 (Don't synthesize host effect args inside trait object types)
- rust-lang#119555 (Add codegen test for RVO on MaybeUninit)
r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request Jan 4, 2024
…iaskrgr
Rollup of 10 pull requests
Successful merges:
- rust-lang#118521 (Enable address sanitizer for MSVC targets using INFERASANLIBS linker flag)
- rust-lang#119026 (std::net::bind using -1 for openbsd which in turn sets it to somaxconn.)
- rust-lang#119195 (Make named_asm_labels lint not trigger on unicode and trigger on format args)
- rust-lang#119204 (macro_rules: Less hacky heuristic for using `tt` metavariable spans)
- rust-lang#119362 (Make `derive(Trait)` suggestion more accurate)
- rust-lang#119397 (Recover parentheses in range patterns)
- rust-lang#119417 (Uplift some miscellaneous coroutine-specific machinery into `check_closure`)
- rust-lang#119539 (Fix typos)
- rust-lang#119540 (Don't synthesize host effect args inside trait object types)
- rust-lang#119555 (Add codegen test for RVO on MaybeUninit)
r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request Jan 4, 2024
…iaskrgr
Rollup of 10 pull requests
Successful merges:
- rust-lang#118521 (Enable address sanitizer for MSVC targets using INFERASANLIBS linker flag)
- rust-lang#119026 (std::net::bind using -1 for openbsd which in turn sets it to somaxconn.)
- rust-lang#119195 (Make named_asm_labels lint not trigger on unicode and trigger on format args)
- rust-lang#119204 (macro_rules: Less hacky heuristic for using `tt` metavariable spans)
- rust-lang#119362 (Make `derive(Trait)` suggestion more accurate)
- rust-lang#119397 (Recover parentheses in range patterns)
- rust-lang#119417 (Uplift some miscellaneous coroutine-specific machinery into `check_closure`)
- rust-lang#119539 (Fix typos)
- rust-lang#119540 (Don't synthesize host effect args inside trait object types)
- rust-lang#119555 (Add codegen test for RVO on MaybeUninit)
r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request Jan 4, 2024
…iaskrgr
Rollup of 10 pull requests
Successful merges:
- rust-lang#118521 (Enable address sanitizer for MSVC targets using INFERASANLIBS linker flag)
- rust-lang#119026 (std::net::bind using -1 for openbsd which in turn sets it to somaxconn.)
- rust-lang#119195 (Make named_asm_labels lint not trigger on unicode and trigger on format args)
- rust-lang#119204 (macro_rules: Less hacky heuristic for using `tt` metavariable spans)
- rust-lang#119362 (Make `derive(Trait)` suggestion more accurate)
- rust-lang#119397 (Recover parentheses in range patterns)
- rust-lang#119417 (Uplift some miscellaneous coroutine-specific machinery into `check_closure`)
- rust-lang#119539 (Fix typos)
- rust-lang#119540 (Don't synthesize host effect args inside trait object types)
- rust-lang#119555 (Add codegen test for RVO on MaybeUninit)
r? `@ghost`
`@rustbot` modify labels: rollup
@bors
bors merged commit f4335a4 into rust-lang:masterJan 4, 2024
@rustbotrustbot added this to the 1.77.0 milestone Jan 4, 2024
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Jan 4, 2024
Rollup merge of rust-lang#119540 - fmease:no-effect-args-inside-dyn-trait, r=compiler-errors
Don't synthesize host effect args inside trait object types
While we were indeed emitting an error for `~const` & `const` trait bounds in trait object types, we were still synthesizing host effect args for them.
Since we don't record the original trait bound modifiers for dyn-Trait in `hir::TyKind::TraitObject` (unlike we do for let's say impl-Trait, `hir::TyKind::OpaqueTy`), AstConv just assumes `ty::BoundConstness::NotConst` in `conv_object_ty_poly_trait_ref` which given `<host> dyn ~const NonConstTrait` resulted in us not realizing that `~const` was used on a non-const trait which lead to a failed assertion in the end.
Instead of updating `hir::TyKind::TraitObject` to track this kind of information, just strip the user-provided constness (similar to rust-lang#119505).
Fixesrust-lang#119524.
@fmease
fmease deleted the no-effect-args-inside-dyn-trait branch January 4, 2024 23:47
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

F-effects`#![feature(effects)]`S-waiting-on-borsStatus: Waiting on bors to run and complete tests. Bors will change the label on completion.T-compilerRelevant 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.

ICE: effects: assertion failed: constant == lifetime

5 participants

@fmease@rustbot@compiler-errors@bors@wesleywiser