diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2017-06-27 04:12:00 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-27 04:12:00 -0400 |
commit | ee8fcd5f6729c0481c18309d6ad2beb0fdc67792 (patch) | |
tree | fc41f24b74e86c987969c63ede992841aa772965 | |
parent | 5dab5f160046c800a11b7da436ce974b5f7d0271 (diff) | |
parent | 506cc57cc83491e89d8242081f7f23a7150a80ba (diff) | |
download | meson-ee8fcd5f6729c0481c18309d6ad2beb0fdc67792.zip meson-ee8fcd5f6729c0481c18309d6ad2beb0fdc67792.tar.gz meson-ee8fcd5f6729c0481c18309d6ad2beb0fdc67792.tar.bz2 |
Merge pull request #1997 from mesonbuild/fixconditional
Fix conditional continuation bug
-rw-r--r-- | mesonbuild/mparser.py | 7 | ||||
-rw-r--r-- | test cases/failing/57 or on new line/meson.build | 7 | ||||
-rw-r--r-- | test cases/failing/57 or on new line/meson_options.txt | 1 |
3 files changed, 15 insertions, 0 deletions
diff --git a/mesonbuild/mparser.py b/mesonbuild/mparser.py index 75985c3..8400a1a 100644 --- a/mesonbuild/mparser.py +++ b/mesonbuild/mparser.py @@ -475,12 +475,18 @@ class Parser: def e2(self): left = self.e3() while self.accept('or'): + if isinstance(left, EmptyNode): + raise ParseException('Invalid or clause.', + self.getline(), left.lineno, left.colno) left = OrNode(left, self.e3()) return left def e3(self): left = self.e4() while self.accept('and'): + if isinstance(left, EmptyNode): + raise ParseException('Invalid and clause.', + self.getline(), left.lineno, left.colno) left = AndNode(left, self.e4()) return left @@ -633,6 +639,7 @@ class Parser: def ifblock(self): condition = self.statement() clause = IfClauseNode(condition.lineno, condition.colno) + self.expect('eol') block = self.codeblock() clause.ifs.append(IfNode(clause.lineno, clause.colno, condition, block)) self.elseifblock(clause) diff --git a/test cases/failing/57 or on new line/meson.build b/test cases/failing/57 or on new line/meson.build new file mode 100644 index 0000000..12f2705 --- /dev/null +++ b/test cases/failing/57 or on new line/meson.build @@ -0,0 +1,7 @@ +project('silent_or', 'c') + +if get_option('foo') == 'true' + or get_option('foo') == 'auto' +else + message('If this message is printed then something is wrong. The or above should give a syntax error.') +endif diff --git a/test cases/failing/57 or on new line/meson_options.txt b/test cases/failing/57 or on new line/meson_options.txt new file mode 100644 index 0000000..3302cf4 --- /dev/null +++ b/test cases/failing/57 or on new line/meson_options.txt @@ -0,0 +1 @@ +option('foo', type: 'combo', choices: ['true', 'false', 'auto'], value: 'auto') |