libcpp: add callback for comment-handling
gcc/testsuite/ChangeLog: * g++.dg/plugin/comment_plugin.c: New test plugin. * g++.dg/plugin/comments-1.C: New test file. * g++.dg/plugin/plugin.exp (plugin_test_list): Add the above. libcpp/ChangeLog: * include/cpplib.h (struct cpp_callbacks): Add "comment" callback. * lex.c (_cpp_lex_direct): Call the comment callback if non-NULL. From-SVN: r248901
This commit is contained in:
committed by
David Malcolm
parent
9b972837bd
commit
05945a1b83
@@ -1,3 +1,9 @@
|
||||
2017-06-05 David Malcolm <dmalcolm@redhat.com>
|
||||
|
||||
* include/cpplib.h (struct cpp_callbacks): Add "comment"
|
||||
callback.
|
||||
* lex.c (_cpp_lex_direct): Call the comment callback if non-NULL.
|
||||
|
||||
2017-05-02 David Malcolm <dmalcolm@redhat.com>
|
||||
|
||||
* include/line-map.h (class rich_location): Update description of
|
||||
|
||||
@@ -609,6 +609,15 @@ struct cpp_callbacks
|
||||
|
||||
/* Callback for providing suggestions for misspelled directives. */
|
||||
const char *(*get_suggestion) (cpp_reader *, const char *, const char *const *);
|
||||
|
||||
/* Callback for when a comment is encountered, giving the location
|
||||
of the opening slash, a pointer to the content (which is not
|
||||
necessarily 0-terminated), and the length of the content.
|
||||
The content contains the opening slash-star (or slash-slash),
|
||||
and for C-style comments contains the closing star-slash. For
|
||||
C++-style comments it does not include the terminating newline. */
|
||||
void (*comment) (cpp_reader *, source_location, const unsigned char *,
|
||||
size_t);
|
||||
};
|
||||
|
||||
#ifdef VMS
|
||||
|
||||
@@ -2889,6 +2889,13 @@ _cpp_lex_direct (cpp_reader *pfile)
|
||||
if (fallthrough_comment_p (pfile, comment_start))
|
||||
fallthrough_comment = true;
|
||||
|
||||
if (pfile->cb.comment)
|
||||
{
|
||||
size_t len = pfile->buffer->cur - comment_start;
|
||||
pfile->cb.comment (pfile, result->src_loc, comment_start - 1,
|
||||
len + 1);
|
||||
}
|
||||
|
||||
if (!pfile->state.save_comments)
|
||||
{
|
||||
result->flags |= PREV_WHITE;
|
||||
|
||||
Reference in New Issue
Block a user