adlint 1.10.0 → 1.12.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 (49) hide show
  1. data/ChangeLog +197 -4
  2. data/MANIFEST +17 -0
  3. data/NEWS +23 -4
  4. data/etc/mesg.d/en_US/messages.yml +14 -1
  5. data/etc/mesg.d/ja_JP/messages.yml +14 -1
  6. data/features/message_detection/W0093.feature +87 -0
  7. data/features/message_detection/W0687.feature +25 -0
  8. data/features/message_detection/W0688.feature +63 -0
  9. data/features/message_detection/W0689.feature +46 -0
  10. data/features/message_detection/W0690.feature +35 -0
  11. data/features/message_detection/W0698.feature +3 -2
  12. data/features/message_detection/W0703.feature +1 -0
  13. data/features/message_detection/W0723.feature +34 -0
  14. data/features/message_detection/W0732.feature +158 -0
  15. data/features/message_detection/W0733.feature +158 -0
  16. data/features/message_detection/W0734.feature +322 -0
  17. data/features/message_detection/W0735.feature +322 -0
  18. data/features/message_detection/W1052.feature +66 -0
  19. data/features/message_detection/W9001.feature +33 -0
  20. data/features/message_detection/W9003.feature +131 -0
  21. data/lib/adlint/c/ctrlexpr.rb +51 -50
  22. data/lib/adlint/c/domain.rb +237 -223
  23. data/lib/adlint/c/expr.rb +6 -8
  24. data/lib/adlint/c/interp.rb +8 -11
  25. data/lib/adlint/c/message.rb +20 -0
  26. data/lib/adlint/c/message_shima.rb +63 -0
  27. data/lib/adlint/c/object.rb +5 -4
  28. data/lib/adlint/c/operator.rb +99 -0
  29. data/lib/adlint/c/parser.rb +2 -2
  30. data/lib/adlint/c/parser.y +2 -2
  31. data/lib/adlint/c/phase.rb +6 -1
  32. data/lib/adlint/c/syntax.rb +442 -30
  33. data/lib/adlint/c/type.rb +449 -363
  34. data/lib/adlint/c/value.rb +96 -25
  35. data/lib/adlint/c.rb +1 -0
  36. data/lib/adlint/prelude.rb +16 -18
  37. data/lib/adlint/version.rb +2 -2
  38. data/share/doc/developers_guide_ja.html +11 -5
  39. data/share/doc/developers_guide_ja.texi +9 -3
  40. data/share/doc/users_guide_en.html +697 -131
  41. data/share/doc/users_guide_en.texi +491 -41
  42. data/share/doc/users_guide_ja.html +709 -139
  43. data/share/doc/users_guide_ja.texi +499 -45
  44. data/spec/adlint/c/ctrlexpr_spec.rb +168 -0
  45. data/spec/adlint/c/domain_spec.rb +835 -0
  46. data/spec/adlint/c/operator_spec.rb +406 -0
  47. data/spec/adlint/c/syntax_spec.rb +717 -0
  48. data/spec/adlint/c/type_spec.rb +55 -30
  49. metadata +19 -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.10.0 User's Guide
5
+ @settitle AdLint 1.12.0 User's Guide
6
6
 
7
7
  @copying
8
8
  Copyright (C) 2010-2012, OGIS-RI Co.,Ltd.
@@ -2818,8 +2818,21 @@ context_line
2818
2818
  * W1063::The return value returned from enumeration type function to non constant expression.
2819
2819
  * W1064::A integer constant is used in switch statement where case label is enumeration type.
2820
2820
  * W1065::A value of different enumeration type is used in switch statement where case label is an enumeration type.
