Adjust all the other places MesonException file attribute is set

A MesonException has file, lineno and colno attributes, which get
formatted as a location in mlog.exception().

The file attribute got changed from a path relative to the root source
directory to a pathname (absolute or relative to cwd) in one place in
commit b8fbbf59.  Adjust all the other places the file attribute is set
to match.

Also:
Setting MesonException.file seems to be missing in the case where Parser
returned a non-CodeBlockNode object.  Fortunately, that looks like it's
unreachable, but add it just in case.
pull/6627/head
Jon Turney 5 years ago
parent 4895830c28
commit 534a974da7
No known key found for this signature in database
GPG Key ID: C7C86F0370285C81
  1. 2
      mesonbuild/ast/interpreter.py
  2. 2
      mesonbuild/interpreter.py
  3. 2
      mesonbuild/interpreterbase.py
  4. 5
      mesonbuild/optinterpreter.py

@ -156,7 +156,7 @@ class AstInterpreter(interpreterbase.InterpreterBase):
try:
codeblock = mparser.Parser(code, subdir).parse()
except mesonlib.MesonException as me:
me.file = buildfilename
me.file = absname
raise me
self.subdir = subdir

@ -3750,7 +3750,7 @@ This will become a hard error in the future.''' % kwargs['input'], location=self
try:
codeblock = mparser.Parser(code, self.subdir).parse()
except mesonlib.MesonException as me:
me.file = buildfilename
me.file = absname
raise me
try:
self.evaluate_codeblock(codeblock)

@ -432,7 +432,7 @@ class InterpreterBase:
if not hasattr(e, 'lineno'):
e.lineno = cur.lineno
e.colno = cur.colno
e.file = os.path.join(self.subdir, 'meson.build')
e.file = os.path.join(self.source_root, self.subdir, environment.build_filename)
raise e
i += 1 # In THE FUTURE jump over blocks and stuff.

@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
import os, re
import re
import functools
import typing as T
@ -147,6 +147,7 @@ class OptionInterpreter:
if not isinstance(ast, mparser.CodeBlockNode):
e = OptionException('Option file is malformed.')
e.lineno = ast.lineno()
e.file = option_file
raise e
for cur in ast.lines:
try:
@ -154,7 +155,7 @@ class OptionInterpreter:
except Exception as e:
e.lineno = cur.lineno
e.colno = cur.colno
e.file = os.path.join('meson_options.txt')
e.file = option_file
raise e
def reduce_single(self, arg):

Loading…
Cancel
Save