Skip to content

Commit 01ec1ab

Browse files
committed
hack for errs
1 parent df5b604 commit 01ec1ab

File tree

5 files changed

+42
-21
lines changed

5 files changed

+42
-21
lines changed

compiler/rustc_infer/src/infer/relate/generalize.rs

+6
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,8 @@ where
281281
ty::Invariant => {
282282
if self.for_universe.can_name(universe) {
283283
return Ok(t);
284+
} else if self.infcx.next_trait_solver() && self.in_alias {
285+
return Err(TypeError::Mismatch);
284286
}
285287
}
286288

@@ -412,6 +414,8 @@ where
412414
let r_universe = self.infcx.universe_of_region(r);
413415
if self.for_universe.can_name(r_universe) {
414416
return Ok(r);
417+
} else if self.infcx.next_trait_solver() && self.in_alias {
418+
return Err(TypeError::Mismatch);
415419
}
416420
}
417421

@@ -452,6 +456,8 @@ where
452456
ConstVariableValue::Unknown { universe } => {
453457
if self.for_universe.can_name(universe) {
454458
Ok(c)
459+
} else if self.infcx.next_trait_solver() && self.in_alias {
460+
return Err(TypeError::Mismatch);
455461
} else {
456462
let new_var_id = variable_table
457463
.new_key(ConstVarValue {

tests/ui/impl-trait/issue-103181-1.next.stderr

+14
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Projection, AliasTy { args: [!0, &RePlaceholder(!1_BoundRegion { var: 0, kind: BrNamed(DefId(0:34 ~ issue_103181_1[ac79]::hyper::{impl#2}::'a), 'a) }) ()], def_id: DefId(0:47 ~ issue_103181_1[ac79]::hyper::Service::Response) })
2+
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Projection, AliasTy { args: [!0, &RePlaceholder(!1_BoundRegion { var: 0, kind: BrNamed(DefId(0:34 ~ issue_103181_1[ac79]::hyper::{impl#2}::'a), 'a) }) ()], def_id: DefId(0:47 ~ issue_103181_1[ac79]::hyper::Service::Response) })
3+
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Projection, AliasTy { args: [!0, &RePlaceholder(!1_BoundRegion { var: 0, kind: BrNamed(DefId(0:34 ~ issue_103181_1[ac79]::hyper::{impl#2}::'a), 'a) }) ()], def_id: DefId(0:47 ~ issue_103181_1[ac79]::hyper::Service::Response) })
4+
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Projection, AliasTy { args: [!0, &RePlaceholder(!1_BoundRegion { var: 0, kind: BrNamed(DefId(0:34 ~ issue_103181_1[ac79]::hyper::{impl#2}::'a), 'a) }) ()], def_id: DefId(0:47 ~ issue_103181_1[ac79]::hyper::Service::Response) })
5+
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Projection, AliasTy { args: [!0, &RePlaceholder(!1_BoundRegion { var: 0, kind: BrNamed(DefId(0:34 ~ issue_103181_1[ac79]::hyper::{impl#2}::'a), 'a) }) ()], def_id: DefId(0:47 ~ issue_103181_1[ac79]::hyper::Service::Response) })
6+
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Projection, AliasTy { args: [!0, &RePlaceholder(!1_BoundRegion { var: 0, kind: BrNamed(DefId(0:34 ~ issue_103181_1[ac79]::hyper::{impl#2}::'a), 'a) }) ()], def_id: DefId(0:47 ~ issue_103181_1[ac79]::hyper::Service::Response) })
7+
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Projection, AliasTy { args: [!0, &RePlaceholder(!1_BoundRegion { var: 0, kind: BrNamed(DefId(0:34 ~ issue_103181_1[ac79]::hyper::{impl#2}::'a), 'a) }) ()], def_id: DefId(0:47 ~ issue_103181_1[ac79]::hyper::Service::Response) })
18
error[E0046]: not all trait items implemented, missing: `Error`
29
--> $DIR/issue-103181-1.rs:11:5
310
|
@@ -7,6 +14,13 @@ LL | }
714
LL | impl HttpBody for () {
815
| ^^^^^^^^^^^^^^^^^^^^ missing `Error` in implementation
916

17+
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Projection, AliasTy { args: [!0, &RePlaceholder(!1_BoundRegion { var: 0, kind: BrNamed(DefId(0:34 ~ issue_103181_1[ac79]::hyper::{impl#2}::'a), 'a) }) ()], def_id: DefId(0:47 ~ issue_103181_1[ac79]::hyper::Service::Response) })
18+
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Projection, AliasTy { args: [!0, &RePlaceholder(!1_BoundRegion { var: 0, kind: BrNamed(DefId(0:34 ~ issue_103181_1[ac79]::hyper::{impl#2}::'a), 'a) }) ()], def_id: DefId(0:47 ~ issue_103181_1[ac79]::hyper::Service::Response) })
19+
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Projection, AliasTy { args: [!0, &RePlaceholder(!1_BoundRegion { var: 0, kind: BrNamed(DefId(0:34 ~ issue_103181_1[ac79]::hyper::{impl#2}::'a), 'a) }) ()], def_id: DefId(0:47 ~ issue_103181_1[ac79]::hyper::Service::Response) })
20+
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Projection, AliasTy { args: [!0, &RePlaceholder(!1_BoundRegion { var: 0, kind: BrNamed(DefId(0:34 ~ issue_103181_1[ac79]::hyper::{impl#2}::'a), 'a) }) ()], def_id: DefId(0:47 ~ issue_103181_1[ac79]::hyper::Service::Response) })
21+
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Projection, AliasTy { args: [!0, &RePlaceholder(!1_BoundRegion { var: 0, kind: BrNamed(DefId(0:34 ~ issue_103181_1[ac79]::hyper::{impl#2}::'a), 'a) }) ()], def_id: DefId(0:47 ~ issue_103181_1[ac79]::hyper::Service::Response) })
22+
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Projection, AliasTy { args: [!0, &RePlaceholder(!1_BoundRegion { var: 0, kind: BrNamed(DefId(0:34 ~ issue_103181_1[ac79]::hyper::{impl#2}::'a), 'a) }) ()], def_id: DefId(0:47 ~ issue_103181_1[ac79]::hyper::Service::Response) })
23+
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Projection, AliasTy { args: [!0, &RePlaceholder(!1_BoundRegion { var: 0, kind: BrNamed(DefId(0:34 ~ issue_103181_1[ac79]::hyper::{impl#2}::'a), 'a) }) ()], def_id: DefId(0:47 ~ issue_103181_1[ac79]::hyper::Service::Response) })
1024
error: aborting due to 1 previous error
1125

1226
For more information about this error, try `rustc --explain E0046`.

tests/ui/traits/next-solver/generalize/generalize-proj-new-universe-index-2.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
// compile-flags: -Znext-solver
2-
// known-bug: trait-system-refactor-initiative#60
2+
// check-pass
33

44
// Generalizing a projection containing an inference variable
5-
// which cannot be named by the `root_vid` can result in ambiguity.
5+
// which cannot be named by the `root_vid` previously resulted in ambiguity.
66
//
77
// Because we do not decrement the universe index when exiting a forall,
88
// this can cause unexpected failures.

tests/ui/traits/next-solver/generalize/generalize-proj-new-universe-index-2.stderr

-19
This file was deleted.

tests/ui/traits/next-solver/issue-118950-root-region.stderr

+20
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,32 @@ LL | #![feature(lazy_type_alias)]
1515

1616
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Weak, AliasTy { args: [ReBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrNamed(DefId(0:15 ~ issue_118950_root_region[d54f]::{impl#1}::'a), 'a) }), ?1t], def_id: DefId(0:8 ~ issue_118950_root_region[d54f]::Assoc) })
1717
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Weak, AliasTy { args: [RePlaceholder(!1_BoundRegion { var: 0, kind: BrNamed(DefId(0:15 ~ issue_118950_root_region[d54f]::{impl#1}::'a), 'a) }), ?1t], def_id: DefId(0:8 ~ issue_118950_root_region[d54f]::Assoc) })
18+
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Weak, AliasTy { args: [RePlaceholder(!1_BoundRegion { var: 0, kind: BrNamed(DefId(0:15 ~ issue_118950_root_region[d54f]::{impl#1}::'a), 'a) }), ?1t], def_id: DefId(0:8 ~ issue_118950_root_region[d54f]::Assoc) })
19+
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Projection, AliasTy { args: [*const {type error}, RePlaceholder(!1_BoundRegion { var: 0, kind: BrNamed(DefId(0:15 ~ issue_118950_root_region[d54f]::{impl#1}::'a), 'a) })], def_id: DefId(0:5 ~ issue_118950_root_region[d54f]::ToUnit::Unit) })
20+
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Projection, AliasTy { args: [*const {type error}, RePlaceholder(!1_BoundRegion { var: 0, kind: BrNamed(DefId(0:15 ~ issue_118950_root_region[d54f]::{impl#1}::'a), 'a) })], def_id: DefId(0:5 ~ issue_118950_root_region[d54f]::ToUnit::Unit) })
21+
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Projection, AliasTy { args: [*const {type error}, RePlaceholder(!1_BoundRegion { var: 0, kind: BrNamed(DefId(0:15 ~ issue_118950_root_region[d54f]::{impl#1}::'a), 'a) })], def_id: DefId(0:5 ~ issue_118950_root_region[d54f]::ToUnit::Unit) })
22+
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Projection, AliasTy { args: [*const {type error}, RePlaceholder(!1_BoundRegion { var: 0, kind: BrNamed(DefId(0:15 ~ issue_118950_root_region[d54f]::{impl#1}::'a), 'a) })], def_id: DefId(0:5 ~ issue_118950_root_region[d54f]::ToUnit::Unit) })
23+
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Projection, AliasTy { args: [*const {type error}, RePlaceholder(!1_BoundRegion { var: 0, kind: BrNamed(DefId(0:15 ~ issue_118950_root_region[d54f]::{impl#1}::'a), 'a) })], def_id: DefId(0:5 ~ issue_118950_root_region[d54f]::ToUnit::Unit) })
24+
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Projection, AliasTy { args: [*const {type error}, RePlaceholder(!1_BoundRegion { var: 0, kind: BrNamed(DefId(0:15 ~ issue_118950_root_region[d54f]::{impl#1}::'a), 'a) })], def_id: DefId(0:5 ~ issue_118950_root_region[d54f]::ToUnit::Unit) })
25+
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Projection, AliasTy { args: [*const {type error}, RePlaceholder(!1_BoundRegion { var: 0, kind: BrNamed(DefId(0:15 ~ issue_118950_root_region[d54f]::{impl#1}::'a), 'a) })], def_id: DefId(0:5 ~ issue_118950_root_region[d54f]::ToUnit::Unit) })
26+
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Weak, AliasTy { args: [RePlaceholder(!1_BoundRegion { var: 0, kind: BrNamed(DefId(0:15 ~ issue_118950_root_region[d54f]::{impl#1}::'a), 'a) }), ?1t], def_id: DefId(0:8 ~ issue_118950_root_region[d54f]::Assoc) })
27+
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Projection, AliasTy { args: [*const {type error}, RePlaceholder(!1_BoundRegion { var: 0, kind: BrNamed(DefId(0:15 ~ issue_118950_root_region[d54f]::{impl#1}::'a), 'a) })], def_id: DefId(0:5 ~ issue_118950_root_region[d54f]::ToUnit::Unit) })
28+
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Projection, AliasTy { args: [*const {type error}, RePlaceholder(!1_BoundRegion { var: 0, kind: BrNamed(DefId(0:15 ~ issue_118950_root_region[d54f]::{impl#1}::'a), 'a) })], def_id: DefId(0:5 ~ issue_118950_root_region[d54f]::ToUnit::Unit) })
29+
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Projection, AliasTy { args: [*const {type error}, RePlaceholder(!1_BoundRegion { var: 0, kind: BrNamed(DefId(0:15 ~ issue_118950_root_region[d54f]::{impl#1}::'a), 'a) })], def_id: DefId(0:5 ~ issue_118950_root_region[d54f]::ToUnit::Unit) })
30+
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Projection, AliasTy { args: [*const {type error}, RePlaceholder(!1_BoundRegion { var: 0, kind: BrNamed(DefId(0:15 ~ issue_118950_root_region[d54f]::{impl#1}::'a), 'a) })], def_id: DefId(0:5 ~ issue_118950_root_region[d54f]::ToUnit::Unit) })
31+
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Projection, AliasTy { args: [*const {type error}, RePlaceholder(!1_BoundRegion { var: 0, kind: BrNamed(DefId(0:15 ~ issue_118950_root_region[d54f]::{impl#1}::'a), 'a) })], def_id: DefId(0:5 ~ issue_118950_root_region[d54f]::ToUnit::Unit) })
32+
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Projection, AliasTy { args: [*const {type error}, RePlaceholder(!1_BoundRegion { var: 0, kind: BrNamed(DefId(0:15 ~ issue_118950_root_region[d54f]::{impl#1}::'a), 'a) })], def_id: DefId(0:5 ~ issue_118950_root_region[d54f]::ToUnit::Unit) })
33+
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Projection, AliasTy { args: [*const {type error}, RePlaceholder(!1_BoundRegion { var: 0, kind: BrNamed(DefId(0:15 ~ issue_118950_root_region[d54f]::{impl#1}::'a), 'a) })], def_id: DefId(0:5 ~ issue_118950_root_region[d54f]::ToUnit::Unit) })
34+
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Projection, AliasTy { args: [*const {type error}, RePlaceholder(!2_BoundRegion { var: 0, kind: BrNamed(DefId(0:15 ~ issue_118950_root_region[d54f]::{impl#1}::'a), 'a) })], def_id: DefId(0:5 ~ issue_118950_root_region[d54f]::ToUnit::Unit) })
1835
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Weak, AliasTy { args: [ReBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrNamed(DefId(0:15 ~ issue_118950_root_region[d54f]::{impl#1}::'a), 'a) }), ?1t], def_id: DefId(0:8 ~ issue_118950_root_region[d54f]::Assoc) })
1936
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Weak, AliasTy { args: [RePlaceholder(!1_BoundRegion { var: 0, kind: BrNamed(DefId(0:15 ~ issue_118950_root_region[d54f]::{impl#1}::'a), 'a) }), ?1t], def_id: DefId(0:8 ~ issue_118950_root_region[d54f]::Assoc) })
37+
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Projection, AliasTy { args: [*const {type error}, RePlaceholder(!2_BoundRegion { var: 0, kind: BrNamed(DefId(0:15 ~ issue_118950_root_region[d54f]::{impl#1}::'a), 'a) })], def_id: DefId(0:5 ~ issue_118950_root_region[d54f]::ToUnit::Unit) })
2038
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Weak, AliasTy { args: [ReBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrNamed(DefId(0:15 ~ issue_118950_root_region[d54f]::{impl#1}::'a), 'a) }), ?1t], def_id: DefId(0:8 ~ issue_118950_root_region[d54f]::Assoc) })
2139
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Weak, AliasTy { args: [RePlaceholder(!1_BoundRegion { var: 0, kind: BrNamed(DefId(0:15 ~ issue_118950_root_region[d54f]::{impl#1}::'a), 'a) }), ?1t], def_id: DefId(0:8 ~ issue_118950_root_region[d54f]::Assoc) })
40+
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Projection, AliasTy { args: [*const {type error}, RePlaceholder(!2_BoundRegion { var: 0, kind: BrNamed(DefId(0:15 ~ issue_118950_root_region[d54f]::{impl#1}::'a), 'a) })], def_id: DefId(0:5 ~ issue_118950_root_region[d54f]::ToUnit::Unit) })
2241
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Weak, AliasTy { args: [ReBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrNamed(DefId(0:15 ~ issue_118950_root_region[d54f]::{impl#1}::'a), 'a) }), ?1t], def_id: DefId(0:8 ~ issue_118950_root_region[d54f]::Assoc) })
2342
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Weak, AliasTy { args: [RePlaceholder(!1_BoundRegion { var: 0, kind: BrNamed(DefId(0:15 ~ issue_118950_root_region[d54f]::{impl#1}::'a), 'a) }), ?1t], def_id: DefId(0:8 ~ issue_118950_root_region[d54f]::Assoc) })
43+
WARN rustc_infer::infer::relate::generalize may incompletely handle alias type: Alias(Projection, AliasTy { args: [*const {type error}, RePlaceholder(!2_BoundRegion { var: 0, kind: BrNamed(DefId(0:15 ~ issue_118950_root_region[d54f]::{impl#1}::'a), 'a) })], def_id: DefId(0:5 ~ issue_118950_root_region[d54f]::ToUnit::Unit) })
2444
error[E0119]: conflicting implementations of trait `Overlap<fn(_)>` for type `fn(_)`
2545
--> $DIR/issue-118950-root-region.rs:18:1
2646
|

0 commit comments

Comments
 (0)