Do not permit invalid and/or nodes to be declared. Closes #1886.

pull/1997/head
Jussi Pakkanen 8 years ago
parent 8d8c920a51
commit 506cc57cc8
  1. 7
      mesonbuild/mparser.py
  2. 0
      test cases/failing/57 or on new line/meson.build
  3. 0
      test cases/failing/57 or on new line/meson_options.txt

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

Loading…
Cancel
Save