本文整理汇总了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;
}
示例2: LeaveReturnStatement
public override void LeaveReturnStatement(ReturnStatement node)
{
if (node.Expression == null)
return;
TryToReify(node.Expression, _currentMethod.ReturnType);
}
示例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);
}
}
示例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);
}
示例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);
}
}
示例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;
}
示例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;
}
示例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_);
}
//.........这里部分代码省略.........
示例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);
}
示例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());
}
//.........这里部分代码省略.........
示例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
}
示例12: OnReturnStatement
public override void OnReturnStatement(ReturnStatement r)
{
WriteIndented();
WriteKeyword("return ");
Visit(r.Expression);
Visit(r.Modifier);
WriteLine();
}
示例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;
}
}
}
}
示例14: OnReturnStatement
public override void OnReturnStatement(ReturnStatement node)
{
_expression = null;
if (node.Expression != null)
node.Expression.Accept(this);
_statements.Add(new CodeMethodReturnStatement(_expression));
}
示例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;
}