From 142e4fd45f6d04ff4a48d0fa9cfd9c8832155526 Mon Sep 17 00:00:00 2001 From: albertexye <111392956+albertexye@users.noreply.github.com> Date: Wed, 27 Mar 2024 04:07:35 -0400 Subject: [PATCH] Sort names returned by the built-in dir method (#231) * Sort names returned by the built-in dir method * some fix --------- Co-authored-by: blueloveTH --- include/pocketpy/str.h | 12 ++++++------ src/vm.cpp | 2 +- tests/99_builtin_func.py | 3 +++ 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/include/pocketpy/str.h b/include/pocketpy/str.h index b29dc96d..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); 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