From 29421ba691f71450c95a5cb8c5feeda23ffe01f8 Mon Sep 17 00:00:00 2001 From: blueloveTH Date: Wed, 27 Mar 2024 16:07:21 +0800 Subject: [PATCH] some fix --- include/pocketpy/str.h | 16 ++++++---------- src/pocketpy.cpp | 2 +- src/str.cpp | 4 ---- src/vm.cpp | 2 +- tests/99_builtin_func.py | 3 +++ 5 files changed, 11 insertions(+), 16 deletions(-) diff --git a/include/pocketpy/str.h b/include/pocketpy/str.h index 582a8737..5afa7e8e 100644 --- a/include/pocketpy/str.h +++ b/include/pocketpy/str.h @@ -36,10 +36,10 @@ struct Str{ bool empty() const { return size == 0; } size_t hash() const{ return std::hash()(sv()); } - Str& operator=(const Str& other); - Str operator+(const Str& other) const; - friend Str operator+(const char* p, const Str& str); - Str operator+(const char* p) const; + Str& operator=(const Str&); + Str operator+(const Str&) const; + Str operator+(const char*) const; + friend Str operator+(const char*, const Str&); bool operator==(const std::string_view other) const; bool operator!=(const std::string_view other) const; @@ -112,11 +112,11 @@ struct StrName { } bool operator<(const StrName& other) const noexcept { - return this->index < other.index; + return sv() < other.sv(); } bool operator>(const StrName& other) const noexcept { - return this->index > other.index; + return sv() > other.sv(); } static bool is_valid(int index); @@ -126,10 +126,6 @@ struct StrName { static uint32_t _pesudo_random_index; }; -struct StrNameComparator { - bool operator()(const StrName& a, const StrName& b) const; -}; - struct SStream{ PK_ALWAYS_PASS_BY_POINTER(SStream) // pod_vector is allocated by pool64 so the buffer can be moved into Str without a copy diff --git a/src/pocketpy.cpp b/src/pocketpy.cpp index 97c6fa5e..a7cd21b1 100644 --- a/src/pocketpy.cpp +++ b/src/pocketpy.cpp @@ -294,7 +294,7 @@ void init_builtins(VM* _vm) { }); _vm->bind_func<1>(_vm->builtins, "dir", [](VM* vm, ArgsView args) { - std::set names; + std::set names; if(!is_tagged(args[0]) && args[0]->is_attr_valid()){ auto keys = args[0]->attr().keys(); names.insert(keys.begin(), keys.end()); diff --git a/src/str.cpp b/src/str.cpp index a6d0ca22..b0308ffb 100644 --- a/src/str.cpp +++ b/src/str.cpp @@ -406,10 +406,6 @@ int utf8len(unsigned char c, bool suppress){ return _r_interned().find(index) != _r_interned().end(); } - bool StrNameComparator::operator()(const StrName& a, const StrName& b) const { - return a._r_interned()[a.index] < b._r_interned()[b.index]; - } - Str SStream::str(){ // after this call, the buffer is no longer valid buffer.reserve(buffer.size() + 1); // allocate one more byte for '\0' diff --git a/src/vm.cpp b/src/vm.cpp index 5b54b103..0c49a0b2 100644 --- a/src/vm.cpp +++ b/src/vm.cpp @@ -276,7 +276,7 @@ namespace pkpy{ if(i != 0) ss << "."; ss << cpnts[i]; } - return Str(ss.str()); + return ss.str(); }; if(path[0] == '.'){ diff --git a/tests/99_builtin_func.py b/tests/99_builtin_func.py index ba0ea3c8..fdda3383 100644 --- a/tests/99_builtin_func.py +++ b/tests/99_builtin_func.py @@ -630,3 +630,6 @@ def f(a, b): return sum([b, c]) assert f(1, 2) == 3 + +dir_int = dir(int) +assert dir_int[:4] == ['__add__', '__and__', '__base__', '__eq__'] \ No newline at end of file