コード例 #1
0
        public static IYieldBreakStatement YieldBreak(IBlockedStatement owner)
        {
            var r = new YieldBreakStatement();

            owner.Statements.Add(r);
            return(r);
        }
コード例 #2
0
        public static IYieldStatement Yield(this IBlockedStatement owner, IExpression result)
        {
            var r = new YieldStatement()
            {
                Result = result
            };

            owner.Statements.Add(r);
            return(r);
        }
コード例 #3
0
        //
        /// <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())));
            }
        }