comparison src/testdir/test_vim9_script.vim @ 22147:d55008685870 v8.2.1623

patch 8.2.1623: Vim9: using :call where it is not needed Commit: https://github.com/vim/vim/commit/d2c617055ac8ff6ff244f69e23dce1f73741c5ad Author: Bram Moolenaar <Bram@vim.org> Date: Sun Sep 6 15:58:36 2020 +0200 patch 8.2.1623: Vim9: using :call where it is not needed Problem: Vim9: using :call where it is not needed. Solution: Remove :call. (closes https://github.com/vim/vim/issues/6892)
author Bram Moolenaar <Bram@vim.org>
date Sun, 06 Sep 2020 16:00:05 +0200
parents ff21e2962490
children c512e6f57ff2
comparison
equal deleted inserted replaced
22146:e8ce05d1dd3e 22147:d55008685870
43 let bool1: bool = true 43 let bool1: bool = true
44 assert_equal(v:true, bool1) 44 assert_equal(v:true, bool1)
45 let bool2: bool = false 45 let bool2: bool = false
46 assert_equal(v:false, bool2) 46 assert_equal(v:false, bool2)
47 47
48 call CheckDefFailure(['let x:string'], 'E1069:') 48 CheckDefFailure(['let x:string'], 'E1069:')
49 call CheckDefFailure(['let x:string = "x"'], 'E1069:') 49 CheckDefFailure(['let x:string = "x"'], 'E1069:')
50 call CheckDefFailure(['let a:string = "x"'], 'E1069:') 50 CheckDefFailure(['let a:string = "x"'], 'E1069:')
51 call CheckDefFailure(['let lambda = {-> "lambda"}'], 'E704:') 51 CheckDefFailure(['let lambda = {-> "lambda"}'], 'E704:')
52 52
53 let nr: number = 1234 53 let nr: number = 1234
54 call CheckDefFailure(['let nr: number = "asdf"'], 'E1012:') 54 CheckDefFailure(['let nr: number = "asdf"'], 'E1012:')
55 55
56 let a: number = 6 #comment 56 let a: number = 6 #comment
57 assert_equal(6, a) 57 assert_equal(6, a)
58 58
59 if has('channel') 59 if has('channel')
86 vim9script 86 vim9script
87 $ENVVAR = 'barfoo' 87 $ENVVAR = 'barfoo'
88 assert_equal('barfoo', $ENVVAR) 88 assert_equal('barfoo', $ENVVAR)
89 $ENVVAR = '' 89 $ENVVAR = ''
90 END 90 END
91 call CheckScriptSuccess(lines) 91 CheckScriptSuccess(lines)
92 92
93 s:appendToMe ..= 'yyy' 93 s:appendToMe ..= 'yyy'
94 assert_equal('xxxyyy', s:appendToMe) 94 assert_equal('xxxyyy', s:appendToMe)
95 s:addToMe += 222 95 s:addToMe += 222
96 assert_equal(333, s:addToMe) 96 assert_equal(333, s:addToMe)
173 def SomeFunc() 173 def SomeFunc()
174 s:var = 123 174 s:var = 123
175 enddef 175 enddef
176 defcompile 176 defcompile
177 END 177 END
178 call CheckScriptFailure(lines, 'E1089:') 178 CheckScriptFailure(lines, 'E1089:')
179 179
180 g:inc_counter += 1 180 g:inc_counter += 1
181 assert_equal(2, g:inc_counter) 181 assert_equal(2, g:inc_counter)
182 182
183 $SOME_ENV_VAR ..= 'more' 183 $SOME_ENV_VAR ..= 'more'
184 assert_equal('somemore', $SOME_ENV_VAR) 184 assert_equal('somemore', $SOME_ENV_VAR)
185 call CheckDefFailure(['$SOME_ENV_VAR += "more"'], 'E1051:') 185 CheckDefFailure(['$SOME_ENV_VAR += "more"'], 'E1051:')
186 call CheckDefFailure(['$SOME_ENV_VAR += 123'], 'E1012:') 186 CheckDefFailure(['$SOME_ENV_VAR += 123'], 'E1012:')
187 187
188 lines =<< trim END 188 lines =<< trim END
189 @c = 'areg' 189 @c = 'areg'
190 @c ..= 'add' 190 @c ..= 'add'
191 assert_equal('aregadd', @c) 191 assert_equal('aregadd', @c)
192 END 192 END
193 CheckDefAndScriptSuccess(lines) 193 CheckDefAndScriptSuccess(lines)
194 194
195 call CheckDefFailure(['@a += "more"'], 'E1051:') 195 CheckDefFailure(['@a += "more"'], 'E1051:')
196 call CheckDefFailure(['@a += 123'], 'E1012:') 196 CheckDefFailure(['@a += 123'], 'E1012:')
197 197
198 v:errmsg = 'none' 198 v:errmsg = 'none'
199 v:errmsg ..= 'again' 199 v:errmsg ..= 'again'
200 assert_equal('noneagain', v:errmsg) 200 assert_equal('noneagain', v:errmsg)
201 call CheckDefFailure(['v:errmsg += "more"'], 'E1051:') 201 CheckDefFailure(['v:errmsg += "more"'], 'E1051:')
202 call CheckDefFailure(['v:errmsg += 123'], 'E1012:') 202 CheckDefFailure(['v:errmsg += 123'], 'E1012:')
203 203
204 # single letter variables 204 # single letter variables
205 a = 123 205 a = 123
206 assert_equal(123, a) 206 assert_equal(123, a)
207 let b: number 207 let b: number
281 281
282 list3 += ['end'] 282 list3 += ['end']
283 assert_equal(['sdf', 'asdf', 'end'], list3) 283 assert_equal(['sdf', 'asdf', 'end'], list3)
284 284
285 285
286 call CheckDefExecFailure(['let ll = [1, 2, 3]', 'll[-4] = 6'], 'E684:') 286 CheckDefExecFailure(['let ll = [1, 2, 3]', 'll[-4] = 6'], 'E684:')
287 call CheckDefExecFailure(['let [v1, v2] = [1, 2]'], 'E1092:') 287 CheckDefExecFailure(['let [v1, v2] = [1, 2]'], 'E1092:')
288 288
289 # type becomes list<any> 289 # type becomes list<any>
290 let somelist = rand() > 0 ? [1, 2, 3] : ['a', 'b', 'c'] 290 let somelist = rand() > 0 ? [1, 2, 3] : ['a', 'b', 'c']
291 enddef 291 enddef
292 292
297 let v2: number 297 let v2: number
298 let v3: number 298 let v3: number
299 [v1, v2, v3] = [1, 2, 3] 299 [v1, v2, v3] = [1, 2, 3]
300 assert_equal([1, 2, 3], [v1, v2, v3]) 300 assert_equal([1, 2, 3], [v1, v2, v3])
301 END 301 END
302 call CheckScriptSuccess(lines) 302 CheckScriptSuccess(lines)
303 enddef 303 enddef
304 304
305 def Test_assignment_dict() 305 def Test_assignment_dict()
306 let dict1: dict<bool> = #{one: false, two: true} 306 let dict1: dict<bool> = #{one: false, two: true}
307 let dict2: dict<number> = #{one: 1, two: 2} 307 let dict2: dict<number> = #{one: 1, two: 2}
532 v:foldstart = 123 532 v:foldstart = 123
533 return 'xxx' 533 return 'xxx'
534 enddef 534 enddef
535 535
536 def Test_assignment_failure() 536 def Test_assignment_failure()
537 call CheckDefFailure(['let var=234'], 'E1004:') 537 CheckDefFailure(['let var=234'], 'E1004:')
538 call CheckDefFailure(['let var =234'], 'E1004:') 538 CheckDefFailure(['let var =234'], 'E1004:')
539 call CheckDefFailure(['let var= 234'], 'E1004:') 539 CheckDefFailure(['let var= 234'], 'E1004:')
540 540
541 call CheckScriptFailure(['vim9script', 'let var=234'], 'E1004:') 541 CheckScriptFailure(['vim9script', 'let var=234'], 'E1004:')
542 call CheckScriptFailure(['vim9script', 'let var=234'], "before and after '='") 542 CheckScriptFailure(['vim9script', 'let var=234'], "before and after '='")
543 call CheckScriptFailure(['vim9script', 'let var =234'], 'E1004:') 543 CheckScriptFailure(['vim9script', 'let var =234'], 'E1004:')
544 call CheckScriptFailure(['vim9script', 'let var= 234'], 'E1004:') 544 CheckScriptFailure(['vim9script', 'let var= 234'], 'E1004:')
545 call CheckScriptFailure(['vim9script', 'let var = 234', 'var+=234'], 'E1004:') 545 CheckScriptFailure(['vim9script', 'let var = 234', 'var+=234'], 'E1004:')
546 call CheckScriptFailure(['vim9script', 'let var = 234', 'var+=234'], "before and after '+='") 546 CheckScriptFailure(['vim9script', 'let var = 234', 'var+=234'], "before and after '+='")
547 call CheckScriptFailure(['vim9script', 'let var = "x"', 'var..="y"'], 'E1004:') 547 CheckScriptFailure(['vim9script', 'let var = "x"', 'var..="y"'], 'E1004:')
548 call CheckScriptFailure(['vim9script', 'let var = "x"', 'var..="y"'], "before and after '..='") 548 CheckScriptFailure(['vim9script', 'let var = "x"', 'var..="y"'], "before and after '..='")
549 549
550 call CheckDefFailure(['let true = 1'], 'E1034:') 550 CheckDefFailure(['let true = 1'], 'E1034:')
551 call CheckDefFailure(['let false = 1'], 'E1034:') 551 CheckDefFailure(['let false = 1'], 'E1034:')
552 552
553 call CheckDefFailure(['[a; b; c] = g:list'], 'E452:') 553 CheckDefFailure(['[a; b; c] = g:list'], 'E452:')
554 call CheckDefExecFailure(['let a: number', 554 CheckDefExecFailure(['let a: number',
555 '[a] = test_null_list()'], 'E1093:') 555 '[a] = test_null_list()'], 'E1093:')
556 call CheckDefExecFailure(['let a: number', 556 CheckDefExecFailure(['let a: number',
557 '[a] = []'], 'E1093:') 557 '[a] = []'], 'E1093:')
558 call CheckDefExecFailure(['let x: number', 558 CheckDefExecFailure(['let x: number',
559 'let y: number', 559 'let y: number',
560 '[x, y] = [1]'], 'E1093:') 560 '[x, y] = [1]'], 'E1093:')
561 call CheckDefExecFailure(['let x: number', 561 CheckDefExecFailure(['let x: number',
562 'let y: number', 562 'let y: number',
563 'let z: list<number>', 563 'let z: list<number>',
564 '[x, y; z] = [1]'], 'E1093:') 564 '[x, y; z] = [1]'], 'E1093:')
565 565
566 call CheckDefFailure(['let somevar'], "E1022:") 566 CheckDefFailure(['let somevar'], "E1022:")
567 call CheckDefFailure(['let &tabstop = 4'], 'E1052:') 567 CheckDefFailure(['let &tabstop = 4'], 'E1052:')
568 call CheckDefFailure(['&g:option = 5'], 'E113:') 568 CheckDefFailure(['&g:option = 5'], 'E113:')
569 call CheckScriptFailure(['vim9script', 'let &tabstop = 4'], 'E1052:') 569 CheckScriptFailure(['vim9script', 'let &tabstop = 4'], 'E1052:')
570 570
571 call CheckDefFailure(['let $VAR = 5'], 'E1016: Cannot declare an environment variable:') 571 CheckDefFailure(['let $VAR = 5'], 'E1016: Cannot declare an environment variable:')
572 call CheckScriptFailure(['vim9script', 'let $ENV = "xxx"'], 'E1016:') 572 CheckScriptFailure(['vim9script', 'let $ENV = "xxx"'], 'E1016:')
573 573
574 if has('dnd') 574 if has('dnd')
575 call CheckDefFailure(['let @~ = 5'], 'E1066:') 575 CheckDefFailure(['let @~ = 5'], 'E1066:')
576 else 576 else
577 call CheckDefFailure(['let @~ = 5'], 'E354:') 577 CheckDefFailure(['let @~ = 5'], 'E354:')
578 call CheckDefFailure(['@~ = 5'], 'E354:') 578 CheckDefFailure(['@~ = 5'], 'E354:')
579 endif 579 endif
580 call CheckDefFailure(['let @a = 5'], 'E1066:') 580 CheckDefFailure(['let @a = 5'], 'E1066:')
581 call CheckDefFailure(['let @/ = "x"'], 'E1066:') 581 CheckDefFailure(['let @/ = "x"'], 'E1066:')
582 call CheckScriptFailure(['vim9script', 'let @a = "abc"'], 'E1066:') 582 CheckScriptFailure(['vim9script', 'let @a = "abc"'], 'E1066:')
583 583
584 call CheckDefFailure(['let g:var = 5'], 'E1016: Cannot declare a global variable:') 584 CheckDefFailure(['let g:var = 5'], 'E1016: Cannot declare a global variable:')
585 call CheckDefFailure(['let w:var = 5'], 'E1016: Cannot declare a window variable:') 585 CheckDefFailure(['let w:var = 5'], 'E1016: Cannot declare a window variable:')
586 call CheckDefFailure(['let b:var = 5'], 'E1016: Cannot declare a buffer variable:') 586 CheckDefFailure(['let b:var = 5'], 'E1016: Cannot declare a buffer variable:')
587 call CheckDefFailure(['let t:var = 5'], 'E1016: Cannot declare a tab variable:') 587 CheckDefFailure(['let t:var = 5'], 'E1016: Cannot declare a tab variable:')
588 588
589 call CheckDefFailure(['let anr = 4', 'anr ..= "text"'], 'E1019:') 589 CheckDefFailure(['let anr = 4', 'anr ..= "text"'], 'E1019:')
590 call CheckDefFailure(['let xnr += 4'], 'E1020:', 1) 590 CheckDefFailure(['let xnr += 4'], 'E1020:', 1)
591 call CheckScriptFailure(['vim9script', 'let xnr += 4'], 'E1020:') 591 CheckScriptFailure(['vim9script', 'let xnr += 4'], 'E1020:')
592 call CheckDefFailure(["let xnr = xnr + 1"], 'E1001:', 1) 592 CheckDefFailure(["let xnr = xnr + 1"], 'E1001:', 1)
593 call CheckScriptFailure(['vim9script', 'let xnr = xnr + 4'], 'E121:') 593 CheckScriptFailure(['vim9script', 'let xnr = xnr + 4'], 'E121:')
594 594
595 call CheckScriptFailure(['vim9script', 'def Func()', 'let dummy = s:notfound', 'enddef', 'defcompile'], 'E1108:') 595 CheckScriptFailure(['vim9script', 'def Func()', 'let dummy = s:notfound', 'enddef', 'defcompile'], 'E1108:')
596 596
597 call CheckDefFailure(['let var: list<string> = [123]'], 'expected list<string> but got list<number>') 597 CheckDefFailure(['let var: list<string> = [123]'], 'expected list<string> but got list<number>')
598 call CheckDefFailure(['let var: list<number> = ["xx"]'], 'expected list<number> but got list<string>') 598 CheckDefFailure(['let var: list<number> = ["xx"]'], 'expected list<number> but got list<string>')
599 599
600 call CheckDefFailure(['let var: dict<string> = #{key: 123}'], 'expected dict<string> but got dict<number>') 600 CheckDefFailure(['let var: dict<string> = #{key: 123}'], 'expected dict<string> but got dict<number>')
601 call CheckDefFailure(['let var: dict<number> = #{key: "xx"}'], 'expected dict<number> but got dict<string>') 601 CheckDefFailure(['let var: dict<number> = #{key: "xx"}'], 'expected dict<number> but got dict<string>')
602 602
603 call CheckDefFailure(['let var = feedkeys("0")'], 'E1031:') 603 CheckDefFailure(['let var = feedkeys("0")'], 'E1031:')
604 call CheckDefFailure(['let var: number = feedkeys("0")'], 'expected number but got void') 604 CheckDefFailure(['let var: number = feedkeys("0")'], 'expected number but got void')
605 605
606 call CheckDefFailure(['let var: dict <number>'], 'E1068:') 606 CheckDefFailure(['let var: dict <number>'], 'E1068:')
607 call CheckDefFailure(['let var: dict<number'], 'E1009:') 607 CheckDefFailure(['let var: dict<number'], 'E1009:')
608 608
609 call assert_fails('s/^/\=Mess()/n', 'E794:') 609 assert_fails('s/^/\=Mess()/n', 'E794:')
610 call CheckDefFailure(['let var: dict<number'], 'E1009:') 610 CheckDefFailure(['let var: dict<number'], 'E1009:')
611 611
612 call CheckDefFailure(['w:foo: number = 10'], 612 CheckDefFailure(['w:foo: number = 10'],
613 'E488: Trailing characters: : number = 1') 613 'E488: Trailing characters: : number = 1')
614 call CheckDefFailure(['t:foo: bool = true'], 614 CheckDefFailure(['t:foo: bool = true'],
615 'E488: Trailing characters: : bool = true') 615 'E488: Trailing characters: : bool = true')
616 call CheckDefFailure(['b:foo: string = "x"'], 616 CheckDefFailure(['b:foo: string = "x"'],
617 'E488: Trailing characters: : string = "x"') 617 'E488: Trailing characters: : string = "x"')
618 call CheckDefFailure(['g:foo: number = 123'], 618 CheckDefFailure(['g:foo: number = 123'],
619 'E488: Trailing characters: : number = 123') 619 'E488: Trailing characters: : number = 123')
620 enddef 620 enddef
621 621
622 def Test_unlet() 622 def Test_unlet()
623 g:somevar = 'yes' 623 g:somevar = 'yes'
624 assert_true(exists('g:somevar')) 624 assert_true(exists('g:somevar'))
631 assert_true(exists('s:somevar')) 631 assert_true(exists('s:somevar'))
632 unlet s:somevar 632 unlet s:somevar
633 assert_false(exists('s:somevar')) 633 assert_false(exists('s:somevar'))
634 unlet! s:somevar 634 unlet! s:somevar
635 635
636 call CheckScriptFailure([ 636 CheckScriptFailure([
637 'vim9script', 637 'vim9script',
638 'let svar = 123', 638 'let svar = 123',
639 'unlet svar', 639 'unlet svar',
640 ], 'E1081:') 640 ], 'E1081:')
641 call CheckScriptFailure([ 641 CheckScriptFailure([
642 'vim9script', 642 'vim9script',
643 'let svar = 123', 643 'let svar = 123',
644 'unlet s:svar', 644 'unlet s:svar',
645 ], 'E1081:') 645 ], 'E1081:')
646 call CheckScriptFailure([ 646 CheckScriptFailure([
647 'vim9script', 647 'vim9script',
648 'let svar = 123', 648 'let svar = 123',
649 'def Func()', 649 'def Func()',
650 ' unlet svar', 650 ' unlet svar',
651 'enddef', 651 'enddef',
652 'defcompile', 652 'defcompile',
653 ], 'E1081:') 653 ], 'E1081:')
654 call CheckScriptFailure([ 654 CheckScriptFailure([
655 'vim9script', 655 'vim9script',
656 'let svar = 123', 656 'let svar = 123',
657 'def Func()', 657 'def Func()',
658 ' unlet s:svar', 658 ' unlet s:svar',
659 'enddef', 659 'enddef',
660 'defcompile', 660 'defcompile',
661 ], 'E1081:') 661 ], 'E1081:')
662 662
663 $ENVVAR = 'foobar' 663 $ENVVAR = 'foobar'
664 assert_equal('foobar', $ENVVAR) 664 assert_equal('foobar', $ENVVAR)
665 unlet $ENVVAR 665 unlet $ENVVAR
666 assert_equal('', $ENVVAR) 666 assert_equal('', $ENVVAR)
788 call CheckDefFailure(['const two'], 'E1021:') 788 call CheckDefFailure(['const two'], 'E1021:')
789 call CheckDefFailure(['const &option'], 'E996:') 789 call CheckDefFailure(['const &option'], 'E996:')
790 endfunc 790 endfunc
791 791
792 def Test_range_no_colon() 792 def Test_range_no_colon()
793 call CheckDefFailure(['%s/a/b/'], 'E1050:') 793 CheckDefFailure(['%s/a/b/'], 'E1050:')
794 call CheckDefFailure(['+ s/a/b/'], 'E1050:') 794 CheckDefFailure(['+ s/a/b/'], 'E1050:')
795 call CheckDefFailure(['- s/a/b/'], 'E1050:') 795 CheckDefFailure(['- s/a/b/'], 'E1050:')
796 call CheckDefFailure(['. s/a/b/'], 'E1050:') 796 CheckDefFailure(['. s/a/b/'], 'E1050:')
797 enddef 797 enddef
798 798
799 799
800 def Test_block() 800 def Test_block()
801 let outer = 1 801 let outer = 1
1085 endtry 1085 endtry
1086 assert_equal('abc', seq) 1086 assert_equal('abc', seq)
1087 enddef 1087 enddef
1088 1088
1089 def Test_try_catch_fails() 1089 def Test_try_catch_fails()
1090 call CheckDefFailure(['catch'], 'E603:') 1090 CheckDefFailure(['catch'], 'E603:')
1091 call CheckDefFailure(['try', 'echo 0', 'catch', 'catch'], 'E1033:') 1091 CheckDefFailure(['try', 'echo 0', 'catch', 'catch'], 'E1033:')
1092 call CheckDefFailure(['try', 'echo 0', 'catch /pat'], 'E1067:') 1092 CheckDefFailure(['try', 'echo 0', 'catch /pat'], 'E1067:')
1093 call CheckDefFailure(['finally'], 'E606:') 1093 CheckDefFailure(['finally'], 'E606:')
1094 call CheckDefFailure(['try', 'echo 0', 'finally', 'echo 1', 'finally'], 'E607:') 1094 CheckDefFailure(['try', 'echo 0', 'finally', 'echo 1', 'finally'], 'E607:')
1095 call CheckDefFailure(['endtry'], 'E602:') 1095 CheckDefFailure(['endtry'], 'E602:')
1096 call CheckDefFailure(['while 1', 'endtry'], 'E170:') 1096 CheckDefFailure(['while 1', 'endtry'], 'E170:')
1097 call CheckDefFailure(['for i in range(5)', 'endtry'], 'E170:') 1097 CheckDefFailure(['for i in range(5)', 'endtry'], 'E170:')
1098 call CheckDefFailure(['if 2', 'endtry'], 'E171:') 1098 CheckDefFailure(['if 2', 'endtry'], 'E171:')
1099 call CheckDefFailure(['try', 'echo 1', 'endtry'], 'E1032:') 1099 CheckDefFailure(['try', 'echo 1', 'endtry'], 'E1032:')
1100 1100
1101 call CheckDefFailure(['throw'], 'E1015:') 1101 CheckDefFailure(['throw'], 'E1015:')
1102 call CheckDefFailure(['throw xxx'], 'E1001:') 1102 CheckDefFailure(['throw xxx'], 'E1001:')
1103 enddef 1103 enddef
1104 1104
1105 def Test_throw_vimscript() 1105 def Test_throw_vimscript()
1106 # only checks line continuation 1106 # only checks line continuation
1107 let lines =<< trim END 1107 let lines =<< trim END
1743 enddef 1743 enddef
1744 END 1744 END
1745 let nono_lines =<< trim END 1745 let nono_lines =<< trim END
1746 def g:DoCheck(no_exists: bool) 1746 def g:DoCheck(no_exists: bool)
1747 assert_equal('yes', FuncYes()) 1747 assert_equal('yes', FuncYes())
1748 assert_fails('call FuncNo()', 'E117:') 1748 assert_fails('FuncNo()', 'E117:')
1749 enddef 1749 enddef
1750 END 1750 END
1751 1751
1752 # FuncNo() is defined 1752 # FuncNo() is defined
1753 writefile(first_lines + withno_lines, 'Xreloaded.vim') 1753 writefile(first_lines + withno_lines, 'Xreloaded.vim')
1970 l->insert(99, 1) 1970 l->insert(99, 1)
1971 assert_equal([2, 99, 3, 4, 5], l) 1971 assert_equal([2, 99, 3, 4, 5], l)
1972 enddef 1972 enddef
1973 1973
1974 def Test_no_insert_xit() 1974 def Test_no_insert_xit()
1975 call CheckDefExecFailure(['a = 1'], 'E1100:') 1975 CheckDefExecFailure(['a = 1'], 'E1100:')
1976 call CheckDefExecFailure(['c = 1'], 'E1100:') 1976 CheckDefExecFailure(['c = 1'], 'E1100:')
1977 call CheckDefExecFailure(['i = 1'], 'E1100:') 1977 CheckDefExecFailure(['i = 1'], 'E1100:')
1978 call CheckDefExecFailure(['t = 1'], 'E1100:') 1978 CheckDefExecFailure(['t = 1'], 'E1100:')
1979 call CheckDefExecFailure(['x = 1'], 'E1100:') 1979 CheckDefExecFailure(['x = 1'], 'E1100:')
1980 1980
1981 CheckScriptFailure(['vim9script', 'a = 1'], 'E488:') 1981 CheckScriptFailure(['vim9script', 'a = 1'], 'E488:')
1982 CheckScriptFailure(['vim9script', 'a'], 'E1100:') 1982 CheckScriptFailure(['vim9script', 'a'], 'E1100:')
1983 CheckScriptFailure(['vim9script', 'c = 1'], 'E488:') 1983 CheckScriptFailure(['vim9script', 'c = 1'], 'E488:')
1984 CheckScriptFailure(['vim9script', 'c'], 'E1100:') 1984 CheckScriptFailure(['vim9script', 'c'], 'E1100:')
2006 assert_equal('two', IfElse(2)) 2006 assert_equal('two', IfElse(2))
2007 assert_equal('three', IfElse(3)) 2007 assert_equal('three', IfElse(3))
2008 enddef 2008 enddef
2009 2009
2010 def Test_if_elseif_else_fails() 2010 def Test_if_elseif_else_fails()
2011 call CheckDefFailure(['elseif true'], 'E582:') 2011 CheckDefFailure(['elseif true'], 'E582:')
2012 call CheckDefFailure(['else'], 'E581:') 2012 CheckDefFailure(['else'], 'E581:')
2013 call CheckDefFailure(['endif'], 'E580:') 2013 CheckDefFailure(['endif'], 'E580:')
2014 call CheckDefFailure(['if true', 'elseif xxx'], 'E1001:') 2014 CheckDefFailure(['if true', 'elseif xxx'], 'E1001:')
2015 call CheckDefFailure(['if true', 'echo 1'], 'E171:') 2015 CheckDefFailure(['if true', 'echo 1'], 'E171:')
2016 enddef 2016 enddef
2017 2017
2018 let g:bool_true = v:true 2018 let g:bool_true = v:true
2019 let g:bool_false = v:false 2019 let g:bool_false = v:false
2020 2020
2139 burp 2139 burp
2140 endif 2140 endif
2141 enddef 2141 enddef
2142 2142
2143 def Test_if_const_expr_fails() 2143 def Test_if_const_expr_fails()
2144 call CheckDefFailure(['if "aaa" == "bbb'], 'E114:') 2144 CheckDefFailure(['if "aaa" == "bbb'], 'E114:')
2145 call CheckDefFailure(["if 'aaa' == 'bbb"], 'E115:') 2145 CheckDefFailure(["if 'aaa' == 'bbb"], 'E115:')
2146 call CheckDefFailure(["if has('aaa'"], 'E110:') 2146 CheckDefFailure(["if has('aaa'"], 'E110:')
2147 call CheckDefFailure(["if has('aaa') ? true false"], 'E109:') 2147 CheckDefFailure(["if has('aaa') ? true false"], 'E109:')
2148 enddef 2148 enddef
2149 2149
2150 def RunNested(i: number): number 2150 def RunNested(i: number): number
2151 let x: number = 0 2151 let x: number = 0
2152 if i % 2 2152 if i % 2
2168 enddef 2168 enddef
2169 2169
2170 def Test_execute_cmd() 2170 def Test_execute_cmd()
2171 new 2171 new
2172 setline(1, 'default') 2172 setline(1, 'default')
2173 execute 'call setline(1, "execute-string")' 2173 execute 'setline(1, "execute-string")'
2174 assert_equal('execute-string', getline(1)) 2174 assert_equal('execute-string', getline(1))
2175 2175
2176 execute "call setline(1, 'execute-string')" 2176 execute "setline(1, 'execute-string')"
2177 assert_equal('execute-string', getline(1)) 2177 assert_equal('execute-string', getline(1))
2178 2178
2179 let cmd1 = 'call setline(1,' 2179 let cmd1 = 'setline(1,'
2180 let cmd2 = '"execute-var")' 2180 let cmd2 = '"execute-var")'
2181 execute cmd1 cmd2 # comment 2181 execute cmd1 cmd2 # comment
2182 assert_equal('execute-var', getline(1)) 2182 assert_equal('execute-var', getline(1))
2183 2183
2184 execute cmd1 cmd2 '|call setline(1, "execute-var-string")' 2184 execute cmd1 cmd2 '|setline(1, "execute-var-string")'
2185 assert_equal('execute-var-string', getline(1)) 2185 assert_equal('execute-var-string', getline(1))
2186 2186
2187 let cmd_first = 'call ' 2187 let cmd_first = 'call '
2188 let cmd_last = 'setline(1, "execute-var-var")' 2188 let cmd_last = 'setline(1, "execute-var-var")'
2189 execute cmd_first .. cmd_last 2189 execute cmd_first .. cmd_last
2195 assert_match('^true$', Screenline(&lines)) 2195 assert_match('^true$', Screenline(&lines))
2196 2196
2197 echomsg [1, 2, 3] #{a: 1, b: 2} 2197 echomsg [1, 2, 3] #{a: 1, b: 2}
2198 assert_match('^\[1, 2, 3\] {''a'': 1, ''b'': 2}$', Screenline(&lines)) 2198 assert_match('^\[1, 2, 3\] {''a'': 1, ''b'': 2}$', Screenline(&lines))
2199 2199
2200 call CheckDefFailure(['execute xxx'], 'E1001:', 1) 2200 CheckDefFailure(['execute xxx'], 'E1001:', 1)
2201 call CheckDefExecFailure(['execute "tabnext " .. 8'], 'E475:', 1) 2201 CheckDefExecFailure(['execute "tabnext " .. 8'], 'E475:', 1)
2202 call CheckDefFailure(['execute "cmd"# comment'], 'E488:', 1) 2202 CheckDefFailure(['execute "cmd"# comment'], 'E488:', 1)
2203 enddef 2203 enddef
2204 2204
2205 def Test_execute_cmd_vimscript() 2205 def Test_execute_cmd_vimscript()
2206 # only checks line continuation 2206 # only checks line continuation
2207 let lines =<< trim END 2207 let lines =<< trim END
2227 let str1 = 'some' 2227 let str1 = 'some'
2228 let str2 = 'more' 2228 let str2 = 'more'
2229 echo str1 str2 2229 echo str1 str2
2230 assert_match('^some more$', Screenline(&lines)) 2230 assert_match('^some more$', Screenline(&lines))
2231 2231
2232 call CheckDefFailure(['echo "xxx"# comment'], 'E488:') 2232 CheckDefFailure(['echo "xxx"# comment'], 'E488:')
2233 enddef 2233 enddef
2234 2234
2235 def Test_echomsg_cmd() 2235 def Test_echomsg_cmd()
2236 echomsg 'some' 'more' # comment 2236 echomsg 'some' 'more' # comment
2237 assert_match('^some more$', Screenline(&lines)) 2237 assert_match('^some more$', Screenline(&lines))
2238 echo 'clear' 2238 echo 'clear'
2239 :1messages 2239 :1messages
2240 assert_match('^some more$', Screenline(&lines)) 2240 assert_match('^some more$', Screenline(&lines))
2241 2241
2242 call CheckDefFailure(['echomsg "xxx"# comment'], 'E488:') 2242 CheckDefFailure(['echomsg "xxx"# comment'], 'E488:')
2243 enddef 2243 enddef
2244 2244
2245 def Test_echomsg_cmd_vimscript() 2245 def Test_echomsg_cmd_vimscript()
2246 # only checks line continuation 2246 # only checks line continuation
2247 let lines =<< trim END 2247 let lines =<< trim END
2920 ], 'E15:') 2920 ], 'E15:')
2921 2921
2922 CheckScriptSuccess([ 2922 CheckScriptSuccess([
2923 'vim9script', 2923 'vim9script',
2924 'new' 2924 'new'
2925 'call setline(1, ["# define pat", "last"])', 2925 'setline(1, ["# define pat", "last"])',
2926 ':$', 2926 ':$',
2927 'dsearch /pat/ #comment', 2927 'dsearch /pat/ #comment',
2928 'bwipe!', 2928 'bwipe!',
2929 ]) 2929 ])
2930 2930
2931 CheckScriptFailure([ 2931 CheckScriptFailure([
2932 'vim9script', 2932 'vim9script',
2933 'new' 2933 'new'
2934 'call setline(1, ["# define pat", "last"])', 2934 'setline(1, ["# define pat", "last"])',
2935 ':$', 2935 ':$',
2936 'dsearch /pat/#comment', 2936 'dsearch /pat/#comment',
2937 'bwipe!', 2937 'bwipe!',
2938 ], 'E488:') 2938 ], 'E488:')
2939 2939
3264 3264
3265 def Test_invalid_sid() 3265 def Test_invalid_sid()
3266 assert_fails('func <SNR>1234_func', 'E123:') 3266 assert_fails('func <SNR>1234_func', 'E123:')
3267 3267
3268 if RunVim([], ['wq Xdidit'], '+"func <SNR>1_func"') 3268 if RunVim([], ['wq Xdidit'], '+"func <SNR>1_func"')
3269 call assert_equal([], readfile('Xdidit')) 3269 assert_equal([], readfile('Xdidit'))
3270 endif 3270 endif
3271 delete('Xdidit') 3271 delete('Xdidit')
3272 enddef 3272 enddef
3273 3273
3274 " Keep this last, it messes up highlighting. 3274 " Keep this last, it messes up highlighting.