From 4bf3c6ff224f2dfaed14a788735adb2126f1518a Mon Sep 17 00:00:00 2001 From: Jon Siwek Date: Tue, 15 Oct 2019 18:07:52 -0700 Subject: [PATCH] Improve &default validation for global vars: exclude sets --- src/Attr.cc | 4 ++-- .../Baseline/language.attr-default-global-set-error/out | 8 ++++---- testing/btest/language/attr-default-global-set-error.zeek | 1 + 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/Attr.cc b/src/Attr.cc index 74a6b2535b..c6cf036642 100644 --- a/src/Attr.cc +++ b/src/Attr.cc @@ -288,9 +288,9 @@ void Attributes::CheckAttr(Attr* a) { // &default is allowed for global tables, since it's used in initialization // of table fields. it's not allowed otherwise. - if ( global_var && ! type->IsSet() && type->Tag() != TYPE_TABLE ) + if ( global_var && ! type->IsTable() ) { - Error("&default is not valid for global variables"); + Error("&default is not valid for global variables except for tables"); break; } diff --git a/testing/btest/Baseline/language.attr-default-global-set-error/out b/testing/btest/Baseline/language.attr-default-global-set-error/out index f2a03aaa16..ddcc6a8345 100644 --- a/testing/btest/Baseline/language.attr-default-global-set-error/out +++ b/testing/btest/Baseline/language.attr-default-global-set-error/out @@ -1,5 +1,5 @@ -error in /home/jon/pro/zeek/zeek/testing/btest/.tmp/language.attr-default-global-set-error/attr-default-global-set-error.zeek, line 4: arithmetic mixed with non-arithmetic (set[string] and 0) -error in /home/jon/pro/zeek/zeek/testing/btest/.tmp/language.attr-default-global-set-error/attr-default-global-set-error.zeek, line 4: &default value has inconsistent type (0 and set[string]) -error in /home/jon/pro/zeek/zeek/testing/btest/.tmp/language.attr-default-global-set-error/attr-default-global-set-error.zeek, line 9: &default is not valid for global variables (&default=10) -error in /home/jon/pro/zeek/zeek/testing/btest/.tmp/language.attr-default-global-set-error/attr-default-global-set-error.zeek, line 9: &default is not valid for global variables (&default=9) +error in /home/jon/pro/zeek/zeek/testing/btest/.tmp/language.attr-default-global-set-error/attr-default-global-set-error.zeek, line 4: &default is not valid for global variables except for tables (&default=0) +error in /home/jon/pro/zeek/zeek/testing/btest/.tmp/language.attr-default-global-set-error/attr-default-global-set-error.zeek, line 9: &default is not valid for global variables except for tables (&default=10) +error in /home/jon/pro/zeek/zeek/testing/btest/.tmp/language.attr-default-global-set-error/attr-default-global-set-error.zeek, line 9: &default is not valid for global variables except for tables (&default=9) error in /home/jon/pro/zeek/zeek/testing/btest/.tmp/language.attr-default-global-set-error/attr-default-global-set-error.zeek, line 9: &optional is not valid for global variables (&default=9, &optional) +error in /home/jon/pro/zeek/zeek/testing/btest/.tmp/language.attr-default-global-set-error/attr-default-global-set-error.zeek, line 10: &default is not valid for global variables except for tables (&default=set()) diff --git a/testing/btest/language/attr-default-global-set-error.zeek b/testing/btest/language/attr-default-global-set-error.zeek index 05ae6b1722..41827f78a1 100644 --- a/testing/btest/language/attr-default-global-set-error.zeek +++ b/testing/btest/language/attr-default-global-set-error.zeek @@ -7,3 +7,4 @@ global d: count &default = 10 &optional &log &add_func = function(): count { return 3; }; +global myset: set[count] &default=set();