Fix misassociation of Zeekygen-style comments within function scopes

All Zeekygen-style comments relate to entities at global scope, so those
found within functions are now ignored instead of misassociated.
This commit is contained in:
Jon Siwek 2020-12-04 19:29:11 -08:00
parent 6323b0a8c2
commit 1f352a1e4d
2 changed files with 16 additions and 6 deletions

View file

@ -175,6 +175,11 @@ export {
# documentation. So using ``##``-style comments is pointless here. # documentation. So using ``##``-style comments is pointless here.
function function_without_proto(tag: string): string function function_without_proto(tag: string): string
{ {
# Zeekygen-style comments only apply to entities at global-scope so
# Zeekygen doesn't associate the following comments with anything.
##! This comment should be ignored by Zeekygen.
## This comment should be ignored by Zeekygen.
##< This comment should be ignored by Zeekygen.
return "blah"; return "blah";
} }

View file

@ -149,19 +149,24 @@ ESCSEQ (\\([^\n]|[0-7]+|x[[:xdigit:]]+))
%% %%
##!.* { ##!.* {
zeek::detail::zeekygen_mgr->SummaryComment(::filename, yytext + 3); if ( zeek::detail::current_scope() == zeek::detail::global_scope() )
zeek::detail::zeekygen_mgr->SummaryComment(::filename, yytext + 3);
} }
##<.* { ##<.* {
std::string hint(cur_enum_type && last_id_tok ? if ( zeek::detail::current_scope() == zeek::detail::global_scope() )
zeek::detail::make_full_var_name(zeek::detail::current_module.c_str(), last_id_tok) : ""); {
std::string hint(cur_enum_type && last_id_tok ?
zeek::detail::make_full_var_name(zeek::detail::current_module.c_str(), last_id_tok) : "");
zeek::detail::zeekygen_mgr->PostComment(yytext + 3, hint); zeek::detail::zeekygen_mgr->PostComment(yytext + 3, hint);
}
} }
##.* { ##.* {
if ( yytext[2] != '#' ) if ( zeek::detail::current_scope() == zeek::detail::global_scope() )
zeek::detail::zeekygen_mgr->PreComment(yytext + 2); if ( yytext[2] != '#' )
zeek::detail::zeekygen_mgr->PreComment(yytext + 2);
} }
#{OWS}@no-test.* return TOK_NO_TEST; #{OWS}@no-test.* return TOK_NO_TEST;