static bool ContainsAutogeneratedComment(SyntaxTree tree, CancellationToken cancellationToken = default(CancellationToken)) { var root = tree.GetRoot(cancellationToken); if (root == null) { return(false); } var firstToken = root.GetFirstToken(); if (!firstToken.HasLeadingTrivia) { return(false); } foreach (var trivia in firstToken.LeadingTrivia.Where(t => CSharpExtensions.IsKind((SyntaxTrivia)t, SyntaxKind.SingleLineCommentTrivia)).Take(2)) { var str = trivia.ToString(); if (str == "// This file has been generated by the GUI designer. Do not modify." || str == "// <auto-generated>" || str == "// <autogenerated>") { return(true); } } return(false); }
public void Compile(Microsoft.CodeAnalysis.Project project) { _project = project; foreach (var document in _project.Documents) { var tree = document.GetSyntaxTreeAsync().Result; foreach (var type in tree.GetRoot().DescendantNodes()) { switch (type) { case ClassDeclarationSyntax syntax: if (syntax.Modifiers.Any(x => CSharpExtensions.IsKind((SyntaxToken)x, SyntaxKind.AbstractKeyword))) { DeclarationManager.Instance.AddAbstractClass(syntax); } else { DeclarationManager.Instance.AddClass(syntax); } break; case InterfaceDeclarationSyntax syntax: DeclarationManager.Instance.AddInterface(syntax); break; case EnumDeclarationSyntax syntax: DeclarationManager.Instance.AddEnum(syntax); break; } } } }
public static bool HasOutKeyword(ParameterSyntax parameter) { bool hasOutKeyword = parameter .Modifiers .Any(modifier => CSharpExtensions.IsKind((SyntaxToken)modifier, SyntaxKind.OutKeyword)); return(hasOutKeyword); }
private static void WriteLuaCodeFromCommentBlock(ThrowStatementSyntax syntax, IIndentedTextWriterWrapper textWriter) { var luaComments = syntax.Expression.Parent.DescendantTrivia() .Where(t => CSharpExtensions.IsKind((SyntaxTrivia)t, SyntaxKind.MultiLineCommentTrivia) && t.ToString().StartsWith(LuaHeader)) .ToArray(); if (luaComments.Length == 0) { throw new Exception( $"{nameof(ReplaceWithLuaBlock)} exception was thrown, but could not find any block starting with '{LuaHeader}'."); } if (luaComments.Length > 1) { throw new Exception($"Multiple ({luaComments.Length}) lua blocks found in same scope."); } textWriter.WriteLine(luaComments.Single().ToFullString().Replace(LuaHeader, "").TrimEnd('/').TrimEnd('*')); }
public static bool Contains(this SyntaxTokenList list, SyntaxKind modifier) => list.Any(x => CSharpExtensions.IsKind((SyntaxToken)x, modifier));