2821
+ * W1066::A value of the `float' typed compound expression is explicitly converted into a `double' value.
2822
+ * W1067::A value of the `float' typed compound expression is explicitly converted into a `long double' value.
2823
+ * W1068::A value of the `double' typed compound expression is explicitly converted into a `long double' value.
2824
+ * W1069::No trailing `else' clause is found in this `if-else-if' statements chain.
2825
+ * W1070::This `switch' statement can be translated into `if-else' statement because there are only 2 execution paths.
2826
+ * W1071::Function `%s' has multiple termination points.
2827
+ * W1072::`A `goto' statement is found.
2828
+ * W1073::A return value of function `%s' is not used.。
2829
+ * W1074::Side-effects in `sizeof' operand will not be recorded because the operand will not be executed actually.
2830
+ * W1075::This declaration has no `static' storage-class-specifier while the declaring object has internal-linkage.
2831
+ * W1076::`%s' is defined as internal-linkage, but it has no forward declaration.
2832
+ * W1077::Declaring array object without a size.
2821
2833
  * W9001::This statement doesn't reach the control.
2822
2834
  * W9002::There is no line feed character at the end of file.
2835
+ * W9003::An object typed `%s' is implicitly converted into an object of other type.
2823
2836
  * C0001::A warning is detected in external identifier name `%s'.
2824
2837
  @end menu
2825
2838
 
@@ -28707,7 +28720,7 @@ A function-like macro is called by actual argument which its definition is small
28707
28720
 
28708
28721
  @subsection Content
28709
28722
 
28710
- @b{This message will be supported in AdLint 2.0.0}
28723
+ @b{This message will be supported after AdLint 2.0.0}
28711
28724
 
28712
28725
  Under construction.
28713
28726
 
@@ -28725,7 +28738,7 @@ Under construction.
28725
28738
 
28726
28739
  @subsection Since
28727
28740
 
28728
- 2.0.0 (planned)
28741
+ After 2.0.0 (planned)
28729
28742
 
28730
28743
  @node W0694
28731
28744
  @section W0694
@@ -29566,7 +29579,7 @@ An unrecognized preprocessing directive is ignored by conditional include direct
29566
29579
 
29567
29580
  @subsection Content
29568
29581
 
29569
- @b{This message will be supported in AdLint 2.0.0}
29582
+ @b{This message will be supported after AdLint 2.0.0}
29570
29583
 
29571
29584
  Under construction.
29572
29585
 
@@ -29582,7 +29595,7 @@ None.
29582
29595
 
29583
29596
  @subsection Since
29584
29597
 
29585
- 2.0.0 (planned)
29598
+ After 2.0.0 (planned)
29586
29599
 
29587
29600
  @node W0726
29588
29601
  @section W0726
@@ -29821,14 +29834,20 @@ Both operand of `&&'operator is bit operator or arithmetic operator.
29821
29834
 
29822
29835
  @subsection Content
29823
29836
 
29824
- @b{This message will be supported in AdLint 2.0.0}
29825
-
29826
29837
  Under construction.
29827
29838
 
29828
29839
  @subsection Sample code
29829
29840
 
29830
29841
  @verbatim
29831
- /* will be added */
29842
+ extern void func(unsigned int a, unsigned int b,unsigned int c, unsigned int d)
29843
+ {
29844
+ int r;
29845
+ r = (a + b) && (c - d); /* W0732 */
29846
+ r = (a * b) && (c / d); /* W0732 */
29847
+
29848
+ r = (a << b) && (c << d); /* W0732 */
29849
+ r = (a >> b) && (c >> d); /* W0732 */
29850
+ }
29832
29851
  @end verbatim
29833
29852
 
29834
29853
  @subsection Related message
@@ -29841,7 +29860,7 @@ Under construction.
29841
29860
 
29842
29861
  @subsection Since
29843
29862
 
29844
- 2.0.0 (planned)
29863
+ 1.12.0
29845
29864
 
29846
29865
  @node W0733
29847
29866
  @section W0733
