comparison src/testdir/test_vim9_builtin.vim @ 25314:7e620652bd13 v8.2.3194

patch 8.2.3194: Vim9: argument types are not checked at compile time Commit: https://github.com/vim/vim/commit/cd9172077bc8c0aafddf2e5367cc0ae2c00c8ff7 Author: Yegappan Lakshmanan <yegappan@yahoo.com> Date: Wed Jul 21 19:09:09 2021 +0200 patch 8.2.3194: Vim9: argument types are not checked at compile time Problem: Vim9: argument types are not checked at compile time. Solution: Add several more type checks, simplify some. (Yegappan Lakshmanan, closes #8598)
author Bram Moolenaar <Bram@vim.org>
date Wed, 21 Jul 2021 19:15:04 +0200
parents 4d3c68196d05
children cfbf40f749b0
comparison
equal deleted inserted replaced
25313:afe0651cb4aa 25314:7e620652bd13
650 setline(1, range(4)) 650 setline(1, range(4))
651 cursor(2, 1) 651 cursor(2, 1)
652 assert_equal(2, getcurpos()[1]) 652 assert_equal(2, getcurpos()[1])
653 cursor('$', 1) 653 cursor('$', 1)
654 assert_equal(4, getcurpos()[1]) 654 assert_equal(4, getcurpos()[1])
655 cursor([2, 1])
656 assert_equal(2, getcurpos()[1])
655 657
656 var lines =<< trim END 658 var lines =<< trim END
657 cursor('2', 1) 659 cursor('2', 1)
658 END 660 END
659 CheckDefExecAndScriptFailure(lines, 'E1209:') 661 CheckDefExecAndScriptFailure(lines, 'E1209:')
1103 hide edit Xtestfile2 1105 hide edit Xtestfile2
1104 hide enew 1106 hide enew
1105 getbufinfo({bufloaded: true, buflisted: true, bufmodified: false}) 1107 getbufinfo({bufloaded: true, buflisted: true, bufmodified: false})
1106 ->len()->assert_equal(3) 1108 ->len()->assert_equal(3)
1107 bwipe Xtestfile1 Xtestfile2 1109 bwipe Xtestfile1 Xtestfile2
1110 CheckDefAndScriptFailure2(['getbufinfo(true)'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1')
1108 enddef 1111 enddef
1109 1112
1110 def Test_getbufline() 1113 def Test_getbufline()
1111 e SomeFile 1114 e SomeFile
1112 var buf = bufnr() 1115 var buf = bufnr()
1244 1247
1245 lines =<< trim END 1248 lines =<< trim END
1246 echo getline('1') 1249 echo getline('1')
1247 END 1250 END
1248 CheckDefExecAndScriptFailure(lines, 'E1209:') 1251 CheckDefExecAndScriptFailure(lines, 'E1209:')
1252 CheckDefAndScriptFailure2(['getline(true)'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1')
1253 CheckDefAndScriptFailure2(['getline(1, true)'], 'E1013: Argument 2: type mismatch, expected string but got bool', 'E1174: String required for argument 2')
1249 enddef 1254 enddef
1250 1255
1251 def Test_getloclist() 1256 def Test_getloclist()
1252 CheckDefAndScriptFailure2(['getloclist("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1030: Using a String as a Number') 1257 CheckDefAndScriptFailure2(['getloclist("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1030: Using a String as a Number')
1253 CheckDefAndScriptFailure2(['getloclist(1, [])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E715: Dictionary required') 1258 CheckDefAndScriptFailure2(['getloclist(1, [])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E715: Dictionary required')
3064 def Test_term_getjob() 3069 def Test_term_getjob()
3065 CheckRunVimInTerminal 3070 CheckRunVimInTerminal
3066 CheckDefAndScriptFailure2(['term_getjob(0z10)'], 'E1013: Argument 1: type mismatch, expected string but got blob', 'E974: Using a Blob as a Number') 3071 CheckDefAndScriptFailure2(['term_getjob(0z10)'], 'E1013: Argument 1: type mismatch, expected string but got blob', 'E974: Using a Blob as a Number')
3067 enddef 3072 enddef
3068 3073
3074 def Test_term_getline()
3075 CheckRunVimInTerminal
3076 CheckDefAndScriptFailure2(['term_getline(1.1, 1)'], 'E1013: Argument 1: type mismatch, expected string but got float', 'E1174: String required for argument 1')
3077 CheckDefAndScriptFailure2(['term_getline(1, 1.1)'], 'E1013: Argument 2: type mismatch, expected string but got float', 'E1174: String required for argument 2')
3078 enddef
3079
3069 def Test_term_getscrolled() 3080 def Test_term_getscrolled()
3070 CheckRunVimInTerminal 3081 CheckRunVimInTerminal
3071 CheckDefAndScriptFailure2(['term_getscrolled(1.1)'], 'E1013: Argument 1: type mismatch, expected string but got float', 'E805: Using a Float as a Number') 3082 CheckDefAndScriptFailure2(['term_getscrolled(1.1)'], 'E1013: Argument 1: type mismatch, expected string but got float', 'E805: Using a Float as a Number')
3072 enddef 3083 enddef
3073 3084
3096 endif 3107 endif
3097 CheckDefAndScriptFailure2(['term_gettty([1])'], 'E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1') 3108 CheckDefAndScriptFailure2(['term_gettty([1])'], 'E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1')
3098 CheckDefAndScriptFailure2(['term_gettty(1, 2)'], 'E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2') 3109 CheckDefAndScriptFailure2(['term_gettty(1, 2)'], 'E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2')
3099 enddef 3110 enddef
3100 3111
3112 def Test_term_scrape()
3113 CheckRunVimInTerminal
3114 CheckDefAndScriptFailure2(['term_scrape(1.1, 1)'], 'E1013: Argument 1: type mismatch, expected string but got float', 'E1174: String required for argument 1')
3115 CheckDefAndScriptFailure2(['term_scrape(1, 1.1)'], 'E1013: Argument 2: type mismatch, expected string but got float', 'E1174: String required for argument 2')
3116 enddef
3117
3101 def Test_term_sendkeys() 3118 def Test_term_sendkeys()
3102 CheckRunVimInTerminal 3119 CheckRunVimInTerminal
3103 CheckDefAndScriptFailure2(['term_sendkeys([], "p")'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1') 3120 CheckDefAndScriptFailure2(['term_sendkeys([], "p")'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1')
3104 CheckDefAndScriptFailure2(['term_sendkeys(1, [])'], 'E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2') 3121 CheckDefAndScriptFailure2(['term_sendkeys(1, [])'], 'E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2')
3105 enddef 3122 enddef
3125 def Test_term_setrestore() 3142 def Test_term_setrestore()
3126 CheckRunVimInTerminal 3143 CheckRunVimInTerminal
3127 CheckDefAndScriptFailure2(['term_setrestore([], "p")'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1') 3144 CheckDefAndScriptFailure2(['term_setrestore([], "p")'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1')
3128 CheckDefAndScriptFailure2(['term_setrestore(1, [])'], 'E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2') 3145 CheckDefAndScriptFailure2(['term_setrestore(1, [])'], 'E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2')
3129 enddef 3146 enddef
3147
3148 def Test_term_setsize()
3149 CheckRunVimInTerminal
3150 CheckDefAndScriptFailure2(['term_setsize(1.1, 2, 3)'], 'E1013: Argument 1: type mismatch, expected string but got float', 'E1174: String required for argument 1')
3151 CheckDefAndScriptFailure2(['term_setsize(1, "2", 3)'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2')
3152 CheckDefAndScriptFailure2(['term_setsize(1, 2, "3")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3')
3153 enddef
3154
3130 def Test_term_start() 3155 def Test_term_start()
3131 if !has('terminal') 3156 if !has('terminal')
3132 CheckFeature terminal 3157 CheckFeature terminal
3133 else 3158 else
3134 botright new 3159 botright new
3135 var winnr = winnr() 3160 var winnr = winnr()
3136 term_start(&shell, {curwin: true}) 3161 term_start(&shell, {curwin: true})
3137 winnr()->assert_equal(winnr) 3162 winnr()->assert_equal(winnr)
3138 bwipe! 3163 bwipe!
3139 endif 3164 endif
3165 CheckDefAndScriptFailure2(['term_start({})'], 'E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 1')
3166 CheckDefAndScriptFailure2(['term_start([], [])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2')
3167 CheckDefAndScriptFailure2(['term_start("", "")'], 'E1013: Argument 2: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 2')
3140 enddef 3168 enddef
3141 3169
3142 def Test_term_wait() 3170 def Test_term_wait()
3143 CheckRunVimInTerminal 3171 CheckRunVimInTerminal
3144 CheckDefAndScriptFailure2(['term_wait(0z10, 1)'], 'E1013: Argument 1: type mismatch, expected string but got blob', 'E1174: String required for argument 1') 3172 CheckDefAndScriptFailure2(['term_wait(0z10, 1)'], 'E1013: Argument 1: type mismatch, expected string but got blob', 'E1174: String required for argument 1')