Преглед изворни кода

Add equality comparisons to Ptr (#774)

Geoff Romer пре 4 година
родитељ
комит
0ac220b30f

+ 3 - 0
executable_semantics/common/ptr.h

@@ -32,6 +32,9 @@ class Ptr {
 
   T* Get() const { return ptr; }
 
+  friend auto operator==(Ptr lhs, Ptr rhs) { return lhs.ptr == rhs.ptr; }
+  friend auto operator!=(Ptr lhs, Ptr rhs) { return lhs.ptr != rhs.ptr; }
+
  private:
   T* ptr;
 };

+ 1 - 2
executable_semantics/interpreter/interpreter.cpp

@@ -1139,8 +1139,7 @@ struct DoTransition {
 
   void operator()(const UnwindTo& unwind_to) {
     Ptr<Frame> frame = state->stack.Top();
-    // TODO: drop .Get() calls once `Ptr` has comparison operators
-    while (frame->todo.Top().Get() != unwind_to.new_top.Get()) {
+    while (frame->todo.Top() != unwind_to.new_top) {
       if (IsBlockAct(frame->todo.Top())) {
         DeallocateScope(frame->scopes.Top());
         frame->scopes.Pop();