コード例 #1
0
        /// <summary>
        ///     Rewrites the return statement.
        /// </summary>
        /// <param name="returnStatement"></param>
        public override IStatement Rewrite(IReturnStatement returnStatement)
        {
            Contract.Ensures(Contract.Result <IStatement>() != null);

            var blockStmt = new BlockStatement();

            // If local is null it means that the type of the method that contains this return is 'void'
            if (local != null)
            {
                blockStmt.Statements.Add(new ExpressionStatement
                {
                    Expression = new Assignment
                    {
                        Target = new TargetExpression {
                            Definition = local.LocalVariable, Instance = null, Type = local.LocalVariable.Type
                        },
                        Source = Rewrite(returnStatement.Expression),
                        Type   = returnStatement.Expression.Type
                    }
                });
            }

            blockStmt.Statements.Add(new GotoStatement {
                TargetStatement = target
            });

            return(blockStmt);
        }
コード例 #2
0
        public static bool IsReturnTypeIObservable(IReturnStatement returnStatement)
        {
            try
            {
                var type = returnStatement.Value.GetExpressionType().ToIType();
                if (type == null)
                {
                    return false;
                }

                var scalarType = type.GetScalarType();
                if (scalarType == null)
                {
                    return false;
                }

                return scalarType.GetClrName().FullName == Constants.ObservableInterfaceName ||
                       TypeHelper.HasIObservableSuperType(scalarType);
            }
            catch (Exception exn)
            {
                Debug.WriteLine(exn);
                return false;
            }
        }
コード例 #3
0
        public override void VisitReturnStatement(IReturnStatement operation)
        {
            LogString(nameof(IReturnStatement));
            LogCommonPropertiesAndNewLine(operation);

            base.VisitReturnStatement(operation);
        }
コード例 #4
0
        public static bool IsReturnTypeAsObservable(IReturnStatement returnStatement)
        {
            try
            {
                var invocationExpression = returnStatement.Value as IInvocationExpression;
                if (invocationExpression == null)
                {
                    return false;
                }
                
                var invokedExpression = invocationExpression.InvokedExpression as IReferenceExpression;
                if (invokedExpression == null)
                {
                    return false;
                }

                var resolveResult = invokedExpression.Reference.Resolve();
                var declaredElement = resolveResult.DeclaredElement;
                if (declaredElement == null)
                {
                    return false;
                }

                return declaredElement.ShortName == Constants.AsObservableName;
            }
            catch (Exception exn)
            {
                Debug.WriteLine(exn);
                return false;
            }
        }
コード例 #5
0
        public override void VisitYieldBreakStatement(IReturnStatement operation)
        {
            LogString("YieldBreakStatement");
            LogCommonPropertiesAndNewLine(operation);

            base.VisitYieldBreakStatement(operation);
        }
コード例 #6
0
 public override void VisitReturnStatement <TExpression>(IReturnStatement <TExpression> returnStatement)
 {
     Value = new Statement()
     {
         ReturnStatement = new ReturnStatementFactory(returnStatement).Value
     };
 }
コード例 #7
0
        public static bool IsReturnTypeOnlyIObservable(IReturnStatement returnStatement)
        {
            try
            {
                var type = returnStatement.Value.GetExpressionType().ToIType();
                if (type == null)
                {
                    return false;
                }

                var scalarType = type.GetScalarType();
                if (scalarType == null)
                {
                    return false;
                }

                if (scalarType.GetClrName().FullName == Constants.ObservableInterfaceName)
                {
                    if (scalarType.GetSuperTypes().Count() == 1 &&
                        scalarType.GetSuperTypes().First().GetClrName().FullName == Constants.ObjectName)
                    {

                        return true;
                    }
                }

                return false;
            }
            catch (Exception exn)
            {
                Debug.WriteLine(exn);
                return false;
            }
        }
