mirror of
https://github.com/zeek/zeek.git
synced 2025-10-10 10:38:20 +00:00
Improve error message for an enum name conflicting with non-enum ID
This commit is contained in:
parent
4a9567e04f
commit
69c0cf1513
3 changed files with 10 additions and 0 deletions
|
@ -1269,6 +1269,7 @@ void EnumType::CheckAndAddName(const string& module_name, const char* name,
|
||||||
// cyclic dependencies.
|
// cyclic dependencies.
|
||||||
string fullname = make_full_var_name(module_name.c_str(), name);
|
string fullname = make_full_var_name(module_name.c_str(), name);
|
||||||
if ( id->Name() != fullname
|
if ( id->Name() != fullname
|
||||||
|
|| ! id->IsEnumConst()
|
||||||
|| (id->HasVal() && val != id->GetVal()->AsEnum())
|
|| (id->HasVal() && val != id->GetVal()->AsEnum())
|
||||||
|| GetName() != id->GetType()->GetName()
|
|| GetName() != id->GetType()->GetName()
|
||||||
|| (names.find(fullname) != names.end() && names[fullname] != val) )
|
|| (names.find(fullname) != names.end() && names[fullname] != val) )
|
||||||
|
|
|
@ -2,3 +2,4 @@ error in /home/jon/pro/zeek/zeek/testing/btest/.tmp/language.enum-name-conflict/
|
||||||
error in /home/jon/pro/zeek/zeek/testing/btest/.tmp/language.enum-name-conflict/enum-name-conflict.zeek, line 15 and /home/jon/pro/zeek/zeek/testing/btest/.tmp/language.enum-name-conflict/enum-name-conflict.zeek, line 5: conflicting definition of enum value 'RED' in type 'b'
|
error in /home/jon/pro/zeek/zeek/testing/btest/.tmp/language.enum-name-conflict/enum-name-conflict.zeek, line 15 and /home/jon/pro/zeek/zeek/testing/btest/.tmp/language.enum-name-conflict/enum-name-conflict.zeek, line 5: conflicting definition of enum value 'RED' in type 'b'
|
||||||
error in /home/jon/pro/zeek/zeek/testing/btest/.tmp/language.enum-name-conflict/enum-name-conflict.zeek, line 27 and /home/jon/pro/zeek/zeek/testing/btest/.tmp/language.enum-name-conflict/enum-name-conflict.zeek, line 23: conflicting definition of enum value 'Foo::TWO' in type 'Foo::bf'
|
error in /home/jon/pro/zeek/zeek/testing/btest/.tmp/language.enum-name-conflict/enum-name-conflict.zeek, line 27 and /home/jon/pro/zeek/zeek/testing/btest/.tmp/language.enum-name-conflict/enum-name-conflict.zeek, line 23: conflicting definition of enum value 'Foo::TWO' in type 'Foo::bf'
|
||||||
error in /home/jon/pro/zeek/zeek/testing/btest/.tmp/language.enum-name-conflict/enum-name-conflict.zeek, line 32 and /home/jon/pro/zeek/zeek/testing/btest/.tmp/language.enum-name-conflict/enum-name-conflict.zeek, line 22: conflicting definition of enum value 'Foo::ONE' in type 'Foo::bf'
|
error in /home/jon/pro/zeek/zeek/testing/btest/.tmp/language.enum-name-conflict/enum-name-conflict.zeek, line 32 and /home/jon/pro/zeek/zeek/testing/btest/.tmp/language.enum-name-conflict/enum-name-conflict.zeek, line 22: conflicting definition of enum value 'Foo::ONE' in type 'Foo::bf'
|
||||||
|
error in /home/jon/pro/zeek/zeek/testing/btest/.tmp/language.enum-name-conflict/enum-name-conflict.zeek, line 41 and /home/jon/pro/zeek/zeek/testing/btest/.tmp/language.enum-name-conflict/enum-name-conflict.zeek, line 38: conflicting definition of enum value 'NOPE' in type 'a'
|
||||||
|
|
|
@ -32,3 +32,11 @@ export {
|
||||||
ONE,
|
ONE,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module GLOBAL;
|
||||||
|
|
||||||
|
global NOPE = 37;
|
||||||
|
|
||||||
|
redef enum a += {
|
||||||
|
NOPE,
|
||||||
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue