Skip to content
Snippets Groups Projects
Commit c955a8e6 authored by Henrik (Grubba) Grubbström's avatar Henrik (Grubba) Grubbström
Browse files

Tools.Standalone.precompile: Improved complaint on overloader failure.

Avoid infinite loop when it is not possible to differentiate the alternatives.
Fixes Lyslyskom 19728274. Thanks to srb for the report and testcase.
parent f8629477
No related branches found
No related tags found
No related merge requests found
...@@ -1479,6 +1479,7 @@ int evaluate_method(mixed q) ...@@ -1479,6 +1479,7 @@ int evaluate_method(mixed q)
return val; return val;
} }
// Polymorphic overloader.
array generate_overload_func_for(array(FuncData) d, array generate_overload_func_for(array(FuncData) d,
int indent, int indent,
int min_possible_arg, int min_possible_arg,
...@@ -1580,6 +1581,11 @@ array generate_overload_func_for(array(FuncData) d, ...@@ -1580,6 +1581,11 @@ array generate_overload_func_for(array(FuncData) d,
if(best_method == -1) if(best_method == -1)
{ {
if (min_args == max_args) {
error("Can't differentiate between %d implementations of %s().\n",
sizeof(d), name);
}
/* Switch on number of arguments */ /* Switch on number of arguments */
out+=({PC.Token(sprintf("%*nswitch(args) {\n",indent))}); out+=({PC.Token(sprintf("%*nswitch(args) {\n",indent))});
for(int a=min_args;a<=max_args;a++) for(int a=min_args;a<=max_args;a++)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment