> > > This following currently defines a field and is, without context,
> > > indistinguishable from any other assignment.  Is that intended?
> >
> > With "var" it's indistinguishable from another declaration, I don't
> > think it matters much that it looks like an assignment otherwise.
> >
> 
> There's only one declaration per class assuming either a qualified name is
> used in the declaration or normal shadowing rules apply.
> 
> So, ignoring subjective aesthetic issues, this would allow for tooling to
> more easily identify the declaration.

Yes, there are some reasons to declare object members with "var".
It's hard to decide what matters most.  Perhaps "making it look like a
declaration" is more important than other reasons.  The space taken up
by the extra "var" keyword probably doesn't matter much.

> > > It seems from the documentation that static fields can be referenced as
> > > bare identifiers?  This feels a bit unexpected to me given that instance
> > > fields are always qualified.
> >
> > Static fields (class members) are totally different from object members.
> > I have always found it confusing, in many languages it's hard to tell
> > them apart, especially if the declaration is further away.  Always using
> > "this" for object members helps a lot for this.  I would not know what
> > to use for class members.  The only thing I have seen is using the class
> > name, which can be long (and gets tricky when using inheritance).
> > I believe most languages access class members directly, without a
> > prefix.
> 
> I think they're much the same in terms of the problems the required "this"
> qualifier is attempting to address.  Static fields also need disambiguation
> in shadowed contexts and could, arguably, also use better identification.

Assigning to a static class member in a constructor is unusual, thus the
common problem that an argument name matches a member name is unlikely
to happen for a class member.  We could probably disallow shadowing a
class member.  We can at least start with that and see if that doesn't
cause annoyance.

> Are methods going to need to be qualified too?

Object methods are always called on an object "obj.method()".
I suppose "this.method()" also works (don't see this very often).
Just using "method()" probably needs to be disallowed.  Especially if we
require prefixing "this." for object members.

> Cards on the table, I'm not in favour of requiring qualified
> references.  I just found it surprising that only unqualified instance
> fields were considered a problem.

That is the reality.  All this is much more about what a developer
encounters on a regular basis than theory or philosophy.  Especially
when it comes to what mistakes people tend to make and whether it's
possible to give a helpful error for them.  Every time I have started
using a new language (usually advertised as being the best ever) I have
run into things that don't work well in practice.

-- 
ARTHUR: Charge!
   [They all charge with swords drawn towards the RABBIT.  A tremendous twenty
   second fight with Peckinpahish shots and borrowing heavily also on the
   Kung Fu and karate-type films ensues, in which some four KNIGHTS are
   comprehensively killed.]
ARTHUR: Run away!  Run away!
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

 /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
///                                                                      \\\
\\\        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/20221227162916.A4C041C0AA3%40moolenaar.net.

Raspunde prin e-mail lui