patch 8.2.3717: Vim9: error for constant list size is only given at runtime
Problem: Vim9: error for constant list size is only given at runtime.
Solution: Give the error at compile time if possible.
diff --git a/src/testdir/test_vim9_assign.vim b/src/testdir/test_vim9_assign.vim
index 87924c6..d191ac0 100644
--- a/src/testdir/test_vim9_assign.vim
+++ b/src/testdir/test_vim9_assign.vim
@@ -386,6 +386,27 @@
lines =<< trim END
var v1: number
var v2: number
+ [v1, v2] = [1, 2, 3]
+ END
+ CheckDefFailure(lines, 'E1093: Expected 2 items but got 3', 3)
+
+ lines =<< trim END
+ var v1: number
+ var v2: number
+ [v1, v2] = [1]
+ END
+ CheckDefFailure(lines, 'E1093: Expected 2 items but got 1', 3)
+
+ lines =<< trim END
+ var v1: number
+ var v2: number
+ [v1, v2; _] = [1]
+ END
+ CheckDefFailure(lines, 'E1093: Expected 2 items but got 1', 3)
+
+ lines =<< trim END
+ var v1: number
+ var v2: number
[v1, v2] =
END
CheckDefFailure(lines, 'E1097:', 5)
diff --git a/src/testdir/test_vim9_disassemble.vim b/src/testdir/test_vim9_disassemble.vim
index 1c6b4bb..184f557 100644
--- a/src/testdir/test_vim9_disassemble.vim
+++ b/src/testdir/test_vim9_disassemble.vim
@@ -471,7 +471,6 @@
'\d\+ PUSHNR 4\_s*' ..
'\d\+ PUSHNR 5\_s*' ..
'\d\+ NEWLIST size 2\_s*' ..
- '\d\+ CHECKLEN 2\_s*' ..
'\d\+ LOAD $0\_s*' ..
'\d\+ ITEM 0 with op\_s*' ..
'\d\+ OPNR +\_s*' ..
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index 989627f..40833c5 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -496,8 +496,9 @@
endtry
assert_equal(266, n)
+ l = [1, 2, 3]
try
- [n] = [1, 2, 3]
+ [n] = l
catch /E1093:/
n = 277
endtry
@@ -4327,7 +4328,8 @@
var x: string
var y: string
# this error should be caught with CHECKLEN
- [x, y] = ['']
+ var sl = ['']
+ [x, y] = sl
catch
g:caught = 'yes'
endtry