Compiler ignores unit qualifier
Original Reporter info from Mantis: mazolawins
-
Reporter name: Mazolla Winstrol
Original Reporter info from Mantis: mazolawins
- Reporter name: Mazolla Winstrol
Description:
The compiler doesn't correctly respect the unit qualifier when trying to use two types with the same name defined in diferent units (i'm using mode delphi).
Consider this unit
=== CODE ===
unit MyRecordDefinitionA;
{$mode delphi}
interface
type
TMyRecord<T> = record
public
FValue: T;
class operator Add(A,B: TMyRecord<T>): TMyRecord<T>;
end;
implementation
class operator TMyRecord<T>.Add(A,B: TMyRecord<T>): TMyRecord<T>;
begin
Result.FValue := A.FValue + B.FValue;
end;
end.
=== END ===
The unit above defines a generic type named TMyRecord with the arithmetic operator overloaded Add. This type is supposed to be specialized with a type parameter that supports the add operation (e.g Integer types).
=== CODE ===
unit MyRecordDefinitionB;
{$mode delphi}
interface
type
TMyRecord<T> = record
public
FValue: T;
class operator LogicalAnd(A: TMyRecord<T>; B: Boolean): TMyRecord<T>;
end;
implementation
class operator TMyRecord<T>.LogicalAnd(A: TMyRecord<T>; B: Boolean): TMyRecord<T>;
begin
Result.FValue := A.FValue and B;
end;
end.
=== END ===
The unit above defines a generic type named TMyRecord too, but with the logical operator overloading And. This type is supposed to be specialized with a type parameter that supports the logical and operation (e.g Boolean types).
=== CODE ===
unit MyRecordSpecialization;
{$mode delphi}
interface
uses
MyRecordDefinitionA, MyRecordDefinitionB;
type
TMyIntegerRecord = MyRecordDefinitionA.TMyRecord<Integer>;
TMyBooleanRecord = MyRecordDefinitionB.TMyRecord<Boolean>;
implementation
end.
=== END ===
The unit above defines two specialized types based on the generic type TMyRecord defined in the units MyRecordDefinitionA and MyRecordDefinitionB.
When i try to compile MyRecordSpecialization, i get this error: "Operator is not overloaded: LongInt and Boolean".
Mantis conversion info:
- Mantis ID: 29859
- Version: 3.0.0
- Monitored by: » @zamtmn (Andrey Zubarev), » @OkobaPatino (OkobaPatino)