summaryrefslogtreecommitdiffabout
authorShigio YAMAGUCHI <shigio@gnu.org>2011-08-17 21:07:21 (GMT)
committer Sergey Poznyakoff <gray@gnu.org.ua>2011-08-17 21:13:24 (GMT)
commit7813cbc86985ad0656167bb583a9c7e75ba3ad94 (patch) (unidiff)
treea913c7581bb72d4620b60ee7d2910a09b9c91577
parent7885357f42161f4b3481054d2328c8199635b5d8 (diff)
downloadcflow-7813cbc86985ad0656167bb583a9c7e75ba3ad94.tar.gz
cflow-7813cbc86985ad0656167bb583a9c7e75ba3ad94.tar.bz2
Fix the output of branch marks in tree mode.
* src/output.c (direct_tree) (inverted_tree): Use is_last instead of is_printable to decide what mark to use for the line. * tests/bartest.at: New testcase. * tests/Makefile.am: Add bartest.at * tests/testsuite.at: Include bartest.at
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--src/output.c6
-rw-r--r--tests/Makefile.am1
-rw-r--r--tests/bartest.at43
-rw-r--r--tests/testsuite.at1
4 files changed, 48 insertions, 3 deletions
diff --git a/src/output.c b/src/output.c
index 47c3c47..bef37fd 100644
--- a/src/output.c
+++ b/src/output.c
@@ -1,5 +1,5 @@
1/* This file is part of GNU cflow 1/* This file is part of GNU cflow
2 Copyright (C) 1997, 2005, 2007, 2009, 2010 Sergey Poznyakoff 2 Copyright (C) 1997, 2005, 2007, 2009, 2010, 2011 Sergey Poznyakoff
3 3
4 GNU cflow is free software; you can redistribute it and/or modify 4 GNU cflow is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by 5 it under the terms of the GNU General Public License as published by
@@ -313,7 +313,7 @@ direct_tree(int lev, int last, Symbol *sym)
313 return; 313 return;
314 set_active(sym); 314 set_active(sym);
315 for (p = linked_list_head(sym->callee); p; p = p->next) { 315 for (p = linked_list_head(sym->callee); p; p = p->next) {
316 set_level_mark(lev+1, is_printable(p->next)); 316 set_level_mark(lev+1, !is_last(p));
317 direct_tree(lev+1, is_last(p), (Symbol*)p->data); 317 direct_tree(lev+1, is_last(p), (Symbol*)p->data);
318 } 318 }
319 clear_active(sym); 319 clear_active(sym);
@@ -337,7 +337,7 @@ inverted_tree(int lev, int last, Symbol *sym)
337 return; 337 return;
338 set_active(sym); 338 set_active(sym);
339 for (p = linked_list_head(sym->caller); p; p = p->next) { 339 for (p = linked_list_head(sym->caller); p; p = p->next) {
340 set_level_mark(lev+1, is_printable(p->next)); 340 set_level_mark(lev+1, !is_last(p));
341 inverted_tree(lev+1, is_last(p), (Symbol*)p->data); 341 inverted_tree(lev+1, is_last(p), (Symbol*)p->data);
342 } 342 }
343 clear_active(sym); 343 clear_active(sym);
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 6ec2da8..2fe8734 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -43,6 +43,7 @@ $(srcdir)/package.m4: $(top_srcdir)/configure.ac
43TESTSUITE_AT = \ 43TESTSUITE_AT = \
44 attr.at\ 44 attr.at\
45 awrapper.at\ 45 awrapper.at\
46 bartest.at\
46 direct.at\ 47 direct.at\
47 fdecl.at\ 48 fdecl.at\
48 funcarg.at\ 49 funcarg.at\
diff --git a/tests/bartest.at b/tests/bartest.at
new file mode 100644
index 0000000..e25eac2
--- a/dev/null
+++ b/tests/bartest.at
@@ -0,0 +1,43 @@
1# This file is part of GNU cflow testsuite. -*- Autotest -*-
2# Copyright (C) 2011 Sergey Poznyakoff
3#
4# This program is free software; you can redistribute it and/or
5# modify it under the terms of the GNU General Public License as
6# published by the Free Software Foundation; either version 3, or (at
7# your option) any later version.
8#
9# This program is distributed in the hope that it will be useful, but
10# WITHOUT ANY WARRANTY; without even the implied warranty of
11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12# General Public License for more details.
13#
14# You should have received a copy of the GNU General Public License
15# along with this program. If not, see <http://www.gnu.org/licenses/>.
16
17# Cflow 1.3 sometimes failed to display '|' in tree output.
18# Testcase by Shigio YAMAGUCHI.
19
20AT_SETUP([vertical bar in tree output])
21AT_KEYWORDS([tree bartest])
22
23CFLOW_OPT([--tree --number],[
24CFLOW_CHECK(
25[int main()
26{
27 hello(NULL);
28 printf("Hello\n");
29}
30hello(const char *data)
31{
32 printf("Hello\n");
33}
34],
35[ 1 +-main() <int main () at prog:1>
36 2 +-hello() <hello (const char *data) at prog:6>
37 3 | \-printf()
38 4 \-printf()])
39])
40
41AT_CLEANUP
42
43
diff --git a/tests/testsuite.at b/tests/testsuite.at
index 8aac400..f15980c 100644
--- a/tests/testsuite.at
+++ b/tests/testsuite.at
@@ -67,5 +67,6 @@ m4_include([nfparg.at])
67m4_include([nfarg.at]) 67m4_include([nfarg.at])
68m4_include([hiding.at]) 68m4_include([hiding.at])
69m4_include([multi.at]) 69m4_include([multi.at])
70m4_include([bartest.at])
70 71
71# End of testsuite.at 72# End of testsuite.at

Return to:

Send suggestions and report system problems to the System administrator.