mirror of
https://github.com/zeek/zeek.git
synced 2025-10-13 20:18:20 +00:00
Fix incorrect conflict detection of namespaced-enum-names
E.g. defining a `Foo::RED` enum name when a `GLOBAL::RED` identifier already exists would previously be treated as an error, even though the names don't truly conflict.
This commit is contained in:
parent
69c0cf1513
commit
26ad26c101
3 changed files with 9 additions and 6 deletions
|
@ -1249,7 +1249,8 @@ void EnumType::CheckAndAddName(const string& module_name, const char* name,
|
|||
return;
|
||||
}
|
||||
|
||||
auto id = zeek::detail::lookup_ID(name, module_name.c_str());
|
||||
auto fullname = make_full_var_name(module_name.c_str(), name);
|
||||
auto id = zeek::id::find(fullname);
|
||||
|
||||
if ( ! id )
|
||||
{
|
||||
|
@ -1267,9 +1268,7 @@ void EnumType::CheckAndAddName(const string& module_name, const char* name,
|
|||
// We allow double-definitions if matching exactly. This is so that
|
||||
// we can define an enum both in a *.bif and *.zeek for avoiding
|
||||
// cyclic dependencies.
|
||||
string fullname = make_full_var_name(module_name.c_str(), name);
|
||||
if ( id->Name() != fullname
|
||||
|| ! id->IsEnumConst()
|
||||
if ( ! id->IsEnumConst()
|
||||
|| (id->HasVal() && val != id->GetVal()->AsEnum())
|
||||
|| GetName() != id->GetType()->GetName()
|
||||
|| (names.find(fullname) != names.end() && names[fullname] != val) )
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue