Index: src/Tests/SynTree/Expected-SymTab/Array.tst
===================================================================
--- src/Tests/SynTree/Expected-SymTab/Array.tst	(revision 843054c23fcb725d2486e5e42e91b3741bc523b8)
+++ src/Tests/SynTree/Expected-SymTab/Array.tst	(revision 5f2f2d75adcd9f673ef8bda86f25d409347089be)
@@ -5,7 +5,4 @@
 Adding object m2
 Adding object m4
-Adding typedef T
---- Entering scope
---- Leaving scope containing
 Adding function fred
 --- Entering scope
@@ -16,8 +13,4 @@
 Adding object T
 --- Leaving scope containing
-T (__T__A0i) (2)
-a1 (__a1__A0i) (2)
-a2 (__a2__A0i) (2)
-a4 (__a4__A0i) (2)
 --- Leaving scope containing
 Adding function mary
@@ -30,8 +23,4 @@
 --- Leaving scope containing
 --- Leaving scope containing
-T (__T__Pi) (1)
-p1 (__p1__CPi) (1)
-p2 (__p2__Pi) (1)
-p3 (__p3__CPi) (1)
 Adding function tom
 --- Entering scope
@@ -48,6 +37,2 @@
 --- Leaving scope containing
 --- Leaving scope containing
-T (__T__Pi) (1)
-p1 (__p1__CPi) (1)
-p2 (__p2__Pi) (1)
-p3 (__p3__CPi) (1)
Index: src/Tests/SynTree/Expected-SymTab/Context.tst
===================================================================
--- src/Tests/SynTree/Expected-SymTab/Context.tst	(revision 843054c23fcb725d2486e5e42e91b3741bc523b8)
+++ src/Tests/SynTree/Expected-SymTab/Context.tst	(revision 5f2f2d75adcd9f673ef8bda86f25d409347089be)
@@ -1,52 +1,45 @@
-Adding context has_q
 --- Entering scope
-Adding type T
 --- Entering scope
 --- Leaving scope containing
+Adding type T
 Adding function q
 --- Entering scope
 --- Leaving scope containing
 --- Leaving scope containing
-q (__q__F_2tT_2tT_) (1)
 T
+Adding context has_q
 Adding function f
 --- Entering scope
-Adding type z
 --- Entering scope
 --- Leaving scope containing
-Adding function q
+Adding type z
+Adding function ?=?
 --- Entering scope
 --- Leaving scope containing
 --- Entering scope
-Adding context has_r
 --- Entering scope
+--- Entering scope
+--- Leaving scope containing
 Adding type T
 --- Entering scope
 --- Leaving scope containing
 Adding type U
---- Entering scope
---- Leaving scope containing
 Adding function r
 --- Entering scope
 --- Leaving scope containing
 --- Leaving scope containing
-r (__r__F_2tT_2tTPF_2tT_2tT2tU__) (3)
 T
 U
+Adding context has_r
+--- Entering scope
+--- Leaving scope containing
 Adding type x
 --- Entering scope
 --- Leaving scope containing
 Adding type y
---- Entering scope
 --- Leaving scope containing
-Adding function r
---- Entering scope
---- Leaving scope containing
---- Leaving scope containing
-r (__r__F_2tx_2txPF_2tx_2tx2ty__) (2)
 x
 y
 has_r
 --- Leaving scope containing
-q (__q__F_2tz_2tz_) (1)
 z
Index: src/Tests/SynTree/Expected-SymTab/Enum.tst
===================================================================
--- src/Tests/SynTree/Expected-SymTab/Enum.tst	(revision 843054c23fcb725d2486e5e42e91b3741bc523b8)
+++ src/Tests/SynTree/Expected-SymTab/Enum.tst	(revision 5f2f2d75adcd9f673ef8bda86f25d409347089be)
@@ -17,9 +17,4 @@
 Adding object fruit
 --- Leaving scope containing
-Apple (__Apple__C7eFruits) (2)
-Banana (__Banana__C7eFruits) (2)
-Mango (__Mango__C7eFruits) (2)
-Pear (__Pear__C7eFruits) (2)
-fruit (__fruit__7eFruits) (2)
 Fruits
 --- Leaving scope containing
