Assert that explicit_super_predicates_of and explicit_item_super_predicates truly only contains bounds for the type itself - #130666

Merged
bors merged 2 commits into
rust-lang:masterfrom
compiler-errors:super-bounds
Sep 22, 2024
Merged

Assert that explicit_super_predicates_of and explicit_item_super_predicates truly only contains bounds for the type itself#130666
bors merged 2 commits into
rust-lang:masterfrom
compiler-errors:super-bounds

Conversation

@compiler-errors

Copy link
Copy Markdown
Contributor

We distinguish implied predicates (anything that is implied from elaborating a trait bound) from super predicates, which are are the subset of implied predicates that share the same self type as the trait predicate we're elaborating. This was originally done in #107614, which fixed a large class of ICEs and strange errors where the compiler expected the self type of a trait predicate not to change when elaborating super predicates.

Specifically, super predicates are special for various reasons: they're the valid candidates for trait upcasting, are the only predicates we elaborate when doing closure signature inference, etc. So making sure that we get this list correct and don't accidentally "leak" any other predicates into this list is quite important.

This PR adds some debug assertions that we're in fact not doing so, and it fixes an oversight in the effect desugaring rework.

@rustbot

Copy link
Copy Markdown
Collaborator

r? @davidtwco

rustbot has assigned @davidtwco.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@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 Sep 21, 2024
@rustbot

Copy link
Copy Markdown
Collaborator

HIR ty lowering was modified

cc @fmease

@compiler-errorscompiler-errors changed the title Assert that explicit_super_predicates_of and explicit_item_bounds truly only bounds for the type itselfAssert that explicit_super_predicates_of and explicit_item_super_predicates truly only bounds for the type itselfSep 21, 2024
@compiler-errors

This comment was marked as resolved.

@rustbot

This comment was marked as resolved.

@compiler-errors

This comment was marked as resolved.

@compiler-errorscompiler-errors changed the title Assert that explicit_super_predicates_of and explicit_item_super_predicates truly only bounds for the type itselfAssert that explicit_super_predicates_of and explicit_item_super_predicates truly only contains bounds for the type itselfSep 21, 2024

@fee1-deadfee1-dead left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@fee1-dead

Copy link
Copy Markdown
Member

@bors r+
r? @fee1-dead

@bors

bors commented Sep 21, 2024

Copy link
Copy Markdown
Collaborator

📌 Commit 55db3ff has been approved by fee1-dead

It is now in the queue for this repository.

@rustbotrustbot assigned fee1-dead and unassigned davidtwcoSep 21, 2024
@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 Sep 21, 2024
fmease

This comment was marked as duplicate.

@compiler-errors

Copy link
Copy Markdown
ContributorAuthor

@bors r=fee1-dead,fmease rollup

@bors

bors commented Sep 21, 2024

Copy link
Copy Markdown
Collaborator

📌 Commit 4f3d06f has been approved by fee1-dead,fmease

It is now in the queue for this repository.

matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Sep 21, 2024
…e1-dead,fmease
Assert that `explicit_super_predicates_of` and `explicit_item_super_predicates` truly only contains bounds for the type itself
We distinguish _implied_ predicates (anything that is implied from elaborating a trait bound) from _super_ predicates, which are are the subset of implied predicates that share the same self type as the trait predicate we're elaborating. This was originally done in rust-lang#107614, which fixed a large class of ICEs and strange errors where the compiler expected the self type of a trait predicate not to change when elaborating super predicates.
Specifically, super predicates are special for various reasons: they're the valid candidates for trait upcasting, are the only predicates we elaborate when doing closure signature inference, etc. So making sure that we get this list correct and don't accidentally "leak" any other predicates into this list is quite important.
This PR adds some debug assertions that we're in fact not doing so, and it fixes an oversight in the effect desugaring rework.
bors added a commit to rust-lang-ci/rust that referenced this pull request Sep 21, 2024
…iaskrgr
Rollup of 9 pull requests
Successful merges:
- rust-lang#127766 (add `extern "C-cmse-nonsecure-entry" fn` )
- rust-lang#129629 (Implement Return Type Notation (RTN)'s path form in where clauses)
- rust-lang#130246 (rustc_expand: remember module `#[path]`s during expansion)
- rust-lang#130408 (Avoid re-validating UTF-8 in `FromUtf8Error::into_utf8_lossy`)
- rust-lang#130651 (Add --enable-profiler to armhf dist)
- rust-lang#130653 (ABI compatibility: mention Result guarantee)
- rust-lang#130665 (Prevent Deduplication of `LongRunningWarn`)
- rust-lang#130666 (Assert that `explicit_super_predicates_of` and `explicit_item_super_predicates` truly only contains bounds for the type itself)
- rust-lang#130667 (compiler: Accept "improper" ctypes in extern "rust-cold" fn)
r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request Sep 21, 2024
…mpiler-errors
Rollup of 8 pull requests
Successful merges:
- rust-lang#127766 (add `extern "C-cmse-nonsecure-entry" fn` )
- rust-lang#129629 (Implement Return Type Notation (RTN)'s path form in where clauses)
- rust-lang#130408 (Avoid re-validating UTF-8 in `FromUtf8Error::into_utf8_lossy`)
- rust-lang#130651 (Add --enable-profiler to armhf dist)
- rust-lang#130653 (ABI compatibility: mention Result guarantee)
- rust-lang#130666 (Assert that `explicit_super_predicates_of` and `explicit_item_super_predicates` truly only contains bounds for the type itself)
- rust-lang#130667 (compiler: Accept "improper" ctypes in extern "rust-cold" fn)
- rust-lang#130673 (Parser: recover from `:::` to `::`)
r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request Sep 21, 2024
…mpiler-errors
Rollup of 8 pull requests
Successful merges:
- rust-lang#127766 (add `extern "C-cmse-nonsecure-entry" fn` )
- rust-lang#129629 (Implement Return Type Notation (RTN)'s path form in where clauses)
- rust-lang#130408 (Avoid re-validating UTF-8 in `FromUtf8Error::into_utf8_lossy`)
- rust-lang#130651 (Add --enable-profiler to armhf dist)
- rust-lang#130653 (ABI compatibility: mention Result guarantee)
- rust-lang#130666 (Assert that `explicit_super_predicates_of` and `explicit_item_super_predicates` truly only contains bounds for the type itself)
- rust-lang#130667 (compiler: Accept "improper" ctypes in extern "rust-cold" fn)
- rust-lang#130673 (Parser: recover from `:::` to `::`)
r? `@ghost`
`@rustbot` modify labels: rollup
@bors
bors merged commit d1b43d0 into rust-lang:masterSep 22, 2024
@rustbotrustbot added this to the 1.83.0 milestone Sep 22, 2024
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Sep 22, 2024
Rollup merge of rust-lang#130666 - compiler-errors:super-bounds, r=fee1-dead,fmease
Assert that `explicit_super_predicates_of` and `explicit_item_super_predicates` truly only contains bounds for the type itself
We distinguish _implied_ predicates (anything that is implied from elaborating a trait bound) from _super_ predicates, which are are the subset of implied predicates that share the same self type as the trait predicate we're elaborating. This was originally done in rust-lang#107614, which fixed a large class of ICEs and strange errors where the compiler expected the self type of a trait predicate not to change when elaborating super predicates.
Specifically, super predicates are special for various reasons: they're the valid candidates for trait upcasting, are the only predicates we elaborate when doing closure signature inference, etc. So making sure that we get this list correct and don't accidentally "leak" any other predicates into this list is quite important.
This PR adds some debug assertions that we're in fact not doing so, and it fixes an oversight in the effect desugaring rework.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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.

6 participants

