After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 637099 - Fortran: Collaboration diagram
Fortran: Collaboration diagram
Status: VERIFIED FIXED
Product: doxygen
Classification: Other
Component: general
unspecified
Other Windows
: Normal normal
: ---
Assigned To: Dimitri van Heesch
Dimitri van Heesch
Depends on:
Blocks:
 
 
Reported: 2010-12-12 19:06 UTC by albert
Modified: 2012-11-18 11:13 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Input and result described bug (89.50 KB, application/x-compressed-tar)
2010-12-12 19:06 UTC, albert
  Details
Input and results for second part of bug message (88.52 KB, application/x-compressed-tar)
2010-12-12 19:45 UTC, albert
  Details
Patch file for collaboration diagram (4.58 KB, patch)
2011-02-20 14:54 UTC, albert
none Details | Review

Description albert 2010-12-12 19:06:04 UTC
Created attachment 176306 [details]
Input and result described bug

When creating a collaboration diagram for the type typ1:

module prec_mod
  integer, parameter :: prec = kind(1.d0)
end
module tst1
  use prec_mod, only: prec
  type typ1
    integer ::  Press1
    real(prec) ::  Mass1
  end type typ1
end module tst1

The collaboration diagram states that Mass1 is of type prec and not of real(prec).
When changing the use statement into "use prec_mod" the collaboration diagram is OK.
Note that in the data fields list the type is correct, looks like somewhere in the generating of th dot file a replacement is made.
Comment 1 albert 2010-12-12 19:45:26 UTC
Created attachment 176312 [details]
Input and results for second part of bug message
Comment 2 albert 2010-12-12 19:46:17 UTC
Extension to the above bug (comment 1):
- when using: "integer, pointer :: Press1(:)" the collaboration diagram for this variable is OK but the description is missing the (:) / dimension(:)
- when using: "integer, pointer,dimension(:) :: Press2" the description is OK but the collaboration diagram contains as data type: "),pointer"
See also 2nd attachment
Comment 3 Daniel Franke 2010-12-23 21:27:02 UTC
Confirmed.

Should the standard data types should show up in the collaboration diagram to begin with? For C it seems to be struct/class, i.e. derived type, only?!

Further, should the attributes be kept in the collaboration diagram?
E.g.

TYPE :: aa
END TYPE

TYPE :: bb
  TYPE(aa), DIMESION(:), POINTER :: a
END TYPE

Here, bb should only show a link to aa, nothing else (attributes are not relevant), no?
Comment 4 Daniel Franke 2010-12-24 17:25:59 UTC
With the latest update (r751), this seems to be fixed?!
Albert, can you confirm?
Comment 5 albert 2011-01-02 14:37:15 UTC
Unfortunately, the bug is not fixed in r751. I still see just the word prec in the collaboration diagram and not real(prec).
Comment 6 Daniel Franke 2011-01-02 14:45:00 UTC
(In reply to comment #5)
> Unfortunately, the bug is not fixed in r751. I still see just the word prec in
> the collaboration diagram and not real(prec).

Here, I don't see any REAL any more, only TYPEs?
Is this configurable?
Comment 7 albert 2011-01-02 14:49:00 UTC
The problem is that I don't see the REAL, this should be there and not just the word prec..
The type of the variable is REAL(prec) where prec signals the KIND type of the variable.
Comment 8 Daniel Franke 2011-01-02 15:11:49 UTC
Ok, I doule checked again. Now, I again got all members of the TYPE in the graph, including intrinsic types (REAL, INTEGER, ...)?! Errr ...

However, I'd prefer it if we could omit intrinsic types and their variants (w/o dimension, w/o allocatable, ...) and only show the TYPEs. I believe, that's how it is done for C/C++.
Comment 9 albert 2011-01-02 15:19:18 UTC
I think the KIND information is basic information required in the collaboration diagram. Same accounts more or less for the dimension information (in a condensed form like INTEGER(:,:) or for C **int).
I agree that the modifiers should appear in the collaboration diagram.
Comment 10 Daniel Franke 2011-01-02 15:29:59 UTC
(In reply to comment #8)
> I'd prefer it if we could omit intrinsic types and their variants (w/o
> dimension, w/o allocatable, ...) and only show the TYPEs.

(In reply to comment #9)
> I agree that the modifiers should appear in the collaboration diagram.

You agree to disagree? Please clarify ;)
Comment 11 albert 2011-01-02 15:39:22 UTC
Oops word not disappeared in the last sentence.

I think the KIND information is basic information required in the collaboration
diagram. Same accounts more or less for the dimension information (in a
condensed form like INTEGER(:,:) or for C **int).

I agree that the modifiers (words like allocatable, pointer) should not appear in the collaboration diagram.
Comment 12 Daniel Franke 2011-01-02 16:01:37 UTC
(In reply to comment #6)
> Here, I don't see any REAL any more, only TYPEs?
> Is this configurable?

HIDE_UNDOC_RELATIONS = YES|NO

If set to YES, the intrinsic types are omitted.
With this I agree, one should have the whole (intrinsic) type available.

Back to square one. With above config option enabled, the types are still partially wrong.
Comment 13 albert 2011-02-20 14:54:36 UTC
Created attachment 181409 [details] [review]
Patch file for collaboration diagram

This file contains a patch for the problems with the Fortran collaboration diagrams.
- fixing problem with substitution names in use statements
- fixing single colon (:) problem
- fixing having variable names in bottom part (function part) of collaboration diagrams
Comment 14 Dimitri van Heesch 2011-05-15 09:36:44 UTC
Thanks Albert,

I'll include this patch in the next subversion update.
Comment 15 Dimitri van Heesch 2011-08-14 14:04:54 UTC
This bug was previously marked ASSIGNED, which means it should be fixed in
doxygen version 1.7.5. Please verify if this is indeed the case. Reopen the
bug if you think it is not fixed and please include any additional information
that you think can be relevant.