mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-08 03:28:40 +02:00

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 -
31 lines
561 B
ObjectPascal
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.
|