Mercurial > vim
comparison src/eval.c @ 21024:02b03915855d v8.2.1063
patch 8.2.1063: Vim9: no line break allowed before || or &&
Commit: https://github.com/vim/vim/commit/be7ee488761a5582a5605197c3951a17f20d072e
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri Jun 26 21:38:51 2020 +0200
patch 8.2.1063: Vim9: no line break allowed before || or &&
Problem: Vim9: no line break allowed before || or &&.
Solution: Check for operator after line break.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Fri, 26 Jun 2020 21:45:16 +0200 |
parents | 9d8634e91d1b |
children | fe2ed85db946 |
comparison
equal
deleted
inserted
replaced
21023:71f6a958bd70 | 21024:02b03915855d |
---|---|
1989 * Return OK or FAIL. | 1989 * Return OK or FAIL. |
1990 */ | 1990 */ |
1991 static int | 1991 static int |
1992 eval2(char_u **arg, typval_T *rettv, evalarg_T *evalarg) | 1992 eval2(char_u **arg, typval_T *rettv, evalarg_T *evalarg) |
1993 { | 1993 { |
1994 char_u *p; | |
1995 int getnext; | |
1994 typval_T var2; | 1996 typval_T var2; |
1995 long result; | 1997 long result; |
1996 int first; | 1998 int first; |
1997 int error = FALSE; | 1999 int error = FALSE; |
1998 | 2000 |
2005 /* | 2007 /* |
2006 * Repeat until there is no following "||". | 2008 * Repeat until there is no following "||". |
2007 */ | 2009 */ |
2008 first = TRUE; | 2010 first = TRUE; |
2009 result = FALSE; | 2011 result = FALSE; |
2010 while ((*arg)[0] == '|' && (*arg)[1] == '|') | 2012 p = eval_next_non_blank(*arg, evalarg, &getnext); |
2013 while (p[0] == '|' && p[1] == '|') | |
2011 { | 2014 { |
2012 evalarg_T nested_evalarg; | 2015 evalarg_T nested_evalarg; |
2013 int evaluate; | 2016 int evaluate; |
2014 int orig_flags; | 2017 int orig_flags; |
2018 | |
2019 if (getnext) | |
2020 *arg = eval_next_line(evalarg); | |
2015 | 2021 |
2016 if (evalarg == NULL) | 2022 if (evalarg == NULL) |
2017 { | 2023 { |
2018 CLEAR_FIELD(nested_evalarg); | 2024 CLEAR_FIELD(nested_evalarg); |
2019 orig_flags = 0; | 2025 orig_flags = 0; |
2059 if (evaluate) | 2065 if (evaluate) |
2060 { | 2066 { |
2061 rettv->v_type = VAR_NUMBER; | 2067 rettv->v_type = VAR_NUMBER; |
2062 rettv->vval.v_number = result; | 2068 rettv->vval.v_number = result; |
2063 } | 2069 } |
2070 | |
2071 p = eval_next_non_blank(*arg, evalarg, &getnext); | |
2064 } | 2072 } |
2065 | 2073 |
2066 return OK; | 2074 return OK; |
2067 } | 2075 } |
2068 | 2076 |
2076 * Return OK or FAIL. | 2084 * Return OK or FAIL. |
2077 */ | 2085 */ |
2078 static int | 2086 static int |
2079 eval3(char_u **arg, typval_T *rettv, evalarg_T *evalarg) | 2087 eval3(char_u **arg, typval_T *rettv, evalarg_T *evalarg) |
2080 { | 2088 { |
2089 char_u *p; | |
2090 int getnext; | |
2081 typval_T var2; | 2091 typval_T var2; |
2082 long result; | 2092 long result; |
2083 int first; | 2093 int first; |
2084 int error = FALSE; | 2094 int error = FALSE; |
2085 | 2095 |
2092 /* | 2102 /* |
2093 * Repeat until there is no following "&&". | 2103 * Repeat until there is no following "&&". |
2094 */ | 2104 */ |
2095 first = TRUE; | 2105 first = TRUE; |
2096 result = TRUE; | 2106 result = TRUE; |
2097 while ((*arg)[0] == '&' && (*arg)[1] == '&') | 2107 p = eval_next_non_blank(*arg, evalarg, &getnext); |
2108 while (p[0] == '&' && p[1] == '&') | |
2098 { | 2109 { |
2099 evalarg_T nested_evalarg; | 2110 evalarg_T nested_evalarg; |
2100 int orig_flags; | 2111 int orig_flags; |
2101 int evaluate; | 2112 int evaluate; |
2113 | |
2114 if (getnext) | |
2115 *arg = eval_next_line(evalarg); | |
2102 | 2116 |
2103 if (evalarg == NULL) | 2117 if (evalarg == NULL) |
2104 { | 2118 { |
2105 CLEAR_FIELD(nested_evalarg); | 2119 CLEAR_FIELD(nested_evalarg); |
2106 orig_flags = 0; | 2120 orig_flags = 0; |
2145 if (evaluate) | 2159 if (evaluate) |
2146 { | 2160 { |
2147 rettv->v_type = VAR_NUMBER; | 2161 rettv->v_type = VAR_NUMBER; |
2148 rettv->vval.v_number = result; | 2162 rettv->vval.v_number = result; |
2149 } | 2163 } |
2164 | |
2165 p = eval_next_non_blank(*arg, evalarg, &getnext); | |
2150 } | 2166 } |
2151 | 2167 |
2152 return OK; | 2168 return OK; |
2153 } | 2169 } |
2154 | 2170 |