mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-16 06:39:39 +02:00
pexpr.pas, factor.factor_read_id:
* handle specializations after a type symbol git-svn-id: trunk@32387 -
This commit is contained in:
parent
9aa3c23b18
commit
0471db5bb6
@ -2986,11 +2986,41 @@ implementation
|
||||
end
|
||||
else
|
||||
begin
|
||||
{ We need to know if this unit uses Variants }
|
||||
if ((hdef=cvarianttype) or (hdef=colevarianttype)) and
|
||||
not(cs_compilesystem in current_settings.moduleswitches) then
|
||||
current_module.flags:=current_module.flags or uf_uses_variants;
|
||||
p1:=handle_factor_typenode(hdef,getaddr,again,srsym,ef_type_only in flags);
|
||||
if (m_delphi in current_settings.modeswitches) and
|
||||
(sp_generic_dummy in srsym.symoptions) and
|
||||
(token in [_LT,_LSHARPBRACKET]) then
|
||||
begin
|
||||
if block_type in [bt_type,bt_const_type,bt_var_type] then
|
||||
begin
|
||||
if not handle_specialize_inline_specialization(srsym,srsymtable,spezcontext) or (srsym.typ=procsym) then
|
||||
begin
|
||||
spezcontext.free;
|
||||
p1:=cerrornode.create;
|
||||
if try_to_consume(_LKLAMMER) then
|
||||
begin
|
||||
parse_paras(false,false,_RKLAMMER);
|
||||
consume(_RKLAMMER);
|
||||
end;
|
||||
end
|
||||
else
|
||||
begin
|
||||
if srsym.typ<>typesym then
|
||||
internalerror(2015071705);
|
||||
hdef:=ttypesym(srsym).typedef;
|
||||
p1:=handle_factor_typenode(hdef,getaddr,again,srsym,ef_type_only in flags);
|
||||
end;
|
||||
end
|
||||
else
|
||||
p1:=cspecializenode.create(nil,getaddr,srsym)
|
||||
end
|
||||
else
|
||||
begin
|
||||
{ We need to know if this unit uses Variants }
|
||||
if ((hdef=cvarianttype) or (hdef=colevarianttype)) and
|
||||
not(cs_compilesystem in current_settings.moduleswitches) then
|
||||
current_module.flags:=current_module.flags or uf_uses_variants;
|
||||
p1:=handle_factor_typenode(hdef,getaddr,again,srsym,ef_type_only in flags);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user