[Mono-list] Re: Patch for mcs

Gaurav Vaish Gaurav Vaish <gaurav.vaish@gmail.com>
Sat, 30 Oct 2004 18:05:06 +0530


------=_Part_2082_16059728.1099139706236
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Hmm...

   Here's the latest diff.

   Rest is same as in previous patch. However, in this I have a change
in the definition of "enum_declaration" in cs-parser.jay:

   New definition looks like:

---------------------------------------------------
enum_declaration
	: opt_attributes
	  opt_modifiers
	  ENUM IDENTIFIER 
	  opt_enum_base
	  {
		mcsdoc_docs = lexer.GetDocs();
		//lexer.SaveDocument();
	  }
	  enum_body
	  opt_semicolon
	  { 
---------------------------------------------------

   I have appropriately updated the code after "opt_semicolon {" to
take care of the enum_body.

   The reason is that I cannot collect the document after the
declaration has started. I need to collect the document immediately
after the enum bases are defined.

   Although, it is based on the assumption that there will be no code like:

   enum name /* comment can fool me */ : char
   {
    ...
   }

   But, it's ok. It's consistent with other types. It will be fooled
everywhere, unless I moved the collection of the docs immediately
after "ENUM" or "CLASS" etc.

   Please include this as the final patch.


Cheers,
Gaurav Vaish
http://csdoc.sf.net
http://gallery.mastergaurav.org
-----------------------------------

------=_Part_2082_16059728.1099139706236
Content-Type: text/plain; name="DIFF_MCS"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment; filename="DIFF_MCS"

diff -u ./class.cs /cygdrive/d/gvaish/Projects/SF/csdoc/csdoc/src/mcsdoc/mc=
s/class.cs
--- ./class.cs=092004-10-29 16:01:28.000000000 +0530
+++ /cygdrive/d/gvaish/Projects/SF/csdoc/csdoc/src/mcsdoc/mcs/class.cs=0920=
04-10-30 16:52:08.000000000 +0530
@@ -829,6 +829,20 @@
 =09=09=09}
 =09=09}
=20
+=09=09private TypeExpr baseClassType =3D null;
+
+=09=09/// <summary>
+=09=09/// Returns the type of the base class
+=09=09/// </summary>
+=09=09/// <remarks>master's hack</remarks>
+=09=09public Type BaseType
+=09=09{
+=09=09=09get
+=09=09=09{
+=09=09=09=09return baseClassType.Type;
+=09=09=09}
+=09=09}
+
 =09=09//
 =09=09// Emits the instance field initializers
 =09=09//
@@ -897,10 +911,10 @@
 =09=09=09
 =09=09}
=20
-=09=09/// <remarks>
+=09=09/// <summary>
 =09=09///  The pending methods that need to be implemented
-=09=09//   (interfaces or abstract methods)
-=09=09/// </remarks>
+=09=09///   (interfaces or abstract methods)
+=09=09/// </summary>
 =09=09public PendingImplementation Pending;
=20
 =09=09public abstract void Register ();
@@ -1147,6 +1161,12 @@
 =09=09=09if (error)
 =09=09=09=09return null;
