当前位置: 首页>>代码示例>>C#>>正文


C# Ast.ReturnStatement类代码示例

本文整理汇总了C#中Boo.Lang.Compiler.Ast.ReturnStatement的典型用法代码示例。如果您正苦于以下问题:C# ReturnStatement类的具体用法?C# ReturnStatement怎么用?C# ReturnStatement使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


ReturnStatement类属于Boo.Lang.Compiler.Ast命名空间,在下文中一共展示了ReturnStatement类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: CreateGetter

		Method CreateGetter(Field f)
		{
			Method m = new Method();
			m.Name = "get";

			// value = ViewState["<f.Name>"]
			m.Body.Statements.Add(
				new ExpressionStatement(
					new BinaryExpression(
						BinaryOperatorType.Assign,
						new ReferenceExpression("value"),
						CreateViewStateSlice(f)
						)
					)
				);

			if (null != _default)
			{
				// return <_default> unless value
				ReturnStatement rs = new ReturnStatement(_default);
				rs.Modifier = new StatementModifier(StatementModifierType.Unless, new ReferenceExpression("value"));
				m.Body.Statements.Add(rs);
			}

			// return value
			m.Body.Statements.Add(
				new ReturnStatement(
					new ReferenceExpression("value")
					)
				);

			return m;
		}
开发者ID:0xb1dd1e,项目名称:boo,代码行数:33,代码来源:ViewStateAttribute.cs

示例2: LeaveReturnStatement

		public override void LeaveReturnStatement(ReturnStatement node)
		{
			if (node.Expression == null)
				return;

			TryToReify(node.Expression, _currentMethod.ReturnType);
		}
开发者ID:0xb1dd1e,项目名称:boo,代码行数:7,代码来源:ReifyTypes.cs

示例3: OnReturnStatement

			public override void OnReturnStatement(ReturnStatement node)
			{
				noReturnStatement = false;
				if (node.Expression == null) {
					result = ParserService.CurrentProjectContent.SystemTypes.Void;
				} else {
					result = new BooResolver().GetTypeOfExpression(node.Expression, context);
				}
			}
开发者ID:kingjiang,项目名称:SharpDevelopLite,代码行数:9,代码来源:InferredReturnType.cs

示例4: ForCoverage

        public void ForCoverage()
        {
            var block = new Block();
            var statement = new ReturnStatement(new StringLiteralExpression("literal"));
            block.Statements.Add(statement);

            var visitor = new ReturnValueVisitor();
            bool found = visitor.Found;
            visitor.OnReturnStatement(statement);
        }
开发者ID:JonKruger,项目名称:MvcContrib,代码行数:10,代码来源:ReturnValueVisitorTester.cs

示例5: CheckForEmptyCoroutine

 public void CheckForEmptyCoroutine(Method node)
 {
     if (this.IsEmptyCoroutine(node))
     {
         ReturnStatement statement;
         ReturnStatement statement1 = statement = new ReturnStatement(LexicalInfo.Empty);
         statement.set_Expression(Expression.Lift(this.EmptyEnumeratorReference));
         node.get_Body().Add(statement);
     }
 }
开发者ID:CarlosHBC,项目名称:UnityDecompiled,代码行数:10,代码来源:ProcessUnityScriptMethods.cs

示例6: LeaveReturnStatement

		override public void LeaveReturnStatement(ReturnStatement node)
		{
			Expression expression = node.Expression;
			if (null == expression)
				return;

			if (!HasReturnType(_current))
				return;

			Expression newExpression = Convert(_current.ReturnType, expression);
			if (null == newExpression)
				return;

			node.Expression = newExpression;
		}
开发者ID:0xb1dd1e,项目名称:boo,代码行数:15,代码来源:InjectCallableConversions.cs

示例7: OnReturnStatement

		public override void OnReturnStatement(ReturnStatement stmt)
		{
			// First normalize the statement
			normalizer.Visit(stmt);
			//empty return, so error
			if (stmt.Expression == null)
				throw new MonoRailException("An empty return statement on a method with output attribute");
			found = true;
			Block block = (Block) stmt.ParentNode;
			int index = 0;
			while(block.Statements[index] != stmt)
			{
				index ++;
			}

			MethodInvocationExpression invocation = mie.CloneNode();
			invocation.Arguments.Add(stmt.Expression);

			stmt.Expression = invocation;
		}
开发者ID:ralescano,项目名称:castle,代码行数:20,代码来源:ReturnValueVisitor.cs

