Skip to content

Conversation

@lcnr
Copy link
Contributor

@lcnr lcnr commented Sep 10, 2020

fixes #73260, fixes #74634, fixes #76595

r? @nikomatsakis

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Sep 10, 2020
@lcnr lcnr added A-const-generics Area: const generics (parameters and arguments) F-const_generics `#![feature(const_generics)]` labels Sep 10, 2020
@lcnr
Copy link
Contributor Author

lcnr commented Sep 11, 2020

I am actually not even sure if this PR is correct, as ty::Bound is a lot closer to ty::Infer than to ty::Param.

So the bug is probably somewhere else 🤔

@lcnr
Copy link
Contributor Author

lcnr commented Sep 11, 2020

So if we call a function which has a generic constant either in its predicates or its signatures, we have an unevaluated constant which depends on inference variables...

We replace these inference variables with ty::ConstKind::Bound before calling the relevant const eval queries. If we now encounter these bound variables we panic because we can't handle them 🤔

I think dealing with this by emitting TooGeneric seems fine, but I don't yet know enough about this to be absolutely sure

@lcnr lcnr force-pushed the bound-too-generic branch from 548d468 to ae85bbb Compare September 11, 2020 17:36
@lcnr lcnr changed the title miri: correctly deal with ConstKind::Bound do not ice on bound variables, return TooGeneric instead Sep 12, 2020
@lcnr lcnr changed the title do not ice on bound variables, return TooGeneric instead do not ICE on bound variables, return TooGeneric instead Sep 12, 2020
Comment on lines -1266 to 1267

ty::Param(_) | ty::Error(_) => {
ty::Bound(..) | ty::Param(_) | ty::Error(_) => {
return Err(LayoutError::Unknown(ty));
Copy link
Member

Choose a reason for hiding this comment

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

I think this is something I suggested in the past so it's probably fine.

@eddyb
Copy link
Member

eddyb commented Sep 19, 2020

@bors
Copy link
Collaborator

bors commented Sep 19, 2020

📌 Commit ae85bbb has been approved by eddyb

@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 Sep 19, 2020
Dylan-DPC-zz pushed a commit to Dylan-DPC-zz/rust that referenced this pull request Sep 19, 2020
do not ICE on bound variables, return `TooGeneric` instead fixes rust-lang#73260, fixes rust-lang#74634, fixes rust-lang#76595 r? @nikomatsakis
@Dylan-DPC-zz
Copy link

failed in rollup

@bors r-

@bors bors added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Sep 19, 2020
@lcnr lcnr force-pushed the bound-too-generic branch from ae85bbb to 6734230 Compare September 20, 2020 06:36
@lcnr lcnr force-pushed the bound-too-generic branch from 62378b7 to 65b3419 Compare September 20, 2020 08:03
@lcnr
Copy link
Contributor Author

lcnr commented Sep 20, 2020

@bors r=eddyb

@bors
Copy link
Collaborator

bors commented Sep 20, 2020

📌 Commit 65b3419 has been approved by eddyb

@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-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Sep 20, 2020
Dylan-DPC-zz pushed a commit to Dylan-DPC-zz/rust that referenced this pull request Sep 21, 2020
do not ICE on bound variables, return `TooGeneric` instead fixes rust-lang#73260, fixes rust-lang#74634, fixes rust-lang#76595 r? @nikomatsakis
Dylan-DPC-zz pushed a commit to Dylan-DPC-zz/rust that referenced this pull request Sep 21, 2020
do not ICE on bound variables, return `TooGeneric` instead fixes rust-lang#73260, fixes rust-lang#74634, fixes rust-lang#76595 r? @nikomatsakis
@lcnr lcnr assigned eddyb and unassigned nikomatsakis Sep 21, 2020
Dylan-DPC-zz pushed a commit to Dylan-DPC-zz/rust that referenced this pull request Sep 22, 2020
do not ICE on bound variables, return `TooGeneric` instead fixes rust-lang#73260, fixes rust-lang#74634, fixes rust-lang#76595 r? @nikomatsakis
ecstatic-morse added a commit to ecstatic-morse/rust that referenced this pull request Sep 22, 2020
do not ICE on bound variables, return `TooGeneric` instead fixes rust-lang#73260, fixes rust-lang#74634, fixes rust-lang#76595 r? @nikomatsakis
bors added a commit to rust-lang-ci/rust that referenced this pull request Sep 22, 2020
…atic-morse Rollup of 13 pull requests Successful merges: - rust-lang#72734 (Reduce duplicate in liballoc reserve error handling) - rust-lang#76131 (Don't use `zip` to compare iterators during pretty-print hack) - rust-lang#76150 (Don't recommend ManuallyDrop to customize drop order) - rust-lang#76275 (Implementation of Write for some immutable ref structs) - rust-lang#76489 (Add explanation for E0756) - rust-lang#76581 (do not ICE on bound variables, return `TooGeneric` instead) - rust-lang#76655 (Make some methods of `Pin` unstable const) - rust-lang#76783 (Only get ImplKind::Impl once) - rust-lang#76807 (Use const-checking to forbid use of unstable features in const-stable functions) - rust-lang#76888 (use if let instead of single match arm expressions) - rust-lang#76914 (extend `Ty` and `TyCtxt` lints to self types) - rust-lang#77022 (Reduce boilerplate for BytePos and CharPos) - rust-lang#77032 (lint missing docs for extern items) Failed merges: r? `@ghost`
@bors bors merged commit 30f1bab into rust-lang:master Sep 22, 2020
@rustbot rustbot added this to the 1.48.0 milestone Sep 22, 2020
@lcnr lcnr deleted the bound-too-generic branch September 22, 2020 06:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-const-generics Area: const generics (parameters and arguments) F-const_generics `#![feature(const_generics)]` S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion.

7 participants