Variable is not referenced in report (SVN ticket : #863)#94
Variable is not referenced in report (SVN ticket : #863)#94SBelondrade wants to merge 8 commits intoOCamlPro:gcos4gnucobol-3.xfrom
Conversation
| if (!bfound) { | ||
| cb_warning_x (COBC_WARN_FILLER, | ||
| CB_TREE(ctl), _("Control field %s is not referenced in report"), s->name); | ||
| ctl = NULL; |
There was a problem hiding this comment.
ctl = NULL; is useless as ctl is a local variable.
| CB_TREE(ctl), _("Control field %s is not referenced in report"), s->name); | ||
| ctl = NULL; | ||
| p->controls = NULL; | ||
| return ; |
There was a problem hiding this comment.
This won't work if there is a list of more than one controls, and the first one is not used. If you only issue a warning and not an error, your code has to handle correctly such a case.
I would advise to clean up the controls at the beginning of the output_report_definition function, so that p->controls only contains controls that are used within the report.
There was a problem hiding this comment.
Just to clarify: output_control_report is called on nx recursively just before your test, for other controls, so if you set p->controls = NULL, you discard all of them. The list of controls is used several times, so doing the test every time would be too complex, the only solution I see is to cleanup the list once at the beginning.
GitMensch
left a comment
There was a problem hiding this comment.
See my review comments for reasons that may be related to the test suite. Sorry for not paying that earlier (while I wrote those notes directly after you PR, I somehow missed to click on "submit review").
Furthermore please rebase.
| if(!bfound) { | ||
| printf("Control field %s is not referenced in report\n",s->name); | ||
| cb_warning_x (COBC_WARN_FILLER, | ||
| CB_TREE(ctl), _("Control field %s is not referenced in report"), s->name); |
There was a problem hiding this comment.
Do we need both this and the part above? Seem duplicated.
There was a problem hiding this comment.
Please start (nearly every) diagnostic with a lower-case letter; the only reason that this did not showed itself before is that it wasn't marked as msgid (the _() part that leads to translatable strings).
| && (f->children->report_flag & COB_REPORT_LINE)) { | ||
| printf("Warning: Ignoring nested LINE %s %d\n", | ||
| cb_warning_x (COBC_WARN_FILLER, | ||
| CB_TREE(f), _("Warning: Ignoring nested LINE %s %d"), |
There was a problem hiding this comment.
The "warning" prefix already is in by cb_warning, pleas drop that and start with lowercase letter.
| 09 ERROR-2 PIC 9(3). | ||
| ]) | ||
|
|
||
| AT_CHECK([$COMPILE prog.cob], [0], [], [prog.cob:18: warning: Control field ERROR-1 is not referenced in report |
There was a problem hiding this comment.
just minor style: please add a line break after [],
|
|
||
| AT_CLEANUP | ||
|
|
||
| AT_SETUP([Check if the variable is referenced in the report]) |
There was a problem hiding this comment.
This is just a syntax check, please move to syn_reportwriter, using $COMPILE_ONLY.
Please also add a test for the "ignoring nested line".
Codecov Report
❗ Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more. @@ Coverage Diff @@
## gcos4gnucobol-3.x #94 +/- ##
=====================================================
+ Coverage 65.39% 65.40% +0.01%
=====================================================
Files 32 32
Lines 58797 58808 +11
Branches 15492 15496 +4
=====================================================
+ Hits 38449 38463 +14
+ Misses 14362 14361 -1
+ Partials 5986 5984 -2
... and 1 file with indirect coverage changes 📣 We’re building smart automated test selection to slash your CI/CD build times. Learn more |
GitMensch
left a comment
There was a problem hiding this comment.
Rechecked: this issue still happens both in 3.2 release (and therefore current 3.x branch) and trunk. it would be nice if this PR can be finished so that we can include it upstream.
| } | ||
| } | ||
| } | ||
| if (!bfound) { |
There was a problem hiding this comment.
This check, the warning and likely also the setting to null (or dropping the single unused control, as @lefessan pointed out) must be moved to typeck.c.
| @@ -10229,7 +10246,8 @@ output_report_define_lines (int top, struct cb_field *f, struct cb_report *r) | |||
| if ((f->report_flag & COB_REPORT_LINE) | |||
There was a problem hiding this comment.
(originating lines 10229-10235) This should be moved to typeck.c, at least the warning.
dropped trailing whiutespace - mostly to get the CI running...
|
This fix does not appear to have been merged to trunk, yet. Thanks in advance for any insights and all your fabulous work on GnuCOBOL. Cheers, |
Hi Simon, I'm using my second account for this pull request.
Reference svn ticket :
#863.I replaced
printfbycb_warning_xbut I think I have some problems of understanding.If I understand, I have to remove two checks and this condition in
codegen.c:I added a new function and I called it
finalize_report:But I don't pass some unit test. Please tell me if I haven´t understood what I had to do ?