diff --git a/src/testdir/test_listdict.vim b/src/testdir/test_listdict.vim
index 20a31de..961f274 100644
--- a/src/testdir/test_listdict.vim
+++ b/src/testdir/test_listdict.vim
@@ -281,7 +281,7 @@
 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({'one': 1, 'two2': 2, '3three': 3, '44': 4}, #{one: 1, two2: 2, 3three: 3, 44: 4},)
 
   " why *{} cannot be used
   let blue = 'blue'
diff --git a/src/testdir/test_popupwin.vim b/src/testdir/test_popupwin.vim
index 1ce6b80..8b1ea1f 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,7 @@
 
   " 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', {})
 
@@ -84,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)
@@ -108,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
@@ -135,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,
@@ -147,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))
@@ -161,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'],
@@ -173,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,
@@ -203,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
@@ -228,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
@@ -249,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')
@@ -258,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
@@ -274,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',
@@ -282,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',
@@ -290,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',
@@ -298,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',
@@ -307,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
@@ -321,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)
@@ -352,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,
@@ -364,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>")
@@ -382,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,
@@ -391,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,
@@ -418,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>")
@@ -442,7 +442,7 @@
 	let winid = popup_create([
 	    \ 'some text',
 	    \ 'another line',
-	    \], ~{
+	    \], #{
 	    \ line: 1,
 	    \ col: 10,
 	    \ wrap: 0,
@@ -454,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,
@@ -472,26 +472,26 @@
 	    \ 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', {})
 
@@ -511,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,
@@ -524,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', {})
 
@@ -558,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
@@ -570,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
@@ -581,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)
@@ -608,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
 
@@ -681,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
@@ -700,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
@@ -718,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,
@@ -738,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,
@@ -760,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,
@@ -806,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,
@@ -815,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)
@@ -833,7 +833,7 @@
 endfunc
 
 func Test_popup_getpos()
-  let winid = popup_create('hello', ~{
+  let winid = popup_create('hello', #{
     \ line: 2,
     \ col: 3,
     \ minwidth: 10,
@@ -860,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)
@@ -876,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)
@@ -888,7 +888,7 @@
 endfunc
 
 func Test_popup_getoptions()
-  let winid = popup_create('hello', ~{
+  let winid = popup_create('hello', #{
     \ line: 2,
     \ col: 3,
     \ minwidth: 10,
@@ -981,7 +981,7 @@
 
   call cursor(1, 1)
   redraw
-  let winid = popup_create('vim', ~{
+  let winid = popup_create('vim', #{
         \ line: 'cursor+2',
         \ col: 'cursor+1',
         \})
@@ -992,7 +992,7 @@
 
   call cursor(3, 3)
   redraw
-  let winid = popup_create('vim', ~{
+  let winid = popup_create('vim', #{
         \ line: 'cursor-2',
         \ col: 'cursor-1',
         \})
@@ -1061,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>")
@@ -1098,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
@@ -1123,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',
 	  \ })
@@ -1153,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
@@ -1189,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")
@@ -1218,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()
@@ -1240,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)
@@ -1282,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', {})
 
@@ -1345,9 +1345,9 @@
   "     - expected width
   "     - expected height
   let tests = [
-        \ ~{
+        \ #{
         \   comment: 'left-aligned with wrapping',
-        \   options: ~{
+        \   options: #{
         \     wrap: 1,
         \     pos: 'botleft',
         \   },
@@ -1359,9 +1359,9 @@
         \       [ 'eeee', 5, &columns - 3,    5, &columns - 3, 4, 1 ],
         \   ],
         \ },
-        \ ~{
+        \ #{
         \   comment: 'left aligned without wrapping',
-        \   options: ~{
+        \   options: #{
         \     wrap: 0,
         \     pos: 'botleft',
         \   },
@@ -1373,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',
@@ -1393,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,
             \ }
@@ -1401,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
@@ -1415,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
@@ -1426,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
@@ -1439,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
@@ -1450,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
@@ -1462,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
@@ -1483,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)
@@ -1493,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)
@@ -1502,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)
@@ -1529,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')
@@ -1556,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
@@ -1579,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,
 	  \ })
@@ -1593,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>
@@ -1601,22 +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', {})
 
@@ -1645,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,
@@ -1660,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
@@ -1690,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
@@ -1701,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)
@@ -1715,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',
 	  \ })
@@ -1736,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)
@@ -1756,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
@@ -1789,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
@@ -1838,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',
@@ -1854,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.
@@ -1879,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', {})
