Skip to content

Implicit Function Specialization: Does not apply Inheritance

Summary

The implicit function specialization cannot match generic functions when an inherited class of the base class used in the definition is used

System Information

Windows 10: FPC Trunk/main

Example Project

program Project1;

{$mode objfpc}{$H+}
{$ModeSwitch implicitfunctionspecialization}

type
  generic TBase<T> = class(TObject);
  generic TChild<T> = class(specialize TBase<T>);

generic procedure Foo<T>(lst: specialize TBase<T>);
begin
end;

var
  lst: specialize TChild<Integer>;
begin
  specialize Foo<Integer>(lst); // works
  Foo(lst); // Error
end.```

[Project1.pas](/uploads/009fb874feba0e5b2c1a0dcd54611aa7/Project1.pas)
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information