Home | History | Annotate | Download | only in mojom
      1 # Copyright 2014 The Chromium Authors. All rights reserved.
      2 # Use of this source code is governed by a BSD-style license that can be
      3 # found in the LICENSE file.
      4 
      5 class Error(Exception):
      6   """Base class for Mojo IDL bindings parser/generator errors."""
      7 
      8   def __init__(self, filename, message, lineno=None, addenda=None, **kwargs):
      9     """|filename| is the (primary) file which caused the error, |message| is the
     10     error message, |lineno| is the 1-based line number (or |None| if not
     11     applicable/available), and |addenda| is a list of additional lines to append
     12     to the final error message."""
     13     Exception.__init__(self, **kwargs)
     14     self.filename = filename
     15     self.message = message
     16     self.lineno = lineno
     17     self.addenda = addenda
     18 
     19   def __str__(self):
     20     if self.lineno:
     21       s = "%s:%d: Error: %s" % (self.filename, self.lineno, self.message)
     22     else:
     23       s = "%s: Error: %s" % (self.filename, self.message)
     24     return "\n".join([s] + self.addenda) if self.addenda else s
     25 
     26   def __repr__(self):
     27     return str(self)
     28