If I have a cart with only non-shippable products, I can't check out.
The checkout page suppresses the shipping-information selector (appropriately). Instead, it displays "There are no items in this order to ship" (in boldface, as if that were an error).
But then I can't proceed because the shipping information is missing. In the template base_pay_ship.html, the value of form.errors is: shipping * This field is required.
("Please correct the following error:", is displayed, but nothing about what the error is, because form.non_field_errors is empty!)
If I go back and add a shippable product to the cart, everything works fine.