@@ -29853,14 +29872,20 @@ Both operand of `||'operator is bit operator or arithmetic operator.
29853
29872
 
29854
29873
  @subsection Content
29855
29874
 
29856
- @b{This message will be supported in AdLint 2.0.0}
29857
-
29858
29875
  Under construction.
29859
29876
 
29860
29877
  @subsection Sample code
29861
29878
 
29862
29879
  @verbatim
29863
- /* will be added */
29880
+ extern void func(unsigned int a, unsigned int b,unsigned int c, unsigned int d)
29881
+ {
29882
+ int r;
29883
+ r = (a + b) || (c - d); /* W0733 */
29884
+ r = (a * b) || (c / d); /* W0733 */
29885
+
29886
+ r = (a << b) || (c << d); /* W0733 */
29887
+ r = (a >> b) || (c >> d); /* W0733 */
29888
+ }
29864
29889
  @end verbatim
29865
29890
 
29866
29891
  @subsection Related message
@@ -29873,7 +29898,7 @@ Under construction.
29873
29898
 
29874
29899
  @subsection Since
29875
29900
 
29876
- 2.0.0 (planned)
29901
+ 1.12.0
29877
29902
 
29878
29903
  @node W0734
29879
29904
  @section W0734
@@ -29885,14 +29910,20 @@ A left operand of logical operator is bit operator or arithmetic operator.
29885
29910
 
29886
29911
  @subsection Content
29887
29912
 
29888
- @b{This message will be supported in AdLint 2.0.0}
29889
-
29890
29913
  Under construction.
29891
29914
 
29892
29915
  @subsection Sample code
29893
29916
 
29894
29917
  @verbatim
29895
- /* will be added */
29918
+ extern void func(unsigned int a, unsigned int b, unsigned int c)
29919
+ {
29920
+ int r;
29921
+ r = (a + b) && c; /* W0734 */
29922
+ r = (a - b) && c; /* W0734 */
29923
+
29924
+ r = (a << b) || c; /* W0734 */
29925
+ r = (a >> b) || c; /* W0734 */
29926
+ }
29896
29927
  @end verbatim
29897
29928
 
29898
29929
  @subsection Related message
@@ -29905,7 +29936,7 @@ Under construction.
29905
29936
 
29906
29937
  @subsection Since
29907
29938
 
29908
- 2.0.0 (planned)
29939
+ 1.12.0
29909
29940
 
29910
29941
  @node W0735
29911
29942
  @section W0735
@@ -29917,14 +29948,20 @@ A right operand of logical operator is the expression of bit operator or arithme
29917
29948
 
29918
29949
  @subsection Content
29919
29950
 
29920
- @b{This message will be supported in AdLint 2.0.0}
29921
-
29922
29951
  Under construction.
29923
29952
 
29924
29953
  @subsection Sample code
29925
29954
 
29926
29955
  @verbatim
29927
- /* will be added */
29956
+ extern void func(unsigned int a, unsigned int b, unsigned int c)
29957
+ {
29958
+ int r;
29959
+ r = a && (b + c); /* W0735 */
29960
+ r = a && (b - c); /* W0735 */
29961
+
29962
+ r = a || (b >> c); /* W0735 */
29963
+ r = a || (b << c); /* W0735 */
29964
+ }
29928
29965
  @end verbatim
29929
29966
 
29930
29967
  @subsection Related message
@@ -29937,7 +29974,7 @@ Under construction.
29937
29974
 
29938
29975
  @subsection Since
29939
29976
 
29940
- 2.0.0 (planned)
29977
+ 1.12.0
29941
29978
 
29942
29979
  @node W0736
29943
29980
  @section W0736
@@ -31802,7 +31839,7 @@ The nonstandard escape sequence is used.
31802
31839
 
31803
31840
  @subsection Content
31804
31841
 
31805
- @b{This message will be supported in AdLint 2.0.0}
31842
+ @b{This message will be supported after AdLint 2.0.0}
31806
31843
 
31807
31844
  Under construction.
31808
31845
 
@@ -31818,7 +31855,7 @@ None.
31818
31855
 
31819
31856
  @subsection Since
31820
31857
 
31821
- 2.0.0 (planned)
31858
+ After 2.0.0 (planned)
31822
31859
 
31823
31860
  @node W0785
31824
31861
  @section W0785
@@ -32420,7 +32457,7 @@ A form of after `#include' preprocessing directive is not <file name> nor \"file
32420
32457
 
32421
32458
  @subsection Content
32422
32459
 
32423
- @b{This message will be supported in AdLint 2.0.0}
32460
+ @b{This message will be supported after AdLint 2.0.0}
32424
32461
 
32425
32462
  Under construction.
32426
32463
 
@@ -32439,7 +32476,7 @@ None.
32439
32476
 
32440
32477
  @subsection Since
32441
32478
 
32442
- 2.0.0 (planned)
32479
+ After 2.0.0 (planned)
32443
32480
 
32444
32481
  @node W0803
32445
32482
  @section W0803
@@ -32451,7 +32488,7 @@ A preprocessing directive is described in actual argument of function-like macro
32451
32488
 
