diff --git a/src/eval.c b/src/eval.c
index ae89f7e..1d290bc 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -4266,7 +4266,7 @@
     for (;;)
     {
 	op = **arg;
-	if ((op != '*' || (*arg)[1] == '{') && op != '/' && op != '%')
+	if (op != '*' && op != '/' && op != '%')
 	    break;
 
 	if (evaluate)
@@ -4392,7 +4392,7 @@
  *  (expression)	nested expression
  *  [expr, expr]	List
  *  {key: val, key: val}   Dictionary
- *  *{key: val, key: val}  Dictionary with literal keys
+ *  ~{key: val, key: val}  Dictionary with literal keys
  *
  *  Also handle:
  *  ! in front		logical NOT
@@ -4577,9 +4577,9 @@
 		break;
 
     /*
-     * Dictionary: *{key: val, key: val}
+     * Dictionary: ~{key: val, key: val}
      */
-    case '*':	if ((*arg)[1] == '{')
+    case '~':	if ((*arg)[1] == '{')
 		{
 		    ++*arg;
 		    ret = dict_get_tv(arg, rettv, evaluate, TRUE);
diff --git a/src/testdir/dumps/Test_popupwin_07.dump b/src/testdir/dumps/Test_popupwin_07.dump
index 28c13cb..d5a5d05 100644
--- a/src/testdir/dumps/Test_popupwin_07.dump
+++ b/src/testdir/dumps/Test_popupwin_07.dump
@@ -6,5 +6,5 @@
 |~| @73
 |~| @52|o+0#0000001#ffd7ff255|t|h|e|r| |t|a|b| @11
 |~+0#4040ff13#ffffff0| @52|a+0#0000001#ffd7ff255| |c+0#ff404010&|o|m@1|e|n|t| +0#0000001&|l|i|n|e| @6
-|:+0#0000000#ffffff0|c|a|l@1| |p|o|p|u|p|_|m|o|v|e|(|p|o|p|u|p|w|i|n|,| |*|{|l|i|n|e|:| |7|,| |c|o|l|:| |5@1|}|)| @6|t+0#0000001#ffd7ff255|h|i|s| |l|i|n|e| |w|i|l@1| |n|o|t| |f|i
+|:+0#0000000#ffffff0| @52|t+0#0000001#ffd7ff255|h|i|s| |l|i|n|e| |w|i|l@1| |n|o|t| |f|i
 | +0#0000000#ffffff0@53|t+0#0000001#ffd7ff255| |h|e|r|e| @14
diff --git a/src/testdir/dumps/Test_popupwin_mask_2.dump b/src/testdir/dumps/Test_popupwin_mask_2.dump
index 3ae3c9d..173d40a 100644
--- a/src/testdir/dumps/Test_popupwin_mask_2.dump
+++ b/src/testdir/dumps/Test_popupwin_mask_2.dump
@@ -10,4 +10,4 @@
 |1|2|3|4|5|6|7|8|9|1|0|║+0#0000001#ffd7ff255| @10|1+0#0000000#ffffff0|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2
 |1|2|3|4|5|6|7|8|9|1|0|╚+0#0000001#ffd7ff255|═|1+0#0000000#ffffff0|2|1|═+0#0000001#ffd7ff255@4|1+0#0000000#ffffff0|6|1|7|═+0#0000001#ffd7ff255@1|╝|9+0#0000000#ffffff0|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2
 |1|2|3|4|5|6|7|8|9|1|0|1@2|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2
-|:|c|a|l@1| |p|o|p|u|p|_|m|o|v|e|(|w|i|n|i|d|b|,| |*|{|c|o|l|:| |1|2|}|)| @20|1|,|1| @10|T|o|p| 
+|:| @55|1|,|1| @10|T|o|p| 
diff --git a/src/testdir/dumps/Test_popupwin_mask_3.dump b/src/testdir/dumps/Test_popupwin_mask_3.dump
index 7bbcafc..40681fb 100644
--- a/src/testdir/dumps/Test_popupwin_mask_3.dump
+++ b/src/testdir/dumps/Test_popupwin_mask_3.dump
@@ -10,4 +10,4 @@
 |1+0#0000000#ffffff0|2|3|4|5|6|7|8|9|1|0|1@2|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|║+0#0000001#ffd7ff255| @10|2+0#0000000#ffffff0
 |1|2|3|4|5|6|7|8|9|1|0|1@2|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|╚+0#0000001#ffd7ff255|═|7+0#0000000#ffffff0|3|8|═+0#0000001#ffd7ff255@4|1+0#0000000#ffffff0|4|2
 |1|2|3|4|5|6|7|8|9|1|0|1@2|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2
-|:|c|a|l@1| |p|o|p|u|p|_|m|o|v|e|(|w|i|n|i|d|b|,| |*|{|c|o|l|:| |6|3|}|)| @20|1|,|1| @10|T|o|p| 
+|:| @55|1|,|1| @10|T|o|p| 
diff --git a/src/testdir/dumps/Test_popupwin_mask_4.dump b/src/testdir/dumps/Test_popupwin_mask_4.dump
index 9552b40..0cf44d2 100644
--- a/src/testdir/dumps/Test_popupwin_mask_4.dump
+++ b/src/testdir/dumps/Test_popupwin_mask_4.dump
@@ -10,4 +10,4 @@
 | +0#0000001#ffd7ff255@6|8+0#0000000#ffffff0|9|1|0|1@2|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2
 |═+0#0000001#ffd7ff255@4|6+0#0000000#ffffff0|7|8|9|═+0#0000001#ffd7ff255@1|╝|1+0#0000000#ffffff0@1|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2
 |1|2|3|4|5|6|7|8|9|1|0|1@2|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2
-|:|c|a|l@1| |p|o|p|u|p|_|m|o|v|e|(|w|i|n|i|d|b|,| |*|{|p|o|s|:| |'|t|o|p|r|i|g|h|t|'|,| |c|o|l|:| |1|2|}|)| @3|1|,|1| @10|T|o|p| 
+|:| @55|1|,|1| @10|T|o|p| 
diff --git a/src/testdir/dumps/Test_popupwin_mask_5.dump b/src/testdir/dumps/Test_popupwin_mask_5.dump
index 06334e1..78cc6f0 100644
--- a/src/testdir/dumps/Test_popupwin_mask_5.dump
+++ b/src/testdir/dumps/Test_popupwin_mask_5.dump
@@ -10,4 +10,4 @@
 |1|2|3|4|5|6|7|8|9|1|0|1@2|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|2|7|2|8|2|9|3|0|3|1|3|2|3@2|4|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2
 | +0&#e0e0e08@11|1+0&#ffffff0@1|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|2|6|═+0#0000001#ffd7ff255@13|X|4+0#0000000#ffffff0|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2
 |o+0&#e0e0e08|m|e| |5+0&#ffffff0|6|7|t+0&#e0e0e08| @3|1+0&#ffffff0@1|2|1|3|1|4|1|5|1|6|1|7|1|8|1|9|2|0|2|1|2@2|3|2|4|2|5|║+0#0000001#ffd7ff255| @4|2+0#0000000#ffffff0|9|3| +0#0000001#ffd7ff255@6|║|4+0#0000000#ffffff0|3|5|3|6|3|7|3|8|3|9|4|0|4|1|4|2
-|:|c|t+0&#e0e0e08|h|l+0&#ffffff0| |p|l+0&#e0e0e08|i|n|e| |m+0&#ffffff0|o|v|e|(|w|i|n|i|d|b|,| |*|{|p|o|s|:| |'|t|o|p|l|e|f|t|'|║+0#0000001#ffd7ff255| |j|u|s|t| +0#0000000#ffffff0|4|2|e+0#0000001#ffd7ff255| |l|i|n|e| |║|,+0#0000000#ffffff0|1| @10|T|o|p| 
+|:| |t+0&#e0e0e08|h| +0&#ffffff0@2|l+0&#e0e0e08|i|n|e| | +0&#ffffff0@28|║+0#0000001#ffd7ff255| |j|u|s|t| +0#0000000#ffffff0@2|e+0#0000001#ffd7ff255| |l|i|n|e| |║|,+0#0000000#ffffff0|1| @10|T|o|p| 
diff --git a/src/testdir/dumps/Test_popupwin_scroll_2.dump b/src/testdir/dumps/Test_popupwin_scroll_2.dump
index e02fe78..3b2145e 100644
--- a/src/testdir/dumps/Test_popupwin_scroll_2.dump
+++ b/src/testdir/dumps/Test_popupwin_scroll_2.dump
@@ -7,4 +7,4 @@
 |7| @31|f+0#0000001#ffd7ff255|i|v|e| @3| +0#0000000#a8a8a8255| +0&#ffffff0@32
 |8| @73
 |9| @73
-|:|c|a|l@1| |p|o|p|u|p|_|s|e|t|o|p|t|i|o|n|s|(|w|i|n|i|d|,| |*|{|f|i|r|s|t|l|i|n|e|:| |2|}|)| @10|1|,|1| @10|T|o|p| 
+|:| @55|1|,|1| @10|T|o|p| 
diff --git a/src/testdir/dumps/Test_popupwin_scroll_3.dump b/src/testdir/dumps/Test_popupwin_scroll_3.dump
index ca7a425..623d217 100644
--- a/src/testdir/dumps/Test_popupwin_scroll_3.dump
+++ b/src/testdir/dumps/Test_popupwin_scroll_3.dump
@@ -7,4 +7,4 @@
 |7| @31|n+0#0000001#ffd7ff255|i|n|e| @3| +0#0000000#0000001| +0&#ffffff0@32
 |8| @73
 |9| @73
-|:|c|a|l@1| |p|o|p|u|p|_|s|e|t|o|p|t|i|o|n|s|(|w|i|n|i|d|,| |*|{|f|i|r|s|t|l|i|n|e|:| |6|}|)| @10|1|,|1| @10|T|o|p| 
+|:| @55|1|,|1| @10|T|o|p| 
diff --git a/src/testdir/dumps/Test_popupwin_scroll_4.dump b/src/testdir/dumps/Test_popupwin_scroll_4.dump
index c243c4c..3f7f961 100644
--- a/src/testdir/dumps/Test_popupwin_scroll_4.dump
+++ b/src/testdir/dumps/Test_popupwin_scroll_4.dump
@@ -7,4 +7,4 @@
 |7| @73
 |8| @73
 |9| @73
-|:|c|a|l@1| |p|o|p|u|p|_|s|e|t|o|p|t|i|o|n|s|(|w|i|n|i|d|,| |*|{|f|i|r|s|t|l|i|n|e|:| |9|}|)| @10|1|,|1| @10|T|o|p| 
+|:| @55|1|,|1| @10|T|o|p| 
diff --git a/src/testdir/test_listdict.vim b/src/testdir/test_listdict.vim
index 56c84a2..20a31de 100644
--- a/src/testdir/test_listdict.vim
+++ b/src/testdir/test_listdict.vim
@@ -281,8 +281,11 @@
 endfunc
 
 func Test_dict_literal_keys()
-  call assert_equal({'one': 1, 'two2': 2, '3three': 3, '44': 4}, *{one: 1, two2: 2, 3three: 3, 44: 4},)
-  call assert_equal('2 3', trim(execute('echo 2 *{blue: 3}.blue')))
+  call assert_equal({'one': 1, 'two2': 2, '3three': 3, '44': 4}, ~{one: 1, two2: 2, 3three: 3, 44: 4},)
+
+  " why *{} cannot be used
+  let blue = 'blue'
+  call assert_equal('6', trim(execute('echo 2 *{blue: 3}.blue')))
 endfunc
 
 " Nasty: deepcopy() dict that refers to itself (fails when noref used)
diff --git a/src/testdir/test_popupwin.vim b/src/testdir/test_popupwin.vim
index 93302e8..1ce6b80 100644
--- a/src/testdir/test_popupwin.vim
+++ b/src/testdir/test_popupwin.vim
@@ -14,23 +14,23 @@
 	hi PopupColor1 ctermbg=lightblue
 	hi PopupColor2 ctermbg=lightcyan
 	hi Comment ctermfg=red
-	call prop_type_add('comment', *{highlight: 'Comment'})
-	let winid = popup_create('hello there', *{line: 3, col: 11, minwidth: 20, highlight: 'PopupColor1'})
-	let winid2 = popup_create(['another one', 'another two', 'another three'], *{line: 3, col: 25, minwidth: 20})
+	call prop_type_add('comment', ~{highlight: 'Comment'})
+	let winid = popup_create('hello there', ~{line: 3, col: 11, minwidth: 20, highlight: 'PopupColor1'})
+	let winid2 = popup_create(['another one', 'another two', 'another three'], ~{line: 3, col: 25, minwidth: 20})
 	call setwinvar(winid2, '&wincolor', 'PopupColor2')
   END
   call writefile(lines, 'XtestPopup')
-  let buf = RunVimInTerminal('-S XtestPopup', *{rows: 10})
+  let buf = RunVimInTerminal('-S XtestPopup', ~{rows: 10})
   call VerifyScreenDump(buf, 'Test_popupwin_01', {})
 
   " Add a tabpage
   call term_sendkeys(buf, ":tabnew\<CR>")
   call term_sendkeys(buf, ":let popupwin = popup_create(["
-	\ .. "*{text: 'other tab'},"
-	\ .. "*{text: 'a comment line', props: [*{"
+	\ .. "~{text: 'other tab'},"
+	\ .. "~{text: 'a comment line', props: [~{"
 	\ .. "col: 3, length: 7, minwidth: 20, type: 'comment'"
 	\ .. "}]},"
-	\ .. "], *{line: 4, col: 9, minwidth: 20})\<CR>")
+	\ .. "], ~{line: 4, col: 9, minwidth: 20})\<CR>")
   call VerifyScreenDump(buf, 'Test_popupwin_02', {})
 
   " switch back to first tabpage
@@ -48,7 +48,7 @@
   call term_sendkeys(buf, ":let &columns = cols\<CR>")
 
   " resize popup, show empty line at bottom
-  call term_sendkeys(buf, ":call popup_move(popupwin, *{minwidth: 15, maxwidth: 25, minheight: 3, maxheight: 5})\<CR>")
+  call term_sendkeys(buf, ":call popup_move(popupwin, ~{minwidth: 15, maxwidth: 25, minheight: 3, maxheight: 5})\<CR>")
   call term_sendkeys(buf, ":redraw\<CR>")
   call VerifyScreenDump(buf, 'Test_popupwin_05', {})
 
@@ -59,7 +59,8 @@
 
   " move popup over ruler
   call term_sendkeys(buf, ":set cmdheight=2\<CR>")
-  call term_sendkeys(buf, ":call popup_move(popupwin, *{line: 7, col: 55})\<CR>")
+  call term_sendkeys(buf, ":call popup_move(popupwin, ~{line: 7, col: 55})\<CR>")
+  call term_sendkeys(buf, ":\<CR>")
   call VerifyScreenDump(buf, 'Test_popupwin_07', {})
 
   " clear all popups after moving the cursor a bit, so that ruler is updated
@@ -83,17 +84,17 @@
   for iter in range(0, 1)
     let lines =<< trim END
 	  call setline(1, range(1, 100))
-	  call popup_create('hello border', *{line: 2, col: 3, border: []})
-	  call popup_create('hello padding', *{line: 2, col: 23, padding: []})
-	  call popup_create('hello both', *{line: 2, col: 43, border: [], padding: []})
-	  call popup_create('border TL', *{line: 6, col: 3, border: [1, 0, 0, 4]})
-	  call popup_create('paddings', *{line: 6, col: 23, padding: [1, 3, 2, 4]})
-	  call popup_create('wrapped longer text', *{line: 8, col: 55, padding: [0, 3, 0, 3], border: [0, 1, 0, 1]})
-	  call popup_create('right aligned text', *{line: 11, col: 56, wrap: 0, padding: [0, 3, 0, 3], border: [0, 1, 0, 1]})
+	  call popup_create('hello border', ~{line: 2, col: 3, border: []})
+	  call popup_create('hello padding', ~{line: 2, col: 23, padding: []})
+	  call popup_create('hello both', ~{line: 2, col: 43, border: [], padding: []})
+	  call popup_create('border TL', ~{line: 6, col: 3, border: [1, 0, 0, 4]})
+	  call popup_create('paddings', ~{line: 6, col: 23, padding: [1, 3, 2, 4]})
+	  call popup_create('wrapped longer text', ~{line: 8, col: 55, padding: [0, 3, 0, 3], border: [0, 1, 0, 1]})
+	  call popup_create('right aligned text', ~{line: 11, col: 56, wrap: 0, padding: [0, 3, 0, 3], border: [0, 1, 0, 1]})
     END
     call insert(lines, iter == 1 ? '' : 'set enc=latin1')
     call writefile(lines, 'XtestPopupBorder')
-    let buf = RunVimInTerminal('-S XtestPopupBorder', *{rows: 15})
+    let buf = RunVimInTerminal('-S XtestPopupBorder', ~{rows: 15})
     call VerifyScreenDump(buf, 'Test_popupwin_2' .. iter, {})
 
     call StopVimInTerminal(buf)
@@ -107,22 +108,22 @@
 	hi RightColor ctermbg=245
 	hi BottomColor ctermbg=240
 	hi LeftColor ctermbg=248
-	call popup_create('hello border', *{line: 2, col: 3, border: [], borderhighlight: ['BlueColor']})
-	call popup_create(['hello border', 'and more'], *{line: 2, col: 23, border: [], borderhighlight: ['TopColor', 'RightColor', 'BottomColor', 'LeftColor']})
-	call popup_create(['hello border', 'lines only'], *{line: 2, col: 43, border: [], borderhighlight: ['BlueColor'], borderchars: ['x']})
-	call popup_create(['hello border', 'with corners'], *{line: 2, col: 60, border: [], borderhighlight: ['BlueColor'], borderchars: ['x', '#']})
-	let winid = popup_create(['hello border', 'with numbers'], *{line: 6, col: 3, border: [], borderhighlight: ['BlueColor'], borderchars: ['0', '1', '2', '3', '4', '5', '6', '7']})
-	call popup_create(['hello border', 'just blanks'], *{line: 7, col: 23, border: [], borderhighlight: ['BlueColor'], borderchars: [' ']})
+	call popup_create('hello border', ~{line: 2, col: 3, border: [], borderhighlight: ['BlueColor']})
+	call popup_create(['hello border', 'and more'], ~{line: 2, col: 23, border: [], borderhighlight: ['TopColor', 'RightColor', 'BottomColor', 'LeftColor']})
+	call popup_create(['hello border', 'lines only'], ~{line: 2, col: 43, border: [], borderhighlight: ['BlueColor'], borderchars: ['x']})
+	call popup_create(['hello border', 'with corners'], ~{line: 2, col: 60, border: [], borderhighlight: ['BlueColor'], borderchars: ['x', '#']})
+	let winid = popup_create(['hello border', 'with numbers'], ~{line: 6, col: 3, border: [], borderhighlight: ['BlueColor'], borderchars: ['0', '1', '2', '3', '4', '5', '6', '7']})
+	call popup_create(['hello border', 'just blanks'], ~{line: 7, col: 23, border: [], borderhighlight: ['BlueColor'], borderchars: [' ']})
 	func MultiByte()
-	  call popup_create(['hello'], *{line: 8, col: 43, border: [], borderchars: ['─', '│', '─', '│', '┌', '┐', '┘', '└']})
+	  call popup_create(['hello'], ~{line: 8, col: 43, border: [], borderchars: ['─', '│', '─', '│', '┌', '┐', '┘', '└']})
 	endfunc
   END
   call writefile(lines, 'XtestPopupBorder')
-  let buf = RunVimInTerminal('-S XtestPopupBorder', *{rows: 12})
+  let buf = RunVimInTerminal('-S XtestPopupBorder', ~{rows: 12})
   call VerifyScreenDump(buf, 'Test_popupwin_22', {})
 
   " check that changing borderchars triggers a redraw
-  call term_sendkeys(buf, ":call popup_setoptions(winid, *{borderchars: ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']})\<CR>")
+  call term_sendkeys(buf, ":call popup_setoptions(winid, ~{borderchars: ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']})\<CR>")
   call VerifyScreenDump(buf, 'Test_popupwin_23', {})
 
   " check multi-byte border only with 'ambiwidth' single
@@ -134,7 +135,7 @@
   call StopVimInTerminal(buf)
   call delete('XtestPopupBorder')
 
-  let with_border_or_padding = *{
+  let with_border_or_padding = ~{
 	\ line: 2,
 	\ core_line: 3,
 	\ col: 3,
@@ -146,13 +147,13 @@
 	\ firstline: 1,
 	\ scrollbar: 0,
 	\ visible: 1}
-  let winid = popup_create('hello border', *{line: 2, col: 3, border: []})",
+  let winid = popup_create('hello border', ~{line: 2, col: 3, border: []})",
   call assert_equal(with_border_or_padding, popup_getpos(winid))
   let options = popup_getoptions(winid)
   call assert_equal([], options.border)
   call assert_false(has_key(options, "padding"))
 
-  let winid = popup_create('hello padding', *{line: 2, col: 3, padding: []})
+  let winid = popup_create('hello padding', ~{line: 2, col: 3, padding: []})
   let with_border_or_padding.width = 15
   let with_border_or_padding.core_width = 13
   call assert_equal(with_border_or_padding, popup_getpos(winid))
@@ -160,7 +161,7 @@
   call assert_false(has_key(options, "border"))
   call assert_equal([], options.padding)
 
-  call popup_setoptions(winid, *{
+  call popup_setoptions(winid, ~{
 	\ padding: [1, 2, 3, 4],
 	\ border: [4, 0, 7, 8],
 	\ borderhighlight: ['Top', 'Right', 'Bottom', 'Left'],
@@ -172,8 +173,8 @@
   call assert_equal(['Top', 'Right', 'Bottom', 'Left'], options.borderhighlight)
   call assert_equal(['1', '^', '2', '>', '3', 'v', '4', '<'], options.borderchars)
 
-  let winid = popup_create('hello both', *{line: 3, col: 8, border: [], padding: []})
-  call assert_equal(*{
+  let winid = popup_create('hello both', ~{line: 3, col: 8, border: [], padding: []})
+  call assert_equal(~{
 	\ line: 3,
 	\ core_line: 5,
 	\ col: 8,
@@ -202,11 +203,11 @@
 	    \ '{',
 	    \ '    printf(123);',
 	    \ '}',
-	    \], *{line: 3, col: 25, highlight: 'PopupColor'})
+	    \], ~{line: 3, col: 25, highlight: 'PopupColor'})
 	call win_execute(winid, 'set syntax=cpp')
   END
   call writefile(lines, 'XtestPopup')
-  let buf = RunVimInTerminal('-S XtestPopup', *{rows: 10})
+  let buf = RunVimInTerminal('-S XtestPopup', ~{rows: 10})
   call VerifyScreenDump(buf, 'Test_popupwin_10', {})
 
   " clean up
@@ -227,11 +228,11 @@
 	    \ '{',
 	    \ "\tprintf(567);",
 	    \ '}',
-	    \], *{line: 3, col: 21, highlight: 'PopupColor'})
+	    \], ~{line: 3, col: 21, highlight: 'PopupColor'})
 	call setbufvar(winbufnr(winid), '&syntax', 'cpp')
   END
   call writefile(lines, 'XtestPopup')
-  let buf = RunVimInTerminal('-S XtestPopup', *{rows: 10})
+  let buf = RunVimInTerminal('-S XtestPopup', ~{rows: 10})
   call VerifyScreenDump(buf, 'Test_popupwin_11', {})
 
   " clean up
@@ -248,7 +249,7 @@
 	let winid = popup_create([
 	    \ '111 222 333',
 	    \ '444 555 666',
-	    \], *{line: 3, col: 10, border: []})
+	    \], ~{line: 3, col: 10, border: []})
 	set hlsearch
 	/666
 	call matchadd('ErrorMsg', '111')
