adlint 1.4.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. data/ChangeLog +413 -5
  2. data/MANIFEST +6 -0
  3. data/NEWS +43 -4
  4. data/etc/mesg.d/en_US/messages.yml +1 -1
  5. data/etc/mesg.d/ja_JP/messages.yml +1 -1
  6. data/lib/adlint/c.rb +1 -0
  7. data/lib/adlint/c/enum.rb +52 -0
  8. data/lib/adlint/c/expr.rb +43 -102
  9. data/lib/adlint/c/interp.rb +1 -1
  10. data/lib/adlint/c/mediator.rb +1 -0
  11. data/lib/adlint/c/message.rb +831 -49
  12. data/lib/adlint/c/message_shima.rb +236 -0
  13. data/lib/adlint/c/metric.rb +9 -0
  14. data/lib/adlint/c/object.rb +37 -32
  15. data/lib/adlint/c/parser.rb +7 -7
  16. data/lib/adlint/c/parser.y +7 -7
  17. data/lib/adlint/c/phase.rb +21 -0
  18. data/lib/adlint/c/syntax.rb +11 -4
  19. data/lib/adlint/c/type.rb +1 -1
  20. data/lib/adlint/cpp.rb +1 -0
  21. data/lib/adlint/cpp/asm.rb +73 -0
  22. data/lib/adlint/cpp/message.rb +13 -0
  23. data/lib/adlint/cpp/message_shima.rb +36 -0
  24. data/lib/adlint/cpp/phase.rb +3 -0
  25. data/lib/adlint/cpp/source.rb +9 -0
  26. data/lib/adlint/version.rb +3 -3
  27. data/share/demo/Makefile +4 -0
  28. data/share/demo/bad_conv/bad_conv.c +12 -0
  29. data/share/demo/bad_enum/bad_enum.c +48 -2
  30. data/share/demo/bad_label/bad_label.c +26 -0
  31. data/share/demo/bad_macro/bad_macro.c +3 -0
  32. data/share/demo/implicit_conv/implicit_conv.c +1 -0
  33. data/share/demo/inline_asm/inline_asm.c +18 -0
  34. data/share/demo/invalid_call/invalid_call.c +5 -0
  35. data/share/demo/multi_decl/multi_decl_1.c +30 -0
  36. data/share/demo/overflow/overflow.c +3 -3
  37. data/share/demo/redundant_select/redundant_select.c +25 -0
  38. data/share/demo/reserved_ident/reserved_ident.c +98 -0
  39. data/share/doc/developers_guide_ja.html +3 -3
  40. data/share/doc/developers_guide_ja.texi +1 -1
  41. data/share/doc/users_guide_en.html +234 -126
  42. data/share/doc/users_guide_en.texi +207 -98
  43. data/share/doc/users_guide_ja.html +247 -156
  44. data/share/doc/users_guide_ja.texi +221 -130
  45. data/share/sample/vim-7.3/adlint/xxd/adlint_traits.yml +1 -1
  46. metadata +8 -2
@@ -2,7 +2,7 @@
2
2
  @setfilename users_guide_en.info
3
3
  @documentlanguage en
4
4
  @documentencoding utf-8
5
- @settitle AdLint 1.4.0 User's Guide
5
+ @settitle AdLint 1.6.0 User's Guide
6
6
 
7
7
  @copying
8
8
  Copyright (C) 2010-2012, OGIS-RI Co.,Ltd.
@@ -3260,7 +3260,7 @@ case 1:
3260
3260
  case 2:
3261
3261
  value = 2;
3262
3262
  break;
3263
- case 3;
3263
+ case 3:
3264
3264
  value = 3;
3265
3265
  break; /* W0003 */
3266
3266
  }
@@ -23624,14 +23624,29 @@ This function mixed weaves C code with inline assembly code.
23624
23624
 
23625
23625
  @subsection Content
23626
23626
 
23627
- @b{This message will be supported in AdLint 2.0.0}
23628
-
23629
23627
  Under construction.
23630
23628
 
23631
23629
  @subsection Sample code
23632
23630
 
23633
23631
  @verbatim
