Index: src/AST/Print.cpp
===================================================================
--- src/AST/Print.cpp	(revision b37515b1c02ee9d9ba7d60b5f6bee246234cde78)
+++ src/AST/Print.cpp	(revision cd6a6ffee16b2e0915b5be3211ed86e60fd011e9)
@@ -205,5 +205,8 @@
 
 	void preprint( const ast::NamedTypeDecl * node ) {
-		if ( ! node->name.empty() ) os << node->name << ": ";
+		if ( ! node->name.empty() ) {
+			if( deterministic_output && isUnboundType(node->name) ) os << "[unbound]:";
+			else os << node->name << ": ";
+		}
 
 		if ( ! short_mode && node->linkage != Linkage::Cforall ) {
@@ -240,11 +243,9 @@
 
 		if ( node->result ) {
-			if (!deterministic_output) {
-				os << endl << indent << "... with resolved type:" << endl;
-				++indent;
-				os << indent;
-				node->result->accept( *this );
-				--indent;
-			}
+			os << endl << indent << "... with resolved type:" << endl;
+			++indent;
+			os << indent;
+			node->result->accept( *this );
+			--indent;
 		}
 
@@ -1382,5 +1383,6 @@
 	virtual const ast::Type * visit( const ast::TypeInstType * node ) override final {
 		preprint( node );
-		os << "instance of type " << node->name
+		const auto & _name = deterministic_output && isUnboundType(node) ? "[unbound]" : node->name;
+		os << "instance of type " << _name
 		   << " (" << (node->kind == ast::TypeDecl::Ftype ? "" : "not ") << "function type)";
 		print( node->params );
Index: src/AST/Type.cpp
===================================================================
--- src/AST/Type.cpp	(revision b37515b1c02ee9d9ba7d60b5f6bee246234cde78)
+++ src/AST/Type.cpp	(revision cd6a6ffee16b2e0915b5be3211ed86e60fd011e9)
@@ -133,5 +133,5 @@
 
 BaseInstType::BaseInstType( const BaseInstType & o )
-: ParameterizedType( o.qualifiers, copy( o.attributes ) ), params(), name( o.name ), 
+: ParameterizedType( o.qualifiers, copy( o.attributes ) ), params(), name( o.name ),
   hoistType( o.hoistType ) {
 	Pass< ForallSubstitutor > sub;
@@ -222,7 +222,16 @@
 		// TODO: once TypeInstType representation is updated, it should properly check
 		// if the context id is filled. this is a temporary hack for now
-		if (std::count(typeInst->name.begin(), typeInst->name.end(), '_') >= 3) {
-			return true;
-		}
+		return isUnboundType(typeInst->name);
+	}
+	return false;
+}
+
+bool isUnboundType(const std::string & tname) {
+	// xxx - look for a type name produced by renameTyVars.
+
+	// TODO: once TypeInstType representation is updated, it should properly check
+	// if the context id is filled. this is a temporary hack for now
+	if (std::count(tname.begin(), tname.end(), '_') >= 3) {
+		return true;
 	}
 	return false;
Index: src/AST/Type.hpp
===================================================================
--- src/AST/Type.hpp	(revision b37515b1c02ee9d9ba7d60b5f6bee246234cde78)
+++ src/AST/Type.hpp	(revision cd6a6ffee16b2e0915b5be3211ed86e60fd011e9)
@@ -536,4 +536,5 @@
 
 bool isUnboundType(const Type * type);
+bool isUnboundType(const std::string & tname);
 
 }
Index: src/AST/TypeEnvironment.cpp
===================================================================
--- src/AST/TypeEnvironment.cpp	(revision b37515b1c02ee9d9ba7d60b5f6bee246234cde78)
+++ src/AST/TypeEnvironment.cpp	(revision cd6a6ffee16b2e0915b5be3211ed86e60fd011e9)
@@ -34,4 +34,5 @@
 #include "ResolvExpr/Unify.h"      // for unifyInexact
 #include "Tuples/Tuples.h"         // for isTtype
+#include "CompilationState.h"
 
 using ResolvExpr::WidenMode;
@@ -56,6 +57,12 @@
 
 void print( std::ostream & out, const EqvClass & clz, Indenter indent ) {
-	out << "( ";
-	std::copy( clz.vars.begin(), clz.vars.end(), std::ostream_iterator< std::string >( out, " " ) );
+	out << "(";
+	bool first = true;
+	for(const auto & var : clz.vars) {
+		if(first) first = false;
+		else out << " ";
+		if( deterministic_output && isUnboundType(var) ) out << "[unbound]";
+		else out << var;
+	}
 	out << ")";
 
Index: src/ResolvExpr/TypeEnvironment.cc
===================================================================
--- src/ResolvExpr/TypeEnvironment.cc	(revision b37515b1c02ee9d9ba7d60b5f6bee246234cde78)
+++ src/ResolvExpr/TypeEnvironment.cc	(revision cd6a6ffee16b2e0915b5be3211ed86e60fd011e9)
@@ -107,9 +107,13 @@
 
 	void EqvClass::print( std::ostream &os, Indenter indent ) const {
-		if( !deterministic_output ) {
-			os << "( ";
-			std::copy( vars.begin(), vars.end(), std::ostream_iterator< std::string >( os, " " ) );
-			os << ")";
-		}
+		os << "(";
+		bool first = true;
+		for(const auto & var : vars) {
+			if(first) first = false;
+			else os << " ";
+			if( deterministic_output && isUnboundType(var) ) os << "[unbound]";
+			else os << var;
+		}
+		os << ")";
 		if ( type ) {
 			os << " -> ";
Index: src/SynTree/Expression.cc
===================================================================
--- src/SynTree/Expression.cc	(revision b37515b1c02ee9d9ba7d60b5f6bee246234cde78)
+++ src/SynTree/Expression.cc	(revision cd6a6ffee16b2e0915b5be3211ed86e60fd011e9)
@@ -72,9 +72,7 @@
 
 	if ( result ) {
-		if (!deterministic_output) {
-			os << std::endl << indent << "with resolved type:" << std::endl;
-			os << (indent+1);
-			result->print( os, indent+1 );
-		}
+		os << std::endl << indent << "with resolved type:" << std::endl;
+		os << (indent+1);
+		result->print( os, indent+1 );
 	}
 
Index: src/SynTree/NamedTypeDecl.cc
===================================================================
--- src/SynTree/NamedTypeDecl.cc	(revision b37515b1c02ee9d9ba7d60b5f6bee246234cde78)
+++ src/SynTree/NamedTypeDecl.cc	(revision cd6a6ffee16b2e0915b5be3211ed86e60fd011e9)
@@ -22,4 +22,5 @@
 #include "LinkageSpec.h"         // for Spec, Cforall, linkageName
 #include "Type.h"                // for Type, Type::StorageClasses
+#include "CompilationState.h"
 
 NamedTypeDecl::NamedTypeDecl( const std::string &name, Type::StorageClasses scs, Type *base )
@@ -41,5 +42,8 @@
 	using namespace std;
 
-	if ( name != "" ) os << name << ": ";
+	if ( ! name.empty() ) {
+		if( deterministic_output && isUnboundType(name) ) os << "[unbound]:";
+		else os << name << ": ";
+	}
 
 	if ( linkage != LinkageSpec::Cforall ) {
Index: src/SynTree/ReferenceToType.cc
===================================================================
--- src/SynTree/ReferenceToType.cc	(revision b37515b1c02ee9d9ba7d60b5f6bee246234cde78)
+++ src/SynTree/ReferenceToType.cc	(revision cd6a6ffee16b2e0915b5be3211ed86e60fd011e9)
@@ -24,4 +24,5 @@
 #include "Type.h"             // for TypeInstType, StructInstType, UnionInstType
 #include "TypeSubstitution.h" // for TypeSubstitution
+#include "CompilationState.h"
 
 class Attribute;
@@ -205,5 +206,9 @@
 
 	Type::print( os, indent );
-	os << "instance of " << typeString() << " " << get_name() << " (" << ( isFtype ? "" : "not" ) << " function type)";
+	os << "instance of " << typeString() << " ";
+	const auto & name_ = get_name();
+	if( deterministic_output && isUnboundType(name) ) os << "[unbound]";
+	else os << name;
+	os << " (" << ( isFtype ? "" : "not" ) << " function type)";
 	if ( ! parameters.empty() ) {
 		os << endl << indent << "... with parameters" << endl;
Index: src/SynTree/Type.cc
===================================================================
--- src/SynTree/Type.cc	(revision b37515b1c02ee9d9ba7d60b5f6bee246234cde78)
+++ src/SynTree/Type.cc	(revision cd6a6ffee16b2e0915b5be3211ed86e60fd011e9)
@@ -156,4 +156,26 @@
 const Type::Qualifiers noQualifiers;
 
+bool isUnboundType(const Type * type) {
+	if (auto typeInst = dynamic_cast<const TypeInstType *>(type)) {
+		// xxx - look for a type name produced by renameTyVars.
+
+		// TODO: once TypeInstType representation is updated, it should properly check
+		// if the context id is filled. this is a temporary hack for now
+		return isUnboundType(typeInst->name);
+	}
+	return false;
+}
+
+bool isUnboundType(const std::string & tname) {
+	// xxx - look for a type name produced by renameTyVars.
+
+	// TODO: once TypeInstType representation is updated, it should properly check
+	// if the context id is filled. this is a temporary hack for now
+	if (std::count(tname.begin(), tname.end(), '_') >= 3) {
+		return true;
+	}
+	return false;
+}
+
 // Local Variables: //
 // tab-width: 4 //
Index: src/SynTree/Type.h
===================================================================
--- src/SynTree/Type.h	(revision b37515b1c02ee9d9ba7d60b5f6bee246234cde78)
+++ src/SynTree/Type.h	(revision cd6a6ffee16b2e0915b5be3211ed86e60fd011e9)
@@ -733,4 +733,8 @@
 };
 
+
+bool isUnboundType(const Type * type);
+bool isUnboundType(const std::string & tname);
+
 // Local Variables: //
 // tab-width: 4 //
Index: tests/.expect/alloc-ERROR.nast.txt
===================================================================
--- tests/.expect/alloc-ERROR.nast.txt	(revision b37515b1c02ee9d9ba7d60b5f6bee246234cde78)
+++ tests/.expect/alloc-ERROR.nast.txt	(revision cd6a6ffee16b2e0915b5be3211ed86e60fd011e9)
@@ -16,4 +16,6 @@
           Name: stp
 
+      ... with resolved type:
+        unsigned long int
 
 
@@ -28,4 +30,6 @@
     Name: stp
     Constant Expression (10: signed int)
+    ... with resolved type:
+      signed int
 
 
Index: tests/.expect/alloc-ERROR.oast.txt
===================================================================
--- tests/.expect/alloc-ERROR.oast.txt	(revision b37515b1c02ee9d9ba7d60b5f6bee246234cde78)
+++ tests/.expect/alloc-ERROR.oast.txt	(revision cd6a6ffee16b2e0915b5be3211ed86e60fd011e9)
@@ -16,4 +16,6 @@
           Name: stp
 
+      with resolved type:
+        unsigned long int
 
 
@@ -28,4 +30,6 @@
     Name: stp
     constant expression (10 10: signed int)
+    with resolved type:
+      signed int
 
 
Index: tests/.expect/init1-ERROR.nast.txt
===================================================================
--- tests/.expect/init1-ERROR.nast.txt	(revision b37515b1c02ee9d9ba7d60b5f6bee246234cde78)
+++ tests/.expect/init1-ERROR.nast.txt	(revision cd6a6ffee16b2e0915b5be3211ed86e60fd011e9)
@@ -11,4 +11,6 @@
 ... to:
   reference to signed int
+... with resolved type:
+  reference to signed int
 init1.cfa:107:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
   Name: ?{}
@@ -16,5 +18,9 @@
   Generated Cast of:
     Variable Expression: _retval_f_py: pointer to signed int
+    ... with resolved type:
+      pointer to signed int
   ... to:
+    reference to pointer to signed int
+  ... with resolved type:
     reference to pointer to signed int
   Name: px
@@ -24,4 +30,6 @@
 ... to:
   reference to float
+... with resolved type:
+  reference to float
 init1.cfa:117:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
   Name: ?{}
@@ -29,5 +37,9 @@
   Generated Cast of:
     Variable Expression: _retval_f_py2: pointer to float
+    ... with resolved type:
+      pointer to float
   ... to:
+    reference to pointer to float
+  ... with resolved type:
     reference to pointer to float
   Name: cpx
@@ -37,4 +49,6 @@
 ... to:
   reference to instance of type T (not function type)
+... with resolved type:
+  reference to instance of type T (not function type)
 init1.cfa:128:1 error: Invalid application of existing declaration(s) in expression Applying untyped:
   Name: ?{}
@@ -42,5 +56,9 @@
   Generated Cast of:
     Variable Expression: _retval_anycvt: pointer to instance of type T (not function type)
+    ... with resolved type:
+      pointer to instance of type T (not function type)
   ... to:
+    reference to pointer to instance of type T (not function type)
+  ... with resolved type:
     reference to pointer to instance of type T (not function type)
   Name: s
Index: tests/.expect/init1-ERROR.oast.txt
===================================================================
--- tests/.expect/init1-ERROR.oast.txt	(revision b37515b1c02ee9d9ba7d60b5f6bee246234cde78)
+++ tests/.expect/init1-ERROR.oast.txt	(revision cd6a6ffee16b2e0915b5be3211ed86e60fd011e9)
@@ -1,13 +1,15 @@
 error: No reasonable alternatives for expression Untyped Init Expression
-  Name: rx  InitAlternative: reference to signed int
+  Name: cpx  InitAlternative: pointer to float
+error: No reasonable alternatives for expression Untyped Init Expression
+  Name: crx  InitAlternative: reference to float
 error: No reasonable alternatives for expression Untyped Init Expression
   Name: px  InitAlternative: pointer to signed int
 error: No reasonable alternatives for expression Untyped Init Expression
-  Name: crx  InitAlternative: reference to float
-error: No reasonable alternatives for expression Untyped Init Expression
-  Name: cpx  InitAlternative: pointer to float
+  Name: rx  InitAlternative: reference to signed int
 init1.cfa:104:1 error: No reasonable alternatives for expression Generated Cast of:
   Name: rx
 ... to:
+  reference to signed int
+with resolved type:
   reference to signed int
 init1.cfa:107:1 error: No reasonable alternatives for expression Applying untyped:
@@ -16,5 +18,9 @@
   Generated Cast of:
     Variable Expression: _retval_f_py: pointer to signed int
+    with resolved type:
+      pointer to signed int
   ... to:
+    reference to pointer to signed int
+  with resolved type:
     reference to pointer to signed int
   Name: px
@@ -24,4 +30,6 @@
 ... to:
   reference to float
+with resolved type:
+  reference to float
 init1.cfa:117:1 error: No reasonable alternatives for expression Applying untyped:
   Name: ?{}
@@ -29,5 +37,9 @@
   Generated Cast of:
     Variable Expression: _retval_f_py2: pointer to float
+    with resolved type:
+      pointer to float
   ... to:
+    reference to pointer to float
+  with resolved type:
     reference to pointer to float
   Name: cpx
@@ -37,4 +49,6 @@
 ... to:
   reference to instance of type T (not function type)
+with resolved type:
+  reference to instance of type T (not function type)
 init1.cfa:128:1 error: No reasonable alternatives for expression Applying untyped:
   Name: ?{}
@@ -42,5 +56,9 @@
   Generated Cast of:
     Variable Expression: _retval_anycvt: pointer to instance of type T (not function type)
+    with resolved type:
+      pointer to instance of type T (not function type)
   ... to:
+    reference to pointer to instance of type T (not function type)
+  with resolved type:
     reference to pointer to instance of type T (not function type)
   Name: s
Index: tests/errors/.expect/completeType.nast.x64.txt
===================================================================
--- tests/errors/.expect/completeType.nast.x64.txt	(revision b37515b1c02ee9d9ba7d60b5f6bee246234cde78)
+++ tests/errors/.expect/completeType.nast.x64.txt	(revision cd6a6ffee16b2e0915b5be3211ed86e60fd011e9)
@@ -6,5 +6,7 @@
     Name: x
 
-... to: nothing Alternatives are:
+... to: nothing
+... with resolved type:
+  void Alternatives are:
 Cost ( 0, 1, 2, 0, 1, -1, 0 ): Generated Cast of:
       Application of
@@ -17,12 +19,27 @@
           reference to instance of type DT (not function type)
 
+        ... with resolved type:
+          pointer to forall
+            [unbound]:data type
+            function
+          ... with parameters
+            pointer to instance of type [unbound] (not function type)
+          ... returning
+            reference to instance of type [unbound] (not function type)
+
         ... to arguments
         Variable Expression: x: pointer to instance of struct B with body
+        ... with resolved type:
+          pointer to instance of struct B with body
 
+      ... with resolved type:
+        reference to instance of struct B with body
     ... to: nothing
+    ... with resolved type:
+      void
   (types:
     void
   )
-  Environment:( _99_2_DT ) -> instance of struct B with body (no widening)
+  Environment:([unbound]) -> instance of struct B with body (no widening)
 
 
@@ -37,12 +54,27 @@
           reference to instance of type DT (not function type)
 
+        ... with resolved type:
+          pointer to forall
+            [unbound]:data type
+            function
+          ... with parameters
+            pointer to instance of type [unbound] (not function type)
+          ... returning
+            reference to instance of type [unbound] (not function type)
+
         ... to arguments
         Variable Expression: x: pointer to instance of struct A without body
+        ... with resolved type:
+          pointer to instance of struct A without body
 
+      ... with resolved type:
+        reference to instance of struct A without body
     ... to: nothing
+    ... with resolved type:
+      void
   (types:
     void
   )
-  Environment:( _99_2_DT ) -> instance of struct A without body (no widening)
+  Environment:([unbound]) -> instance of struct A without body (no widening)
 
 
@@ -112,19 +144,56 @@
             ... returning nothing
 
+            ... with resolved type:
+              pointer to forall
+                [unbound]:sized data type
+                ... with assertions
+                  ?=?: pointer to function
+                  ... with parameters
+                    reference to instance of type [unbound] (not function type)
+                    instance of type [unbound] (not function type)
+                  ... returning
+                    instance of type [unbound] (not function type)
+
+                  ?{}: pointer to function
+                  ... with parameters
+                    reference to instance of type [unbound] (not function type)
+                  ... returning nothing
+
+                  ?{}: pointer to function
+                  ... with parameters
+                    reference to instance of type [unbound] (not function type)
+                    instance of type [unbound] (not function type)
+                  ... returning nothing
+
+                  ^?{}: pointer to function
+                  ... with parameters
+                    reference to instance of type [unbound] (not function type)
+                  ... returning nothing
+
+
+                function
+              ... with parameters
+                pointer to instance of type [unbound] (not function type)
+              ... returning nothing
+
             ... to arguments
             Variable Expression: z: pointer to instance of type T (not function type)
+            ... with resolved type:
+              pointer to instance of type T (not function type)
           with 1 pending inference slots
 
+          ... with resolved type:
+            void
         (types:
           void
         )
-        Environment:( _118_0_T ) -> instance of type T (not function type) (no widening)
+        Environment:([unbound]) -> instance of type T (not function type) (no widening)
 
       Could not satisfy assertion:
 ?=?: pointer to function
         ... with parameters
-          reference to instance of type _118_0_T (not function type)
-          instance of type _118_0_T (not function type)
+          reference to instance of type [unbound] (not function type)
+          instance of type [unbound] (not function type)
         ... returning
-          instance of type _118_0_T (not function type)
+          instance of type [unbound] (not function type)
 
Index: tests/errors/.expect/completeType.oast.x64.txt
===================================================================
--- tests/errors/.expect/completeType.oast.x64.txt	(revision b37515b1c02ee9d9ba7d60b5f6bee246234cde78)
+++ tests/errors/.expect/completeType.oast.x64.txt	(revision cd6a6ffee16b2e0915b5be3211ed86e60fd011e9)
@@ -6,5 +6,7 @@
     Name: x
 
-... to: nothing Alternatives are:
+... to: nothing
+with resolved type:
+  void  Alternatives are:
 Cost ( 0, 1, 2, 0, 1, -1, 0 ): Generated Cast of:
       Application of
@@ -20,12 +22,30 @@
 
 
+        with resolved type:
+          pointer to forall
+            [unbound]:data type
+            function
+          ... with parameters
+            intrinsic pointer to instance of type [unbound] (not function type)
+          ... returning
+            _retval__operator_deref: reference to instance of type [unbound] (not function type)
+            ... with attributes:
+              Attribute with name: unused
+
+
       ... to arguments
         Variable Expression: x: pointer to instance of struct A with body 0
-
+        with resolved type:
+          pointer to instance of struct A with body 0
+
+      with resolved type:
+        reference to instance of struct A with body 0
     ... to: nothing
+    with resolved type:
+      void 
   (types:
     void 
   )
-  Environment: -> instance of struct A with body 0 (no widening)
+  Environment:([unbound]) -> instance of struct A with body 0 (no widening)
 
 
@@ -43,12 +63,30 @@
 
 
+        with resolved type:
+          pointer to forall
+            [unbound]:data type
+            function
+          ... with parameters
+            intrinsic pointer to instance of type [unbound] (not function type)
+          ... returning
+            _retval__operator_deref: reference to instance of type [unbound] (not function type)
+            ... with attributes:
+              Attribute with name: unused
+
+
       ... to arguments
         Variable Expression: x: pointer to instance of struct B with body 1
-
+        with resolved type:
+          pointer to instance of struct B with body 1
+
+      with resolved type:
+        reference to instance of struct B with body 1
     ... to: nothing
+    with resolved type:
+      void 
   (types:
     void 
   )
-  Environment: -> instance of struct B with body 1 (no widening)
+  Environment:([unbound]) -> instance of struct B with body 1 (no widening)
 
 
@@ -121,19 +159,59 @@
             ... returning nothing
 
+            with resolved type:
+              pointer to forall
+                [unbound]:sized data type
+                ... with assertions
+                  ?=?: pointer to function
+                  ... with parameters
+                    reference to instance of type [unbound] (not function type)
+                    instance of type [unbound] (not function type)
+                  ... returning
+                    _retval__operator_assign: instance of type [unbound] (not function type)
+                    ... with attributes:
+                      Attribute with name: unused
+
+
+                  ?{}: pointer to function
+                  ... with parameters
+                    reference to instance of type [unbound] (not function type)
+                  ... returning nothing
+
+                  ?{}: pointer to function
+                  ... with parameters
+                    reference to instance of type [unbound] (not function type)
+                    instance of type [unbound] (not function type)
+                  ... returning nothing
+
+                  ^?{}: pointer to function
+                  ... with parameters
+                    reference to instance of type [unbound] (not function type)
+                  ... returning nothing
+
+
+                function
+              ... with parameters
+                pointer to instance of type [unbound] (not function type)
+              ... returning nothing
+
           ... to arguments
             Variable Expression: z: pointer to instance of type T (not function type)
-
+            with resolved type:
+              pointer to instance of type T (not function type)
+
+          with resolved type:
+            void 
         (types:
           void 
         )
-        Environment: -> instance of type T (not function type) (no widening)
+        Environment:([unbound]) -> instance of type T (not function type) (no widening)
 
       Could not satisfy assertion:
 ?=?: pointer to function
         ... with parameters
-          reference to instance of type _110_0_T (not function type)
-          instance of type _110_0_T (not function type)
+          reference to instance of type [unbound] (not function type)
+          instance of type [unbound] (not function type)
         ... returning
-          _retval__operator_assign: instance of type _110_0_T (not function type)
+          _retval__operator_assign: instance of type [unbound] (not function type)
           ... with attributes:
             Attribute with name: unused
Index: tests/raii/.expect/ctor-autogen-ERR1.nast.txt
===================================================================
--- tests/raii/.expect/ctor-autogen-ERR1.nast.txt	(revision b37515b1c02ee9d9ba7d60b5f6bee246234cde78)
+++ tests/raii/.expect/ctor-autogen-ERR1.nast.txt	(revision cd6a6ffee16b2e0915b5be3211ed86e60fd011e9)
@@ -7,4 +7,11 @@
         signed int
       ... returning nothing
+
+      ... with resolved type:
+        function
+        ... with parameters
+          reference to instance of struct Managed with body
+          signed int
+        ... returning nothing
 
       ... deleted by: ?{}: function
@@ -23,4 +30,12 @@
                 signed int
 
+              ... with resolved type:
+                pointer to function
+                ... with parameters
+                  reference to signed int
+                  signed int
+                ... returning
+                  signed int
+
               ... to arguments
               Generated Cast of:
@@ -30,13 +45,27 @@
                   Generated Cast of:
                     Variable Expression: m: reference to instance of struct Managed with body
+                    ... with resolved type:
+                      reference to instance of struct Managed with body
                   ... to:
                     instance of struct Managed with body
+                  ... with resolved type:
+                    instance of struct Managed with body
+                ... with resolved type:
+                  signed int
               ... to:
+                reference to signed int
+              ... with resolved type:
                 reference to signed int
               Generated Cast of:
                 Constant Expression (0: zero_t)
+                ... with resolved type:
+                  zero_t
               ... to:
                 signed int
+              ... with resolved type:
+                signed int
 
+            ... with resolved type:
+              signed int
             ... with environment:
               Types:
@@ -47,7 +76,17 @@
     Generated Cast of:
       Variable Expression: x: instance of struct Managed with body
+      ... with resolved type:
+        instance of struct Managed with body
     ... to:
       reference to instance of struct Managed with body
+    ... with resolved type:
+      reference to instance of struct Managed with body
     Constant Expression (123: signed int)
+    ... with resolved type:
+      signed int
 
+  ... with resolved type:
+    void
 ... to: nothing
+... with resolved type:
+  void
Index: tests/raii/.expect/ctor-autogen-ERR1.oast.txt
===================================================================
--- tests/raii/.expect/ctor-autogen-ERR1.oast.txt	(revision b37515b1c02ee9d9ba7d60b5f6bee246234cde78)
+++ tests/raii/.expect/ctor-autogen-ERR1.oast.txt	(revision cd6a6ffee16b2e0915b5be3211ed86e60fd011e9)
@@ -7,4 +7,11 @@
         x: signed int
       ... returning nothing
+
+      with resolved type:
+        function
+        ... with parameters
+          _dst: reference to instance of struct Managed with body 1
+          x: signed int
+        ... returning nothing
 
       ... deleted by: ?{}: function
@@ -26,4 +33,15 @@
 
 
+              with resolved type:
+                pointer to function
+                ... with parameters
+                  intrinsic reference to signed int
+                  intrinsic signed int
+                ... returning
+                  _retval__operator_assign: signed int
+                  ... with attributes:
+                    Attribute with name: unused
+
+
             ... to arguments
               Generated Cast of:
@@ -33,13 +51,27 @@
                   Generated Cast of:
                     Variable Expression: m: reference to instance of struct Managed with body 1
+                    with resolved type:
+                      reference to instance of struct Managed with body 1
                   ... to:
                     instance of struct Managed with body 1
+                  with resolved type:
+                    instance of struct Managed with body 1
+                with resolved type:
+                  signed int
               ... to:
+                reference to signed int
+              with resolved type:
                 reference to signed int
               Generated Cast of:
                 constant expression (0 0: zero_t)
+                with resolved type:
+                  zero_t
               ... to:
                 signed int
+              with resolved type:
+                signed int
 
+            with resolved type:
+              signed int
             ... with environment:
               Types:
@@ -50,7 +82,17 @@
     Generated Cast of:
       Variable Expression: x: instance of struct Managed with body 1
+      with resolved type:
+        instance of struct Managed with body 1
     ... to:
       reference to instance of struct Managed with body 1
+    with resolved type:
+      reference to instance of struct Managed with body 1
     constant expression (123 123: signed int)
+    with resolved type:
+      signed int
 
+  with resolved type:
+    void 
 ... to: nothing
+with resolved type:
+  void 
Index: tests/warnings/.expect/self-assignment.nast.txt
===================================================================
--- tests/warnings/.expect/self-assignment.nast.txt	(revision b37515b1c02ee9d9ba7d60b5f6bee246234cde78)
+++ tests/warnings/.expect/self-assignment.nast.txt	(revision cd6a6ffee16b2e0915b5be3211ed86e60fd011e9)
@@ -1,9 +1,17 @@
 warnings/self-assignment.cfa:29:1 warning: self assignment of expression: Generated Cast of:
   Variable Expression: j: signed int
+  ... with resolved type:
+    signed int
 ... to:
+  reference to signed int
+... with resolved type:
   reference to signed int
 warnings/self-assignment.cfa:30:1 warning: self assignment of expression: Generated Cast of:
   Variable Expression: s: instance of struct S with body
+  ... with resolved type:
+    instance of struct S with body
 ... to:
+  reference to instance of struct S with body
+... with resolved type:
   reference to instance of struct S with body
 warnings/self-assignment.cfa:31:1 warning: self assignment of expression: Generated Cast of:
@@ -12,5 +20,11 @@
   ... from aggregate:
     Variable Expression: s: instance of struct S with body
+    ... with resolved type:
+      instance of struct S with body
+  ... with resolved type:
+    signed int
 ... to:
+  reference to signed int
+... with resolved type:
   reference to signed int
 warnings/self-assignment.cfa:32:1 warning: self assignment of expression: Generated Cast of:
@@ -22,5 +36,13 @@
     ... from aggregate:
       Variable Expression: t: instance of struct T with body
+      ... with resolved type:
+        instance of struct T with body
+    ... with resolved type:
+      instance of struct S with body
+  ... with resolved type:
+    signed int
 ... to:
+  reference to signed int
+... with resolved type:
   reference to signed int
 warnings/self-assignment.cfa: In function '_X4mainFi___1':
Index: tests/warnings/.expect/self-assignment.oast.txt
===================================================================
--- tests/warnings/.expect/self-assignment.oast.txt	(revision b37515b1c02ee9d9ba7d60b5f6bee246234cde78)
+++ tests/warnings/.expect/self-assignment.oast.txt	(revision cd6a6ffee16b2e0915b5be3211ed86e60fd011e9)
@@ -1,9 +1,17 @@
 warnings/self-assignment.cfa:29:1 warning: self assignment of expression: Generated Cast of:
   Variable Expression: j: signed int
+  with resolved type:
+    signed int
 ... to:
+  reference to signed int
+with resolved type:
   reference to signed int
 warnings/self-assignment.cfa:30:1 warning: self assignment of expression: Generated Cast of:
   Variable Expression: s: instance of struct S with body 1
+  with resolved type:
+    instance of struct S with body 1
 ... to:
+  reference to instance of struct S with body 1
+with resolved type:
   reference to instance of struct S with body 1
 warnings/self-assignment.cfa:31:1 warning: self assignment of expression: Generated Cast of:
@@ -12,5 +20,11 @@
   ... from aggregate:
     Variable Expression: s: instance of struct S with body 1
+    with resolved type:
+      instance of struct S with body 1
+  with resolved type:
+    signed int
 ... to:
+  reference to signed int
+with resolved type:
   reference to signed int
 warnings/self-assignment.cfa:32:1 warning: self assignment of expression: Generated Cast of:
@@ -22,5 +36,13 @@
     ... from aggregate:
       Variable Expression: t: instance of struct T with body 1
+      with resolved type:
+        instance of struct T with body 1
+    with resolved type:
+      instance of struct S with body 1
+  with resolved type:
+    signed int
 ... to:
+  reference to signed int
+with resolved type:
   reference to signed int
 warnings/self-assignment.cfa: In function '_X4mainFi___1':
