diff options
author | Xavier Claessens <xavier.claessens@collabora.com> | 2019-01-04 10:09:05 -0500 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2019-01-05 21:45:37 +0200 |
commit | 90c9b868b20b11bb089fc5e0c634d5ed76fea0cb (patch) | |
tree | b94005146c7cd2630c540d60a506d4e06099ee09 | |
parent | 83964f64fa193669ad7543c618568b115c2b212b (diff) | |
download | meson-90c9b868b20b11bb089fc5e0c634d5ed76fea0cb.zip meson-90c9b868b20b11bb089fc5e0c634d5ed76fea0cb.tar.gz meson-90c9b868b20b11bb089fc5e0c634d5ed76fea0cb.tar.bz2 |
parser: Fix line continuation outside of (), [] or {}
The documentation states: "In other cases you can get multi-line
statements by ending the line with a \." but that seems to never have
worked.
Closes: #4720
-rw-r--r-- | mesonbuild/mparser.py | 6 | ||||
-rw-r--r-- | test cases/common/210 line continuation/meson.build | 17 |
2 files changed, 22 insertions, 1 deletions
diff --git a/mesonbuild/mparser.py b/mesonbuild/mparser.py index be5c807..fd8052e 100644 --- a/mesonbuild/mparser.py +++ b/mesonbuild/mparser.py @@ -190,7 +190,11 @@ This will become a hard error in a future Meson release.""", self.getline(line_s line_start = mo.end() - len(lines[-1]) elif tid == 'number': value = int(match_text, base=0) - elif tid == 'eol' or tid == 'eol_cont': + elif tid == 'eol_cont': + lineno += 1 + line_start = loc + break + elif tid == 'eol': lineno += 1 line_start = loc if par_count > 0 or bracket_count > 0 or curl_count > 0: diff --git a/test cases/common/210 line continuation/meson.build b/test cases/common/210 line continuation/meson.build new file mode 100644 index 0000000..16c72f9 --- /dev/null +++ b/test cases/common/210 line continuation/meson.build @@ -0,0 +1,17 @@ +project('line continuation') + +a = 1 +b = 2 + +c = a \ ++b +assert(c == 3, 'Line continuation is not working') + +d = a + \ + b +assert(d == 3, 'Line continuation is not working') + +if a == 1 and \ + b == 3 + error('Line continuation in "if" condition is not working') +endif |