• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Sholtee / proxygen / 976

08 Apr 2025 02:56PM UTC coverage: 91.686% (+1.6%) from 90.091%
976

push

appveyor

Sholtee
introduce PlatformAssemblies class, drop TargetFramework settings

4819 of 5256 relevant lines covered (91.69%)

0.92 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

98.18
/SRC/Private/SyntaxFactories/ClassSyntaxFactoryBase.Member.cs
1
/********************************************************************************
2
* ClassSyntaxFactoryBase.Member.cs                                              *
3
*                                                                               *
4
* Author: Denes Solti                                                           *
5
********************************************************************************/
6
using System;
7
using System.Diagnostics;
8

9
using Microsoft.CodeAnalysis.CSharp;
10
using Microsoft.CodeAnalysis.CSharp.Syntax;
11

12
using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory;
13

14
namespace Solti.Utils.Proxy.Internals
15
{
16
    internal partial class ClassSyntaxFactoryBase
17
    {
18
        private ExpressionSyntax AmendTarget(ExpressionSyntax? target, IMemberInfo member, ITypeInfo? castTargetTo)
19
        {
1✔
20
            target ??= member.IsStatic ? ResolveType(member.DeclaringType) : (ExpressionSyntax) ThisExpression();
1✔
21

22
            if (castTargetTo is not null)
1✔
23
            {
1✔
24
                Debug.Assert(!member.IsStatic);
1✔
25

26
                target = ParenthesizedExpression
1✔
27
                (
1✔
28
                    CastExpression(ResolveType(castTargetTo), target)
1✔
29
                );
1✔
30
            }
1✔
31

32
            return target;
1✔
33
        }
1✔
34

35
        #if DEBUG
36
        internal
37
        #endif
38
        protected static MemberAccessExpressionSyntax SimpleMemberAccess(ExpressionSyntax target, string member) => SimpleMemberAccess
1✔
39
        (
1✔
40
            target,
1✔
41
            IdentifierName(member)
1✔
42
        );
1✔
43

44
        #if DEBUG
45
        internal
46
        #endif
47
        protected static MemberAccessExpressionSyntax SimpleMemberAccess(ExpressionSyntax target, SimpleNameSyntax member) => MemberAccessExpression
1✔
48
        (
1✔
49
            SyntaxKind.SimpleMemberAccessExpression,
1✔
50
            target,
1✔
51
            member
1✔
52
        );
1✔
53

54
        #if DEBUG
55
        internal
56
        #endif
57
        protected static MemberAccessExpressionSyntax StaticMemberAccess(ClassDeclarationSyntax target, string member) => StaticMemberAccess
1✔
58
        (
1✔
59
            target,
1✔
60
            IdentifierName(member)
1✔
61
        );
1✔
62

63
        #if DEBUG
64
        internal
65
        #endif
66
        protected static MemberAccessExpressionSyntax StaticMemberAccess(ClassDeclarationSyntax target, SimpleNameSyntax member) => SimpleMemberAccess
1✔
67
        (
1✔
68
            AliasQualifiedName
1✔
69
            (
1✔
70
                IdentifierName
1✔
71
                (
1✔
72
                    Token(SyntaxKind.GlobalKeyword)
1✔
73
                ),
1✔
74
                IdentifierName(target.Identifier)
1✔
75
            ),
1✔
76
            member
1✔
77
        );
1✔
78

79
        #if DEBUG
80
        internal
81
        #endif
82
        protected static MemberAccessExpressionSyntax StaticMemberAccess(ClassDeclarationSyntax target, MemberDeclarationSyntax member) => StaticMemberAccess
1✔
83
        (
1✔
84
            target,
1✔
85
            member switch 
1✔
86
            {
1✔
87
                FieldDeclarationSyntax fld => ResolveIdentifierName(fld),
1✔
88
                ClassDeclarationSyntax cls => ResolveIdentifierName(cls),
1✔
89
                _ => throw new NotSupportedException() // TODO: method, prop, etc
×
90
            }
1✔
91
        );
1✔
92

93
        /// <summary>
94
        /// <code>
95
        /// [[(Type)] target | [(Type)] this | Namespace.Type].Member
96
        /// </code>
97
        /// </summary>
98
        #if DEBUG
99
        internal
100
        #endif
101
        protected MemberAccessExpressionSyntax MemberAccess(ExpressionSyntax? target, IMemberInfo member, ITypeInfo? castTargetTo = null) => SimpleMemberAccess
1✔
102
        (
1✔
103
            AmendTarget(target, member, castTargetTo),
1✔
104
            member.Name
1✔
105
        );
1✔
106
    }
107
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc