diff --git a/src/testdir/test_vim9_assign.vim b/src/testdir/test_vim9_assign.vim
index 7d3e2c1..d9b8f3a 100644
--- a/src/testdir/test_vim9_assign.vim
+++ b/src/testdir/test_vim9_assign.vim
@@ -6,6 +6,7 @@
 
 let s:appendToMe = 'xxx'
 let s:addToMe = 111
+let s:newVar = ''
 let g:existing = 'yes'
 let g:inc_counter = 1
 let $SOME_ENV_VAR = 'some'
@@ -124,12 +125,12 @@
   END
   v9.CheckScriptSuccess(lines)
 
-  s:appendToMe ..= 'yyy'
-  assert_equal('xxxyyy', s:appendToMe)
-  s:addToMe += 222
-  assert_equal(333, s:addToMe)
-  s:newVar = 'new'
-  assert_equal('new', s:newVar)
+  appendToMe ..= 'yyy'
+  assert_equal('xxxyyy', appendToMe)
+  addToMe += 222
+  assert_equal(333, addToMe)
+  newVar = 'new'
+  assert_equal('new', newVar)
 
   set ts=7
   var ts: number = &ts
@@ -1195,7 +1196,7 @@
   assert_equal(5678, nr)
 enddef
 
-let scriptvar = 'init'
+let s:scriptvar = 'init'
 
 def Test_assignment_var_list()
   var lines =<< trim END
@@ -1243,17 +1244,17 @@
   END
   v9.CheckDefAndScriptSuccess(lines)
 
-  [g:globalvar, s:scriptvar, b:bufvar] = ['global', 'script', 'buf']
+  [g:globalvar, scriptvar, b:bufvar] = ['global', 'script', 'buf']
   assert_equal('global', g:globalvar)
-  assert_equal('script', s:scriptvar)
+  assert_equal('script', scriptvar)
   assert_equal('buf', b:bufvar)
 
   lines =<< trim END
       vim9script
-      var s:scriptvar = 'init'
-      [g:globalvar, s:scriptvar, w:winvar] = ['global', 'script', 'win']
+      var scriptvar = 'init'
+      [g:globalvar, scriptvar, w:winvar] = ['global', 'script', 'win']
       assert_equal('global', g:globalvar)
-      assert_equal('script', s:scriptvar)
+      assert_equal('script', scriptvar)
       assert_equal('win', w:winvar)
   END
   v9.CheckScriptSuccess(lines)
@@ -1398,7 +1399,7 @@
   v9.CheckDefFailure(["var xnr = xnr + 1"], 'E1001:', 1)
   v9.CheckScriptFailure(['vim9script', 'var xnr = xnr + 4'], 'E121:')
 
-  v9.CheckScriptFailure(['vim9script', 'def Func()', 'var dummy = s:notfound', 'enddef', 'defcompile'], 'E1108:')
+  v9.CheckScriptFailure(['vim9script', 'def Func()', 'var dummy = notfound', 'enddef', 'defcompile'], 'E1001:')
 
   v9.CheckDefFailure(['var name: list<string> = [123]'], 'expected list<string> but got list<number>')
   v9.CheckDefFailure(['var name: list<number> = ["xx"]'], 'expected list<number> but got list<string>')
@@ -1719,9 +1720,9 @@
     g:var_uninit = name
     name = 'text'
     g:var_test = name
-    # prefixing s: is optional
-    s:name = 'prefixed'
-    g:var_prefixed = s:name
+    # prefixing s: is not allowed
+    name = 'prefixed'
+    g:var_prefixed = name
 
     const FOO: number = 123
     assert_equal(123, FOO)
@@ -1764,9 +1765,9 @@
     var xyz: string  # comment
 
     # type is inferred
-    var s:dict = {['a']: 222}
+    var dict = {['a']: 222}
     def GetDictVal(key: any)
-      g:dict_val = s:dict[key]
+      g:dict_val = dict[key]
     enddef
     GetDictVal('a')
 
@@ -1879,13 +1880,13 @@
 enddef
 
 def Test_script_local_in_legacy()
