Browse Source

Merge branch 'master' of github.com:icsharpcode/NRefactory

newNRvisualizers
Mike Krüger 14 years ago
parent
commit
a348bbd968
  1. 16
      ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs
  2. 13
      ICSharpCode.NRefactory.CSharp/Parser/mcs/anonymous.cs
  3. 6820
      ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs
  4. 10
      ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.jay
  5. 1
      ICSharpCode.NRefactory.CSharp/Parser/mcs/decl.cs
  6. 38
      ICSharpCode.NRefactory.CSharp/Parser/mcs/ecore.cs
  7. 5
      ICSharpCode.NRefactory.CSharp/Parser/mcs/visit.cs

16
ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs

@ -1448,7 +1448,21 @@ namespace ICSharpCode.NRefactory.CSharp
public override object Visit (StatementExpression statementExpression) public override object Visit (StatementExpression statementExpression)
{ {
var result = new ExpressionStatement (); var result = new ExpressionStatement ();
object expr = statementExpression.Expr.Accept (this); var expr = statementExpression.Expr.Accept (this) as Expression;
if (expr != null)
result.AddChild ((Expression)expr, ExpressionStatement.Roles.Expression);
var location = LocationsBag.GetLocations (statementExpression);
if (location != null)
result.AddChild (new CSharpTokenNode (Convert (location[0]), 1), ExpressionStatement.Roles.Semicolon);
return result;
}
public override object Visit (InvalidExpressionStatement statementExpression)
{
var result = new ExpressionStatement ();
if (statementExpression.Expression == null)
return result;
object expr = statementExpression.Expression.Accept (this);
if (expr != null) if (expr != null)
result.AddChild ((Expression)expr, ExpressionStatement.Roles.Expression); result.AddChild ((Expression)expr, ExpressionStatement.Roles.Expression);
var location = LocationsBag.GetLocations (statementExpression); var location = LocationsBag.GetLocations (statementExpression);

13
ICSharpCode.NRefactory.CSharp/Parser/mcs/anonymous.cs

@ -881,13 +881,12 @@ namespace Mono.CSharp {
} }
readonly Dictionary<TypeSpec, Expression> compatibles; readonly Dictionary<TypeSpec, Expression> compatibles;
readonly bool is_async;
public ParametersBlock Block; public ParametersBlock Block;
public AnonymousMethodExpression (bool isAsync, Location loc) public AnonymousMethodExpression (bool isAsync, Location loc)
{ {
this.is_async = isAsync; this.IsAsync = isAsync;
this.loc = loc; this.loc = loc;
this.compatibles = new Dictionary<TypeSpec, Expression> (); this.compatibles = new Dictionary<TypeSpec, Expression> ();
} }
@ -906,18 +905,16 @@ namespace Mono.CSharp {
} }
} }
public bool IsAsync {
get {
return is_async;
}
}
public ParametersCompiled Parameters { public ParametersCompiled Parameters {
get { get {
return Block.Parameters; return Block.Parameters;
} }
} }
public bool IsAsync {
get;
private set;
}
#endregion #endregion
// //

6820
ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs

File diff suppressed because it is too large Load Diff

10
ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.jay

@ -3381,6 +3381,14 @@ element_access
$$ = new ElementAccess ((Expression) $1, (Arguments) $3, GetLocation ($2)); $$ = new ElementAccess ((Expression) $1, (Arguments) $3, GetLocation ($2));
lbag.AddLocation ($$, GetLocation ($4)); lbag.AddLocation ($$, GetLocation ($4));
} }
| primary_expression OPEN_BRACKET_EXPR expression_list_arguments error
{
$$ = new ElementAccess ((Expression) $1, (Arguments) $3, GetLocation ($2));
}
| primary_expression OPEN_BRACKET_EXPR error
{
$$ = new ElementAccess ((Expression) $1, null, GetLocation ($2));
}
; ;
expression_list expression_list
@ -5084,7 +5092,7 @@ statement_expression
ExpressionStatement s = $1 as ExpressionStatement; ExpressionStatement s = $1 as ExpressionStatement;
if (s == null) { if (s == null) {
Expression.Error_InvalidExpressionStatement (report, GetLocation ($1)); Expression.Error_InvalidExpressionStatement (report, GetLocation ($1));
$$ = new StatementExpression (EmptyExpressionStatement.Instance); $$ = new StatementExpression (new InvalidExpressionStatement ($1));
} else { } else {
$$ = new StatementExpression (s); $$ = new StatementExpression (s);
} }

1
ICSharpCode.NRefactory.CSharp/Parser/mcs/decl.cs

@ -27,7 +27,6 @@ using IKVM.Reflection.Emit;
#else #else
using System.Reflection; using System.Reflection;
using System.Reflection.Emit; using System.Reflection.Emit;
//using Mono.Collections.Generic;
#endif #endif
namespace Mono.CSharp { namespace Mono.CSharp {

38
ICSharpCode.NRefactory.CSharp/Parser/mcs/ecore.cs

@ -6287,4 +6287,42 @@ namespace Mono.CSharp {
ec.Module.Compiler.Report.Error (825, loc, "The contextual keyword `var' may only appear within a local variable declaration"); ec.Module.Compiler.Report.Error (825, loc, "The contextual keyword `var' may only appear within a local variable declaration");
} }
} }
public class InvalidExpressionStatement : ExpressionStatement
{
public Expression Expression {
get;
private set;
}
public InvalidExpressionStatement (Expression expr)
{
this.Expression = expr;
}
public override void EmitStatement (EmitContext ec)
{
// nothing
}
public override void Emit (EmitContext ec)
{
// nothing
}
public override Mono.CSharp.Expression CreateExpressionTree (ResolveContext ec)
{
return null;
}
protected override Mono.CSharp.Expression DoResolve (ResolveContext rc)
{
return null;
}
public override object Accept (Mono.CSharp.StructuralVisitor visitor)
{
return visitor.Visit (this);
}
}
} }

5
ICSharpCode.NRefactory.CSharp/Parser/mcs/visit.cs

@ -338,6 +338,11 @@ namespace Mono.CSharp
return null; return null;
} }
public virtual object Visit (InvalidExpressionStatement invalidExpressionStatement)
{
return null;
}
public virtual object Visit (Expression expression) public virtual object Visit (Expression expression)
{ {
Console.WriteLine ("Visit unknown expression:" + expression); Console.WriteLine ("Visit unknown expression:" + expression);

Loading…
Cancel
Save