Test fixes for the more descriptive error messages
[gitmo/Moose.git] / TODO
diff --git a/TODO b/TODO
index 6393ccb..7e66a51 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,10 +1,27 @@
 -------------------------------------------------------------------------------
+ BUGS
+------------------------------------------------------------------------------- 
+
+-------------------------------------------------------------------------------
 TODO
 -------------------------------------------------------------------------------
 
-- roles
+- DDuncan's Str types
+
+subtype 'Str' 
+    => as 'Value' 
+    => where { Encode::is_utf8( $_[0] ) or $_[0] !~ m/[^0x00-0x7F]/x } 
+    => optimize_as { defined($_[0]) && !ref($_[0]) };
 
-Need to figure out the details of composite roles
+subtype 'Blob' 
+    => as 'Value' 
+    => where { !Encode::is_utf8( $_[0] ) } 
+    => optimize_as { defined($_[0]) && !ref($_[0]) };
+
+
+- should handle some moose-specific options in &Moose::Meta::Class::create
+  things like roles, and method modifiers (although those can probably be 
+  ignored if i want to)
 
 - type unions
 
@@ -31,26 +48,6 @@ over there.. in that other object
 
 (... probably be a custom metaclass)
 
-- compile time extends
-
-[00:39]        sri         but maybe a better syntax for compile time extends
-[00:39]        stevan  I have been pondering that actually
-[00:39]        sri         use Moose extends => Foo::Bar
-[00:40]        stevan  I think now that we have the Sub::Exporter stuff 
-                    in, that kinda thing should be pretty easy
-
-nothingmuch notes that all the constructs should be supported in the entirety of the use clause:
-
-    use Moose (
-        has => foo (
-            ....
-        ),
-    );
-
-and that if this usage style is used nothing is exported to the namespace.
-
-- default should dclone()
-
 - subtype $anon_subtype => where { ... }
 
 [22:56]        stevan  sub mst_doesnt_like_to_type { (shift)->meta->attr->type_contstraint }
@@ -81,41 +78,35 @@ and that if this usage style is used nothing is exported to the namespace.
 [23:01]        mst     right
 [23:01]        stevan  ok
 
-- method keyword
-
-[23:37]        mst     more seriously, I'd still like a "method" keyword or something
-[23:37]        mst     method 'foo' => sub { ... };
-[23:38]        stevan  what would it do more than sub foo { ... }?
-[23:39]        stevan  I would like multimethods actually
-[23:39]        mst     almost exactly nothing, to begin with
-[23:39]        stevan  but thats just cause I love CLOS and am reading a book on Dylan now
-[23:40]        stevan  keyword squating :)
-[23:40]        mst     but if we need to hook stuff later it's bloody handy to already have people writing it that way
-[23:40]        mst     right
-...
-[23:49]        mst     oh, also: method 'has' => sub { ... } could squelch the redefine warning
-
-- Role excludes
-
-[17:00]        stevan  I am reading the new Fortress Spec 
-[17:00]        stevan  http://research.sun.com/projects/plrg/fortress0903.pdf
-[17:00]        stevan  they have traits too
-[17:01]        stevan  and they have one cool feature which we might want to steal
-[17:01]        stevan  traits can "exclude" other traits
-[17:01]        stevan  which means they cannot be combined with other classes/roles which does() that trait
-[17:01]        stevan  the example they give is
-[17:01]        stevan  trait OrganicMolecule extends Molecule 
-[17:01]        stevan      excludes { InorganicMolecule } 
-[17:01]        stevan  end 
-[17:01]        stevan  trait InorganicMolecule extends Molecule 
-[17:01]        stevan  end 
-[17:01]        stevan  this creates a set of mutually exclusive traits
-[17:02]        stevan  so that this:
-[17:02]        stevan  trait ScienceGoo extends { OrganicMolecule, InorganicMolocule } end
-[17:02]        stevan  would fail
-[17:02]        stevan  because OrganicMolecule, InorganicMolocule can never be used together
-[17:03]        stevan  I am thinking this is quite sane 
+- local coerce
+
+[13:16]        mst     stevan: slight problem with coerce
+[13:16]        mst     I only get to declare it once
+[13:17]        mst     so if I'm trying to declare it cast-style per-source-class rather than per-target-class
+[13:17]        mst     I am extremely screwed
+[13:17]        stevan  yes
+[13:17]        stevan  they are not class specific 
+[13:18]        stevan  they are attached to the type constraint itself
+[13:18]        *       stevan ponders anon-coercion-metaobjects
+[13:18]        mst     yes, that's fine
+[13:19]        mst     but when I declare a class
+[13:19]        mst     I want to be able to say "this class coerces to X type via <this>"
+[13:19]        stevan  yeah something like that
+[13:19]        stevan  oh,.. hmm
+[13:20]        stevan  sort of like inflate/deflate?
+[13:20]        stevan  around the accessors?
+[13:25]        *       bluefeet has quit (Remote host closed the connection)
+[13:27]        mst     no
+[13:27]        mst     nothing like that
+[13:27]        mst     like a cast
+[13:31]        mst     stevan: $obj->foo($bar); where 'foo' expects a 'Foo' object
+[13:31]        mst     stevan: is effectively <Foo>$bar, right?
+[13:32]        mst     stevan: I want to be able to say in package Bar
+[13:32]        mst     stevan: coerce_to 'Foo' via { ... };
+[13:32]        mst     etc.
+[13:53]        stevan  hmm  
+  
+  
 -------------------------------------------------------------------------------
 TO PONDER
 -------------------------------------------------------------------------------