Beispiel #1
0
        private static bool IsValueTypeFieldsShallowCopyable(WellKnownTypes wellKnownTypes, ITypeSymbol type, HashSet <ITypeSymbol> examining)
        {
            foreach (var field in type.GetInstanceMembers <IFieldSymbol>())
            {
                if (field.IsStatic)
                {
                    continue;
                }

                if (!(field.Type is INamedTypeSymbol fieldType))
                {
                    return(false);
                }

                if (type.Equals(fieldType))
                {
                    return(false);
                }

                if (!IsOrleansShallowCopyable(wellKnownTypes, fieldType, examining))
                {
                    return(false);
                }
            }

            return(true);
        }
Beispiel #2
0
        private bool IsValueTypeFieldsShallowCopyable(ITypeSymbol type)
        {
            foreach (var field in type.GetInstanceMembers <IFieldSymbol>())
            {
                if (field.IsStatic)
                {
                    continue;
                }

                if (!(field.Type is INamedTypeSymbol fieldType))
                {
                    return(false);
                }

                if (SymbolEqualityComparer.Default.Equals(type, fieldType))
                {
                    return(false);
                }

                if (!IsOrleansShallowCopyable(fieldType))
                {
                    return(false);
                }
            }

            return(true);
        }