Mercurial > vim
comparison src/eval.c @ 21022:9d8634e91d1b v8.2.1062
patch 8.2.1062: Vim9: no line break allowed inside "cond ? val1 : val2"
Commit: https://github.com/vim/vim/commit/793648fb563359396a23740c72a6e04cb64df3a9
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri Jun 26 21:28:25 2020 +0200
patch 8.2.1062: Vim9: no line break allowed inside "cond ? val1 : val2"
Problem: Vim9: no line break allowed inside "cond ? val1 : val2".
Solution: Check for operator after line break.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Fri, 26 Jun 2020 21:30:06 +0200 |
parents | 4852db420162 |
children | 02b03915855d |
comparison
equal
deleted
inserted
replaced
21021:f7842848dd8e | 21022:9d8634e91d1b |
---|---|
1890 * Return OK or FAIL. | 1890 * Return OK or FAIL. |
1891 */ | 1891 */ |
1892 int | 1892 int |
1893 eval1(char_u **arg, typval_T *rettv, evalarg_T *evalarg) | 1893 eval1(char_u **arg, typval_T *rettv, evalarg_T *evalarg) |
1894 { | 1894 { |
1895 char_u *p; | |
1896 int getnext; | |
1897 | |
1895 /* | 1898 /* |
1896 * Get the first variable. | 1899 * Get the first variable. |
1897 */ | 1900 */ |
1898 if (eval2(arg, rettv, evalarg) == FAIL) | 1901 if (eval2(arg, rettv, evalarg) == FAIL) |
1899 return FAIL; | 1902 return FAIL; |
1900 | 1903 |
1901 if ((*arg)[0] == '?') | 1904 p = eval_next_non_blank(*arg, evalarg, &getnext); |
1905 if (*p == '?') | |
1902 { | 1906 { |
1903 int result; | 1907 int result; |
1904 typval_T var2; | 1908 typval_T var2; |
1905 evalarg_T nested_evalarg; | 1909 evalarg_T nested_evalarg; |
1906 int orig_flags; | 1910 int orig_flags; |
1907 int evaluate; | 1911 int evaluate; |
1912 | |
1913 if (getnext) | |
1914 *arg = eval_next_line(evalarg); | |
1908 | 1915 |
1909 if (evalarg == NULL) | 1916 if (evalarg == NULL) |
1910 { | 1917 { |
1911 CLEAR_FIELD(nested_evalarg); | 1918 CLEAR_FIELD(nested_evalarg); |
1912 orig_flags = 0; | 1919 orig_flags = 0; |
1940 return FAIL; | 1947 return FAIL; |
1941 | 1948 |
1942 /* | 1949 /* |
1943 * Check for the ":". | 1950 * Check for the ":". |
1944 */ | 1951 */ |
1945 if ((*arg)[0] != ':') | 1952 p = eval_next_non_blank(*arg, evalarg, &getnext); |
1953 if (*p != ':') | |
1946 { | 1954 { |
1947 emsg(_(e_missing_colon)); | 1955 emsg(_(e_missing_colon)); |
1948 if (evaluate && result) | 1956 if (evaluate && result) |
1949 clear_tv(rettv); | 1957 clear_tv(rettv); |
1950 return FAIL; | 1958 return FAIL; |
1951 } | 1959 } |
1960 if (getnext) | |
1961 *arg = eval_next_line(evalarg); | |
1952 | 1962 |
1953 /* | 1963 /* |
1954 * Get the third variable. Recursive! | 1964 * Get the third variable. Recursive! |
1955 */ | 1965 */ |
1956 *arg = skipwhite(*arg + 1); | 1966 *arg = skipwhite(*arg + 1); |