diff options
author | Shigio YAMAGUCHI <shigio@gnu.org> | 2011-08-18 00:07:21 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2011-08-18 00:13:24 +0300 |
commit | 7813cbc86985ad0656167bb583a9c7e75ba3ad94 (patch) | |
tree | a913c7581bb72d4620b60ee7d2910a09b9c91577 | |
parent | 7885357f42161f4b3481054d2328c8199635b5d8 (diff) | |
download | cflow-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
-rw-r--r-- | src/output.c | 6 | ||||
-rw-r--r-- | tests/Makefile.am | 1 | ||||
-rw-r--r-- | tests/bartest.at | 43 | ||||
-rw-r--r-- | tests/testsuite.at | 1 |
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,8 +1,8 @@ /* This file is part of GNU cflow - Copyright (C) 1997, 2005, 2007, 2009, 2010 Sergey Poznyakoff + Copyright (C) 1997, 2005, 2007, 2009, 2010, 2011 Sergey Poznyakoff GNU cflow is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. @@ -310,13 +310,13 @@ direct_tree(int lev, int last, Symbol *sym) rc = print_symbol(1, lev, last, sym); newline(); if (rc || sym->active) return; set_active(sym); for (p = linked_list_head(sym->callee); p; p = p->next) { - set_level_mark(lev+1, is_printable(p->next)); + set_level_mark(lev+1, !is_last(p)); direct_tree(lev+1, is_last(p), (Symbol*)p->data); } clear_active(sym); } /* Produce reverse call tree output @@ -334,13 +334,13 @@ inverted_tree(int lev, int last, Symbol *sym) rc = print_symbol(0, lev, last, sym); newline(); if (rc || sym->active) return; set_active(sym); for (p = linked_list_head(sym->caller); p; p = p->next) { - set_level_mark(lev+1, is_printable(p->next)); + set_level_mark(lev+1, !is_last(p)); inverted_tree(lev+1, is_last(p), (Symbol*)p->data); } clear_active(sym); } static void diff --git a/tests/Makefile.am b/tests/Makefile.am index 6ec2da8..2fe8734 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -40,12 +40,13 @@ $(srcdir)/package.m4: $(top_srcdir)/configure.ac ## Test suite. ## ## ------------ ## TESTSUITE_AT = \ attr.at\ awrapper.at\ + bartest.at\ direct.at\ fdecl.at\ funcarg.at\ hiding.at\ include.at\ knr.at\ diff --git a/tests/bartest.at b/tests/bartest.at new file mode 100644 index 0000000..e25eac2 --- /dev/null +++ b/tests/bartest.at @@ -0,0 +1,43 @@ +# This file is part of GNU cflow testsuite. -*- Autotest -*- +# Copyright (C) 2011 Sergey Poznyakoff +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# Cflow 1.3 sometimes failed to display '|' in tree output. +# Testcase by Shigio YAMAGUCHI. + +AT_SETUP([vertical bar in tree output]) +AT_KEYWORDS([tree bartest]) + +CFLOW_OPT([--tree --number],[ +CFLOW_CHECK( +[int main() +{ + hello(NULL); + printf("Hello\n"); +} +hello(const char *data) +{ + printf("Hello\n"); +} +], +[ 1 +-main() <int main () at prog:1> + 2 +-hello() <hello (const char *data) at prog:6> + 3 | \-printf() + 4 \-printf()]) +]) + +AT_CLEANUP + + diff --git a/tests/testsuite.at b/tests/testsuite.at index 8aac400..f15980c 100644 --- a/tests/testsuite.at +++ b/tests/testsuite.at @@ -64,8 +64,9 @@ m4_include([ssblock.at]) m4_include([funcarg.at]) m4_include([parm.at]) m4_include([nfparg.at]) m4_include([nfarg.at]) m4_include([hiding.at]) m4_include([multi.at]) +m4_include([bartest.at]) # End of testsuite.at |