Kann es sein, dass spätestens seit Delphi Tokyo Integer implizit auf TIntDynArray gecastet werden?
Nein, aber Variant konnte schon immer implizit auf ein dynamisches Array zugewiesen werden (siehe Variants._VarToDynArray), versuch mal diesen Code hier unter XE5 zu kompilieren:
Delphi-Quellcode:
var
x: Integer;
y: TIntegerDynArray;
v: Variant;
begin
x := v;
y := v;
Du wirst merken, dass das funktioniert (das kompilieren). Und dann wird dir klar, dass hier in einer neuen Version ein Bug gefixt wurde.
Denn dieser Aufruf war schon immer zweideutig - der Compiler hat nur fälschlicherweise den impliziten Cast von Variant auf Integer dem von Variant auf ein dynamisches Array vorgezogen bzw den Overload mit einem dynamischen Array bei einer als overload markierten Routine ignoriert (kannst du testen, indem du den Integer overload und das overload der anderen Version mal auskommentierst und siehst, dass der myFunc aufruf nun kompiliert.
Ich hab kein Ticket für die genaue Problematik gefunden, aber es könnte mit diesem zusammenhängen:
https://quality.embarcadero.com/browse/RSP-12780