Example #1
0
        private static StatementSyntax PostconditionStatement(IEnumerable <Contract> contracts, ITypeSymbol type, ReturnStatementSyntax node, SemanticModel model)
        {
            var returnedExpression = node.ChildNodes().FirstOrDefault().ToString();
            var tempVariableName   = IdentifierFactory.CreatePostconditionLocal(node, model);

            return(Block(ParseStatement(
                             GetPostconditionText(contracts, type, returnedExpression, tempVariableName))));
        }
 /// <summary>
 /// Visits a return statement
 /// </summary>
 /// <param name="node">The return statement syntax</param>
 public override void VisitReturnStatement(ReturnStatementSyntax node)
 {
     foreach (SyntaxNode subNode in node.ChildNodes())
     {
         _retType = FromSyntaxNode(subNode);
         // TODO: This will return the first return type, which could
         // be different than other return types.  I will not care yet
         break;
     }
 }
        /// <summary>
        /// Visits a return statement
        /// </summary>
        /// <param name="node">The return statement syntax</param>
        public override void VisitReturnStatement(ReturnStatementSyntax node)
        {
            SyntaxNode firstNode = node.ChildNodes().FirstOrDefault();

            if (firstNode != null)
            {
                var type = _handlerFactory.CreateForSyntaxNode(firstNode).Handle(firstNode);

                if (type != null)
                {
                    _candidates.Add(type);
                }
            }
        }
 //TODO Was ist mit:
 //const int errorCode;
 //return errorCode;
 public bool IsAbsoluteValue(ReturnStatementSyntax returnStatement)
 {
     return(returnStatement.ChildNodes().OfType <LiteralExpressionSyntax>().Any(n => n.RawKind == NumericLiteralExpression) ||
            returnStatement.ChildNodes().OfType <PrefixUnaryExpressionSyntax>().Any(n => n.RawKind == UnaryMinusExpression));
 }
Example #5
0
        private Method TraverseReturnStatement(ReturnStatementSyntax rss)
        {
            Method retMethod = new Method();

            foreach (SyntaxNode sn in rss.ChildNodes())
            {
                if (sn is CallStatementSyntax)
                {
                    retMethod.InvokedMethods.Add(TraverseInvokedMethod(sn as CallStatementSyntax));
                }
                else if (sn is InvocationExpressionSyntax)
                {
                    retMethod.InvokedMethods.Add(TraverseInvokedMethod(sn as InvocationExpressionSyntax));
                }
                else if (sn is LocalDeclarationStatementSyntax)
                {
                    Method tempMethod = TraverseVarDecls(sn as LocalDeclarationStatementSyntax);
                    retMethod.AccessedVariables.AddRange(tempMethod.AccessedVariables);
                    retMethod.InvokedMethods.AddRange(tempMethod.InvokedMethods);
                }
                else if (sn is AssignmentStatementSyntax)
                {
                    Method tempMethod = TraverseAccessVars(sn as AssignmentStatementSyntax);

                    retMethod.AccessedVariables.AddRange(tempMethod.AccessedVariables);
                    retMethod.InvokedMethods.AddRange(tempMethod.InvokedMethods);
                }
            }

            return retMethod;
        }