patch 9.0.1431: getscriptinfo() loops even when specific SID is given
Problem: getscriptinfo() loops even when specific SID is given.
Solution: Only loop when needed. Give a clearer error message.
(closes #12207)
diff --git a/src/testdir/test_scriptnames.vim b/src/testdir/test_scriptnames.vim
index 3f81349..a5b38ea 100644
--- a/src/testdir/test_scriptnames.vim
+++ b/src/testdir/test_scriptnames.vim
@@ -91,6 +91,16 @@
call assert_fails("echo getscriptinfo('foobar')", 'E1206:')
call assert_fails("echo getscriptinfo({'sid': []})", 'E745:')
+ call assert_fails("echo getscriptinfo({'sid': {}})", 'E728:')
+ call assert_fails("echo getscriptinfo({'sid': 0})", 'E475:')
+ call assert_fails("echo getscriptinfo({'sid': -1})", 'E475:')
+ call assert_fails("echo getscriptinfo({'sid': -999})", 'E475:')
+
+ echo getscriptinfo({'sid': '1'})
+ call assert_fails("vim9cmd echo getscriptinfo({'sid': '1'})", 'E1030:')
+
+ let max_sid = max(map(getscriptinfo(), { k, v -> v.sid }))
+ call assert_equal([], getscriptinfo({'sid': max_sid + 1}))
endfunc
" vim: shiftwidth=2 sts=2 expandtab