summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2023-01-26 20:36:56 +0000
committerBram Moolenaar <Bram@vim.org>2023-01-26 20:36:56 +0000
commit53f54e49b7152e93d09ff77406f7eb63b3b5f732 (patch)
tree81941465faecbd5e0a7f371d3e38da891c924309
parent870219c58c0804bdc55419b2e455c06ac715a835 (diff)
patch 9.0.1248: cannot export an interfacev9.0.1248
Problem: Cannot export an interface. (Ernie Rael) Solution: Add the EX_EXPORT flag to :interface. (closes #11884)
-rw-r--r--src/ex_cmds.h2
-rw-r--r--src/testdir/test_vim9_class.vim23
-rw-r--r--src/version.c2
3 files changed, 26 insertions, 1 deletions
diff --git a/src/ex_cmds.h b/src/ex_cmds.h
index 8f8efe7cc8..7e127221d7 100644
--- a/src/ex_cmds.h
+++ b/src/ex_cmds.h
@@ -758,7 +758,7 @@ EXCMD(CMD_intro, "intro", ex_intro,
EX_TRLBAR|EX_CMDWIN|EX_LOCK_OK,
ADDR_NONE),
EXCMD(CMD_interface, "interface", ex_class,
- EX_EXTRA|EX_TRLBAR|EX_CMDWIN|EX_LOCK_OK,
+ EX_EXTRA|EX_TRLBAR|EX_CMDWIN|EX_LOCK_OK|EX_EXPORT,
ADDR_NONE),
EXCMD(CMD_isearch, "isearch", ex_findpat,
EX_BANG|EX_RANGE|EX_DFLALL|EX_WHOLEFOLD|EX_EXTRA|EX_CMDWIN|EX_LOCK_OK,
diff --git a/src/testdir/test_vim9_class.vim b/src/testdir/test_vim9_class.vim
index 389213680b..5edd511a3c 100644
--- a/src/testdir/test_vim9_class.vim
+++ b/src/testdir/test_vim9_class.vim
@@ -822,6 +822,29 @@ def Test_interface_basics()
endinterface
END
v9.CheckScriptFailure(lines, 'E1345: Not a valid command in an interface: return 5')
+
+ lines =<< trim END
+ vim9script
+ export interface EnterExit
+ def Enter(): void
+ def Exit(): void
+ endinterface
+ END
+ writefile(lines, 'XdefIntf.vim', 'D')
+
+ lines =<< trim END
+ vim9script
+ import './XdefIntf.vim' as defIntf
+ export def With(ee: defIntf.EnterExit, F: func)
+ ee.Enter()
+ try
+ F()
+ finally
+ ee.Exit()
+ endtry
+ enddef
+ END
+ v9.CheckScriptSuccess(lines)
enddef
def Test_class_implements_interface()
diff --git a/src/version.c b/src/version.c
index 79f021b966..52502b525c 100644
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1248,
+/**/
1247,
/**/
1246,