fpc/tests/tbf/tb0259.pp
yury 4682ac269d * Further improvement for r40180:
An uninitialized function Result of a managed type needs special handling.
    When passing it as a var parameter a warning need to be emitted, since a user
    may expect Result to be empty (nil) by default as it happens with local vars
    of a managed type. But this is not true for Result and may lead to serious issues.

    The only exception is SetLength(Result, ?) for a string Result. A user always
    expects undefined contents of the string after calling SetLength(). In such
    case a hint need to be emitted.
+ Tests for this.

git-svn-id: trunk@40216 -
2018-11-04 15:37:52 +00:00

31 lines
561 B
ObjectPascal

{ %fail% }
{ %opt=-Sew -vw -O- }
{
Test for correct emitting of warnings/hints for uninitialized variables of management types
See also tbf/tb0258.pp
}
// This code must issue warnings "Function result variable of a managed type does not seem to be initialized".
{$mode objfpc}
type
TLongArray = array of longint;
procedure fvar(var a: TLongArray);
begin
setlength(a,100);
a[2]:=1;
end;
function f: TLongArray;
begin
// Warning for the dyn array Result, since initial contents of the Result is undefined.
fvar(Result);
end;
begin
f;
end.