Ejemplo n.º 1
0
        public override string GetKind()
        {
            // C#
            Microsoft.CodeAnalysis.CSharp.SyntaxKind cSharpKind = Microsoft.CodeAnalysis.CSharp.CSharpExtensions.Kind(_trivia);
            if (cSharpKind != Microsoft.CodeAnalysis.CSharp.SyntaxKind.None)
            {
                return(cSharpKind.ToString());
            }

            // Visual Basic
            Microsoft.CodeAnalysis.VisualBasic.SyntaxKind visualBasicKind = Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.Kind(_trivia);
            if (visualBasicKind != Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.None)
            {
                return(visualBasicKind.ToString());
            }

            return("None");
        }
 public static bool IsKind(this SyntaxToken token, Microsoft.CodeAnalysis.VisualBasic.SyntaxKind kind1, Microsoft.CodeAnalysis.VisualBasic.SyntaxKind kind2, Microsoft.CodeAnalysis.VisualBasic.SyntaxKind kind3)
 {
     return(VisualBasicExtensions.Kind(token) == kind1 ||
            VisualBasicExtensions.Kind(token) == kind2 ||
            VisualBasicExtensions.Kind(token) == kind3);
 }
 public static bool HasMatchingText(this SyntaxToken token, Microsoft.CodeAnalysis.VisualBasic.SyntaxKind kind)
 {
     return(token.ToString() == VBasic.SyntaxFacts.GetText(kind));
 }
 public static bool IsKindOrHasMatchingText(this SyntaxToken token, Microsoft.CodeAnalysis.VisualBasic.SyntaxKind kind)
 {
     return(VisualBasicExtensions.Kind(token) == kind || token.HasMatchingText(kind));
 }
 public static SyntaxToken ConvertToken(this SyntaxToken t, TokenContext context = TokenContext.Global)
 {
     Microsoft.CodeAnalysis.VisualBasic.SyntaxKind vbSyntaxKind = Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.Kind(t);
     return(SyntaxFactory.Token(ConvertToken(vbSyntaxKind, context)));
 }
        public static SyntaxKind ConvertToken(this Microsoft.CodeAnalysis.VisualBasic.SyntaxKind t, TokenContext context = TokenContext.Global)
        {
            switch (t)
            {
            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.None:
                return(SyntaxKind.None);

            // built-in types
            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.BooleanKeyword:
                return(SyntaxKind.BoolKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ByteKeyword:
                return(SyntaxKind.ByteKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SByteKeyword:
                return(SyntaxKind.SByteKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ShortKeyword:
                return(SyntaxKind.ShortKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.UShortKeyword:
                return(SyntaxKind.UShortKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.IntegerKeyword:
                return(SyntaxKind.IntKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.UIntegerKeyword:
                return(SyntaxKind.UIntKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.LongKeyword:
                return(SyntaxKind.LongKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ULongKeyword:
                return(SyntaxKind.ULongKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DoubleKeyword:
                return(SyntaxKind.DoubleKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SingleKeyword:
                return(SyntaxKind.FloatKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DecimalKeyword:
                return(SyntaxKind.DecimalKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.StringKeyword:
                return(SyntaxKind.StringKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CharKeyword:
                return(SyntaxKind.CharKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ObjectKeyword:
                return(SyntaxKind.ObjectKeyword);

            // literals
            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.NothingKeyword:
                return(SyntaxKind.NullKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.TrueKeyword:
                return(SyntaxKind.TrueKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.FalseKeyword:
                return(SyntaxKind.FalseKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.MeKeyword:
                return(SyntaxKind.ThisKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.MyBaseKeyword:
                return(SyntaxKind.BaseKeyword);

            // modifiers
            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.PublicKeyword:
                return(SyntaxKind.PublicKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.FriendKeyword:
                return(SyntaxKind.InternalKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ProtectedKeyword:
                return(SyntaxKind.ProtectedKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.PrivateKeyword:
                return(SyntaxKind.PrivateKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ByRefKeyword:
                return(SyntaxKind.RefKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ParamArrayKeyword:
                return(SyntaxKind.ParamsKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ReadOnlyKeyword:
                return(SyntaxKind.ReadOnlyKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.OverridesKeyword:
                return(SyntaxKind.OverrideKeyword);

            //New isn't as restrictive as shadows, but it will behave the same for all existing programs
            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ShadowsKeyword:
            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.OverloadsKeyword:
                return(SyntaxKind.NewKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.OverridableKeyword:
                return(SyntaxKind.VirtualKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SharedKeyword:
                return(SyntaxKind.StaticKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ConstKeyword:
                return(SyntaxKind.ConstKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.PartialKeyword:
                return(SyntaxKind.PartialKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.MustInheritKeyword:
                return(SyntaxKind.AbstractKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.MustOverrideKeyword:
                return(SyntaxKind.AbstractKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.NotOverridableKeyword:
            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.NotInheritableKeyword:
                return(SyntaxKind.SealedKeyword);

            // unary operators
            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.UnaryMinusExpression:
                return(SyntaxKind.UnaryMinusExpression);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.UnaryPlusExpression:
                return(SyntaxKind.UnaryPlusExpression);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.NotExpression:
                return(SyntaxKind.LogicalNotExpression);

            // binary operators
            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ConcatenateExpression:
            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AddExpression:
                return(SyntaxKind.AddExpression);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SubtractExpression:
                return(SyntaxKind.SubtractExpression);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.MultiplyExpression:
                return(SyntaxKind.MultiplyExpression);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DivideExpression:
            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.IntegerDivideExpression:
                return(SyntaxKind.DivideExpression);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ModuloExpression:
                return(SyntaxKind.ModuloExpression);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AndAlsoExpression:
                return(SyntaxKind.LogicalAndExpression);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.OrElseExpression:
                return(SyntaxKind.LogicalOrExpression);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.OrExpression:
                return(SyntaxKind.BitwiseOrExpression);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AndExpression:
                return(SyntaxKind.BitwiseAndExpression);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ExclusiveOrExpression:
                return(SyntaxKind.ExclusiveOrExpression);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EqualsExpression:
            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CaseEqualsClause:
                return(SyntaxKind.EqualsExpression);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.NotEqualsExpression:
            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CaseNotEqualsClause:
                return(SyntaxKind.NotEqualsExpression);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.GreaterThanExpression:
            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CaseGreaterThanClause:
                return(SyntaxKind.GreaterThanExpression);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.GreaterThanOrEqualExpression:
            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CaseGreaterThanOrEqualClause:
                return(SyntaxKind.GreaterThanOrEqualExpression);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.LessThanExpression:
            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CaseLessThanClause:
                return(SyntaxKind.LessThanExpression);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.LessThanOrEqualExpression:
            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CaseLessThanOrEqualClause:
                return(SyntaxKind.LessThanOrEqualExpression);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.IsExpression:
                return(SyntaxKind.EqualsExpression);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.IsNotExpression:
                return(SyntaxKind.NotEqualsExpression);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.LeftShiftExpression:
                return(SyntaxKind.LeftShiftExpression);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.RightShiftExpression:
                return(SyntaxKind.RightShiftExpression);

            // assignment
            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SimpleAssignmentStatement:
                return(SyntaxKind.SimpleAssignmentExpression);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ConcatenateAssignmentStatement:
            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AddAssignmentStatement:
                return(SyntaxKind.AddAssignmentExpression);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SubtractAssignmentStatement:
                return(SyntaxKind.SubtractAssignmentExpression);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.MultiplyAssignmentStatement:
                return(SyntaxKind.MultiplyAssignmentExpression);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.IntegerDivideAssignmentStatement:
            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DivideAssignmentStatement:
                return(SyntaxKind.DivideAssignmentExpression);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.LeftShiftAssignmentStatement:
                return(SyntaxKind.LeftShiftAssignmentExpression);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.RightShiftAssignmentStatement:
                return(SyntaxKind.RightShiftAssignmentExpression);

            // statements
            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AddHandlerAccessorStatement:
                return(SyntaxKind.AddAccessorDeclaration);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.RemoveHandlerAccessorStatement:
                return(SyntaxKind.RemoveAccessorDeclaration);

            // Casts
            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CObjKeyword:
                return(SyntaxKind.ObjectKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CBoolKeyword:
                return(SyntaxKind.BoolKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CCharKeyword:
                return(SyntaxKind.CharKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CSByteKeyword:
                return(SyntaxKind.SByteKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CByteKeyword:
                return(SyntaxKind.ByteKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CShortKeyword:
                return(SyntaxKind.ShortKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CUShortKeyword:
                return(SyntaxKind.UShortKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CIntKeyword:
                return(SyntaxKind.IntKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CUIntKeyword:
                return(SyntaxKind.UIntKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CLngKeyword:
                return(SyntaxKind.LongKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CULngKeyword:
                return(SyntaxKind.ULongKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CDecKeyword:
                return(SyntaxKind.DecimalKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CSngKeyword:
                return(SyntaxKind.FloatKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CDblKeyword:
                return(SyntaxKind.DoubleKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CStrKeyword:
                return(SyntaxKind.StringKeyword);

            // Converts
            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.NarrowingKeyword:
                return(SyntaxKind.ExplicitKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.WideningKeyword:
                return(SyntaxKind.ImplicitKeyword);

            // Operator overloads
            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.PlusToken:
            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AmpersandToken:
                return(SyntaxKind.PlusToken);     //Problematic clash if two operator overloads defined

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.MinusToken:
                return(SyntaxKind.MinusToken);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.NotKeyword:
                return(SyntaxKind.ExclamationToken);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AsteriskToken:
                return(SyntaxKind.AsteriskToken);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SlashToken:
            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.BackslashToken:
                return(SyntaxKind.SlashToken);     //Problematic clash if two operator overloads defined

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ModKeyword:
                return(SyntaxKind.PercentToken);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.LessThanLessThanToken:
                return(SyntaxKind.LessThanLessThanToken);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.GreaterThanGreaterThanToken:
                return(SyntaxKind.GreaterThanGreaterThanToken);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EqualsToken:
                return(SyntaxKind.EqualsEqualsToken);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.LessThanGreaterThanToken:
                return(SyntaxKind.ExclamationEqualsToken);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.GreaterThanToken:
                return(SyntaxKind.GreaterThanToken);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.LessThanToken:
                return(SyntaxKind.LessThanToken);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.GreaterThanEqualsToken:
                return(SyntaxKind.GreaterThanEqualsToken);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.LessThanEqualsToken:
                return(SyntaxKind.LessThanEqualsToken);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AndKeyword:
                return(SyntaxKind.AmpersandToken);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.OrKeyword:
                return(SyntaxKind.BarToken);

            //
            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AssemblyKeyword:
                return(SyntaxKind.AssemblyKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AsyncKeyword:
                return(SyntaxKind.AsyncKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AscendingOrdering:
                return(SyntaxKind.AscendingOrdering);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DescendingOrdering:
                return(SyntaxKind.DescendingOrdering);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AscendingKeyword:
                return(SyntaxKind.AscendingKeyword);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DescendingKeyword:
                return(SyntaxKind.DescendingKeyword);

            // Not direct conversions
            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ExponentiateAssignmentStatement:
                return(SyntaxKind.SimpleAssignmentExpression);

            case Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ExponentiateExpression:
                break;
            }
            throw new NotSupportedException(t + " not supported!");
        }