Beispiel #1
0
    private static void ProcessType(FxRedist redist, MemberDeclarationSyntax syntax, SemanticModel typeModel, string currentNamespace, ReportWriter reportWriter)
    {
        ISymbol symbol = typeModel.GetDeclaredSymbol(syntax);
        string  typeId = symbol.GetDocumentationCommentId();

        var typeName = typeId.Substring(2);

        if (FxdacSyntaxRewriter.s_ShouldRemoveType(typeName))
        {
            reportWriter.WriteListItem("Removed type {0}", symbol.Name);
            return;
        }
        FxAssembly typeAssembly = redist.GetAssemblyForType(typeId);

        if (typeAssembly.HasEmitedType(typeId))
        {
            return;
        }

        // rewrite type
        var rewriter = new FxdacSyntaxRewriter(reportWriter, typeModel, typeAssembly.Name);

        syntax = (MemberDeclarationSyntax)syntax.Accept(rewriter);

        // add type to assembly
        var typeSyntax = new FxType()
        {
            Declaration = syntax, Symbol = (ITypeSymbol)symbol
        };

        typeAssembly.AddType(currentNamespace, typeSyntax);
    }
Beispiel #2
0
        public void GenerateStates()
        {
            var lastState = new State(this);

            lastState.Statements.Add(ReturnOutOfState());

            currentState = new State(this)
            {
                NextState = lastState
            };
            node.Accept(this);

            // Post-process goto statements
            if (labelStates.Any())
            {
                var gotoSubstituter = new GotoSubstituter(compilation, labelStates);
                foreach (var state in states)
                {
                    state.Statements = state.Statements.Select(x => (StatementSyntax)x.Accept(gotoSubstituter)).ToList();
                }
            }

            var lastStatement = states.Last().Statements.LastOrDefault();

            if (lastStatement == null || (!(lastStatement is BreakStatementSyntax) && !(lastStatement is ReturnStatementSyntax)))
            {
                states.Last().Statements.Add(Cs.Break());
            }
        }
        public static bool HasYield(MemberDeclarationSyntax method)
        {
            if (method.IsAsync())
                return false;

            var yieldChecker = new YieldChecker(true);
            method.Accept(yieldChecker);
            return yieldChecker.isSpecial;
        }
Beispiel #4
0
        public static bool HasYield(MemberDeclarationSyntax method)
        {
            if (method.IsAsync())
            {
                return(false);
            }

            var yieldChecker = new YieldChecker(true);

            method.Accept(yieldChecker);
            return(yieldChecker.isSpecial);
        }