From f98e067a0c90ace3d338e70706d308480d574e68 Mon Sep 17 00:00:00 2001 From: Aaron Gokaslan Date: Mon, 18 Apr 2022 10:14:58 -0400 Subject: [PATCH 1/3] Enable clang-tidy check modernize-use-nullptr --- .clang-tidy | 1 + include/pybind11/numpy.h | 4 ++-- include/pybind11/pybind11.h | 2 +- include/pybind11/pytypes.h | 6 +++--- tests/cross_module_gil_utils.cpp | 6 +++--- tests/test_numpy_dtypes.cpp | 4 ++-- 6 files changed, 12 insertions(+), 11 deletions(-) diff --git a/.clang-tidy b/.clang-tidy index d01ca352cc..5277b03233 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -29,6 +29,7 @@ modernize-use-equals-default, modernize-use-equals-delete, modernize-use-default-member-init, modernize-use-noexcept, +modernize-use-nullptr, modernize-use-emplace, modernize-use-override, modernize-use-using, diff --git a/include/pybind11/numpy.h b/include/pybind11/numpy.h index d06ddfa11d..335b78ff17 100644 --- a/include/pybind11/numpy.h +++ b/include/pybind11/numpy.h @@ -263,7 +263,7 @@ struct npy_api { static npy_api lookup() { module_ m = module_::import("numpy.core.multiarray"); auto c = m.attr("_ARRAY_API"); - void **api_ptr = (void **) PyCapsule_GetPointer(c.ptr(), NULL); + void **api_ptr = (void **) PyCapsule_GetPointer(c.ptr(), nullptr); npy_api api; #define DECL_NPY_API(Func) api.Func##_ = (decltype(api.Func##_)) api_ptr[API_##Func]; DECL_NPY_API(PyArray_GetNDArrayCFeatureVersion); @@ -1549,7 +1549,7 @@ class common_iterator { void *data() const { return p_ptr; } private: - char *p_ptr{0}; + char *p_ptr{nullptr}; container_type m_strides; }; diff --git a/include/pybind11/pybind11.h b/include/pybind11/pybind11.h index 97275e40a8..ce05b6e4e6 100644 --- a/include/pybind11/pybind11.h +++ b/include/pybind11/pybind11.h @@ -2489,7 +2489,7 @@ class exception : public object { exception(handle scope, const char *name, handle base = PyExc_Exception) { std::string full_name = scope.attr("__name__").cast() + std::string(".") + name; - m_ptr = PyErr_NewException(const_cast(full_name.c_str()), base.ptr(), NULL); + m_ptr = PyErr_NewException(const_cast(full_name.c_str()), base.ptr(), nullptr); if (hasattr(scope, "__dict__") && scope.attr("__dict__").contains(name)) { pybind11_fail("Error during initialization: multiple incompatible " "definitions with name \"" diff --git a/include/pybind11/pytypes.h b/include/pybind11/pytypes.h index 7d52774c8b..26d9025c51 100644 --- a/include/pybind11/pytypes.h +++ b/include/pybind11/pytypes.h @@ -600,13 +600,13 @@ inline handle get_function(handle value) { inline PyObject *dict_getitemstring(PyObject *v, const char *key) { PyObject *kv = nullptr, *rv = nullptr; kv = PyUnicode_FromString(key); - if (kv == NULL) { + if (kv == nullptr) { throw error_already_set(); } rv = PyDict_GetItemWithError(v, kv); Py_DECREF(kv); - if (rv == NULL && PyErr_Occurred()) { + if (rv == nullptr && PyErr_Occurred()) { throw error_already_set(); } return rv; @@ -614,7 +614,7 @@ inline PyObject *dict_getitemstring(PyObject *v, const char *key) { inline PyObject *dict_getitem(PyObject *v, PyObject *key) { PyObject *rv = PyDict_GetItemWithError(v, key); - if (rv == NULL && PyErr_Occurred()) { + if (rv == nullptr && PyErr_Occurred()) { throw error_already_set(); } return rv; diff --git a/tests/cross_module_gil_utils.cpp b/tests/cross_module_gil_utils.cpp index 2e64da052c..1436c35d6e 100644 --- a/tests/cross_module_gil_utils.cpp +++ b/tests/cross_module_gil_utils.cpp @@ -25,8 +25,8 @@ void gil_acquire() { py::gil_scoped_acquire gil; } constexpr char kModuleName[] = "cross_module_gil_utils"; -struct PyModuleDef moduledef - = {PyModuleDef_HEAD_INIT, kModuleName, NULL, 0, NULL, NULL, NULL, NULL, NULL}; +struct PyModuleDef moduledef = { + PyModuleDef_HEAD_INIT, kModuleName, nullptr, 0, nullptr, nullptr, nullptr, nullptr, nullptr}; } // namespace @@ -34,7 +34,7 @@ extern "C" PYBIND11_EXPORT PyObject *PyInit_cross_module_gil_utils() { PyObject *m = PyModule_Create(&moduledef); - if (m != NULL) { + if (m != nullptr) { static_assert(sizeof(&gil_acquire) == sizeof(void *), "Function pointer must have the same size as void*"); PyModule_AddObject( diff --git a/tests/test_numpy_dtypes.cpp b/tests/test_numpy_dtypes.cpp index 7de36f2fe8..38f2afa07d 100644 --- a/tests/test_numpy_dtypes.cpp +++ b/tests/test_numpy_dtypes.cpp @@ -289,8 +289,8 @@ py::list test_dtype_ctors() { dict["itemsize"] = py::int_(20); list.append(py::dtype::from_args(dict)); list.append(py::dtype(names, formats, offsets, 20)); - list.append(py::dtype(py::buffer_info((void *) 0, sizeof(unsigned int), "I", 1))); - list.append(py::dtype(py::buffer_info((void *) 0, 0, "T{i:a:f:b:}", 1))); + list.append(py::dtype(py::buffer_info((void *) nullptr, sizeof(unsigned int), "I", 1))); + list.append(py::dtype(py::buffer_info((void *) nullptr, 0, "T{i:a:f:b:}", 1))); list.append(py::dtype(py::detail::npy_api::NPY_DOUBLE_)); return list; } From 3f35b0960cf515f5e44b91fe9742b272bf334b49 Mon Sep 17 00:00:00 2001 From: Aaron Gokaslan Date: Mon, 18 Apr 2022 10:25:38 -0400 Subject: [PATCH 2/3] Sort clang-tidy --- .clang-tidy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.clang-tidy b/.clang-tidy index 5277b03233..656835747c 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -28,9 +28,9 @@ modernize-use-bool-literals, modernize-use-equals-default, modernize-use-equals-delete, modernize-use-default-member-init, +modernize-use-emplace, modernize-use-noexcept, modernize-use-nullptr, -modernize-use-emplace, modernize-use-override, modernize-use-using, *performance*, From 95300e99006b59b9a97ee347d96e02f96a331e87 Mon Sep 17 00:00:00 2001 From: Aaron Gokaslan Date: Mon, 18 Apr 2022 10:26:07 -0400 Subject: [PATCH 3/3] Sorted again --- .clang-tidy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.clang-tidy b/.clang-tidy index 656835747c..e82443c4ca 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -25,9 +25,9 @@ modernize-replace-random-shuffle, modernize-shrink-to-fit, modernize-use-auto, modernize-use-bool-literals, +modernize-use-default-member-init, modernize-use-equals-default, modernize-use-equals-delete, -modernize-use-default-member-init, modernize-use-emplace, modernize-use-noexcept, modernize-use-nullptr,