<div dir="ltr"><div dir="ltr">On Tue, Jul 9, 2019 at 3:17 PM Ryan Joseph <<a href="mailto:genericptr@gmail.com">genericptr@gmail.com</a>> wrote:</div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Please post an example of the var/out bug if you don’t mind. Just to be sure.<br></blockquote><div><br></div><div>I don't know if it necessarily *is* a bug. </div><div><br></div><div>It would definitely be if it worked with literals as input, which is the impression I had based on what someone reported previously for some reason, but again, after testing it myself that is not the case.</div><div><br></div><div>program Example;<br><br>{$mode ObjFPC}<br>{$modeswitch AdvancedRecords}<br><br>type<br>  TRecord = record<br>  private<br>    function GetBoolOut(out Index: PtrUInt): Boolean;<br>    function GetBoolVar(var Index: PtrUInt): Boolean;<br>  public<br>    property OutBools[out Index: PtrUInt]: Boolean read GetBoolOut;<br>    property VarBools[var Index: PtrUInt]: Boolean read GetBoolVar;<br>  end;<br>  <br>  function TRecord.GetBoolOut(out Index: PtrUInt): Boolean;<br>  begin<br>    Result := Index > 5000;<br>  end;<br>  <br>  function TRecord.GetBoolVar(var Index: PtrUInt): Boolean;<br>  begin<br>    Result := Index > 5000;<br>  end;<br>  <br>var <br>  R: TRecord;<br>  I: PtrUInt = 5000;<br><br>begin<br>  // Error: Variable identifier expected<br>  WriteLn(R.OutBools[5001]);<br>  // Error: Variable identifier expected<br>  WriteLn(R.VarBools[5001]);<br>  // Works fine<br>  WriteLn(R.OutBools[I]);<br>  // Works fine<br>  WriteLn(R.VarBools[I]);<br>end.<br></div><div><br></div><div>So the behavior as far as making sense based on the definition of "out" and "var" is correct. The only thing that's really "strange" to me is the fact that getters are completely unrestricted in that regard, while setters explicitly need {$VARPROPSETTER ON}.</div></div></div>