Exemple #1
0
        public static SyntaxTokenList WithStructMemberInheritanceModifier(
            this SyntaxTokenList tokens,
            StructMemberInheritanceModifier modifier)
        {
            ClassMemberInheritanceModifier classModifier =
                modifier == StructMemberInheritanceModifier.Static ?
                ClassMemberInheritanceModifier.Static :
                ClassMemberInheritanceModifier.None;

            return(tokens.WithClassMemberInheritanceModifier(classModifier));
        }
Exemple #2
0
        public static SyntaxTokenList WithClassMemberInheritanceModifier(
            this SyntaxTokenList tokens,
            ClassMemberInheritanceModifier modifier,
            bool isAsync = false)
        {
            tokens = tokens.Remove(inheritanceModifierTokens);
            IList <SyntaxKind> kinds = new List <SyntaxKind>();

            switch (modifier)
            {
            case ClassMemberInheritanceModifier.New:
                kinds.Add(SyntaxKind.NewKeyword);
                break;

            case ClassMemberInheritanceModifier.NewStatic:
                kinds.Add(SyntaxKind.NewKeyword);
                kinds.Add(SyntaxKind.StaticKeyword);
                break;

            case ClassMemberInheritanceModifier.NewVirtual:
                kinds.Add(SyntaxKind.NewKeyword);
                kinds.Add(SyntaxKind.VirtualKeyword);
                break;

            case ClassMemberInheritanceModifier.Override:
                kinds.Add(SyntaxKind.OverrideKeyword);
                break;

            case ClassMemberInheritanceModifier.SealedOverride:
                kinds.Add(SyntaxKind.SealedKeyword);
                kinds.Add(SyntaxKind.OverrideKeyword);
                break;

            case ClassMemberInheritanceModifier.Static:
                kinds.Add(SyntaxKind.StaticKeyword);
                break;

            case ClassMemberInheritanceModifier.Virtual:
                kinds.Add(SyntaxKind.VirtualKeyword);
                break;
            }

            if (kinds.Count != 0)
            {
                tokens = isAsync ? tokens.InsertRange(tokens.Count - 1, kinds) : tokens.AddRange(kinds);
            }

            return(tokens);
        }
        internal static void AddClassMemberInheritanceModifierSteps(
            this List <ISourceCodeBuilderStep> steps,
            ClassMemberInheritanceModifier inheritanceModifer)
        {
            switch (inheritanceModifer)
            {
            case ClassMemberInheritanceModifier.None:
                return;

            case ClassMemberInheritanceModifier.New:
            case ClassMemberInheritanceModifier.Override:
            case ClassMemberInheritanceModifier.Static:
            case ClassMemberInheritanceModifier.Virtual:
                steps.Add(new WriteClassMemberInheritanceModifier(inheritanceModifer));
                break;

            case ClassMemberInheritanceModifier.NewStatic:
                steps.Add(new WriteClassMemberInheritanceModifier(ClassMemberInheritanceModifier.New));
                steps.Add(new WriteWhitespace());
                steps.Add(new WriteClassMemberInheritanceModifier(ClassMemberInheritanceModifier.Static));
                break;

            case ClassMemberInheritanceModifier.NewVirtual:
                steps.Add(new WriteClassMemberInheritanceModifier(ClassMemberInheritanceModifier.New));
                steps.Add(new WriteWhitespace());
                steps.Add(new WriteClassMemberInheritanceModifier(ClassMemberInheritanceModifier.Virtual));
                break;

            case ClassMemberInheritanceModifier.SealedOverride:
                steps.Add(new WriteSealed());
                steps.Add(new WriteWhitespace());
                steps.Add(new WriteClassMemberInheritanceModifier(ClassMemberInheritanceModifier.Override));
                break;
            }

            steps.Add(new WriteWhitespace());
        }
 public WriteClassMemberInheritanceModifier(ClassMemberInheritanceModifier inheritanceModifier)
 {
     InheritanceModifier = inheritanceModifier;
 }