@@ -17,6 +17,7 @@ import std::{list};
17
17
import std:: list:: { list, nil, cons} ;
18
18
import option:: { is_none, is_some} ;
19
19
import syntax:: print:: pprust:: * ;
20
+ import dvec:: { dvec, extensions} ;
20
21
21
22
export resolve_crate;
22
23
export def_map, ext_map, exp_map, impl_map;
@@ -1798,7 +1799,7 @@ fn check_arm(e: @env, a: ast::arm, &&x: (), v: vt<()>) {
1798
1799
visit:: visit_arm( a, x, v) ;
1799
1800
let ch0 = checker( * e, "binding") ;
1800
1801
check_pat( e, ch0, a. pats[ 0 ] ) ;
1801
- let seen0 = ch0. seen;
1802
+ let seen0 = ch0. seen. get ( ) ;
1802
1803
let mut i = vec:: len( a. pats) ;
1803
1804
while i > 1 u {
1804
1805
i -= 1 u;
@@ -1807,7 +1808,7 @@ fn check_arm(e: @env, a: ast::arm, &&x: (), v: vt<()>) {
1807
1808
1808
1809
// Ensure the bindings introduced in this pattern are the same as in
1809
1810
// the first pattern.
1810
- if vec :: len ( ch. seen) != vec :: len( seen0 ) {
1811
+ if ch. seen. len ( ) != seen0 . len( ) {
1811
1812
e. sess. span_err( a. pats[ i] . span,
1812
1813
"inconsistent number of bindings") ;
1813
1814
} else {
@@ -1902,11 +1903,10 @@ fn check_ty(e: @env, ty: @ast::ty, &&x: (), v: vt<()>) {
1902
1903
visit:: visit_ty( ty, x, v) ;
1903
1904
}
1904
1905
1905
- type checker = @{ mut seen: [ ident] , kind: str , sess: session} ;
1906
+ type checker = @{ seen: dvec < ident > , kind: str, sess: session} ;
1906
1907
1907
1908
fn checker( e: env, kind: str ) -> checker {
1908
- let seen : [ ident] = [ ] ;
1909
- ret @{ mut seen : seen, kind : kind, sess : e. sess} ;
1909
+ ret @{ seen : dvec( ) , kind : kind, sess : e. sess} ;
1910
1910
}
1911
1911
1912
1912
fn check_name( ch: checker, sp: span, name: ident) {
@@ -1918,7 +1918,7 @@ fn check_name(ch: checker, sp: span, name: ident) {
1918
1918
}
1919
1919
fn add_name( ch: checker, sp: span, name: ident) {
1920
1920
check_name( ch, sp, name) ;
1921
- ch. seen += [ name] ;
1921
+ ch. seen. push ( name) ;
1922
1922
}
1923
1923
1924
1924
fn ensure_unique < T > ( e: env, sp: span, elts: [ T ] , id: fn ( T ) -> ident,
0 commit comments