示例8: return_expression_stmt

	protected ReturnStatement  return_expression_stmt() //throws RecognitionException, TokenStreamException
{
		ReturnStatement s;
		
		IToken  r = null;
		
				s = null;
				Expression e = null;
				StatementModifier modifier = null;
			
		
		try {      // for error handling
			r = LT(1);
			match(RETURN);
			{
				switch ( LA(1) )
				{
				case ESEPARATOR:
				case CAST:
				case CHAR:
				case FALSE:
				case NOT:
				case NULL:
				case SELF:
				case SUPER:
				case THEN:
				case TRUE:
				case TYPEOF:
				case TRIPLE_QUOTED_STRING:
				case LPAREN:
				case DOUBLE_QUOTED_STRING:
				case SINGLE_QUOTED_STRING:
				case ID:
				case MULTIPLY:
				case LBRACK:
				case COMMA:
				case SPLICE_BEGIN:
				case DOT:
				case LBRACE:
				case QQ_BEGIN:
				case SUBTRACT:
				case LONG:
				case INCREMENT:
				case DECREMENT:
				case ONES_COMPLEMENT:
				case INT:
				case BACKTICK_QUOTED_STRING:
				case RE_LITERAL:
				case DOUBLE:
				case FLOAT:
				case TIMESPAN:
				{
					e=array_or_expression();
					break;
				}
				case EOL:
				case IF:
				case UNLESS:
				case WHILE:
				case EOS:
				case RBRACE:
				case QQ_END:
				{
					break;
				}
				default:
				{
					throw new NoViableAltException(LT(1), getFilename());
				}
				 }
			}
			{
				if (((LA(1)==IF||LA(1)==UNLESS||LA(1)==WHILE))&&(!_compact))
				{
					modifier=stmt_modifier();
				}
				else if ((tokenSet_98_.member(LA(1)))) {
				}
				else
				{
					throw new NoViableAltException(LT(1), getFilename());
				}
				
			}
			if (0==inputState.guessing)
			{
				
						s = new ReturnStatement(ToLexicalInfo(r));
						s.Modifier = modifier;
						s.Expression = e;
					
			}
		}
		catch (RecognitionException ex)
		{
			if (0 == inputState.guessing)
			{
				reportError(ex, "return_expression_stmt");
				recover(ex,tokenSet_98_);
			}
//.........这里部分代码省略.........
开发者ID:hlizard,项目名称:boo,代码行数:101,代码来源:BooParserBase.cs

示例9: AddOptionalReturnStatement

        private static void AddOptionalReturnStatement(Block body)
        {
            if (body.Statements.Count != 1) return;
            var stmt = body.FirstStatement as ExpressionStatement;
            if (null == stmt) return;

            var rs = new ReturnStatement(stmt.LexicalInfo, stmt.Expression, null);
            rs.Annotate(OptionalReturnStatementAnnotation);
            body.Replace(stmt, rs);
        }
开发者ID:stuman08,项目名称:boo,代码行数:10,代码来源:ProcessMethodBodies.cs

示例10: return_stmt

        //throws RecognitionException, TokenStreamException
        protected ReturnStatement return_stmt()
        {
            ReturnStatement s;

            IToken  r = null;

                s = null;
                Expression e = null;
                StatementModifier modifier = null;

            try {      // for error handling
            r = LT(1);
            match(RETURN);
            {
                switch ( LA(1) )
                {
                case ESEPARATOR:
                case CAST:
                case CHAR:
                case FALSE:
                case NOT:
                case NULL:
                case SELF:
                case SUPER:
                case TRUE:
                case TYPEOF:
                case ID:
                case TRIPLE_QUOTED_STRING:
                case LPAREN:
                case DOUBLE_QUOTED_STRING:
                case SINGLE_QUOTED_STRING:
                case LBRACK:
                case SUBTRACT:
                case COMMA:
                case SPLICE_BEGIN:
                case DOT:
                case MULTIPLY:
                case LBRACE:
                case QQ_BEGIN:
                case LONG:
                case INCREMENT:
                case DECREMENT:
                case ONES_COMPLEMENT:
                case INT:
                case RE_LITERAL:
                case DOUBLE:
                case FLOAT:
                case TIMESPAN:
                {
                    {
                        e=array_or_expression();
                        {
                            switch ( LA(1) )
                            {
                            case DEF:
                            case DO:
                            case COLON:
                            {
                                e=method_invocation_block(e);
                                break;
                            }
                            case EOF:
                            case IF:
                            case UNLESS:
                            case WHILE:
                            case EOS:
                            case NEWLINE:
                            {
                                {
                                    {
                                        switch ( LA(1) )
                                        {
                                        case IF:
                                        case UNLESS:
                                        case WHILE:
                                        {
                                            modifier=stmt_modifier();
                                            break;
                                        }
                                        case EOF:
                                        case EOS:
                                        case NEWLINE:
                                        {
                                            break;
                                        }
                                        default:
                                        {
                                            throw new NoViableAltException(LT(1), getFilename());
                                        }
                                         }
                                    }
                                    eos();
                                }
                                break;
                            }
                            default:
                            {
                                throw new NoViableAltException(LT(1), getFilename());
                            }
//.........这里部分代码省略.........
开发者ID:0xb1dd1e,项目名称:boo,代码行数:101,代码来源:WSABooParserBase.cs

示例11: OnReturnStatement

        public override void OnReturnStatement(ReturnStatement node)
        {
            EmitDebugInfo(node);
            OpCode retOpCode = _tryBlock > 0 ? OpCodes.Leave : OpCodes.Br;
            Label label = _returnLabel;

            if (null != node.Expression)
            {
                ++_returnStatements;

                Visit(node.Expression);
                EmitCastIfNeeded(_returnType, PopType());

                if (retOpCode == OpCodes.Leave)
                {
                    //`leave' clears the stack, so we have to store return value temporarily
                    //we can use a default value holder for that since it won't be read afterwards
                    //of course this is necessary only if return type is not void
                    LocalBuilder temp = GetDefaultValueHolder(_returnType);
                    _il.Emit(OpCodes.Stloc, temp);
                    label = _leaveLabel;
                    _hasLeaveWithStoredValue = true;
                }
            }
            else if (_returnType != TypeSystemServices.VoidType)
            {
                _returnImplicit = true;
                label = _implicitLabel;
            }

            if (_method.Body.LastStatement != node)
                _il.Emit(retOpCode, label);
            else if (null != node.Expression)
                _returnStatements = -1; //instruct epilogue to branch last ret only if necessary
        }
开发者ID:Bombadil77,项目名称:boo,代码行数:35,代码来源:EmitAssembly.cs

示例12: OnReturnStatement

 public override void OnReturnStatement(ReturnStatement r)
 {
     WriteIndented();
     WriteKeyword("return ");
     Visit(r.Expression);
     Visit(r.Modifier);
     WriteLine();
 }
开发者ID:w4x,项目名称:boolangstudio,代码行数:8,代码来源:BooPrinterVisitor.cs

示例13: LeaveReturnStatement

 public override void LeaveReturnStatement(ReturnStatement node)
 {
     if (HasReturnType(_current))
     {
         Expression expression = node.Expression;
         if (null != expression)
         {
             Expression newExpression = Convert(_current.ReturnType, expression);
             if (null != newExpression)
             {
                 node.Expression = newExpression;
             }
         }
     }
 }
开发者ID:boo,项目名称:boo-lang,代码行数:15,代码来源:InjectCallableConversions.cs

示例14: OnReturnStatement

		public override void OnReturnStatement(ReturnStatement node)
		{
			_expression = null;
			if (node.Expression != null)
				node.Expression.Accept(this);
			_statements.Add(new CodeMethodReturnStatement(_expression));
		}
开发者ID:kingjiang,项目名称:SharpDevelopLite,代码行数:7,代码来源:CodeDomVisitor.cs

示例15: Clone

		override public object Clone()
		{
		
			ReturnStatement clone = new ReturnStatement();
			clone._lexicalInfo = _lexicalInfo;
			clone._endSourceLocation = _endSourceLocation;
			clone._documentation = _documentation;
			clone._isSynthetic = _isSynthetic;
			clone._entity = _entity;
			if (_annotations != null) clone._annotations = (Hashtable)_annotations.Clone();
			if (null != _modifier)
			{
				clone._modifier = _modifier.Clone() as StatementModifier;
				clone._modifier.InitializeParent(clone);
			}
			if (null != _expression)
			{
				clone._expression = _expression.Clone() as Expression;
				clone._expression.InitializeParent(clone);
			}
			return clone;


		}
开发者ID:Rfvgyhn,项目名称:boo,代码行数:24,代码来源:ReturnStatementImpl.cs


注:本文中的Boo.Lang.Compiler.Ast.ReturnStatement类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。