@@ -257,7 +258,7 @@
 	call win_execute(winid, "call matchadd('ErrorMsg', '555')")
   END
   call writefile(lines, 'XtestPopupMatches')
-  let buf = RunVimInTerminal('-S XtestPopupMatches', *{rows: 10})
+  let buf = RunVimInTerminal('-S XtestPopupMatches', ~{rows: 10})
   call VerifyScreenDump(buf, 'Test_popupwin_matches', {})
 
   " clean up
@@ -273,7 +274,7 @@
 	call setline(1, repeat([repeat('-', 60)], 15))
 	set so=0
 	normal 2G3|r#
-	let winid1 = popup_create(['first', 'second'], *{
+	let winid1 = popup_create(['first', 'second'], ~{
 	      \ line: 'cursor+1',
 	      \ col: 'cursor',
 	      \ pos: 'topleft',
@@ -281,7 +282,7 @@
 	      \ padding: [],
 	      \ })
 	normal 25|r@
-	let winid1 = popup_create(['First', 'SeconD'], *{
+	let winid1 = popup_create(['First', 'SeconD'], ~{
 	      \ line: 'cursor+1',
 	      \ col: 'cursor',
 	      \ pos: 'topright',
@@ -289,7 +290,7 @@
 	      \ padding: [],
 	      \ })
 	normal 9G29|r%
-	let winid1 = popup_create(['fiRSt', 'seCOnd'], *{
+	let winid1 = popup_create(['fiRSt', 'seCOnd'], ~{
 	      \ line: 'cursor-1',
 	      \ col: 'cursor',
 	      \ pos: 'botleft',
@@ -297,7 +298,7 @@
 	      \ padding: [],
 	      \ })
 	normal 51|r&
-	let winid1 = popup_create(['FIrsT', 'SEcoND'], *{
+	let winid1 = popup_create(['FIrsT', 'SEcoND'], ~{
 	      \ line: 'cursor-1',
 	      \ col: 'cursor',
 	      \ pos: 'botright',
@@ -306,7 +307,7 @@
 	      \ })
   END
   call writefile(lines, 'XtestPopupCorners')
-  let buf = RunVimInTerminal('-S XtestPopupCorners', *{rows: 12})
+  let buf = RunVimInTerminal('-S XtestPopupCorners', ~{rows: 12})
   call VerifyScreenDump(buf, 'Test_popupwin_corners', {})
 
   " clean up
@@ -320,25 +321,25 @@
   endif
   let lines =<< trim END
 	call setline(1, range(1, 20))
-	call popup_create(['1111', '222222', '33333', '44', '5', '666666', '77777', '888', '9999999999999999'], *{
+	call popup_create(['1111', '222222', '33333', '44', '5', '666666', '77777', '888', '9999999999999999'], ~{
 	      \ maxheight: 4,
 	      \ firstline: 3,
 	      \ })
   END
   call writefile(lines, 'XtestPopupFirstline')
-  let buf = RunVimInTerminal('-S XtestPopupFirstline', *{rows: 10})
+  let buf = RunVimInTerminal('-S XtestPopupFirstline', ~{rows: 10})
   call VerifyScreenDump(buf, 'Test_popupwin_firstline', {})
 
   " clean up
   call StopVimInTerminal(buf)
   call delete('XtestPopupFirstline')
 
-  let winid = popup_create(['1111', '222222', '33333', '44444'], *{
+  let winid = popup_create(['1111', '222222', '33333', '44444'], ~{
 	\ maxheight: 2,
 	\ firstline: 3,
 	\ })
   call assert_equal(3, popup_getoptions(winid).firstline)
-  call popup_setoptions(winid, *{firstline: 1})
+  call popup_setoptions(winid, ~{firstline: 1})
   call assert_equal(1, popup_getoptions(winid).firstline)
 
   call popup_close(winid)
@@ -351,7 +352,7 @@
   " create a popup that covers the command line
   let lines =<< trim END
 	call setline(1, range(1, 20))
-	let winid = popup_create(['1111', '222222', '33333'], *{
+	let winid = popup_create(['1111', '222222', '33333'], ~{
 	      \ drag: 1,
 	      \ border: [],
 	      \ line: &lines - 4,
@@ -363,7 +364,7 @@
 	map <silent> <F4> :call test_setmouse(&lines - 8, &columns / 2)<CR>
   END
   call writefile(lines, 'XtestPopupDrag')
-  let buf = RunVimInTerminal('-S XtestPopupDrag', *{rows: 10})
+  let buf = RunVimInTerminal('-S XtestPopupDrag', ~{rows: 10})
   call VerifyScreenDump(buf, 'Test_popupwin_drag_01', {})
 
   call term_sendkeys(buf, ":call Dragit()\<CR>")
@@ -381,7 +382,7 @@
   let lines =<< trim END
 	call setline(1, range(1, 20))
 	" With border, can click on X
-	let winid = popup_create('foobar', *{
+	let winid = popup_create('foobar', ~{
 	      \ close: 'button',
 	      \ border: [],
 	      \ line: 1,
@@ -390,18 +391,18 @@
 	func CloseMsg(id, result)
 	  echomsg 'Popup closed with ' .. a:result
 	endfunc
-	let winid = popup_create('notification', *{
+	let winid = popup_create('notification', ~{
 	      \ close: 'click',
 	      \ line: 3,
 	      \ col: 15,
 	      \ callback: 'CloseMsg',
 	      \ })
-	let winid = popup_create('no border here', *{
+	let winid = popup_create('no border here', ~{
 	      \ close: 'button',
 	      \ line: 5,
 	      \ col: 3,
 	      \ })
-	let winid = popup_create('only padding', *{
+	let winid = popup_create('only padding', ~{
 	      \ close: 'button',
 	      \ padding: [],
 	      \ line: 5,
@@ -417,7 +418,7 @@
 	map <silent> <F4> :call test_setmouse(3, 17)<CR>
   END
   call writefile(lines, 'XtestPopupClose')
-  let buf = RunVimInTerminal('-S XtestPopupClose', *{rows: 10})
+  let buf = RunVimInTerminal('-S XtestPopupClose', ~{rows: 10})
   call VerifyScreenDump(buf, 'Test_popupwin_close_01', {})
 
   call term_sendkeys(buf, ":call CloseWithX()\<CR>")
@@ -441,7 +442,7 @@
 	let winid = popup_create([
 	    \ 'some text',
 	    \ 'another line',
-	    \], *{
+	    \], ~{
 	    \ line: 1,
 	    \ col: 10,
 	    \ wrap: 0,
@@ -453,13 +454,13 @@
 	call popup_create([
 	    \ 'xxxxxxxxx',
 	    \ 'yyyyyyyyy',
-	    \], *{
+	    \], ~{
 	    \ line: 3,
 	    \ col: 18,
 	    \ zindex: 20})
 	let winidb = popup_create([
 	    \ 'just one line',
-	    \], *{
+	    \], ~{
 	    \ line: 7,
 	    \ col: 10,
 	    \ wrap: 0,
@@ -471,23 +472,27 @@
 	    \ mask: [[1,2,1,1], [-5,-1,4,4], [7,9,2,3], [3,5,5,5],[-7,-4,5,5]]})
   END
   call writefile(lines, 'XtestPopupMask')
-  let buf = RunVimInTerminal('-S XtestPopupMask', *{rows: 13})
+  let buf = RunVimInTerminal('-S XtestPopupMask', ~{rows: 13})
   call VerifyScreenDump(buf, 'Test_popupwin_mask_1', {})
 
-  call term_sendkeys(buf, ":call popup_move(winid, *{col: 11, line: 2})\<CR>")
-  call term_sendkeys(buf, ":call popup_move(winidb, *{col: 12})\<CR>")
+  call term_sendkeys(buf, ":call popup_move(winid, ~{col: 11, line: 2})\<CR>")
+  call term_sendkeys(buf, ":call popup_move(winidb, ~{col: 12})\<CR>")
+  call term_sendkeys(buf, ":\<CR>")
   call VerifyScreenDump(buf, 'Test_popupwin_mask_2', {})
 
-  call term_sendkeys(buf, ":call popup_move(winid, *{col: 65, line: 2})\<CR>")
-  call term_sendkeys(buf, ":call popup_move(winidb, *{col: 63})\<CR>")
+  call term_sendkeys(buf, ":call popup_move(winid, ~{col: 65, line: 2})\<CR>")
+  call term_sendkeys(buf, ":call popup_move(winidb, ~{col: 63})\<CR>")
+  call term_sendkeys(buf, ":\<CR>")
   call VerifyScreenDump(buf, 'Test_popupwin_mask_3', {})
 
-  call term_sendkeys(buf, ":call popup_move(winid, *{pos: 'topright', col: 12, line: 2})\<CR>")
-  call term_sendkeys(buf, ":call popup_move(winidb, *{pos: 'topright', col: 12})\<CR>")
+  call term_sendkeys(buf, ":call popup_move(winid, ~{pos: 'topright', col: 12, line: 2})\<CR>")
+  call term_sendkeys(buf, ":call popup_move(winidb, ~{pos: 'topright', col: 12})\<CR>")
+  call term_sendkeys(buf, ":\<CR>")
   call VerifyScreenDump(buf, 'Test_popupwin_mask_4', {})
 
-  call term_sendkeys(buf, ":call popup_move(winid, *{pos: 'topright', col: 12, line: 11})\<CR>")
-  call term_sendkeys(buf, ":call popup_move(winidb, *{pos: 'topleft', col: 42, line: 11})\<CR>")
+  call term_sendkeys(buf, ":call popup_move(winid, ~{pos: 'topright', col: 12, line: 11})\<CR>")
+  call term_sendkeys(buf, ":call popup_move(winidb, ~{pos: 'topleft', col: 42, line: 11})\<CR>")
+  call term_sendkeys(buf, ":\<CR>")
   call VerifyScreenDump(buf, 'Test_popupwin_mask_5', {})
 
   " clean up
@@ -506,7 +511,7 @@
   let lines =<< trim END
     set clipboard=autoselect
     call setline(1, range(1, 20))
-    let winid = popup_create(['the word', 'some more', 'several words here'], *{
+    let winid = popup_create(['the word', 'some more', 'several words here'], ~{
 	  \ drag: 1,
 	  \ border: [],
 	  \ line: 3,
@@ -519,7 +524,7 @@
     map <silent> <F4> :call test_setmouse(6, 23)<CR>
   END
   call writefile(lines, 'XtestPopupSelect')
-  let buf = RunVimInTerminal('-S XtestPopupSelect', *{rows: 10})
+  let buf = RunVimInTerminal('-S XtestPopupSelect', ~{rows: 10})
   call term_sendkeys(buf, ":call Select1()\<CR>")
   call VerifyScreenDump(buf, 'Test_popupwin_select_01', {})
 
@@ -553,7 +558,7 @@
   call assert_equal(0, bufexists(bufnr))
 
   " global popup is visible in any tab
-  let winid = popup_create("text", *{tabpage: -1})
+  let winid = popup_create("text", ~{tabpage: -1})
   call assert_equal(1, popup_getpos(winid).visible)
   call assert_equal(-1, popup_getoptions(winid).tabpage)
   tabnew
@@ -565,7 +570,7 @@
 
   " create popup in other tab
   tabnew
-  let winid = popup_create("text", *{tabpage: 1})
+  let winid = popup_create("text", ~{tabpage: 1})
   call assert_equal(0, popup_getpos(winid).visible)
   call assert_equal(1, popup_getoptions(winid).tabpage)
   quit
@@ -576,19 +581,19 @@
 
 func Test_popup_valid_arguments()
   " Zero value is like the property wasn't there
-  let winid = popup_create("text", *{col: 0})
+  let winid = popup_create("text", ~{col: 0})
   let pos = popup_getpos(winid)
   call assert_inrange(&columns / 2 - 1, &columns / 2 + 1, pos.col)
   call popup_clear()
 
   " using cursor column has minimum value of 1
-  let winid = popup_create("text", *{col: 'cursor-100'})
+  let winid = popup_create("text", ~{col: 'cursor-100'})
   let pos = popup_getpos(winid)
   call assert_equal(1, pos.col)
   call popup_clear()
 
   " center
-  let winid = popup_create("text", *{pos: 'center'})
+  let winid = popup_create("text", ~{pos: 'center'})
   let pos = popup_getpos(winid)
   let around = (&columns - pos.width) / 2
   call assert_inrange(around - 1, around + 1, pos.col)
@@ -603,40 +608,40 @@
   call assert_fails('call popup_create("text", "none")', 'E715:')
   call popup_clear()
 
-  call assert_fails('call popup_create("text", *{col: "xxx"})', 'E475:')
+  call assert_fails('call popup_create("text", ~{col: "xxx"})', 'E475:')
   call popup_clear()
-  call assert_fails('call popup_create("text", *{col: "cursor8"})', 'E15:')
+  call assert_fails('call popup_create("text", ~{col: "cursor8"})', 'E15:')
   call popup_clear()
-  call assert_fails('call popup_create("text", *{col: "cursor+x"})', 'E15:')
+  call assert_fails('call popup_create("text", ~{col: "cursor+x"})', 'E15:')
   call popup_clear()
-  call assert_fails('call popup_create("text", *{col: "cursor+8x"})', 'E15:')
+  call assert_fails('call popup_create("text", ~{col: "cursor+8x"})', 'E15:')
   call popup_clear()
 
-  call assert_fails('call popup_create("text", *{line: "xxx"})', 'E475:')
+  call assert_fails('call popup_create("text", ~{line: "xxx"})', 'E475:')
   call popup_clear()
-  call assert_fails('call popup_create("text", *{line: "cursor8"})', 'E15:')
+  call assert_fails('call popup_create("text", ~{line: "cursor8"})', 'E15:')
   call popup_clear()
-  call assert_fails('call popup_create("text", *{line: "cursor+x"})', 'E15:')
+  call assert_fails('call popup_create("text", ~{line: "cursor+x"})', 'E15:')
   call popup_clear()
-  call assert_fails('call popup_create("text", *{line: "cursor+8x"})', 'E15:')
+  call assert_fails('call popup_create("text", ~{line: "cursor+8x"})', 'E15:')
   call popup_clear()
 
-  call assert_fails('call popup_create("text", *{pos: "there"})', 'E475:')
+  call assert_fails('call popup_create("text", ~{pos: "there"})', 'E475:')
   call popup_clear()
-  call assert_fails('call popup_create("text", *{padding: "none"})', 'E714:')
+  call assert_fails('call popup_create("text", ~{padding: "none"})', 'E714:')
   call popup_clear()
-  call assert_fails('call popup_create("text", *{border: "none"})', 'E714:')
+  call assert_fails('call popup_create("text", ~{border: "none"})', 'E714:')
   call popup_clear()
-  call assert_fails('call popup_create("text", *{borderhighlight: "none"})', 'E714:')
+  call assert_fails('call popup_create("text", ~{borderhighlight: "none"})', 'E714:')
   call popup_clear()
-  call assert_fails('call popup_create("text", *{borderchars: "none"})', 'E714:')
+  call assert_fails('call popup_create("text", ~{borderchars: "none"})', 'E714:')
   call popup_clear()
 
-  call assert_fails('call popup_create([*{text: "text"}, 666], {})', 'E715:')
+  call assert_fails('call popup_create([~{text: "text"}, 666], {})', 'E715:')
   call popup_clear()
-  call assert_fails('call popup_create([*{text: "text", props: "none"}], {})', 'E714:')
+  call assert_fails('call popup_create([~{text: "text", props: "none"}], {})', 'E714:')
   call popup_clear()
-  call assert_fails('call popup_create([*{text: "text", props: ["none"]}], {})', 'E715:')
+  call assert_fails('call popup_create([~{text: "text", props: ["none"]}], {})', 'E715:')
   call popup_clear()
 endfunc
 
@@ -676,10 +681,10 @@
 	 call setline(1, range(1, 100))
 	 let winid = popup_create(
 	   \ 'a long line that wont fit',
-	   \ *{line: 3, col: 20, maxwidth: 10, wrap: 1})
+	   \ ~{line: 3, col: 20, maxwidth: 10, wrap: 1})
   END
   call writefile(lines, 'XtestPopup')
-  let buf = RunVimInTerminal('-S XtestPopup', *{rows: 10})
+  let buf = RunVimInTerminal('-S XtestPopup', ~{rows: 10})
   call VerifyScreenDump(buf, 'Test_popupwin_wrap', {})
 
   " clean up
@@ -695,10 +700,10 @@
 	 call setline(1, range(1, 100))
 	 let winid = popup_create(
 	   \ 'a long line that wont fit',
-	   \ *{line: 3, col: 20, maxwidth: 10, wrap: 0})
+	   \ ~{line: 3, col: 20, maxwidth: 10, wrap: 0})
   END
   call writefile(lines, 'XtestPopup')
-  let buf = RunVimInTerminal('-S XtestPopup', *{rows: 10})
+  let buf = RunVimInTerminal('-S XtestPopup', ~{rows: 10})
   call VerifyScreenDump(buf, 'Test_popupwin_nowrap', {})
 
   " clean up
@@ -713,7 +718,7 @@
   topleft vnew
   call setline(1, 'hello')
 
-  let winid = popup_create('world', *{
+  let winid = popup_create('world', ~{
 	\ line: 1,
 	\ col: 1,
 	\ minwidth: 20,
@@ -733,7 +738,7 @@
   let line = join(map(range(1, 5), 'screenstring(1, v:val)'), '')
   call assert_equal('hello', line)
 
-  call popup_create('on the command line', *{
+  call popup_create('on the command line', ~{
 	\ line: &lines,
 	\ col: 10,
 	\ minwidth: 20,
@@ -755,7 +760,7 @@
   topleft vnew
   call setline(1, 'hello')
 
-  let winid = popup_create('world', *{
+  let winid = popup_create('world', ~{
 	\ line: 1,
 	\ col: 1,
 	\ minwidth: 20,
@@ -801,7 +806,7 @@
   topleft vnew
   call setline(1, 'hello')
 
-  let winid = popup_create('world', *{
+  let winid = popup_create('world', ~{
 	\ line: 1,
 	\ col: 1,
 	\ minwidth: 20,
@@ -810,14 +815,14 @@
   let line = join(map(range(1, 6), 'screenstring(1, v:val)'), '')
   call assert_equal('world ', line)
 
-  call popup_move(winid, *{line: 2, col: 2})
+  call popup_move(winid, ~{line: 2, col: 2})
   redraw
   let line = join(map(range(1, 6), 'screenstring(1, v:val)'), '')
   call assert_equal('hello ', line)
   let line = join(map(range(1, 6), 'screenstring(2, v:val)'), '')
   call assert_equal('~world', line)
 
-  call popup_move(winid, *{line: 1})
+  call popup_move(winid, ~{line: 1})
   redraw
   let line = join(map(range(1, 6), 'screenstring(1, v:val)'), '')
   call assert_equal('hworld', line)
@@ -828,7 +833,7 @@
 endfunc
 
 func Test_popup_getpos()
-  let winid = popup_create('hello', *{
+  let winid = popup_create('hello', ~{
     \ line: 2,
     \ col: 3,
     \ minwidth: 10,
@@ -855,7 +860,7 @@
 	\ ]
 
   for test in tests
-    let winid = popup_create(test[0], *{line: 2, col: 3})
+    let winid = popup_create(test[0], ~{line: 2, col: 3})
     redraw
     let position = popup_getpos(winid)
     call assert_equal(test[1], position.width)
@@ -871,7 +876,7 @@
 	\ ]
   for test in tests
     let winid = popup_create(test[0],
-	  \ *{line: 2, col: 3, maxwidth: 12})
+	  \ ~{line: 2, col: 3, maxwidth: 12})
     redraw
     let position = popup_getpos(winid)
     call assert_equal(test[1], position.width)
@@ -883,7 +888,7 @@
 endfunc
 
 func Test_popup_getoptions()
-  let winid = popup_create('hello', *{
+  let winid = popup_create('hello', ~{
     \ line: 2,
     \ col: 3,
     \ minwidth: 10,
@@ -976,7 +981,7 @@
 
   call cursor(1, 1)
   redraw
-  let winid = popup_create('vim', *{
+  let winid = popup_create('vim', ~{
         \ line: 'cursor+2',
         \ col: 'cursor+1',
         \})
@@ -987,7 +992,7 @@
 
   call cursor(3, 3)
   redraw
-  let winid = popup_create('vim', *{
+  let winid = popup_create('vim', ~{
         \ line: 'cursor-2',
         \ col: 'cursor-1',
         \})
@@ -1056,7 +1061,7 @@
 	endfunc
   END
   call writefile(lines, 'XtestPopupBeval')
-  let buf = RunVimInTerminal('-S XtestPopupBeval', *{rows: 10})
+  let buf = RunVimInTerminal('-S XtestPopupBeval', ~{rows: 10})
   call term_wait(buf, 100)
   call term_sendkeys(buf, 'j')
   call term_sendkeys(buf, ":call Hover()\<CR>")
@@ -1093,7 +1098,7 @@
     return 0
   endfunc
 
-  let winid = popup_create('something', *{filter: 'MyPopupFilter'})
+  let winid = popup_create('something', ~{filter: 'MyPopupFilter'})
   redraw
 
   " e is consumed by the filter
@@ -1118,7 +1123,7 @@
 
 func ShowDialog(key, result)
   let s:cb_res = 999
-  let winid = popup_dialog('do you want to quit (Yes/no)?', *{
+  let winid = popup_dialog('do you want to quit (Yes/no)?', ~{
 	  \ filter: 'popup_filter_yesno',
 	  \ callback: 'QuitCallback',
 	  \ })
@@ -1148,7 +1153,7 @@
 
 func ShowMenu(key, result)
   let s:cb_res = 999
-  let winid = popup_menu(['one', 'two', 'something else'], *{
+  let winid = popup_menu(['one', 'two', 'something else'], ~{
 	  \ callback: 'QuitCallback',
 	  \ })
   redraw
@@ -1184,13 +1189,13 @@
   let lines =<< trim END
 	call setline(1, range(1, 20))
 	hi PopupSelected ctermbg=lightblue
-	call popup_menu(['one', 'two', 'another'], *{callback: 'MenuDone', title: ' make a choice from the list '})
+	call popup_menu(['one', 'two', 'another'], ~{callback: 'MenuDone', title: ' make a choice from the list '})
 	func MenuDone(id, res)
 	  echomsg "selected " .. a:res
 	endfunc
   END
   call writefile(lines, 'XtestPopupMenu')
-  let buf = RunVimInTerminal('-S XtestPopupMenu', *{rows: 10})
+  let buf = RunVimInTerminal('-S XtestPopupMenu', ~{rows: 10})
   call VerifyScreenDump(buf, 'Test_popupwin_menu_01', {})
 
   call term_sendkeys(buf, "jj")
@@ -1213,19 +1218,19 @@
   " put the title on.
   let lines =<< trim END
 	call setline(1, range(1, 20))
-	call popup_create(['one', 'two', 'another'], *{title: 'Title String'})
+	call popup_create(['one', 'two', 'another'], ~{title: 'Title String'})
   END
   call writefile(lines, 'XtestPopupTitle')
-  let buf = RunVimInTerminal('-S XtestPopupTitle', *{rows: 10})
+  let buf = RunVimInTerminal('-S XtestPopupTitle', ~{rows: 10})
   call VerifyScreenDump(buf, 'Test_popupwin_title', {})
 
   " clean up
   call StopVimInTerminal(buf)
   call delete('XtestPopupTitle')
 
-  let winid = popup_create('something', *{title: 'Some Title'})
+  let winid = popup_create('something', ~{title: 'Some Title'})
   call assert_equal('Some Title', popup_getoptions(winid).title)
-  call popup_setoptions(winid, *{title: 'Another Title'})
+  call popup_setoptions(winid, ~{title: 'Another Title'})
   call assert_equal('Another Title', popup_getoptions(winid).title)
 
   call popup_clear()
@@ -1235,20 +1240,20 @@
   func PopupDone(id, result)
     let g:result = a:result
   endfunc
-  let winid = popup_create('something', *{callback: 'PopupDone'})
+  let winid = popup_create('something', ~{callback: 'PopupDone'})
   redraw
   call popup_close(winid, 'done')
   call assert_equal('done', g:result)
 endfunc
 
 func Test_popup_empty()
-  let winid = popup_create('', *{padding: [2,2,2,2]})
+  let winid = popup_create('', ~{padding: [2,2,2,2]})
   redraw
   let pos = popup_getpos(winid)
   call assert_equal(5, pos.width)
   call assert_equal(5, pos.height)
 
-  let winid = popup_create([], *{border: []})
+  let winid = popup_create([], ~{border: []})
   redraw
   let pos = popup_getpos(winid)
   call assert_equal(3, pos.width)
@@ -1277,13 +1282,13 @@
     let info_window1 = getwininfo()[0]
     let line = info_window1['height']
     let col = info_window1['width']
-    call popup_create(['line1', 'line2', 'line3', 'line4'], *{
+    call popup_create(['line1', 'line2', 'line3', 'line4'], ~{
 	      \   line : line,
 	      \   col : col,
 	      \ })
   END
   call writefile(lines, 'XtestPopupBehind')
-  let buf = RunVimInTerminal('-S XtestPopupBehind', *{rows: 10})
+  let buf = RunVimInTerminal('-S XtestPopupBehind', ~{rows: 10})
   call term_sendkeys(buf, "\<C-W>w")
   call VerifyScreenDump(buf, 'Test_popupwin_behind', {})
 
@@ -1340,9 +1345,9 @@
   "     - expected width
   "     - expected height
   let tests = [
-        \ *{
+        \ ~{
         \   comment: 'left-aligned with wrapping',
-        \   options: *{
+        \   options: ~{
         \     wrap: 1,
         \     pos: 'botleft',
         \   },
@@ -1354,9 +1359,9 @@
         \       [ 'eeee', 5, &columns - 3,    5, &columns - 3, 4, 1 ],
         \   ],
         \ },
-        \ *{
+        \ ~{
         \   comment: 'left aligned without wrapping',
-        \   options: *{
+        \   options: ~{
         \     wrap: 0,
         \     pos: 'botleft',
         \   },
@@ -1368,9 +1373,9 @@
         \       [ 'eeee', 5, &columns - 3,    5, &columns - 3, 4, 1 ],
         \   ],
         \ },
-        \ *{
+        \ ~{
         \   comment: 'left aligned with fixed position',
-        \   options: *{
+        \   options: ~{
         \     wrap: 0,
         \     fixed: 1,
         \     pos: 'botleft',
@@ -1388,7 +1393,7 @@
   for test_group in tests
     for test in test_group.tests
       let [ text, line, col, e_line, e_col, e_width, e_height ] = test
-      let options = *{
+      let options = ~{
             \ line: line,
             \ col: col,
             \ }
@@ -1396,7 +1401,7 @@
 
       let p = popup_create( text, options )
 
-      let msg = string(extend(options, *{text: text}))
+      let msg = string(extend(options, ~{text: text}))
       call s:VerifyPosition(p, msg, e_line, e_col, e_width, e_height)
       call popup_close(p)
     endfor
@@ -1410,7 +1415,7 @@
   " width of screen
   let X = join(map(range(&columns), {->'X'}), '')
 
-  let p = popup_create( X, *{line: 1, col: 1, wrap: 0})
+  let p = popup_create( X, ~{line: 1, col: 1, wrap: 0})
   call s:VerifyPosition( p, 'full width topleft', 1, 1, &columns, 1 )
 
   redraw
@@ -1421,7 +1426,7 @@
   redraw
 
   " Same if placed on the right hand side
-  let p = popup_create( X, *{line: 1, col: &columns, wrap: 0})
+  let p = popup_create( X, ~{line: 1, col: &columns, wrap: 0})
   call s:VerifyPosition( p, 'full width topright', 1, 1, &columns, 1 )
 
   redraw
@@ -1434,7 +1439,7 @@
   " Extend so > window width
   let X .= 'x'
 
-  let p = popup_create( X, *{line: 1, col: 1, wrap: 0})
+  let p = popup_create( X, ~{line: 1, col: 1, wrap: 0})
   call s:VerifyPosition( p, 'full width +  1 topleft', 1, 1, &columns, 1 )
 
   redraw
@@ -1445,7 +1450,7 @@
   redraw
 
   " Shifted then truncated (the x is not visible)
-  let p = popup_create( X, *{line: 1, col: &columns - 3, wrap: 0})
+  let p = popup_create( X, ~{line: 1, col: &columns - 3, wrap: 0})
   call s:VerifyPosition( p, 'full width + 1 topright', 1, 1, &columns, 1 )
 
   redraw
@@ -1457,7 +1462,7 @@
 
   " Not shifted, just truncated
   let p = popup_create( X,
-        \ *{line: 1, col: 2, wrap: 0, fixed: 1})
+        \ ~{line: 1, col: 2, wrap: 0, fixed: 1})
   call s:VerifyPosition( p, 'full width + 1 fixed', 1, 2, &columns - 1, 1)
 
   redraw
@@ -1478,7 +1483,7 @@
   call setline(1, ['one word to move around', 'a WORD.and->some thing'])
 
   exe "normal gg0/word\<CR>"
-  let winid = popup_atcursor('text', *{moved: 'any'})
+  let winid = popup_atcursor('text', ~{moved: 'any'})
   redraw
   call assert_equal(1, popup_getpos(winid).visible)
   call assert_equal([1, 4, 4], popup_getoptions(winid).moved)
@@ -1488,7 +1493,7 @@
   call popup_clear()
 
   exe "normal gg0/word\<CR>"
-  let winid = popup_atcursor('text', *{moved: 'word'})
+  let winid = popup_atcursor('text', ~{moved: 'word'})
   redraw
   call assert_equal(1, popup_getpos(winid).visible)
   call assert_equal([1, 4, 7], popup_getoptions(winid).moved)
@@ -1497,7 +1502,7 @@
   call popup_clear()
 
   exe "normal gg0/word\<CR>"
-  let winid = popup_atcursor('text', *{moved: 'word'})
+  let winid = popup_atcursor('text', ~{moved: 'word'})
   redraw
   call assert_equal(1, popup_getpos(winid).visible)
   call assert_equal([1, 4, 7], popup_getoptions(winid).moved)
@@ -1524,7 +1529,7 @@
   call popup_clear()
 
   exe "normal gg0/word\<CR>"
-  let winid = popup_atcursor('text', *{moved: [5, 10]})
+  let winid = popup_atcursor('text', ~{moved: [5, 10]})
   redraw
   call assert_equal(1, popup_getpos(winid).visible)
   call feedkeys("eli\<Esc>", 'xt')
@@ -1551,7 +1556,7 @@
 	\ "hi Notification ctermbg=lightblue",
 	\ "call popup_notification('first notification', {})",
 	\], 'XtestNotifications')
-  let buf = RunVimInTerminal('-S XtestNotifications', *{rows: 10})
+  let buf = RunVimInTerminal('-S XtestNotifications', ~{rows: 10})
   call VerifyScreenDump(buf, 'Test_popupwin_notify_01', {})
 
   " second one goes below the first one
@@ -1574,7 +1579,7 @@
     hi ScrollThumb ctermbg=blue
     hi ScrollBar ctermbg=red
     let winid = popup_create(['one', 'two', 'three', 'four', 'five',
-	  \ 'six', 'seven', 'eight', 'nine'], *{
+	  \ 'six', 'seven', 'eight', 'nine'], ~{
 	  \ minwidth: 8,
 	  \ maxheight: 4,
 	  \ })
@@ -1588,7 +1593,7 @@
       call feedkeys("\<F4>\<LeftMouse>", "xt")
     endfunc
     func ClickBot()
-      call popup_setoptions(g:winid, *{border: [], close: 'button'})
+      call popup_setoptions(g:winid, ~{border: [], close: 'button'})
       call feedkeys("\<F5>\<LeftMouse>", "xt")
     endfunc
     map <silent> <F3> :call test_setmouse(5, 36)<CR>
@@ -1596,19 +1601,22 @@
     map <silent> <F5> :call test_setmouse(7, 42)<CR>
   END
   call writefile(lines, 'XtestPopupScroll')
-  let buf = RunVimInTerminal('-S XtestPopupScroll', *{rows: 10})
+  let buf = RunVimInTerminal('-S XtestPopupScroll', ~{rows: 10})
   call VerifyScreenDump(buf, 'Test_popupwin_scroll_1', {})
 
-  call term_sendkeys(buf, ":call popup_setoptions(winid, *{firstline: 2})\<CR>")
+  call term_sendkeys(buf, ":call popup_setoptions(winid, ~{firstline: 2})\<CR>")
+  call term_sendkeys(buf, ":\<CR>")
   call VerifyScreenDump(buf, 'Test_popupwin_scroll_2', {})
 
-  call term_sendkeys(buf, ":call popup_setoptions(winid, *{firstline: 6})\<CR>")
+  call term_sendkeys(buf, ":call popup_setoptions(winid, ~{firstline: 6})\<CR>")
+  call term_sendkeys(buf, ":\<CR>")
   call VerifyScreenDump(buf, 'Test_popupwin_scroll_3', {})
 
-  call term_sendkeys(buf, ":call popup_setoptions(winid, *{firstline: 9})\<CR>")
+  call term_sendkeys(buf, ":call popup_setoptions(winid, ~{firstline: 9})\<CR>")
+  call term_sendkeys(buf, ":\<CR>")
   call VerifyScreenDump(buf, 'Test_popupwin_scroll_4', {})
 
-  call term_sendkeys(buf, ":call popup_setoptions(winid, *{scrollbarhighlight: 'ScrollBar', thumbhighlight: 'ScrollThumb'})\<CR>")
+  call term_sendkeys(buf, ":call popup_setoptions(winid, ~{scrollbarhighlight: 'ScrollBar', thumbhighlight: 'ScrollThumb'})\<CR>")
   call term_sendkeys(buf, ":call ScrollUp()\<CR>")
   call VerifyScreenDump(buf, 'Test_popupwin_scroll_5', {})
 
@@ -1637,7 +1645,7 @@
 func Test_popup_fitting_scrollbar()
   " this was causing a crash, divide by zero
   let winid = popup_create([
-	\ 'one', 'two', 'longer line that wraps', 'four', 'five'], *{
+	\ 'one', 'two', 'longer line that wraps', 'four', 'five'], ~{
 	\ scrollbar: 1,
 	\ maxwidth: 10,
 	\ maxheight: 5,
@@ -1652,13 +1660,13 @@
   endif
 
   let lines =<< trim END
-    let opts = *{wrap: 0}
+    let opts = ~{wrap: 0}
     let p = popup_create('test', opts)
     call popup_settext(p, 'this is a text')
   END
 
   call writefile( lines, 'XtestPopupSetText' )
-  let buf = RunVimInTerminal('-S XtestPopupSetText', *{rows: 10})
+  let buf = RunVimInTerminal('-S XtestPopupSetText', ~{rows: 10})
   call VerifyScreenDump(buf, 'Test_popup_settext_01', {})
 
   " Setting to empty string clears it
@@ -1682,7 +1690,7 @@
   call VerifyScreenDump(buf, 'Test_popup_settext_05', {})
 
   " Dicts
-  call term_sendkeys(buf, ":call popup_settext(p, [*{text: 'aaaa'}, *{text: 'bbbb'}, *{text: 'cccc'}])\<CR>")
+  call term_sendkeys(buf, ":call popup_settext(p, [~{text: 'aaaa'}, ~{text: 'bbbb'}, ~{text: 'cccc'}])\<CR>")
   call VerifyScreenDump(buf, 'Test_popup_settext_06', {})
 
   " clean up
@@ -1693,12 +1701,12 @@
 func Test_popup_hidden()
   new
 
-  let winid = popup_atcursor('text', *{hidden: 1})
+  let winid = popup_atcursor('text', ~{hidden: 1})
   redraw
   call assert_equal(0, popup_getpos(winid).visible)
   call popup_close(winid)
 
-  let winid = popup_create('text', *{hidden: 1})
+  let winid = popup_create('text', ~{hidden: 1})
   redraw
   call assert_equal(0, popup_getpos(winid).visible)
   call popup_close(winid)
@@ -1707,7 +1715,7 @@
     let s:cb_winid = a:id
     let s:cb_res = a:res
   endfunc
-  let winid = popup_dialog('make a choice', *{hidden: 1,
+  let winid = popup_dialog('make a choice', ~{hidden: 1,
 	  \ filter: 'popup_filter_yesno',
 	  \ callback: 'QuitCallback',
 	  \ })
@@ -1728,13 +1736,13 @@
 
 " Test options not checked elsewhere
 func Test_set_get_options()
-  let winid = popup_create('some text', *{highlight: 'Beautiful'})
+  let winid = popup_create('some text', ~{highlight: 'Beautiful'})
   let options = popup_getoptions(winid)
   call assert_equal(1, options.wrap)
   call assert_equal(0, options.drag)
   call assert_equal('Beautiful', options.highlight)
 
-  call popup_setoptions(winid, *{wrap: 0, drag: 1, highlight: 'Another'})
+  call popup_setoptions(winid, ~{wrap: 0, drag: 1, highlight: 'Another'})
   let options = popup_getoptions(winid)
   call assert_equal(0, options.wrap)
   call assert_equal(1, options.drag)
@@ -1748,7 +1756,7 @@
     " NOP
   endfunc
 
-  let winid = popup_create('something', *{filter: function('MyPopupFilter', [{}])})
+  let winid = popup_create('something', ~{filter: function('MyPopupFilter', [{}])})
   call test_garbagecollect_now()
   redraw
   " Must not crach caused by invalid memory access
@@ -1781,12 +1789,12 @@
 endfunc
 
 func Test_popupwin_width()
-  let winid = popup_create(repeat(['short', 'long long long line', 'medium width'], 50), *{
+  let winid = popup_create(repeat(['short', 'long long long line', 'medium width'], 50), ~{
 	\ maxwidth: 40,
 	\ maxheight: 10,
 	\ })
   for top in range(1, 20)
-    call popup_setoptions(winid, *{firstline: top})
+    call popup_setoptions(winid, ~{firstline: top})
     redraw
     call assert_equal(19, popup_getpos(winid).width)
   endfor
@@ -1830,7 +1838,7 @@
 	hi ScrollThumb ctermbg=blue
 	hi ScrollBar ctermbg=red
 	func PopupMenu(lines, line, col, scrollbar = 0)
-		return popup_menu(a:lines, *{
+		return popup_menu(a:lines, ~{
 			\ maxwidth: 10,
 			\ maxheight: 3,
 			\ pos : 'topleft',
@@ -1846,7 +1854,7 @@
 	call PopupMenu(repeat(['123456789|' .. ' '], 5), 1, 33, 1)
   END
   call writefile(lines, 'XtestPopupMenuMaxWidth')
-  let buf = RunVimInTerminal('-S XtestPopupMenuMaxWidth', *{rows: 13})
+  let buf = RunVimInTerminal('-S XtestPopupMenuMaxWidth', ~{rows: 13})
   call VerifyScreenDump(buf, 'Test_popupwin_menu_maxwidth_1', {})
 
   " close the menu popupwin.
@@ -1871,13 +1879,13 @@
     hi ScrollThumb ctermbg=blue
     hi ScrollBar ctermbg=red
     call popup_menu(['one', 'two', 'three', 'four', 'five',
-	  \ 'six', 'seven', 'eight', 'nine'], *{
+	  \ 'six', 'seven', 'eight', 'nine'], ~{
 	  \ minwidth: 8,
 	  \ maxheight: 3,
 	  \ })
   END
   call writefile(lines, 'XtestPopupMenuScroll')
-  let buf = RunVimInTerminal('-S XtestPopupMenuScroll', *{rows: 10})
+  let buf = RunVimInTerminal('-S XtestPopupMenuScroll', ~{rows: 10})
 
   call term_sendkeys(buf, "j")
   call VerifyScreenDump(buf, 'Test_popupwin_menu_scroll_1', {})
diff --git a/src/version.c b/src/version.c
index cc6dc44..0a4545e 100644
--- a/src/version.c
+++ b/src/version.c
@@ -778,6 +778,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1692,
+/**/
     1691,
 /**/
     1690,
