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); }
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; }
public static bool HasYield(MemberDeclarationSyntax method) { if (method.IsAsync()) { return(false); } var yieldChecker = new YieldChecker(true); method.Accept(yieldChecker); return(yieldChecker.isSpecial); }