@compiler-errors@rustbot@fee1-dead@bors@fmease@davidtwco
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Assert that explicit_super_predicates_of and explicit_item_super_predicates truly only contains bounds for the type itself - #130666

Merged
bors merged 2 commits into
rust-lang:masterfrom
compiler-errors:super-bounds
Sep 22, 2024
Merged

Assert that explicit_super_predicates_of and explicit_item_super_predicates truly only contains bounds for the type itself#130666
bors merged 2 commits into
rust-lang:masterfrom
compiler-errors:super-bounds

Conversation

@compiler-errors

Copy link
Copy Markdown
Contributor

We distinguish implied predicates (anything that is implied from elaborating a trait bound) from super predicates, which are are the subset of implied predicates that share the same self type as the trait predicate we're elaborating. This was originally done in #107614, which fixed a large class of ICEs and strange errors where the compiler expected the self type of a trait predicate not to change when elaborating super predicates.

Specifically, super predicates are special for various reasons: they're the valid candidates for trait upcasting, are the only predicates we elaborate when doing closure signature inference, etc. So making sure that we get this list correct and don't accidentally "leak" any other predicates into this list is quite important.

This PR adds some debug assertions that we're in fact not doing so, and it fixes an oversight in the effect desugaring rework.

@rustbot

Copy link
Copy Markdown
Collaborator

r? @davidtwco

rustbot has assigned @davidtwco.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@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 Sep 21, 2024
@rustbot

Copy link
Copy Markdown
Collaborator

HIR ty lowering was modified

cc @fmease

@compiler-errorscompiler-errors changed the title Assert that explicit_super_predicates_of and explicit_item_bounds truly only bounds for the type itselfAssert that explicit_super_predicates_of and explicit_item_super_predicates truly only bounds for the type itselfSep 21, 2024
@compiler-errors

This comment was marked as resolved.

@rustbot

This comment was marked as resolved.

@compiler-errors

This comment was marked as resolved.

@compiler-errorscompiler-errors changed the title Assert that explicit_super_predicates_of and explicit_item_super_predicates truly only bounds for the type itselfAssert that explicit_super_predicates_of and explicit_item_super_predicates truly only contains bounds for the type itselfSep 21, 2024

@fee1-deadfee1-dead left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@fee1-dead

Copy link
Copy Markdown
Member

@bors r+
r? @fee1-dead

@bors

bors commented Sep 21, 2024

Copy link
Copy Markdown
Collaborator

📌 Commit 55db3ff has been approved by fee1-dead

It is now in the queue for this repository.

@rustbotrustbot assigned fee1-dead and unassigned davidtwcoSep 21, 2024
@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 Sep 21, 2024
fmease

This comment was marked as duplicate.

@compiler-errors

Copy link
Copy Markdown
ContributorAuthor

@bors r=fee1-dead,fmease rollup

@bors

bors commented Sep 21, 2024

Copy link
Copy Markdown
Collaborator

📌 Commit 4f3d06f has been approved by fee1-dead,fmease

It is now in the queue for this repository.

matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Sep 21, 2024
…e1-dead,fmease
Assert that `explicit_super_predicates_of` and `explicit_item_super_predicates` truly only contains bounds for the type itself
We distinguish _implied_ predicates (anything that is implied from elaborating a trait bound) from _super_ predicates, which are are the subset of implied predicates that share the same self type as the trait predicate we're elaborating. This was originally done in rust-lang#107614, which fixed a large class of ICEs and strange errors where the compiler expected the self type of a trait predicate not to change when elaborating super predicates.
Specifically, super predicates are special for various reasons: they're the valid candidates for trait upcasting, are the only predicates we elaborate when doing closure signature inference, etc. So making sure that we get this list correct and don't accidentally "leak" any other predicates into this list is quite important.
This PR adds some debug assertions that we're in fact not doing so, and it fixes an oversight in the effect desugaring rework.
bors added a commit to rust-lang-ci/rust that referenced this pull request Sep 21, 2024
…iaskrgr
Rollup of 9 pull requests
Successful merges:
- rust-lang#127766 (add `extern "C-cmse-nonsecure-entry" fn` )
- rust-lang#129629 (Implement Return Type Notation (RTN)'s path form in where clauses)
- rust-lang#130246 (rustc_expand: remember module `#[path]`s during expansion)
- rust-lang#130408 (Avoid re-validating UTF-8 in `FromUtf8Error::into_utf8_lossy`)
- rust-lang#130651 (Add --enable-profiler to armhf dist)
- rust-lang#130653 (ABI compatibility: mention Result guarantee)
- rust-lang#130665 (Prevent Deduplication of `LongRunningWarn`)
- rust-lang#130666 (Assert that `explicit_super_predicates_of` and `explicit_item_super_predicates` truly only contains bounds for the type itself)
- rust-lang#130667 (compiler: Accept "improper" ctypes in extern "rust-cold" fn)
r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request Sep 21, 2024
…mpiler-errors
Rollup of 8 pull requests
Successful merges:
- rust-lang#127766 (add `extern "C-cmse-nonsecure-entry" fn` )
- rust-lang#129629 (Implement Return Type Notation (RTN)'s path form in where clauses)
- rust-lang#130408 (Avoid re-validating UTF-8 in `FromUtf8Error::into_utf8_lossy`)
- rust-lang#130651 (Add --enable-profiler to armhf dist)
- rust-lang#130653 (ABI compatibility: mention Result guarantee)
- rust-lang#130666 (Assert that `explicit_super_predicates_of` and `explicit_item_super_predicates` truly only contains bounds for the type itself)
- rust-lang#130667 (compiler: Accept "improper" ctypes in extern "rust-cold" fn)
- rust-lang#130673 (Parser: recover from `:::` to `::`)
r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request Sep 21, 2024
…mpiler-errors
Rollup of 8 pull requests
Successful merges:
- rust-lang#127766 (add `extern "C-cmse-nonsecure-entry" fn` )
- rust-lang#129629 (Implement Return Type Notation (RTN)'s path form in where clauses)
- rust-lang#130408 (Avoid re-validating UTF-8 in `FromUtf8Error::into_utf8_lossy`)
- rust-lang#130651 (Add --enable-profiler to armhf dist)
- rust-lang#130653 (ABI compatibility: mention Result guarantee)
- rust-lang#130666 (Assert that `explicit_super_predicates_of` and `explicit_item_super_predicates` truly only contains bounds for the type itself)
- rust-lang#130667 (compiler: Accept "improper" ctypes in extern "rust-cold" fn)
- rust-lang#130673 (Parser: recover from `:::` to `::`)
r? `@ghost`
`@rustbot` modify labels: rollup
@bors
bors merged commit d1b43d0 into rust-lang:masterSep 22, 2024
@rustbotrustbot added this to the 1.83.0 milestone Sep 22, 2024
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Sep 22, 2024
Rollup merge of rust-lang#130666 - compiler-errors:super-bounds, r=fee1-dead,fmease
Assert that `explicit_super_predicates_of` and `explicit_item_super_predicates` truly only contains bounds for the type itself
We distinguish _implied_ predicates (anything that is implied from elaborating a trait bound) from _super_ predicates, which are are the subset of implied predicates that share the same self type as the trait predicate we're elaborating. This was originally done in rust-lang#107614, which fixed a large class of ICEs and strange errors where the compiler expected the self type of a trait predicate not to change when elaborating super predicates.
Specifically, super predicates are special for various reasons: they're the valid candidates for trait upcasting, are the only predicates we elaborate when doing closure signature inference, etc. So making sure that we get this list correct and don't accidentally "leak" any other predicates into this list is quite important.
This PR adds some debug assertions that we're in fact not doing so, and it fixes an oversight in the effect desugaring rework.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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.

6 participants

