From 0278468479d52d6ea64521ab78574b593a6832ae Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Wed, 27 Jan 2016 00:01:49 -0700 Subject: upgrade to the libclang C++ API c_import creates a tmp .h file and parses it with libclang, reporting any errors found. See #88 --- src/parser.cpp | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-) (limited to 'src/parser.cpp') diff --git a/src/parser.cpp b/src/parser.cpp index 17e37db1e2..be5acd9a95 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -488,23 +488,16 @@ __attribute__ ((noreturn)) static void ast_asm_error(ParseContext *pc, AstNode *node, int offset, const char *format, ...) { assert(node->type == NodeTypeAsmExpr); - ErrorMsg *err = allocate(1); SrcPos pos = node->data.asm_expr.offset_map.at(offset); - err->line_start = pos.line; - err->column_start = pos.column; - err->line_end = -1; - err->column_end = -1; - va_list ap; va_start(ap, format); - err->msg = buf_vprintf(format, ap); + Buf *msg = buf_vprintf(format, ap); va_end(ap); - err->path = pc->owner->path; - err->source = pc->owner->source_code; - err->line_offsets = pc->owner->line_offsets; + ErrorMsg *err = err_msg_create_with_line(pc->owner->path, pos.line, pos.column, + pc->owner->source_code, pc->owner->line_offsets, msg); print_err_msg(err, pc->err_color); exit(EXIT_FAILURE); @@ -513,20 +506,16 @@ static void ast_asm_error(ParseContext *pc, AstNode *node, int offset, const cha __attribute__ ((format (printf, 3, 4))) __attribute__ ((noreturn)) static void ast_error(ParseContext *pc, Token *token, const char *format, ...) { - ErrorMsg *err = allocate(1); - err->line_start = token->start_line; - err->column_start = token->start_column; - err->line_end = -1; - err->column_end = -1; - va_list ap; va_start(ap, format); - err->msg = buf_vprintf(format, ap); + Buf *msg = buf_vprintf(format, ap); va_end(ap); - err->path = pc->owner->path; - err->source = pc->owner->source_code; - err->line_offsets = pc->owner->line_offsets; + + ErrorMsg *err = err_msg_create_with_line(pc->owner->path, token->start_line, token->start_column, + pc->owner->source_code, pc->owner->line_offsets, msg); + err->line_start = token->start_line; + err->column_start = token->start_column; print_err_msg(err, pc->err_color); exit(EXIT_FAILURE); -- cgit v1.2.3