Store the input filename and line number in Event.
A later patch will use this to improve error messages.
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
scripts/tracetool/__init__.py | 27 ++++++++++++++++++++++-----
1 file changed, 22 insertions(+), 5 deletions(-)
diff --git a/scripts/tracetool/__init__.py b/scripts/tracetool/__init__.py
index e4ee4d5e61..1a6e2fa64a 100644
--- a/scripts/tracetool/__init__.py
+++ b/scripts/tracetool/__init__.py
@@ -218,6 +218,10 @@ class Event(object):
Properties of the event.
args : Arguments
The event arguments.
+ lineno : int
+ The line number in the input file.
+ filename : str
+ The path to the input file.
"""
@@ -230,7 +234,7 @@ class Event(object):
_VALID_PROPS = set(["disable", "tcg", "tcg-trans", "tcg-exec", "vcpu"])
- def __init__(self, name, props, fmt, args, orig=None,
+ def __init__(self, name, props, fmt, args, lineno, filename, orig=None,
event_trans=None, event_exec=None):
"""
Parameters
@@ -243,6 +247,10 @@ class Event(object):
Event printing format string(s).
args : Arguments
Event arguments.
+ lineno : int
+ The line number in the input file.
+ filename : str
+ The path to the input file.
orig : Event or None
Original Event before transformation/generation.
event_trans : Event or None
@@ -255,6 +263,8 @@ class Event(object):
self.properties = props
self.fmt = fmt
self.args = args
+ self.lineno = int(lineno)
+ self.filename = str(filename)
self.event_trans = event_trans
self.event_exec = event_exec
@@ -276,16 +286,21 @@ class Event(object):
def copy(self):
"""Create a new copy."""
return Event(self.name, list(self.properties), self.fmt,
- self.args.copy(), self, self.event_trans, self.event_exec)
+ self.args.copy(), self.lineno, self.filename,
+ self, self.event_trans, self.event_exec)
@staticmethod
- def build(line_str):
+ def build(line_str, lineno, filename):
"""Build an Event instance from a string.
Parameters
----------
line_str : str
Line describing the event.
+ lineno : int
+ Line number in input file.
+ filename : str
+ Path to input file.
"""
m = Event._CRE.match(line_str)
assert m is not None
@@ -315,7 +330,7 @@ class Event(object):
if "tcg" in props and isinstance(fmt, str):
raise ValueError("Events with 'tcg' property must have two format strings")
- event = Event(name, props, fmt, args)
+ event = Event(name, props, fmt, args, lineno, filename)
# add implicit arguments when using the 'vcpu' property
import tracetool.vcpu
@@ -360,6 +375,8 @@ class Event(object):
list(self.properties),
self.fmt,
self.args.transform(*trans),
+ self.lineno,
+ self.filename,
self)
@@ -386,7 +403,7 @@ def read_events(fobj, fname):
continue
try:
- event = Event.build(line)
+ event = Event.build(line, lineno, fname)
except ValueError as e:
arg0 = 'Error at %s:%d: %s' % (fname, lineno, e.args[0])
e.args = (arg0,) + e.args[1:]
--
2.26.2
Le jeu. 27 août 2020 16:32, Stefan Hajnoczi <stefanha@redhat.com> a écrit :
> Store the input filename and line number in Event.
>
> A later patch will use this to improve error messages.
>
> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
> scripts/tracetool/__init__.py | 27 ++++++++++++++++++++++-----
> 1 file changed, 22 insertions(+), 5 deletions(-)
>
> diff --git a/scripts/tracetool/__init__.py b/scripts/tracetool/__init__.py
> index e4ee4d5e61..1a6e2fa64a 100644
> --- a/scripts/tracetool/__init__.py
> +++ b/scripts/tracetool/__init__.py
> @@ -218,6 +218,10 @@ class Event(object):
> Properties of the event.
> args : Arguments
> The event arguments.
> + lineno : int
> + The line number in the input file.
> + filename : str
> + The path to the input file.
>
> """
>
> @@ -230,7 +234,7 @@ class Event(object):
>
> _VALID_PROPS = set(["disable", "tcg", "tcg-trans", "tcg-exec",
> "vcpu"])
>
> - def __init__(self, name, props, fmt, args, orig=None,
> + def __init__(self, name, props, fmt, args, lineno, filename,
> orig=None,
> event_trans=None, event_exec=None):
> """
> Parameters
> @@ -243,6 +247,10 @@ class Event(object):
> Event printing format string(s).
> args : Arguments
> Event arguments.
> + lineno : int
> + The line number in the input file.
> + filename : str
> + The path to the input file.
> orig : Event or None
> Original Event before transformation/generation.
> event_trans : Event or None
> @@ -255,6 +263,8 @@ class Event(object):
> self.properties = props
> self.fmt = fmt
> self.args = args
> + self.lineno = int(lineno)
> + self.filename = str(filename)
> self.event_trans = event_trans
> self.event_exec = event_exec
>
> @@ -276,16 +286,21 @@ class Event(object):
> def copy(self):
> """Create a new copy."""
> return Event(self.name, list(self.properties), self.fmt,
> - self.args.copy(), self, self.event_trans,
> self.event_exec)
> + self.args.copy(), self.lineno, self.filename,
> + self, self.event_trans, self.event_exec)
>
> @staticmethod
> - def build(line_str):
> + def build(line_str, lineno, filename):
> """Build an Event instance from a string.
>
> Parameters
> ----------
> line_str : str
> Line describing the event.
> + lineno : int
> + Line number in input file.
> + filename : str
> + Path to input file.
> """
> m = Event._CRE.match(line_str)
> assert m is not None
> @@ -315,7 +330,7 @@ class Event(object):
> if "tcg" in props and isinstance(fmt, str):
> raise ValueError("Events with 'tcg' property must have two
> format strings")
>
> - event = Event(name, props, fmt, args)
> + event = Event(name, props, fmt, args, lineno, filename)
>
> # add implicit arguments when using the 'vcpu' property
> import tracetool.vcpu
> @@ -360,6 +375,8 @@ class Event(object):
> list(self.properties),
> self.fmt,
> self.args.transform(*trans),
> + self.lineno,
> + self.filename,
> self)
>
>
> @@ -386,7 +403,7 @@ def read_events(fobj, fname):
> continue
>
> try:
> - event = Event.build(line)
> + event = Event.build(line, lineno, fname)
> except ValueError as e:
> arg0 = 'Error at %s:%d: %s' % (fname, lineno, e.args[0])
> e.args = (arg0,) + e.args[1:]
> --
> 2.26.2
>
>
On Thu, 27 Aug 2020 at 15:29, Stefan Hajnoczi <stefanha@redhat.com> wrote: > > Store the input filename and line number in Event. > > A later patch will use this to improve error messages. > > Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> thanks -- PMM
© 2016 - 2025 Red Hat, Inc.