field-override.c 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. static int ref[] = {
  2. [1] = 3,
  3. [2] = 3,
  4. [3] = 3,
  5. [2] = 2, /* check-should-warn */
  6. [1] = 1, /* check-should-warn */
  7. };
  8. static int foo[] = {
  9. [1 ... 3] = 3,
  10. };
  11. static int foz[4] = {
  12. [0 ... 3] = 3,
  13. [0] = 0,
  14. [1] = 0,
  15. [2 ... 3] = 1,
  16. [2] = 3, /* check-should-warn */
  17. [3] = 3, /* check-should-warn */
  18. };
  19. static int bar[] = {
  20. [1 ... 3] = 3,
  21. [1] = 1, /* check-should-warn */
  22. [2] = 2, /* check-should-warn */
  23. [2 ... 4] = 2, /* check-should-warn */
  24. [2 ... 3] = 2, /* check-should-warn */
  25. [4] = 4, /* check-should-warn */
  26. [0] = 0,
  27. [5] = 5,
  28. };
  29. static int baz[3][3] = {
  30. [0 ... 2][0 ... 2] = 0,
  31. [0] = { 0, 0, 0, }, /* check-should-warn */
  32. [0][0] = 1, /* check-should-warn */
  33. [1] = { 0, 0, 0, }, /* check-should-warn */
  34. [1][0] = 1, /* check-should-warn */
  35. [1][1] = 1, /* check-should-warn */
  36. [1 ... 2][1 ... 2] = 2,
  37. };
  38. struct s {
  39. int i;
  40. int a[2];
  41. };
  42. static struct s s = {
  43. .a[0] = 0,
  44. .a[1] = 1,
  45. };
  46. static struct s a[2] = {
  47. [0].i = 0,
  48. [1].i = 1,
  49. [0].a[0] = 2,
  50. [0].a[1] = 3,
  51. };
  52. static struct s b[2] = {
  53. [0 ... 1] = { 0, { 1, 2 }, },
  54. [0].i = 0,
  55. [1].i = 1,
  56. [0].a[0] = 2,
  57. [0].a[1] = 3,
  58. };
  59. /*
  60. * check-name: field-override
  61. * check-command: sparse -Woverride-init -Woverride-init-all $file
  62. *
  63. * check-error-start
  64. field-override.c:2:10: warning: Initializer entry defined twice
  65. field-override.c:6:10: also defined here
  66. field-override.c:3:10: warning: Initializer entry defined twice
  67. field-override.c:5:10: also defined here
  68. field-override.c:17:10: warning: Initializer entry defined twice
  69. field-override.c:18:10: also defined here
  70. field-override.c:17:10: warning: Initializer entry defined twice
  71. field-override.c:19:10: also defined here
  72. field-override.c:23:10: warning: Initializer entry defined twice
  73. field-override.c:24:10: also defined here
  74. field-override.c:23:10: warning: Initializer entry defined twice
  75. field-override.c:25:10: also defined here
  76. field-override.c:23:10: warning: Initializer entry defined twice
  77. field-override.c:26:10: also defined here
  78. field-override.c:26:10: warning: Initializer entry defined twice
  79. field-override.c:27:10: also defined here
  80. field-override.c:26:10: warning: Initializer entry defined twice
  81. field-override.c:28:10: also defined here
  82. field-override.c:35:10: warning: Initializer entry defined twice
  83. field-override.c:36:10: also defined here
  84. field-override.c:37:10: warning: Initializer entry defined twice
  85. field-override.c:38:10: also defined here
  86. field-override.c:37:10: warning: Initializer entry defined twice
  87. field-override.c:39:10: also defined here
  88. field-override.c:37:10: warning: Initializer entry defined twice
  89. field-override.c:40:10: also defined here
  90. * check-error-end
  91. */