Skip to content

Commit ef5c439

Browse files
committed
Correct merge errors, broken tests
1 parent 4a0469e commit ef5c439

File tree

6 files changed

+47
-9
lines changed

6 files changed

+47
-9
lines changed

src/librustc/middle/typeck/check/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -686,7 +686,7 @@ impl FnCtxt {
686686
result::Err(RegionError {
687687
msg: {
688688
fmt!("named region `%s` not in scope here",
689-
bound_region_to_str(self.tcx(), br))
689+
bound_region_ptr_to_str(self.tcx(), br))
690690
},
691691
replacement: {
692692
self.infcx().next_region_var(

src/librustc/middle/typeck/infer/error_reporting.rs

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ time of error detection.
5959
6060
*/
6161

62-
use core::prelude::*;
62+
use std::prelude::*;
6363
use middle::ty;
6464
use middle::ty::Region;
6565
use middle::typeck::infer;
@@ -80,10 +80,46 @@ use syntax::opt_vec::OptVec;
8080
use util::ppaux::UserString;
8181
use util::ppaux::note_and_explain_region;
8282

83-
impl InferCtxt {
83+
pub trait ErrorReporting {
84+
pub fn report_region_errors(@mut self,
85+
errors: &OptVec<RegionResolutionError>);
86+
87+
pub fn report_and_explain_type_error(@mut self,
88+
trace: TypeTrace,
89+
terr: &ty::type_err);
90+
91+
fn values_str(@mut self, values: &ValuePairs) -> Option<~str>;
92+
93+
fn expected_found_str<T:UserString+Resolvable>(
94+
@mut self,
95+
exp_found: &ty::expected_found<T>)
96+
-> Option<~str>;
97+
98+
fn report_concrete_failure(@mut self,
99+
origin: SubregionOrigin,
100+
sub: Region,
101+
sup: Region);
102+
103+
fn report_sub_sup_conflict(@mut self,
104+
var_origin: RegionVariableOrigin,
105+
sub_origin: SubregionOrigin,
106+
sub_region: Region,
107+
sup_origin: SubregionOrigin,
108+
sup_region: Region);
109+
110+
fn report_sup_sup_conflict(@mut self,
111+
var_origin: RegionVariableOrigin,
112+
origin1: SubregionOrigin,
113+
region1: Region,
114+
origin2: SubregionOrigin,
115+
region2: Region);
116+
}
117+
118+
119+
impl ErrorReporting for InferCtxt {
84120
pub fn report_region_errors(@mut self,
85121
errors: &OptVec<RegionResolutionError>) {
86-
for errors.each |error| {
122+
for errors.iter().advance |error| {
87123
match *error {
88124
ConcreteFailure(origin, sub, sup) => {
89125
self.report_concrete_failure(origin, sub, sup);

src/librustc/middle/typeck/infer/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ use middle::typeck::infer::sub::Sub;
3131
use middle::typeck::infer::lub::Lub;
3232
use middle::typeck::infer::to_str::InferStr;
3333
use middle::typeck::infer::unify::{ValsAndBindings, Root};
34+
use middle::typeck::infer::error_reporting::ErrorReporting;
3435
use middle::typeck::isr_alist;
3536
use util::common::indent;
3637
use util::ppaux::{bound_region_to_str, ty_to_str, trait_ref_to_str, Repr,

src/librustc/middle/typeck/infer/region_inference/mod.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ mod doc;
3636
enum Constraint {
3737
ConstrainVarSubVar(RegionVid, RegionVid),
3838
ConstrainRegSubVar(Region, RegionVid),
39-
ConstrainVarSubReg(RegionVid, Region)
39+
ConstrainVarSubReg(RegionVid, Region),
40+
ConstrainRegSubReg(Region, Region),
4041
}
4142

4243
#[deriving(Eq, IterBytes)]
@@ -454,7 +455,7 @@ impl RegionVarBindings {
454455
{
455456
let mut result_set = result_set;
456457
if r == r1 { // Clearly, this is potentially inefficient.
457-
if !result_set.iter().any_(|x| x == r2) {
458+
if !result_set.iter().any_(|x| *x == r2) {
458459
result_set.push(r2);
459460
}
460461
}

src/librustc/util/ppaux.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -610,7 +610,7 @@ impl Repr for @ast::pat {
610610

611611
impl Repr for ty::bound_region {
612612
fn repr(&self, tcx: ctxt) -> ~str {
613-
bound_region_to_str(tcx, *self)
613+
bound_region_ptr_to_str(tcx, *self)
614614
}
615615
}
616616

src/test/compile-fail/regions-bounds.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@ struct an_enum<'self>(&'self int);
1616
struct a_class<'self> { x:&'self int }
1717

1818
fn a_fn1<'a,'b>(e: an_enum<'a>) -> an_enum<'b> {
19-
return e; //~ ERROR mismatched types: expected `an_enum<'b> ` but found `an_enum<'a> `
19+
return e; //~ ERROR mismatched types: expected `an_enum<'b>` but found `an_enum<'a>`
2020
//~^ ERROR cannot infer an appropriate lifetime
2121
}
2222

2323
fn a_fn3<'a,'b>(e: a_class<'a>) -> a_class<'b> {
24-
return e; //~ ERROR mismatched types: expected `a_class<'b> ` but found `a_class<'a> `
24+
return e; //~ ERROR mismatched types: expected `a_class<'b>` but found `a_class<'a>`
2525
//~^ ERROR cannot infer an appropriate lifetime
2626
}
2727

0 commit comments

Comments
 (0)