@@ -58,21 +58,19 @@ enum file_substr {
58
58
fss_external( { filename : ~str , line : uint , col : uint } )
59
59
}
60
60
61
- struct filemap_ {
61
+ struct filemap {
62
62
name : filename , substr : file_substr , src : @~str ,
63
63
start_pos : file_pos , mut lines : ~[ file_pos ]
64
64
}
65
65
66
- type filemap = @filemap_ ;
67
-
68
66
struct CodeMap_ {
69
- files : DVec < filemap >
67
+ files : DVec < @ filemap >
70
68
}
71
69
72
70
type CodeMap = @CodeMap_ ;
73
71
74
72
struct loc {
75
- file : filemap , line : uint , col : uint
73
+ file : @ filemap , line : uint , col : uint
76
74
}
77
75
78
76
fn new_codemap ( ) -> CodeMap { @CodeMap_ { files : DVec ( ) } }
@@ -81,7 +79,7 @@ fn new_filemap_w_substr(+filename: filename, +substr: file_substr,
81
79
src : @~str ,
82
80
start_pos_ch : uint , start_pos_byte : uint )
83
81
-> filemap {
84
- return @ filemap_ {
82
+ return filemap {
85
83
name : filename, substr : substr, src : src,
86
84
start_pos : file_pos { ch : start_pos_ch, byte : start_pos_byte} ,
87
85
mut lines : ~[ file_pos { ch : start_pos_ch, byte : start_pos_byte} ]
@@ -101,14 +99,14 @@ fn mk_substr_filename(cm: CodeMap, sp: span) -> ~str
101
99
return fmt ! ( "<%s:%u:%u>" , pos. file. name, pos. line, pos. col) ;
102
100
}
103
101
104
- fn next_line ( file : filemap , chpos : uint , byte_pos : uint ) {
102
+ fn next_line ( file : @ filemap , chpos : uint , byte_pos : uint ) {
105
103
file. lines . push ( file_pos { ch : chpos, byte : byte_pos + file. start_pos . byte } ) ;
106
104
}
107
105
108
106
type lookup_fn = pure fn( file_pos ) -> uint ;
109
107
110
108
fn lookup_line ( map : CodeMap , pos : uint , lookup : lookup_fn )
111
- -> { fm : filemap , line : uint }
109
+ -> { fm : @ filemap , line : uint }
112
110
{
113
111
let len = map. files . len ( ) ;
114
112
let mut a = 0 u;
@@ -146,7 +144,7 @@ fn lookup_byte_pos(map: CodeMap, pos: uint) -> loc {
146
144
}
147
145
148
146
fn lookup_char_pos_adj ( map : CodeMap , pos : uint )
149
- -> { filename : ~str , line : uint , col : uint , file : Option < filemap > }
147
+ -> { filename : ~str , line : uint , col : uint , file : Option < @ filemap > }
150
148
{
151
149
let loc = lookup_char_pos ( map, pos) ;
152
150
match ( loc. file . substr ) {
@@ -222,7 +220,7 @@ fn span_to_str(sp: span, cm: CodeMap) -> ~str {
222
220
}
223
221
224
222
struct file_lines {
225
- file : filemap ,
223
+ file : @ filemap ,
226
224
lines : ~[ uint ]
227
225
}
228
226
@@ -241,7 +239,7 @@ fn span_to_lines(sp: span, cm: codemap::CodeMap) -> @file_lines {
241
239
return @file_lines { file : lo. file , lines : lines} ;
242
240
}
243
241
244
- fn get_line ( fm : filemap , line : int ) -> ~str unsafe {
242
+ fn get_line ( fm : @ filemap , line : int ) -> ~str unsafe {
245
243
let begin: uint = fm. lines [ line] . byte - fm. start_pos . byte ;
246
244
let end = match str:: find_char_from ( * fm. src , '\n' , begin) {
247
245
Some ( e) => e,
@@ -251,7 +249,7 @@ fn get_line(fm: filemap, line: int) -> ~str unsafe {
251
249
}
252
250
253
251
fn lookup_byte_offset ( cm : codemap:: CodeMap , chpos : uint )
254
- -> { fm : filemap , pos : uint } {
252
+ -> { fm : @ filemap , pos : uint } {
255
253
pure fn lookup ( pos : file_pos ) -> uint { return pos. ch ; }
256
254
let { fm, line} = lookup_line ( cm, chpos, lookup) ;
257
255
let line_offset = fm. lines [ line] . byte - fm. start_pos . byte ;
@@ -273,7 +271,7 @@ fn get_snippet(cm: codemap::CodeMap, fidx: uint, lo: uint, hi: uint) -> ~str
273
271
return str:: slice ( * fm. src , lo, hi)
274
272
}
275
273
276
- fn get_filemap ( cm : CodeMap , filename : ~str ) -> filemap {
274
+ fn get_filemap ( cm : CodeMap , filename : ~str ) -> @ filemap {
277
275
for cm. files. each |fm| { if fm. name == filename { return * fm; } }
278
276
//XXjdm the following triggers a mismatched type bug
279
277
// (or expected function, found _|_)
0 commit comments