* factor() might return a typenode with a errordef, so check for that and don't add the typesymbol to the parameter list in that case; fixes the access violation of tw17181.pp

git-svn-id: trunk@34472 -
This commit is contained in:
svenbarth 2016-09-09 13:04:41 +00:00
parent 9e6077bee2
commit 627e30f47f

View File

@ -345,11 +345,13 @@ uses
parampos^:=tmpparampos;
poslist.add(parampos);
end;
genericdeflist.Add(typeparam.resultdef);
if typeparam.resultdef.typ<>errordef then
begin
if not assigned(typeparam.resultdef.typesym) then
message(type_e_generics_cannot_reference_itself)
else
else if (typeparam.resultdef.typ<>errordef) then
begin
genericdeflist.Add(typeparam.resultdef);
{ we use the full name of the type to uniquely identify it }
if (symtablestack.top.symtabletype=parasymtable) and
(symtablestack.top.defowner.typ=procdef) and
@ -371,6 +373,11 @@ uses
prettyname:=prettyname+prettynamepart+typeparam.resultdef.typesym.prettyname;
end;
end
else
begin
result:=false;
end;
end
else
begin
Message(type_e_type_id_expected);