protected static IExpressionStatement ExprStmt(IAssignableExpression expr) { return(new ExpressionStatement { Expression = expr }); }
private static bool IsSelfAssign(IAssignableReference sstRef, IAssignableExpression sstExpr) { // TODO add test! var refExpr = sstExpr as KaVE.Commons.Model.SSTs.Expressions.Simple.IReferenceExpression; return(refExpr != null && sstRef.Equals(refExpr.Reference)); }
public static IAssignment AssignmentToLocal([NotNull] string identifier, [NotNull] IAssignableExpression expr) { return(new Assignment { Reference = VariableReference(identifier), Expression = expr }); }
protected static IAssignment Assign(string id, IAssignableExpression expr) { return(new Assignment { Reference = VarRef(id), Expression = expr }); }
public AssignmentExpression( TextSpan span, DataType dataType, ExpressionSemantics semantics, IAssignableExpression leftOperand, AssignmentOperator @operator, IExpression rightOperand) : base(span, dataType, semantics) { LeftOperand = leftOperand; Operator = @operator; RightOperand = rightOperand; }
private IAssignableExpression Anonymize([NotNull] IAssignableExpression expr) { var lambda = expr as ILambdaExpression; if (lambda != null) { return(new LambdaExpression { Name = lambda.Name.ToAnonymousName(), Body = Anonymize(lambda.Body) }); } return((IAssignableExpression)expr.Accept(_expr, 0)); }
public override void VisitLocalVariableDeclaration(ILocalVariableDeclaration decl, IList <IStatement> body) { if (IsTargetMatch(decl, CompletionCase.EmptyCompletionBefore)) { body.Add(EmptyCompletionExpression); } var id = decl.DeclaredName; ITypeName type; try { type = decl.Type.GetName(); } catch (AssertException) { // TODO this is an intermediate "fix"... the analysis sometimes fails here ("cannot create name for anonymous type") type = Names.UnknownType; } body.Add(SSTUtil.Declare(id, type)); IAssignableExpression initializer = null; if (decl.Initial != null) { initializer = _exprVisitor.ToAssignableExpr(decl.Initial, body); } else if (_marker.HandlingNode == decl && _marker.Case == CompletionCase.InBody) { initializer = new CompletionExpression(); } if (initializer != null) { if (!IsSelfAssign(id, initializer)) { body.Add(SSTUtil.AssignmentToLocal(id, initializer)); } } if (decl == _marker.HandlingNode && _marker.Case == CompletionCase.EmptyCompletionAfter) { body.Add(EmptyCompletionExpression); } }
public static IStatement Nested(IAssignableExpression expr) { return(new Assignment { Expression = expr }); }
protected static IAssignment Assign(IAssignableReference reference, IAssignableExpression expr) { return(new Assignment { Reference = reference, Expression = expr }); }
private static bool IsSelfAssign(string id, IAssignableExpression sstExpr) { return(IsSelfAssign(new VariableReference { Identifier = id }, sstExpr)); }