@compiler-errors@rustbot@fee1-dead@bors@fmease@davidtwco
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Assert that explicit_super_predicates_of and explicit_item_super_predicates truly only contains bounds for the type itself - #130666

Merged
bors merged 2 commits into
rust-lang:masterfrom
compiler-errors:super-bounds
Sep 22, 2024
Merged

Assert that explicit_super_predicates_of and explicit_item_super_predicates truly only contains bounds for the type itself#130666
bors merged 2 commits into
rust-lang:masterfrom
compiler-errors:super-bounds

Conversation

@compiler-errors

Copy link
Copy Markdown
Contributor

We distinguish implied predicates (anything that is implied from elaborating a trait bound) from super predicates, which are are the subset of implied predicates that share the same self type as the trait predicate we're elaborating. This was originally done in #107614, which fixed a large class of ICEs and strange errors where the compiler expected the self type of a trait predicate not to change when elaborating super predicates.

Specifically, super predicates are special for various reasons: they're the valid candidates for trait upcasting, are the only predicates we elaborate when doing closure signature inference, etc. So making sure that we get this list correct and don't accidentally "leak" any other predicates into this list is quite important.

This PR adds some debug assertions that we're in fact not doing so, and it fixes an oversight in the effect desugaring rework.

@rustbot

Copy link
Copy Markdown
Collaborator

r? @davidtwco

rustbot has assigned @davidtwco.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@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 Sep 21, 2024
@rustbot

Copy link
Copy Markdown
Collaborator

HIR ty lowering was modified

cc @fmease

@compiler-errorscompiler-errors changed the title Assert that explicit_super_predicates_of and explicit_item_bounds truly only bounds for the type itselfAssert that explicit_super_predicates_of and explicit_item_super_predicates truly only bounds for the type itselfSep 21, 2024
@compiler-errors

This comment was marked as resolved.

@rustbot

This comment was marked as resolved.

@compiler-errors

This comment was marked as resolved.

@compiler-errorscompiler-errors changed the title Assert that explicit_super_predicates_of and explicit_item_super_predicates truly only bounds for the type itselfAssert that explicit_super_predicates_of and explicit_item_super_predicates truly only contains bounds for the type itselfSep 21, 2024

@fee1-deadfee1-dead left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@fee1-dead

Copy link
Copy Markdown
Member

@bors r+
r? @fee1-dead

@bors

bors commented Sep 21, 2024

Copy link
Copy Markdown
Collaborator

📌 Commit 55db3ff has been approved by fee1-dead

It is now in the queue for this repository.

@rustbotrustbot assigned fee1-dead and unassigned davidtwcoSep 21, 2024
@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 Sep 21, 2024
fmease

This comment was marked as duplicate.

@compiler-errors

Copy link
Copy Markdown
ContributorAuthor

@bors r=fee1-dead,fmease rollup

@bors

bors commented Sep 21, 2024

Copy link
Copy Markdown
Collaborator

📌 Commit 4f3d06f has been approved by fee1-dead,fmease

It is now in the queue for this repository.

matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Sep 21, 2024
…e1-dead,fmease
Assert that `explicit_super_predicates_of` and `explicit_item_super_predicates` truly only contains bounds for the type itself
We distinguish _implied_ predicates (anything that is implied from elaborating a trait bound) from _super_ predicates, which are are the subset of implied predicates that share the same self type as the trait predicate we're elaborating. This was originally done in rust-lang#107614, which fixed a large class of ICEs and strange errors where the compiler expected the self type of a trait predicate not to change when elaborating super predicates.
Specifically, super predicates are special for various reasons: they're the valid candidates for trait upcasting, are the only predicates we elaborate when doing closure signature inference, etc. So making sure that we get this list correct and don't accidentally "leak" any other predicates into this list is quite important.
This PR adds some debug assertions that we're in fact not doing so, and it fixes an oversight in the effect desugaring rework.
bors added a commit to rust-lang-ci/rust that referenced this pull request Sep 21, 2024
…iaskrgr
Rollup of 9 pull requests
Successful merges:
- rust-lang#127766 (add `extern "C-cmse-nonsecure-entry" fn` )
- rust-lang#129629 (Implement Return Type Notation (RTN)'s path form in where clauses)
- rust-lang#130246 (rustc_expand: remember module `#[path]`s during expansion)
- rust-lang#130408 (Avoid re-validating UTF-8 in `FromUtf8Error::into_utf8_lossy`)
- rust-lang#130651 (Add --enable-profiler to armhf dist)
- rust-lang#130653 (ABI compatibility: mention Result guarantee)
- rust-lang#130665 (Prevent Deduplication of `LongRunningWarn`)
- rust-lang#130666 (Assert that `explicit_super_predicates_of` and `explicit_item_super_predicates` truly only contains bounds for the type itself)
- rust-lang#130667 (compiler: Accept "improper" ctypes in extern "rust-cold" fn)
r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request Sep 21, 2024
…mpiler-errors
Rollup of 8 pull requests
Successful merges:
- rust-lang#127766 (add `extern "C-cmse-nonsecure-entry" fn` )
- rust-lang#129629 (Implement Return Type Notation (RTN)'s path form in where clauses)
- rust-lang#130408 (Avoid re-validating UTF-8 in `FromUtf8Error::into_utf8_lossy`)
- rust-lang#130651 (Add --enable-profiler to armhf dist)
- rust-lang#130653 (ABI compatibility: mention Result guarantee)
- rust-lang#130666 (Assert that `explicit_super_predicates_of` and `explicit_item_super_predicates` truly only contains bounds for the type itself)
- rust-lang#130667 (compiler: Accept "improper" ctypes in extern "rust-cold" fn)
- rust-lang#130673 (Parser: recover from `:::` to `::`)
r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request Sep 21, 2024
…mpiler-errors
Rollup of 8 pull requests
Successful merges:
- rust-lang#127766 (add `extern "C-cmse-nonsecure-entry" fn` )
- rust-lang#129629 (Implement Return Type Notation (RTN)'s path form in where clauses)
- rust-lang#130408 (Avoid re-validating UTF-8 in `FromUtf8Error::into_utf8_lossy`)
- rust-lang#130651 (Add --enable-profiler to armhf dist)
- rust-lang#130653 (ABI compatibility: mention Result guarantee)
- rust-lang#130666 (Assert that `explicit_super_predicates_of` and `explicit_item_super_predicates` truly only contains bounds for the type itself)
- rust-lang#130667 (compiler: Accept "improper" ctypes in extern "rust-cold" fn)
- rust-lang#130673 (Parser: recover from `:::` to `::`)
r? `@ghost`
`@rustbot` modify labels: rollup
@bors
bors merged commit d1b43d0 into rust-lang:masterSep 22, 2024
@rustbotrustbot added this to the 1.83.0 milestone Sep 22, 2024
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Sep 22, 2024
Rollup merge of rust-lang#130666 - compiler-errors:super-bounds, r=fee1-dead,fmease
Assert that `explicit_super_predicates_of` and `explicit_item_super_predicates` truly only contains bounds for the type itself
We distinguish _implied_ predicates (anything that is implied from elaborating a trait bound) from _super_ predicates, which are are the subset of implied predicates that share the same self type as the trait predicate we're elaborating. This was originally done in rust-lang#107614, which fixed a large class of ICEs and strange errors where the compiler expected the self type of a trait predicate not to change when elaborating super predicates.
Specifically, super predicates are special for various reasons: they're the valid candidates for trait upcasting, are the only predicates we elaborate when doing closure signature inference, etc. So making sure that we get this list correct and don't accidentally "leak" any other predicates into this list is quite important.
This PR adds some debug assertions that we're in fact not doing so, and it fixes an oversight in the effect desugaring rework.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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.

6 participants