23634
- /* will be added */
23632
+ void foo(int arg1, int *arg2, int arg3)
23633
+ {
23634
+ asm("movl %ecx, %eax"); /* W0541 */
23635
+ __asm__("movl %ecx, (%eax)"); /* W0541 */
23636
+
23637
+ asm { /* W0541 */
23638
+ xorl eax, eax
23639
+ }
23640
+
23641
+ __asm__ volatile ( /* W0541 */
23642
+ "int $0x80"
23643
+ : "=a" (r)
23644
+ "+b" (arg1),
23645
+ "+c" (arg2),
23646
+ "+d" (arg3)
23647
+ : "a" (128)
23648
+ : "memory", "cc");
23649
+ }
23635
23650
  @end verbatim
23636
23651
 
23637
23652
  @subsection Related message
@@ -23640,7 +23655,7 @@ None.
23640
23655
 
23641
23656
  @subsection Since
23642
23657
 
23643
- 2.0.0 (planned)
23658
+ 1.6.0
23644
23659
 
23645
23660
  @node W0542
23646
23661
  @section W0542
@@ -24484,8 +24499,6 @@ A `-' character in scanset in `[]' is implementation defined.
24484
24499
 
24485
24500
  @subsection Content
24486
24501
 
24487
- @b{This message will be supported in AdLint 2.0.0}
24488
-
24489
24502
  Under construction.
24490
24503
 
24491
24504
  @subsection Sample code
@@ -24501,7 +24514,7 @@ None.
24501
24514
 
24502
24515
  @subsection Since
24503
24516
 
24504
- 2.0.0 (planned)
24517
+ 1.6.0
24505
24518
 
24506
24519
  @node W0574
24507
24520
  @section W0574
@@ -24662,8 +24675,6 @@ Cast from compound expression of volatile integer type to bigger type.
24662
24675
 
24663
24676
  @subsection Content
24664
24677
 
24665
- @b{This message will be supported in AdLint 2.0.0}
24666
-
24667
24678
  Under construction.
24668
24679
 
24669
24680
  @subsection Sample code
@@ -24681,7 +24692,7 @@ None.
24681
24692
 
24682
24693
  @subsection Since
24683
24694
 
24684
- 2.0.0 (planned)
24695
+ 1.6.0
24685
24696
 
24686
24697
  @node W0580
24687
24698
  @section W0580
@@ -26210,13 +26221,13 @@ It is impossible to get the array's address which declared with 'register'.
26210
26221
 
26211
26222
  Under construction.
26212
26223
 
26224
+ @subsection Sample code
26225
+
26213
26226
  @verbatim
26214
26227
  register int arr1[3]; /* W0642 */
26215
26228
  int* p = arr1;
26216
26229
  @end verbatim
26217
26230
 
26218
- Under construction.
26219
-
26220
26231
  @subsection Related message
26221
26232
 
26222
26233
  @itemize
@@ -28372,14 +28383,13 @@ A character preceding the `-' in scanset o `[]' is bigger than a character follo
28372
28383
 
28373
28384
  @subsection Content
28374
28385
 
28375
- @b{This message will be supported in AdLint 2.0.0}
28376
-
28377
28386
  Under construction.
28378
28387
 
28379
28388
  @subsection Sample code
28380
28389
 
28381
28390
  @verbatim
28382
- /* will be added */
28391
+ char c;
28392
+ scanf("%[z-a]", &c); /* W0685 */
28383
28393
  @end verbatim
28384
28394
 
28385
28395
  @subsection Related message
@@ -28420,7 +28430,7 @@ Under construction.
28420
28430
 
28421
28431
  @subsection Since
28422
28432
 
28423
- 2.0.0 (planned)
28433
+ 1.6.0
28424
28434
 
28425
28435
  @node W0686
28426
28436
  @section W0686
