aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Turney <jon.turney@dronecode.org.uk>2020-02-14 02:58:37 +0000
committerJon Turney <jon.turney@dronecode.org.uk>2020-02-28 11:54:04 +0000
commit346b5c4be71bb1f502507d92ffdb1ded4c3bd85d (patch)
treee2cfb85a848d6418c07418af9982f6cd4ac532d8
parent534a974da756c4b71b7ba10a6853c2be14a9b30e (diff)
downloadmeson-346b5c4be71bb1f502507d92ffdb1ded4c3bd85d.zip
meson-346b5c4be71bb1f502507d92ffdb1ded4c3bd85d.tar.gz
meson-346b5c4be71bb1f502507d92ffdb1ded4c3bd85d.tar.bz2
Store filename in node location
Warnings have a location node object (with subdir and lineno attributes), which is passed as a location: kwarg to mlog.warning() and formatted in _log_error(). Re-purpose the subdir attribute (path relative to the source root dir, with an implied filename of 'meson.build'), which is stored into the node by parser(), to contain a pathname. (Properly I should rename 'subdir' -> 'file' everywhere, but that's a lot of churn just to see if this works) Notes: The warning location node may also have a colno attribute, which is currently ignored by _log_error(). We can't currently issue warnings with locations in meson_options.txt because the filename isn't part of the location (as it's assumed to be 'meson.build).
-rw-r--r--mesonbuild/ast/interpreter.py2
-rw-r--r--mesonbuild/interpreter.py2
-rw-r--r--mesonbuild/interpreterbase.py2
-rw-r--r--mesonbuild/mlog.py2
-rw-r--r--mesonbuild/optinterpreter.py2
5 files changed, 5 insertions, 5 deletions
diff --git a/mesonbuild/ast/interpreter.py b/mesonbuild/ast/interpreter.py
index bee5165..5f47ad3 100644
--- a/mesonbuild/ast/interpreter.py
+++ b/mesonbuild/ast/interpreter.py
@@ -154,7 +154,7 @@ class AstInterpreter(interpreterbase.InterpreterBase):
code = f.read()
assert(isinstance(code, str))
try:
- codeblock = mparser.Parser(code, subdir).parse()
+ codeblock = mparser.Parser(code, absname).parse()
except mesonlib.MesonException as me:
me.file = absname
raise me
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index bd85577..a9e0a3b 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -3748,7 +3748,7 @@ This will become a hard error in the future.''' % kwargs['input'], location=self
code = f.read()
assert(isinstance(code, str))
try:
- codeblock = mparser.Parser(code, self.subdir).parse()
+ codeblock = mparser.Parser(code, absname).parse()
except mesonlib.MesonException as me:
me.file = absname
raise me
diff --git a/mesonbuild/interpreterbase.py b/mesonbuild/interpreterbase.py
index 842aeac..d723da5 100644
--- a/mesonbuild/interpreterbase.py
+++ b/mesonbuild/interpreterbase.py
@@ -381,7 +381,7 @@ class InterpreterBase:
raise InvalidCode('Builder file is empty.')
assert(isinstance(code, str))
try:
- self.ast = mparser.Parser(code, self.subdir).parse()
+ self.ast = mparser.Parser(code, mesonfile).parse()
except mesonlib.MesonException as me:
me.file = mesonfile
raise me
diff --git a/mesonbuild/mlog.py b/mesonbuild/mlog.py
index c5ebbbf..b563e41 100644
--- a/mesonbuild/mlog.py
+++ b/mesonbuild/mlog.py
@@ -251,7 +251,7 @@ def _log_error(severity: str, *rargs: T.Union[str, AnsiDecorator],
location = kwargs.pop('location', None)
if location is not None:
- location_file = os.path.join(location.subdir, build_filename)
+ location_file = location.subdir
location_str = get_error_location_string(location_file, location.lineno)
# Unions are frankly awful, and we have to T.cast here to get mypy
# to understand that the list concatenation is safe
diff --git a/mesonbuild/optinterpreter.py b/mesonbuild/optinterpreter.py
index 2632b31..fd0a8c9 100644
--- a/mesonbuild/optinterpreter.py
+++ b/mesonbuild/optinterpreter.py
@@ -140,7 +140,7 @@ class OptionInterpreter:
def process(self, option_file):
try:
with open(option_file, 'r', encoding='utf8') as f:
- ast = mparser.Parser(f.read(), '').parse()
+ ast = mparser.Parser(f.read(), option_file).parse()
except mesonlib.MesonException as me:
me.file = option_file
raise me