=20
+=09=09=09//master's hack
+=09=09=09if(baseClassType =3D=3D null)
+=09=09=09{
+=09=09=09=09baseClassType =3D parent;
+=09=09=09}
+
 =09=09=09if (parent =3D=3D null) {
 =09=09=09=09if (Kind =3D=3D Kind.Class){
 =09=09=09=09=09if (RootContext.StdLib)
@@ -1555,20 +1575,20 @@
 =09=09///   Only, we need to use this for types which are _being_ defined =
because MS'=20
 =09=09///   implementation can't take care of that.
 =09=09/// </summary>
-=09=09//
-=09=09// FIXME: return an empty static array instead of null, that cleans =
up
-=09=09// some code and is consistent with some coding conventions I just f=
ound
-=09=09// out existed ;-)
-=09=09//
-=09=09//
-=09=09// Notice that in various cases we check if our field is non-null,
-=09=09// something that would normally mean that there was a bug elsewhere=
.
-=09=09//
-=09=09// The problem happens while we are defining p-invoke methods, as th=
ose
-=09=09// will trigger a FindMembers, but this happens before things are de=
fined
-=09=09//
-=09=09// Since the whole process is a no-op, it is fine to check for null =
here.
-=09=09//
+=09=09/// <remarks>
+=09=09/// FIXME: return an empty static array instead of null, that cleans=
 up
+=09=09/// some code and is consistent with some coding conventions I just =
found
+=09=09/// out existed ;-)
+=09=09///
+=09=09///
+=09=09/// Notice that in various cases we check if our field is non-null,
+=09=09/// something that would normally mean that there was a bug elsewher=
e.
+=09=09///
+=09=09/// The problem happens while we are defining p-invoke methods, as t=
hose
+=09=09/// will trigger a FindMembers, but this happens before things are d=
efined
+=09=09///
+=09=09/// Since the whole process is a no-op, it is fine to check for null=
 here.
+=09=09/// </remarks>
 =09=09public override MemberList FindMembers (MemberTypes mt, BindingFlags=
 bf,
 =09=09=09=09=09=09=09MemberFilter filter, object criteria)
 =09=09{
@@ -5991,7 +6011,7 @@
 =09=09}
 =09}
=20
-=09/// </summary>
+=09/// <summary>
 =09///  Gigantic workaround  for lameness in SRE follows :
 =09///  This class derives from EventInfo and attempts to basically
 =09///  wrap around the EventBuilder so that FindMembers can quickly
diff -u ./cs-parser.jay /cygdrive/d/gvaish/Projects/SF/csdoc/csdoc/src/mcsd=
oc/mcs/cs-parser.jay
--- ./cs-parser.jay=092004-10-29 16:01:28.000000000 +0530
+++ /cygdrive/d/gvaish/Projects/SF/csdoc/csdoc/src/mcsdoc/mcs/cs-parser.jay=
=092004-10-30 17:32:30.000000000 +0530
@@ -59,7 +59,7 @@
 =09=09/// <summary>
 =09=09///   Used to determine if we are parsing the get/set pair
 =09=09///   of an indexer or a property
-=09=09/// </summmary>
+=09=09/// </summary>
 =09=09bool  parsing_indexer;
=20
 =09=09///
@@ -81,7 +81,8 @@
 =09=09/// The current file.
 =09=09///
 =09=09SourceFile file;
-=09=09
+
+=09=09string mcsdoc_docs;=09=09
 =09=09
 =09=09/// Current attribute target
 =09=09string current_attr_target;
@@ -733,6 +734,8 @@
=20
 =09=09=09current_container =3D current_class;
 =09=09=09RootContext.Tree.RecordDecl (name.GetName (true), current_class);
+=09=09=09current_class.Documentation =3D lexer.GetDocs();
+=09=09=09//lexer.SaveDocument();
 =09=09}
 =09  }
 =09  opt_class_base
@@ -809,6 +812,8 @@
 =09=09=09=09(Attributes) $1, l);
=20
 =09=09=09current_container.AddConstant (c);
+=09=09=09c.Documentation =3D lexer.GetDocs();
+=09=09=09//lexer.SaveDocument();
 =09=09}
 =09  }
 =09;
@@ -861,6 +866,8 @@
 =09=09=09=09=09=09 (Attributes) $1, l);
=20
 =09=09=09current_container.AddField (field);
+=09=09=09field.Documentation =3D lexer.GetDocs();
+=09=09=09//lexer.SaveDocument();
 =09=09}
 =09  }
 =09| opt_attributes
@@ -939,6 +946,8 @@
=20
 =09=09method.Block =3D (ToplevelBlock) $3;
 =09=09current_container.AddMethod (method);
+=09=09method.Documentation =3D lexer.GetDocs();
+=09=09//lexer.SaveDocument();
=20
 =09=09current_local_parameters =3D null;
 =09=09iterator_container =3D null;
