public void ValidateExternal(NamedTypeMetaInfo type, ITypeValidationProvider typeValidation, IDiagnosticReporter reporter) { var typeValidator = new FluentMemberValidator(TypeMetaSelection.Any(type), _conditionAnalyzer); typeValidation.ConfigureValidation(typeValidator); typeValidator.Validate(reporter); }
public TypeMetaSelection(NamedTypeMetaInfo type, IReadOnlyList <MemberMetaInfo> selectedMember) { var selectedHash = new HashSet <MemberMetaInfo>(selectedMember); Type = type; SelectedMembers = selectedMember; UnselectedMembers = type.Members.Where(x => !selectedHash.Contains(x)).ToList(); }
private IReadOnlyDictionary <string, MemberMetaInfo> GetMemberNameDictionary(NamedTypeMetaInfo metaInfo) { if (_typeNameCache.TryGetValue(metaInfo, out var value)) { return(value); } _typeNameCache.Add(metaInfo, metaInfo.Members.ToDictionary(x => x.Name)); return(value); }
public SchemaInfoBuilder(string schemaName, NamedTypeMetaInfo sourceType, IOrderSelector orderSelector, IEnumerable <INamedTypeSymbol> targetTypes) { if (targetTypes is null || targetTypes.Count() == 0) { throw new ArgumentException("A schema must always have a target type to be built to"); } SourceTypeInfo = sourceType; OrderSelector = orderSelector; SchemaName = schemaName; TargetTypes.AddRange(targetTypes); }
public override bool TryGetSchemaInfo(NamedTypeMetaInfo metaInfo, out SchemaInfo schema) { var attribute = metaInfo.GetAttributeInspector <BinaryFormatAttribute>(); if (attribute is null) { schema = default; return(false); } var layoutOrder = attribute.GetSingleValue(x => x.Layout) ?? GetConstructorOrder(attribute.Data) ?? LayoutOrder.Auto; var schemaBuilder = new SchemaInfoBuilder("BinaryFormat", metaInfo, new IndexOrderSelector(_reporter, layoutOrder), metaInfo.Symbol) { IsSealed = attribute.GetSingleValue(x => x.Sealed) ?? false, NeverDeserialize = attribute.GetSingleValue(x => x.NeverDeserialize) ?? false }; schemaBuilder.TargetNamespaces.Add("Default"); schema = schemaBuilder.CreateSchemaInfo(); return(true);
internal static Diagnostic SequentialCannotBePartial(NamedTypeMetaInfo typeInfo, bool isExplicit) => CreateDiagnostic(typeInfo.FirstLocation, typeInfo.Declarations.Select(x => x.Location), new object[] { isExplicit ? "explicitly defined" : "automatic - as no IndexAttribute is present", typeInfo.Symbol });
public static SchemaInfoBuilder CreateBuilder(string schemaName, NamedTypeMetaInfo type, IOrderSelector orderSelector, IEnumerable <INamedTypeSymbol> targetTypes) => new SchemaInfoBuilder(schemaName, type, orderSelector, targetTypes);
public static SchemaInfoBuilder CreateBuilder(string schemaName, NamedTypeMetaInfo type, IOrderSelector orderSelector, params INamedTypeSymbol[] targetTypes) => new SchemaInfoBuilder(schemaName, type, orderSelector, targetTypes);
public SchemaInfoBuilder(string schemaName, NamedTypeMetaInfo sourceType, IOrderSelector orderSelector, params INamedTypeSymbol[] targetTypes) : this(schemaName, sourceType, orderSelector, targetTypes.AsEnumerable()) { }
public BinaryTypeCompositeBuilder(NamedTypeMetaInfo type, ISourceAddition sourceAddition, ITypeSymbolProvider symbolProvider) { }
public static TypeMetaSelection Any(NamedTypeMetaInfo type) => new TypeMetaSelection(type, type.Members, Array.Empty <MemberMetaInfo>());
private TypeMetaSelection(NamedTypeMetaInfo type, IReadOnlyList <MemberMetaInfo> selectedMembers, IReadOnlyList <MemberMetaInfo> unselectedMembers) { SelectedMembers = selectedMembers; UnselectedMembers = unselectedMembers; Type = type; }
public abstract bool TryGetSchemaInfo(NamedTypeMetaInfo metaInfo, out SchemaInfo schema);
internal static Diagnostic NoMember(NamedTypeMetaInfo typeInfo) => CreateDiagnostic(typeInfo.FirstLocation, new object[] { typeInfo.Symbol });