Exemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="characterString"></param>
        /// <param name="length"></param>
        /// <param name="textRunProperties"></param>
        /// <param name="token"></param>
        /// <param name="node"></param>
        /// <exception cref="InvalidOperationException"></exception>
        public SyntaxTokenTextCharacters(string characterString, int length,
                                         TextRunProperties textRunProperties, SyntaxToken token, SyntaxNode node) : base(characterString, 0, length, textRunProperties, token.Span)
        {
            Token = token;
#if SUPPORTVB
            Microsoft.CodeAnalysis.VisualBasic.SyntaxKind kind;
#endif
            SyntaxKind csKind;
            switch (token.Language)
            {
#if SUPPORTVB
            case LanguageNames.VisualBasic:
                kind = VisualBasicExtensions.Kind(token);
                if (kind == Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.None)
                {
                    throw new AppInvalidOperationException(token.Span.ToString());
                }
                break;
#endif
            case LanguageNames.CSharp:
                csKind = Token.Kind();
                if (csKind == SyntaxKind.None)
                {
                    throw new InvalidOperationException(token.Span.ToString());
                }
                break;
            }

            Node = node;
        }
Exemplo n.º 2
0
        public static IMetadataExtractor GetExtractor(string extension)
        {
            if (CSharpExtensions.Contains(extension))
            {
                return(new CSharpMetadataExtractor());
            }
            else if (VisualBasicExtensions.Contains(extension))
            {
                throw new Exception($"Visual Basic is not yet supported by {nameof(Skaf)}");
            }

            throw new Exception($"The extension '{extension}' was unrecognized.");
        }
Exemplo n.º 3
0
        public static bool HasAutoGeneratedComment(this SyntaxTree tree)
        {
            var root = tree.GetRoot();

            if (root == null)
            {
                return(false);
            }
            var isCSharp   = root is CompilationUnitSyntax;
            var firstToken = root.GetFirstToken();
            SyntaxTriviaList trivia;

            if (firstToken == default(SyntaxToken))
            {
                var token = isCSharp
                    ? ((CompilationUnitSyntax)root).EndOfFileToken
                    : ((Microsoft.CodeAnalysis.VisualBasic.Syntax.CompilationUnitSyntax)root).EndOfFileToken;
                if (!token.HasLeadingTrivia)
                {
                    return(false);
                }
                trivia = token.LeadingTrivia;
            }
            else
            {
                if (!firstToken.HasLeadingTrivia)
                {
                    return(false);
                }
                trivia = firstToken.LeadingTrivia;
            }
            if (isCSharp)
            {
                var commentLines = trivia.Where(t => t.IsKind(SyntaxKind.SingleLineCommentTrivia)).Take(2).ToList();
                if (commentLines.Count != 2)
                {
                    return(false);
                }
                return(commentLines[1].ToString() == "// <auto-generated>");
            }
            else
            {
                var commentLines = trivia.Where(t => VisualBasicExtensions.IsKind(t, Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CommentTrivia)).Take(2).ToList();
                if (commentLines.Count != 2)
                {
                    return(false);
                }
                return(commentLines[1].ToString() == "' <auto-generated>");
            }
        }