public static IYieldBreakStatement YieldBreak(IBlockedStatement owner) { var r = new YieldBreakStatement(); owner.Statements.Add(r); return(r); }
public static IYieldStatement Yield(this IBlockedStatement owner, IExpression result) { var r = new YieldStatement() { Result = result }; owner.Statements.Add(r); return(r); }
// /// <summary> /// Returns a <see cref="String"/> that represents the current <see cref="Declaration{TParent, TDom}"/>. /// </summary> /// <returns>A <see cref="String"/> that represents the current <see cref="Declaration{TParent, TDom}"/>.</returns> public override string ToString() { if (this is IType) { return(((IType)this).GetTypeName(CodeGeneratorHelper.DefaultDomOptions)); } List <string> members = new List <string>(); List <string> types = new List <string>(); List <string> nameSpaces = new List <string>(); IDeclaration current = this; while (current != null) { if (current is INameSpaceDeclaration) { nameSpaces.Add(current.GetUniqueIdentifier()); } else if (current is IType) { types.Add(current.GetUniqueIdentifier()); } else if (current is IDeclaration) { members.Add(current.GetUniqueIdentifier()); } if (current.ParentTarget is IIntermediateProject) { break; } if (current.ParentTarget is IStatementBlock) { IStatementBlock statementBlock = ((IStatementBlock)current.ParentTarget); if (statementBlock.Parent is IDeclaration) { current = (IDeclaration)statementBlock.Parent; continue; } IBlockedStatement parent = (IBlockedStatement)statementBlock.Parent; while (parent is IBlockedStatement) { if (parent.SourceBlock is IStatementBlock) { IStatementBlock currentBlock = ((IStatementBlock)parent.SourceBlock); if (currentBlock.Parent is IBlockedStatement) { parent = (IBlockedStatement)((IStatementBlock)parent.SourceBlock).Parent; } else if (currentBlock.Parent is IDeclaration) { current = (IDeclaration)currentBlock.Parent; break; } else if (currentBlock.Parent is IPropertyBodyMember) { current = ((IPropertyBodyMember)currentBlock.Parent).ParentTarget; break; } } } continue; } current = (IDeclaration)current.ParentTarget; } members.Reverse(); types.Reverse(); nameSpaces.Reverse(); if (members.Count > 0) { return(String.Format("{0}.{1}::{2}", String.Join(".", nameSpaces.ToArray()), String.Join("+", types.ToArray()), string.Join("]]", members.ToArray()))); } else if (types.Count > 0) { return(String.Format("{0}.{1}", String.Join(".", nameSpaces.ToArray()), String.Join("+", types.ToArray()))); } else { return(String.Format("{0}", String.Join(".", nameSpaces.ToArray()))); } }