@@ -991,6 +1000,9 @@
 =09=09=09=09=09    (int) $2, false, name, (Parameters) $6,
 =09=09=09=09=09    (Attributes) $1, lexer.Location);
=20
+=09=09method.Documentation =3D lexer.GetDocs();
+=09=09//lexer.SaveDocument();
+
 =09=09current_local_parameters =3D (Parameters) $6;
 =09=09$$ =3D method;
 =09  }
@@ -1171,6 +1183,8 @@
 =09=09=09prop.SetYields ();
 =09=09
 =09=09current_container.AddProperty (prop);
+=09=09prop.Documentation =3D lexer.GetDocs();
+=09=09//lexer.SaveDocument();
 =09=09implicit_value_parameter_type =3D null;
 =09=09iterator_container =3D null;
 =09  }
@@ -1281,6 +1295,8 @@
=20
 =09=09=09current_container =3D current_class;
 =09=09=09RootContext.Tree.RecordDecl (name.GetName (true), current_class);
+=09=09=09current_class.Documentation =3D lexer.GetDocs();
+=09=09=09//lexer.SaveDocument();
 =09=09}
 =09  }
 =09  opt_class_base
@@ -1362,8 +1378,11 @@
 =09  {
 =09=09MemberName name =3D (MemberName) $4;
=20
-=09=09$$ =3D new Method (current_class, (Expression) $3, (int) $2, true,
+=09=09Method im =3D new Method (current_class, (Expression) $3, (int) $2, =
true,
 =09=09=09=09 name, (Parameters) $6, (Attributes) $1, lexer.Location);
+=09=09im.Documentation =3D lexer.GetDocs();
+=09=09$$ =3D im;
+=09=09//lexer.SaveDocument();
 =09  }
 =09| opt_attributes opt_new VOID namespace_or_type_name
 =09  OPEN_PARENS opt_formal_parameter_list CLOSE_PARENS
@@ -1371,8 +1390,11 @@
 =09  {
 =09=09MemberName name =3D (MemberName) $4;
=20
-=09=09$$ =3D new Method (current_class, TypeManager.system_void_expr, (int=
) $2,
+=09=09Method im =3D new Method (current_class, TypeManager.system_void_exp=
r, (int) $2,
 =09=09=09=09 true, name, (Parameters) $6,  (Attributes) $1, lexer.Location=
);
+=09=09im.Documentation =3D lexer.GetDocs();
+=09=09$$ =3D im;
+=09=09//lexer.SaveDocument();
 =09  }
 =09;
=20
@@ -1388,9 +1410,12 @@
 =09  {
                 InterfaceAccessorInfo pinfo =3D (InterfaceAccessorInfo) $7=
;
=20
-=09=09$$ =3D new Property (current_class, (Expression) $3, (int) $2, true,
+=09=09Property ip =3D new Property (current_class, (Expression) $3, (int) =
$2, true,
 =09=09=09=09   new MemberName ((string) $4), (Attributes) $1,
 =09=09=09=09   pinfo.Get, pinfo.Set, lexer.Location);
+=09=09ip.Documentation =3D lexer.GetDocs();
+=09=09$$ =3D ip;
+=09=09//lexer.SaveDocument();
 =09  }
 =09| opt_attributes
 =09  opt_new
@@ -1412,9 +1437,12 @@
 interface_event_declaration
 =09: opt_attributes opt_new EVENT type IDENTIFIER SEMICOLON
 =09  {
-=09=09$$ =3D new EventField (current_class, (Expression) $4, (int) $2, tru=
e,
+=09=09EventField ie =3D new EventField (current_class, (Expression) $4, (i=
nt) $2, true,
 =09=09=09=09     new MemberName ((string) $5), null,
 =09=09=09=09     (Attributes) $1, lexer.Location);
+=09=09ie.Documentation =3D lexer.GetDocs();
+=09=09$$ =3D ie;
+=09=09//lexer.SaveDocument();
 =09  }
 =09| opt_attributes opt_new EVENT type error {
 =09=09CheckIdentifierToken (yyToken);
@@ -1441,10 +1469,13 @@
 =09  {
 =09=09InterfaceAccessorInfo info =3D (InterfaceAccessorInfo) $10;
=20
-=09=09$$ =3D new Indexer (current_class, (Expression) $3,
+=09=09Indexer ii =3D new Indexer (current_class, (Expression) $3,
 =09=09=09=09  new MemberName (TypeContainer.DefaultIndexerName),
 =09=09=09=09  (int) $2, true, (Parameters) $6, (Attributes) $1,
 =09=09=09=09  info.Get, info.Set, lexer.Location);
+=09=09ii.Documentation =3D lexer.GetDocs();
+=09=09$$ =3D ii;
+=09=09//lexer.SaveDocument();
 =09  }
 =09;
=20
@@ -1474,6 +1505,9 @@
 =09=09// Note again, checking is done in semantic analysis
 =09=09current_container.AddOperator (op);
=20
+=09=09op.Documentation =3D lexer.GetDocs();
+=09=09//lexer.SaveDocument();
+
 =09=09current_local_parameters =3D null;
 =09=09iterator_container =3D null;
 =09  }
@@ -1646,8 +1680,11 @@
 =09  opt_constructor_initializer
 =09  {
 =09=09Location l =3D (Location) oob_stack.Pop ();
-=09=09$$ =3D new Constructor (current_class, (string) $1, 0, (Parameters) =
$3,
+=09=09Constructor ctor =3D new Constructor (current_class, (string) $1, 0,=
 (Parameters) $3,
 =09=09=09=09      (ConstructorInitializer) $6, l);
+=09=09ctor.Documentation =3D lexer.GetDocs();
+=09=09$$ =3D ctor;
+=09=09//lexer.SaveDocument();
 =09  }
 =09;
=20
@@ -1712,6 +1749,8 @@
 =09=09 =20
 =09=09=09d.Block =3D (ToplevelBlock) $7;
 =09=09=09current_container.AddMethod (d);
+=09=09=09d.Documentation =3D lexer.GetDocs();
+=09=09=09//lexer.SaveDocument();
 =09=09}
 =09  }
 =09;
@@ -1731,7 +1770,8 @@
 =09=09=09=09lexer.Location);
=20
 =09=09=09current_container.AddEvent (e);
-=09=09=09=09      =20
+=09=09=09e.Documentation =3D lexer.GetDocs();
+=09=09=09//lexer.SaveDocument();
 =09=09}
 =09  }
 =09| opt_attributes
@@ -1765,6 +1805,8 @@
 =09=09=09=09loc);
 =09=09=09
 =09=09=09current_container.AddEvent (e);