@compiler-errors@rustbot@fee1-dead@bors@fmease@davidtwco
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Assert that explicit_super_predicates_of and explicit_item_super_predicates truly only contains bounds for the type itself - #130666

Merged
bors merged 2 commits into
rust-lang:masterfrom
compiler-errors:super-bounds
Sep 22, 2024
Merged

Assert that explicit_super_predicates_of and explicit_item_super_predicates truly only contains bounds for the type itself#130666
bors merged 2 commits into
rust-lang:masterfrom
compiler-errors:super-bounds

Conversation

@compiler-errors

Copy link
Copy Markdown
Contributor

We distinguish implied predicates (anything that is implied from elaborating a trait bound) from super predicates, which are are the subset of implied predicates that share the same self type as the trait predicate we're elaborating. This was originally done in #107614, which fixed a large class of ICEs and strange errors where the compiler expected the self type of a trait predicate not to change when elaborating super predicates.

Specifically, super predicates are special for various reasons: they're the valid candidates for trait upcasting, are the only predicates we elaborate when doing closure signature inference, etc. So making sure that we get this list correct and don't accidentally "leak" any other predicates into this list is quite important.

This PR adds some debug assertions that we're in fact not doing so, and it fixes an oversight in the effect desugaring rework.

@rustbot

Copy link
Copy Markdown
Collaborator

r? @davidtwco

rustbot has assigned @davidtwco.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@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 Sep 21, 2024
@rustbot

Copy link
Copy Markdown
Collaborator

HIR ty lowering was modified

cc @fmease

@compiler-errorscompiler-errors changed the title Assert that explicit_super_predicates_of and explicit_item_bounds truly only bounds for the type itselfAssert that explicit_super_predicates_of and explicit_item_super_predicates truly only bounds for the type itselfSep 21, 2024
@compiler-errors

This comment was marked as resolved.

@rustbot

This comment was marked as resolved.

@compiler-errors

This comment was marked as resolved.

@compiler-errorscompiler-errors changed the title Assert that explicit_super_predicates_of and explicit_item_super_predicates truly only bounds for the type itselfAssert that explicit_super_predicates_of and explicit_item_super_predicates truly only contains bounds for the type itselfSep 21, 2024

@fee1-deadfee1-dead left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@fee1-dead

Copy link
Copy Markdown
Member

@bors r+
r? @fee1-dead

@bors

bors commented Sep 21, 2024

Copy link
Copy Markdown
Collaborator

📌 Commit 55db3ff has been approved by fee1-dead

It is now in the queue for this repository.

@rustbotrustbot assigned fee1-dead and unassigned davidtwcoSep 21, 2024
@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 Sep 21, 2024
fmease

This comment was marked as duplicate.

@compiler-errors

Copy link
Copy Markdown
ContributorAuthor

@bors r=fee1-dead,fmease rollup

@bors

bors commented Sep 21, 2024

Copy link
Copy Markdown
Collaborator

📌 Commit 4f3d06f has been approved by fee1-dead,fmease

It is now in the queue for this repository.

matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Sep 21, 2024
…e1-dead,fmease
Assert that `explicit_super_predicates_of` and `explicit_item_super_predicates` truly only contains bounds for the type itself
We distinguish _implied_ predicates (anything that is implied from elaborating a trait bound) from _super_ predicates, which are are the subset of implied predicates that share the same self type as the trait predicate we're elaborating. This was originally done in rust-lang#107614, which fixed a large class of ICEs and strange errors where the compiler expected the self type of a trait predicate not to change when elaborating super predicates.
Specifically, super predicates are special for various reasons: they're the valid candidates for trait upcasting, are the only predicates we elaborate when doing closure signature inference, etc. So making sure that we get this list correct and don't accidentally "leak" any other predicates into this list is quite important.
This PR adds some debug assertions that we're in fact not doing so, and it fixes an oversight in the effect desugaring rework.
bors added a commit to rust-lang-ci/rust that referenced this pull request Sep 21, 2024
…iaskrgr
Rollup of 9 pull requests
Successful merges:
- rust-lang#127766 (add `extern "C-cmse-nonsecure-entry" fn` )
- rust-lang#129629 (Implement Return Type Notation (RTN)'s path form in where clauses)
- rust-lang#130246 (rustc_expand: remember module `#[path]`s during expansion)
- rust-lang#130408 (Avoid re-validating UTF-8 in `FromUtf8Error::into_utf8_lossy`)
- rust-lang#130651 (Add --enable-profiler to armhf dist)
- rust-lang#130653 (ABI compatibility: mention Result guarantee)
- rust-lang#130665 (Prevent Deduplication of `LongRunningWarn`)
- rust-lang#130666 (Assert that `explicit_super_predicates_of` and `explicit_item_super_predicates` truly only contains bounds for the type itself)
- rust-lang#130667 (compiler: Accept "improper" ctypes in extern "rust-cold" fn)
r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request Sep 21, 2024
…mpiler-errors
Rollup of 8 pull requests
Successful merges:
- rust-lang#127766 (add `extern "C-cmse-nonsecure-entry" fn` )
- rust-lang#129629 (Implement Return Type Notation (RTN)'s path form in where clauses)
- rust-lang#130408 (Avoid re-validating UTF-8 in `FromUtf8Error::into_utf8_lossy`)
- rust-lang#130651 (Add --enable-profiler to armhf dist)
- rust-lang#130653 (ABI compatibility: mention Result guarantee)
- rust-lang#130666 (Assert that `explicit_super_predicates_of` and `explicit_item_super_predicates` truly only contains bounds for the type itself)
- rust-lang#130667 (compiler: Accept "improper" ctypes in extern "rust-cold" fn)
- rust-lang#130673 (Parser: recover from `:::` to `::`)
r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request Sep 21, 2024
…mpiler-errors
Rollup of 8 pull requests
Successful merges:
- rust-lang#127766 (add `extern "C-cmse-nonsecure-entry" fn` )
- rust-lang#129629 (Implement Return Type Notation (RTN)'s path form in where clauses)
- rust-lang#130408 (Avoid re-validating UTF-8 in `FromUtf8Error::into_utf8_lossy`)
- rust-lang#130651 (Add --enable-profiler to armhf dist)
- rust-lang#130653 (ABI compatibility: mention Result guarantee)
- rust-lang#130666 (Assert that `explicit_super_predicates_of` and `explicit_item_super_predicates` truly only contains bounds for the type itself)
- rust-lang#130667 (compiler: Accept "improper" ctypes in extern "rust-cold" fn)
- rust-lang#130673 (Parser: recover from `:::` to `::`)
r? `@ghost`
`@rustbot` modify labels: rollup
@bors
bors merged commit d1b43d0 into rust-lang:masterSep 22, 2024
@rustbotrustbot added this to the 1.83.0 milestone Sep 22, 2024
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Sep 22, 2024
Rollup merge of rust-lang#130666 - compiler-errors:super-bounds, r=fee1-dead,fmease
Assert that `explicit_super_predicates_of` and `explicit_item_super_predicates` truly only contains bounds for the type itself
We distinguish _implied_ predicates (anything that is implied from elaborating a trait bound) from _super_ predicates, which are are the subset of implied predicates that share the same self type as the trait predicate we're elaborating. This was originally done in rust-lang#107614, which fixed a large class of ICEs and strange errors where the compiler expected the self type of a trait predicate not to change when elaborating super predicates.
Specifically, super predicates are special for various reasons: they're the valid candidates for trait upcasting, are the only predicates we elaborate when doing closure signature inference, etc. So making sure that we get this list correct and don't accidentally "leak" any other predicates into this list is quite important.
This PR adds some debug assertions that we're in fact not doing so, and it fixes an oversight in the effect desugaring rework.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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.

6 participants

