aboutsummaryrefslogtreecommitdiffstats
path: root/testsuite
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2022-12-21 08:27:56 +0100
committerTristan Gingold <tgingold@free.fr>2022-12-21 08:27:56 +0100
commitd45f4a31e557d54314765265d8f488a45dc8fc30 (patch)
treeb07084d767d2652029cd34649d0b9cbe6788b2eb /testsuite
parent432c019c1113b880fc554e94e9a66b7efd1d303b (diff)
downloadghdl-d45f4a31e557d54314765265d8f488a45dc8fc30.tar.gz
ghdl-d45f4a31e557d54314765265d8f488a45dc8fc30.tar.bz2
ghdl-d45f4a31e557d54314765265d8f488a45dc8fc30.zip
testsuite/pyunit/libghdl: adjust Complex, add Complex_Multilines
Diffstat (limited to 'testsuite')
-rw-r--r--testsuite/pyunit/libghdl/Comments.py3
-rw-r--r--testsuite/pyunit/libghdl/examples/Complex.vhdl6
-rw-r--r--testsuite/pyunit/libghdl/examples/Complex_Multilines.vhdl138
3 files changed, 143 insertions, 4 deletions
diff --git a/testsuite/pyunit/libghdl/Comments.py b/testsuite/pyunit/libghdl/Comments.py
index 68dfaf3b5..b46eef82d 100644
--- a/testsuite/pyunit/libghdl/Comments.py
+++ b/testsuite/pyunit/libghdl/Comments.py
@@ -306,4 +306,7 @@ class Complex(Base):
"""More exhaustive"""
self.checkFile(self._root / "Complex.vhdl")
+ def test_complex(self) -> None:
+ self.checkFile(self._root / "Complex_Multilines.vhdl")
+
# Empty line before to easy cut & put
diff --git a/testsuite/pyunit/libghdl/examples/Complex.vhdl b/testsuite/pyunit/libghdl/examples/Complex.vhdl
index 87276a2d5..40eaa80ff 100644
--- a/testsuite/pyunit/libghdl/examples/Complex.vhdl
+++ b/testsuite/pyunit/libghdl/examples/Complex.vhdl
@@ -14,8 +14,6 @@ end architecture;
package p1 is
end package;
--- package body should be supported too to keep parity, but I have currently no usecase for it.
-
-- :ctx1: comments before design units
-- :ctx1: might be multiline
context ctx1 is
@@ -41,7 +39,7 @@ entity e2 is
constant FREQUENCY : positive;
constant BITS : positive; -- :BITS: comment after a generic are mostly single line,
-- :BITS: but could be multi line too
- -- in case comment is before and after
+ -- :BITS: in case comment is before and after
constant DEBUG : boolean -- :DEBUG: the after has presidency
);
port (
@@ -56,7 +54,7 @@ begin
end architecture;
--- As packages define public elements like constants, types and sub-programs, we are interested in such documentation too.
+-- :p2: As packages define public elements like constants, types and sub-programs, we are interested in such documentation too.
package p2 is
-- :p2: comments in design units (python doc-string style)
-- :p2: might be multi line
diff --git a/testsuite/pyunit/libghdl/examples/Complex_Multilines.vhdl b/testsuite/pyunit/libghdl/examples/Complex_Multilines.vhdl
new file mode 100644
index 000000000..01d7fe129
--- /dev/null
+++ b/testsuite/pyunit/libghdl/examples/Complex_Multilines.vhdl
@@ -0,0 +1,138 @@
+/* :e1: comments before desIgn units (javadoc / .net documentation style)
+ * :e1: mIGht be multiline
+ */
+entity e1 is
+end entitY;
+
+/* :a1: comments before design units
+ * :a1: might be multiline
+ */
+architecture a1 of e1 is
+begin
+end architecture;
+
+/* :p1: comments before design units
+ * :p1: might be multiline
+ */
+package p1 is
+end package;
+
+/* package body should be supported too to keep parity, but I have currently no usecase for it. */
+
+/* :ctx1: comments before design units
+ * :ctx1: might be multiline
+ */
+context ctx1 is
+end context;
+
+/* :cfg1: comments before design units
+ * :cfg1: might be multiline
+ */
+configuration cfg1 of e1 is
+ for a1
+ end for;
+end configuration;
+
+
+library ieee;
+use ieee.std_logic_1164.all;
+
+entity e2 is
+ /* :e2: comments in design units (python doc-string style)
+ * :e2: might be multi line
+ */
+ generic (
+ /* :FREQUENCY: comment before a generic
+ * :FREQUENCY: might be multiline
+ */
+ constant FREQUENCY : positive;
+ constant BITS : positive; /* :BITS: comment after a generic are mostly single line,
+ * :BITS: but could be multi line too
+ */
+ /* in case comment is before and after */
+ constant DEBUG : boolean /* :DEBUG: the after has presidency */
+ );
+ port (
+ signal Clock : in std_logic /* :Clock: same as for generics */
+ );
+end entity;
+
+architecture a2 of e2 is
+ /* :a2: comments in design units (python doc-string style)
+ * :a2: might be multi line
+ */
+begin
+
+end architecture;
+
+/* As packages define public elements like constants, types and sub-programs, we are interested in such documentation too. */
+package p2 is
+ /* :p2: comments in design units (python doc-string style)
+ * :p2: might be multi line
+ */
+
+ /* :DEBUG: comment before */
+ constant DEBUG : boolean := TRUE;
+ constant SYNC_STAGES : positive := 3; /* :SYNC_STAGES: comment after */
+
+ /* :AType1: comment before */
+ type AType1 is array(natural range <>) of bit;
+ type AType2 is array(natural range <>) of bit; /* :AType2: comment after */
+
+ /* same applies to subtype, alias, attributes, ... */
+
+ /* :RType: comment before */
+ type RType is record
+ /* :RType: xor comment inside */
+
+ /* :elem1: per element comment before (note the comment "block" is separated by newlines) */
+ elem1 : integer;
+ elem2 : integer; /* :elem2: per element comment behind */
+ end record;
+
+ /* :log2: as functions are longer in definitions, it might be written before */
+ function log2(param : positive) return natural;
+
+ function log2(
+ /* :log2: otoh, we also want to document parameters too (similar to a record with comments) */
+
+ /* :param1: comment before */
+ param1 : integer;
+ param2 : boolean /* :param2: comment after */
+ ) return natural;
+
+ /* this applies to procedures as well. */
+end package;
+
+context ctx2 is
+ /* :ctx2: comments in design units (python doc-string style)
+ * :ctx2: might be multi line
+ */
+end context;
+
+configuration cfg2 of e2 is
+ /* :cfg2: comments in design units (python doc-string style)
+ * :cfg2: might be multi line
+ */
+ for a2
+ end for;
+end configuration;
+
+
+/* This should allow for any kind of documentation style and embedded documentation language.
+ * A real implementation might use similar rules are Python+docutils+Sphinx. Here we would e.g.
+ * document a function either before (or inside) a function declaration and use the
+ * :arg name: description
+ * syntax.
+ */
+
+
+/* :math: Package `math` provides math extensions not provided by the IEEE packages. */
+package math is
+ /* :log2: Computes the logarithm to base 2.
+ * :log2:
+ * :log2: :arg param: Input value
+ * :log2: :returns: Logarithm
+ */
+ function log2(param : positive) return natural;
+end package;