Browse Source

:art: Better error message for bad array sizes

Scott Lahteine 4 years ago
parent
commit
398ce22c2e
1 changed files with 11 additions and 3 deletions
  1. 11
    3
      Marlin/src/inc/SanityCheck.h

+ 11
- 3
Marlin/src/inc/SanityCheck.h View File

@@ -2804,23 +2804,30 @@ constexpr float sanity_arr_1[] = DEFAULT_AXIS_STEPS_PER_UNIT,
2804 2804
                 sanity_arr_3[] = DEFAULT_MAX_ACCELERATION;
2805 2805
 
2806 2806
 #define _ARR_TEST(N,I) (sanity_arr_##N[_MIN(I,int(COUNT(sanity_arr_##N))-1)] > 0)
2807
+#if HAS_MULTI_EXTRUDER
2808
+  #define _EXTRA_NOTE " (Did you forget to enable DISTINCT_E_FACTORS?)"
2809
+#elif EXTRUDERS == 0
2810
+  #define _EXTRA_NOTE " (Note: EXTRUDERS is set to 0.)"
2811
+#else
2812
+  #define _EXTRA_NOTE ""
2813
+#endif
2807 2814
 
2808 2815
 static_assert(COUNT(sanity_arr_1) >= XYZE,   "DEFAULT_AXIS_STEPS_PER_UNIT requires X, Y, Z and E elements.");
2809
-static_assert(COUNT(sanity_arr_1) <= XYZE_N, "DEFAULT_AXIS_STEPS_PER_UNIT has too many elements. (Did you forget to enable DISTINCT_E_FACTORS?)");
2816
+static_assert(COUNT(sanity_arr_1) <= XYZE_N, "DEFAULT_AXIS_STEPS_PER_UNIT has too many elements." _EXTRA_NOTE);
2810 2817
 static_assert(   _ARR_TEST(1,0) && _ARR_TEST(1,1) && _ARR_TEST(1,2)
2811 2818
               && _ARR_TEST(1,3) && _ARR_TEST(1,4) && _ARR_TEST(1,5)
2812 2819
               && _ARR_TEST(1,6) && _ARR_TEST(1,7) && _ARR_TEST(1,8),
2813 2820
               "DEFAULT_AXIS_STEPS_PER_UNIT values must be positive.");
2814 2821
 
2815 2822
 static_assert(COUNT(sanity_arr_2) >= XYZE,   "DEFAULT_MAX_FEEDRATE requires X, Y, Z and E elements.");
2816
-static_assert(COUNT(sanity_arr_2) <= XYZE_N, "DEFAULT_MAX_FEEDRATE has too many elements. (Did you forget to enable DISTINCT_E_FACTORS?)");
2823
+static_assert(COUNT(sanity_arr_2) <= XYZE_N, "DEFAULT_MAX_FEEDRATE has too many elements." _EXTRA_NOTE);
2817 2824
 static_assert(   _ARR_TEST(2,0) && _ARR_TEST(2,1) && _ARR_TEST(2,2)
2818 2825
               && _ARR_TEST(2,3) && _ARR_TEST(2,4) && _ARR_TEST(2,5)
2819 2826
               && _ARR_TEST(2,6) && _ARR_TEST(2,7) && _ARR_TEST(2,8),
2820 2827
               "DEFAULT_MAX_FEEDRATE values must be positive.");
2821 2828
 
2822 2829
 static_assert(COUNT(sanity_arr_3) >= XYZE,   "DEFAULT_MAX_ACCELERATION requires X, Y, Z and E elements.");
2823
-static_assert(COUNT(sanity_arr_3) <= XYZE_N, "DEFAULT_MAX_ACCELERATION has too many elements. (Did you forget to enable DISTINCT_E_FACTORS?)");
2830
+static_assert(COUNT(sanity_arr_3) <= XYZE_N, "DEFAULT_MAX_ACCELERATION has too many elements." _EXTRA_NOTE);
2824 2831
 static_assert(   _ARR_TEST(3,0) && _ARR_TEST(3,1) && _ARR_TEST(3,2)
2825 2832
               && _ARR_TEST(3,3) && _ARR_TEST(3,4) && _ARR_TEST(3,5)
2826 2833
               && _ARR_TEST(3,6) && _ARR_TEST(3,7) && _ARR_TEST(3,8),
@@ -2863,6 +2870,7 @@ static_assert(   _ARR_TEST(3,0) && _ARR_TEST(3,1) && _ARR_TEST(3,2)
2863 2870
 #endif
2864 2871
 
2865 2872
 #undef _ARR_TEST
2873
+#undef _EXTRA_NOTE
2866 2874
 
2867 2875
 #if BOTH(CNC_COORDINATE_SYSTEMS, NO_WORKSPACE_OFFSETS)
2868 2876
   #error "CNC_COORDINATE_SYSTEMS is incompatible with NO_WORKSPACE_OFFSETS."

Loading…
Cancel
Save