@compiler-errors@rustbot@fee1-dead@bors@fmease@davidtwco
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Assert that explicit_super_predicates_of and explicit_item_super_predicates truly only contains bounds for the type itself - #130666

Merged
bors merged 2 commits into
rust-lang:masterfrom
compiler-errors:super-bounds
Sep 22, 2024
Merged

Assert that explicit_super_predicates_of and explicit_item_super_predicates truly only contains bounds for the type itself#130666
bors merged 2 commits into
rust-lang:masterfrom
compiler-errors:super-bounds

Conversation

@compiler-errors

Copy link
Copy Markdown
Contributor

We distinguish implied predicates (anything that is implied from elaborating a trait bound) from super predicates, which are are the subset of implied predicates that share the same self type as the trait predicate we're elaborating. This was originally done in #107614, which fixed a large class of ICEs and strange errors where the compiler expected the self type of a trait predicate not to change when elaborating super predicates.

Specifically, super predicates are special for various reasons: they're the valid candidates for trait upcasting, are the only predicates we elaborate when doing closure signature inference, etc. So making sure that we get this list correct and don't accidentally "leak" any other predicates into this list is quite important.

This PR adds some debug assertions that we're in fact not doing so, and it fixes an oversight in the effect desugaring rework.

@rustbot

Copy link
Copy Markdown
Collaborator

r? @davidtwco

rustbot has assigned @davidtwco.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@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 Sep 21, 2024
@rustbot

Copy link
Copy Markdown
Collaborator

HIR ty lowering was modified

cc @fmease

@compiler-errorscompiler-errors changed the title Assert that explicit_super_predicates_of and explicit_item_bounds truly only bounds for the type itselfAssert that explicit_super_predicates_of and explicit_item_super_predicates truly only bounds for the type itselfSep 21, 2024
@compiler-errors

This comment was marked as resolved.

@rustbot

This comment was marked as resolved.

@compiler-errors

This comment was marked as resolved.

@compiler-errorscompiler-errors changed the title Assert that explicit_super_predicates_of and explicit_item_super_predicates truly only bounds for the type itselfAssert that explicit_super_predicates_of and explicit_item_super_predicates truly only contains bounds for the type itselfSep 21, 2024

@fee1-deadfee1-dead left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@fee1-dead

Copy link
Copy Markdown
Member

@bors r+
r? @fee1-dead

@bors

bors commented Sep 21, 2024

Copy link
Copy Markdown
Collaborator

📌 Commit 55db3ff has been approved by fee1-dead

It is now in the queue for this repository.

@rustbotrustbot assigned fee1-dead and unassigned davidtwcoSep 21, 2024
@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 Sep 21, 2024
fmease

This comment was marked as duplicate.

@compiler-errors

Copy link
Copy Markdown
ContributorAuthor

@bors r=fee1-dead,fmease rollup

@bors

bors commented Sep 21, 2024

Copy link
Copy Markdown
Collaborator

📌 Commit 4f3d06f has been approved by fee1-dead,fmease

It is now in the queue for this repository.

matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Sep 21, 2024
…e1-dead,fmease
Assert that `explicit_super_predicates_of` and `explicit_item_super_predicates` truly only contains bounds for the type itself
We distinguish _implied_ predicates (anything that is implied from elaborating a trait bound) from _super_ predicates, which are are the subset of implied predicates that share the same self type as the trait predicate we're elaborating. This was originally done in rust-lang#107614, which fixed a large class of ICEs and strange errors where the compiler expected the self type of a trait predicate not to change when elaborating super predicates.
Specifically, super predicates are special for various reasons: they're the valid candidates for trait upcasting, are the only predicates we elaborate when doing closure signature inference, etc. So making sure that we get this list correct and don't accidentally "leak" any other predicates into this list is quite important.
This PR adds some debug assertions that we're in fact not doing so, and it fixes an oversight in the effect desugaring rework.
bors added a commit to rust-lang-ci/rust that referenced this pull request Sep 21, 2024
…iaskrgr
Rollup of 9 pull requests
Successful merges:
- rust-lang#127766 (add `extern "C-cmse-nonsecure-entry" fn` )
- rust-lang#129629 (Implement Return Type Notation (RTN)'s path form in where clauses)
- rust-lang#130246 (rustc_expand: remember module `#[path]`s during expansion)
- rust-lang#130408 (Avoid re-validating UTF-8 in `FromUtf8Error::into_utf8_lossy`)
- rust-lang#130651 (Add --enable-profiler to armhf dist)
- rust-lang#130653 (ABI compatibility: mention Result guarantee)
- rust-lang#130665 (Prevent Deduplication of `LongRunningWarn`)
- rust-lang#130666 (Assert that `explicit_super_predicates_of` and `explicit_item_super_predicates` truly only contains bounds for the type itself)
- rust-lang#130667 (compiler: Accept "improper" ctypes in extern "rust-cold" fn)
r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request Sep 21, 2024
…mpiler-errors
Rollup of 8 pull requests
Successful merges:
- rust-lang#127766 (add `extern "C-cmse-nonsecure-entry" fn` )
- rust-lang#129629 (Implement Return Type Notation (RTN)'s path form in where clauses)
- rust-lang#130408 (Avoid re-validating UTF-8 in `FromUtf8Error::into_utf8_lossy`)
- rust-lang#130651 (Add --enable-profiler to armhf dist)
- rust-lang#130653 (ABI compatibility: mention Result guarantee)
- rust-lang#130666 (Assert that `explicit_super_predicates_of` and `explicit_item_super_predicates` truly only contains bounds for the type itself)
- rust-lang#130667 (compiler: Accept "improper" ctypes in extern "rust-cold" fn)
- rust-lang#130673 (Parser: recover from `:::` to `::`)
r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request Sep 21, 2024
…mpiler-errors
Rollup of 8 pull requests
Successful merges:
- rust-lang#127766 (add `extern "C-cmse-nonsecure-entry" fn` )
- rust-lang#129629 (Implement Return Type Notation (RTN)'s path form in where clauses)
- rust-lang#130408 (Avoid re-validating UTF-8 in `FromUtf8Error::into_utf8_lossy`)
- rust-lang#130651 (Add --enable-profiler to armhf dist)
- rust-lang#130653 (ABI compatibility: mention Result guarantee)
- rust-lang#130666 (Assert that `explicit_super_predicates_of` and `explicit_item_super_predicates` truly only contains bounds for the type itself)
- rust-lang#130667 (compiler: Accept "improper" ctypes in extern "rust-cold" fn)
- rust-lang#130673 (Parser: recover from `:::` to `::`)
r? `@ghost`
`@rustbot` modify labels: rollup
@bors
bors merged commit d1b43d0 into rust-lang:masterSep 22, 2024
@rustbotrustbot added this to the 1.83.0 milestone Sep 22, 2024
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Sep 22, 2024
Rollup merge of rust-lang#130666 - compiler-errors:super-bounds, r=fee1-dead,fmease
Assert that `explicit_super_predicates_of` and `explicit_item_super_predicates` truly only contains bounds for the type itself
We distinguish _implied_ predicates (anything that is implied from elaborating a trait bound) from _super_ predicates, which are are the subset of implied predicates that share the same self type as the trait predicate we're elaborating. This was originally done in rust-lang#107614, which fixed a large class of ICEs and strange errors where the compiler expected the self type of a trait predicate not to change when elaborating super predicates.
Specifically, super predicates are special for various reasons: they're the valid candidates for trait upcasting, are the only predicates we elaborate when doing closure signature inference, etc. So making sure that we get this list correct and don't accidentally "leak" any other predicates into this list is quite important.
This PR adds some debug assertions that we're in fact not doing so, and it fixes an oversight in the effect desugaring rework.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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.

6 participants