コード例 #8
0
 public override IStatement Visit(IReturnStatement stmt, int context)
 {
     return(new ReturnStatement
     {
         Expression = Anonymize(stmt.Expression)
     });
 }
コード例 #9
0
 public override void VisitReturnStatement <TExpression>(IReturnStatement <TExpression> returnStatement)
 {
     Steps.Add(new WriteReturnKeyword());
     Steps.Add(new WriteWhitespace());
     Steps.Add(new WriteExpression <TExpression>(returnStatement.Expression));
     Steps.Add(new WriteSemicolon());
 }
コード例 #10
0
        /// <summary>
        ///
        /// </summary>
        public override void TraverseChildren(IReturnStatement returnStatement)
        {
            Bpl.IToken tok = returnStatement.Token();

            if (returnStatement.Expression != null)
            {
                ExpressionTraverser etrav = this.factory.MakeExpressionTraverser(this.sink, this, this.contractContext);
                etrav.Traverse(returnStatement.Expression);

                if (this.sink.ReturnVariable == null || etrav.TranslatedExpressions.Count < 1)
                {
                    throw new TranslationException(String.Format("{0} returns a value that is not supported by the function", returnStatement.ToString()));
                }

                StmtBuilder.Add(Bpl.Cmd.SimpleAssign(tok,
                                                     new Bpl.IdentifierExpr(tok, this.sink.ReturnVariable), etrav.TranslatedExpressions.Pop()));
            }


            // FEEDBACK TODO extract into a method
            if (PhoneCodeHelper.instance().PhoneFeedbackToggled)
            {
                IMethodDefinition methodTranslated = sink.getMethodBeingTranslated();
                if (methodTranslated != null && PhoneCodeHelper.instance().isMethodInputHandlerOrFeedbackOverride(methodTranslated) &&
                    !PhoneCodeHelper.instance().isMethodIgnoredForFeedback(methodTranslated))
                {
                    Bpl.AssertCmd falseAssertion = new Bpl.AssertCmd(Bpl.Token.NoToken, Bpl.LiteralExpr.False);
                    StmtBuilder.Add(falseAssertion);
                }
            }

            StmtBuilder.Add(new Bpl.ReturnCmd(returnStatement.Token()));
        }
 private void AnalyzeReturnStatement([NotNull] IReturnStatement returnStatement, OperationBlockAnalysisContext context,
                                     [NotNull] IDictionary <ILocalSymbol, EvaluationResult> variableEvaluationCache)
 {
     if (!ReturnsConstant(returnStatement) && !IsYieldBreak(returnStatement))
     {
         AnalyzeReturnValue(returnStatement, context, variableEvaluationCache);
     }
 }
コード例 #12
0
 public override void Visit(IReturnStatement returnStatement)
 {
     if (Process(returnStatement))
     {
         visitor.Visit(returnStatement);
     }
     base.Visit(returnStatement);
 }
            public void Analyze([NotNull] IReturnStatement returnStatement)
            {
                EvaluationResult result = AnalyzeExpression(returnStatement.ReturnedValue);

                if (result.IsConclusive && result.IsDeferred)
                {
                    ReportDiagnosticAt(returnStatement, result.DeferredOperationName);
                }
            }
コード例 #14
0
        public override void VisitReturnStatement(IReturnStatement returnStatementParam)
        {
            ICSharpExpression csharpExpression = returnStatementParam.Value;
            expressionTypes.Add(csharpExpression != null
                                    ? csharpExpression.GetExpressionType(resolveContext)
                                    : returnStatementParam.GetPsiModule().GetPredefinedType().Void);

            base.VisitReturnStatement(returnStatementParam);
        }
コード例 #15
0
        public override void VisitReturnStatement(IReturnStatement returnStatementParam)
        {
            ICSharpExpression csharpExpression = returnStatementParam.Value;

            expressionTypes.Add(csharpExpression != null
                                    ? csharpExpression.GetExpressionType(resolveContext)
                                    : returnStatementParam.GetPsiModule().GetPredefinedType().Void);

            base.VisitReturnStatement(returnStatementParam);
        }
