This commit is contained in:
Ivan Bondarev 2021-12-24 15:38:39 +01:00
parent 7df4b8121c
commit 9ea935f0d8
2 changed files with 17 additions and 1 deletions

View file

@ -0,0 +1,14 @@
type
t1 = class end;
procedure p1<T>(l: List<t1>);
where T: t1;
begin
l.RemoveAll(o->(o is T(var a)));
end;
begin
var l := Lst(new t1, nil);
p1&<t1>(l);
assert(l[0] = nil);
end.

View file

@ -126,7 +126,9 @@ namespace PascalABCCompiler.TreeConverter
if (genericDeduceNeeded && (candidateParameter.is_generic_parameter || candidateParameter.is_generic_type_instance))
candidateParameter = InstantiateParameter(candidateParameter, deducedGenerics);
if (givenParameter != null && !AreTheSameType(candidateParameter, givenParameter))
if (givenParameter != null && !AreTheSameType(candidateParameter, givenParameter)
&& !(candidateParameter != null && givenParameter != null && candidateParameter.is_generic_parameter
&& givenParameter.is_generic_parameter && candidateParameter.name == givenParameter.name && givenParameter.base_type == candidateParameter.base_type))
return false;
parameterTypes[i] = candidateParameter;