@@ -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;
@@ -1788,7 +1789,7 @@ fn check_arm(e: @env, a: ast::arm, &&x: (), v: vt<()>) {
1788
1789
visit:: visit_arm( a, x, v) ;
1789
1790
let ch0 = checker( * e, "binding") ;
1790
1791
check_pat( e, ch0, a. pats[ 0 ] ) ;
1791
- let seen0 = ch0. seen;
1792
+ let seen0 = ch0. seen. get ( ) ;
1792
1793
let mut i = vec:: len( a. pats) ;
1793
1794
while i > 1 u {
1794
1795
i -= 1 u;
@@ -1797,7 +1798,7 @@ fn check_arm(e: @env, a: ast::arm, &&x: (), v: vt<()>) {
1797
1798
1798
1799
// Ensure the bindings introduced in this pattern are the same as in
1799
1800
// the first pattern.
1800
- if vec :: len ( ch. seen) != vec :: len( seen0 ) {
1801
+ if ch. seen. len ( ) != seen0 . len( ) {
1801
1802
e. sess. span_err( a. pats[ i] . span,
1802
1803
"inconsistent number of bindings") ;
1803
1804
} else {
@@ -1892,11 +1893,10 @@ fn check_ty(e: @env, ty: @ast::ty, &&x: (), v: vt<()>) {
1892
1893
visit:: visit_ty( ty, x, v) ;
1893
1894
}
1894
1895
1895
- type checker = @{ mut seen: [ ident] , kind: str , sess: session} ;
1896
+ type checker = @{ seen: dvec < ident > , kind: str, sess: session} ;
1896
1897
1897
1898
fn checker( e: env, kind: str ) -> checker {
1898
- let seen : [ ident] = [ ] ;
1899
- ret @{ mut seen : seen, kind : kind, sess : e. sess} ;
1899
+ ret @{ seen : dvec( ) , kind : kind, sess : e. sess} ;
1900
1900
}
1901
1901
1902
1902
fn check_name( ch: checker, sp: span, name: ident) {
@@ -1908,7 +1908,7 @@ fn check_name(ch: checker, sp: span, name: ident) {
1908
1908
}
1909
1909
fn add_name( ch: checker, sp: span, name: ident) {
1910
1910
check_name( ch, sp, name) ;
1911
- ch. seen += [ name] ;
1911
+ ch. seen. push ( name) ;
1912
1912
}
1913
1913
1914
1914
fn ensure_unique < T > ( e: env, sp: span, elts: [ T ] , id: fn ( T ) -> ident,
0 commit comments