Merge remote-tracking branch 'origin/topic/timw/1740-table-key-error'

* origin/topic/timw/1740-table-key-error:
  GH-1741: Print error if calling a non-hook with hook keyword
  GH-1740: Report a better error message if table key is not a list
This commit is contained in:
Tim Wojtulewicz 2021-12-10 09:28:23 -07:00
commit 7a6a81c200
6 changed files with 31 additions and 11 deletions

View file

@ -2626,7 +2626,7 @@ TypePtr AssignExpr::InitType() const
{
if ( op1->Tag() != EXPR_LIST )
{
Error("bad initializer");
Error("bad initializer, first operand should be a list");
return nullptr;
}
@ -3490,7 +3490,10 @@ TableConstructorExpr::TableConstructorExpr(ListExprPtr constructor_list,
SetType(init_type(op.get()));
if ( ! type )
{
SetError();
return;
}
else if ( type->Tag() != TYPE_TABLE || type->AsTableType()->IsSet() )
SetError("values in table(...) constructor do not specify a table");

View file

@ -721,8 +721,12 @@ expr:
{
--in_hook;
set_location(@1, @3);
if ( $3->Tag() != EXPR_CALL )
$3->Error("not a valid hook call expression");
else if ( $3->AsCallExpr()->Func()->GetType()->AsFuncType()->Flavor() != FUNC_FLAVOR_HOOK )
$3->Error("hook keyword should only be used to call hooks");
$$ = $3;
}