Skip to content

Use System.Generics.* when FPC's RTL has dotted unit names - #3

Merged
partouf merged 1 commit into
mainfrom
fix/fpc-dotted-generics
Oct 8, 2026
Merged

partouf merged 1 commit into
mainfrom
fix/fpc-dotted-generics

Conversation

@partouf

@partouf partouf commented Oct 8, 2026

Copy link
Copy Markdown
Member

An FPC built with dotted unit names (FPC_DOTTEDUNITS, as in FPC trunk's namespaced RTL) ships System.Generics.Collections and no unit called Generics.Collections, so DelphiAST does not compile against it as-is.

Reaching the undotted name through a unit scope (-FNSystem) is not enough either: a generic specialised in two units that each found Generics.Collections that way comes out as two incompatible types, e.g.

DelphiAST.pas(726,67) Error: Incompatible type for arg no. 2:
Got "TList<DelphiAST.Classes.TSyntaxNode>",
expected "TLIST<DelphiAST.Classes.TSyntaxNode>"

Follow the convention the dotted RTL itself uses and name the dotted unit under {$IFDEF FPC_DOTTEDUNITS}. Nothing defines that for user code, so a dotted build passes -dFPC_DOTTEDUNITS; Delphi and an undotted FPC see exactly the uses clauses they saw before.

An FPC built with dotted unit names (FPC_DOTTEDUNITS, as in FPC trunk's
namespaced RTL) ships System.Generics.Collections and no unit called
Generics.Collections, so DelphiAST does not compile against it as-is.

Reaching the undotted name through a unit scope (-FNSystem) is not enough
either: a generic specialised in two units that each found
Generics.Collections that way comes out as two incompatible types, e.g.

  DelphiAST.pas(726,67) Error: Incompatible type for arg no. 2:
    Got "TList<DelphiAST.Classes.TSyntaxNode>",
    expected "TLIST<DelphiAST.Classes.TSyntaxNode>"

Follow the convention the dotted RTL itself uses and name the dotted unit
under {$IFDEF FPC_DOTTEDUNITS}. Nothing defines that for user code, so a
dotted build passes -dFPC_DOTTEDUNITS; Delphi and an undotted FPC see
exactly the uses clauses they saw before.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@partouf
partouf merged commit 4b67cb1 into main Oct 8, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant