aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/mparser.py
AgeCommit message (Collapse)AuthorFilesLines
2018-05-23Add support for octal and binary int literals.Filipe Brandenburger1-6/+2
Simplify support for alternate bases using int(..., base=0) which auto-detects it using the standard Python syntax for numbers. Octal numbers are useful to specify permission bits and umasks. Binary numbers are not super useful... But considering we get them for free, let's allow them here too. v2: Tweak the regex so it doesn't accept a decimal number with a leading zero, which is invalid for int(..., base=0) and would raise a ValueError if passed around.
2018-05-21dict: fix CI issuesMathieu Duponchelle1-1/+1
2018-05-20dict: address review commentsMathieu Duponchelle1-8/+9
2018-05-20Add new built-in type, dictMathieu Duponchelle1-4/+53
For now dicts are immutable, and do not expose any methods, they however support "native" syntax such as [] lookup, and foreach iterating, and can be printed.
2018-04-21Remove escaping for triple-quoted stringsNiklas Claesson1-16/+0
Fixes #3429
2018-04-17Exit meson with an error if an invalid escape sequence is found in aNiklas Claesson1-3/+17
string
2018-04-17Complete python escape sequences aware stringsTim 'mithro' Ansell1-4/+30
Fixes #3169
2018-02-21Newlines in single line strings should only be a warning for now.Jussi Pakkanen1-1/+2
2018-02-20Fail if singleline string has multiple linesCaio Marcelo de Oliveira Filho1-0/+3
2018-02-05Add support for hex int literals.Jussi Pakkanen1-0/+4
2018-01-30Report warning/error locations in a format IDEs may already know how to parseJon Turney1-1/+1
Examples: meson.build:2:0: ERROR: Dependency is both required and not-found meson.build:4: WARNING: Keyword argument "link_with" defined multiple times. These are already matched by the default compilation-error-regexp-alist in emacs. Also: Don't start 'red' markup until after the \n before an error Unabsorb full-stop at end of warning with location from mlog.warning() Update warning_location test
2018-01-01Consolidate warning location formatting in mlog.warning()Jon Turney1-2/+3
Also use .format() rather than % Also use build.environment rather than hardcoding 'meson.build'
2017-12-30Add filename and lineno to duplicate kwargs warningJon Turney1-2/+2
Fixes #1626 Also fix 'a an error' typo
2017-11-27Fix escaping of newlines in string literalsJoergen Ibsen1-4/+4
Replace '\n' escape sequence before '\\' to allow a literal backslash to be inserted before the character 'n'. Fixes #2682
2017-06-25Do not permit invalid and/or nodes to be declared. Closes #1886.Jussi Pakkanen1-0/+7
2017-04-21Added missing argument to a few function calls. Closes #1647.Jussi Pakkanen1-8/+11
2017-04-19Print a warning on duplicated keywords.Jussi Pakkanen1-0/+3
2017-04-07Don't crash if a meson.build file is empty (#1570)Aaron Plattner1-0/+1
* Don't crash if a meson.build file is empty Commit 9adef3a8e878 caused an empty meson.build file to generate a traceback: Traceback (most recent call last): File "/usr/lib/python3.6/site-packages/mesonbuild/mparser.py", line 415, in getsym self.current = next(self.stream) StopIteration During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/lib/python3.6/site-packages/mesonbuild/mesonmain.py", line 298, in run app.generate() File "/usr/lib/python3.6/site-packages/mesonbuild/mesonmain.py", line 180, in generate intr.run() File "/usr/lib/python3.6/site-packages/mesonbuild/interpreter.py", line 2529, in run super().run() File "/usr/lib/python3.6/site-packages/mesonbuild/interpreterbase.py", line 125, in run self.evaluate_codeblock(self.ast, start=1) File "/usr/lib/python3.6/site-packages/mesonbuild/interpreterbase.py", line 146, in evaluate_codeblock raise e File "/usr/lib/python3.6/site-packages/mesonbuild/interpreterbase.py", line 140, in evaluate_codeblock self.evaluate_statement(cur) File "/usr/lib/python3.6/site-packages/mesonbuild/interpreterbase.py", line 151, in evaluate_statement return self.function_call(cur) File "/usr/lib/python3.6/site-packages/mesonbuild/interpreterbase.py", line 372, in function_call return self.funcs[func_name](node, self.flatten(posargs), kwargs) File "/usr/lib/python3.6/site-packages/mesonbuild/interpreterbase.py", line 47, in wrapped return f(self, node, args, kwargs) File "/usr/lib/python3.6/site-packages/mesonbuild/interpreter.py", line 2237, in func_subdir self.evaluate_codeblock(codeblock) File "/usr/lib/python3.6/site-packages/mesonbuild/interpreterbase.py", line 146, in evaluate_codeblock raise e File "/usr/lib/python3.6/site-packages/mesonbuild/interpreterbase.py", line 140, in evaluate_codeblock self.evaluate_statement(cur) File "/usr/lib/python3.6/site-packages/mesonbuild/interpreterbase.py", line 151, in evaluate_statement return self.function_call(cur) File "/usr/lib/python3.6/site-packages/mesonbuild/interpreterbase.py", line 372, in function_call return self.funcs[func_name](node, self.flatten(posargs), kwargs) File "/usr/lib/python3.6/site-packages/mesonbuild/interpreterbase.py", line 47, in wrapped return f(self, node, args, kwargs) File "/usr/lib/python3.6/site-packages/mesonbuild/interpreter.py", line 2233, in func_subdir codeblock = mparser.Parser(code, self.subdir).parse() File "/usr/lib/python3.6/site-packages/mesonbuild/mparser.py", line 410, in __init__ self.getsym() File "/usr/lib/python3.6/site-packages/mesonbuild/mparser.py", line 417, in getsym self.current = Token('eof', '', self.current.line_start, self.current.lineno, self.current.colno + self.current.bytespan[1] - self.current.bytespan[0], (0, 0), None) AttributeError: 'Parser' object has no attribute 'current'
2017-03-25EmptyNode needs a line/column number too. There are times its lineAaron Small1-25/+65
and column are printed out by other parser code. Add a print of the line with the error, and where on the line the error occurred. Add a print of where the block scope started, if the error is due to missing the block scope end token.
2017-03-23fix logic operationsNicolas Schneider1-4/+5
Closes #1479.
2017-01-23Better error message when using = rather than : for defining keywords.Jussi Pakkanen1-1/+1
2017-01-18cleanup: Replace assignment with augmented assignmentMike Sinkovsky1-1/+1
2017-01-18cleanup: Remove redundant parenthesesMike Sinkovsky1-7/+7
2017-01-18cleanup: Redundant character escapeMike Sinkovsky1-3/+3
2017-01-11style: [E1**] IndentationMike Sinkovsky1-2/+4
2017-01-01style: fix E703 violationsIgor Gnatenko1-2/+2
E703: statement ends with a semicolon Signed-off-by: Igor Gnatenko <i.gnatenko.brain@gmail.com>
2017-01-01style: fix E231 violationsIgor Gnatenko1-1/+1
E231: missing whitespace after ',' Signed-off-by: Igor Gnatenko <i.gnatenko.brain@gmail.com>
2017-01-01style: fix E226 violationsIgor Gnatenko1-1/+1
E226: missing whitespace around arithmetic operator Signed-off-by: Igor Gnatenko <i.gnatenko.brain@gmail.com>
2017-01-01style: fix E225 violationsIgor Gnatenko1-1/+1
E225: missing whitespace around operator Signed-off-by: Igor Gnatenko <i.gnatenko.brain@gmail.com>
2016-12-04Store subdir information for each node so we can remove files set in other ↵Jussi Pakkanen1-38/+52
subdirectories.
2016-11-20Track comma spans in arguments.Jussi Pakkanen1-0/+5
2016-11-20I can haz source files added to targets.Jussi Pakkanen1-17/+21
2016-09-02Add support to integer modulo operatorEmmanuele Bassi1-1/+8
Having support for the '%' operator makes it easier to implement even/odd version checks, like: enable_debug = get_option('enable-debug') if enable_debug == 'auto' if minor_version % 2 == 0 enable_debug = 'minimum' else enable_debug = 'yes' endif endif which would be impossible without resorting to less obvious long-hand forms like: a - (b * (a / b))
2016-08-01Forbid nested ternary operations.Jussi Pakkanen1-0/+6
2016-08-01Created ternary operator. Closes #538.Jussi Pakkanen1-0/+14
2016-04-01Move MesonException from coredata to mesonlib.Hemmo Nieminen1-1/+1
2016-01-25More comparison operators. Closes #363.Jussi Pakkanen1-5/+16
2016-01-16Renamed meson package to mesonbuild so that we can have a script named meson ↵Jussi Pakkanen1-0/+565
in the same toplevel dir.