Index: tests/.expect/alloc-ERROR.nast.txt
===================================================================
--- tests/.expect/alloc-ERROR.nast.txt	(revision bb87dd060ba10687cd7993c1a11ded9b3eb67786)
+++ 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 bb87dd060ba10687cd7993c1a11ded9b3eb67786)
+++ 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 bb87dd060ba10687cd7993c1a11ded9b3eb67786)
+++ 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 bb87dd060ba10687cd7993c1a11ded9b3eb67786)
+++ 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 bb87dd060ba10687cd7993c1a11ded9b3eb67786)
+++ 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 bb87dd060ba10687cd7993c1a11ded9b3eb67786)
+++ 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 bb87dd060ba10687cd7993c1a11ded9b3eb67786)
+++ 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 bb87dd060ba10687cd7993c1a11ded9b3eb67786)
+++ 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 bb87dd060ba10687cd7993c1a11ded9b3eb67786)
+++ 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 bb87dd060ba10687cd7993c1a11ded9b3eb67786)
+++ 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':