コード例 #16
0
        public override void Visit(IReturnStatement ret)
        {
            if (ret.Expression != null && !Names.AnonymousDelegateReturns.Contains(ret))
            {
                returns.Add(ret);

                var expanded = new HashSet <string>(Names.Names(Expand(ret.Expression)));
                expanded.Add("return");
                Mark(expanded);
            }
        }
        private void AnalyzeReturnValue([NotNull] IReturnStatement returnStatement, OperationBlockAnalysisContext context,
                                        [NotNull] IDictionary <ILocalSymbol, EvaluationResult> variableEvaluationCache)
        {
            EvaluationResult result = AnalyzeExpression(returnStatement.ReturnedValue, context.OperationBlocks,
                                                        variableEvaluationCache, context.CancellationToken);

            if (result.IsConclusive && result.IsDeferred)
            {
                ReportDiagnosticAt(returnStatement, result.DeferredOperationName, context);
            }
        }
コード例 #18
0
ファイル: StatementSourceEmitter.cs プロジェクト: xornand/cci
 public override void TraverseChildren(IReturnStatement returnStatement)
 {
     this.PrintToken(VBToken.Indent);
     this.PrintToken(VBToken.Return);
     if (returnStatement.Expression != null)
     {
         this.PrintToken(VBToken.Space);
         this.Traverse(returnStatement.Expression);
     }
     this.PrintToken(VBToken.NewLine);
 }
 public override bool Visit(IReturnStatement statement, IStatement context)
 {
     _stack.Push(statement);
     try
     {
         return(base.Visit(statement, context));
     }
     finally
     {
         _stack.Pop();
     }
 }
コード例 #20
0
        public void Visit(IReturnStatement stmt, SSTPrintingContext c)
        {
            c.Indentation().Keyword("return");

            if (!stmt.IsVoid)
            {
                c.Space();
                stmt.Expression.Accept(this, c);
            }

            c.Text(";");
        }
            private void ReportDiagnosticAt([NotNull] IReturnStatement returnStatement, [NotNull] string operationName)
            {
                Location location         = returnStatement.GetLocationForKeyword();
                ISymbol  containingMember = context.OwningSymbol.GetContainingMember();
                string   memberName       = containingMember.ToDisplayString(SymbolDisplayFormat.CSharpShortErrorMessageFormat);

                Diagnostic diagnostic = operationName == QueryOperationName
                    ? Diagnostic.Create(QueryRule, location, containingMember.Kind, memberName)
                    : Diagnostic.Create(OperationRule, location, containingMember.Kind, memberName, operationName);

                context.ReportDiagnostic(diagnostic);
            }
コード例 #22
0
            private static Location GetLocationForReturnOrYield([NotNull] IReturnStatement operation)
            {
                if (operation.Syntax is ReturnStatementSyntax returnSyntax)
                {
                    return(returnSyntax.ReturnKeyword.GetLocation());
                }

                if (operation.Syntax is YieldStatementSyntax yieldSyntax)
                {
                    return(GetLocationForYieldStatement(yieldSyntax));
                }

                throw ExceptionFactory.Unreachable();
            }
コード例 #23
0
ファイル: HLMethod.cs プロジェクト: Astaelan/Neutron
        private void ProcessReturnStatement(IReturnStatement pStatement)
        {
            if (mCurrentBlock.Terminated)
            {
                mCurrentBlock = CreateBlock(CreateLabel());
            }

            HLLocation locationExpression = null;

            if (pStatement.Expression != null)
            {
                locationExpression = ProcessExpression(pStatement.Expression);
            }
            mCurrentBlock.EmitReturn(locationExpression);
        }
