diff options
| author | Stephen Kelly <steveire@gmail.com> | 2017-01-11 21:27:03 +0000 | 
|---|---|---|
| committer | Stephen Kelly <steveire@gmail.com> | 2017-01-11 21:27:03 +0000 | 
| commit | ed1b9ce2bb2a2e51410e0a1754a72c110010a6a0 (patch) | |
| tree | 74e69c7f76a0ec8c8abf5357cefe235531e821fd | |
| parent | 8aa6843404f9c6faef66cb9c76358158eafc1af1 (diff) | |
| download | extra-cmake-modules-ed1b9ce2bb2a2e51410e0a1754a72c110010a6a0.tar.gz extra-cmake-modules-ed1b9ce2bb2a2e51410e0a1754a72c110010a6a0.tar.bz2 | |
Bindings: Fix logging output severity for parsing messages
The Python logging module uses logging severities with numerical values
which form a sequence in steps of 10.  The Clang cindex.Diagnostic
numerical values use a step size of 1, so the two are incompatible.
Introduce a mapping function so that appropriate errors get issued when
attempting to build the bindings.  The logging module has one surplus
diagnostic level, but we simply never use it.
BUG: 374801
| -rw-r--r-- | find-modules/sip_generator.py | 30 | 
1 files changed, 29 insertions, 1 deletions
| diff --git a/find-modules/sip_generator.py b/find-modules/sip_generator.py index acdec86e..f44c2b34 100644 --- a/find-modules/sip_generator.py +++ b/find-modules/sip_generator.py @@ -62,6 +62,32 @@ TEMPLATE_KINDS = [                       CursorKind.TYPE_REF, CursorKind.TEMPLATE_REF, CursorKind.NAMESPACE_REF                   ] + EXPR_KINDS +def clang_diagnostic_to_logging_diagnostic(lvl): +    """ + +    The diagnostic levels in cindex.py are + +        Ignored = 0 +        Note    = 1 +        Warning = 2 +        Error   = 3 +        Fatal   = 4 + +    and the leves in the python logging module are + +        NOTSET      0 +        DEBUG       10 +        INFO        20 +        WARNING     30 +        ERROR       40 +        CRITICAL    50 + +    """ +    return (logging.NOTSET, +        logging.INFO, +        logging.WARNING, +        logging.ERROR, +        logging.CRITICAL)[lvl]  class SipGenerator(object):      def __init__(self, project_rules, compile_flags, verbose=False, dump_includes=False, dump_privates=False): @@ -114,10 +140,12 @@ class SipGenerator(object):              #              loc = diag.location              msg = "{}:{}[{}] {}".format(loc.file, loc.line, loc.column, diag.spelling) +            if (diag.spelling == "#pragma once in main file"): +                continue              if msg in self.diagnostics:                  continue              self.diagnostics.add(msg) -            logger.log(diag.severity, "Parse error {}".format(msg)) +            logger.log(clang_diagnostic_to_logging_diagnostic(diag.severity), "Parse error {}".format(msg))          if self.dump_includes:              for include in sorted(set(self.tu.get_includes())):                  logger.debug(_("Used includes {}").format(include.include.name)) | 