32452
32489
  @subsection Content
32453
32490
 
32454
- @b{This message will be supported in AdLint 2.0.0}
32491
+ @b{This message will be supported after AdLint 2.0.0}
32455
32492
 
32456
32493
  Under construction.
32457
32494
 
@@ -32467,7 +32504,7 @@ None.
32467
32504
 
32468
32505
  @subsection Since
32469
32506
 
32470
- 2.0.0 (planned)
32507
+ After 2.0.0 (planned)
32471
32508
 
32472
32509
  @node W0804
32473
32510
  @section W0804
@@ -32957,7 +32994,7 @@ A macro which receives variable argument is defined.
32957
32994
 
32958
32995
  @subsection Content
32959
32996
 
32960
- @b{This message will be supported in AdLint 2.0.0}
32997
+ @b{This message will be supported after AdLint 2.0.0}
32961
32998
 
32962
32999
  Under construction.
32963
33000
 
@@ -32973,7 +33010,7 @@ None.
32973
33010
 
32974
33011
  @subsection Since
32975
33012
 
32976
- 2.0.0 (planned)
33013
+ After 2.0.0 (planned)
32977
33014
 
32978
33015
  @node W0947
32979
33016
  @section W0947
@@ -33394,7 +33431,7 @@ None.
33394
33431
 
33395
33432
  @subsection Content
33396
33433
 
33397
- @b{This message will be supported in AdLint 2.0.0}
33434
+ @b{This message will be supported after AdLint 2.0.0}
33398
33435
 
33399
33436
  Under construction.
33400
33437
 
@@ -33412,7 +33449,7 @@ Under construction.
33412
33449
 
33413
33450
  @subsection Since
33414
33451
 
33415
- 2.0.0 (planned)
33452
+ After 2.0.0 (planned)
33416
33453
 
33417
33454
  @node W1036
33418
33455
  @section W1036
@@ -33424,7 +33461,7 @@ Under construction.
33424
33461
 
33425
33462
  @subsection Content
33426
33463
 
33427
- @b{This message will be supported in AdLint 2.0.0}
33464
+ @b{This message will be supported after AdLint 2.0.0}
33428
33465
 
33429
33466
  Under construction.
33430
33467
 
@@ -33442,7 +33479,7 @@ Under construction.
33442
33479
 
33443
33480
  @subsection Since
33444
33481
 
33445
- 2.0.0 (planned)
33482
+ After 2.0.0 (planned)
33446
33483
 
33447
33484
  @node W1037
33448
33485
  @section W1037
@@ -33578,7 +33615,7 @@ Under construction.
33578
33615
 
33579
33616
  @subsection Content
33580
33617
 
33581
- @b{This message will be supported in AdLint 2.0.0}
33618
+ @b{This message will be supported after AdLint 2.0.0}
33582
33619
 
33583
33620
  Under construction.
33584
33621
 
@@ -33597,7 +33634,7 @@ Under construction.
33597
33634
 
33598
33635
  @subsection Since
33599
33636
 
33600
- 2.0.0 (planned)
33637
+ After 2.0.0 (planned)
33601
33638
 
33602
33639
  @node W1043
33603
33640
  @section W1043
@@ -33609,7 +33646,7 @@ Under construction.
33609
33646
 
33610
33647
  @subsection Content
33611
33648
 
33612
- @b{This message will be supported in AdLint 2.0.0}
33649
+ @b{This message will be supported after AdLint 2.0.0}
33613
33650
 
33614
33651
  Under construction.
33615
33652
 
@@ -33628,7 +33665,7 @@ Under construction.
33628
33665
 
33629
33666
  @subsection Since
33630
33667
 
33631
- 2.0.0 (planned)
33668
+ After 2.0.0 (planned)
33632
33669
 
33633
33670
  @node W1044
33634
33671
  @section W1044
