mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2026-01-04 21:50:31 +01: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 -
27 lines
602 B
ObjectPascal
27 lines
602 B
ObjectPascal
{ %fail% }
|
|
{ %opt=-Sew -vw -O- }
|
|
|
|
{
|
|
Test for correct emitting of warnings/hints for uninitialized variables of management types
|
|
See also tbs/tb0653.pp, tbf/tb0259.pp, tbf/tb0260.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;
|
|
|
|
function f: TLongArray;
|
|
begin
|
|
// Warning for the dyn array Result, since contents of the Result after calling SetLength()
|
|
// is expected to be zeroed, but instead it is undefined.
|
|
setlength(Result,100);
|
|
Result[2]:=1;
|
|
end;
|
|
|
|
begin
|
|
f;
|
|
end.
|