diff --git a/src/vim9compile.c b/src/vim9compile.c
index 09e71ac..c8c87e7 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -135,6 +135,7 @@
 
 static char e_var_notfound[] = N_("E1001: variable not found: %s");
 static char e_syntax_at[] = N_("E1002: Syntax error at %s");
+static char e_used_as_arg[] = N_("E1006: %s is used as an argument");
 
 static void delete_def_function_contents(dfunc_T *dfunc);
 static void arg_type_mismatch(type_T *expected, type_T *actual, int argidx);
@@ -1652,7 +1653,7 @@
 
     if (lookup_arg(name, len, NULL, NULL, NULL, cctx) == OK)
     {
-	emsg_namelen(_("E1006: %s is used as an argument"), name, (int)len);
+	emsg_namelen(_(e_used_as_arg), name, (int)len);
 	return NULL;
     }
 
@@ -4592,6 +4593,7 @@
     type_T	*type = &t_any;
     type_T	*member_type = &t_any;
     lvar_T	*lvar = NULL;
+    lvar_T	arg_lvar;
     char_u	*name;
     char_u	*sp;
     int		has_type = FALSE;
@@ -4760,6 +4762,19 @@
 		}
 
 	    lvar = lookup_local(arg, varlen, cctx);
+	    if (lvar == NULL
+		    && lookup_arg(arg, varlen,
+			    &arg_lvar.lv_idx, &arg_lvar.lv_type,
+			    &arg_lvar.lv_from_outer, cctx) == OK)
+	    {
+		if (is_decl)
+		{
+		    semsg(_(e_used_as_arg), name);
+		    goto theend;
+		}
+		arg_lvar.lv_const = 0;
+		lvar = &arg_lvar;
+	    }
 	    if (lvar != NULL)
 	    {
 		if (is_decl)
@@ -4861,13 +4876,13 @@
     member_type = type;
     if (var_end > arg + varlen)
     {
+	// Something follows after the variable: "var[idx]".
 	if (is_decl)
 	{
 	    emsg(_("E1087: cannot use an index when declaring a variable"));
 	    goto theend;
 	}
 
-	// Something follows after the variable: "var[idx]".
 	if (arg[varlen] == '[')
 	{
 	    has_index = TRUE;
@@ -4884,6 +4899,11 @@
 	    goto theend;
 	}
     }
+    else if (lvar == &arg_lvar)
+    {
+	semsg(_("E1090: Cannot assign to argument %s"), name);
+	goto theend;
+    }
 
     if (heredoc)
     {
@@ -6515,6 +6535,8 @@
 		oplen = assignment_len(skipwhite(var_end), &heredoc);
 		if (oplen > 0)
 		{
+		    size_t len = p - ea.cmd;
+
 		    // Recognize an assignment if we recognize the variable
 		    // name:
 		    // "g:var = expr"
@@ -6527,10 +6549,12 @@
 		    if (*ea.cmd == '&'
 			    || *ea.cmd == '$'
 			    || *ea.cmd == '@'
-			    || ((p - ea.cmd) > 2 && ea.cmd[1] == ':')
-			    || lookup_local(ea.cmd, p - ea.cmd, &cctx) != NULL
-			    || lookup_script(ea.cmd, p - ea.cmd) == OK
-			    || find_imported(ea.cmd, p - ea.cmd, &cctx) != NULL)
+			    || ((len) > 2 && ea.cmd[1] == ':')
+			    || lookup_local(ea.cmd, len, &cctx) != NULL
+			    || lookup_arg(ea.cmd, len, NULL, NULL,
+							     NULL, &cctx) == OK
+			    || lookup_script(ea.cmd, len) == OK
+			    || find_imported(ea.cmd, len, &cctx) != NULL)
 		    {
 			line = compile_assignment(ea.cmd, &ea, CMD_SIZE, &cctx);
 			if (line == NULL)
