Commit 0921dea6 authored by Dimitri van Heesch's avatar Dimitri van Heesch

Merge pull request #181 from wtschueller/master

Tcl: collect XRefs also if INLINE_SOURCES = no
parents 4827ec0c 9d315a98
This diff is collapsed.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="">
<compounddef id="057__caller__graphs_8tcl" kind="file">
<compoundname>057_caller_graphs.tcl</compoundname>
<innernamespace refid="namespacebar">bar</innernamespace>
<innernamespace refid="namespacefoo">foo</innernamespace>
<innernamespace refid="namespace1_1_11_1_11">1::1::1</innernamespace>
<innernamespace refid="namespace1">1</innernamespace>
<innernamespace refid="namespace1_1_11">1::1</innernamespace>
<innernamespace refid="namespace2_1_12_1_12_1_12_1_12">2::2::2::2::2</innernamespace>
<innernamespace refid="namespace2">2</innernamespace>
<innernamespace refid="namespace2_1_12">2::2</innernamespace>
<innernamespace refid="namespace2_1_12_1_12">2::2::2</innernamespace>
<innernamespace refid="namespace2_1_12_1_12_1_12">2::2::2::2</innernamespace>
<sectiondef kind="func">
<memberdef kind="function" id="057__caller__graphs_8tcl_1a85c692c418fec91930cfc7b3e82857d7" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>baz</definition>
<argsstring>args</argsstring>
<name>baz</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="57" bodyend="59"/>
</memberdef>
<memberdef kind="function" id="057__caller__graphs_8tcl_1ae4e1c2bb3adfdfbb71f52de84a8285b0" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>bar</definition>
<argsstring>args</argsstring>
<name>bar</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="63" bodyend="65"/>
<referencedby refid="namespace1_1a9722420639306872cea2593b83028a45" compoundref="057__caller__graphs_8tcl" startline="83" endline="86">1::test3</referencedby>
</memberdef>
<memberdef kind="function" id="057__caller__graphs_8tcl_1a3f808a00e1b937978455d707851ab33a" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>next</definition>
<argsstring>args</argsstring>
<name>next</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="100" bodyend="103"/>
<references refid="namespace2_1a2839d9dea7f0d08f48958c3fc0cd00d3" compoundref="057__caller__graphs_8tcl" startline="104" endline="112">2::next</references>
</memberdef>
</sectiondef>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<location file="057_caller_graphs.tcl"/>
</compounddef>
</doxygen>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="">
<compounddef id="namespace1" kind="namespace">
<compoundname>1</compoundname>
<innernamespace refid="namespace1_1_11">1::1</innernamespace>
<sectiondef kind="func">
<memberdef kind="function" id="namespace1_1a5024a7bc323958c7230615f2fcaeaef8" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>1::baz</definition>
<argsstring>args</argsstring>
<name>baz</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="60" bodyend="62"/>
<referencedby refid="namespace1_1a4a8285288ee1994ac886e2039777339e" compoundref="057__caller__graphs_8tcl" startline="75" endline="78">test1</referencedby>
<referencedby refid="namespace1_1a11615154d3c207ed4106dd0bcb0639e8" compoundref="057__caller__graphs_8tcl" startline="91" endline="94">test5</referencedby>
</memberdef>
<memberdef kind="function" id="namespace1_1ad58c8f16ad5f12178c71ca988865bb58" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>1::bar</definition>
<argsstring>args</argsstring>
<name>bar</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="66" bodyend="68"/>
<referencedby refid="namespace1_1ae1e88bb7ddd332348d7e29ac4a211b00" compoundref="057__caller__graphs_8tcl" startline="79" endline="82">test2</referencedby>
</memberdef>
<memberdef kind="function" id="namespace1_1a4a8285288ee1994ac886e2039777339e" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>1::test1</definition>
<argsstring>args</argsstring>
<name>test1</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="75" bodyend="78"/>
<references refid="namespace1_1a5024a7bc323958c7230615f2fcaeaef8" compoundref="057__caller__graphs_8tcl" startline="60" endline="62">baz</references>
</memberdef>
<memberdef kind="function" id="namespace1_1ae1e88bb7ddd332348d7e29ac4a211b00" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>1::test2</definition>
<argsstring>args</argsstring>
<name>test2</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="79" bodyend="82"/>
<references refid="namespace1_1ad58c8f16ad5f12178c71ca988865bb58" compoundref="057__caller__graphs_8tcl" startline="66" endline="68">bar</references>
</memberdef>
<memberdef kind="function" id="namespace1_1a9722420639306872cea2593b83028a45" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>1::test3</definition>
<argsstring>args</argsstring>
<name>test3</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="83" bodyend="86"/>
<references refid="057__caller__graphs_8tcl_1ae4e1c2bb3adfdfbb71f52de84a8285b0" compoundref="057__caller__graphs_8tcl" startline="63" endline="65">bar</references>
</memberdef>
<memberdef kind="function" id="namespace1_1addc9b30656419de5e2651e27a013db29" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>1::test4</definition>
<argsstring>args</argsstring>
<name>test4</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="87" bodyend="90"/>
<references refid="namespace1_1_11_1acebecc4cb718010d00c3c150158b75ab" compoundref="057__caller__graphs_8tcl" startline="69" endline="71">1::1::bar</references>
</memberdef>
<memberdef kind="function" id="namespace1_1a11615154d3c207ed4106dd0bcb0639e8" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>1::test5</definition>
<argsstring>args</argsstring>
<name>test5</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="91" bodyend="94"/>
<references refid="namespace1_1a5024a7bc323958c7230615f2fcaeaef8" compoundref="057__caller__graphs_8tcl" startline="60" endline="62">baz</references>
</memberdef>
</sectiondef>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<location file="[generated]" line="1" column="1"/>
</compounddef>
</doxygen>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="">
<compounddef id="namespace1_1_11" kind="namespace">
<compoundname>1::1</compoundname>
<innernamespace refid="namespace1_1_11_1_11">1::1::1</innernamespace>
<sectiondef kind="func">
<memberdef kind="function" id="namespace1_1_11_1acebecc4cb718010d00c3c150158b75ab" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>1::1::bar</definition>
<argsstring>args</argsstring>
<name>bar</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="69" bodyend="71"/>
<referencedby refid="namespace1_1addc9b30656419de5e2651e27a013db29" compoundref="057__caller__graphs_8tcl" startline="87" endline="90">1::test4</referencedby>
</memberdef>
</sectiondef>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<location file="[generated]" line="1" column="1"/>
</compounddef>
</doxygen>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="">
<compounddef id="namespace1_1_11_1_11" kind="namespace">
<compoundname>1::1::1</compoundname>
<sectiondef kind="func">
<memberdef kind="function" id="namespace1_1_11_1_11_1aa604df053f7ebe36205d1a5675459b96" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>1::1::1::bar</definition>
<argsstring>args</argsstring>
<name>bar</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="72" bodyend="74"/>
</memberdef>
</sectiondef>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<location file="057_caller_graphs.tcl" line="56" column="1"/>
</compounddef>
</doxygen>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="">
<compounddef id="namespace2" kind="namespace">
<compoundname>2</compoundname>
<innernamespace refid="namespace2_1_12">2::2</innernamespace>
<sectiondef kind="func">
<memberdef kind="function" id="namespace2_1a2839d9dea7f0d08f48958c3fc0cd00d3" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>2::next</definition>
<argsstring>args</argsstring>
<name>next</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="104" bodyend="112"/>
<references refid="namespace2_1_12_1aceefa876cf364f44da1f523d3f7b0649" compoundref="057__caller__graphs_8tcl" startline="113" endline="116">2::2::next</references>
<referencedby refid="057__caller__graphs_8tcl_1a3f808a00e1b937978455d707851ab33a" compoundref="057__caller__graphs_8tcl" startline="100" endline="103">next</referencedby>
<referencedby refid="namespace2_1_12_1_12_1_12_1_12_1ac07f64c62783fd8b44317389b4a711f8" compoundref="057__caller__graphs_8tcl" startline="125" endline="128">2::2::2::2::2::next</referencedby>
</memberdef>
</sectiondef>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<location file="[generated]" line="1" column="1"/>
</compounddef>
</doxygen>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="">
<compounddef id="namespace2_1_12" kind="namespace">
<compoundname>2::2</compoundname>
<innernamespace refid="namespace2_1_12_1_12">2::2::2</innernamespace>
<sectiondef kind="func">
<memberdef kind="function" id="namespace2_1_12_1aceefa876cf364f44da1f523d3f7b0649" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>2::2::next</definition>
<argsstring>args</argsstring>
<name>next</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="113" bodyend="116"/>
<references refid="namespace2_1_12_1_12_1a85524e2015e377d433cd8384335c11d6" compoundref="057__caller__graphs_8tcl" startline="117" endline="120">2::2::2::next</references>
<referencedby refid="namespace2_1a2839d9dea7f0d08f48958c3fc0cd00d3" compoundref="057__caller__graphs_8tcl" startline="104" endline="112">2::next</referencedby>
</memberdef>
</sectiondef>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<location file="[generated]" line="1" column="1"/>
</compounddef>
</doxygen>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="">
<compounddef id="namespace2_1_12_1_12" kind="namespace">
<compoundname>2::2::2</compoundname>
<innernamespace refid="namespace2_1_12_1_12_1_12">2::2::2::2</innernamespace>
<sectiondef kind="func">
<memberdef kind="function" id="namespace2_1_12_1_12_1a85524e2015e377d433cd8384335c11d6" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>2::2::2::next</definition>
<argsstring>args</argsstring>
<name>next</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="117" bodyend="120"/>
<references refid="namespace2_1_12_1_12_1_12_1a3ea6e2ce66f4a9c30009852e4c7da2fe" compoundref="057__caller__graphs_8tcl" startline="121" endline="124">2::2::2::2::next</references>
<referencedby refid="namespace2_1_12_1aceefa876cf364f44da1f523d3f7b0649" compoundref="057__caller__graphs_8tcl" startline="113" endline="116">2::2::next</referencedby>
</memberdef>
</sectiondef>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<location file="[generated]" line="1" column="1"/>
</compounddef>
</doxygen>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="">
<compounddef id="namespace2_1_12_1_12_1_12" kind="namespace">
<compoundname>2::2::2::2</compoundname>
<innernamespace refid="namespace2_1_12_1_12_1_12_1_12">2::2::2::2::2</innernamespace>
<sectiondef kind="func">
<memberdef kind="function" id="namespace2_1_12_1_12_1_12_1a3ea6e2ce66f4a9c30009852e4c7da2fe" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>2::2::2::2::next</definition>
<argsstring>args</argsstring>
<name>next</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="121" bodyend="124"/>
<references refid="namespace2_1_12_1_12_1_12_1_12_1ac07f64c62783fd8b44317389b4a711f8" compoundref="057__caller__graphs_8tcl" startline="125" endline="128">2::2::2::2::2::next</references>
<referencedby refid="namespace2_1_12_1_12_1a85524e2015e377d433cd8384335c11d6" compoundref="057__caller__graphs_8tcl" startline="117" endline="120">2::2::2::next</referencedby>
</memberdef>
</sectiondef>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<location file="[generated]" line="1" column="1"/>
</compounddef>
</doxygen>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="">
<compounddef id="namespace2_1_12_1_12_1_12_1_12" kind="namespace">
<compoundname>2::2::2::2::2</compoundname>
<sectiondef kind="func">
<memberdef kind="function" id="namespace2_1_12_1_12_1_12_1_12_1ac07f64c62783fd8b44317389b4a711f8" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>2::2::2::2::2::next</definition>
<argsstring>args</argsstring>
<name>next</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="125" bodyend="128"/>
<references refid="namespace2_1a2839d9dea7f0d08f48958c3fc0cd00d3" compoundref="057__caller__graphs_8tcl" startline="104" endline="112">2::next</references>
<referencedby refid="namespace2_1_12_1_12_1_12_1a3ea6e2ce66f4a9c30009852e4c7da2fe" compoundref="057__caller__graphs_8tcl" startline="121" endline="124">2::2::2::2::next</referencedby>
</memberdef>
</sectiondef>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<location file="057_caller_graphs.tcl" line="99" column="1"/>
</compounddef>
</doxygen>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="">
<compounddef id="namespacebar" kind="namespace">
<compoundname>bar</compoundname>
<sectiondef kind="func">
<memberdef kind="function" id="namespacebar_1aa1678a9adb588c0b91b118de7cc38ddb" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>bar::slave</definition>
<argsstring/>
<name>slave</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="27" bodyend="33"/>
<references refid="namespacebar_1a3426cd3a2eebcffa0dc333bcf5e2fe5e" compoundref="057__caller__graphs_8tcl" startline="34" endline="37">baz</references>
<referencedby refid="namespacefoo_1a265acdcaea6da32c3bbd9afb5d0e32a4" compoundref="057__caller__graphs_8tcl" startline="42" endline="46">foo::master</referencedby>
</memberdef>
<memberdef kind="function" id="namespacebar_1a3426cd3a2eebcffa0dc333bcf5e2fe5e" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>bar::baz</definition>
<argsstring/>
<name>baz</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="34" bodyend="37"/>
<references refid="namespacebar_1a88879545dee287d377e638b87cdf6dd7" compoundref="057__caller__graphs_8tcl" startline="38" endline="40">bazbaz</references>
<referencedby refid="namespacebar_1aa1678a9adb588c0b91b118de7cc38ddb" compoundref="057__caller__graphs_8tcl" startline="27" endline="33">slave</referencedby>
</memberdef>
<memberdef kind="function" id="namespacebar_1a88879545dee287d377e638b87cdf6dd7" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>bar::bazbaz</definition>
<argsstring/>
<name>bazbaz</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="38" bodyend="40"/>
<referencedby refid="namespacebar_1a3426cd3a2eebcffa0dc333bcf5e2fe5e" compoundref="057__caller__graphs_8tcl" startline="34" endline="37">baz</referencedby>
</memberdef>
</sectiondef>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<location file="057_caller_graphs.tcl" line="26" column="1"/>
</compounddef>
</doxygen>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="">
<compounddef id="namespacefoo" kind="namespace">
<compoundname>foo</compoundname>
<sectiondef kind="func">
<memberdef kind="function" id="namespacefoo_1a265acdcaea6da32c3bbd9afb5d0e32a4" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type/>
<definition>foo::master</definition>
<argsstring/>
<name>master</name>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="057_caller_graphs.tcl" bodystart="42" bodyend="46"/>
<references refid="namespacebar_1aa1678a9adb588c0b91b118de7cc38ddb" compoundref="057__caller__graphs_8tcl" startline="27" endline="33">bar::slave</references>
</memberdef>
</sectiondef>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<location file="057_caller_graphs.tcl" line="41" column="1"/>
</compounddef>
</doxygen>
#// objective: test for completeness and correctness of references/referencedby relations
#// check: 057__caller__graphs_8tcl.xml
#// check: namespacebar.xml
#// check: namespacefoo.xml
#// check: namespace1.xml
#// check: namespace1_1_11.xml
#// check: namespace1_1_11_1_11.xml
#// check: namespace2.xml
#// check: namespace2_1_12.xml
#// check: namespace2_1_12_1_12.xml
#// check: namespace2_1_12_1_12_1_12.xml
#// check: namespace2_1_12_1_12_1_12_1_12.xml
#// config: EXTRACT_ALL = yes
#// config: INLINE_SOURCES = no
#// config: REFERENCED_BY_RELATION = yes
#// config: REFERENCES_RELATION = yes
# config: HAVE_DOT = yes
# config: CALLER_GRAPH = yes
# config: CALL_GRAPH = yes
# config: GENERATE_HTML = yes
# This is a stripped down example from my code.
# Doxygen 1.8.7 generates the correct relations (xml)
# but caller graphs will be incomplete.
# It does not generate any relations at all if INLINE_SOURCES = no.
namespace eval bar {}
proc bar::slave { } {
array set info [info frame 0]; puts -nonewline ->$info(proc)
if {1} then {
bar::baz
}
return
}
proc bar::baz {} {
array set info [info frame 0]; puts -nonewline ->$info(proc)
bar::bazbaz
}
proc bar::bazbaz {} {
array set info [info frame 0]; puts -nonewline ->$info(proc)
}
namespace eval foo {}
proc foo::master { } {
array set info [info frame 0]; puts -nonewline $info(proc)
bar::slave
return
}
#
# now we check tcl's rules: from the help
# NAME RESOLUTION
#... Command names are also always resolved by looking in the current
#namespace first. If not found there, they are searched for in every namespace on
#the current namespace's command path (which is empty by default). If not found
#there, command names are looked up in the global namespace (or, failing that,
#are processed by the unknown command.) ...
#
namespace eval ::1::1::1 {}
proc ::baz args {
array set info [info frame 0]; puts -nonewline ->$info(proc)
}
proc ::1::baz args {
array set info [info frame 0]; puts -nonewline ->$info(proc)
}
proc ::bar args {
array set info [info frame 0]; puts -nonewline ->$info(proc)
}
proc ::1::bar args {
array set info [info frame 0]; puts -nonewline ->$info(proc)
}
proc ::1::1::bar args {
array set info [info frame 0]; puts -nonewline ->$info(proc)
}
proc ::1::1::1::bar args {
array set info [info frame 0]; puts -nonewline ->$info(proc)
}
proc ::1::test1 args {
array set info [info frame 0]; puts -nonewline $info(proc)
baz
}
proc ::1::test2 args {
array set info [info frame 0]; puts -nonewline $info(proc)
bar
}
proc ::1::test3 args {
array set info [info frame 0]; puts -nonewline $info(proc)
::bar
}
proc ::1::test4 args {
array set info [info frame 0]; puts -nonewline $info(proc)
1::bar
}
proc ::1::test5 args {
array set info [info frame 0]; puts -nonewline $info(proc)
1::baz
}
#
# funny example, do you see the infinite loop?
# we stop before the interpreter crashes
set ::countdown 10
namespace eval ::2::2::2::2::2 {}
proc ::next args {
array set info [info frame 0]; puts $info(proc)
2::next
}
proc ::2::next args {
array set info [info frame 0]; puts $info(proc)
incr ::countdown -1
if {$::countdown>0} then {
2::next
} else {
puts "stop after 10 rounds."
}
}
proc ::2::2::next args {
array set info [info frame 0]; puts $info(proc)
2::next
}
proc ::2::2::2::next args {
array set info [info frame 0]; puts $info(proc)
2::next
}
proc ::2::2::2::2::next args {
array set info [info frame 0]; puts $info(proc)
2::next
}
proc ::2::2::2::2::2::next args {
array set info [info frame 0]; puts $info(proc)
2::next
}
# now, check with tcl what is called
foo::master
puts ""
foreach proc [lsort [info procs ::1::test?]] {
$proc
puts ""
}
::next
exit
This diff is collapsed.
#// objective: tests processing of commands inside brackets [], only references/referencedby relations are relevant
#// check: 058__bracket__recursion_8tcl.xml
#// config: REFERENCED_BY_RELATION = yes
#// config: REFERENCES_RELATION = yes
#// config: EXTRACT_ALL = yes
#// config: INLINE_SOURCES = yes
##
# \brief should be reference by every proc below
proc Invoked args {
puts "Procedure \"Invoked\" is invoked indeed. Ok."
return $args
}
##
# \brief must not be reference by every proc below
proc NotInvoked args {
puts "Procedure \"NotInvoked\" is invoked. Not Ok!"
return $args
}
#
# check if call references work at all
proc a args {
Invoked NotInvoked
return
}
#
# check brackets with various quoting, bracing
proc b args {
set r [Invoked]
set r [list \[NotInvoked \]]
return
}
proc c args {
set r \{[Invoked]\}
set r {[NotInvoked]}
return
}
proc d args {
set r "[Invoked]"
set r "\[NotInvoked \]"
return
}
proc e args {
set r [list \[NotInvoked [Invoked]\]]
return
}
proc f args {
set r [list [Invoked \[NotInvoked \]]]
return
}
proc g args {
set r "{[Invoked]}"
set r "{\[NotInvoked \]}"
return
}
proc h args {
[Invoked set] r {[NotInvoked]}
return
}
# check brackets in tcl commands containing script arguments
#
# example generated according to
# https://groups.google.com/d/msg/comp.lang.tcl/G5-mc3GiIyY/e-AVD9t7xMkJ
proc i args {
foreach item [Invoked] {
return
}
}
proc j args {
foreach [Invoked item] [list one two three] {
}
return
}
proc k args {
while {[Invoked 0]} {
}
}
proc l args {
for {} {[Invoked 0]} {} {
}
}
proc m args {
if {[Invoked 1]} {
}
}
proc n args {
if [Invoked 1] {
}
}
proc o args {
if {0} {
} elseif {[Invoked 0]} {
}
}
# these are really nasty examples
# they shows, that the condition argument may not be parsed as a script
set NotInvoked \$NotInvoked
proc $NotInvoked args {
puts "Procedure \"\$NotInvoked\" is invoked. Not Ok!"
return $args
}
proc p args {
set NotInvoked \$NotInvoked
if {$NotInvoked eq [Invoked 1]} {
}
return
}
proc q args {
set NotInvoked \$NotInvoked
if {0} {
} elseif {$NotInvoked eq [Invoked 1]} {
}
return
}
proc r args {
set NotInvoked \$NotInvoked
while {$NotInvoked eq [Invoked 1]} {
}
return
}
proc s args {
set NotInvoked \$NotInvoked
for {} {$NotInvoked eq [Invoked 1]} {} {
}
return
}
# dangling open brackets should not confuse the scanner
proc t args {
set foo ]]]][Invoked]
return
}
#
# call all single letter procs
# let tcl check what is called and what is not called
foreach p [info procs ?] {
puts "Check procedure \"$p\""
$p
}
exit
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment