Commit 7c188fa8 authored by Tom Stellard's avatar Tom Stellard
Browse files

Merging r312622:

------------------------------------------------------------------------
r312622 | jbcoe | 2017-09-06 00:33:32 -0700 (Wed, 06 Sep 2017) | 13 lines

Fix __repr__ for Diagnostic in clang.cindex

Summary: Also move misplaced tests for exception specification to fix failing Python tests.

Reviewers: hans, compnerd

Reviewed By: compnerd

Subscribers: cfe-commits

Tags: #clang-c

Differential Revision: https://reviews.llvm.org/D37490
------------------------------------------------------------------------

llvm-svn: 314434
parent 722d0d27
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -207,7 +207,7 @@ class _CXString(Structure):
        conf.lib.clang_disposeString(self)

    @staticmethod
    def from_result(res, fn, args):
    def from_result(res, fn=None, args=None):
        assert isinstance(res, _CXString)
        return conf.lib.clang_getCString(res)

@@ -459,8 +459,7 @@ class Diagnostic(object):
        """The command-line option that disables this diagnostic."""
        disable = _CXString()
        conf.lib.clang_getDiagnosticOption(self, byref(disable))

        return conf.lib.clang_getCString(disable)
        return _CXString.from_result(disable)

    def format(self, options=None):
        """
@@ -473,8 +472,7 @@ class Diagnostic(object):
            options = conf.lib.clang_defaultDiagnosticDisplayOptions()
        if options & ~Diagnostic._FormatOptionsMask:
            raise ValueError('Invalid format options')
        formatted = conf.lib.clang_formatDiagnostic(self, options)
        return conf.lib.clang_getCString(formatted)
        return conf.lib.clang_formatDiagnostic(self, options)

    def __repr__(self):
        return "<Diagnostic severity %r, location %r, spelling %r>" % (
+8 −0
Original line number Diff line number Diff line
@@ -92,3 +92,11 @@ def test_diagnostic_children():
    assert children[0].spelling.endswith('declared here')
    assert children[0].location.line == 1
    assert children[0].location.column == 1

def test_diagnostic_string_repr():
    tu = get_tu('struct MissingSemicolon{}')
    assert len(tu.diagnostics) == 1
    d = tu.diagnostics[0]

    assert repr(d) == '<Diagnostic severity 3, location <SourceLocation file \'t.c\', line 1, column 26>, spelling "expected \';\' after struct">'