DIP 1009--Improve Contract Usability--Preliminary Review Round 1

Steven Schveighoffer via Digitalmars-d digitalmars-d at puremagic.com
Fri Jun 23 11:42:55 PDT 2017


On 6/23/17 2:24 PM, Moritz Maxeiner wrote:
> On Friday, 23 June 2017 at 17:31:15 UTC, MysticZach wrote:
>> [...]
>>
>> Yeah, my take is that the grammar for `assert`s applies to the new 
>> syntax as well. If the grammar for asserts is this:
>>
>> AssertExpression:
>>   assert ( AssertParameters )
>>
>> ... then the grammar for the new syntax is:
>>
>> InExpression:
>>   in ( AssertParameters )
>>
>> OutExpression:
>>   out ( ; AssertParameters )
>>   out ( Identifier ; AssertParameters )
> 
> I'm all for this syntax, just one spec/implementation question:
> If the new contract syntax (formally) shares grammar rules with assert, 
> won't that cause more work for people who want to update the assert 
> syntax later (since they will have to take contracts into account)?

No. Asserts are the meat of in/out contracts, these are actually 
asserts. Anything you do to the assert grammar should be done here as well.

-Steve


More information about the Digitalmars-d mailing list