diff src/vim9compile.c @ 27800:6e5d378919c4 v8.2.4426

patch 8.2.4426: map() function on string and blob does not check types Commit: https://github.com/vim/vim/commit/c1e6c7bafec1115b690c745a28e1a6338750b137 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Feb 20 18:26:46 2022 +0000 patch 8.2.4426: map() function on string and blob does not check types Problem: map() function on string and blob does not check argument types at compile time. Solution: Check string and blob argument types. Support "0z1234->func()".
author Bram Moolenaar <Bram@vim.org>
date Sun, 20 Feb 2022 19:30:02 +0100
parents d754ac2f5ac5
children 532a0c5de1ec
line wrap: on
line diff
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -2818,13 +2818,16 @@ compile_def_function(
 	/*
 	 * COMMAND after range
 	 * 'text'->func() should not be confused with 'a mark
+	 * 0z1234->func() should not be confused with a zero line number
 	 * "++nr" and "--nr" are eval commands
 	 * in "$ENV->func()" the "$" is not a range
 	 */
 	cmd = ea.cmd;
 	if ((*cmd != '$' || starts_with_colon)
-		&& (starts_with_colon || !(*cmd == '\''
-		       || (cmd[0] != NUL && cmd[0] == cmd[1]
+		&& (starts_with_colon
+		    || !(*cmd == '\''
+			|| (cmd[0] == '0' && cmd[1] == 'z')
+			|| (cmd[0] != NUL && cmd[0] == cmd[1]
 					    && (*cmd == '+' || *cmd == '-')))))
 	{
 	    ea.cmd = skip_range(ea.cmd, TRUE, NULL);