Example #1
0
        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));
 }