Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Make get_return_block() return Some only for HIR nodes in body #115313

Merged
merged 1 commit into from Aug 30, 2023

Conversation

gurry
Copy link
Contributor

@gurry gurry commented Aug 28, 2023

Fixes #114918

The issue occurred while compiling the following input:

fn uwu() -> [(); { () }] {
    loop {}
}

It was caused by the code below trying to suggest a missing return type which resulted in a const eval cycle:

if let Some((fn_id, fn_decl, can_suggest)) = self.get_fn_decl(blk_id) {
pointing_at_return_type = self.suggest_missing_return_type(
err,
&fn_decl,
expected,
found,
can_suggest,
fn_id,

The root cause was get_return_block() returning an Fn node for a node in the return type (i.e. the second () in the return type [(); { () }] of the input) although it is supposed to do so only for nodes that lie in the body of the function and return None otherwise (at least as per my understanding).

The PR fixes the issue by fixing this behaviour of get_return_block().

@rustbot
Copy link
Collaborator

rustbot commented Aug 28, 2023

r? @wesleywiser

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

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Aug 28, 2023
@gurry gurry marked this pull request as ready for review August 28, 2023 11:47
@rust-log-analyzer

This comment has been minimized.

Copy link
Member

@compiler-errors compiler-errors left a comment

Choose a reason for hiding this comment

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

Please squash this into one commit, then I can approve.

@gurry gurry force-pushed the issue-114918-cycle-detected branch from d5a8dc1 to 136f057 Compare August 30, 2023 02:10
@gurry
Copy link
Contributor Author

gurry commented Aug 30, 2023

Squashed

@compiler-errors
Copy link
Member

@bors r+

@bors
Copy link
Contributor

bors commented Aug 30, 2023

📌 Commit 136f057 has been approved by compiler-errors

It is now in the queue for this repository.

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

Rollup of 7 pull requests

Successful merges:

 - rust-lang#113565 (Make SIGSEGV handler emit nicer backtraces)
 - rust-lang#114704 (parser: not insert dummy field in struct)
 - rust-lang#115272 (miri/diagnostics: don't forget to print_backtrace when ICEing on unexpected errors)
 - rust-lang#115313 (Make `get_return_block()` return `Some` only for HIR nodes in body)
 - rust-lang#115347 (suggest removing `impl` in generic trait bound position)
 - rust-lang#115355 (new solver: handle edge case of a recursion limit of 0)
 - rust-lang#115363 (Don't suggest adding parentheses to call an inaccessible method.)

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit 2128efd into rust-lang:master Aug 30, 2023
11 checks passed
@rustbot rustbot added this to the 1.74.0 milestone Aug 30, 2023
@gurry gurry deleted the issue-114918-cycle-detected branch August 30, 2023 13:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

cycle detected when evaluating type-level constant on invalid return type
6 participants