|
@@ -0,0 +1,40 @@
|
|
|
+{ %OPT=-Sd }
|
|
|
+
|
|
|
+{ Source provided for Free Pascal Bug Report 4678 }
|
|
|
+{ Submitted by "Phil H." on 2006-01-09 }
|
|
|
+{ e-mail: [email protected] }
|
|
|
+program TestVarBug2;
|
|
|
+
|
|
|
+uses
|
|
|
+ Variants;
|
|
|
+
|
|
|
+type
|
|
|
+ TMyClass = class
|
|
|
+ private
|
|
|
+ function GetValue(AnInt : Integer) : Variant;
|
|
|
+ public
|
|
|
+ property Value[AnInt : Integer] : Variant read GetValue;
|
|
|
+ end;
|
|
|
+
|
|
|
+function TMyClass.GetValue(AnInt : Integer) : Variant;
|
|
|
+begin
|
|
|
+ if AnInt < 0 then
|
|
|
+ Result := Null
|
|
|
+ else
|
|
|
+ Result := AnInt;
|
|
|
+end;
|
|
|
+
|
|
|
+var
|
|
|
+ AClass : TMyClass;
|
|
|
+ VarVal : Variant;
|
|
|
+begin
|
|
|
+ AClass := TMyClass.Create;
|
|
|
+
|
|
|
+ // This statement throws an exception with FPC.
|
|
|
+ // Should assign Null to VarVal as per Delphi rule:
|
|
|
+ // "any operation on a Null variant produces a Null variant".
|
|
|
+ VarVal := AClass.Value[5] + AClass.Value[-1] + 1;
|
|
|
+
|
|
|
+end.
|
|
|
+
|
|
|
+
|