* Handle explicit vs implicit interfaces Partially done. Needs alot of testing. Some of the more exotic stuff that C# can do is not handled. eg. interface IFoo { void Blah (); } class A { void Blah (); } class B : A, IFoo { } C# makes a stub in B that calls A.Blah in order to implement IFoo.Blah * Handle printing out constants ** String/char consts Mostly done. The only work we need is to escape stuff: class X { const string Z = "\t"; } ** Numerical constants Integers generally work. Need to check things like decimal. ** Enumeration constants Needs alot of work. We should print out const MyEnum x = MyEnum.Y const MyFlags z = MyFlags.X | MyFlags.Y etc. * Enumerations Need to print out the values. This should idealy be done in the most sane way possible: * In the case where values are not needed (eg, sequential from 1...n), don't print out the enumeration values. * For flags enums, values of members that are 2^n would be printed as (1 << n). Values that are combinations of other values would be printed as MyFlags.X | MyFlags.Y The goals here are (in order) * To print something that will compiler correctly (with the same values as the origional) * To print something that is as clean/humanly readable/looks like it was written by a person as possible. * Generics ** Console Parsing It is a PITA to type: monop2 'System.Collections.Generic.List`1' We should allow people to type System.Collections.Generic.List and have it guess the arity. For something like Nullable where it is overloaded by arity, we'd have to print a message. * Console Coloring It'd be cool to have syntax highlighting for the console. Some examples of this are: * colorgcc * ls --color=auto * Attributes .NET 2.0 has support for getting the data that custom attributes have. This would allow us to correctly print stuff out. Probably want this to be a command line option.