فهرست منبع

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 <blueloveth@foxmail.com>
albertexye 1 سال پیش
والد
کامیت
142e4fd45f
3فایلهای تغییر یافته به همراه10 افزوده شده و 7 حذف شده
  1. 6 6
      include/pocketpy/str.h
  2. 1 1
      src/vm.cpp
  3. 3 0
      tests/99_builtin_func.py

+ 6 - 6
include/pocketpy/str.h

@@ -36,10 +36,10 @@ struct Str{
     bool empty() const { return size == 0; }
     size_t hash() const{ return std::hash<std::string_view>()(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);

+ 1 - 1
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] == '.'){

+ 3 - 0
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__']