/// <summary>Confirms that a parameter type matches.</summary> public void CompareParameterTypes(int parameter) { CodeType parameterType = Option.Parameters[parameter].Type; IExpression value = OrderedParameters[parameter]?.Value; if (value == null) { return; } DocRange errorRange = OrderedParameters[parameter].ExpressionRange; if (parameterType is PortableLambdaType && value is PortableLambdaType portableType && portableType.LambdaKind == LambdaKind.Anonymous) { if (parameterType.CodeTypeParameterInvalid(value.Type())) { // The parameter type does not match. string msg = string.Format("Expected a value of type {0}.", Option.Parameters[parameter].Type.GetName()); Error(msg, errorRange); } else if (value.Type() != null && parameterType == null && value.Type().IsConstant()) { string msg = string.Format($"The type '{value.Type().Name}' cannot be used here."); Error(msg, errorRange); } } }