@@ -188,6 +188,12 @@ func Test_expr1_trinary_fails()
188188 call CheckDefExecFailure ([" var x = [] ? 'one' : 'two'" ], ' E745:' , 1 )
189189 call CheckDefExecFailure ([" var x = {} ? 'one' : 'two'" ], ' E728:' , 1 )
190190
191+ call CheckDefExecFailure ([" var x = false ? " ], ' E1097:' , 2 )
192+ call CheckDefExecFailure ([" var x = false ? 'one' : " ], ' E1097:' , 2 )
193+
194+ call CheckDefExecFailure ([" var x = true ? xxx : 'foo'" ], ' E1001:' , 1 )
195+ call CheckDefExecFailure ([" var x = false ? 'foo' : xxx" ], ' E1001:' , 1 )
196+
191197 if has (' float' )
192198 call CheckDefFailure ([" var x = 0.1 ? 'one' : 'two'" ], ' E805:' , 1 )
193199 endif
@@ -346,6 +352,8 @@ def Test_expr2_fails()
346352 call CheckDefFailure ([" var x = 1 ||2" ], msg, 1 )
347353 call CheckDefFailure ([" var x = 1|| 2" ], msg, 1 )
348354
355+ call CheckDefFailure ([" var x = false || " ], ' E1097:' , 2 )
356+
349357 call CheckDefFailure ([" var x = 1 || xxx" ], ' E1001:' , 1 )
350358 call CheckDefFailure ([" var x = [] || false" ], ' E1012:' , 1 )
351359 call CheckDefFailure ([" if 'yes' || 0" , ' echo 0' , ' endif' ], ' E1012: Type mismatch; expected bool but got string' , 1 )
@@ -579,6 +587,8 @@ def Test_expr4_equal()
579587 CheckDefAndScriptSuccess (lines )
580588
581589 CheckDefFailure ([" var x = 'a' == xxx" ], ' E1001:' , 1 )
590+ CheckDefFailure ([" var x = 'a' == " ], ' E1097:' , 2 )
591+
582592 CheckDefExecFailure ([' var items: any' , ' eval 1' , ' eval 2' , ' if items == []' , ' endif' ], ' E691:' , 4 )
583593enddef
584594
@@ -1349,6 +1359,7 @@ def Test_expr6()
13491359 CheckDefAndScriptSuccess (lines )
13501360
13511361 CheckDefFailure ([" var x = 6 * xxx" ], ' E1001:' , 1 )
1362+ CheckDefFailure ([" var d = 6 * " ], ' E1097:' , 2 )
13521363enddef
13531364
13541365def Test_expr6_vim9script ()
@@ -1520,6 +1531,7 @@ def Test_expr7t()
15201531 assert_equal (234 , nr)
15211532
15221533 CheckDefFailure ([" var x = <nr>123" ], ' E1010:' , 1 )
1534+ CheckDefFailure ([" var x = <number>" ], ' E1097:' , 2 )
15231535 CheckDefFailure ([" var x = <number >123" ], ' E1068:' , 1 )
15241536 CheckDefFailure ([" var x = <number 123" ], ' E1104:' , 1 )
15251537enddef
@@ -2052,6 +2064,33 @@ def Test_expr7_dict_vim9script()
20522064 END
20532065 CheckScriptFailure (lines , ' E1012:' , 2 )
20542066
2067+ lines = << trim END
2068+ vim9script
2069+ var d = {[' a' ]: 234 , [' b' : ' x' }
2070+ END
2071+ CheckScriptFailure (lines , ' E1139:' , 2 )
2072+ lines = << trim END
2073+ vim9script
2074+ def Func ()
2075+ var d = {[' a' ]: 234 , [' b' : ' x' }
2076+ enddef
2077+ defcompile
2078+ END
2079+ CheckScriptFailure (lines , ' E1139:' , 1 )
2080+ lines = << trim END
2081+ vim9script
2082+ var d = {' a' :
2083+ END
2084+ CheckScriptFailure (lines , ' E15:' , 2 )
2085+ lines = << trim END
2086+ vim9script
2087+ def Func ()
2088+ var d = {' a' :
2089+ enddef
2090+ defcompile
2091+ END
2092+ CheckScriptFailure (lines , ' E723:' , 1 )
2093+
20552094 lines = << trim END
20562095 vim9script
20572096 def Failing ()
@@ -2566,6 +2605,39 @@ def Test_expr7_string_subscript()
25662605 END
25672606 CheckDefSuccess (lines )
25682607 CheckScriptSuccess ([' vim9script' ] + lines )
2608+
2609+ lines = << trim END
2610+ var d = ' asdf' [1 :
2611+ END
2612+ CheckDefFailure (lines , ' E1097:' , 2 )
2613+ lines = << trim END
2614+ var d = ' asdf' [1 :xxx]
2615+ END
2616+ CheckDefFailure (lines , ' E1001:' , 1 )
2617+ lines = << trim END
2618+ var d = ' asdf' [1 :2
2619+ END
2620+ CheckDefFailure (lines , ' E1097:' , 2 )
2621+ lines = << trim END
2622+ var d = ' asdf' [1 :2
2623+ echo d
2624+ END
2625+ CheckDefFailure (lines , ' E111:' , 2 )
2626+ lines = << trim END
2627+ var d = ' asdf' [' 1' ]
2628+ echo d
2629+ END
2630+ CheckDefFailure (lines , ' E1012: Type mismatch; expected number but got string' , 1 )
2631+ lines = << trim END
2632+ var d = ' asdf' [' 1' :2 ]
2633+ echo d
2634+ END
2635+ CheckDefFailure (lines , ' E1012: Type mismatch; expected number but got string' , 1 )
2636+ lines = << trim END
2637+ var d = ' asdf' [1 :' 2' ]
2638+ echo d
2639+ END
2640+ CheckDefFailure (lines , ' E1012: Type mismatch; expected number but got string' , 1 )
25692641enddef
25702642
25712643def Test_expr7_list_subscript ()
0 commit comments