コード例 #24
0
        /// <summary>
        /// Analyzes the return statement.
        /// </summary>
        /// <param name="returnStatement">
        /// The return statement.
        /// </param>
        /// <returns>
        /// </returns>
        public IEnumerable<SuggestionBase> AnalyzeReturnStatement(IReturnStatement returnStatement)
        {
            var suggestions = new List<SuggestionBase>();

              if (returnStatement.Value == null)
              {
            return suggestions;
              }

              if (this.RequiresAssertion(returnStatement))
              {
            suggestions.Add(new ReturnWarning(this.solution, returnStatement));
              }

              return suggestions;
        }
コード例 #25
0
            private static Location GetLocationForReturnOrYield([NotNull] IReturnStatement operation)
            {
                var returnSyntax = operation.Syntax as ReturnStatementSyntax;

                if (returnSyntax != null)
                {
                    return(returnSyntax.ReturnKeyword.GetLocation());
                }

                var yieldSyntax = operation.Syntax as YieldStatementSyntax;

                if (yieldSyntax != null)
                {
                    return(GetLocationForYieldStatement(yieldSyntax));
                }

                throw ExceptionFactory.Unreachable();
            }
コード例 #26
0
            public override IStatement Rewrite(IReturnStatement returnStatement)
            {
                if (returnStatement.Expression == null)
                {
                    return new GotoStatement()
                           {
                               TargetStatement = this.newExit,
                           }
                }
                ;
                List <IStatement> stmts = new List <IStatement>();

                stmts.Add(MakeAssignmentStatement(this.result, returnStatement.Expression, returnStatement.Locations));
                stmts.Add(new GotoStatement()
                {
                    TargetStatement = newExit
                });
                return(new BlockStatement()
                {
                    Statements = stmts
                });
            }
コード例 #27
0
        /// <summary>
        ///
        /// </summary>
        public override void TraverseChildren(IReturnStatement returnStatement)
        {
            Bpl.IToken tok = returnStatement.Token();

            if (returnStatement.Expression != null)
            {
                ExpressionTraverser etrav = this.factory.MakeExpressionTraverser(this.sink, this, this.contractContext);
                etrav.Traverse(returnStatement.Expression);

                if (this.sink.ReturnVariable == null || etrav.TranslatedExpressions.Count < 1)
                {
                    throw new TranslationException(String.Format("{0} returns a value that is not supported by the function", returnStatement.ToString()));
                }

                var returnExprBpl = etrav.TranslatedExpressions.Pop();
                AddRecordCall("<return value>", returnStatement.Expression, returnExprBpl);
                StmtBuilder.Add(Bpl.Cmd.SimpleAssign(tok,
                                                     new Bpl.IdentifierExpr(tok, this.sink.ReturnVariable), returnExprBpl));
            }

            StmtBuilder.Add(new Bpl.ReturnCmd(returnStatement.Token()));
        }
コード例 #28
0
ファイル: Visitors.cs プロジェクト: Refresh06/visualmutator
 /// <summary>
 /// Traverses the return statement.
 /// </summary>
 public void Traverse(IReturnStatement returnStatement)
 {
     Contract.Requires(returnStatement != null);
       if (this.preorderVisitor != null) this.preorderVisitor.Visit(returnStatement);
       if (this.StopTraversal) return;
       this.TraverseChildren(returnStatement);
       if (this.StopTraversal) return;
       if (this.postorderVisitor != null) this.postorderVisitor.Visit(returnStatement);
 }
コード例 #29
0
ファイル: Visitors.cs プロジェクト: Refresh06/visualmutator
 /// <summary>
 /// Traverses the return statement.
 /// </summary>
 public virtual void TraverseChildren(IReturnStatement returnStatement)
 {
     Contract.Requires(returnStatement != null);
       this.TraverseChildren((IStatement)returnStatement);
       if (this.StopTraversal) return;
       if (returnStatement.Expression != null)
     this.Traverse(returnStatement.Expression);
 }
