<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -388,7 +388,7 @@ class Compiler
 
     class Call
       def allow_private?
-        @object.nil?
+        !@object or get(:privately) or false
       end
 
       def receiver_bytecode(g)</diff>
      <filename>kernel/compiler/bytecode.rb</filename>
    </modified>
    <modified>
      <diff>@@ -229,6 +229,7 @@ class Compiler
     # AutoPrimitiveDetection is currently disabled
     # TODO - Implement the opt_* primitives it requires and reactivate
     # activate_default :auto_primitive
+    activate_default :privately
   end
 
   def activate_default(name)</diff>
      <filename>kernel/compiler/compiler.rb</filename>
    </modified>
    <modified>
      <diff>@@ -110,7 +110,7 @@ class Compiler
       @file = sexp.file
     end
 
-    attr_reader :line, :file
+    attr_reader :line, :file, :compiler
 
     def convert(x)
       @compiler.convert_sexp(x)</diff>
      <filename>kernel/compiler/node.rb</filename>
    </modified>
    <modified>
      <diff>@@ -104,6 +104,26 @@ class Compiler
     end
 
     ##
+    # Handles Rubinius.privately
+
+    class Privately &lt; Plugin
+
+      plugin :privately
+
+      def handle(g, call)
+        return false unless call_match(call, :Rubinius, :privately)
+        return false unless call.block
+
+        call.compiler.set(:privately) do
+          call.block.body.bytecode(g)
+        end
+
+        return true
+      end
+
+    end
+
+    ##
     # Handles __METHOD__
 
     class CurrentMethod &lt; Plugin</diff>
      <filename>kernel/compiler/plugins.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>6f633156a3293c82def41a5e418d2486f2ff46e5</id>
    </parent>
  </parents>
  <author>
    <name>Evan Phoenix</name>
    <email>ephoenix@engineyard.com</email>
  </author>
  <url>http://github.com/evanphx/rubinius/commit/310b84549a6c4294d7e992411b9efdf406fd86e5</url>
  <id>310b84549a6c4294d7e992411b9efdf406fd86e5</id>
  <committed-date>2009-05-04T23:40:15-07:00</committed-date>
  <authored-date>2009-05-04T23:23:49-07:00</authored-date>
  <message>Add Rubinius.privately plugin to override call type

&quot;Rubinius.privately { b.blah }&quot; will call blah as a private method on b.
Any sends done in the block are private.</message>
  <tree>b95d914f8949a6918de641b1df6ce65952edc798</tree>
  <committer>
    <name>Evan Phoenix</name>
    <email>ephoenix@engineyard.com</email>
  </committer>
</commit>
