We should warn when the user uses a reserved name for a method name or
attribute.

There used to be some test cases in test/compiler_errors, although I don't
know if
we have a test for using reserved words.  I'll see if we can automate
some of those tests and add them to our test lztest suite.


On Fri, Sep 25, 2009 at 5:12 AM, Max Carlson <[email protected]> wrote:

> Should the compiler want when methods/attributes are named after
> keywords/reserved words?
>
>
> P T Withington wrote:
>
>> `delete` is a keyword in Javascript.  You can't use it as an identifier.
>>  Without knowing what you are doing in "..." I can't say more.
>>
>> Rhino 1.6 release 5 2006 11 18
>> js> var foo = {'delete': 42}
>> js> foo.delete
>> js: "<stdin>", line 3: missing name after . operator
>> js: foo.delete
>> js: .........^
>> js: "<stdin>", line 3: Compilation produced 1 syntax errors.
>> js> foo['delete']
>> 42
>> js>
>>
>> Accidentally, you _can_ say `foo.delete` to the OL debugger and get an
>> answer, because the debugger's simple evaluator does not know that `delete`
>> is a keyword.
>>
>> [Also note, in general, you will not be able to enumerate the methods of a
>> class by looking at the properties of an instance.  Yes, that's the way it
>> is implemented (for now) in DHTML, but your code will not be portable to
>> swf9, and I expect Javascript "Harmony" will have a class-like feature that
>> will also make your code non-portable.]
>>
>> On 2009-09-23, at 10:49, Rami Ojares / AMG Oy wrote:
>>
>>  Hi,
>>>
>>> Does anyone know why a method with name delete is ignored?
>>>
>>> I have a class with a method named delete:
>>>
>>> <class ...>
>>>  <method name="delete">
>>>  ...
>>>  </method>
>>> </class>
>>>
>>> When I go through it's attributes using:
>>> for (var name in instanceOfClass) ...
>>> the object does not contain function with that name
>>>
>>> But when I change the name to say delete1 then everything works as
>>> expected.
>>>
>>> Strange?
>>>
>>> ...
>>>
>>> Thinking for a while before sending I came to the conclusion that it must
>>> be because there exists a delete operator in javascript.
>>> So delete can not be a variable name because it is a reserved word.
>>> Compiler warning would be great in these kind of situations.
>>>
>>> - rami
>>>
>>
>>
> --
> Regards,
> Max Carlson
> OpenLaszlo.org
>



-- 
Henry Minsky
Software Architect
[email protected]

Reply via email to