[all-commits] [llvm/llvm-project] 0a51bc: Add clang_CXXMethod_isExplicit to libclang

diseraluca-qt via All-commits all-commits at lists.llvm.org
Fri Jan 27 04:24:53 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 0a51bc731bcc2c27e4fe97957a83642d93d989be
      https://github.com/llvm/llvm-project/commit/0a51bc731bcc2c27e4fe97957a83642d93d989be
  Author: Luca Di Sera <luca.disera at qt.io>
  Date:   2023-01-27 (Fri, 27 Jan 2023)

  Changed paths:
    M clang/bindings/python/clang/cindex.py
    M clang/bindings/python/tests/cindex/test_cursor.py
    M clang/include/clang-c/Index.h
    A clang/test/Index/explicit-constructor.cpp
    A clang/test/Index/explicit-conversion-function.cpp
    M clang/test/Index/get-cursor.cpp
    M clang/test/Index/index-file.cpp
    M clang/test/Index/recursive-cxx-member-calls.cpp
    M clang/tools/c-index-test/c-index-test.c
    M clang/tools/libclang/CIndex.cpp
    M clang/tools/libclang/libclang.map

  Log Message:
  -----------
  Add clang_CXXMethod_isExplicit to libclang

The new method is a wrapper of `CXXConstructorDecl::isExplicit` and
`CXXConversionDecl::isExplicit`, allowing the user to recognize whether
the declaration pointed to by a cursor was marked with the explicit
specifier.

An export for the function, together with its documentation, was added
to "clang/include/clang-c/Index.h" with an implementation provided in
"clang/tools/libclang/CIndex.cpp".

The implementation is based on similar `clang_CXXMethod`
implementations, returning a falsy unsigned value when the cursor is not
a declaration, is not a declaration for a constructor or conversion
function or is not a relevant declaration that was marked with the
`explicit` specifier.

The new symbol was added to "clang/tools/libclang/libclang.map" to be
exported, under the LLVM16 tag.

"clang/tools/c-index-test/c-index-test.c" was modified to print a
specific tag, "(explicit)", for cursors that are recognized by
`clang_CXXMethod_isExplicit`.

Two new regression files, "explicit-constructor.cpp" and
"explicit-conversion-function.cpp", were added to "clang/test/Index", to
ensure that the behavior of the new function is correct for constructors
and conversion functions, respectively.

The "get-cursor.cpp", "index-file.cpp" and
"recursive-cxx-member-calls.cpp" regression files in "clang/test/Index"
were updated as they were affected by the new "(explicit)" tag.

A binding for the new function was added to libclang's python's
bindings, in "clang/bindings/python/clang/cindex.py", as the
"is_explicit_method" method under `Cursor`.

An accompanying test was added to
"clang/bindings/python/tests/cindex/test_cursor.py", mimicking the
regression tests for the C side.

The current release note for Clang, "clang/docs/ReleaseNotes.rst" was
modified to report the new addition under the "libclang" section.

Reviewed By: aaron.ballman

Differential Revision: https://reviews.llvm.org/D140756




More information about the All-commits mailing list