@compiler-errors@rustbot@fee1-dead@bors@fmease@davidtwco
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Assert that explicit_super_predicates_of and explicit_item_super_predicates truly only contains bounds for the type itself - #130666

Merged
bors merged 2 commits into
rust-lang:masterfrom
compiler-errors:super-bounds
Sep 22, 2024
Merged

Assert that explicit_super_predicates_of and explicit_item_super_predicates truly only contains bounds for the type itself#130666
bors merged 2 commits into
rust-lang:masterfrom
compiler-errors:super-bounds

Conversation

@compiler-errors

Copy link
Copy Markdown
Contributor

We distinguish implied predicates (anything that is implied from elaborating a trait bound) from super predicates, which are are the subset of implied predicates that share the same self type as the trait predicate we're elaborating. This was originally done in #107614, which fixed a large class of ICEs and strange errors where the compiler expected the self type of a trait predicate not to change when elaborating super predicates.

Specifically, super predicates are special for various reasons: they're the valid candidates for trait upcasting, are the only predicates we elaborate when doing closure signature inference, etc. So making sure that we get this list correct and don't accidentally "leak" any other predicates into this list is quite important.

This PR adds some debug assertions that we're in fact not doing so, and it fixes an oversight in the effect desugaring rework.

@rustbot

Copy link
Copy Markdown
Collaborator

r? @davidtwco

rustbot has assigned @davidtwco.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@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 Sep 21, 2024
@rustbot

Copy link
Copy Markdown
Collaborator

HIR ty lowering was modified

cc @fmease

@compiler-errorscompiler-errors changed the title Assert that explicit_super_predicates_of and explicit_item_bounds truly only bounds for the type itselfAssert that explicit_super_predicates_of and explicit_item_super_predicates truly only bounds for the type itselfSep 21, 2024
@compiler-errors

This comment was marked as resolved.

@rustbot

This comment was marked as resolved.

@compiler-errors

This comment was marked as resolved.

@compiler-errorscompiler-errors changed the title Assert that explicit_super_predicates_of and explicit_item_super_predicates truly only bounds for the type itselfAssert that explicit_super_predicates_of and explicit_item_super_predicates truly only contains bounds for the type itselfSep 21, 2024

@fee1-deadfee1-dead left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@fee1-dead

Copy link
Copy Markdown
Member

@bors r+
r? @fee1-dead

@bors

bors commented Sep 21, 2024

Copy link
Copy Markdown
Collaborator

📌 Commit 55db3ff has been approved by fee1-dead

It is now in the queue for this repository.

@rustbotrustbot assigned fee1-dead and unassigned davidtwcoSep 21, 2024
@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 Sep 21, 2024
fmease

This comment was marked as duplicate.

@compiler-errors

Copy link
Copy Markdown
ContributorAuthor

@bors r=fee1-dead,fmease rollup

@bors

bors commented Sep 21, 2024

Copy link
Copy Markdown
Collaborator

📌 Commit 4f3d06f has been approved by fee1-dead,fmease

It is now in the queue for this repository.

matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Sep 21, 2024
…e1-dead,fmease
Assert that `explicit_super_predicates_of` and `explicit_item_super_predicates` truly only contains bounds for the type itself
We distinguish _implied_ predicates (anything that is implied from elaborating a trait bound) from _super_ predicates, which are are the subset of implied predicates that share the same self type as the trait predicate we're elaborating. This was originally done in rust-lang#107614, which fixed a large class of ICEs and strange errors where the compiler expected the self type of a trait predicate not to change when elaborating super predicates.
Specifically, super predicates are special for various reasons: they're the valid candidates for trait upcasting, are the only predicates we elaborate when doing closure signature inference, etc. So making sure that we get this list correct and don't accidentally "leak" any other predicates into this list is quite important.
This PR adds some debug assertions that we're in fact not doing so, and it fixes an oversight in the effect desugaring rework.
bors added a commit to rust-lang-ci/rust that referenced this pull request Sep 21, 2024
…iaskrgr
Rollup of 9 pull requests
Successful merges:
- rust-lang#127766 (add `extern "C-cmse-nonsecure-entry" fn` )
- rust-lang#129629 (Implement Return Type Notation (RTN)'s path form in where clauses)
- rust-lang#130246 (rustc_expand: remember module `#[path]`s during expansion)
- rust-lang#130408 (Avoid re-validating UTF-8 in `FromUtf8Error::into_utf8_lossy`)
- rust-lang#130651 (Add --enable-profiler to armhf dist)
- rust-lang#130653 (ABI compatibility: mention Result guarantee)
- rust-lang#130665 (Prevent Deduplication of `LongRunningWarn`)
- rust-lang#130666 (Assert that `explicit_super_predicates_of` and `explicit_item_super_predicates` truly only contains bounds for the type itself)
- rust-lang#130667 (compiler: Accept "improper" ctypes in extern "rust-cold" fn)
r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request Sep 21, 2024
…mpiler-errors
Rollup of 8 pull requests
Successful merges:
- rust-lang#127766 (add `extern "C-cmse-nonsecure-entry" fn` )
- rust-lang#129629 (Implement Return Type Notation (RTN)'s path form in where clauses)
- rust-lang#130408 (Avoid re-validating UTF-8 in `FromUtf8Error::into_utf8_lossy`)
- rust-lang#130651 (Add --enable-profiler to armhf dist)
- rust-lang#130653 (ABI compatibility: mention Result guarantee)
- rust-lang#130666 (Assert that `explicit_super_predicates_of` and `explicit_item_super_predicates` truly only contains bounds for the type itself)
- rust-lang#130667 (compiler: Accept "improper" ctypes in extern "rust-cold" fn)
- rust-lang#130673 (Parser: recover from `:::` to `::`)
r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request Sep 21, 2024
…mpiler-errors
Rollup of 8 pull requests
Successful merges:
- rust-lang#127766 (add `extern "C-cmse-nonsecure-entry" fn` )
- rust-lang#129629 (Implement Return Type Notation (RTN)'s path form in where clauses)
- rust-lang#130408 (Avoid re-validating UTF-8 in `FromUtf8Error::into_utf8_lossy`)
- rust-lang#130651 (Add --enable-profiler to armhf dist)
- rust-lang#130653 (ABI compatibility: mention Result guarantee)
- rust-lang#130666 (Assert that `explicit_super_predicates_of` and `explicit_item_super_predicates` truly only contains bounds for the type itself)
- rust-lang#130667 (compiler: Accept "improper" ctypes in extern "rust-cold" fn)
- rust-lang#130673 (Parser: recover from `:::` to `::`)
r? `@ghost`
`@rustbot` modify labels: rollup
@bors
bors merged commit d1b43d0 into rust-lang:masterSep 22, 2024
@rustbotrustbot added this to the 1.83.0 milestone Sep 22, 2024
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Sep 22, 2024
Rollup merge of rust-lang#130666 - compiler-errors:super-bounds, r=fee1-dead,fmease
Assert that `explicit_super_predicates_of` and `explicit_item_super_predicates` truly only contains bounds for the type itself
We distinguish _implied_ predicates (anything that is implied from elaborating a trait bound) from _super_ predicates, which are are the subset of implied predicates that share the same self type as the trait predicate we're elaborating. This was originally done in rust-lang#107614, which fixed a large class of ICEs and strange errors where the compiler expected the self type of a trait predicate not to change when elaborating super predicates.
Specifically, super predicates are special for various reasons: they're the valid candidates for trait upcasting, are the only predicates we elaborate when doing closure signature inference, etc. So making sure that we get this list correct and don't accidentally "leak" any other predicates into this list is quite important.
This PR adds some debug assertions that we're in fact not doing so, and it fixes an oversight in the effect desugaring rework.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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.

6 participants

