tb0653.pp 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. { %norun }
  2. { %opt=-Sewn -vwn -O- }
  3. {
  4. Test for correct emitting of warnings/hints for uninitialized variables of management types
  5. See also tbf/tb0258.pp
  6. }
  7. // Only hints about uninitialized managed variables must be issued for this code
  8. {$mode objfpc}
  9. type
  10. TLongArray = array of longint;
  11. procedure p;
  12. var
  13. a : TLongArray;
  14. s: ansistring;
  15. begin
  16. setlength(a,100); // hint for local var
  17. setlength(s,100); // hint for local var
  18. a[1]:=1;
  19. writeln(a[1]);
  20. s[1]:='a';
  21. writeln(s[1]);
  22. end;
  23. procedure svar(var s: ansistring; len: longint);
  24. begin
  25. setlength(s,len);
  26. end;
  27. procedure avar(var a: TLongArray; len: longint);
  28. begin
  29. setlength(a,len);
  30. end;
  31. procedure p2;
  32. var
  33. a : TLongArray;
  34. s: ansistring;
  35. begin
  36. avar(a,100); // hint for local var
  37. svar(s,100); // hint for local var
  38. a[1]:=1;
  39. writeln(a[1]);
  40. s[1]:='a';
  41. writeln(s[1]);
  42. end;
  43. function f2: ansistring;
  44. begin
  45. // Hint for the ansistring Result, since all contents of the Result
  46. // after calling SetLength() is expected to be undefined.
  47. setlength(Result,1);
  48. Result[1]:='a';
  49. end;
  50. begin
  51. p;
  52. p2;
  53. f2;
  54. end.