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

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/603215
This commit is contained in:
Ian Lance Taylor 2024-08-05 13:01:32 -07:00
parent 51db1f307b
commit ecb6153e3b
2 changed files with 7 additions and 1 deletions

View File

@ -1,4 +1,4 @@
60f985a7852632834936b4b859aa75d9df88f038
5f6fae5ff33e996243acd098c71904695c414c53
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.

View File

@ -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".