+=09=09=09e.Documentation =3D lexer.GetDocs();
+=09=09=09//lexer.SaveDocument();
 =09=09=09implicit_value_parameter_type =3D null;
 =09=09}
 =09  }
@@ -1881,6 +1923,8 @@
 =09=09=09=09       get_block, set_block, loc);
=20
 =09=09current_container.AddIndexer (indexer);
+=09=09indexer.Documentation =3D lexer.GetDocs();
+=09=09//lexer.SaveDocument();
 =09=09
 =09=09current_local_parameters =3D null;
 =09=09implicit_value_parameter_type =3D null;
@@ -1921,6 +1965,10 @@
 =09  opt_modifiers
 =09  ENUM IDENTIFIER=20
 =09  opt_enum_base
+=09  {
+=09=09mcsdoc_docs =3D lexer.GetDocs();
+=09=09//lexer.SaveDocument();
+=09  }
 =09  enum_body
 =09  opt_semicolon
 =09  {=20
@@ -1930,7 +1978,7 @@
 =09=09Enum e =3D new Enum (current_namespace, current_container, (Expressi=
on) $5, (int) $2,
 =09=09=09=09   full_name, (Attributes) $1, enum_location);
 =09=09
-=09=09foreach (VariableDeclaration ev in (ArrayList) $6) {
+=09=09foreach (VariableDeclaration ev in (ArrayList) $7) {
 =09=09=09e.AddEnumMember (ev.identifier,=20
 =09=09=09=09=09 (Expression) ev.expression_or_array_initializer,
 =09=09=09=09=09 ev.Location, ev.OptAttributes);
@@ -1939,7 +1987,7 @@
 =09=09string name =3D full_name.GetName ();
 =09=09current_container.AddEnum (e);
 =09=09RootContext.Tree.RecordDecl (name, e);
-
+=09=09e.Documentation =3D mcsdoc_docs;
 =09  }
 =09;
=20
@@ -1981,7 +2029,10 @@
 enum_member_declaration
 =09: opt_attributes IDENTIFIER=20
 =09  {
-=09=09$$ =3D new VariableDeclaration ((string) $2, null, lexer.Location, (=
Attributes) $1);
+=09=09VariableDeclaration vd =3D new VariableDeclaration ((string) $2, nul=
l, lexer.Location, (Attributes) $1);
+=09=09vd.Documentation =3D lexer.GetDocs();
+=09=09$$ =3D vd;
+=09=09//lexer.SaveDocument();
 =09  }
 =09| opt_attributes IDENTIFIER
 =09  {
@@ -1989,7 +2040,10 @@
 =09  }
           ASSIGN expression
 =09  {=20
-=09=09$$ =3D new VariableDeclaration ((string) $2, $5, lexer.Location, (At=
tributes) $1);
+=09=09VariableDeclaration vd =3D new VariableDeclaration ((string) $2, $5,=
 lexer.Location, (Attributes) $1);
+=09=09vd.Documentation =3D lexer.GetDocs();
+=09=09$$ =3D vd;
+=09=09//lexer.SaveDocument();
 =09  }
 =09;
=20
@@ -2007,7 +2061,9 @@
=20
 =09=09current_container.AddDelegate (del);
 =09=09RootContext.Tree.RecordDecl (name.GetName (true), del);
-=09  }=09
+=09=09del.Documentation =3D lexer.GetDocs();
+=09=09//lexer.SaveDocument();
+=09  }
 =09| opt_attributes
 =09  opt_modifiers
 =09  DELEGATE VOID member_name