コード例 #30
0
ファイル: StatementSourceEmitter.cs プロジェクト: xornand/cci
 public override void TraverseChildren(IReturnStatement returnStatement) {
   this.PrintToken(CSharpToken.Indent);
   this.PrintToken(CSharpToken.Return);
   if (returnStatement.Expression != null) {
     this.PrintToken(CSharpToken.Space);
     this.Traverse(returnStatement.Expression);
   }
   this.PrintToken(CSharpToken.Semicolon);
   this.PrintToken(CSharpToken.NewLine);
 }
コード例 #31
0
ファイル: Visitors.cs プロジェクト: Refresh06/visualmutator
 /// <summary>
 /// Performs some computation with the return statement.
 /// </summary>
 /// <param name="returnStatement"></param>
 public virtual void Visit(IReturnStatement returnStatement)
 {
 }
コード例 #32
0
 public override void VisitReturnStatement(IReturnStatement operation)
 {
     base.VisitReturnStatement(operation);
 }
コード例 #33
0
 public virtual void VisitReturnStatement(IReturnStatement operation)
 {
     DefaultVisit(operation);
 }
コード例 #34
0
 /// <summary>
 /// Rewrites the return statement.
 /// </summary>
 /// <param name="returnStatement"></param>
 public virtual IStatement Rewrite(IReturnStatement returnStatement)
 {
     return returnStatement;
 }
コード例 #35
0
ファイル: Visitors.cs プロジェクト: Refresh06/visualmutator
 public void Visit(IReturnStatement returnStatement)
 {
     Contract.Requires(returnStatement != null);
       throw new NotImplementedException();
 }
コード例 #36
0
ファイル: Copier.cs プロジェクト: Refresh06/visualmutator
    /// <summary>
    /// Returns a shallow copy of the return statement.
    /// </summary>
    /// <param name="returnStatement"></param>
    public ReturnStatement Copy(IReturnStatement returnStatement) {
      Contract.Requires(returnStatement != null);
      Contract.Ensures(Contract.Result<ReturnStatement>() != null);

      return new ReturnStatement(returnStatement);
    }
コード例 #37
0
ファイル: TestOperationWalker.cs プロジェクト: CAPCHIK/roslyn
 public override void VisitReturnStatement(IReturnStatement operation)
 {
     base.VisitReturnStatement(operation);
 }
コード例 #38
0
        /// <summary>
        /// Visits the return statement.
        /// </summary>
        /// <param name="returnStatement">The return statement.</param>
        /// <param name="consumer">The consumer.</param>
        /// <returns></returns>
        public override object VisitReturnStatement(IReturnStatement returnStatement, IHighlightingConsumer consumer)
        {
            AddHighlighting(consumer, this.returnAnalyzer.AnalyzeReturnStatement(returnStatement));

              return base.VisitReturnStatement(returnStatement, consumer);
        }
コード例 #39
0
ファイル: Copier.cs プロジェクト: Refresh06/visualmutator
    /// <summary>
    /// Returns a deep copy of the return statement.
    /// </summary>
    /// <param name="returnStatement"></param>
    public ReturnStatement Copy(IReturnStatement returnStatement) {
      Contract.Requires(returnStatement != null);
      Contract.Ensures(Contract.Result<ReturnStatement>() != null);

      var mutableCopy = this.shallowCopier.Copy(returnStatement);
      if (mutableCopy.Expression != null)
        mutableCopy.Expression = this.Copy(mutableCopy.Expression);
      return mutableCopy;
    }
コード例 #40
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ReturnWarning"/> class.
 /// </summary>
 /// <param name="solution">
 /// The solution.
 /// </param>
 /// <param name="returnStatement">
 /// The return statement.
 /// </param>
 public ReturnWarning(ISolution solution, IReturnStatement returnStatement)
     : base(Name, returnStatement, GetRange(returnStatement), "Return value should be asserted [Agent Johnson]")
 {
     this.returnStatement = returnStatement;
 }
