Example #1
0
 private static bool IgnoreInContext(SyntaxToken m, SyntaxKindExtensions.TokenContext context)
 {
     switch (context)
     {
     case SyntaxKindExtensions.TokenContext.InterfaceOrModule:
         return(m.IsKind(Microsoft.CodeAnalysis.CSharp.SyntaxKind.PublicKeyword, Microsoft.CodeAnalysis.CSharp.SyntaxKind.StaticKeyword));
     }
     return(false);
 }
Example #2
0
        private SyntaxToken?ConvertModifier(SyntaxToken m, SyntaxKindExtensions.TokenContext context = SyntaxKindExtensions.TokenContext.Global)
        {
            SyntaxKind vbSyntaxKind = VisualBasicExtensions.Kind(m);

            switch (vbSyntaxKind)
            {
            case SyntaxKind.DateKeyword:
                return(SyntaxFactory.Identifier("DateTime"));
            }
            var token = vbSyntaxKind.ConvertToken(context);

            return(token == Microsoft.CodeAnalysis.CSharp.SyntaxKind.None ? null : new SyntaxToken?(SyntaxFactory.Token(token)));
        }
Example #3
0
        private static SyntaxToken CSharpDefaultVisibility(SyntaxKindExtensions.TokenContext context)
        {
            switch (context)
            {
            case SyntaxKindExtensions.TokenContext.Global:
                return(SyntaxFactory.Token(SyntaxKind.FriendKeyword));

            case SyntaxKindExtensions.TokenContext.Local:
            case SyntaxKindExtensions.TokenContext.VariableOrConst:
            case SyntaxKindExtensions.TokenContext.Member:
                return(SyntaxFactory.Token(SyntaxKind.PrivateKeyword));
            }
            throw new ArgumentOutOfRangeException(nameof(context));
        }
Example #4
0
        private bool IgnoreInContext(SyntaxToken m, SyntaxKindExtensions.TokenContext context)
        {
            switch (VisualBasicExtensions.Kind(m))
            {
            case SyntaxKind.OptionalKeyword:
            case SyntaxKind.ByValKeyword:
            case SyntaxKind.IteratorKeyword:
            case SyntaxKind.DimKeyword:
                return(true);

            default:
                return(false);
            }
        }
Example #5
0
        private SyntaxToken VisualBasicDefaultVisibility(SyntaxKindExtensions.TokenContext context, bool isVariableOrConst)
        {
            switch (context)
            {
            case SyntaxKindExtensions.TokenContext.Global:
            case SyntaxKindExtensions.TokenContext.InterfaceOrModule:
                return(SyntaxFactory.Token(Microsoft.CodeAnalysis.CSharp.SyntaxKind.InternalKeyword));

            case SyntaxKindExtensions.TokenContext.MemberInModule:
            case SyntaxKindExtensions.TokenContext.MemberInClass:
            case SyntaxKindExtensions.TokenContext.MemberInInterface:
                return(SyntaxFactory.Token(isVariableOrConst
                        ? Microsoft.CodeAnalysis.CSharp.SyntaxKind.PrivateKeyword
                        : Microsoft.CodeAnalysis.CSharp.SyntaxKind.PublicKeyword));

            case SyntaxKindExtensions.TokenContext.MemberInStruct:
                return(SyntaxFactory.Token(Microsoft.CodeAnalysis.CSharp.SyntaxKind.PublicKeyword));

            case SyntaxKindExtensions.TokenContext.Local:
                return(SyntaxFactory.Token(Microsoft.CodeAnalysis.CSharp.SyntaxKind.PrivateKeyword));
            }
            throw new ArgumentOutOfRangeException(nameof(context), context, "Specified argument was out of the range of valid values.");
        }
Example #6
0
        private static SyntaxToken?ConvertModifier(SyntaxToken m, SyntaxKindExtensions.TokenContext context = SyntaxKindExtensions.TokenContext.Global)
        {
            var token = CSharpExtensions.Kind(m).ConvertToken(context);

            return(token == SyntaxKind.None ? null : new SyntaxToken?(SyntaxFactory.Token(token)));
        }
