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:
parent
ecaf9e39c9
commit
a6a5c48c64
19 changed files with 339 additions and 176 deletions
41
src/test/compile-fail/resolve-inconsistent-binding-mode.rs
Normal file
41
src/test/compile-fail/resolve-inconsistent-binding-mode.rs
Normal 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() {}
|
Loading…
Add table
Add a link
Reference in a new issue