mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-17 03:19:33 +02:00
* fix for Mantis #28753: don't return generic dummys from single_type(); ensures that parameters correctly evaluate to error defs should generic dummies be used
git-svn-id: trunk@34534 -
This commit is contained in:
parent
e4f1b15860
commit
386b7ac154
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -13734,6 +13734,7 @@ tests/webtbf/tw2853.pp svneol=native#text/plain
|
||||
tests/webtbf/tw2853a.pp svneol=native#text/plain
|
||||
tests/webtbf/tw2853b.pp svneol=native#text/plain
|
||||
tests/webtbf/tw2853c.pp svneol=native#text/plain
|
||||
tests/webtbf/tw28753.pp svneol=native#text/pascal
|
||||
tests/webtbf/tw2878.pp svneol=native#text/plain
|
||||
tests/webtbf/tw2972.pp svneol=native#text/plain
|
||||
tests/webtbf/tw2972b.pp svneol=native#text/plain
|
||||
|
@ -588,26 +588,33 @@ implementation
|
||||
end;
|
||||
end
|
||||
else if (def.typ=undefineddef) and
|
||||
(sp_generic_dummy in srsym.symoptions) and
|
||||
parse_generic and
|
||||
(current_genericdef.typ in [recorddef,objectdef]) and
|
||||
(Pos(upper(srsym.realname),tabstractrecorddef(current_genericdef).objname^)=1) then
|
||||
(sp_generic_dummy in srsym.symoptions) then
|
||||
begin
|
||||
if m_delphi in current_settings.modeswitches then
|
||||
if parse_generic and
|
||||
(current_genericdef.typ in [recorddef,objectdef]) and
|
||||
(Pos(upper(srsym.realname),tabstractrecorddef(current_genericdef).objname^)=1) then
|
||||
begin
|
||||
srsym:=resolve_generic_dummysym(srsym.name);
|
||||
if assigned(srsym) and
|
||||
not (sp_generic_dummy in srsym.symoptions) and
|
||||
(srsym.typ=typesym) then
|
||||
def:=ttypesym(srsym).typedef
|
||||
else
|
||||
if m_delphi in current_settings.modeswitches then
|
||||
begin
|
||||
Message(parser_e_no_generics_as_types);
|
||||
def:=generrordef;
|
||||
end;
|
||||
srsym:=resolve_generic_dummysym(srsym.name);
|
||||
if assigned(srsym) and
|
||||
not (sp_generic_dummy in srsym.symoptions) and
|
||||
(srsym.typ=typesym) then
|
||||
def:=ttypesym(srsym).typedef
|
||||
else
|
||||
begin
|
||||
Message(parser_e_no_generics_as_types);
|
||||
def:=generrordef;
|
||||
end;
|
||||
end
|
||||
else
|
||||
def:=current_genericdef;
|
||||
end
|
||||
else
|
||||
def:=current_genericdef;
|
||||
begin
|
||||
Message(parser_e_no_generics_as_types);
|
||||
def:=generrordef;
|
||||
end;
|
||||
end
|
||||
else if is_classhelper(def) and
|
||||
not (stoParseClassParent in options) then
|
||||
|
18
tests/webtbf/tw28753.pp
Normal file
18
tests/webtbf/tw28753.pp
Normal file
@ -0,0 +1,18 @@
|
||||
{ %FAIL }
|
||||
|
||||
unit tw28753;
|
||||
|
||||
{$mode delphi}
|
||||
|
||||
interface
|
||||
|
||||
type
|
||||
TList<T> = class(TObject);
|
||||
|
||||
implementation
|
||||
|
||||
procedure ObjectListToJson(Value: TList);
|
||||
begin // Error: Internal error 200301231
|
||||
end;
|
||||
|
||||
end.
|
Loading…
Reference in New Issue
Block a user