Repository navigation
Use System.Generics.* when FPC's RTL has dotted unit names - #3
Merged
Merged
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.