From 178b58b59e18dcb713ef8ed45f79ffa072c617a5 Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Thu, 3 Nov 2005 23:08:18 +0000 Subject: re PR c++/17964 (cpp error messages contain wrong line in C++) gcc: PR c++/17964 * diagnostic.c (diagnostic_set_info_translated): New function. (diagnostic_set_info): Use it. Add comment. * diagnostic.h (diagnostic_set_info_translated): Declare. gcc/cp: * error.c (cp_cpp_error): New function. * cp-tree.h (cp_cpp_error): Declare. * parser.c (cp_lexer_new_main): Set CPP option client_diagnostic and error callback after lexing. gcc/testsuite: * g++.dg/cpp/string-1.C: New test. libcpp: * include/cpplib.h (struct cpp_options): Add client_diagnostic. (struct cpp_callbacks): Add error. * errors.c (cpp_error): If client_diagnostic, use error callback. * charset.c (convert_escape): Don't use %03o in diagnostic. From-SVN: r106454 --- libcpp/include/cpplib.h | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'libcpp/include/cpplib.h') diff --git a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h index 3c4d0d6..c5d8e85 100644 --- a/libcpp/include/cpplib.h +++ b/libcpp/include/cpplib.h @@ -435,6 +435,9 @@ struct cpp_options /* True means return pragmas as tokens rather than processing them directly. */ bool defer_pragmas; + + /* True means error callback should be used for diagnostics. */ + bool client_diagnostic; }; /* Callback for header lookup for HEADER, which is the name of a @@ -467,6 +470,11 @@ struct cpp_callbacks int (*valid_pch) (cpp_reader *, const char *, int); void (*read_pch) (cpp_reader *, const char *, int, const char *); missing_header_cb missing_header; + + /* Called to emit a diagnostic if client_diagnostic option is true. + This callback receives the translated message. */ + void (*error) (cpp_reader *, int, const char *, va_list) + ATTRIBUTE_PRINTF(3,0); }; /* Chain of directories to look for include files in. */ -- cgit v1.1