patch 8.2.3889: duplicate code for translating script-local function name

Problem:    Duplicate code for translating script-local function name.
Solution:   Move the code to get_scriptlocal_funcname(). (Yegappan Lakshmanan,
            closes #9393)
diff --git a/src/testdir/test_expr.vim b/src/testdir/test_expr.vim
index 99cb9a1..ba2e259 100644
--- a/src/testdir/test_expr.vim
+++ b/src/testdir/test_expr.vim
@@ -639,6 +639,21 @@
   call assert_fails('echo test_null_function()->funcref()', 'E475: Invalid argument: NULL')
 endfunc
 
+" Test for calling function() and funcref() outside of a Vim script context.
+func Test_function_outside_script()
+  let cleanup =<< trim END
+    call writefile([execute('messages')], 'Xtest.out')
+    qall
+  END
+  call writefile(cleanup, 'Xverify.vim')
+  call RunVim([], [], "-c \"echo function('s:abc')\" -S Xverify.vim")
+  call assert_match('E81: Using <SID> not in a', readfile('Xtest.out')[0])
+  call RunVim([], [], "-c \"echo funcref('s:abc')\" -S Xverify.vim")
+  call assert_match('E81: Using <SID> not in a', readfile('Xtest.out')[0])
+  call delete('Xtest.out')
+  call delete('Xverify.vim')
+endfunc
+
 func Test_setmatches()
   let lines =<< trim END
       hi def link 1 Comment