コード例 #41
0
ファイル: Visitors.cs プロジェクト: Refresh06/visualmutator
 public void Visit(IReturnStatement returnStatement)
 {
     this.traverser.Traverse(returnStatement);
 }
コード例 #42
0
        /// <summary>
        /// Determines whether this instance is asserted.
        /// </summary>
        /// <param name="returnStatement">
        /// The return statement.
        /// </param>
        /// <returns>
        /// <c>true</c> if this instance is asserted; otherwise, <c>false</c>.
        /// </returns>
        private bool RequiresAssertion(IReturnStatement returnStatement)
        {
            var canBeNullName = CodeAnnotationsCache.CanBeNullAttributeShortName;
              if (string.IsNullOrEmpty(canBeNullName))
              {
            return false;
              }

              var notNullName = CodeAnnotationsCache.NotNullAttributeShortName;
              if (string.IsNullOrEmpty(notNullName))
              {
            return false;
              }

              var value = returnStatement.Value;
              if (value.IsConstantValue())
              {
            return false;
              }

              var returnValue = value.GetText();
              if (returnValue == "string.Empty" || returnValue == "String.Empty" || returnValue == "null")
              {
            return false;
              }

              if (!(value is ICreationExpression))
              {
            return false;
              }

              var function = returnStatement.GetContainingTypeMemberDeclaration() as IFunction;
              if (function == null)
              {
            return false;
              }

              var type = function.ReturnType;
              if (!type.IsReferenceType())
              {
            return false;
              }

              if (this.HasAnnotation(function))
              {
            return false;
              }

              var rule = Rule.GetRule(type, function.Language) ?? Rule.GetDefaultRule();
              if (rule == null)
              {
            return false;
              }

              if (string.IsNullOrEmpty(rule.ReturnAssertion))
              {
            return false;
              }

              var isAsserted = this.GetIsAsserted(returnStatement);
              if (isAsserted)
              {
            return false;
              }

              return GetValueAnalysis(returnStatement, function);
        }
コード例 #43
0
ファイル: Visitors.cs プロジェクト: Refresh06/visualmutator
 /// <summary>
 /// Performs some computation with the return statement.
 /// </summary>
 /// <param name="returnStatement"></param>
 public virtual void Visit(IReturnStatement returnStatement)
 {
     this.Visit((IStatement)returnStatement);
 }
コード例 #44
0
        public override void TraverseChildren(IReturnStatement returnStatement)
{ MethodEnter(returnStatement);
            base.TraverseChildren(returnStatement);
     MethodExit();   }
コード例 #45
0
ファイル: Visitors.cs プロジェクト: Refresh06/visualmutator
 public void Visit(IReturnStatement returnStatement)
 {
     throw new NotImplementedException();
 }
コード例 #46
0
        /// <summary>
        /// Gets the is asserted.
        /// </summary>
        /// <param name="returnStatement">
        /// The return statement.
        /// </param>
        /// <returns>
        /// Returns the boolean.
        /// </returns>
        private bool GetIsAsserted(IReturnStatement returnStatement)
        {
            var invocationExpression = returnStatement.Value as IInvocationExpression;
              if (invocationExpression == null)
              {
            return false;
              }

              var invokedExpression = invocationExpression.InvokedExpression as IReferenceExpression;
              if (invokedExpression == null)
              {
            return false;
              }

              var resolveResult = invokedExpression.Reference.Resolve();

              IMethod method = null;

              var methodDeclaration = resolveResult.DeclaredElement as IMethodDeclaration;
              if (methodDeclaration != null)
              {
            method = methodDeclaration.DeclaredElement;
              }

              if (method == null)
              {
            method = resolveResult.DeclaredElement as IMethod;
              }

              if (method == null)
              {
            return false;
              }

              var codeAnnotationsCache = CodeAnnotationsCache.GetInstance(this.solution);

              return codeAnnotationsCache.IsAssertionMethod(method);
        }
