meta: fix constness detection for static functions in meta_type::invoke

This commit is contained in:
Michele Caini
2023-04-04 09:35:10 +02:00
parent c331107651
commit 1eab2a4a80
2 changed files with 5 additions and 2 deletions
+1 -1
View File
@@ -1389,7 +1389,7 @@ public:
meta_any invoke(const id_type id, meta_handle instance, meta_any *const args, const size_type sz) const {
if(node.details) {
if(auto it = node.details->func.find(id); it != node.details->func.cend()) {
if(const auto *candidate = lookup(args, sz, (instance->data() == nullptr), [curr = &it->second]() mutable { return curr ? std::exchange(curr, curr->next.get()) : nullptr; }); candidate) {
if(const auto *candidate = lookup(args, sz, instance && (instance->data() == nullptr), [curr = &it->second]() mutable { return curr ? std::exchange(curr, curr->next.get()) : nullptr; }); candidate) {
return candidate->invoke(*ctx, meta_handle{*ctx, std::move(instance)}, args);
}
}
+4 -1
View File
@@ -378,7 +378,10 @@ TEST_F(MetaType, Invoke) {
clazz_t instance{};
ASSERT_TRUE(type.invoke("member"_hs, instance));
ASSERT_FALSE(type.invoke("rebmem"_hs, {}));
ASSERT_FALSE(type.invoke("rebmem"_hs, instance));
ASSERT_TRUE(type.invoke("func"_hs, {}));
ASSERT_FALSE(type.invoke("cnuf"_hs, {}));
}
TEST_F(MetaType, InvokeFromBase) {