Example #7
0
 internal static SyntaxTokenList ConvertModifiers(IEnumerable <SyntaxToken> modifiers, SyntaxKindExtensions.TokenContext context = SyntaxKindExtensions.TokenContext.Global)
 {
     return(SyntaxFactory.TokenList(ConvertModifiersCore(modifiers, context)));
 }
Example #8
0
 private static IEnumerable <SyntaxToken> ConvertModifiersCore(IEnumerable <SyntaxToken> modifiers, SyntaxKindExtensions.TokenContext context)
 {
     if (context != SyntaxKindExtensions.TokenContext.Local && context != SyntaxKindExtensions.TokenContext.InterfaceOrModule)
     {
         bool visibility = false;
         foreach (var token in modifiers)
         {
             if (token.IsCsVisibility(context == SyntaxKindExtensions.TokenContext.VariableOrConst))
             {
                 visibility = true;
                 break;
             }
         }
         if (!visibility && context == SyntaxKindExtensions.TokenContext.Member)
         {
             yield return(CSharpDefaultVisibility(context));
         }
     }
     foreach (var token in modifiers.Where(m => !IgnoreInContext(m, context)))
     {
         var m = ConvertModifier(token, context);
         if (m.HasValue)
         {
             yield return(m.Value);
         }
     }
 }
Example #9
0
        private IEnumerable <SyntaxToken> ConvertModifiersCore(IEnumerable <SyntaxToken> modifiers, SyntaxKindExtensions.TokenContext context, bool isVariableOrConst = false)
        {
            var contextsWithIdenticalDefaults = new[] { SyntaxKindExtensions.TokenContext.Global, SyntaxKindExtensions.TokenContext.Local, SyntaxKindExtensions.TokenContext.InterfaceOrModule, SyntaxKindExtensions.TokenContext.MemberInInterface };

            if (!contextsWithIdenticalDefaults.Contains(context))
            {
                bool visibility = false;
                foreach (var token in modifiers)
                {
                    if (SyntaxTokenExtensions.IsVbVisibility(token, isVariableOrConst))
                    {
                        visibility = true;
                        break;
                    }
                }
                if (!visibility)
                {
                    yield return(VisualBasicDefaultVisibility(context, isVariableOrConst));
                }
            }
            foreach (var token in modifiers.Where(m => !IgnoreInContext(m, context)).OrderBy(m => SyntaxTokenExtensions.IsKind(m, SyntaxKind.PartialKeyword)))
            {
                var m = ConvertModifier(token, context);
                if (m.HasValue)
                {
                    yield return(m.Value);
                }
            }
            if (context == SyntaxKindExtensions.TokenContext.MemberInModule)
            {
                yield return(SyntaxFactory.Token(Microsoft.CodeAnalysis.CSharp.SyntaxKind.StaticKeyword));
            }
        }
Example #10
0
 public SyntaxTokenList ConvertModifiers(IEnumerable <SyntaxToken> modifiers, SyntaxKindExtensions.TokenContext context = SyntaxKindExtensions.TokenContext.Global, bool isVariableOrConst = false)
 {
     return(SyntaxFactory.TokenList(ConvertModifiersCore(modifiers, context, isVariableOrConst).Where(t => CSharpExtensions.Kind(t) != Microsoft.CodeAnalysis.CSharp.SyntaxKind.None)));
 }
Example #11
0
 private static bool IsVisibility(SyntaxToken token, SyntaxKindExtensions.TokenContext context)
 {
     return(token.IsKind(Microsoft.CodeAnalysis.CSharp.SyntaxKind.PublicKeyword, Microsoft.CodeAnalysis.CSharp.SyntaxKind.InternalKeyword, Microsoft.CodeAnalysis.CSharp.SyntaxKind.ProtectedKeyword, Microsoft.CodeAnalysis.CSharp.SyntaxKind.PrivateKeyword) ||
            (context == SyntaxKindExtensions.TokenContext.VariableOrConst && SyntaxTokenExtensions.IsKind(token, Microsoft.CodeAnalysis.CSharp.SyntaxKind.ConstKeyword)));
 }