comparison runtime/doc/todo.txt @ 33352:7f95d9a3e317

runtime(todo): Update Vim9 class items (#13148) Commit: https://github.com/vim/vim/commit/ceffca683ba986065e583d02e7ace964efdb256e Author: Yegappan Lakshmanan <4298407+yegappan@users.noreply.github.com> Date: Sun Sep 24 14:36:56 2023 -0700 runtime(todo): Update Vim9 class items (https://github.com/vim/vim/issues/13148) Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Sun, 24 Sep 2023 23:45:07 +0200
parents 6028d7f701ce
children 5614c43616fe
comparison
equal deleted inserted replaced
33351:a3bbd065fb87 33352:7f95d9a3e317
118 - sublime grammar? Hugo mentions it's a moving target #9087 118 - sublime grammar? Hugo mentions it's a moving target #9087
119 - Make clear how it relates to LSP. 119 - Make clear how it relates to LSP.
120 - example plugin: https://github.com/uga-rosa/dps-vsctm.vim 120 - example plugin: https://github.com/uga-rosa/dps-vsctm.vim
121 121
122 122
123 Further Vim9 improvements, possibly after launch: 123 Further Vim9 improvements:
124 - Classes and Interfaces. See |vim9-classes| 124 - Classes and Interfaces. See |vim9-classes|
125 - Change access: public by default, private by prefixing "_".
126 Check for error: can't have same name twice (ignoring "_" prefix).
127 - Private methods?
128 either: private def Func()
129 or: def _Func()
130 Perhaps use "private" keyword instead of "_" prefix?
131 - "final" object members - can only be set in the constructor. 125 - "final" object members - can only be set in the constructor.
132 - Support export/import of classes and interfaces.
133 - Cannot use class type of itself in the method (Issue #12369) 126 - Cannot use class type of itself in the method (Issue #12369)
134 - Cannot use an object method in a lambda #12417 127 - Cannot use an object method in a lambda #12417
135 Define all methods before compiling them? 128 Define all methods before compiling them?
136 - Cannot call class member of funcref type (Issue #12324) 129 - Cannot call class member of funcref type (Issue #12324)
137 Also #12081 first case. 130 Also #12081 first case.
138 - Using list of functions does not work #12081 (repro in later message). 131 - Using list of functions does not work #12081 (repro in later message).
139 - First argument of call() cannot be "obj.Func". (#11865) 132 - First argument of call() cannot be "obj.Func". (#11865)
140 - null_object - constant type 17 not supported (Issue #12043)
141 - problem compiling object method call as function call argument (Issue
142 #12081)
143 - Make ":defcompile ClassName" compile all functions and methods in the
144 class.
145 - Forward declaration of a class? E.g. for Clone() function.
146 email lifepillar 2023 Mar 26
147 - Getting member of variable with "any" type should be handled at runtime. 133 - Getting member of variable with "any" type should be handled at runtime.
148 Remove temporary solution from #12096 / patch 9.0.1375. 134 Remove temporary solution from #12096 / patch 9.0.1375.
149 - "obj.Method()" does not always work in a compiled function, assumes "obj" 135 - "obj.Method()" does not always work in a compiled function, assumes "obj"
150 is a dictionary. #12196 Issue #12024 might be the same problem. 136 is a dictionary. #12196 Issue #12024 might be the same problem.
151 Issue #11822: any.Func() can be a dict or an object call, need to handle 137 Issue #11822: any.Func() can be a dict or an object call, need to handle
152 this at runtime. Also see #12198 for an example. 138 this at runtime. Also see #12198 for an example.
153 Possibly issue #11981 can be fixed at the same time (has two examples). 139 Possibly issue #11981 can be fixed at the same time (has two examples).
154 - accept line breaks in member initialization. #11957 140 - Support export/import of classes and interfaces.
141 - Make ":defcompile ClassName" compile all functions and methods in the
142 class.
143 - Forward declaration of a class? E.g. for Clone() function.
144 Email lifepillar 2023 Mar 26
155 - object empty(), len() - can class define a method to be used for them? 145 - object empty(), len() - can class define a method to be used for them?
156 - add to help: when using a default new() method then reordering object 146 - add to help: when using a default new() method then reordering object
157 members may cause trouble. Can define new() without arguments to avoid. 147 members may cause trouble. Can define new() without arguments to avoid.
158 - TODO items: check types for "implements" - members and methods
159 - When "Meta" is a class, is "const MetaAlias = Meta" allowed? It should 148 - When "Meta" is a class, is "const MetaAlias = Meta" allowed? It should
160 either work or given an error. possibly give an error now and implement it 149 either work or given an error. Possibly give an error now and implement it
161 later (using a typedef). #12006 150 later (using a typedef). #12006
162 - how about lock/unlock? 151 - how about lock/unlock?
163 - When checking "implements" also check types of members and function args.
164 - For chaining, allow using the class name as type for function return 152 - For chaining, allow using the class name as type for function return
165 value. 153 value.
154 - Implement "specifies" interface
166 - Implement generics 155 - Implement generics
167 - Add "assignable" (class or child)? 156 - Add "assignable" (class or child)?
168 - More efficient way for interface member index than iterating over list? 157 - More efficient way for interface member index than iterating over list?
169 - a variant of type() that returns a different type for each class? 158 - a variant of type() that returns a different type for each class?
170 list<number> and list<string> should also differ. 159 list<number> and list<string> should also differ.