@@ -2023,6 +2079,8 @@
=20
 =09=09current_container.AddDelegate (del);
 =09=09RootContext.Tree.RecordDecl (name.GetName (true), del);
+=09=09del.Documentation =3D lexer.GetDocs();
+=09=09//lexer.SaveDocument();
 =09  }
 =09;
=20
@@ -3006,6 +3064,8 @@
=20
 =09=09=09current_container =3D current_class;
 =09=09=09RootContext.Tree.RecordDecl (name.GetName (true), current_class);
+=09=09=09current_class.Documentation =3D lexer.GetDocs();
+=09=09=09//lexer.SaveDocument();
 =09=09}
 =09  }
 =09  opt_class_base
@@ -4103,6 +4163,12 @@
 =09public Location Location;
 =09public Attributes OptAttributes;
=20
+=09/// <summary>
+=09/// Holds the doc-comments.
+=09/// </summary>
+=09/// <remarks>master's hack</remarks>
+=09public string Documentation;
+
 =09public VariableDeclaration (string id, object eoai, Location l, Attribu=
tes opt_attrs)
 =09{
 =09=09this.identifier =3D id;
diff -u ./cs-tokenizer.cs /cygdrive/d/gvaish/Projects/SF/csdoc/csdoc/src/mc=
sdoc/mcs/cs-tokenizer.cs
--- ./cs-tokenizer.cs=092004-10-04 15:05:32.000000000 +0530
+++ /cygdrive/d/gvaish/Projects/SF/csdoc/csdoc/src/mcsdoc/mcs/cs-tokenizer.=
cs=092004-10-30 17:27:12.000000000 +0530
@@ -54,6 +54,37 @@
 =09=09bool any_token_seen =3D false;
 =09=09static Hashtable tokenValues;
=20
+=09=09//----------------------------------------------
+=09=09// Adding support for documentation.
+=09=09// Modified by Gaurav Vaish
+=09=09// master's hack
+=09=09//----------------------------------------------
+
+=09=09#region Modification1=09=09
+
+=09=09private string    commentString =3D "";
+=09=09private bool      isCollectingDocs =3D true;
+
+=09=09public void SaveDocument()
+=09=09{
+=09=09=09commentString =3D "";
+=09=09=09isCollectingDocs =3D true;
+=09=09}
+
+=09=09public void StopCollectingDocs()
+=09=09{
+=09=09=09isCollectingDocs =3D false;
+=09=09}
+
+=09=09public string GetDocs()
+=09=09{
+=09=09=09string retVal =3D commentString.Trim();
+=09=09=09SaveDocument();
+=09=09=09return retVal;
+=09=09}
+
+=09=09#endregion
+
 =09=09private static Hashtable TokenValueName
 =09=09{
 =09=09=09get {
@@ -1857,14 +1888,43 @@
 =09=09=09=09}
=20
 =09=09=09=09// Handle double-slash comments.
+=09=09=09=09#region Modification2
 =09=09=09=09if (c =3D=3D '/'){
 =09=09=09=09=09int d =3D peekChar ();
-=09=09=09=09
+=09=09=09=09=09// master's hack
+=09=09=09=09=09int afterComment =3D 0;
+
 =09=09=09=09=09if (d =3D=3D '/'){
 =09=09=09=09=09=09getChar ();
+=09=09=09=09=09=09// master's hack
+=09=09=09=09=09=09if(isCollectingDocs)
+=09=09=09=09=09=09{
+=09=09=09=09=09=09=09commentString +=3D "//";
+=09=09=09=09=09=09}
 =09=09=09=09=09=09while ((d =3D getChar ()) !=3D -1 && (d !=3D '\n') && d =
!=3D '\r')
+=09=09=09=09=09=09{
+=09=09=09=09=09=09=09// master's hack
+=09=09=09=09=09=09=09if(isCollectingDocs)
+=09=09=09=09=09=09=09{
+=09=09=09=09=09=09=09=09commentString +=3D (char)d;
+=09=09=09=09=09=09=09}
 =09=09=09=09=09=09=09col++;
+=09=09=09=09=09=09}
 =09=09=09=09=09=09if (d =3D=3D '\n'){
+=09=09=09=09=09=09=09//master's hack
+=09=09=09=09=09=09=09if(isCollectingDocs)
+=09=09=09=09=09=09=09{
+=09=09=09=09=09=09=09=09commentString +=3D '\n';
+=09=09=09=09=09=09=09}
+=09=09=09=09=09=09=09// master's hack
+=09=09=09=09=09=09=09///*
+=09=09=09=09=09=09=09afterComment =3D peekChar();
+=09=09=09=09=09=09=09if(afterComment =3D=3D '\r' || afterComment=3D=3D'\n'=
)
+=09=09=09=09=09=09=09{
+=09=09=09=09=09=09=09=09//Console.WriteLine("Delimiting // comment. \n\"" =
+ commentString + "\"");
+=09=09=09=09=09=09=09=09commentString =3D "";
+=09=09=09=09=09=09=09}
+=09=09=09=09=09=09=09//*/
 =09=09=09=09=09=09=09line++;
 =09=09=09=09=09=09=09ref_line++;
 =09=09=09=09=09=09=09col =3D 0;
@@ -1875,8 +1935,24 @@
 =09=09=09=09=09} else if (d =3D=3D '*'){
 =09=09=09=09=09=09getChar ();
=20
+=09=09=09=09=09=09// master's hack
+=09=09=09=09=09=09if(isCollectingDocs)
+=09=09=09=09=09=09=09commentString +=3D "/*";
+
 =09=09=09=09=09=09while ((d =3D getChar ()) !=3D -1){
+=09=09=09=09=09=09=09// master's hack
+=09=09=09=09=09=09=09if(isCollectingDocs)
+=09=09=09=09=09=09=09{
+=09=09=09=09=09=09=09=09commentString +=3D (char)d;
+=09=09=09=09=09=09=09}
 =09=09=09=09=09=09=09if (d =3D=3D '*' && peekChar () =3D=3D '/'){
+=09=09=09=09=09=09=09=09// master's hack
+=09=09=09=09=09=09=09=09if(isCollectingDocs)
+=09=09=09=09=09=09=09=09{
+=09=09=09=09=09=09=09=09=09commentString +=3D "/";
+=09=09=09=09=09=09=09=09=09//Console.WriteLine("Stop of /**/ comment. \n\"=
" + commentString + "\"");
+=09=09=09=09=09=09=09=09}
+=09=09=09=09=09=09=09=09StopCollectingDocs();
 =09=09=09=09=09=09=09=09getChar ();
 =09=09=09=09=09=09=09=09col++;
 =09=09=09=09=09=09=09=09break;
@@ -1888,11 +1964,21 @@
 =09=09=09=09=09=09=09=09any_token_seen |=3D tokens_seen;
 =09=09=09=09=09=09=09=09tokens_seen =3D false;
 =09=09=09=09=09=09=09}
+=09=09=09=09=09=09=09// master's hack
+=09=09=09=09=09=09=09/*
+=09=09=09=09=09=09=09afterComment =3D peekChar();
+=09=09=09=09=09=09=09if(afterComment =3D=3D '\r' || afterComment=3D=3D'\n'=
)
+=09=09=09=09=09=09=09{
+=09=09=09=09=09=09=09=09Console.WriteLine("Delimiting /* comment. \n\"" + =
commentString + "\"");
+=09=09=09=09=09=09=09=09commentString =3D "";
+=09=09=09=09=09=09=09}
+=09=09=09=09=09=09=09//*/
 =09=09=09=09=09=09}
 =09=09=09=09=09=09continue;
 =09=09=09=09=09}
 =09=09=09=09=09goto is_punct_label;
 =09=09=09=09}
+=09=09=09=09#endregion
=20
 =09=09=09=09
 =09=09=09=09if (is_identifier_start_character ((char)c)){
diff -u ./decl.cs /cygdrive/d/gvaish/Projects/SF/csdoc/csdoc/src/mcsdoc/mcs=
/decl.cs
--- ./decl.cs=092004-10-29 16:01:28.000000000 +0530
+++ /cygdrive/d/gvaish/Projects/SF/csdoc/csdoc/src/mcsdoc/mcs/decl.cs=09200=
4-10-30 17:26:32.000000000 +0530
@@ -151,6 +151,12 @@
 =09=09/// </summary>
 =09=09internal Flags caching_flags;
=20
+=09=09/// <summary>
+=09=09/// Holds the doc-comments.
+=09=09/// </summary>
+=09=09/// <remarks>master's hack</remarks>
+=09=09public string Documentation;
+
 =09=09public MemberCore (TypeContainer parent, MemberName name, Attributes=
 attrs,
 =09=09=09=09   Location loc)
 =09=09=09: base (attrs)
diff -u ./driver.cs /cygdrive/d/gvaish/Projects/SF/csdoc/csdoc/src/mcsdoc/m=
cs/driver.cs
--- ./driver.cs=092004-09-23 16:08:04.000000000 +0530
+++ /cygdrive/d/gvaish/Projects/SF/csdoc/csdoc/src/mcsdoc/mcs/driver.cs=092=
004-10-30 17:33:32.000000000 +0530
@@ -8,6 +8,8 @@
 // (C) 2001, 2002, 2003 Ximian, Inc (http://www.ximian.com)
 //
=20
+using MCSDoc;
+
 namespace Mono.CSharp
 {
 =09using System;
diff -u ./ecore.cs /cygdrive/d/gvaish/Projects/SF/csdoc/csdoc/src/mcsdoc/mc=
s/ecore.cs
--- ./ecore.cs=092004-10-29 16:01:30.000000000 +0530
+++ /cygdrive/d/gvaish/Projects/SF/csdoc/csdoc/src/mcsdoc/mcs/ecore.cs=0920=
04-10-29 20:16:26.000000000 +0530
@@ -157,6 +157,12 @@
 =09=09protected Type type;
 =09=09protected Location loc;
 =09=09
+=09=09/// <summary>
+=09=09/// Holds the doc-comments.
+=09=09/// </summary>
+=09=09/// <remarks>master's hack</remarks>
+=09=09public string Documentation;
+
 =09=09public Type Type {
 =09=09=09get {
 =09=09=09=09return type;
diff -u ./mcs.exe.sources /cygdrive/d/gvaish/Projects/SF/csdoc/csdoc/src/mc=
sdoc/mcs/mcs.exe.sources
--- ./mcs.exe.sources=092004-09-14 19:41:52.000000000 +0530
+++ /cygdrive/d/gvaish/Projects/SF/csdoc/csdoc/src/mcsdoc/mcs/mcs.exe.sourc=
es=092004-10-30 16:22:06.000000000 +0530
@@ -34,3 +34,4 @@
 ../class/Mono.CSharp.Debugger/MonoSymbolTable.cs
 ../class/Mono.CSharp.Debugger/MonoSymbolWriter.cs
 ../class/corlib/Mono.Security.Cryptography/CryptoConvert.cs
+MCSDocUtils.cs
diff -u ./parameter.cs /cygdrive/d/gvaish/Projects/SF/csdoc/csdoc/src/mcsdo=
c/mcs/parameter.cs
--- ./parameter.cs=092004-10-29 16:01:30.000000000 +0530
+++ /cygdrive/d/gvaish/Projects/SF/csdoc/csdoc/src/mcsdoc/mcs/parameter.cs=
=092004-10-30 15:51:34.000000000 +0530
@@ -526,7 +526,7 @@
 =09=09///   boolean whether this is an out or ref parameter.
 =09=09///
 =09=09///   Note that the returned type will not contain any dereference i=
n this
-=09=09///   case (ie, you get "int" for a ref int instead of "int&"
+=09=09///   case (ie, you get "int" for a ref int instead of "int&amp;")
 =09=09/// </summary>
 =09=09public Type GetParameterInfo (EmitContext ec, int idx, out Parameter=
.Modifier mod)
 =09=09{
diff -u ./statement.cs /cygdrive/d/gvaish/Projects/SF/csdoc/csdoc/src/mcsdo=
c/mcs/statement.cs
--- ./statement.cs=092004-10-29 16:01:30.000000000 +0530
+++ /cygdrive/d/gvaish/Projects/SF/csdoc/csdoc/src/mcsdoc/mcs/statement.cs=
=092004-10-30 15:50:46.000000000 +0530
@@ -25,7 +25,7 @@
 =09=09/// <summary>
 =09=09///   Resolves the statement, true means that all sub-statements
 =09=09///   did resolve ok.
-=09=09//  </summary>
+=09=09///  </summary>
 =09=09public virtual bool Resolve (EmitContext ec)
 =09=09{
 =09=09=09return true;
diff -u ./support.cs /cygdrive/d/gvaish/Projects/SF/csdoc/csdoc/src/mcsdoc/=
mcs/support.cs
--- ./support.cs=092004-10-17 11:59:28.000000000 +0530
+++ /cygdrive/d/gvaish/Projects/SF/csdoc/csdoc/src/mcsdoc/mcs/support.cs=09=
2004-10-30 15:49:22.000000000 +0530
@@ -367,10 +367,10 @@
 =09=09int pos;                // index into buffer[]
 =09=09int preamble_size;
=20
-=09=09/// <remarks>
+=09=09/// <summary>
 =09=09///   The difference to the StreamReader's BaseStream.Position is th=
at this one is reliable; ie. it
-=09=09//    always reports the correct position and if it's modified, it a=
lso takes care of the buffered data.
-=09=09/// </remarks>
+=09=09///    always reports the correct position and if it's modified, it =
also takes care of the buffered data.
+=09=09/// </summary>
 =09=09public int Position {
 =09=09=09get {
 =09=09=09=09return buffer_start + reader.CurrentEncoding.GetByteCount (buf=
fer, 0, pos);

------=_Part_2082_16059728.1099139706236--