GNOME Bugzilla – Bug 300164
Doxygen doesn't recognise D keywords 'extern', 'align' and 'pragma'
Last modified: 2018-07-30 10:29:36 UTC
Version details: 1.4.2 The D language has its own syntax for declaring functions with external linkage and for specifying struct member alignment. This syntax looks like this: extern(C) void qwert(); align(2) yuiop; Doxygen doesn't currently understand this aspect of D, and so such declarations do not parse correctly. Similar in syntax is the pragma, which can also take comma-separated arguments. The same code could be used to handle all three keywords. Steps to reproduce: 1. Create a D file containing these lines: extern(C) void qwert(); align(2) struct Yuiop { char asdfg; int hjkl; } pragma(Zxcvb, 42) int nm; 2. Run Doxygen. Actual results: extern(C), align(2) and pragma(Zxcvb, 42) are misparsed as function signatures, leading to this output (underscores denote links): Functions _extern_ (C) void qwert() _align_ (2) struct Yuiop _pragma_ (Zxcvb, 42) int nm ---- Function Documentation align( 2 ) extern( C ) pragma( Zxcvb , 42 ) Expected results: Parse the whole token sequence extern(...), align(...) or pragma(...) as a declaration attribute. Note that align and extern are also valid attributes without the (...) portion.
As discussed in https://github.com/doxygen/doxygen/pull/734 , Doxygen has moved its issue tracking to https://github.com/doxygen/doxygen/issues All Doxygen tickets in GNOME Bugzilla have been migrated to Github. You can subscribe and participate in the new ticket in Github. You can find the corresponding Github ticket by searching for its Bugzilla ID (number) in Github. Hence I am closing this GNOME Bugzilla ticket. Please use the corresponding ticket in Github instead. Thanks a lot!