Mercurial > vim
comparison src/vim9compile.c @ 21614:d0128ecd4341 v8.2.1357
patch 8.2.1357: Vim9: cannot assign to / register
Commit: https://github.com/vim/vim/commit/658217276fccb5e53cdf4ba0f023bca80e0a8fed
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Aug 2 18:58:54 2020 +0200
patch 8.2.1357: Vim9: cannot assign to / register
Problem: Vim9: cannot assign to / register.
Solution: Adjust check for assignment.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 02 Aug 2020 19:00:03 +0200 |
parents | c495d3e30f4b |
children | 3c6c52fbc8ea |
comparison
equal
deleted
inserted
replaced
21613:9dade08b2bad | 21614:d0128ecd4341 |
---|---|
5212 lvar_T arg_lvar; | 5212 lvar_T arg_lvar; |
5213 int has_type = FALSE; | 5213 int has_type = FALSE; |
5214 int has_index = FALSE; | 5214 int has_index = FALSE; |
5215 int instr_count = -1; | 5215 int instr_count = -1; |
5216 | 5216 |
5217 p = (*var_start == '&' || *var_start == '$' | 5217 if (*var_start == '@') |
5218 || *var_start == '@') ? var_start + 1 : var_start; | 5218 p = var_start + 2; |
5219 p = to_name_end(p, TRUE); | 5219 else |
5220 { | |
5221 p = (*var_start == '&' || *var_start == '$') | |
5222 ? var_start + 1 : var_start; | |
5223 p = to_name_end(p, TRUE); | |
5224 } | |
5220 | 5225 |
5221 // "a: type" is declaring variable "a" with a type, not "a:". | 5226 // "a: type" is declaring variable "a" with a type, not "a:". |
5222 if (is_decl && var_end == var_start + 2 && var_end[-1] == ':') | 5227 if (is_decl && var_end == var_start + 2 && var_end[-1] == ':') |
5223 --var_end; | 5228 --var_end; |
5224 if (is_decl && p == var_start + 2 && p[-1] == ':') | 5229 if (is_decl && p == var_start + 2 && p[-1] == ':') |
5277 type = &t_string; | 5282 type = &t_string; |
5278 declare_error = is_decl; | 5283 declare_error = is_decl; |
5279 } | 5284 } |
5280 else if (*var_start == '@') | 5285 else if (*var_start == '@') |
5281 { | 5286 { |
5282 if (!valid_yank_reg(var_start[1], TRUE)) | 5287 if (!valid_yank_reg(var_start[1], FALSE) || var_start[1] == '.') |
5283 { | 5288 { |
5284 emsg_invreg(var_start[1]); | 5289 emsg_invreg(var_start[1]); |
5285 goto theend; | 5290 goto theend; |
5286 } | 5291 } |
5287 dest = dest_reg; | 5292 dest = dest_reg; |
7245 { | 7250 { |
7246 char_u *var_end; | 7251 char_u *var_end; |
7247 int oplen; | 7252 int oplen; |
7248 int heredoc; | 7253 int heredoc; |
7249 | 7254 |
7250 var_end = find_name_end(pskip, NULL, NULL, | 7255 if (ea.cmd[0] == '@') |
7256 var_end = ea.cmd + 2; | |
7257 else | |
7258 var_end = find_name_end(pskip, NULL, NULL, | |
7251 FNE_CHECK_START | FNE_INCL_BR); | 7259 FNE_CHECK_START | FNE_INCL_BR); |
7252 oplen = assignment_len(skipwhite(var_end), &heredoc); | 7260 oplen = assignment_len(skipwhite(var_end), &heredoc); |
7253 if (oplen > 0) | 7261 if (oplen > 0) |
7254 { | 7262 { |
7255 size_t len = p - ea.cmd; | 7263 size_t len = p - ea.cmd; |