diff --git a/doc b/doc index d3a5f3ca9c..8eddb05801 160000 --- a/doc +++ b/doc @@ -1 +1 @@ -Subproject commit d3a5f3ca9ca54f126a149bbe2bd9c7422d80b107 +Subproject commit 8eddb05801f5a6647b6ea343473c82e9e02db237 diff --git a/src/Attr.cc b/src/Attr.cc index d8cd73ee6f..e512f0bfe4 100644 --- a/src/Attr.cc +++ b/src/Attr.cc @@ -181,8 +181,9 @@ void Attributes::AddAttr(Attr* attr) ! FindAttr(ATTR_REDEF) ) attrs->push_back(new Attr(ATTR_REDEF)); - // For DEFAULT, add an implicit OPTIONAL. - if ( attr->Tag() == ATTR_DEFAULT && ! FindAttr(ATTR_OPTIONAL) ) + // For DEFAULT, add an implicit OPTIONAL if it's not a global. + if ( ! global_var && attr->Tag() == ATTR_DEFAULT && + ! FindAttr(ATTR_OPTIONAL) ) attrs->push_back(new Attr(ATTR_OPTIONAL)); } 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 55c70a62ff..f2a03aaa16 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 /Users/tim/Desktop/projects/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 /Users/tim/Desktop/projects/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 /Users/tim/Desktop/projects/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 /Users/tim/Desktop/projects/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 (&optional, &default=9) -error in /Users/tim/Desktop/projects/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 (&optional, &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 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 9: &optional is not valid for global variables (&default=9, &optional) diff --git a/testing/btest/Baseline/language.table-redef-default/out b/testing/btest/Baseline/language.table-redef-default/out new file mode 100644 index 0000000000..38dfcd606b --- /dev/null +++ b/testing/btest/Baseline/language.table-redef-default/out @@ -0,0 +1,2 @@ +uno +some number diff --git a/testing/btest/language/table-redef-default.zeek b/testing/btest/language/table-redef-default.zeek new file mode 100644 index 0000000000..39e308c653 --- /dev/null +++ b/testing/btest/language/table-redef-default.zeek @@ -0,0 +1,14 @@ +# @TEST-EXEC: zeek -b %INPUT >out +# @TEST-EXEC: btest-diff out + +const mymap: table[count] of string = { + [1] = "one", + [2] = "two", +} &default="original default" &redef; + +redef mymap = { + [1] = "uno", +} &default="some number"; + +print mymap[1]; +print mymap[2];