@@ -28432,14 +28442,13 @@ The same characters are described in scanset (characters enclosed by `[]').
28432
28442
 
28433
28443
  @subsection Content
28434
28444
 
28435
- @b{This message will be supported in AdLint 2.0.0}
28436
-
28437
28445
  Under construction.
28438
28446
 
28439
28447
  @subsection Sample code
28440
28448
 
28441
28449
  @verbatim
28442
- /* will be added */
28450
+ char c;
28451
+ scanf("%[abcda]", &c); /* W0686 */
28443
28452
  @end verbatim
28444
28453
 
28445
28454
  @subsection Related message
@@ -28480,7 +28489,7 @@ Under construction.
28480
28489
 
28481
28490
  @subsection Since
28482
28491
 
28483
- 2.0.0 (planned)
28492
+ 1.6.0
28484
28493
 
28485
28494
  @node W0687
28486
28495
  @section W0687
@@ -31691,14 +31700,36 @@ This 'switch' statement have only one path. It's verbose.
31691
31700
 
31692
31701
  @subsection Content
31693
31702
 
31694
- @b{This message will be supported in AdLint 2.0.0}
31695
-
31696
31703
  Under construction.
31697
31704
 
31698
31705
  @subsection Sample code
31699
31706
 
31700
31707
  @verbatim
31701
- /* will be added */
31708
+ int foo(const int i)
31709
+ {
31710
+ if (i > 5) {
31711
+ switch (i) { /* W0781 */
31712
+ case 0:
31713
+ return 1;
31714
+ case 5:
31715
+ return 2;
31716
+ default:
31717
+ return 3;
31718
+ }
31719
+ }
31720
+
31721
+ switch (i) { /* OK */
31722
+ case 0:
31723
+ return 4;
31724
+ default:
31725
+ switch (i) { /* W0781 */
31726
+ case 10:
31727
+ return 5;
31728
+ default:
31729
+ return 6;
31730
+ }
31731
+ }
31732
+ }
31702
31733
  @end verbatim
31703
31734
 
31704
31735
  @subsection Related message
@@ -31707,7 +31738,7 @@ None.
31707
31738
 
31708
31739
  @subsection Since
31709
31740
 
31710
- 2.0.0 (planned)
31741
+ 1.6.0
31711
31742
 
31712
31743
  @node W0783
31713
31744
  @section W0783
@@ -31837,14 +31868,22 @@ A type of `%s' is different from the past declaration in the different scope.
31837
31868
 
31838
31869
  @subsection Content
31839
31870
 
31840
- @b{This message will be supported in AdLint 2.0.0}
31841
-
31842
31871
  Under construction.
31843
31872
 
31844
31873
  @subsection Sample code
31845
31874
 
31846
31875
  @verbatim
31847
- /* will be added */
31876
+ void func1(void)
31877
+ {
31878
+ extern int num;
31879
+ extern void func3(void);
31880
+ }
31881
+
31882
+ void func2(void)
31883
+ {
31884
+ extern double num; /* W0787 */
31885
+ extern void func3(int); /* W0787 */
31886
+ }
31848
31887
  @end verbatim
31849
31888
 
31850
31889
  @subsection Related message
@@ -31856,7 +31895,7 @@ Under construction.
31856
31895
 
31857
31896
  @subsection Since
31858
31897
 
31859
- 2.0.0 (planned)
31898
+ 1.6.0
31860
31899
 
31861
31900
  @node W0788
31862
31901
  @section W0788
@@ -31868,14 +31907,18 @@ A type of `%s' is different from the past declaration in the same scope.
31868
31907
 
31869
31908
  @subsection Content
31870
31909
 
31871
- @b{This message will be supported in AdLint 2.0.0}
31872
-
31873
31910
  Under construction.
31874
31911
 
31875
31912
  @subsection Sample code
31876
31913
 
31877
31914
  @verbatim
31878
- /* will be added */
31915
+ extern int func(void);
31916
+
31917
+ void func(void) /* W0788 */
31918
+ {
31919
+ typedef int num;
31920
+ double num; /* W0788 */
31921
+ }
31879
31922
  @end verbatim
31880
31923
 
31881
31924
  @subsection Related message
@@ -31887,7 +31930,7 @@ Under construction.
31887
31930
 
31888
31931
  @subsection Since
31889
31932
 
31890
- 2.0.0 (planned)
31933
+ 1.6.0
31891
31934
 
31892
31935
  @node W0789
31893
31936
  @section W0789
@@ -31899,14 +31942,19 @@ A type of `%s' is different from the past declaration in the wider scope.
31899
31942
 
31900
31943
  @subsection Content
31901
31944
 
31902
- @b{This message will be supported in AdLint 2.0.0}
31903
-
31904
31945
  Under construction.
31905
31946
 
31906
31947
  @subsection Sample code
31907
31948
 
31908
31949
  @verbatim
31909
- /* will be added */
31950
+ int num = 0;
31951
+ extern int func1(void);
31952
+
31953
+ void func2(void)
31954
+ {
31955
+ extern double num; /* W0789 */
31956
+ extern void func1(void); /* W0789 */
31957
+ }
31910
31958
  @end verbatim
31911
31959
 
31912
31960
  @subsection Related message
@@ -31918,7 +31966,7 @@ Under construction.
31918
31966
 
31919
31967
  @subsection Since
31920
31968
 
31921
- 2.0.0 (planned)
31969
+ 1.6.0
31922
31970
 
31923
31971
  @node W0790
31924
31972
  @section W0790
@@ -32495,14 +32543,12 @@ It is trying to delete pre-defined macro `%s'.
32495
32543
 
32496
32544
  @subsection Content
32497
32545
 
32498
- @b{This message will be supported in AdLint 2.0.0}
32499
-
32500
32546
  Under construction.
32501
32547
 
32502
32548
  @subsection Sample code
32503
32549
 
32504
32550
  @verbatim
32505
- /* will be added */
32551
+ #undef __STDC_VERSION__ /* W0807 */
32506
32552
  @end verbatim
32507
32553
 
32508
32554
  @subsection Related message
@@ -32514,7 +32560,7 @@ Under construction.
32514
32560
 
32515
32561
  @subsection Since
32516
32562
 
32517
- 2.0.0 (planned)
32563
+ 1.6.0
32518
32564
 
32519
32565
  @node W0808
32520
32566
  @section W0808
@@ -32526,14 +32572,12 @@ It is trying to redefine pre-defined macro `%s'.
32526
32572
 
32527
32573
  @subsection Content
32528
32574
 
32529
- @b{This message will be supported in AdLint 2.0.0}
32530
-
32531
32575
  Under construction.
32532
32576
 
32533
32577
  @subsection Sample code
32534
32578
 
32535
32579
  @verbatim
32536
- /* will be added */
32580
+ #define __FILE__ "test.c" /* W0808 */
32537
32581
  @end verbatim
32538
32582
 
32539
32583
  @subsection Related message
@@ -32545,7 +32589,7 @@ Under construction.
32545
32589
 
32546
32590
  @subsection Since
32547
32591
 
32548
- 2.0.0 (planned)
32592
+ 1.6.0
32549
32593
 
32550
32594
  @node W0809
32551
32595
  @section W0809
@@ -32557,14 +32601,14 @@ An identifier `%s' is reserved by the library.
32557
32601
 
32558
32602
  @subsection Content
32559
32603
 
32560
- @b{This message will be supported in AdLint 2.0.0}
32561
-
32562
32604
  Under construction.
32563
32605
 
32564
32606
  @subsection Sample code
32565
32607
 
32566
32608
  @verbatim
32567
- /* will be added */
32609
+ extern int __value; /* W0809 */
32610
+ int _VAL = 10; /* W0809 */
32611
+ static void _func(void); /* W0809 */
32568
32612
  @end verbatim
32569
32613
 
32570
32614
  @subsection Related message
@@ -32573,7 +32617,7 @@ None.
32573
32617
 
32574
32618
  @subsection Since
32575
32619
 
32576
- 2.0.0 (planned)
32620
+ 1.6.0
32577
32621
 
32578
32622
  @node W0810
32579
32623
  @section W0810
@@ -33137,14 +33181,27 @@ A label `%s' is used more than two times in this function.
33137
33181
 
33138
33182
  @subsection Content
33139
33183
 
33140
- @b{This message will be supported in AdLint 2.0.0}
33141
-
33142
33184
  Under construction.
33143
33185
 
33144
33186
  @subsection Sample code
33145
33187
 
33146
33188
  @verbatim
33147
- /* will be added */
33189
+ void func(int a, int b)
33190
+ {
33191
+ if (a == 0) {
33192
+ int c = 0;
33193
+ RETRY:
33194
+ b = 10;
33195
+ }
33196
+
33197
+ if (b != 0) {
33198
+ goto RETRY;
33199
+ }
33200
+ RETRY: /* W1030 */
33201
+ b = 1;
33202
+
33203
+ ...snip...
33204
+ }
33148
33205
  @end verbatim
33149
33206
 
33150
33207
  @subsection Related message
@@ -33153,7 +33210,7 @@ None.
33153
33210
 
33154
33211
  @subsection Since
33155
33212
 
33156
- 2.0.0 (planned)
33213
+ 1.6.0
33157
33214
 
33158
33215
  @node W1031
33159
33216
  @section W1031
@@ -33848,14 +33905,19 @@ A numeric constants is passed to an actual argument which formal argument is enu
33848
33905
 
33849
33906
  @subsection Content
33850
33907
 
33851
- @b{This message will be supported in AdLint 2.0.0}
33852
-
33853
33908
  Under construction.
33854
33909
 
33855
33910
  @subsection Sample code
33856
33911
 
33857
33912
  @verbatim
33858
- /* will be added */
33913
+ enum Color { RED = 1, GREEN = 2, BLUE = 4 };
33914
+
33915
+ extern void func1(enum Color);
33916
+
33917
+ void func2(void)
33918
+ {
33919
+ func1(4); /* W1053 */
33920
+ }
33859
33921
  @end verbatim
33860
33922
 
33861
33923
  @subsection Related message
@@ -33877,7 +33939,7 @@ Under construction.
33877
33939
 
33878
33940
  @subsection Since
33879
33941
 
33880
- 2.0.0 (planned)
33942
+ 1.6.0
33881
33943
 
33882
33944
  @node W1054
33883
33945
  @section W1054
@@ -33889,14 +33951,19 @@ A non enumeration type expression is substituted for the enumeration type.
33889
33951
 
33890
33952
  @subsection Content
33891
33953
 
33892
- @b{This message will be supported in AdLint 2.0.0}
33893
-
33894
33954
  Under construction.
33895
33955
 
33896
33956
  @subsection Sample code
33897
33957
 
33898
33958
  @verbatim
33899
- /* will be added */
33959
+ enum Color { RED = 1, GREEN = 2, BLUE = 4 };
33960
+
33961
+ extern enum Color col;
33962
+
33963
+ void func2(void)
33964
+ {
33965
+ col = 4; /* W1054 */
33966
+ }
33900
33967
  @end verbatim
33901
33968
 
33902
33969
  @subsection Related message
@@ -33918,7 +33985,7 @@ Under construction.
33918
33985
 
33919
33986
  @subsection Since
33920
33987
 
33921
- 2.0.0 (planned)
33988
+ 1.6.0
33922
33989
 
33923
33990
  @node W1055
33924
33991
  @section W1055
@@ -33930,14 +33997,17 @@ A non enumeration type expression is returned from the function which return val
33930
33997
 
33931
33998
  @subsection Content
33932
33999
 
33933
- @b{This message will be supported in AdLint 2.0.0}
33934
-
33935
34000
  Under construction.
33936
34001
 
33937
34002
  @subsection Sample code
33938
34003
 
33939
34004
  @verbatim
33940
- /* will be added */
34005
+ enum Color { RED = 1, GREEN = 2, BLUE = 4 };
34006
+
34007
+ enum Color func(void)
34008
+ {
34009
+ return 4; /* W1055 */
34010
+ }
33941
34011
  @end verbatim
33942
34012
 
33943
34013
  @subsection Related message
@@ -33959,7 +34029,7 @@ Under construction.
33959
34029
 
33960
34030
  @subsection Since
33961
34031
 
33962
- 2.0.0 (planned)
34032
+ 1.6.0
33963
34033
 
33964
34034
  @node W1056
33965
34035
  @section W1056
@@ -33971,14 +34041,20 @@ An object of actual argument is different enumeration type which formal argument
33971
34041
 
33972
34042
  @subsection Content
33973
34043
 
33974
- @b{This message will be supported in AdLint 2.0.0}
33975
-
33976
34044
  Under construction.
33977
34045
 
33978
34046
  @subsection Sample code
33979
34047
 
33980
34048
  @verbatim
33981
- /* will be added */
34049
+ enum Color { RED = 1, GREEN= 2, BLUE = 4 };
34050
+ enum Season { SPRING = 1, SUMMER, AUTUMN, WINTER };
34051
+
34052
+ extern void func1(enum Color);
34053
+
34054
+ void func2(enum Season ssn)
34055
+ {
34056
+ func1(ssn); /* W1056 */
34057
+ }
33982
34058
  @end verbatim
33983
34059
 
33984
34060
  @subsection Related message
@@ -34000,7 +34076,7 @@ Under construction.
34000
34076
 
34001
34077
  @subsection Since
34002
34078
 
34003
- 2.0.0 (planned)
34079
+ 1.6.0
34004
34080
 
34005
34081
  @node W1057
34006
34082
  @section W1057
@@ -34012,14 +34088,20 @@ An enumeration value is substituted for different enumeration type object.
34012
34088
 
34013
34089
  @subsection Content
34014
34090
 
34015
- @b{This message will be supported in AdLint 2.0.0}
34016
-
34017
34091
  Under construction.
34018
34092
 
34019
34093
  @subsection Sample code
34020
34094
 
34021
34095
  @verbatim
34022
- /* will be added */
34096
+ enum Color { RED = 1, GREEN = 2, BLUE = 4 };
34097
+ enum Season { SPRING = 1, SUMMER, AUTUMN, WINTER };
34098
+
34099
+ extern enum Color col;
34100
+
34101
+ void func(enum Season ssn)
34102
+ {
34103
+ col = ssn; /* W1057 */
34104
+ }
34023
34105
  @end verbatim
34024
34106
 
34025
34107
  @subsection Related message
@@ -34041,7 +34123,7 @@ Under construction.
34041
34123
 
34042
34124
  @subsection Since
34043
34125
 
34044
- 2.0.0 (planned)
34126
+ 1.6.0
34045
34127
 
34046
34128
  @node W1058
34047
34129
  @section W1058
@@ -34053,14 +34135,18 @@ A different enumeration type of value is returned from a function which return v
34053
34135
 
34054
34136
  @subsection Content
34055
34137
 
34056
- @b{This message will be supported in AdLint 2.0.0}
34057
-
34058
34138
  Under construction.
34059
34139
 
34060
34140
  @subsection Sample code
34061
34141
 
34062
34142
  @verbatim
34063
- /* will be added */
34143
+ enum Color { RED = 1, GREEN = 2, BLUE = 4 };
34144
+ enum Season { SPRING = 1, SUMMER, AUTUMN, WINTER };
34145
+
34146
+ enum Color func(enum Season ssn)
34147
+ {
34148
+ return ssn; /* W1058 */
34149
+ }
34064
34150
  @end verbatim
34065
34151
 
34066
34152
  @subsection Related message
@@ -34082,7 +34168,7 @@ Under construction.
34082
34168
 
34083
34169
  @subsection Since
34084
34170
 
34085
- 2.0.0 (planned)
34171
+ 1.6.0
34086
34172
 
34087
34173
  @node W1059
34088
34174
  @section W1059
@@ -34094,14 +34180,19 @@ An enumeration value is passed to actual argument which formal argument is not e
34094
34180
 
34095
34181
  @subsection Content
34096
34182
 
34097
- @b{This message will be supported in AdLint 2.0.0}
34098
-
34099
34183
  Under construction.
34100
34184
 
34101
34185
  @subsection Sample code
34102
34186
 
34103
34187
  @verbatim
34104
- /* will be added */
34188
+ enum Color { RED = 1, GREEN = 2, BLUE = 4 };
34189
+
34190
+ extern void func1(int num);
34191
+
34192
+ void func2(enum Color col)
34193
+ {
34194
+ func1(col); /* W1059 */
34195
+ }
34105
34196
  @end verbatim
34106
34197
 
34107
34198
  @subsection Related message
@@ -34123,7 +34214,7 @@ Under construction.
34123
34214
 
34124
34215
  @subsection Since
34125
34216
 
34126
- 2.0.0 (planned)
34217
+ 1.6.0
34127
34218
 
34128
34219
  @node W1060
34129
34220
  @section W1060
@@ -34135,14 +34226,17 @@ An enumeration value is returned from a function which return value is not enume
34135
34226
 
34136
34227
  @subsection Content
34137
34228
 
34138
- @b{This message will be supported in AdLint 2.0.0}
34139
-
34140
34229
  Under construction.
34141
34230
 
34142
34231
  @subsection Sample code
34143
34232
 
34144
34233
  @verbatim
34145
- /* will be added */
34234
+ enum Color { RED = 1, GREEN = 2, BLUE = 4 };
34235
+
34236
+ int func2(enum Color col)
34237
+ {
34238
+ return col; /* W1060 */
34239
+ }
34146
34240
  @end verbatim
34147
34241
 
34148
34242
  @subsection Related message
@@ -34164,7 +34258,7 @@ Under construction.
34164
34258
 
34165
34259
  @subsection Since
34166
34260
 
34167
- 2.0.0 (planned)
34261
+ 1.6.0
34168
34262
 
34169
34263
  @node W1061
34170
34264
  @section W1061
@@ -34176,14 +34270,19 @@ Non constant expression of non enumeration type is passed to actual argument whi
34176
34270
 
34177
34271
  @subsection Content
34178
34272
 
34179
- @b{This message will be supported in AdLint 2.0.0}
34180
-
34181
34273
  Under construction.
34182
34274
 
34183
34275
  @subsection Sample code
34184
34276
 
34185
34277
  @verbatim
34186
- /* will be added */
34278
+ enum Color { RED = 1, GREEN = 2, BLUE = 4 };
34279
+
34280
+ extern void func1(enum Color);
34281
+
34282
+ void func2(int num)
34283
+ {
34284
+ func1(num); /* W1061 */
34285
+ }
34187
34286
  @end verbatim
34188
34287
 
34189
34288
  @subsection Related message
@@ -34205,7 +34304,7 @@ Under construction.
34205
34304
 
34206
34305
  @subsection Since
34207
34306
 
34208
- 2.0.0 (planned)
34307
+ 1.6.0
34209
34308
 
34210
34309
  @node W1062
34211
34310
  @section W1062
@@ -34217,13 +34316,20 @@ Non constant expression is substituted for the enumeration type object.
34217
34316
 
34218
34317
  @subsection Content
34219
34318
 
34220
- @b{This message will be supported in AdLint 2.0.0}
34221
-
34222
34319
  Under construction.
34223
34320
 
34224
34321
  @subsection Sample code
34225
34322
 
34226
- Under construction.
34323
+ @verbatim
34324
+ enum Color { RED = 1, GREEN = 2, BLUE = 4 };
34325
+
34326
+ extern enum Color col;
34327
+
34328
+ void func(int num)
34329
+ {
34330
+ col = num + 1; /* W1062 */
34331
+ }
34332
+ @end verbatim
34227
34333
 
34228
34334
  @subsection Related message
34229
34335
 
@@ -34244,7 +34350,7 @@ Under construction.
34244
34350
 
34245
34351
  @subsection Since
34246
34352
 
34247
- 2.0.0 (planned)
34353
+ 1.6.0
34248
34354
 
34249
34355
  @node W1063
34250
34356
  @section W1063
@@ -34256,14 +34362,17 @@ The return value returned from enumeration type function to non constant express
34256
34362
 
34257
34363
  @subsection Content
34258
34364
 
34259
- @b{This message will be supported in AdLint 2.0.0}
34260
-
34261
34365
  Under construction.
34262
34366
 
34263
34367
  @subsection Sample code
34264
34368
 
34265
34369
  @verbatim
34266
- /* will be added */
34370
+ enum Color { RED = 1, GREEN = 2, BLUE = 4 };
34371
+
34372
+ enum Color func(int num)
34373
+ {
34374
+ return num / 2; /* W1063 */
34375
+ }
34267
34376
  @end verbatim
34268
34377
 
34269
34378
  @subsection Related message
@@ -34285,7 +34394,7 @@ Under construction.
34285
34394
 
34286
34395
  @subsection Since
34287
34396
 
34288
- 2.0.0 (planned)
34397
+ 1.6.0
34289
34398
 
34290
34399
  @node W1064
34291
34400
  @section W1064