Skip to content

Commit

Permalink
Merge pull request #389 from bkryza/fix-forward-declarations-handling
Browse files Browse the repository at this point in the history
Fix forward declarations handling
  • Loading branch information
bkryza authored Feb 12, 2025
2 parents ac667d5 + 505e440 commit bb42189
Show file tree
Hide file tree
Showing 35 changed files with 1,441 additions and 414 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# CHANGELOG

* Fixed handling of forward declarations in class diagrams (#388)
* Added support for coroutines in sequence diagrams (#376)
* Fixed supported for compile_flags.txt (#381)
* Added separate return messages for each return branch in sequence diagrams
Expand Down
1 change: 1 addition & 0 deletions docs/test_cases.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@
* [t00088](./test_cases/t00088.md) - Typed element Objective-C class diagram filter test case
* [t00089](./test_cases/t00089.md) - Test case for '::' prefix in class diagrams for namespaces outside of using_namespace
* [t00090](./test_cases/t00090.md) - Metaprogramming test case with recursive type list
* [t00091](./test_cases/t00091.md) - Declaration forwarding test case
## Sequence diagrams
* [t20001](./test_cases/t20001.md) - Basic sequence diagram test case
* [t20002](./test_cases/t20002.md) - Free function sequence diagram test case
Expand Down
14 changes: 7 additions & 7 deletions docs/test_cases/t00002.md
Original file line number Diff line number Diff line change
Expand Up @@ -736,35 +736,35 @@ private:
<data key="nd2"><![CDATA[A]]></data>
<data key="nd3">abstract</data>
<data key="nd6">false</data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/f9dc92716f708427995c19ec36d9af89e7bfd921/tests/t00002/t00002.cc#L7</data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/ac67b0e0b11b0e4f1cd6ba15f83a8e30bf59745f/tests/t00002/t00002.cc#L7</data>
<data key="nd5">This is class A</data>
</node>
<node id="n1">
<data key="nd1">class</data>
<data key="nd2"><![CDATA[B]]></data>
<data key="nd6">false</data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/f9dc92716f708427995c19ec36d9af89e7bfd921/tests/t00002/t00002.cc#L16</data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/ac67b0e0b11b0e4f1cd6ba15f83a8e30bf59745f/tests/t00002/t00002.cc#L16</data>
<data key="nd5">This is class B</data>
</node>
<node id="n2">
<data key="nd1">class</data>
<data key="nd2"><![CDATA[C]]></data>
<data key="nd6">false</data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/f9dc92716f708427995c19ec36d9af89e7bfd921/tests/t00002/t00002.cc#L27</data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/ac67b0e0b11b0e4f1cd6ba15f83a8e30bf59745f/tests/t00002/t00002.cc#L27</data>
<data key="nd5">This is class C - class C has a long comment</data>
</node>
<node id="n3">
<data key="nd1">class</data>
<data key="nd2"><![CDATA[D]]></data>
<data key="nd6">false</data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/f9dc92716f708427995c19ec36d9af89e7bfd921/tests/t00002/t00002.cc#L36</data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/ac67b0e0b11b0e4f1cd6ba15f83a8e30bf59745f/tests/t00002/t00002.cc#L36</data>
<data key="nd5">D</data>
</node>
<node id="n4">
<data key="nd1">class</data>
<data key="nd2"><![CDATA[E]]></data>
<data key="nd6">false</data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/f9dc92716f708427995c19ec36d9af89e7bfd921/tests/t00002/t00002.cc#L61</data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/ac67b0e0b11b0e4f1cd6ba15f83a8e30bf59745f/tests/t00002/t00002.cc#L61</data>
<data key="nd5">E</data>
</node>
<node id="n5">
Expand Down Expand Up @@ -801,7 +801,7 @@ private:
<data key="ed1">public</data>
</edge>
<edge id="e5" source="n3" target="n0">
<data key="ed3">https://github.com/bkryza/clang-uml/blob/f9dc92716f708427995c19ec36d9af89e7bfd921/tests/t00002/t00002.cc#L58</data>
<data key="ed3">https://github.com/bkryza/clang-uml/blob/ac67b0e0b11b0e4f1cd6ba15f83a8e30bf59745f/tests/t00002/t00002.cc#L58</data>
<data key="ed0">association</data>
<data key="ed2">as</data>
<data key="ed1">private</data>
Expand All @@ -815,7 +815,7 @@ private:
<data key="ed1">public</data>
</edge>
<edge id="e8" source="n4" target="n0">
<data key="ed3">https://github.com/bkryza/clang-uml/blob/f9dc92716f708427995c19ec36d9af89e7bfd921/tests/t00002/t00002.cc#L83</data>
<data key="ed3">https://github.com/bkryza/clang-uml/blob/ac67b0e0b11b0e4f1cd6ba15f83a8e30bf59745f/tests/t00002/t00002.cc#L83</data>
<data key="ed0">association</data>
<data key="ed2">as</data>
<data key="ed1">private</data>
Expand Down
54 changes: 27 additions & 27 deletions docs/test_cases/t00002_class.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 5 additions & 5 deletions docs/test_cases/t00002_class_mermaid.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
50 changes: 25 additions & 25 deletions docs/test_cases/t00004.md
Original file line number Diff line number Diff line change
Expand Up @@ -820,148 +820,148 @@ public:
<node id="n0">
<data key="nd1">enum</data>
<data key="nd2"><![CDATA[Color]]></data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/f9dc92716f708427995c19ec36d9af89e7bfd921/tests/t00004/t00004.cc#L4</data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/ac67b0e0b11b0e4f1cd6ba15f83a8e30bf59745f/tests/t00004/t00004.cc#L4</data>
<data key="nd5">Color</data>
</node>
<node id="n1">
<data key="nd1">class</data>
<data key="nd2"><![CDATA[B]]></data>
<data key="nd6">false</data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/f9dc92716f708427995c19ec36d9af89e7bfd921/tests/t00004/t00004.cc#L6</data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/ac67b0e0b11b0e4f1cd6ba15f83a8e30bf59745f/tests/t00004/t00004.cc#L6</data>
<data key="nd5">B</data>
</node>
<node id="n2">
<data key="nd1">enum</data>
<data key="nd2"><![CDATA[B::AA]]></data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/f9dc92716f708427995c19ec36d9af89e7bfd921/tests/t00004/t00004.cc#L8</data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/ac67b0e0b11b0e4f1cd6ba15f83a8e30bf59745f/tests/t00004/t00004.cc#L8</data>
<data key="nd5">B::AA</data>
</node>
<node id="n3">
<data key="nd1">enum</data>
<data key="nd2"><![CDATA[B::BB]]></data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/f9dc92716f708427995c19ec36d9af89e7bfd921/tests/t00004/t00004.cc#L9</data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/ac67b0e0b11b0e4f1cd6ba15f83a8e30bf59745f/tests/t00004/t00004.cc#L9</data>
<data key="nd5">B::BB</data>
</node>
<node id="n4">
<data key="nd1">enum</data>
<data key="nd2"><![CDATA[B::CC]]></data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/f9dc92716f708427995c19ec36d9af89e7bfd921/tests/t00004/t00004.cc#L10</data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/ac67b0e0b11b0e4f1cd6ba15f83a8e30bf59745f/tests/t00004/t00004.cc#L10</data>
<data key="nd5">B::CC</data>
</node>
<node id="n5">
<data key="nd1">class</data>
<data key="nd2"><![CDATA[A]]></data>
<data key="nd6">false</data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/f9dc92716f708427995c19ec36d9af89e7bfd921/tests/t00004/t00004.cc#L18</data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/ac67b0e0b11b0e4f1cd6ba15f83a8e30bf59745f/tests/t00004/t00004.cc#L18</data>
<data key="nd5">A</data>
</node>
<node id="n6">
<data key="nd1">class</data>
<data key="nd2"><![CDATA[A::AA]]></data>
<data key="nd6">false</data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/f9dc92716f708427995c19ec36d9af89e7bfd921/tests/t00004/t00004.cc#L22</data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/ac67b0e0b11b0e4f1cd6ba15f83a8e30bf59745f/tests/t00004/t00004.cc#L22</data>
<data key="nd5">A::AA</data>
</node>
<node id="n7">
<data key="nd1">enum</data>
<data key="nd2"><![CDATA[A::AA::Lights]]></data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/f9dc92716f708427995c19ec36d9af89e7bfd921/tests/t00004/t00004.cc#L24</data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/ac67b0e0b11b0e4f1cd6ba15f83a8e30bf59745f/tests/t00004/t00004.cc#L24</data>
<data key="nd5">A::AA::Lights</data>
</node>
<node id="n8">
<data key="nd1">class</data>
<data key="nd2"><![CDATA[A::AA::AAA]]></data>
<data key="nd6">false</data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/f9dc92716f708427995c19ec36d9af89e7bfd921/tests/t00004/t00004.cc#L26</data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/ac67b0e0b11b0e4f1cd6ba15f83a8e30bf59745f/tests/t00004/t00004.cc#L26</data>
<data key="nd5">A::AA::AAA</data>
</node>
<node id="n9">
<data key="nd1">class</data>
<data key="nd2"><![CDATA[C::B<int>]]></data>
<data key="nd6">true</data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/f9dc92716f708427995c19ec36d9af89e7bfd921/tests/t00004/t00004.cc#L44</data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/ac67b0e0b11b0e4f1cd6ba15f83a8e30bf59745f/tests/t00004/t00004.cc#L44</data>
<data key="nd5">C::B</data>
</node>
<node id="n10">
<data key="nd1">class</data>
<data key="nd2"><![CDATA[C<T>]]></data>
<data key="nd6">true</data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/f9dc92716f708427995c19ec36d9af89e7bfd921/tests/t00004/t00004.cc#L34</data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/ac67b0e0b11b0e4f1cd6ba15f83a8e30bf59745f/tests/t00004/t00004.cc#L34</data>
<data key="nd5">C</data>
</node>
<node id="n11">
<data key="nd1">class</data>
<data key="nd2"><![CDATA[C::AA]]></data>
<data key="nd6">false</data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/f9dc92716f708427995c19ec36d9af89e7bfd921/tests/t00004/t00004.cc#L38</data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/ac67b0e0b11b0e4f1cd6ba15f83a8e30bf59745f/tests/t00004/t00004.cc#L38</data>
<data key="nd5">C::AA</data>
</node>
<node id="n12">
<data key="nd1">class</data>
<data key="nd2"><![CDATA[C::AA::AAA]]></data>
<data key="nd6">false</data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/f9dc92716f708427995c19ec36d9af89e7bfd921/tests/t00004/t00004.cc#L39</data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/ac67b0e0b11b0e4f1cd6ba15f83a8e30bf59745f/tests/t00004/t00004.cc#L39</data>
<data key="nd5">C::AA::AAA</data>
</node>
<node id="n13">
<data key="nd1">enum</data>
<data key="nd2"><![CDATA[C::AA::CCC]]></data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/f9dc92716f708427995c19ec36d9af89e7bfd921/tests/t00004/t00004.cc#L41</data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/ac67b0e0b11b0e4f1cd6ba15f83a8e30bf59745f/tests/t00004/t00004.cc#L41</data>
<data key="nd5">C::AA::CCC</data>
</node>
<node id="n14">
<data key="nd1">class</data>
<data key="nd2"><![CDATA[C::B<V>]]></data>
<data key="nd6">true</data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/f9dc92716f708427995c19ec36d9af89e7bfd921/tests/t00004/t00004.cc#L44</data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/ac67b0e0b11b0e4f1cd6ba15f83a8e30bf59745f/tests/t00004/t00004.cc#L44</data>
<data key="nd5">C::B</data>
</node>
<node id="n15">
<data key="nd1">enum</data>
<data key="nd2"><![CDATA[C::CC]]></data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/f9dc92716f708427995c19ec36d9af89e7bfd921/tests/t00004/t00004.cc#L50</data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/ac67b0e0b11b0e4f1cd6ba15f83a8e30bf59745f/tests/t00004/t00004.cc#L50</data>
<data key="nd5">C::CC</data>
</node>
<node id="n16">
<data key="nd1">class</data>
<data key="nd2"><![CDATA[detail::D]]></data>
<data key="nd6">false</data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/f9dc92716f708427995c19ec36d9af89e7bfd921/tests/t00004/t00004.cc#L54</data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/ac67b0e0b11b0e4f1cd6ba15f83a8e30bf59745f/tests/t00004/t00004.cc#L54</data>
<data key="nd5">D</data>
</node>
<node id="n17">
<data key="nd1">enum</data>
<data key="nd2"><![CDATA[detail::D::AA]]></data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/f9dc92716f708427995c19ec36d9af89e7bfd921/tests/t00004/t00004.cc#L56</data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/ac67b0e0b11b0e4f1cd6ba15f83a8e30bf59745f/tests/t00004/t00004.cc#L56</data>
<data key="nd5">D::AA</data>
</node>
<node id="n18">
<data key="nd1">class</data>
<data key="nd2"><![CDATA[detail::D::DD]]></data>
<data key="nd6">false</data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/f9dc92716f708427995c19ec36d9af89e7bfd921/tests/t00004/t00004.cc#L58</data>
<data key="nd4">https://github.com/bkryza/clang-uml/blob/ac67b0e0b11b0e4f1cd6ba15f83a8e30bf59745f/tests/t00004/t00004.cc#L58</data>
<data key="nd5">D::DD</data>
</node>
<edge id="e0" source="n1" target="n2">
<data key="ed3">https://github.com/bkryza/clang-uml/blob/f9dc92716f708427995c19ec36d9af89e7bfd921/tests/t00004/t00004.cc#L12</data>
<data key="ed3">https://github.com/bkryza/clang-uml/blob/ac67b0e0b11b0e4f1cd6ba15f83a8e30bf59745f/tests/t00004/t00004.cc#L12</data>
<data key="ed0">aggregation</data>
<data key="ed2">aa</data>
<data key="ed1">public</data>
</edge>
<edge id="e1" source="n1" target="n3">
<data key="ed3">https://github.com/bkryza/clang-uml/blob/f9dc92716f708427995c19ec36d9af89e7bfd921/tests/t00004/t00004.cc#L13</data>
<data key="ed3">https://github.com/bkryza/clang-uml/blob/ac67b0e0b11b0e4f1cd6ba15f83a8e30bf59745f/tests/t00004/t00004.cc#L13</data>
<data key="ed0">aggregation</data>
<data key="ed2">bb</data>
<data key="ed1">public</data>
</edge>
<edge id="e2" source="n1" target="n4">
<data key="ed3">https://github.com/bkryza/clang-uml/blob/f9dc92716f708427995c19ec36d9af89e7bfd921/tests/t00004/t00004.cc#L14</data>
<data key="ed3">https://github.com/bkryza/clang-uml/blob/ac67b0e0b11b0e4f1cd6ba15f83a8e30bf59745f/tests/t00004/t00004.cc#L14</data>
<data key="ed0">aggregation</data>
<data key="ed2">cc</data>
<data key="ed1">public</data>
</edge>
<edge id="e3" source="n1" target="n0">
<data key="ed3">https://github.com/bkryza/clang-uml/blob/f9dc92716f708427995c19ec36d9af89e7bfd921/tests/t00004/t00004.cc#L15</data>
<data key="ed3">https://github.com/bkryza/clang-uml/blob/ac67b0e0b11b0e4f1cd6ba15f83a8e30bf59745f/tests/t00004/t00004.cc#L15</data>
<data key="ed0">association</data>
<data key="ed2">color</data>
<data key="ed1">public</data>
Expand All @@ -975,7 +975,7 @@ public:
<data key="ed1">public</data>
</edge>
<edge id="e6" source="n8" target="n7">
<data key="ed3">https://github.com/bkryza/clang-uml/blob/f9dc92716f708427995c19ec36d9af89e7bfd921/tests/t00004/t00004.cc#L27</data>
<data key="ed3">https://github.com/bkryza/clang-uml/blob/ac67b0e0b11b0e4f1cd6ba15f83a8e30bf59745f/tests/t00004/t00004.cc#L27</data>
<data key="ed0">aggregation</data>
<data key="ed2">lights</data>
<data key="ed1">private</data>
Expand All @@ -985,7 +985,7 @@ public:
<data key="ed1">public</data>
</edge>
<edge id="e8" source="n10" target="n9">
<data key="ed3">https://github.com/bkryza/clang-uml/blob/f9dc92716f708427995c19ec36d9af89e7bfd921/tests/t00004/t00004.cc#L48</data>
<data key="ed3">https://github.com/bkryza/clang-uml/blob/ac67b0e0b11b0e4f1cd6ba15f83a8e30bf59745f/tests/t00004/t00004.cc#L48</data>
<data key="ed0">aggregation</data>
<data key="ed2">b_int</data>
<data key="ed1">public</data>
Expand Down
Loading

0 comments on commit bb42189

Please sign in to comment.