diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2010-03-03 19:21:50 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2010-03-03 19:21:50 +0200 |
commit | e4f4f0bed9befbde2117af6f128d9323be3f1638 (patch) | |
tree | 6c41709cdc5fa51b0354b68897a8cc1651b8eb9c /tests/dump | |
parent | ca2bc859cf0001848224ff00a92fcc5d60a16e7f (diff) |
Add union information to the semantics graph
New test: union.
Diffstat (limited to 'tests/dump')
-rw-r--r-- | tests/dump/driver.cxx | 60 |
1 files changed, 53 insertions, 7 deletions
diff --git a/tests/dump/driver.cxx b/tests/dump/driver.cxx index d9917d3..ccfe5aa 100644 --- a/tests/dump/driver.cxx +++ b/tests/dump/driver.cxx @@ -55,8 +55,23 @@ namespace << endl; wcout << ind << "list " << - (l.named () ? l.name () : String ("<anonymous>")) - << " " << ref_name (l.argumented ().type ()) << endl; + (l.named () ? l.name () : String ("<anonymous>")); + + SemanticGraph::Type& t (l.argumented ().type ()); + + if (t.named ()) + wcout << " " << ref_name (t) << endl; + else + { + wcout << endl + << ind << "{" << endl; + indent++; + + edge_traverser ().dispatch (l.argumented ()); + + indent--; + wcout << ind << "}" << endl; + } } }; @@ -70,7 +85,29 @@ namespace << endl; wcout << ind << "union " << - (u.named () ? u.name () : String ("<anonymous>")) << endl; + (u.named () ? u.name () : String ("<anonymous>")) << " "; + + for (Type::ArgumentedIterator i (u.argumented_begin ()); + i != u.argumented_end (); ++i) + { + SemanticGraph::Type& t (i->type ()); + + if (t.named ()) + wcout << ref_name (t) << " "; + else + { + wcout << endl + << ind << "{" << endl; + indent++; + + edge_traverser ().dispatch (*i); + + indent--; + wcout << ind << "}" << endl; + } + } + + wcout << endl; } }; @@ -508,14 +545,12 @@ namespace struct AnonymousNameTranslator: Transformations::AnonymousNameTranslator { virtual WideString - translate (WideString const& file, + translate (WideString const& /*file*/, WideString const& ns, WideString const& name, WideString const& xpath) { - wcout << "anonymous: " << file << " " << ns << " " << name << " " << - xpath << endl; - + wcout << "anonymous: " << ns << " " << name << " " << xpath << endl; return name; } }; @@ -647,6 +682,17 @@ main (Int argc, Char* argv[]) // // + Traversal::Argumented argumented; + list >> argumented; + union_ >> argumented; + + argumented >> list; + argumented >> union_; + argumented >> complex; + argumented >> enumeration; + + // + // Enumerator enumerator; enumeration_names >> enumerator; |