public static bool AreSortsMatching(this ITypeModelFactory self, ITypeSymbol type, IEnumerable <Expression> expressions) { Contract.Requires(self != null, nameof(self)); Contract.Requires(type != null, nameof(type)); Contract.Requires(expressions != null, nameof(expressions)); var requirements = self.GetExpressionSortRequirements(type); Contract.Assert(requirements != null); if (expressions.Count() != requirements.Count) { return(false); } int i = 0; foreach (var expression in expressions) { Contract.Assert(expression != null); if (expression.Sort != requirements[i]) { return(false); } i++; } return(true); }
private ITypeModel CreateVariableModel( ITypeModelFactory factory, ITypeSymbol type, ISymbol symbol, VariableOrigin origin) { var variables = factory.GetExpressionSortRequirements(type) .Select(sort => this.Graph.AddVariable(sort, symbol, origin)) .ToArray(); return(factory.GetExpressionModel(type, variables)); }
public ITypeModel CreateTemporaryVariableModel(ITypeModelFactory factory, ITypeSymbol type) { return(this.CreateVariableModel(factory, type, null, VariableOrigin.Temporary)); }