1
Fork 0

make ref x bindings produce region ptrs and fix various minor bugs

we now detect inconsistent modes, binding names, and various other errors.
typeck/trans integration is mostly done.

borrowck not so much.

more tests needed.
This commit is contained in:
Niko Matsakis 2012-08-06 07:20:23 -07:00
parent ecaf9e39c9
commit a6a5c48c64
19 changed files with 339 additions and 176 deletions

View file

@ -0,0 +1,41 @@
enum opts {
a(int), b(int), c(int)
}
fn matcher1(x: opts) {
alt x {
a(ref i) | b(copy i) => {} //~ ERROR variable `i` is bound with different mode in pattern #2 than in pattern #1
c(_) => {}
}
}
fn matcher2(x: opts) {
alt x {
a(ref i) | b(i) => {} //~ ERROR variable `i` is bound with different mode in pattern #2 than in pattern #1
c(_) => {}
}
}
fn matcher3(x: opts) {
alt x {
a(ref mut i) | b(ref const i) => {} //~ ERROR variable `i` is bound with different mode in pattern #2 than in pattern #1
c(_) => {}
}
}
fn matcher4(x: opts) {
alt x {
a(ref mut i) | b(ref i) => {} //~ ERROR variable `i` is bound with different mode in pattern #2 than in pattern #1
c(_) => {}
}
}
fn matcher5(x: opts) {
alt x {
a(ref i) | b(ref i) => {}
c(_) => {}
}
}
fn main() {}