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);