mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-20 11:30:18 +00:00
fix: can't overload static function.
This commit is contained in:
parent
cdbe55b539
commit
fa5443e9d1
@ -591,10 +591,8 @@ class property : public object {
|
||||
object(type::of<property>()(getter, setter)) {}
|
||||
};
|
||||
|
||||
class staticmethod : public object {
|
||||
PKBIND_TYPE_IMPL(object, staticmethod, tp_staticmethod);
|
||||
|
||||
staticmethod(handle method) : object(type::of<staticmethod>()(method)) {}
|
||||
class staticmethod : public cpp_function {
|
||||
PKBIND_TYPE_IMPL(cpp_function, staticmethod, tp_staticmethod);
|
||||
};
|
||||
|
||||
namespace impl {
|
||||
@ -619,8 +617,7 @@ void bind_function(handle obj, const char* name_, Fn&& fn, const Extras&... extr
|
||||
py_setdict(
|
||||
obj.ptr(),
|
||||
name,
|
||||
staticmethod(cpp_function(is_method, name_, std::forward<Fn>(fn), extras...).ptr())
|
||||
.ptr());
|
||||
staticmethod(is_method, name_, std::forward<Fn>(fn), extras...).ptr());
|
||||
} else {
|
||||
if constexpr(has_named_args && is_method) {
|
||||
py_setdict(
|
||||
|
@ -195,6 +195,18 @@ TEST_F(PYBIND11_TEST, overload) {
|
||||
|
||||
EXPECT_EVAL_EQ("cal(1, 2)", 3);
|
||||
EXPECT_EVAL_EQ("cal(1, 2, 3)", 6);
|
||||
|
||||
struct Point {
|
||||
static int sum(int x) { return x; }
|
||||
|
||||
static int sum(int x, int y) { return x + y; }
|
||||
};
|
||||
|
||||
py::class_<Point>(m, "Point")
|
||||
.def_static("sum", py::overload_cast<int>(&Point::sum))
|
||||
.def_static("sum", py::overload_cast<int, int>(&Point::sum));
|
||||
EXPECT_EVAL_EQ("Point.sum(1)", 1);
|
||||
EXPECT_EVAL_EQ("Point.sum(1, 2)", 3);
|
||||
}
|
||||
|
||||
TEST_F(PYBIND11_TEST, return_value_policy) {
|
||||
@ -399,4 +411,3 @@ TEST_F(PYBIND11_TEST, overload_cast) {
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user