summaryrefslogtreecommitdiff
path: root/proc.c
diff options
context:
space:
mode:
Diffstat (limited to 'proc.c')
-rw-r--r--proc.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/proc.c b/proc.c
index 749b6a8134..06a6b80649 100644
--- a/proc.c
+++ b/proc.c
@@ -1273,6 +1273,32 @@ rb_proc_get_iseq(VALUE self, int *is_proc)
return NULL;
}
+/* call-seq:
+ * prc == other -> true or false
+ * prc.eql?(other) -> true or false
+ *
+ * Two proc are the same if, and only if, they were created from the same code block.
+ *
+ * def return_block(&block)
+ * block
+ * end
+ *
+ * def pass_block_twice(&block)
+ * [return_block(&block), return_block(&block)]
+ * end
+ *
+ * block1, block2 = pass_block_twice { puts 'test' }
+ * # Blocks might be instantiated into Proc's lazily, so they may, or may not,
+ * # be the same object.
+ * # But they are produced from the same code block, so they are equal
+ * block1 == block2
+ * #=> true
+ *
+ * # Another Proc will never be equal, even if the code is the "same"
+ * block1 == proc { puts 'test' }
+ * #=> false
+ *
+ */
static VALUE
proc_eq(VALUE self, VALUE other)
{