Assigning to ReadOnly properties
Jonathan Watt
jwatt at jwatt.org
Mon Nov 12 14:22:33 PST 2007
Brendan Eich wrote:
> On Nov 12, 2007, at 9:34 AM, Jonathan Watt wrote:
>
>> I like the idea of a pragma more than opt-in versioning since it
>> can be used
>> in-place, and (I guess) placed before and after a section of code
>> to turn the
>> handling on then off again.
>
> Pragmas are block-scoped, so just one should do.
Okay.
>>> use readonly error
>>>
>>> or perhaps
>>>
>>> use readonly throw
>>>
>>> We try to make pragmas more readable, sometimes with an extra word;
>>> not sure this is the best way to phrase it still, but the idea would
>>> be to enable throwing of a ReadOnlyError on assignment to a ReadOnly
>>> property. Comments?
>> Why not just:
>>
>> use ReadOnlyError
>
> Sure -- pragma convention so far has been terse and lower-case, e.g.
> 'use strict' or 'use decimal ...'.
I'm not sure what maintaining case convention gives you here. Using |use
ReadOnlyError| is about as intuitive and easy to remember as it could be I think.
> Speaking of catching, it would be unfortunate if you wrote
>
> try { something that might set a ReadOnly property }
> catch (e : ReadOnlyError) { ... }
>
> but forgot the pragma, and never heard a word of warning. There are
> no warnings in the spec, so normative error seems best. But if you're
> bothering to catch ReadOnlyError, must you also 'use ReadOnlyError'
> first (in the try, or in a block enclosing the whole try-catch)?
Implicitly enabling ReadOnlyError seems like a very good idea to me (assuming it
can be implemented efficiently). Of course implementations that have facilities
to warn should still warn. Maybe the spec can have non-normative text saying as
much.
Alternatively, maybe it should simply be an error to use ReadOnlyError if it
hasn't been turned on.
Jonathan
More information about the Es4-discuss
mailing list