fpc/tests/webtbs/tw30830a.pp
svenbarth ebfeb5b62a * fix for Mantis #30830: also remove unregistered specializations from the procsym's deflist when they're removed to avoid an access to freed data
+ added tests (adjusted original test plus a mode Delphi variant)

git-svn-id: trunk@35012 -
2016-11-29 14:12:02 +00:00

40 lines
614 B
ObjectPascal

{ %NORUN }
program tw30830a;
{$mode objfpc}
type
generic TBase<T> = class
procedure Test1(const a: T);
end;
generic TDerived<T> = class(specialize TBase<T>)
procedure Test2(const a: T);
end;
procedure TBase.Test1(const a: T);
begin
end;
procedure TDerived.Test2(const a: T);
begin
end;
generic procedure Test<T>(aIntf: specialize TBase<T>); // works
begin
end;
generic procedure Test<T>(aIntf: specialize TDerived<T>); // SIGSEGV :(
begin
end;
var
b: specialize TBase<LongInt>;
d: specialize TDerived<LongInt>;
begin
specialize Test<LongInt>(b);
specialize Test<LongInt>(d);
end.