mirror of
https://github.com/zeek/zeek.git
synced 2025-10-04 23:58:20 +00:00
Improve error message of index assignment expression failures
This commit is contained in:
parent
802b4f876e
commit
a7ba44089b
3 changed files with 62 additions and 2 deletions
32
src/Expr.cc
32
src/Expr.cc
|
@ -3119,12 +3119,40 @@ void IndexExpr::Assign(Frame* f, Val* v, Opcode op)
|
|||
switch ( v1->Type()->Tag() ) {
|
||||
case TYPE_VECTOR:
|
||||
if ( ! v1->AsVectorVal()->Assign(v2, v, op) )
|
||||
Internal("assignment failed");
|
||||
{
|
||||
if ( v )
|
||||
{
|
||||
ODesc d;
|
||||
v->Describe(&d);
|
||||
auto vt = v->Type();
|
||||
auto vtt = vt->Tag();
|
||||
std::string tn = vtt == TYPE_RECORD ? vt->GetName() : type_name(vtt);
|
||||
Internal(fmt(
|
||||
"vector index assignment failed for invalid type '%s', value: %s",
|
||||
tn.data(), d.Description()));
|
||||
}
|
||||
else
|
||||
Internal("assignment failed with null value");
|
||||
}
|
||||
break;
|
||||
|
||||
case TYPE_TABLE:
|
||||
if ( ! v1->AsTableVal()->Assign(v2, v, op) )
|
||||
Internal("assignment failed");
|
||||
{
|
||||
if ( v )
|
||||
{
|
||||
ODesc d;
|
||||
v->Describe(&d);
|
||||
auto vt = v->Type();
|
||||
auto vtt = vt->Tag();
|
||||
std::string tn = vtt == TYPE_RECORD ? vt->GetName() : type_name(vtt);
|
||||
Internal(fmt(
|
||||
"table index assignment failed for invalid type '%s', value: %s",
|
||||
tn.data(), d.Description()));
|
||||
}
|
||||
else
|
||||
Internal("assignment failed with null value");
|
||||
}
|
||||
break;
|
||||
|
||||
case TYPE_STRING:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue