1entity issue341 is
2end entity;
3
4architecture test of issue341 is
5begin
6
7    process is
8        function func(b : bit) return boolean is
9        begin
10            return b = '1';
11        end function;
12
13        function func(b : character) return boolean is
14        begin
15            return b = '1';
16        end function;
17
18        alias func_bit is func [bit return boolean];
19        alias func_char is func [character return boolean];
20    begin
21        assert func_bit('1');           -- OK
22        assert func_char('1');          -- OK
23        assert func_bit('y');           -- Error
24        wait;
25    end process;
26
27    no_parameter : process
28        function func return boolean is
29        begin
30            return false;
31        end;
32
33        alias func_alias is func[return boolean];
34        variable value : boolean := func_alias;
35    begin
36        if func_alias then
37            assert false;
38        end if;
39
40        while func_alias loop
41            assert false;
42        end loop;
43        wait;
44    end process;
45
46    with_parameter : process
47        function func(value : boolean) return boolean is
48        begin
49            return value;
50        end;
51
52        alias func_alias is func[boolean return boolean];
53        variable value : boolean := func_alias(false);
54    begin
55        if func_alias(false) then
56            assert false;
57        end if;
58
59        while func_alias(false) loop
60            assert false;
61        end loop;
62        wait;
63    end process;
64
65end architecture;
66