@compiler-errors@rustbot@fee1-dead@bors@fmease@davidtwco
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Assert that explicit_super_predicates_of and explicit_item_super_predicates truly only contains bounds for the type itself - #130666

Merged
bors merged 2 commits into
rust-lang:masterfrom
compiler-errors:super-bounds
Sep 22, 2024
Merged

Assert that explicit_super_predicates_of and explicit_item_super_predicates truly only contains bounds for the type itself#130666
bors merged 2 commits into
rust-lang:masterfrom
compiler-errors:super-bounds

Conversation

@compiler-errors

Copy link
Copy Markdown
Contributor

We distinguish implied predicates (anything that is implied from elaborating a trait bound) from super predicates, which are are the subset of implied predicates that share the same self type as the trait predicate we're elaborating. This was originally done in #107614, which fixed a large class of ICEs and strange errors where the compiler expected the self type of a trait predicate not to change when elaborating super predicates.

Specifically, super predicates are special for various reasons: they're the valid candidates for trait upcasting, are the only predicates we elaborate when doing closure signature inference, etc. So making sure that we get this list correct and don't accidentally "leak" any other predicates into this list is quite important.

This PR adds some debug assertions that we're in fact not doing so, and it fixes an oversight in the effect desugaring rework.

@rustbot

Copy link
Copy Markdown
Collaborator

r? @davidtwco

rustbot has assigned @davidtwco.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@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 Sep 21, 2024
@rustbot

Copy link
Copy Markdown
Collaborator

HIR ty lowering was modified

cc @fmease

@compiler-errorscompiler-errors changed the title Assert that explicit_super_predicates_of and explicit_item_bounds truly only bounds for the type itselfAssert that explicit_super_predicates_of and explicit_item_super_predicates truly only bounds for the type itselfSep 21, 2024
@compiler-errors

This comment was marked as resolved.

@rustbot

This comment was marked as resolved.

@compiler-errors

This comment was marked as resolved.

@compiler-errorscompiler-errors changed the title Assert that explicit_super_predicates_of and explicit_item_super_predicates truly only bounds for the type itselfAssert that explicit_super_predicates_of and explicit_item_super_predicates truly only contains bounds for the type itselfSep 21, 2024

@fee1-deadfee1-dead left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@fee1-dead

Copy link
Copy Markdown
Member

@bors r+
r? @fee1-dead

@bors

bors commented Sep 21, 2024

Copy link
Copy Markdown
Collaborator

📌 Commit 55db3ff has been approved by fee1-dead

It is now in the queue for this repository.

@rustbotrustbot assigned fee1-dead and unassigned davidtwcoSep 21, 2024
@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 Sep 21, 2024
fmease

This comment was marked as duplicate.

@compiler-errors

Copy link
Copy Markdown
ContributorAuthor

@bors r=fee1-dead,fmease rollup

@bors

bors commented Sep 21, 2024

Copy link
Copy Markdown
Collaborator

📌 Commit 4f3d06f has been approved by fee1-dead,fmease

It is now in the queue for this repository.

matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Sep 21, 2024
…e1-dead,fmease
Assert that `explicit_super_predicates_of` and `explicit_item_super_predicates` truly only contains bounds for the type itself
We distinguish _implied_ predicates (anything that is implied from elaborating a trait bound) from _super_ predicates, which are are the subset of implied predicates that share the same self type as the trait predicate we're elaborating. This was originally done in rust-lang#107614, which fixed a large class of ICEs and strange errors where the compiler expected the self type of a trait predicate not to change when elaborating super predicates.
Specifically, super predicates are special for various reasons: they're the valid candidates for trait upcasting, are the only predicates we elaborate when doing closure signature inference, etc. So making sure that we get this list correct and don't accidentally "leak" any other predicates into this list is quite important.
This PR adds some debug assertions that we're in fact not doing so, and it fixes an oversight in the effect desugaring rework.
bors added a commit to rust-lang-ci/rust that referenced this pull request Sep 21, 2024
…iaskrgr
Rollup of 9 pull requests
Successful merges:
- rust-lang#127766 (add `extern "C-cmse-nonsecure-entry" fn` )
- rust-lang#129629 (Implement Return Type Notation (RTN)'s path form in where clauses)
- rust-lang#130246 (rustc_expand: remember module `#[path]`s during expansion)
- rust-lang#130408 (Avoid re-validating UTF-8 in `FromUtf8Error::into_utf8_lossy`)
- rust-lang#130651 (Add --enable-profiler to armhf dist)
- rust-lang#130653 (ABI compatibility: mention Result guarantee)
- rust-lang#130665 (Prevent Deduplication of `LongRunningWarn`)
- rust-lang#130666 (Assert that `explicit_super_predicates_of` and `explicit_item_super_predicates` truly only contains bounds for the type itself)
- rust-lang#130667 (compiler: Accept "improper" ctypes in extern "rust-cold" fn)
r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request Sep 21, 2024
…mpiler-errors
Rollup of 8 pull requests
Successful merges:
- rust-lang#127766 (add `extern "C-cmse-nonsecure-entry" fn` )
- rust-lang#129629 (Implement Return Type Notation (RTN)'s path form in where clauses)
- rust-lang#130408 (Avoid re-validating UTF-8 in `FromUtf8Error::into_utf8_lossy`)
- rust-lang#130651 (Add --enable-profiler to armhf dist)
- rust-lang#130653 (ABI compatibility: mention Result guarantee)
- rust-lang#130666 (Assert that `explicit_super_predicates_of` and `explicit_item_super_predicates` truly only contains bounds for the type itself)
- rust-lang#130667 (compiler: Accept "improper" ctypes in extern "rust-cold" fn)
- rust-lang#130673 (Parser: recover from `:::` to `::`)
r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request Sep 21, 2024
…mpiler-errors
Rollup of 8 pull requests
Successful merges:
- rust-lang#127766 (add `extern "C-cmse-nonsecure-entry" fn` )
- rust-lang#129629 (Implement Return Type Notation (RTN)'s path form in where clauses)
- rust-lang#130408 (Avoid re-validating UTF-8 in `FromUtf8Error::into_utf8_lossy`)
- rust-lang#130651 (Add --enable-profiler to armhf dist)
- rust-lang#130653 (ABI compatibility: mention Result guarantee)
- rust-lang#130666 (Assert that `explicit_super_predicates_of` and `explicit_item_super_predicates` truly only contains bounds for the type itself)
- rust-lang#130667 (compiler: Accept "improper" ctypes in extern "rust-cold" fn)
- rust-lang#130673 (Parser: recover from `:::` to `::`)
r? `@ghost`
`@rustbot` modify labels: rollup
@bors
bors merged commit d1b43d0 into rust-lang:masterSep 22, 2024
@rustbotrustbot added this to the 1.83.0 milestone Sep 22, 2024
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Sep 22, 2024
Rollup merge of rust-lang#130666 - compiler-errors:super-bounds, r=fee1-dead,fmease
Assert that `explicit_super_predicates_of` and `explicit_item_super_predicates` truly only contains bounds for the type itself
We distinguish _implied_ predicates (anything that is implied from elaborating a trait bound) from _super_ predicates, which are are the subset of implied predicates that share the same self type as the trait predicate we're elaborating. This was originally done in rust-lang#107614, which fixed a large class of ICEs and strange errors where the compiler expected the self type of a trait predicate not to change when elaborating super predicates.
Specifically, super predicates are special for various reasons: they're the valid candidates for trait upcasting, are the only predicates we elaborate when doing closure signature inference, etc. So making sure that we get this list correct and don't accidentally "leak" any other predicates into this list is quite important.
This PR adds some debug assertions that we're in fact not doing so, and it fixes an oversight in the effect desugaring rework.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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.

6 participants