-  # OK to define script-local later when prefixed with s:
+  # OK to define script-local later but before compiling
   var lines =<< trim END
     def SetLater()
-      s:legvar = 'two'
+      legvar = 'two'
     enddef
-    defcompile
     let s:legvar = 'one'
+    defcompile
     call SetLater()
     call assert_equal('two', s:legvar)
   END
@@ -1902,7 +1903,7 @@
   END
   v9.CheckScriptSuccess(lines)
 
-  # Not OK to leave out s: prefix when script-local defined later
+  # Not OK to leave out s: prefix when script-local defined after compiling
   lines =<< trim END
     def SetLaterNoPrefix()
       legvar = 'two'
@@ -1944,15 +1945,15 @@
 
   lines =<< trim END
     vim9script
-    var s:l: list<number>
-    s:l = []
+    var l: list<number>
+    l = []
   END
   v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
     vim9script
-    var s:d: dict<number>
-    s:d = {}
+    var d: dict<number>
+    d = {}
   END
   v9.CheckScriptSuccess(lines)
 
@@ -2124,7 +2125,7 @@
    'vim9script',
    'var svar = 123',
    'unlet s:svar',
-   ], 'E1081:')
+   ], 'E1268:')
   v9.CheckScriptFailure([
    'vim9script',
    'var svar = 123',
@@ -2267,14 +2268,14 @@
 
   lines =<< trim END
       vim9script
-      var s:Len = (s: string): number => len(s) + 2
+      var Len = (s: string): number => len(s) + 2
       assert_equal(6, Len('asdf'))
   END
   v9.CheckScriptSuccess(lines)
 
   lines =<< trim END
       vim9script
-      var s:len = (s: string): number => len(s) + 1
+      var len = (s: string): number => len(s) + 1
   END
   v9.CheckScriptFailure(lines, 'E704:')
 enddef
diff --git a/src/testdir/test_vim9_builtin.vim b/src/testdir/test_vim9_builtin.vim
index 3ad6e0e..23b9c49 100644
--- a/src/testdir/test_vim9_builtin.vim
+++ b/src/testdir/test_vim9_builtin.vim
@@ -2001,9 +2001,9 @@
   v9.CheckDefExecAndScriptFailure(lines, 'E1131:', 1)
 
   assert_equal([1, 2, 3], insert([2, 3], 1))
-  assert_equal([1, 2, 3], insert([2, 3], s:number_one))
+  assert_equal([1, 2, 3], insert([2, 3], number_one))
   assert_equal([1, 2, 3], insert([1, 2], 3, 2))
-  assert_equal([1, 2, 3], insert([1, 2], 3, s:number_two))
+  assert_equal([1, 2, 3], insert([1, 2], 3, number_two))
   assert_equal(['a', 'b', 'c'], insert(['b', 'c'], 'a'))
   assert_equal(0z1234, insert(0z34, 0x12))
 
diff --git a/src/testdir/test_vim9_cmd.vim b/src/testdir/test_vim9_cmd.vim
index a9309be..e7cdcc3 100644
--- a/src/testdir/test_vim9_cmd.vim
+++ b/src/testdir/test_vim9_cmd.vim
@@ -1718,7 +1718,12 @@
   lines =<< trim END
       s:notexist:repl
   END
-  v9.CheckDefAndScriptFailure(lines, ['E488: Trailing characters: :repl', 'E121: Undefined variable: s:notexist'], 1)
+  v9.CheckDefAndScriptFailure(lines, ['E488: Trailing characters: :repl', 'E1268:'], 1)
+
+  lines =<< trim END
+      notexist:repl
+  END
+  v9.CheckDefAndScriptFailure(lines, ['E476:', 'E492:'], 1)
 
   lines =<< trim END
       s-pat-repl
diff --git a/src/testdir/test_vim9_disassemble.vim b/src/testdir/test_vim9_disassemble.vim
index 1e61853..ec71836 100644
--- a/src/testdir/test_vim9_disassemble.vim
+++ b/src/testdir/test_vim9_disassemble.vim
@@ -300,11 +300,11 @@
       vim9script
       import autoload 'autoscript.vim'
 
-      def s:AutoloadFunc()
+      def AutoloadFunc()
         &operatorfunc = autoscript.Opfunc
       enddef
 
-      var res = execute('disass s:AutoloadFunc')
+      var res = execute('disass AutoloadFunc')
       assert_match('<SNR>\d*_AutoloadFunc.*' ..
             '&operatorfunc = autoscript.Opfunc\_s*' ..
             '0 AUTOLOAD autoscript#Opfunc\_s*' ..
diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim
index 87b8014..8399b69 100644
--- a/src/testdir/test_vim9_expr.vim
+++ b/src/testdir/test_vim9_expr.vim
@@ -2329,7 +2329,7 @@
   v9.CheckDefAndScriptSuccess(lines)
 enddef
 
-def Test_expr8_funcref()
+def Test_expr8funcref()
   var lines =<< trim END
       def RetNumber(): number
         return 123
@@ -2344,7 +2344,7 @@
       func g:GlobalFunc()
         return 'global'
       endfunc
-      func s:ScriptFunc()
+      func ScriptFunc()
         return 'script'
       endfunc
       def Test()
@@ -2353,7 +2353,7 @@
         Ref = g:GlobalFunc
         assert_equal('global', Ref())
 
-        Ref = s:ScriptFunc
+        Ref = ScriptFunc
         assert_equal('script', Ref())
         Ref = ScriptFunc
         assert_equal('script', Ref())
@@ -3347,7 +3347,7 @@
   call v9.CheckDefAndScriptFailure(["var x = &notexist"], 'E113:', 1)
   call v9.CheckDefAndScriptFailure(["&grepprg = [343]"], ['E1012:', 'E730:'], 1)
 
-  call v9.CheckDefExecAndScriptFailure(["echo s:doesnt_exist"], 'E121:', 1)
+  call v9.CheckDefExecAndScriptFailure(["echo s:doesnt_exist"], ['E121:', 'E1268:'], 1)
   call v9.CheckDefExecAndScriptFailure(["echo g:doesnt_exist"], 'E121:', 1)
 
   call v9.CheckDefAndScriptFailure(["echo a:somevar"], ['E1075:', 'E121:'], 1)
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index 46e562d..ecc9c64 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -713,7 +713,7 @@
 
   lines =<< trim END
       vim9script
-      def s:_Func()
+      def _Func()
         echo 'bad'
       enddef
   END
@@ -930,7 +930,7 @@
       def g:Funcy()
         echo 'funcy'
       enddef
-      s:Funcy()
+      Funcy()
   END
   v9.CheckScriptFailure(lines, 'E117:')
 enddef
@@ -1441,10 +1441,10 @@
 def Test_use_script_func_name_with_prefix()
   var lines =<< trim END
       vim9script
-      func s:Getit()
+      func g:Getit()
         return 'it'
       endfunc
-      var Fn = s:Getit
+      var Fn = g:Getit
       assert_equal('it', Fn())
   END
   v9.CheckScriptSuccess(lines)
@@ -2849,7 +2849,7 @@
   lines =<< trim END
       vim9script
 
-      def s:Func()
+      def Func()
         range(10)
           ->mapnew((_, _) => ({
             key: range(10)->mapnew((_, _) => {
@@ -3168,7 +3168,7 @@
       vim9script
       def s: list<string>
   END
-  v9.CheckScriptFailure(lines, 'E129:')
+  v9.CheckScriptFailure(lines, 'E1268:')
 
   lines =<< trim END
       vim9script
diff --git a/src/testdir/test_vim9_import.vim b/src/testdir/test_vim9_import.vim
index 652e4d3..45f64b2 100644
--- a/src/testdir/test_vim9_import.vim
+++ b/src/testdir/test_vim9_import.vim
@@ -1124,7 +1124,7 @@
   lines =<< trim END
     vim9script noclear
     g:loadCount += 1
-    var s:reloaded = 'init'
+    var reloaded = 'init'
     import './XExportReload' as exp
 
     def Again(): string
@@ -1133,13 +1133,13 @@
 
     exp.TheFunc()
 
-    if exists('s:loaded') | finish | endif
-    var s:loaded = true
+    if exists('loaded') | finish | endif
+    var loaded = true
 
-    var s:notReloaded = 'yes'
-    s:reloaded = 'first'
+    var notReloaded = 'yes'
+    reloaded = 'first'
     def g:Values(): list<string>
-      return [s:reloaded, s:notReloaded, Again(), Once(), exp.exported]
+      return [reloaded, notReloaded, Again(), Once(), exp.exported]
     enddef
 
     def Once(): string
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index 1b77f39..eec19d9 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -69,7 +69,10 @@
       'func CheckMe()',
       '  return 123',
       'endfunc',
-      'assert_equal(123, s:CheckMe())',
+      'func DoTest()',
+      '  call assert_equal(123, s:CheckMe())',
+      'endfunc',
+      'DoTest()',
       ])
 
   # Check function in script namespace cannot be deleted
@@ -178,11 +181,55 @@
   v9.CheckDefFailure(['var Ref: string', 'var res = Ref()'], 'E1085:')
 enddef
 
+def Test_script_namespace()
+  # defining a function or variable with s: is not allowed
+  var lines =<< trim END
+      vim9script
+      def s:Function()
+      enddef
+  END
+  v9.CheckScriptFailure(lines, 'E1268:')
+
+  for decl in ['var', 'const', 'final']
+    lines =<< trim END
+        vim9script
+        var s:var = 'var'
+    END
+    v9.CheckScriptFailure([
+        'vim9script',
+        decl .. ' s:var = "var"',
+        ], 'E1268:')
+  endfor
+
+  # Calling a function or using a variable with s: is not allowed at script
+  # level
+  lines =<< trim END
+      vim9script
+      def Function()
+      enddef
+      s:Function()
+  END
+  v9.CheckScriptFailure(lines, 'E1268:')
+  lines =<< trim END
+      vim9script
+      def Function()
+      enddef
+      call s:Function()
+  END
+  v9.CheckScriptFailure(lines, 'E1268:')
+  lines =<< trim END
+      vim9script
+      var var = 'var'
+      echo s:var
+  END
+  v9.CheckScriptFailure(lines, 'E1268:')
+enddef
+
 def Test_script_wrong_type()
   var lines =<< trim END
       vim9script
-      var s:dict: dict<string>
-      s:dict['a'] = ['x']
+      var dict: dict<string>
+      dict['a'] = ['x']
   END
   v9.CheckScriptFailure(lines, 'E1012: Type mismatch; expected string but got list<string>', 3)
 enddef
diff --git a/src/testdir/vim9.vim b/src/testdir/vim9.vim
index 92ea0ba..bb50db0 100644
--- a/src/testdir/vim9.vim
+++ b/src/testdir/vim9.vim
@@ -73,8 +73,8 @@
 
 export def CheckScriptFailure(lines: list<string>, error: string, lnum = -3)
   var cwd = getcwd()
-  var fname = 'XScriptFailure' .. s:sequence
-  s:sequence += 1
+  var fname = 'XScriptFailure' .. sequence
+  sequence += 1
   writefile(lines, fname)
   try
     assert_fails('so ' .. fname, error, lines, lnum)
@@ -86,8 +86,8 @@
 
 export def CheckScriptFailureList(lines: list<string>, errors: list<string>, lnum = -3)
   var cwd = getcwd()
-  var fname = 'XScriptFailure' .. s:sequence
-  s:sequence += 1
+  var fname = 'XScriptFailure' .. sequence
+  sequence += 1
   writefile(lines, fname)
   try
     assert_fails('so ' .. fname, errors, lines, lnum)
@@ -99,8 +99,8 @@
 
 export def CheckScriptSuccess(lines: list<string>)
   var cwd = getcwd()
-  var fname = 'XScriptSuccess' .. s:sequence
-  s:sequence += 1
+  var fname = 'XScriptSuccess' .. sequence
+  sequence += 1
   writefile(lines, fname)
   try
     exe 'so ' .. fname
