diff --git a/src/Attr.cc b/src/Attr.cc index 6e80a923a1..e854b635e0 100644 --- a/src/Attr.cc +++ b/src/Attr.cc @@ -22,6 +22,7 @@ const char* attr_name(AttrTag t) "&group", "&log", "&error_handler", "&type_column", "(&tracked)", "&on_change", "&broker_store", "&broker_allow_complex_type", "&backend", "&deprecated", + "&is_set", }; return attr_names[int(t)]; @@ -333,6 +334,7 @@ void Attributes::CheckAttr(Attr* a) switch ( a->Tag() ) { case ATTR_DEPRECATED: case ATTR_REDEF: + case ATTR_IS_SET: break; case ATTR_OPTIONAL: diff --git a/src/Attr.h b/src/Attr.h index ab0197057b..f883abe91c 100644 --- a/src/Attr.h +++ b/src/Attr.h @@ -46,6 +46,7 @@ enum AttrTag { ATTR_BROKER_STORE_ALLOW_COMPLEX, // for Broker store backed tables ATTR_BACKEND, // for Broker store backed tables ATTR_DEPRECATED, + ATTR_IS_SET, // to suppress warnings NUM_ATTRS // this item should always be last }; diff --git a/src/parse.y b/src/parse.y index 8b1bcbfbfe..6429d9250f 100644 --- a/src/parse.y +++ b/src/parse.y @@ -5,7 +5,7 @@ // Switching parser table type fixes ambiguity problems. %define lr.type ielr -%expect 129 +%expect 135 %token TOK_ADD TOK_ADD_TO TOK_ADDR TOK_ANY %token TOK_ATENDIF TOK_ATELSE TOK_ATIF TOK_ATIFDEF TOK_ATIFNDEF @@ -28,6 +28,7 @@ %token TOK_ATTR_BROKER_STORE_ALLOW_COMPLEX TOK_ATTR_BACKEND %token TOK_ATTR_PRIORITY TOK_ATTR_LOG TOK_ATTR_ERROR_HANDLER %token TOK_ATTR_TYPE_COLUMN TOK_ATTR_DEPRECATED +%token TOK_ATTR_IS_SET %token TOK_DEBUG @@ -1471,6 +1472,8 @@ attr: { $$ = new zeek::detail::Attr(zeek::detail::ATTR_OPTIONAL); } | TOK_ATTR_REDEF { $$ = new zeek::detail::Attr(zeek::detail::ATTR_REDEF); } + | TOK_ATTR_IS_SET + { $$ = new zeek::detail::Attr(zeek::detail::ATTR_IS_SET); } | TOK_ATTR_ADD_FUNC '=' expr { $$ = new zeek::detail::Attr(zeek::detail::ATTR_ADD_FUNC, {zeek::AdoptRef{}, $3}); } | TOK_ATTR_DEL_FUNC '=' expr diff --git a/src/scan.l b/src/scan.l index 71e95240e9..15777124d7 100644 --- a/src/scan.l +++ b/src/scan.l @@ -280,11 +280,12 @@ when return TOK_WHEN; &default return TOK_ATTR_DEFAULT; &delete_func return TOK_ATTR_DEL_FUNC; &deprecated return TOK_ATTR_DEPRECATED; -&raw_output return TOK_ATTR_RAW_OUTPUT; +&raw_output return TOK_ATTR_RAW_OUTPUT; &error_handler return TOK_ATTR_ERROR_HANDLER; &expire_func return TOK_ATTR_EXPIRE_FUNC; &log return TOK_ATTR_LOG; &optional return TOK_ATTR_OPTIONAL; +&is_set return TOK_ATTR_IS_SET; &priority return TOK_ATTR_PRIORITY; &type_column return TOK_ATTR_TYPE_COLUMN; &read_expire return TOK_ATTR_EXPIRE_READ;