authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2016-05-18 18:05:03-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2016-05-18 18:05:03-07:00
log39016c1d3e4fe3cc579a5c0c5aea696401562900
tree8000d615230c92bffb41d7ebf29f1e34a6587d27
parentf6b16c99ba44cf1cb6d5ea106093e426e6623443

fix offset map for inline assembly error messages


1 files changed, 23 insertions(+), 0 deletions(-)

src/parser.cpp+23
......@@ -267,6 +267,29 @@ static void parse_string_literal(ParseContext *pc, Token *token, Buf *buf, bool
267267 }
268268 const char *str = buf_ptr(pc->buf) + token->raw_string_start;
269269 buf_init_from_mem(buf, str, token->raw_string_end - token->raw_string_start);
270 if (offset_map) {
271 SrcPos pos = {token->start_line, token->start_column};
272 for (int i = token->start_pos; i < token->raw_string_start; i += 1) {
273 uint8_t c = buf_ptr(pc->buf)[i];
274 if (c == '\n') {
275 pos.line += 1;
276 pos.column = 0;
277 } else {
278 pos.column += 1;
279 }
280 }
281 for (int i = token->raw_string_start; i < token->raw_string_end; i += 1) {
282 offset_map->append(pos);
283
284 uint8_t c = buf_ptr(pc->buf)[i];
285 if (c == '\n') {
286 pos.line += 1;
287 pos.column = 0;
288 } else {
289 pos.column += 1;
290 }
291 }
292 }
270293 return;
271294 }
272295