changeset 27112:60df9f2679a6 v8.2.4085

patch 8.2.4085: Vim9: no test for using import in legacy script Commit: https://github.com/vim/vim/commit/c43e6235c7b3e64f81c6a4e294e4e47abf7a869a Author: Bram Moolenaar <Bram@vim.org> Date: Thu Jan 13 20:51:56 2022 +0000 patch 8.2.4085: Vim9: no test for using import in legacy script Problem: Vim9: no test for using import in legacy script. Solution: Add a test.
author Bram Moolenaar <Bram@vim.org>
date Thu, 13 Jan 2022 22:00:05 +0100
parents b0044a5ce6d9
children 93194ce58678
files src/testdir/test_vim9_import.vim src/version.c
diffstat 2 files changed, 40 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/src/testdir/test_vim9_import.vim
+++ b/src/testdir/test_vim9_import.vim
@@ -1006,16 +1006,6 @@ def Test_source_vim9_from_legacy()
     call assert_false(exists('s:exported'))
     call assert_equal('global', global)
     call assert_equal('global', g:global)
-
-    "" imported variable becomes script-local
-    "import exported from './Xvim9_script.vim'
-    "call assert_equal('exported', s:exported)
-    "call assert_false(exists('exported'))
-
-    "" imported function becomes script-local
-    "import GetText from './Xvim9_script.vim'
-    "call assert_equal('text', s:GetText())
-    "call assert_false(exists('*GetText'))
   END
   writefile(legacy_lines, 'Xlegacy_script.vim')
 
@@ -1027,6 +1017,44 @@ def Test_source_vim9_from_legacy()
   delete('Xvim9_script.vim')
 enddef
 
+def Test_import_vim9_from_legacy()
+  var vim9_lines =<< trim END
+    vim9script
+    var local = 'local'
+    g:global = 'global'
+    export var exported = 'exported'
+    export def GetText(): string
+       return 'text'
+    enddef
+  END
+  writefile(vim9_lines, 'Xvim9_export.vim')
+
+  var legacy_lines =<< trim END
+    import './Xvim9_export.vim' as vim9
+
+    call assert_false(exists('vim9'))
+    call assert_false(exists('local'))
+    call assert_false(exists('s:vim9.local'))
+    call assert_equal('global', global)
+    call assert_equal('global', g:global)
+    call assert_false(exists('exported'))
+    call assert_false(exists('s:exported'))
+    call assert_false(exists('*GetText'))
+
+    " imported symbol is script-local
+    call assert_equal('exported', s:vim9.exported)
+    call assert_equal('text', s:vim9.GetText())
+  END
+  writefile(legacy_lines, 'Xlegacy_script.vim')
+
+  source Xlegacy_script.vim
+  assert_equal('global', g:global)
+  unlet g:global
+
+  delete('Xlegacy_script.vim')
+  delete('Xvim9_export.vim')
+enddef
+
 def Test_cmdline_win()
   # if the Vim syntax highlighting uses Vim9 constructs they can be used from
   # the command line window.
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    4085,
+/**/
     4084,
 /**/
     4083,