procedure Test2; var a: array of integer; procedure Nested; begin SetLength(a, 1); a[0] := 3; foreach b: byte in a do assert(b = 3); foreach sh: shortint in a do assert(sh = 3); foreach sm: smallint in a do assert(sm = 3); foreach w: word in a do assert(w = 3); foreach i: integer in a do assert(i = 3); foreach lw: longword in a do assert(lw = 3); foreach li: int64 in a do assert(li = 3); foreach ui: uint64 in a do assert(ui = 3); end; begin SetLength(a, 1); a[0] := 3; foreach b: byte in a do assert(b = 3); foreach sh: shortint in a do assert(sh = 3); foreach sm: smallint in a do assert(sm = 3); foreach w: word in a do assert(w = 3); foreach i: integer in a do assert(i = 3); foreach lw: longword in a do assert(lw = 3); foreach li: int64 in a do assert(li = 3); foreach ui: uint64 in a do assert(ui = 3); Nested; end; procedure Test; var a: array of integer; begin SetLength(a, 1); a[0] := 3; foreach b: byte in a do assert(b = 3); foreach sh: shortint in a do assert(sh = 3); foreach sm: smallint in a do assert(sm = 3); foreach w: word in a do assert(w = 3); foreach i: integer in a do assert(i = 3); foreach lw: longword in a do assert(lw = 3); foreach li: int64 in a do assert(li = 3); foreach ui: uint64 in a do assert(ui = 3); end; var a: array of integer; begin SetLength(a, 1); a[0] := 3; foreach b: byte in a do assert(b = 3); foreach sh: shortint in a do assert(sh = 3); foreach sm: smallint in a do assert(sm = 3); foreach w: word in a do assert(w = 3); foreach i: integer in a do assert(i = 3); foreach lw: longword in a do assert(lw = 3); foreach li: int64 in a do assert(li = 3); foreach ui: uint64 in a do assert(ui = 3); Test; Test2; end.