@@ -35,7 +35,7 @@ def Test_class_basic()
3535 END
3636 v9.CheckSourceFailure (lines , ' E475: Invalid argument: noclass Something' , 2 )
3737
38- # Only the completed word " class" should be recognized
38+ # Only the complete word " class" should be recognized
3939 lines = << trim END
4040 vim9script
4141 abstract classy Something
@@ -4186,8 +4186,8 @@ enddef
41864186def Test_lockvar_islocked ()
41874187 # Can't lock class /object variable
41884188 # Lock class /object variable's value
4189- # Lock item of variabl 's value (a list item)
4190- # varible is at index 1 within class /object
4189+ # Lock item of variable 's value (a list item)
4190+ # variable is at index 1 within class /object
41914191 var lines = << trim END
41924192 vim9script
41934193
@@ -5585,22 +5585,16 @@ def Test_abstract_method()
55855585 abstract this.val = 10
55865586 endclass
55875587 END
5588- v9.CheckSourceFailure (lines , ' E1371: Abstract must be followed by "def" or "static" ' , 3 )
5588+ v9.CheckSourceFailure (lines , ' E1371: Abstract must be followed by "def"' , 3 )
55895589
55905590 # Use a static abstract method
55915591 lines = << trim END
55925592 vim9script
55935593 abstract class A
55945594 abstract static def Foo (): number
55955595 endclass
5596- class B extends A
5597- static def Foo (): number
5598- return 4
5599- enddef
5600- endclass
5601- assert_equal (4 , B.Foo ())
56025596 END
5603- v9.CheckSourceSuccess (lines )
5597+ v9.CheckSourceFailure (lines , ' E1371: Abstract must be followed by "def" ' , 3 )
56045598
56055599 # Type mismatch between abstract method and concrete method
56065600 lines = << trim END
@@ -5616,17 +5610,6 @@ def Test_abstract_method()
56165610 END
56175611 v9.CheckSourceFailure (lines , ' E1383: Method "Foo": type mismatch, expected func(string, number): list<number> but got func(number, string): list<string>' , 9 )
56185612
5619- # Use an abstract class to invoke an abstract method
5620- # FIXME : This should fail
5621- lines = << trim END
5622- vim9script
5623- abstract class A
5624- abstract static def Foo ()
5625- endclass
5626- A.Foo ()
5627- END
5628- v9.CheckSourceSuccess (lines )
5629-
56305613 # Invoke an abstract method from a def function
56315614 lines = << trim END
56325615 vim9script
@@ -5645,6 +5628,18 @@ def Test_abstract_method()
56455628 Bar (b )
56465629 END
56475630 v9.CheckSourceSuccess (lines )
5631+
5632+ # Use a static method in an abstract class
5633+ lines = << trim END
5634+ vim9script
5635+ abstract class A
5636+ static def Foo (): string
5637+ return ' foo'
5638+ enddef
5639+ endclass
5640+ assert_equal (' foo' , A.Foo ())
5641+ END
5642+ v9.CheckSourceSuccess (lines )
56485643enddef
56495644
56505645" Test for calling a class method from a subclass
0 commit comments