Hi, it´s me, the guy with this internal error recently, while porting OpenXML to FP. Meanwhile, the compiler switch -B did help me out. Apparently by compiling all units, regardless wether they have been changed or not, this internal error is avoided. Now I believe this B stands for Back to hell, since there are other surprises with duplicate identifiers, where I never thought it could happen, see the following example.
unit xdom31;
uses
... xmltreeutils, ...
type
TDomNode = class (TDomCustomNode)
private ...
protected ...
public ...
property NamespaceURI: WideString read GetNamespaceURI; ...
TDomCharacterData = class (TDomNode)
private ...
protected ...
public ...
function SubstringData(const Offset, Count: Integer): WideString; virtual;
// FPC: identifier COUNT already defined in unit xmltreeutils at line 98
procedure ReplaceData(const Offset, Count: Integer) ...
// FPC: identifier COUNT already defined in unit xmltreeutils at line 98
...
TDomAttr = class (TDomNode)
private ...
protected ...
public ...
constructor CreateNS(
const AOwner: TDomDocumentNS;
const NamespaceURI ...
// FPC: identifier NamespaceURI already defined at line 1192
...
unit xmltreeutils;
...
type
TCustomOwnedNode = class(TCustomOwnedObject)
private ...
protected ...
property Count: Integer read GetCount;
...
Conclusion: never call any parameter of any procedure or function exactly like any property of any class and its ancestors. So far I thought, parameter names of functions and procedures are always local, i.e. valid for this function or procedure block only. Is this a bug or feature of FPC vs. Delphi?
Disclaimer: I love all FPC warnings and hints. Each may be an unknown error less. In or in front of the machine.
Wolfram
Mosaikfabrik (r) Bilder von Bildern www.mosaikfabrik.de
MEMPHIS GmbH HRB Kirchheim/Teck 1231 Geschäftsführer
Wolfram Kläger Wrangellstrasse 11 D-70599 Stuttgart
Tel. (+49) 0711 31 944 39 Fax (+49) 012126 31 944 944