Exemplo n.º 1
0
 protected static IExpressionStatement ExprStmt(IAssignableExpression expr)
 {
     return(new ExpressionStatement
     {
         Expression = expr
     });
 }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
 public static IAssignment AssignmentToLocal([NotNull] string identifier, [NotNull] IAssignableExpression expr)
 {
     return(new Assignment
     {
         Reference = VariableReference(identifier),
         Expression = expr
     });
 }
Exemplo n.º 4
0
 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;
 }
Exemplo n.º 6
0
        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));
        }
Exemplo n.º 7
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);
            }
        }
Exemplo n.º 8
0
 public static IStatement Nested(IAssignableExpression expr)
 {
     return(new Assignment {
         Expression = expr
     });
 }
Exemplo n.º 9
0
 protected static IAssignment Assign(IAssignableReference reference, IAssignableExpression expr)
 {
     return(new Assignment {
         Reference = reference, Expression = expr
     });
 }
Exemplo n.º 10
0
 private static bool IsSelfAssign(string id, IAssignableExpression sstExpr)
 {
     return(IsSelfAssign(new VariableReference {
         Identifier = id
     }, sstExpr));
 }