compiler: panic arguments are empty interface type
After CL 536643 passing NULL as the expected type permitted an untyped constant expression to remain untyped. Change to passing the empty interface type. The panic and print/println functions are the only builtin functions that turn an untyped constant expression into a regular function call, and we already handled print/println specially. The test case is https://go.dev/cl/603096. Fixes golang/go#68734 Change-Id: I02f353425b1f4cb8253ab7b29d707d93ede62f72 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/603215 Reviewed-by: Than McIntosh <thanm@golang.org> Reviewed-by: Cherry Mui <cherryyz@google.com> Reviewed-by: Ian Lance Taylor <iant@google.com>
This commit is contained in:
Родитель
faf214a795
Коммит
5f6fae5ff3
|
@ -11137,6 +11137,12 @@ Builtin_call_expression::do_determine_type(Gogo* gogo,
|
|||
is_print = false;
|
||||
break;
|
||||
|
||||
case BUILTIN_PANIC:
|
||||
arg_type =
|
||||
Type::make_empty_interface_type(Linemap::predeclared_location());
|
||||
is_print = false;
|
||||
break;
|
||||
|
||||
case BUILTIN_PRINT:
|
||||
case BUILTIN_PRINTLN:
|
||||
// Do not force a large integer constant to "int".
|
||||
|
|
Загрузка…
Ссылка в новой задаче