[finished up and cleaned up selfless objects (2007-03-05)
kragen@pobox.com**20070412105556] {
hunk ./bicicleta.ml 9
-            | Derive of string * string * bicexpr * lookup * bicobj 
+            | Derive of string * string option * bicexpr * lookup * bicobj 
hunk ./bicicleta.ml 21
-(* XXX How to handle methods without a selfname? Maybe have a special
-   non-string name that doesn't compare equal to anything?  Or a
-   special kind of method that doesn't augment its environment when
-   called? *)
hunk ./bicicleta.ml 25
-    | Literal(self, methods) -> bind ProtoObject env self methods
-    | AnonLiteral(methods) -> bind ProtoObject env "i hope nobody XXX" methods
+    | Literal(self, methods) -> bind ProtoObject env (Some self) methods
+    | AnonLiteral(methods) -> bind ProtoObject env None methods
hunk ./bicicleta.ml 28
-        in bind object_ env self methods
+        in bind object_ env (Some self) methods
hunk ./bicicleta.ml 30
-        in bind object_ env "i hope nobody uses this identifier XXX" methods
+        in bind object_ env None methods
hunk ./bicicleta.ml 39
-    | Derive(name, self, body, env, next) as m -> 
+    | Derive(name, _, _, _, next) as m -> 
hunk ./bicicleta.ml 46
-        eval (Add(methodself, self, env)) body 
+        (match methodself with 
+            Some name -> eval (Add(name, self, env)) body 
+          | none -> eval env body)
hunk ./bicicleta_parser.mly 14
- * - leaving out the self-name in an override: pt { x = 3 } for pt {p: x = 3 }
}
