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);
        }
Example #2
0
        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);
        }
Example #4
0
        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('*'));
        }
Example #5
0
 public static bool Contains(this SyntaxTokenList list, SyntaxKind modifier)
 => list.Any(x => CSharpExtensions.IsKind((SyntaxToken)x, modifier));