Index: src/Tests/SynTree/Expected-SymTab/Forall.tst
===================================================================
--- src/Tests/SynTree/Expected-SymTab/Forall.tst	(revision 843054c23fcb725d2486e5e42e91b3741bc523b8)
+++ src/Tests/SynTree/Expected-SymTab/Forall.tst	(revision 5f2f2d75adcd9f673ef8bda86f25d409347089be)
@@ -1,14 +1,8 @@
-in default case, (shouldn't be here)
-in default case, (shouldn't be here)
-Adding typedef f
+Adding function swap
 --- Entering scope
-Adding type T
 --- Entering scope
 --- Leaving scope containing
---- Leaving scope containing
-T
-Adding function swap
---- Entering scope
 Adding type T
+Adding function ?=?
 --- Entering scope
 --- Leaving scope containing
@@ -18,14 +12,10 @@
 Adding object temp
 --- Leaving scope containing
-temp (__temp__2tT) (2)
 --- Leaving scope containing
-left (__left__2tT) (1)
-right (__right__2tT) (1)
 T
-Adding context sumable
 --- Entering scope
-Adding type T
 --- Entering scope
 --- Leaving scope containing
+Adding type T
 Adding object 0
 Adding function ?+?
@@ -39,12 +29,9 @@
 --- Leaving scope containing
 --- Leaving scope containing
-0 (__0__C2tT) (1)
-?++ (__?++__F_2tT_2tT_) (1)
-?+=? (__?+=?__F_2tT_2tT2tT_) (1)
-?+? (__?+?__F_2tT_2tT2tT_) (1)
 T
-Adding type T1
+Adding context sumable
 --- Entering scope
 --- Leaving scope containing
+Adding type T1
 Adding object 0
 Adding function ?+?
@@ -57,6 +44,27 @@
 --- Entering scope
 --- Leaving scope containing
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
+Adding type P1
+--- Entering scope
+--- Leaving scope containing
+Adding type P2
+--- Leaving scope containing
+P1
+P2
 Adding type T2
 --- Entering scope
+--- Leaving scope containing
+Adding type T3
+Adding fwd decl for struct __anonymous0
+--- Entering scope
+Adding object i
+Adding object j
+--- Leaving scope containing
+Adding struct __anonymous0
+--- Entering scope
+--- Entering scope
+--- Leaving scope containing
 Adding type P1
 --- Entering scope
@@ -68,67 +76,17 @@
 P1
 P2
-Adding type T3
+Adding type T2
+Adding object w1
+Adding object g2
 --- Entering scope
 --- Leaving scope containing
-Adding object 0
-Adding function ?+?
---- Entering scope
---- Leaving scope containing
-Adding function ?++
---- Entering scope
---- Leaving scope containing
-Adding function ?+=?
---- Entering scope
---- Leaving scope containing
-Adding struct __anonymous0
---- Entering scope
-Adding object i
-Adding object j
---- Leaving scope containing
-i (__i__3tP1) (1)
-j (__j__3tP2) (1)
-Adding type T2
---- Entering scope
-Adding type P1
---- Entering scope
---- Leaving scope containing
-Adding type P2
---- Entering scope
---- Leaving scope containing
---- Leaving scope containing
-P1
-P2
-Adding object 0
-Adding function ?+?
---- Entering scope
---- Leaving scope containing
-Adding function ?++
---- Entering scope
---- Leaving scope containing
-Adding function ?+=?
---- Entering scope
---- Leaving scope containing
-Adding object w1
-Adding typedef w2
---- Entering scope
---- Leaving scope containing
-Adding object g2
 Adding type w3
---- Entering scope
---- Leaving scope containing
 Adding object g3
 Adding function sum
 --- Entering scope
-Adding type T
 --- Entering scope
 --- Leaving scope containing
-Adding object 0
-Adding function ?+?
---- Entering scope
---- Leaving scope containing
-Adding function ?++
---- Entering scope
---- Leaving scope containing
-Adding function ?+=?
+Adding type T
+Adding function ?=?
 --- Entering scope
 --- Leaving scope containing
@@ -138,18 +96,15 @@
 Adding object total
 Adding object i
+--- Entering scope
 --- Leaving scope containing
-i (__i__i) (2)
-total (__total__2tT) (2)
 --- Leaving scope containing
-0 (__0__2tT) (1)
-?++ (__?++__F_2tT_2tT_) (1)
-?+=? (__?+=?__F_2tT_2tT2tT_) (1)
-?+? (__?+?__F_2tT_2tT2tT_) (1)
-a (__a__P2tT) (1)
-n (__n__i) (1)
+--- Leaving scope containing
 T
 Adding function twice
 --- Entering scope
+--- Entering scope
+--- Leaving scope containing
 Adding type T
+Adding function ?=?
 --- Entering scope
 --- Leaving scope containing
@@ -168,9 +123,4 @@
 --- Leaving scope containing
 --- Leaving scope containing
-0 (__0__C2tT) (1)
-?++ (__?++__F_2tT_2tT_) (1)
-?+=? (__?+=?__F_2tT_2tT2tT_) (1)
-?+? (__?+?__F_2tT_2tT2tT_) (1)
-t (__t__2tT) (1)
 T
 Adding function main
@@ -182,7 +132,3 @@
 Adding object f
 --- Leaving scope containing
-a (__a__A0i) (2)
-f (__f__f) (2)
-x (__x__i) (2)
-y (__y__i) (2)
 --- Leaving scope containing
Index: src/Tests/SynTree/Expected-SymTab/Scope.tst
===================================================================
--- src/Tests/SynTree/Expected-SymTab/Scope.tst	(revision 843054c23fcb725d2486e5e42e91b3741bc523b8)
+++ src/Tests/SynTree/Expected-SymTab/Scope.tst	(revision 5f2f2d75adcd9f673ef8bda86f25d409347089be)
@@ -1,28 +1,19 @@
-in default case, (shouldn't be here)
-in default case, (shouldn't be here)
-in default case, (shouldn't be here)
 Adding object x
-Adding typedef y
---- Entering scope
---- Leaving scope containing
-Adding typedef t
---- Entering scope
---- Leaving scope containing
 Adding object z
-Adding struct __anonymous0
+Adding fwd decl for struct __anonymous0
 --- Entering scope
 Adding object a
 Adding object b
 --- Leaving scope containing
-a (__a__i) (1)
-b (__b__d) (1)
-Adding type u
+Adding struct __anonymous0
+--- Entering scope
 --- Entering scope
 --- Leaving scope containing
+--- Leaving scope containing
+Adding type u
 Adding function f
 --- Entering scope
 Adding object y
 --- Leaving scope containing
-y (__y__i) (1)
 Adding object q
 Adding function w
@@ -31,7 +22,7 @@
 Adding object v
 --- Entering scope
-Adding type x
 --- Entering scope
 --- Leaving scope containing
+Adding type x
 Adding function t
 --- Entering scope
@@ -40,29 +31,23 @@
 Adding object z
 --- Leaving scope containing
-t (__t__F_2tx_2tu_) (2)
-u (__u__2tu) (2)
-z (__z__2tx) (2)
 x
 --- Leaving scope containing
-v (__v__2tu) (1)
-y (__y__2ty) (1)
 Adding object p
-Adding context has_u
 --- Entering scope
-Adding type z
 --- Entering scope
 --- Leaving scope containing
+Adding type z
 Adding function u
 --- Entering scope
 --- Leaving scope containing
 --- Leaving scope containing
-u (__u__F_2tz_2tz_) (1)
 z
+Adding context has_u
 Adding function q
 --- Entering scope
-Adding type t
 --- Entering scope
 --- Leaving scope containing
-Adding function u
+Adding type t
+Adding function ?=?
 --- Entering scope
 --- Leaving scope containing
@@ -71,8 +56,5 @@
 Adding object y
 --- Leaving scope containing
-y (__y__2tt) (2)
 --- Leaving scope containing
-the_t (__the_t__2tt) (1)
-u (__u__F_2tt_2tt_) (1)
 t
 Adding function f
@@ -81,44 +63,26 @@
 --- Entering scope
 Adding object y
-Adding typedef x
+--- Entering scope
+Adding object y
+--- Entering scope
+Adding object x
+Adding object z
+--- Leaving scope containing
+Adding object x
+--- Leaving scope containing
+Adding object q
+--- Leaving scope containing
+--- Leaving scope containing
+Adding function g
+--- Entering scope
+--- Entering scope
 --- Entering scope
 --- Leaving scope containing
+Adding object x
 --- Entering scope
 Adding object y
-Adding typedef z
---- Entering scope
---- Leaving scope containing
---- Entering scope
-Adding object x
-Adding typedef y
---- Entering scope
 --- Leaving scope containing
 Adding object z
 --- Leaving scope containing
-x (__x__2tz) (4)
-z (__z__2ty) (4)
-y
-Adding object x
---- Leaving scope containing
-x (__x__2tz) (3)
-y (__y__2tx) (3)
-z
-Adding object q
---- Leaving scope containing
-q (__q__2tx) (2)
-y (__y__i) (2)
-x
---- Leaving scope containing
-p (__p__2ty) (1)
-Adding function g
---- Entering scope
---- Entering scope
-Adding typedef x
---- Entering scope
---- Leaving scope containing
-Adding object z
---- Leaving scope containing
-z (__z__2tx) (2)
-x
 --- Leaving scope containing
 Adding function q
@@ -128,3 +92,2 @@
 --- Leaving scope containing
 --- Leaving scope containing
-i (__i__i) (1)
Index: src/Tests/SynTree/Expected-SymTab/ScopeErrors.tst
===================================================================
--- src/Tests/SynTree/Expected-SymTab/ScopeErrors.tst	(revision 843054c23fcb725d2486e5e42e91b3741bc523b8)
+++ src/Tests/SynTree/Expected-SymTab/ScopeErrors.tst	(revision 5f2f2d75adcd9f673ef8bda86f25d409347089be)
@@ -8,5 +8,4 @@
 Adding object thisIsNotAnError
 --- Leaving scope containing
-thisIsNotAnError (__thisIsNotAnError__i) (2)
 --- Leaving scope containing
 Adding function thisIsAlsoNotAnError
@@ -16,5 +15,4 @@
 --- Leaving scope containing
 --- Leaving scope containing
-x (__x__d) (1)
 Adding function thisIsStillNotAnError
 --- Entering scope
@@ -29,6 +27,5 @@
 --- Leaving scope containing
 Adding function butThisIsAnError
-Error: duplicate definition for thisIsAnError: a signed int 
-Error: duplicate function definition for butThisIsAnError: a function
+Error: duplicate function definition for butThisIsAnError: function
   with parameters
     double 
@@ -36,3 +33,4 @@
     double 
   with body 
+    CompoundStmt
 
Index: src/Tests/SynTree/Expected-SymTab/Tuple.tst
===================================================================
--- src/Tests/SynTree/Expected-SymTab/Tuple.tst	(revision 843054c23fcb725d2486e5e42e91b3741bc523b8)
+++ src/Tests/SynTree/Expected-SymTab/Tuple.tst	(revision 5f2f2d75adcd9f673ef8bda86f25d409347089be)
@@ -12,25 +12,24 @@
 Adding object d
 --- Leaving scope containing
-a (__a__i) (1)
-b (__b__i) (1)
-c (__c__Pi) (1)
-d (__d__Pc) (1)
-Adding struct inner
+Adding fwd decl for struct inner
 --- Entering scope
 Adding object f2
 Adding object f3
 --- Leaving scope containing
-f2 (__f2__i) (1)
-f3 (__f3__i) (1)
-Adding struct outer
+Adding struct inner
+Adding fwd decl for struct outer
 --- Entering scope
 Adding object f1
+--- Entering scope
+--- Leaving scope containing
 Adding object i
 Adding object f4
 --- Leaving scope containing
-f1 (__f1__i) (1)
-f4 (__f4__d) (1)
-i (__i__6sinner) (1)
+Adding struct outer
+--- Entering scope
+--- Leaving scope containing
 Adding object s
+--- Entering scope
+--- Leaving scope containing
 Adding object sp
 Adding object t1
@@ -42,11 +41,8 @@
 Adding object fmt
 --- Leaving scope containing
-fmt (__fmt__Pc) (1)
-rc (__rc__i) (1)
 Adding function printf
 --- Entering scope
 Adding object fmt
 --- Leaving scope containing
-fmt (__fmt__Pc) (1)
 Adding function f1
 --- Entering scope
@@ -57,7 +53,4 @@
 --- Leaving scope containing
 --- Leaving scope containing
-w (__w__i) (1)
-x (__x__s) (1)
-y (__y__Ui) (1)
 Adding function g1
 --- Entering scope
@@ -69,10 +62,5 @@
 Adding object z
 --- Leaving scope containing
-p (__p__s) (2)
-x (__x__s) (2)
-y (__y__Ui) (2)
-z (__z__Tii_) (2)
 --- Leaving scope containing
-r (__r__Ticli_) (1)
 Adding function main
 --- Entering scope
@@ -85,13 +73,7 @@
 Adding object c
 Adding object d
+--- Entering scope
+--- Leaving scope containing
 Adding object t
 --- Leaving scope containing
-a (__a__i) (2)
-b (__b__i) (2)
-c (__c__i) (2)
-d (__d__i) (2)
-t (__t__6souter) (2)
 --- Leaving scope containing
-argc (__argc__i) (1)
-argv (__argv__PPc) (1)
-rc (__rc__i) (1)
