<div dir="auto"><div><div class="gmail_quote"><div dir="ltr">Maciej Izak <<a href="mailto:hnb.code@gmail.com">hnb.code@gmail.com</a>> schrieb am So., 20. Mai 2018, 23:32:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">2018-05-20 22:50 GMT+02:00 Sven Barth via fpc-pascal <span dir="ltr"><<a href="mailto:fpc-pascal@lists.freepascal.org" target="_blank" rel="noreferrer">fpc-pascal@lists.freepascal.org</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto"><span class="m_-3833457602218878998gmail-"><div class="gmail_quote" dir="auto"><div dir="ltr">I prohibited it because Delphi does not support it correctly and I don't know whether they'd use the usual "(...)"-syntax for the static arrays or switch to the dynamic array one. To avoid potential backwards compatibility problems I decided to simply disallow it. <br></div></div></span></div></blockquote><div><br></div><div>I do not buy this ;) no one knows what they will use (if ever), but still I see no real reason for blocking this. Following yours logic any of management operators should be also prohibited in Delphi mode because some similar feature for nullable types is planned for Delphi (but no one knows the final form of their Initialize/Finalize equivalent). Code in r39045 is IMO too strict. <br></div></div></div></div></blockquote></div></div><div dir="auto"><br></div><div dir="auto">The thing is that I can easily imagine the Delphi devs to be so stoned to use the "[...]" for static arrays inside dynamic arrays as well which could lead to constructs like the following because they forget that dynamic arrays could be part of static arrays as well:</div><div dir="auto"><br></div><div dir="auto">=== code begin ===</div><div dir="auto"><br></div><div dir="auto">var</div><div dir="auto">  v: array[0..2] of array of array[0..2] of LongInt = ([[1, 2, 3], [4, 5, 6]], [], [[7, 8, 9]]);</div><div dir="auto"><br></div><div dir="auto">=== code end ===</div><div dir="auto"><br></div><div dir="auto">Yes, I have absolutely no confidence in the Delphi developers. </div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto"><div dir="auto">I had not tested that one. In consequence that should indeed be disallowed as well. Though here the syntax probably wouldn't provide problems in the future. </div></div></blockquote><div><br></div><div><div>and the same sentence is true for the syntax for static array constants inside dynamic array constants, the more Delphied syntax for arrays probably wouldn't provide problems in the future too :) </div><div><br></div><div>If you like very strict approach and you want to make our life simpler probably you should implement some "modeswitch" for allowing both examples (example with records and arrays). </div></div></div></div></div></blockquote></div></div><div dir="auto"><br></div><div dir="auto">I don't want to use a modeswitch for every tiny little bit of feature. What we could do however would be a modeswitch for a strict Delphi mode that prohibits extensions and code that does not work in Delphi (like global operators and global generic functions). This could be used for code that is shared with Delphi to avoid potentially breaking compilability with Delphi if one is mainly using FPC for testing. </div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><div><br></div><div>btw. the problem for different syntax between Delphi and ObjFpc is still valid. I don't see any real gain for different syntax. It was consulted with community or this is just individual decision? (and here sorry if I overlooked something) </div></div></div></div></div></blockquote></div></div><div dir="auto"><br></div><div dir="auto">The gain is consistency with static array constants. You don't need to care about whether it's a dynamic array or a static one, you simply use the same syntax. </div><div dir="auto">Also what do you care about mode ObjFPC anyway? One purpose of the mode *is* that it can go a different route than those modes that copy existing implementations. </div><div dir="auto"><br></div><div dir="auto">Regards, </div><div dir="auto">Sven </div><div dir="auto"></div><div dir="auto"></div></div>