This commit is contained in:
parent
7df4b8121c
commit
9ea935f0d8
14
TestSuite/patterns-extended-is-generic.pas
Normal file
14
TestSuite/patterns-extended-is-generic.pas
Normal 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.
|
||||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in a new issue