diff options
-rw-r--r-- | mesonbuild/mlog.py | 11 | ||||
-rw-r--r-- | mesonbuild/mparser.py | 2 |
2 files changed, 12 insertions, 1 deletions
diff --git a/mesonbuild/mlog.py b/mesonbuild/mlog.py index e23091e..ae8c7a3 100644 --- a/mesonbuild/mlog.py +++ b/mesonbuild/mlog.py @@ -495,3 +495,14 @@ def stop_pager() -> None: pass log_pager.wait() log_pager = None + + +def code_line(text: str, line: str, colno: int) -> str: + """Print a line with a caret pointing to the colno + + :param text: A message to display before the line + :param line: The line of code to be pointed to + :param colno: The column number to point at + :return: A formatted string of the text, line, and a caret + """ + return f'{text}\n{line}\n{" " * colno}^' diff --git a/mesonbuild/mparser.py b/mesonbuild/mparser.py index 6b49365..98f530f 100644 --- a/mesonbuild/mparser.py +++ b/mesonbuild/mparser.py @@ -47,7 +47,7 @@ def decode_match(match: T.Match[str]) -> str: class ParseException(MesonException): def __init__(self, text: str, line: str, lineno: int, colno: int) -> None: # Format as error message, followed by the line with the error, followed by a caret to show the error column. - super().__init__("{}\n{}\n{}".format(text, line, '{}^'.format(' ' * colno))) + super().__init__(mlog.code_line(text, line, colno)) self.lineno = lineno self.colno = colno |