diff --git a/src/Compilers/Core/Portable/InternalUtilities/GeneratedCodeUtilities.cs b/src/Compilers/Core/Portable/InternalUtilities/GeneratedCodeUtilities.cs index 4072a2f6b698ac1714f2b3d6bdffa00aca4f393e..f2ead136da17e13f0af5ee576cb2ff5fe3ea2315 100644 --- a/src/Compilers/Core/Portable/InternalUtilities/GeneratedCodeUtilities.cs +++ b/src/Compilers/Core/Portable/InternalUtilities/GeneratedCodeUtilities.cs @@ -8,16 +8,21 @@ namespace Roslyn.Utilities { - internal static class GeneratedCodeUtilities + internal static class GeneratedCodeUtilities + { + private static readonly string[] s_autoGeneratedStrings = new[] { " 1) @@ -25,77 +30,81 @@ internal static class GeneratedCodeUtilities return false; } - if (symbol.GetAttributes().Any(a => a.AttributeClass == generatedCodeAttribute)) + foreach (var attribute in symbol.GetAttributes()) { - return true; + if (generatedCodeAttribute.Equals(attribute.AttributeClass)) + { + return true; + } } - - return symbol.ContainingSymbol != null && IsGeneratedSymbolWithGeneratedCodeAttribute(symbol.ContainingSymbol, generatedCodeAttribute); } - internal static bool IsGeneratedCode( - SyntaxTree tree, Func isComment, CancellationToken cancellationToken) - { - return IsGeneratedCodeFile(tree.FilePath) || - BeginsWithAutoGeneratedComment(tree, isComment, cancellationToken); - } + return symbol.ContainingSymbol != null && IsGeneratedSymbolWithGeneratedCodeAttribute(symbol.ContainingSymbol, generatedCodeAttribute); + } - private static bool IsGeneratedCodeFile(string filePath) + internal static bool IsGeneratedCode( + SyntaxTree tree, Func isComment, CancellationToken cancellationToken) + { + return IsGeneratedCodeFile(tree.FilePath) || + BeginsWithAutoGeneratedComment(tree, isComment, cancellationToken); + } + + private static bool IsGeneratedCodeFile(string filePath) + { + if (!string.IsNullOrEmpty(filePath)) { - if (!string.IsNullOrEmpty(filePath)) + var fileName = PathUtilities.GetFileName(filePath); + if (fileName.StartsWith("TemporaryGeneratedFile_", StringComparison.OrdinalIgnoreCase)) { - var fileName = PathUtilities.GetFileName(filePath); - if (fileName.StartsWith("TemporaryGeneratedFile_", StringComparison.OrdinalIgnoreCase)) - { - return true; - } + return true; + } - var extension = PathUtilities.GetExtension(fileName); - if (!string.IsNullOrEmpty(extension)) + var extension = PathUtilities.GetExtension(fileName); + if (!string.IsNullOrEmpty(extension)) + { + var fileNameWithoutExtension = PathUtilities.GetFileName(filePath, includeExtension: false); + if (fileNameWithoutExtension.EndsWith(".designer", StringComparison.OrdinalIgnoreCase) || + fileNameWithoutExtension.EndsWith(".generated", StringComparison.OrdinalIgnoreCase) || + fileNameWithoutExtension.EndsWith(".g", StringComparison.OrdinalIgnoreCase) || + fileNameWithoutExtension.EndsWith(".g.i", StringComparison.OrdinalIgnoreCase)) { - var fileNameWithoutExtension = PathUtilities.GetFileName(filePath, includeExtension: false); - if (fileNameWithoutExtension.EndsWith(".designer", StringComparison.OrdinalIgnoreCase) || - fileNameWithoutExtension.EndsWith(".generated", StringComparison.OrdinalIgnoreCase) || - fileNameWithoutExtension.EndsWith(".g", StringComparison.OrdinalIgnoreCase) || - fileNameWithoutExtension.EndsWith(".g.i", StringComparison.OrdinalIgnoreCase)) - { - return true; - } + return true; } } - - return false; } - private static bool BeginsWithAutoGeneratedComment( - SyntaxTree tree, Func isComment, CancellationToken cancellationToken) + return false; + } + + private static bool BeginsWithAutoGeneratedComment( + SyntaxTree tree, Func isComment, CancellationToken cancellationToken) + { + var root = tree.GetRoot(cancellationToken); + if (root.HasLeadingTrivia) { - var root = tree.GetRoot(cancellationToken); - if (root.HasLeadingTrivia) - { - var leadingTrivia = root.GetLeadingTrivia(); + var leadingTrivia = root.GetLeadingTrivia(); - foreach (var trivia in leadingTrivia) + foreach (var trivia in leadingTrivia) + { + if (!isComment(trivia)) { - if (!isComment(trivia)) - { - continue; - } + continue; + } - var text = trivia.ToString(); + var text = trivia.ToString(); - // Check to see if the text of the comment contains an auto generated comment. - foreach (var autoGenerated in s_autoGeneratedStrings) + // Check to see if the text of the comment contains an auto generated comment. + foreach (var autoGenerated in s_autoGeneratedStrings) + { + if (text.Contains(autoGenerated)) { - if (text.Contains(autoGenerated)) - { - return true; - } + return true; } } } - - return false; } + + return false; } + } } \ No newline at end of file