@compiler-errors@rustbot@fee1-dead@bors@fmease@davidtwco
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Assert that explicit_super_predicates_of and explicit_item_super_predicates truly only contains bounds for the type itself - #130666

Merged
bors merged 2 commits into
rust-lang:masterfrom
compiler-errors:super-bounds
Sep 22, 2024
Merged

Assert that explicit_super_predicates_of and explicit_item_super_predicates truly only contains bounds for the type itself#130666
bors merged 2 commits into
rust-lang:masterfrom
compiler-errors:super-bounds

Conversation

@compiler-errors

Copy link
Copy Markdown
Contributor

We distinguish implied predicates (anything that is implied from elaborating a trait bound) from super predicates, which are are the subset of implied predicates that share the same self type as the trait predicate we're elaborating. This was originally done in #107614, which fixed a large class of ICEs and strange errors where the compiler expected the self type of a trait predicate not to change when elaborating super predicates.

Specifically, super predicates are special for various reasons: they're the valid candidates for trait upcasting, are the only predicates we elaborate when doing closure signature inference, etc. So making sure that we get this list correct and don't accidentally "leak" any other predicates into this list is quite important.

This PR adds some debug assertions that we're in fact not doing so, and it fixes an oversight in the effect desugaring rework.

@rustbot

Copy link
Copy Markdown
Collaborator

r? @davidtwco

rustbot has assigned @davidtwco.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@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 Sep 21, 2024
@rustbot

Copy link
Copy Markdown
Collaborator

HIR ty lowering was modified

cc @fmease

@compiler-errorscompiler-errors changed the title Assert that explicit_super_predicates_of and explicit_item_bounds truly only bounds for the type itselfAssert that explicit_super_predicates_of and explicit_item_super_predicates truly only bounds for the type itselfSep 21, 2024
@compiler-errors

This comment was marked as resolved.

@rustbot

This comment was marked as resolved.

@compiler-errors

This comment was marked as resolved.

@compiler-errorscompiler-errors changed the title Assert that explicit_super_predicates_of and explicit_item_super_predicates truly only bounds for the type itselfAssert that explicit_super_predicates_of and explicit_item_super_predicates truly only contains bounds for the type itselfSep 21, 2024

@fee1-deadfee1-dead left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@fee1-dead

Copy link
Copy Markdown
Member

@bors r+
r? @fee1-dead

@bors

bors commented Sep 21, 2024

Copy link
Copy Markdown
Collaborator

📌 Commit 55db3ff has been approved by fee1-dead

It is now in the queue for this repository.

@rustbotrustbot assigned fee1-dead and unassigned davidtwcoSep 21, 2024
@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 Sep 21, 2024
fmease

This comment was marked as duplicate.

@compiler-errors

Copy link
Copy Markdown
ContributorAuthor

@bors r=fee1-dead,fmease rollup

@bors

bors commented Sep 21, 2024

Copy link
Copy Markdown
Collaborator

📌 Commit 4f3d06f has been approved by fee1-dead,fmease

It is now in the queue for this repository.

matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Sep 21, 2024
…e1-dead,fmease
Assert that `explicit_super_predicates_of` and `explicit_item_super_predicates` truly only contains bounds for the type itself
We distinguish _implied_ predicates (anything that is implied from elaborating a trait bound) from _super_ predicates, which are are the subset of implied predicates that share the same self type as the trait predicate we're elaborating. This was originally done in rust-lang#107614, which fixed a large class of ICEs and strange errors where the compiler expected the self type of a trait predicate not to change when elaborating super predicates.
Specifically, super predicates are special for various reasons: they're the valid candidates for trait upcasting, are the only predicates we elaborate when doing closure signature inference, etc. So making sure that we get this list correct and don't accidentally "leak" any other predicates into this list is quite important.
This PR adds some debug assertions that we're in fact not doing so, and it fixes an oversight in the effect desugaring rework.
bors added a commit to rust-lang-ci/rust that referenced this pull request Sep 21, 2024
…iaskrgr
Rollup of 9 pull requests
Successful merges:
- rust-lang#127766 (add `extern "C-cmse-nonsecure-entry" fn` )
- rust-lang#129629 (Implement Return Type Notation (RTN)'s path form in where clauses)
- rust-lang#130246 (rustc_expand: remember module `#[path]`s during expansion)
- rust-lang#130408 (Avoid re-validating UTF-8 in `FromUtf8Error::into_utf8_lossy`)
- rust-lang#130651 (Add --enable-profiler to armhf dist)
- rust-lang#130653 (ABI compatibility: mention Result guarantee)
- rust-lang#130665 (Prevent Deduplication of `LongRunningWarn`)
- rust-lang#130666 (Assert that `explicit_super_predicates_of` and `explicit_item_super_predicates` truly only contains bounds for the type itself)
- rust-lang#130667 (compiler: Accept "improper" ctypes in extern "rust-cold" fn)
r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request Sep 21, 2024
…mpiler-errors
Rollup of 8 pull requests
Successful merges:
- rust-lang#127766 (add `extern "C-cmse-nonsecure-entry" fn` )
- rust-lang#129629 (Implement Return Type Notation (RTN)'s path form in where clauses)
- rust-lang#130408 (Avoid re-validating UTF-8 in `FromUtf8Error::into_utf8_lossy`)
- rust-lang#130651 (Add --enable-profiler to armhf dist)
- rust-lang#130653 (ABI compatibility: mention Result guarantee)
- rust-lang#130666 (Assert that `explicit_super_predicates_of` and `explicit_item_super_predicates` truly only contains bounds for the type itself)
- rust-lang#130667 (compiler: Accept "improper" ctypes in extern "rust-cold" fn)
- rust-lang#130673 (Parser: recover from `:::` to `::`)
r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request Sep 21, 2024
…mpiler-errors
Rollup of 8 pull requests
Successful merges:
- rust-lang#127766 (add `extern "C-cmse-nonsecure-entry" fn` )
- rust-lang#129629 (Implement Return Type Notation (RTN)'s path form in where clauses)
- rust-lang#130408 (Avoid re-validating UTF-8 in `FromUtf8Error::into_utf8_lossy`)
- rust-lang#130651 (Add --enable-profiler to armhf dist)
- rust-lang#130653 (ABI compatibility: mention Result guarantee)
- rust-lang#130666 (Assert that `explicit_super_predicates_of` and `explicit_item_super_predicates` truly only contains bounds for the type itself)
- rust-lang#130667 (compiler: Accept "improper" ctypes in extern "rust-cold" fn)
- rust-lang#130673 (Parser: recover from `:::` to `::`)
r? `@ghost`
`@rustbot` modify labels: rollup
@bors
bors merged commit d1b43d0 into rust-lang:masterSep 22, 2024
@rustbotrustbot added this to the 1.83.0 milestone Sep 22, 2024
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Sep 22, 2024
Rollup merge of rust-lang#130666 - compiler-errors:super-bounds, r=fee1-dead,fmease
Assert that `explicit_super_predicates_of` and `explicit_item_super_predicates` truly only contains bounds for the type itself
We distinguish _implied_ predicates (anything that is implied from elaborating a trait bound) from _super_ predicates, which are are the subset of implied predicates that share the same self type as the trait predicate we're elaborating. This was originally done in rust-lang#107614, which fixed a large class of ICEs and strange errors where the compiler expected the self type of a trait predicate not to change when elaborating super predicates.
Specifically, super predicates are special for various reasons: they're the valid candidates for trait upcasting, are the only predicates we elaborate when doing closure signature inference, etc. So making sure that we get this list correct and don't accidentally "leak" any other predicates into this list is quite important.
This PR adds some debug assertions that we're in fact not doing so, and it fixes an oversight in the effect desugaring rework.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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.

6 participants

@compiler-errors@rustbot@fee1-dead@bors@fmease@davidtwco