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); }
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); }