Merge some useful changes from MD
authorMarek Safar <marek.safar@gmail.com>
Mon, 14 Feb 2011 15:36:12 +0000 (15:36 +0000)
committerMarek Safar <marek.safar@gmail.com>
Tue, 15 Feb 2011 12:09:10 +0000 (12:09 +0000)
mcs/mcs/cs-parser.jay
mcs/mcs/statement.cs
mcs/mcs/visit.cs

index ed72e5bcf0463aeb1b6cf3fb4e7e2a6557465f21..dc46fd3ecae33fbdaf2ee4cd4d205627c5c66f4b 100644 (file)
@@ -3523,10 +3523,12 @@ rank_specifier
        : OPEN_BRACKET CLOSE_BRACKET
          {
                $$ = ComposedTypeSpecifier.CreateArrayDimension (1, GetLocation ($1));
+               lbag.AddLocation ($$, GetLocation ($2));
          }
        | OPEN_BRACKET dim_separators CLOSE_BRACKET
          {
                $$ = ComposedTypeSpecifier.CreateArrayDimension ((int)$2, GetLocation ($1));
+               lbag.AddLocation ($$, GetLocation ($3));
          }
        ;
 
@@ -3564,7 +3566,11 @@ array_initializer
          {
                var ai = new ArrayInitializer ((List<Expression>) $2, GetLocation ($1));
                ai.VariableDeclaration = current_variable;
-               lbag.AddLocation (ai, GetLocation ($3));
+               if ($3 != null) {
+                       lbag.AddLocation (ai, GetLocation ($3), GetLocation ($4));
+               } else {
+                       lbag.AddLocation (ai, GetLocation ($4));
+               }
                $$ = ai;
          }
        ;
@@ -4113,7 +4119,7 @@ lambda_expression
          lambda_expression_body 
          {
                $$ = end_anonymous ((ParametersBlock) $7);
-               lbag.AddLocation ($$, GetLocation ($3), GetLocation ($4));
+               lbag.AddLocation ($$, GetLocation ($4), GetLocation ($5));
          }
        ;
 
@@ -5364,6 +5370,7 @@ fixed_statement
          {
            start_block (GetLocation ($2));
            
+               current_block.IsCompilerGenerated = true;
                var lt = (Tokenizer.LocatedToken) $4;
                var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.FixedVariable | LocalVariable.Flags.Used, lt.Location);
                current_block.AddLocalName (li);
@@ -5390,6 +5397,7 @@ using_statement
          {
            start_block (GetLocation ($2));
            
+               current_block.IsCompilerGenerated = true;
                var lt = (Tokenizer.LocatedToken) $4;
                var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.UsingVariable | LocalVariable.Flags.Used, lt.Location);
                current_block.AddLocalName (li);
index 787a91f2e92108587dcf4538700fe7482c5a76b5..8b8cd2e2f9d5ba51a5b03313d439a02ca31f778d 100644 (file)
@@ -1410,7 +1410,7 @@ namespace Mono.CSharp {
                }
        }
 
-       class BlockConstantDeclaration : BlockVariableDeclaration
+       public class BlockConstantDeclaration : BlockVariableDeclaration
        {
                public BlockConstantDeclaration (FullNamedExpression type, LocalVariable li)
                        : base (type, li)
index b531c75b54a26e61821663233ad106f4d2155cca..82e242ca84d4d8fb03639213daad39f1ea0f8d4b 100644 (file)
@@ -17,7 +17,7 @@ namespace Mono.CSharp
        {
                public virtual void Visit (MemberCore member)
                {
-                       Console.WriteLine ("unknown member: " + member);
+                       Console.WriteLine ("unknown member type: " + member.GetType ());
                }
 
                void VisitTypeContainer (TypeContainer tc)
@@ -56,6 +56,10 @@ namespace Mono.CSharp
                {
                }
 
+               public virtual void Visit (Const c)
+               {
+               }
+
                public virtual void Visit (Field f)
                {
                }
@@ -100,7 +104,17 @@ namespace Mono.CSharp
                        Console.WriteLine ("unknown statement:" + stmt);
                        return null;
                }
-
+               
+               public virtual object Visit (BlockVariableDeclaration blockVariableDeclaration)
+               {
+                       return null;
+               }
+               
+               public virtual object Visit (BlockConstantDeclaration blockConstantDeclaration)
+               {
+                       return null;
+               }
+               
                public virtual object Visit (EmptyStatement emptyStatement)
                {
                        return null;
@@ -193,14 +207,17 @@ namespace Mono.CSharp
                {
                        return null;
                }
-
-
+               
                public virtual object Visit (Switch switchStatement)
                {
                        return null;
                }
-
-
+               
+               public virtual object Visit (StatementList statementList)
+               {
+                       return null;
+               }
+               
                public virtual object Visit (Lock lockStatement)
                {
                        return null;
@@ -338,7 +355,12 @@ namespace Mono.CSharp
                {
                        return null;
                }
-
+               
+               public virtual object Visit (DefaultParameterValueExpression defaultParameterValueExpression)
+               {
+                       return null;
+               }
+               
                public virtual object Visit (Binary binaryExpression)
                {
                        return null;
@@ -435,16 +457,31 @@ namespace Mono.CSharp
                        return null;
                }
 
-               public virtual object Visit (AnonymousMethodExpression anonymousMethodExpression)
+               public virtual object Visit (TypeExpression typeExpression)
                {
                        return null;
                }
 
+               public virtual object Visit (AnonymousMethodExpression anonymousMethodExpression)
+               {
+                       return null;
+               }
+               
                public virtual object Visit (LambdaExpression lambdaExpression)
                {
                        return null;
                }
-
+               
+               public virtual object Visit (ConstInitializer constInitializer)
+               {
+                       return null;
+               }
+               
+               public virtual object Visit (ArrayInitializer arrayInitializer)
+               {
+                       return null;
+               }
+               
                public virtual object Visit (Linq.QueryExpression queryExpression)
                {
                        return null;