Skip to content

Commit

Permalink
runtime(doc): update todo items (#13631)
Browse files Browse the repository at this point in the history
Signed-off-by: Christian Brabandt <cb@256bit.org>
  • Loading branch information
yegappan committed Dec 5, 2023
1 parent 0280c0b commit 563e644
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 11 deletions.
12 changes: 2 additions & 10 deletions runtime/doc/todo.txt
Original file line number Diff line number Diff line change
Expand Up @@ -124,27 +124,18 @@ Further Vim9 improvements:
- Classes and Interfaces. See |vim9-classes|
- "final" object members - can only be set in the constructor.
- Cannot use class type of itself in the method (Issue #12369)
- Cannot use an object method in a lambda #12417
Define all methods before compiling them?
- Cannot call class member of funcref type (Issue #12324)
Also #12081 first case.
- Using list of functions does not work #12081 (repro in later message).
- First argument of call() cannot be "obj.Func". (#11865)
- Getting member of variable with "any" type should be handled at runtime.
Remove temporary solution from #12096 / patch 9.0.1375.
- "obj.Method()" does not always work in a compiled function, assumes "obj"
is a dictionary. #12196 Issue #12024 might be the same problem.
Issue #11822: any.Func() can be a dict or an object call, need to handle
this at runtime. Also see #12198 for an example.
Possibly issue #11981 can be fixed at the same time (has two examples).
- Support export/import of classes and interfaces.
- Make ":defcompile ClassName" compile all functions and methods in the
class.
- Forward declaration of a class? E.g. for Clone() function.
Email lifepillar 2023 Mar 26
- object empty(), len() - can class define a method to be used for them?
- add to help: when using a default new() method then reordering object
members may cause trouble. Can define new() without arguments to avoid.
- When "Meta" is a class, is "const MetaAlias = Meta" allowed? It should
either work or given an error. Possibly give an error now and implement it
later (using a typedef). #12006
Expand All @@ -157,7 +148,6 @@ Further Vim9 improvements:
- More efficient way for interface member index than iterating over list?
- a variant of type() that returns a different type for each class?
list<number> and list<string> should also differ.
- implement :type
- implement :enum
- Promise class, could be used to wait on a popup close callback?
- class local to a function
Expand All @@ -166,6 +156,8 @@ Further Vim9 improvements:
- When evaluating constants for script variables, some functions could work:
has(featureName), len(someString)
- Implement as part of an expression: ++expr, --expr, expr++, expr--.
- The use of the literal value "null" and the type specific "null_xxx"
values is confusing (#13458, #11770).

Information missing in terminfo:
- Codes used for focus gained and lost termcodes are hard-coded in
Expand Down
8 changes: 7 additions & 1 deletion runtime/doc/vim9class.txt
Original file line number Diff line number Diff line change
Expand Up @@ -700,7 +700,13 @@ the name, you can define the constructor like this: >
def new(this.name, this.age = v:none, this.gender = v:none)
enddef
< *E1328*
<
When using the default new() method, if the order of the object variables in
the class is changed later, then all the callers of the default new() method
needs to change. To avoid this, the new() method can be explicitly defined
without any arguments.

*E1328*
Note that you cannot use another default value than "v:none" here. If you
want to initialize the object variables, do it where they are declared. This
way you only need to look in one place for the default values.
Expand Down

0 comments on commit 563e644

Please sign in to comment.