@@ -33671,7 +33708,7 @@ This `@@ word' syntax will be ignored.
33671
33708
 
33672
33709
  @subsection Content
33673
33710
 
33674
- @b{This message will be supported in AdLint 2.0.0}
33711
+ @b{This message will be supported after AdLint 2.0.0}
33675
33712
 
33676
33713
  Under construction.
33677
33714
 
@@ -33690,7 +33727,7 @@ Under construction.
33690
33727
 
33691
33728
  @subsection Since
33692
33729
 
33693
- 2.0.0 (planned)
33730
+ After 2.0.0 (planned)
33694
33731
 
33695
33732
  @node W1046
33696
33733
  @section W1046
@@ -33758,7 +33795,7 @@ The multi byte string literal is an implementation defined value.
33758
33795
 
33759
33796
  @subsection Content
33760
33797
 
33761
- @b{This message will be supported in AdLint 2.0.0}
33798
+ @b{This message will be supported after AdLint 2.0.0}
33762
33799
 
33763
33800
  Under construction.
33764
33801
 
@@ -33774,7 +33811,7 @@ None.
33774
33811
 
33775
33812
  @subsection Since
33776
33813
 
33777
- 2.0.0 (planned)
33814
+ After 2.0.0 (planned)
33778
33815
 
33779
33816
  @node W1049
33780
33817
  @section W1049
@@ -34542,6 +34579,383 @@ int func(enum Color c)
34542
34579
 
34543
34580
  1.4.0
34544
34581
 
34582
+ @node W1066
34583
+ @section W1066
34584
+ @cindex W1066
34585
+
34586
+ @subsection Message body
34587
+
34588
+ A value of the `float' typed compound expression is explicitly converted into a `double' value.
34589
+
34590
+ @subsection Content
34591
+
34592
+ @b{This message will be supported in AdLint 2.0.0}
34593
+
34594
+ Under construction.
34595
+
34596
+ @subsection Sample code
34597
+
34598
+ @verbatim
34599
+ void func(float a)
34600
+ {
34601
+ double b = (double) (a * a);
34602
+ }
34603
+ @end verbatim
34604
+
34605
+ @subsection Related message
34606
+
34607
+ @itemize
34608
+ @item @ref{W1067} A value of the `float' typed compound expression is explicitly converted into a `long double' value.
34609
+ @item @ref{W1068} A value of the `double' typed compound expression is explicitly converted into a `long double' value.
34610
+ @end itemize
34611
+
34612
+ @subsection Since
34613
+
34614
+ 2.0.0 (planned)
34615
+
34616
+ @node W1067
34617
+ @section W1067
34618
+ @cindex W1067
34619
+
34620
+ @subsection Message body
34621
+
34622
+ A value of the `float' typed compound expression is explicitly converted into a `long double' value.
34623
+
34624
+ @subsection Content
34625
+
34626
+ @b{This message will be supported in AdLint 2.0.0}
34627
+
34628
+ Under construction.
34629
+
34630
+ @subsection Sample code
34631
+
34632
+ @verbatim
34633
+ void func(float a)
34634
+ {
34635
+ long double b = (long double) (a * a);
34636
+ }
34637
+ @end verbatim
34638
+
34639
+ @subsection Related message
34640
+
34641
+ @itemize
34642
+ @item @ref{W1066} A value of the `float' typed compound expression is explicitly converted into a `double' value.
34643
+ @item @ref{W1068} A value of the `double' typed compound expression is explicitly converted into a `long double' value.
34644
+ @end itemize
34645
+
34646
+ @subsection Since
34647
+
34648
+ 2.0.0 (planned)
34649
+
34650
+ @node W1068
34651
+ @section W1068
34652
+ @cindex W1068
34653
+
34654
+ @subsection Message body
34655
+
34656
+ A value of the `double' typed compound expression is explicitly converted into a `long double' value.
34657
+
34658
+ @subsection Content
34659
+
34660
+ @b{This message will be supported in AdLint 2.0.0}
34661
+
34662
+ Under construction.
34663
+
34664
+ @subsection Sample code
34665
+
34666
+ @verbatim
34667
+ void func(double a)
34668
+ {
34669
+ long double b = (long double) (a * a);
34670
+ }
34671
+ @end verbatim
34672
+
34673
+ @subsection Related message
34674
+
34675
+ @itemize
34676
+ @item @ref{W1066} A value of the `float' typed compound expression is explicitly converted into a `double' value.
34677
+ @item @ref{W1067} A value of the `float' typed compound expression is explicitly converted into a `long double' value.
34678
+ @end itemize
34679
+
34680
+ @subsection Since
34681
+
34682
+ 2.0.0 (planned)
34683
+
34684
+ @node W1069
34685
+ @section W1069
34686
+ @cindex W1069
34687
+
34688
+ @subsection Message body
34689
+
34690
+ No trailing `else' clause is found in this `if-else-if' statements chain.
34691
+
34692
+ @subsection Content
34693
+
34694
+ @b{This message will be supported in AdLint 2.0.0}
34695
+
34696
+ Under construction.
34697
+
34698
+ @subsection Sample code
34699
+
34700
+ @verbatim
34701
+ /* will be added */
34702
+ @end verbatim
34703
+
34704
+ @subsection Related message
34705
+
34706
+ None.
34707
+
34708
+ @subsection Since
34709
+
34710
+ 2.0.0 (planned)
34711
+
34712
+ @node W1070
34713
+ @section W1070
34714
+ @cindex W1070
34715
+
34716
+ @subsection Message body
34717
+
34718
+ This `switch' statement can be translated into `if-else' statement because there are only 2 execution paths.
34719
+
34720
+ @subsection Content
34721
+
34722
+ @b{This message will be supported in AdLint 2.0.0}
34723
+
34724
+ Under construction.
34725
+
34726
+ @subsection Sample code
34727
+
34728
+ @verbatim
34729
+ switch (x) {
34730
+ case 1:
34731
+ ...
34732
+ break;
34733
+ default:
34734
+ ...
34735
+ }
34736
+ @end verbatim
34737
+
34738
+ @subsection Related message
34739
+
34740
+ None.
34741
+
34742
+ @subsection Since
34743
+
34744
+ 2.0.0 (planned)
34745
+
34746
+ @node W1071
34747
+ @section W1071
34748
+ @cindex W1071
34749
+
34750
+ @subsection Message body
34751
+
34752
+ Function `%s' has multiple termination points.
34753
+
34754
+ @subsection Content
34755
+
34756
+ @b{This message will be supported in AdLint 2.0.0}
34757
+
34758
+ Under construction.
34759
+
34760
+ @subsection Sample code
34761
+
34762
+ @verbatim
34763
+ int func(int a)
34764
+ {
34765
+ if( a == 0 ) {
34766
+ return 0;
34767
+ }
34768
+ else {
34769
+ return 1; /* W1071 */
34770
+ }
34771
+ }
34772
+ @end verbatim
34773
+
34774
+ @subsection Related message
34775
+
34776
+ None.
34777
+
34778
+ @subsection Since
34779
+
34780
+ 2.0.0 (planned)
34781
+
34782
+ @node W1072
34783
+ @section W1072
34784
+ @cindex W1072
34785
+
34786
+ @subsection Message body
34787
+
34788
+ `A `goto' statement is found.
34789
+
34790
+ @subsection Content
34791
+
34792
+ @b{This message will be supported in AdLint 2.0.0}
34793
+
34794
+ Under construction.
34795
+
34796
+ @subsection Sample code
34797
+
34798
+ @verbatim
34799
+ /* will be added */
34800
+ @end verbatim
34801
+
34802
+ @subsection Related message
34803
+
34804
+ None.
34805
+
34806
+ @subsection Since
34807
+
34808
+ 2.0.0 (planned)
34809
+
34810
+ @node W1073
34811
+ @section W1073
34812
+ @cindex W1073
34813
+
34814
+ @subsection Message body
34815
+
34816
+ A return value of function `%s' is not used.。
34817
+
34818
+ @subsection Content
34819
+
34820
+ @b{This message will be supported in AdLint 2.0.0}
34821
+
34822
+ Under construction.
34823
+
34824
+ @subsection Sample code
34825
+
34826
+ @verbatim
34827
+ /* will be added */
34828
+ @end verbatim
34829
+
34830
+ @subsection Related message
34831
+
34832
+ None.
34833
+
34834
+ @subsection Since
34835
+
34836
+ 2.0.0 (planned)
34837
+
34838
+ @node W1074
34839
+ @section W1074
34840
+ @cindex W1074
34841
+
34842
+ @subsection Message body
34843
+
34844
+ Side-effects in `sizeof' operand will not be recorded because the operand will not be executed actually.
34845
+
34846
+ @subsection Content
34847
+
34848
+ @b{This message will be supported in AdLint 2.0.0}
34849
+
34850
+ Under construction.
34851
+
34852
+ @subsection Sample code
34853
+
34854
+ @verbatim
34855
+ int i = sizeof(data++); /* W1074 */
34856
+ @end verbatim
34857
+
34858
+ @subsection Related message
34859
+
34860
+ None.
34861
+
34862
+ @subsection Since
34863
+
34864
+ 2.0.0 (planned)
34865
+
34866
+ @node W1075
34867
+ @section W1075
34868
+ @cindex W1075
34869
+
34870
+ @subsection Message body
34871
+
34872
+ This declaration has no `static' storage-class-specifier while the declaring object has internal-linkage.
34873
+
34874
+ @subsection Content
34875
+
34876
+ @b{This message will be supported in AdLint 2.0.0}
34877
+
34878
+ Under construction.
34879
+
34880
+ @subsection Sample code
34881
+
34882
+ @verbatim
34883
+ static int func(void);
34884
+ int func(void) /* W1075 */
34885
+ {
34886
+ ...
34887
+ }
34888
+ @end verbatim
34889
+
34890
+ @subsection Related message
34891
+
34892
+ None.
34893
+
34894
+ @subsection Since
34895
+
34896
+ 2.0.0 (planned)
34897
+
34898
+ @node W1076
34899
+ @section W1076
34900
+ @cindex W1076
34901
+
34902
+ @subsection Message body
34903
+
34904
+ `%s' is defined as internal-linkage, but it has no forward declaration.
34905
+
34906
+ @subsection Content
34907
+
34908
+ @b{This message will be supported in AdLint 2.0.0}
34909
+
34910
+ Under construction.
34911
+
34912
+ @subsection Sample code
34913
+
34914
+ @verbatim
34915
+ static int func(void) /* W1076 */
34916
+ {
34917
+ ...
34918
+ return ret;
34919
+ }
34920
+ @end verbatim
34921
+
34922
+ @subsection Related message
34923
+
34924
+ None.
34925
+
34926
+ @subsection Since
34927
+
34928
+ 2.0.0 (planned)
34929
+
34930
+ @node W1077
34931
+ @section W1077
34932
+ @cindex W1077
34933
+
34934
+ @subsection Message body
34935
+
34936
+ Declaring array object without a size.
34937
+
34938
+ @subsection Content
34939
+
34940
+ @b{This message will be supported in AdLint 2.0.0}
34941
+
34942
+ Under construction.
34943
+
34944
+ @subsection Sample code
34945
+
34946
+ @verbatim
34947
+ extern int array[]; /* W1077 */
34948
+ @end verbatim
34949
+
34950
+ @subsection Related message
34951
+
34952
+ None.
34953
+
34954
+ @subsection Since
34955
+
34956
+ 2.0.0 (planned)
34957
+
34958
+
34545
34959
  @node W9001
34546
34960
  @section W9001
34547
34961
 
@@ -34623,6 +35037,42 @@ None.
34623
35037
 
34624
35038
  1.0.0
34625
35039
 
35040
+ @node W9003
35041
+ @section W9003
35042
+ @cindex W9003
35043
+
35044
+ @subsection Message body
35045
+
35046
+ An object typed `%s' is implicitly converted into an object of other type.
35047
+
35048
+ @subsection Content
35049
+
35050
+ This message indicates that an implicit conversion from or to an object of the
35051
+ non-standard type will occur.
35052
+
35053
+ @subsection Sample code
35054
+
35055
+ @verbatim
35056
+ enum Color { RED, BLUE, GREEN };
35057
+ enum Fruit { APPLE, BANANA, ORANGE };
35058
+
35059
+ extern void foo(enum Color);
35060
+
35061
+ static void bar(void)
35062
+ {
35063
+ int i = RED; /* W9003 */
35064
+ foo(ORANGE); /* W9003 */
35065
+ }
35066
+ @end verbatim
35067
+
35068
+ @subsection Related message
35069
+
35070
+ None.
35071
+
35072
+ @subsection Since
35073
+
35074
+ 1.12.0
35075
+
34626
35076
  @node C0001
34627
35077
  @section C0001
34628
35078
  @cindex C0001