コード例 #47
0
 public virtual void VisitYieldBreakStatement(IReturnStatement operation)
 {
     DefaultVisit(operation);
 }
コード例 #48
0
ファイル: Visitors.cs プロジェクト: Refresh06/visualmutator
 //^ ensures this.path.Count == old(this.path.Count);
 /// <summary>
 /// Traverses the return statement.
 /// </summary>
 /// <param name="returnStatement"></param>
 public virtual void Visit(IReturnStatement returnStatement)
 {
     if (this.stopTraversal) return;
       //^ int oldCount = this.path.Count;
       this.path.Push(returnStatement);
       if (returnStatement.Expression != null)
     this.Visit(returnStatement.Expression);
       //^ assume this.path.Count == oldCount+1; //True because all of the virtual methods of this class promise not decrease this.path.Count.
       this.path.Pop();
 }
コード例 #49
0
 public virtual void VisitReturnStatement <TExpression>(IReturnStatement <TExpression> returnStatement)
     where TExpression : IExpression
 {
     Visit(returnStatement);
 }
コード例 #50
0
ファイル: Statements.cs プロジェクト: Refresh06/visualmutator
 /// <summary>
 /// 
 /// </summary>
 /// <param name="returnStatement"></param>
 public ReturnStatement(IReturnStatement returnStatement)
   : base(returnStatement) {
   this.expression = returnStatement.Expression;
 }
コード例 #51
0
 public virtual void VisitReturnStatement(IReturnStatement s)
 {
 }
コード例 #52
0
 public virtual void onASTElement(IReturnStatement returnStatement) { }
コード例 #53
0
ファイル: Copier.cs プロジェクト: riverar/devtools
 /// <summary>
 /// Visits the specified return statement.
 /// </summary>
 /// <param name="returnStatement">The return statement.</param>
 public override void Visit(IReturnStatement returnStatement)
 {
     ReturnStatement mutableReturnStatement = new ReturnStatement(returnStatement);
     this.resultStatement = this.myCodeCopier.DeepCopy(mutableReturnStatement);
 }
コード例 #54
0
 /// <inheritdoc />
 public override Expression VisitYieldBreakStatement(IReturnStatement operation, LocalBinder argument)
 {
     return Expression.Break()
 }
コード例 #55
0
 public ReturnStatementCompiler(IReturnStatement node, AbstractILCompilerParams myParams) : base(myParams)
 {
     myReturnStatement = node;
 }
コード例 #56
0
ファイル: Copier.cs プロジェクト: riverar/devtools
 /// <summary>
 /// Returns a deep copy of the return statement.
 /// </summary>
 /// <param name="returnStatement"></param>
 public ReturnStatement Copy(IReturnStatement returnStatement)
 {
     var mutableCopy = this.shallowCopier.Copy(returnStatement);
       if (mutableCopy.Expression != null)
     mutableCopy.Expression = this.Copy(mutableCopy.Expression);
       return mutableCopy;
 }
コード例 #57
0
 public override void TraverseChildren(IReturnStatement returnStatement)
 {
     MethodEnter(returnStatement);
     base.TraverseChildren(returnStatement);
     MethodExit();
 }
コード例 #58
0
ファイル: Copier.cs プロジェクト: riverar/devtools
 /// <summary>
 /// Returns a shallow copy of the return statement.
 /// </summary>
 /// <param name="returnStatement"></param>
 public ReturnStatement Copy(IReturnStatement returnStatement)
 {
     return new ReturnStatement(returnStatement);
 }
コード例 #59
0
 /// <inheritdoc />
 public override Expression VisitReturnStatement(IReturnStatement operation, LocalBinder argument)
 {
     return(Expression.Return(ReturnTarget));
 }
コード例 #60
0
ファイル: Copier.cs プロジェクト: riverar/devtools
 public void Visit(IReturnStatement returnStatement)
 {
     this.result = this.copier.Copy(returnStatement);
 }