[ast] Add the result_type into the AST dump

This CL adds the result_type type_name into the AST dump if available.

Bug: tint:310, tint:308
Change-Id: Iea678fd4f7a2dadbfca86f29043c75459c421cb3
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/32780
Reviewed-by: Sarah Mashayekhi <sarahmashay@google.com>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
diff --git a/src/ast/array_accessor_expression.cc b/src/ast/array_accessor_expression.cc
index 4fcb5e0..9fa112f 100644
--- a/src/ast/array_accessor_expression.cc
+++ b/src/ast/array_accessor_expression.cc
@@ -52,7 +52,7 @@
 
 void ArrayAccessorExpression::to_str(std::ostream& out, size_t indent) const {
   make_indent(out, indent);
-  out << "ArrayAccessor{" << std::endl;
+  out << "ArrayAccessor[" << result_type_str() << "]{" << std::endl;
   array_->to_str(out, indent + 2);
   idx_expr_->to_str(out, indent + 2);
   make_indent(out, indent);
diff --git a/src/ast/array_accessor_expression_test.cc b/src/ast/array_accessor_expression_test.cc
index 1b1f3bd..b9b95fa 100644
--- a/src/ast/array_accessor_expression_test.cc
+++ b/src/ast/array_accessor_expression_test.cc
@@ -96,9 +96,9 @@
   std::ostringstream out;
   exp.to_str(out, 2);
 
-  EXPECT_EQ(out.str(), R"(  ArrayAccessor{
-    Identifier{ary}
-    Identifier{idx}
+  EXPECT_EQ(out.str(), R"(  ArrayAccessor[not set]{
+    Identifier[not set]{ary}
+    Identifier[not set]{idx}
   }
 )");
 }
diff --git a/src/ast/assignment_statement_test.cc b/src/ast/assignment_statement_test.cc
index 10c9542..fffe29a 100644
--- a/src/ast/assignment_statement_test.cc
+++ b/src/ast/assignment_statement_test.cc
@@ -101,8 +101,8 @@
   stmt.to_str(out, 2);
 
   EXPECT_EQ(out.str(), R"(  Assignment{
-    Identifier{lhs}
-    Identifier{rhs}
+    Identifier[not set]{lhs}
+    Identifier[not set]{rhs}
   }
 )");
 }
diff --git a/src/ast/binary_expression.cc b/src/ast/binary_expression.cc
index 47d600d..0b9e5a3 100644
--- a/src/ast/binary_expression.cc
+++ b/src/ast/binary_expression.cc
@@ -50,7 +50,7 @@
 
 void BinaryExpression::to_str(std::ostream& out, size_t indent) const {
   make_indent(out, indent);
-  out << "Binary{" << std::endl;
+  out << "Binary[" << result_type_str() << "]{" << std::endl;
   lhs_->to_str(out, indent + 2);
 
   make_indent(out, indent + 2);
diff --git a/src/ast/binary_expression_test.cc b/src/ast/binary_expression_test.cc
index 395c844..c6e0d04 100644
--- a/src/ast/binary_expression_test.cc
+++ b/src/ast/binary_expression_test.cc
@@ -111,10 +111,10 @@
   BinaryExpression r(BinaryOp::kEqual, std::move(lhs), std::move(rhs));
   std::ostringstream out;
   r.to_str(out, 2);
-  EXPECT_EQ(out.str(), R"(  Binary{
-    Identifier{lhs}
+  EXPECT_EQ(out.str(), R"(  Binary[not set]{
+    Identifier[not set]{lhs}
     equal
-    Identifier{rhs}
+    Identifier[not set]{rhs}
   }
 )");
 }
diff --git a/src/ast/bitcast_expression.cc b/src/ast/bitcast_expression.cc
index 8f83477..6bd378e 100644
--- a/src/ast/bitcast_expression.cc
+++ b/src/ast/bitcast_expression.cc
@@ -43,7 +43,8 @@
 
 void BitcastExpression::to_str(std::ostream& out, size_t indent) const {
   make_indent(out, indent);
-  out << "Bitcast<" << type_->type_name() << ">{" << std::endl;
+  out << "Bitcast[" << result_type_str() << "]<" << type_->type_name() << ">{"
+      << std::endl;
   expr_->to_str(out, indent + 2);
   make_indent(out, indent);
   out << "}" << std::endl;
diff --git a/src/ast/bitcast_expression_test.cc b/src/ast/bitcast_expression_test.cc
index 071ad89..baee3d2 100644
--- a/src/ast/bitcast_expression_test.cc
+++ b/src/ast/bitcast_expression_test.cc
@@ -89,8 +89,8 @@
   std::ostringstream out;
   exp.to_str(out, 2);
 
-  EXPECT_EQ(out.str(), R"(  Bitcast<__f32>{
-    Identifier{expr}
+  EXPECT_EQ(out.str(), R"(  Bitcast[not set]<__f32>{
+    Identifier[not set]{expr}
   }
 )");
 }
diff --git a/src/ast/call_expression.cc b/src/ast/call_expression.cc
index f7d71c7..74ea7f4 100644
--- a/src/ast/call_expression.cc
+++ b/src/ast/call_expression.cc
@@ -50,7 +50,7 @@
 
 void CallExpression::to_str(std::ostream& out, size_t indent) const {
   make_indent(out, indent);
-  out << "Call{" << std::endl;
+  out << "Call[" << result_type_str() << "]{" << std::endl;
   func_->to_str(out, indent + 2);
 
   make_indent(out, indent + 2);
diff --git a/src/ast/call_expression_test.cc b/src/ast/call_expression_test.cc
index 6cdcbcb..e03fd9f 100644
--- a/src/ast/call_expression_test.cc
+++ b/src/ast/call_expression_test.cc
@@ -101,8 +101,8 @@
   CallExpression stmt(std::move(func), {});
   std::ostringstream out;
   stmt.to_str(out, 2);
-  EXPECT_EQ(out.str(), R"(  Call{
-    Identifier{func}
+  EXPECT_EQ(out.str(), R"(  Call[not set]{
+    Identifier[not set]{func}
     (
     )
   }
@@ -118,11 +118,11 @@
   CallExpression stmt(std::move(func), std::move(params));
   std::ostringstream out;
   stmt.to_str(out, 2);
-  EXPECT_EQ(out.str(), R"(  Call{
-    Identifier{func}
+  EXPECT_EQ(out.str(), R"(  Call[not set]{
+    Identifier[not set]{func}
     (
-      Identifier{param1}
-      Identifier{param2}
+      Identifier[not set]{param1}
+      Identifier[not set]{param2}
     )
   }
 )");
diff --git a/src/ast/call_statement_test.cc b/src/ast/call_statement_test.cc
index b9df302..b186606 100644
--- a/src/ast/call_statement_test.cc
+++ b/src/ast/call_statement_test.cc
@@ -60,8 +60,8 @@
 
   std::ostringstream out;
   c.to_str(out, 2);
-  EXPECT_EQ(out.str(), R"(  Call{
-    Identifier{func}
+  EXPECT_EQ(out.str(), R"(  Call[not set]{
+    Identifier[not set]{func}
     (
     )
   }
diff --git a/src/ast/decorated_variable_test.cc b/src/ast/decorated_variable_test.cc
index 7c82d78..706a509 100644
--- a/src/ast/decorated_variable_test.cc
+++ b/src/ast/decorated_variable_test.cc
@@ -133,7 +133,7 @@
     function
     __f32
     {
-      Identifier{expr}
+      Identifier[not set]{expr}
     }
   }
 )");
diff --git a/src/ast/else_statement_test.cc b/src/ast/else_statement_test.cc
index 826648e..b61c02a 100644
--- a/src/ast/else_statement_test.cc
+++ b/src/ast/else_statement_test.cc
@@ -116,7 +116,7 @@
   e.to_str(out, 2);
   EXPECT_EQ(out.str(), R"(  Else{
     (
-      ScalarConstructor{true}
+      ScalarConstructor[not set]{true}
     )
     {
       Discard{}
diff --git a/src/ast/expression.h b/src/ast/expression.h
index be2c0f6..603ae92 100644
--- a/src/ast/expression.h
+++ b/src/ast/expression.h
@@ -16,6 +16,7 @@
 #define SRC_AST_EXPRESSION_H_
 
 #include <memory>
+#include <string>
 #include <vector>
 
 #include "src/ast/node.h"
@@ -44,6 +45,12 @@
   /// @returns the resulting type from this expression
   type::Type* result_type() const { return result_type_; }
 
+  /// @returns a string representation of the result type or 'not set' if no
+  /// result type present
+  std::string result_type_str() const {
+    return result_type_ ? result_type_->type_name() : "not set";
+  }
+
   /// @returns true if this is an array accessor expression
   virtual bool IsArrayAccessor() const;
   /// @returns true if this is a bitcast expression
diff --git a/src/ast/identifier_expression.cc b/src/ast/identifier_expression.cc
index 375387e..76f92a2 100644
--- a/src/ast/identifier_expression.cc
+++ b/src/ast/identifier_expression.cc
@@ -38,7 +38,8 @@
 
 void IdentifierExpression::to_str(std::ostream& out, size_t indent) const {
   make_indent(out, indent);
-  out << "Identifier{" << name_ << "}" << std::endl;
+  out << "Identifier[" << result_type_str() << "]{" << name_ << "}"
+      << std::endl;
 }
 
 }  // namespace ast
diff --git a/src/ast/identifier_expression_test.cc b/src/ast/identifier_expression_test.cc
index 7262fae..c4c6539 100644
--- a/src/ast/identifier_expression_test.cc
+++ b/src/ast/identifier_expression_test.cc
@@ -55,7 +55,7 @@
   IdentifierExpression i("ident");
   std::ostringstream out;
   i.to_str(out, 2);
-  EXPECT_EQ(out.str(), R"(  Identifier{ident}
+  EXPECT_EQ(out.str(), R"(  Identifier[not set]{ident}
 )");
 }
 
diff --git a/src/ast/if_statement_test.cc b/src/ast/if_statement_test.cc
index 20141ad..c9458ba 100644
--- a/src/ast/if_statement_test.cc
+++ b/src/ast/if_statement_test.cc
@@ -186,7 +186,7 @@
   stmt.to_str(out, 2);
   EXPECT_EQ(out.str(), R"(  If{
     (
-      Identifier{cond}
+      Identifier[not set]{cond}
     )
     {
       Discard{}
@@ -221,7 +221,7 @@
   stmt.to_str(out, 2);
   EXPECT_EQ(out.str(), R"(  If{
     (
-      Identifier{cond}
+      Identifier[not set]{cond}
     )
     {
       Discard{}
@@ -229,7 +229,7 @@
   }
   Else{
     (
-      Identifier{ident}
+      Identifier[not set]{ident}
     )
     {
       Discard{}
diff --git a/src/ast/member_accessor_expression.cc b/src/ast/member_accessor_expression.cc
index c88b604..d10eb06 100644
--- a/src/ast/member_accessor_expression.cc
+++ b/src/ast/member_accessor_expression.cc
@@ -53,7 +53,7 @@
 
 void MemberAccessorExpression::to_str(std::ostream& out, size_t indent) const {
   make_indent(out, indent);
-  out << "MemberAccessor{" << std::endl;
+  out << "MemberAccessor[" << result_type_str() << "]{" << std::endl;
   struct_->to_str(out, indent + 2);
   member_->to_str(out, indent + 2);
   make_indent(out, indent);
diff --git a/src/ast/member_accessor_expression_test.cc b/src/ast/member_accessor_expression_test.cc
index 6dc2a9e..42be3d1 100644
--- a/src/ast/member_accessor_expression_test.cc
+++ b/src/ast/member_accessor_expression_test.cc
@@ -100,9 +100,9 @@
   MemberAccessorExpression stmt(std::move(str), std::move(mem));
   std::ostringstream out;
   stmt.to_str(out, 2);
-  EXPECT_EQ(out.str(), R"(  MemberAccessor{
-    Identifier{structure}
-    Identifier{member}
+  EXPECT_EQ(out.str(), R"(  MemberAccessor[not set]{
+    Identifier[not set]{structure}
+    Identifier[not set]{member}
   }
 )");
 }
diff --git a/src/ast/node.h b/src/ast/node.h
index 38adf7f..9ab4db6 100644
--- a/src/ast/node.h
+++ b/src/ast/node.h
@@ -40,9 +40,7 @@
   /// Writes a representation of the node to the output stream
   /// @param out the stream to write to
   /// @param indent number of spaces to indent the node when writing
-  //! @cond Doxygen_Suppress
   virtual void to_str(std::ostream& out, size_t indent) const = 0;
-  //! @endcond
 
   /// Convenience wrapper around the |to_str| method.
   /// @returns the node as a string
diff --git a/src/ast/return_statement_test.cc b/src/ast/return_statement_test.cc
index 02bf3d2..59c01e5 100644
--- a/src/ast/return_statement_test.cc
+++ b/src/ast/return_statement_test.cc
@@ -80,7 +80,7 @@
   r.to_str(out, 2);
   EXPECT_EQ(out.str(), R"(  Return{
     {
-      Identifier{expr}
+      Identifier[not set]{expr}
     }
   }
 )");
diff --git a/src/ast/scalar_constructor_expression.cc b/src/ast/scalar_constructor_expression.cc
index 287cb36..52b3ed2 100644
--- a/src/ast/scalar_constructor_expression.cc
+++ b/src/ast/scalar_constructor_expression.cc
@@ -45,7 +45,8 @@
 void ScalarConstructorExpression::to_str(std::ostream& out,
                                          size_t indent) const {
   make_indent(out, indent);
-  out << "ScalarConstructor{" << literal_->to_str() << "}" << std::endl;
+  out << "ScalarConstructor[" << result_type_str() << "]{" << literal_->to_str()
+      << "}" << std::endl;
 }
 
 }  // namespace ast
diff --git a/src/ast/scalar_constructor_expression_test.cc b/src/ast/scalar_constructor_expression_test.cc
index 9ca57a7..e465113 100644
--- a/src/ast/scalar_constructor_expression_test.cc
+++ b/src/ast/scalar_constructor_expression_test.cc
@@ -59,7 +59,7 @@
   ScalarConstructorExpression c(std::move(b));
   std::ostringstream out;
   c.to_str(out, 2);
-  EXPECT_EQ(out.str(), R"(  ScalarConstructor{true}
+  EXPECT_EQ(out.str(), R"(  ScalarConstructor[not set]{true}
 )");
 }
 
diff --git a/src/ast/switch_statement_test.cc b/src/ast/switch_statement_test.cc
index 8bf21b7..9e27d4a 100644
--- a/src/ast/switch_statement_test.cc
+++ b/src/ast/switch_statement_test.cc
@@ -145,7 +145,7 @@
   std::ostringstream out;
   stmt.to_str(out, 2);
   EXPECT_EQ(out.str(), R"(  Switch{
-    Identifier{ident}
+    Identifier[not set]{ident}
     {
     }
   }
@@ -167,7 +167,7 @@
   std::ostringstream out;
   stmt.to_str(out, 2);
   EXPECT_EQ(out.str(), R"(  Switch{
-    Identifier{ident}
+    Identifier[not set]{ident}
     {
       Case 2{
       }
diff --git a/src/ast/type_constructor_expression.cc b/src/ast/type_constructor_expression.cc
index e29e620..e68ddba 100644
--- a/src/ast/type_constructor_expression.cc
+++ b/src/ast/type_constructor_expression.cc
@@ -55,7 +55,7 @@
 
 void TypeConstructorExpression::to_str(std::ostream& out, size_t indent) const {
   make_indent(out, indent);
-  out << "TypeConstructor{" << std::endl;
+  out << "TypeConstructor[" << result_type_str() << "]{" << std::endl;
   make_indent(out, indent + 2);
   out << type_->type_name() << std::endl;
 
diff --git a/src/ast/type_constructor_expression_test.cc b/src/ast/type_constructor_expression_test.cc
index 8a30a62..ba2a88f 100644
--- a/src/ast/type_constructor_expression_test.cc
+++ b/src/ast/type_constructor_expression_test.cc
@@ -114,11 +114,11 @@
   TypeConstructorExpression t(&vec, std::move(expr));
   std::ostringstream out;
   t.to_str(out, 2);
-  EXPECT_EQ(out.str(), R"(  TypeConstructor{
+  EXPECT_EQ(out.str(), R"(  TypeConstructor[not set]{
     __vec_3__f32
-    Identifier{expr_1}
-    Identifier{expr_2}
-    Identifier{expr_3}
+    Identifier[not set]{expr_1}
+    Identifier[not set]{expr_2}
+    Identifier[not set]{expr_3}
   }
 )");
 }
diff --git a/src/ast/unary_op_expression.cc b/src/ast/unary_op_expression.cc
index 2439601..10d73b4 100644
--- a/src/ast/unary_op_expression.cc
+++ b/src/ast/unary_op_expression.cc
@@ -42,7 +42,7 @@
 
 void UnaryOpExpression::to_str(std::ostream& out, size_t indent) const {
   make_indent(out, indent);
-  out << "UnaryOp{" << std::endl;
+  out << "UnaryOp[" << result_type_str() << "]{" << std::endl;
   make_indent(out, indent + 2);
   out << op_ << std::endl;
   expr_->to_str(out, indent + 2);
diff --git a/src/ast/unary_op_expression_test.cc b/src/ast/unary_op_expression_test.cc
index 4adc29d..271f8b9 100644
--- a/src/ast/unary_op_expression_test.cc
+++ b/src/ast/unary_op_expression_test.cc
@@ -71,9 +71,9 @@
   UnaryOpExpression u(UnaryOp::kNot, std::move(ident));
   std::ostringstream out;
   u.to_str(out, 2);
-  EXPECT_EQ(out.str(), R"(  UnaryOp{
+  EXPECT_EQ(out.str(), R"(  UnaryOp[not set]{
     not
-    Identifier{ident}
+    Identifier[not set]{ident}
   }
 )");
 }
diff --git a/src/reader/spirv/function_arithmetic_test.cc b/src/reader/spirv/function_arithmetic_test.cc
index da958c1..52b93e1 100644
--- a/src/reader/spirv/function_arithmetic_test.cc
+++ b/src/reader/spirv/function_arithmetic_test.cc
@@ -68,54 +68,54 @@
 // Returns the AST dump for a given SPIR-V assembly constant.
 std::string AstFor(std::string assembly) {
   if (assembly == "v2uint_10_20") {
-    return R"(TypeConstructor{
+    return R"(TypeConstructor[not set]{
           __vec_2__u32
-          ScalarConstructor{10}
-          ScalarConstructor{20}
+          ScalarConstructor[not set]{10}
+          ScalarConstructor[not set]{20}
         })";
   }
   if (assembly == "v2uint_20_10") {
-    return R"(TypeConstructor{
+    return R"(TypeConstructor[not set]{
           __vec_2__u32
-          ScalarConstructor{20}
-          ScalarConstructor{10}
+          ScalarConstructor[not set]{20}
+          ScalarConstructor[not set]{10}
         })";
   }
   if (assembly == "v2int_30_40") {
-    return R"(TypeConstructor{
+    return R"(TypeConstructor[not set]{
           __vec_2__i32
-          ScalarConstructor{30}
-          ScalarConstructor{40}
+          ScalarConstructor[not set]{30}
+          ScalarConstructor[not set]{40}
         })";
   }
   if (assembly == "v2int_40_30") {
-    return R"(TypeConstructor{
+    return R"(TypeConstructor[not set]{
           __vec_2__i32
-          ScalarConstructor{40}
-          ScalarConstructor{30}
+          ScalarConstructor[not set]{40}
+          ScalarConstructor[not set]{30}
         })";
   }
   if (assembly == "cast_int_v2uint_10_20") {
-    return R"(Bitcast<__vec_2__i32>{
-          TypeConstructor{
+    return R"(Bitcast[not set]<__vec_2__i32>{
+          TypeConstructor[not set]{
             __vec_2__u32
-            ScalarConstructor{10}
-            ScalarConstructor{20}
+            ScalarConstructor[not set]{10}
+            ScalarConstructor[not set]{20}
           }
         })";
   }
   if (assembly == "v2float_50_60") {
-    return R"(TypeConstructor{
+    return R"(TypeConstructor[not set]{
           __vec_2__f32
-          ScalarConstructor{50.000000}
-          ScalarConstructor{60.000000}
+          ScalarConstructor[not set]{50.000000}
+          ScalarConstructor[not set]{60.000000}
         })";
   }
   if (assembly == "v2float_60_50") {
-    return R"(TypeConstructor{
+    return R"(TypeConstructor[not set]{
           __vec_2__f32
-          ScalarConstructor{60.000000}
-          ScalarConstructor{50.000000}
+          ScalarConstructor[not set]{60.000000}
+          ScalarConstructor[not set]{50.000000}
         })";
   }
   return "bad case";
@@ -141,9 +141,9 @@
     none
     __i32
     {
-      UnaryOp{
+      UnaryOp[not set]{
         negation
-        ScalarConstructor{30}
+        ScalarConstructor[not set]{30}
       }
     }
   })"))
@@ -168,10 +168,10 @@
     none
     __i32
     {
-      UnaryOp{
+      UnaryOp[not set]{
         negation
-        Bitcast<__i32>{
-          ScalarConstructor{10}
+        Bitcast[not set]<__i32>{
+          ScalarConstructor[not set]{10}
         }
       }
     }
@@ -197,10 +197,10 @@
     none
     __u32
     {
-      Bitcast<__u32>{
-        UnaryOp{
+      Bitcast[not set]<__u32>{
+        UnaryOp[not set]{
           negation
-          ScalarConstructor{30}
+          ScalarConstructor[not set]{30}
         }
       }
     }
@@ -226,11 +226,11 @@
     none
     __u32
     {
-      Bitcast<__u32>{
-        UnaryOp{
+      Bitcast[not set]<__u32>{
+        UnaryOp[not set]{
           negation
-          Bitcast<__i32>{
-            ScalarConstructor{10}
+          Bitcast[not set]<__i32>{
+            ScalarConstructor[not set]{10}
           }
         }
       }
@@ -257,12 +257,12 @@
     none
     __vec_2__i32
     {
-      UnaryOp{
+      UnaryOp[not set]{
         negation
-        TypeConstructor{
+        TypeConstructor[not set]{
           __vec_2__i32
-          ScalarConstructor{30}
-          ScalarConstructor{40}
+          ScalarConstructor[not set]{30}
+          ScalarConstructor[not set]{40}
         }
       }
     }
@@ -288,13 +288,13 @@
     none
     __vec_2__i32
     {
-      UnaryOp{
+      UnaryOp[not set]{
         negation
-        Bitcast<__vec_2__i32>{
-          TypeConstructor{
+        Bitcast[not set]<__vec_2__i32>{
+          TypeConstructor[not set]{
             __vec_2__u32
-            ScalarConstructor{10}
-            ScalarConstructor{20}
+            ScalarConstructor[not set]{10}
+            ScalarConstructor[not set]{20}
           }
         }
       }
@@ -321,13 +321,13 @@
     none
     __vec_2__u32
     {
-      Bitcast<__vec_2__u32>{
-        UnaryOp{
+      Bitcast[not set]<__vec_2__u32>{
+        UnaryOp[not set]{
           negation
-          TypeConstructor{
+          TypeConstructor[not set]{
             __vec_2__i32
-            ScalarConstructor{30}
-            ScalarConstructor{40}
+            ScalarConstructor[not set]{30}
+            ScalarConstructor[not set]{40}
           }
         }
       }
@@ -354,14 +354,14 @@
     none
     __vec_2__u32
     {
-      Bitcast<__vec_2__u32>{
-        UnaryOp{
+      Bitcast[not set]<__vec_2__u32>{
+        UnaryOp[not set]{
           negation
-          Bitcast<__vec_2__i32>{
-            TypeConstructor{
+          Bitcast[not set]<__vec_2__i32>{
+            TypeConstructor[not set]{
               __vec_2__u32
-              ScalarConstructor{10}
-              ScalarConstructor{20}
+              ScalarConstructor[not set]{10}
+              ScalarConstructor[not set]{20}
             }
           }
         }
@@ -389,9 +389,9 @@
     none
     __f32
     {
-      UnaryOp{
+      UnaryOp[not set]{
         negation
-        ScalarConstructor{50.000000}
+        ScalarConstructor[not set]{50.000000}
       }
     }
   })"))
@@ -416,12 +416,12 @@
     none
     __vec_2__f32
     {
-      UnaryOp{
+      UnaryOp[not set]{
         negation
-        TypeConstructor{
+        TypeConstructor[not set]{
           __vec_2__f32
-          ScalarConstructor{50.000000}
-          ScalarConstructor{60.000000}
+          ScalarConstructor[not set]{50.000000}
+          ScalarConstructor[not set]{60.000000}
         }
       }
     }
@@ -471,7 +471,7 @@
     x_1
     none
     )"
-     << GetParam().ast_type << "\n    {\n      Binary{"
+     << GetParam().ast_type << "\n    {\n      Binary[not set]{"
      << "\n        " << GetParam().ast_lhs << "\n        " << GetParam().ast_op
      << "\n        " << GetParam().ast_rhs;
   EXPECT_THAT(ToString(fe.ast_body()), HasSubstr(ss.str())) << assembly;
@@ -483,16 +483,20 @@
     ::testing::Values(
         // Both uint
         BinaryData{"uint", "uint_10", "OpIAdd", "uint_20", "__u32",
-                   "ScalarConstructor{10}", "add", "ScalarConstructor{20}"},
+                   "ScalarConstructor[not set]{10}", "add",
+                   "ScalarConstructor[not set]{20}"},
         // Both int
         BinaryData{"int", "int_30", "OpIAdd", "int_40", "__i32",
-                   "ScalarConstructor{30}", "add", "ScalarConstructor{40}"},
+                   "ScalarConstructor[not set]{30}", "add",
+                   "ScalarConstructor[not set]{40}"},
         // Mixed, returning uint
         BinaryData{"uint", "int_30", "OpIAdd", "uint_10", "__u32",
-                   "ScalarConstructor{30}", "add", "ScalarConstructor{10}"},
+                   "ScalarConstructor[not set]{30}", "add",
+                   "ScalarConstructor[not set]{10}"},
         // Mixed, returning int
         BinaryData{"int", "int_30", "OpIAdd", "uint_10", "__i32",
-                   "ScalarConstructor{30}", "add", "ScalarConstructor{10}"},
+                   "ScalarConstructor[not set]{30}", "add",
+                   "ScalarConstructor[not set]{10}"},
         // Both v2uint
         BinaryData{"v2uint", "v2uint_10_20", "OpIAdd", "v2uint_20_10",
                    "__vec_2__u32", AstFor("v2uint_10_20"), "add",
@@ -516,8 +520,8 @@
     ::testing::Values(
         // Scalar float
         BinaryData{"float", "float_50", "OpFAdd", "float_60", "__f32",
-                   "ScalarConstructor{50.000000}", "add",
-                   "ScalarConstructor{60.000000}"},
+                   "ScalarConstructor[not set]{50.000000}", "add",
+                   "ScalarConstructor[not set]{60.000000}"},
         // Vector float
         BinaryData{"v2float", "v2float_50_60", "OpFAdd", "v2float_60_50",
                    "__vec_2__f32", AstFor("v2float_50_60"), "add",
@@ -529,20 +533,20 @@
     ::testing::Values(
         // Both uint
         BinaryData{"uint", "uint_10", "OpISub", "uint_20", "__u32",
-                   "ScalarConstructor{10}", "subtract",
-                   "ScalarConstructor{20}"},
+                   "ScalarConstructor[not set]{10}", "subtract",
+                   "ScalarConstructor[not set]{20}"},
         // Both int
         BinaryData{"int", "int_30", "OpISub", "int_40", "__i32",
-                   "ScalarConstructor{30}", "subtract",
-                   "ScalarConstructor{40}"},
+                   "ScalarConstructor[not set]{30}", "subtract",
+                   "ScalarConstructor[not set]{40}"},
         // Mixed, returning uint
         BinaryData{"uint", "int_30", "OpISub", "uint_10", "__u32",
-                   "ScalarConstructor{30}", "subtract",
-                   "ScalarConstructor{10}"},
+                   "ScalarConstructor[not set]{30}", "subtract",
+                   "ScalarConstructor[not set]{10}"},
         // Mixed, returning int
         BinaryData{"int", "int_30", "OpISub", "uint_10", "__i32",
-                   "ScalarConstructor{30}", "subtract",
-                   "ScalarConstructor{10}"},
+                   "ScalarConstructor[not set]{30}", "subtract",
+                   "ScalarConstructor[not set]{10}"},
         // Both v2uint
         BinaryData{"v2uint", "v2uint_10_20", "OpISub", "v2uint_20_10",
                    "__vec_2__u32", AstFor("v2uint_10_20"), "subtract",
@@ -566,8 +570,8 @@
     ::testing::Values(
         // Scalar float
         BinaryData{"float", "float_50", "OpFSub", "float_60", "__f32",
-                   "ScalarConstructor{50.000000}", "subtract",
-                   "ScalarConstructor{60.000000}"},
+                   "ScalarConstructor[not set]{50.000000}", "subtract",
+                   "ScalarConstructor[not set]{60.000000}"},
         // Vector float
         BinaryData{"v2float", "v2float_50_60", "OpFSub", "v2float_60_50",
                    "__vec_2__f32", AstFor("v2float_50_60"), "subtract",
@@ -579,20 +583,20 @@
     ::testing::Values(
         // Both uint
         BinaryData{"uint", "uint_10", "OpIMul", "uint_20", "__u32",
-                   "ScalarConstructor{10}", "multiply",
-                   "ScalarConstructor{20}"},
+                   "ScalarConstructor[not set]{10}", "multiply",
+                   "ScalarConstructor[not set]{20}"},
         // Both int
         BinaryData{"int", "int_30", "OpIMul", "int_40", "__i32",
-                   "ScalarConstructor{30}", "multiply",
-                   "ScalarConstructor{40}"},
+                   "ScalarConstructor[not set]{30}", "multiply",
+                   "ScalarConstructor[not set]{40}"},
         // Mixed, returning uint
         BinaryData{"uint", "int_30", "OpIMul", "uint_10", "__u32",
-                   "ScalarConstructor{30}", "multiply",
-                   "ScalarConstructor{10}"},
+                   "ScalarConstructor[not set]{30}", "multiply",
+                   "ScalarConstructor[not set]{10}"},
         // Mixed, returning int
         BinaryData{"int", "int_30", "OpIMul", "uint_10", "__i32",
-                   "ScalarConstructor{30}", "multiply",
-                   "ScalarConstructor{10}"},
+                   "ScalarConstructor[not set]{30}", "multiply",
+                   "ScalarConstructor[not set]{10}"},
         // Both v2uint
         BinaryData{"v2uint", "v2uint_10_20", "OpIMul", "v2uint_20_10",
                    "__vec_2__u32", AstFor("v2uint_10_20"), "multiply",
@@ -616,8 +620,8 @@
     ::testing::Values(
         // Scalar float
         BinaryData{"float", "float_50", "OpFMul", "float_60", "__f32",
-                   "ScalarConstructor{50.000000}", "multiply",
-                   "ScalarConstructor{60.000000}"},
+                   "ScalarConstructor[not set]{50.000000}", "multiply",
+                   "ScalarConstructor[not set]{60.000000}"},
         // Vector float
         BinaryData{"v2float", "v2float_50_60", "OpFMul", "v2float_60_50",
                    "__vec_2__f32", AstFor("v2float_50_60"), "multiply",
@@ -629,7 +633,8 @@
     ::testing::Values(
         // Both uint
         BinaryData{"uint", "uint_10", "OpUDiv", "uint_20", "__u32",
-                   "ScalarConstructor{10}", "divide", "ScalarConstructor{20}"},
+                   "ScalarConstructor[not set]{10}", "divide",
+                   "ScalarConstructor[not set]{20}"},
         // Both v2uint
         BinaryData{"v2uint", "v2uint_10_20", "OpUDiv", "v2uint_20_10",
                    "__vec_2__u32", AstFor("v2uint_10_20"), "divide",
@@ -641,7 +646,8 @@
     ::testing::Values(
         // Both int
         BinaryData{"int", "int_30", "OpSDiv", "int_40", "__i32",
-                   "ScalarConstructor{30}", "divide", "ScalarConstructor{40}"},
+                   "ScalarConstructor[not set]{30}", "divide",
+                   "ScalarConstructor[not set]{40}"},
         // Both v2int
         BinaryData{"v2int", "v2int_30_40", "OpSDiv", "v2int_40_30",
                    "__vec_2__i32", AstFor("v2int_30_40"), "divide",
@@ -653,16 +659,16 @@
     ::testing::Values(
         // Mixed, returning int, second arg uint
         BinaryData{"int", "int_30", "OpSDiv", "uint_10", "__i32",
-                   "ScalarConstructor{30}", "divide",
-                   R"(Bitcast<__i32>{
-          ScalarConstructor{10}
+                   "ScalarConstructor[not set]{30}", "divide",
+                   R"(Bitcast[not set]<__i32>{
+          ScalarConstructor[not set]{10}
         })"},
         // Mixed, returning int, first arg uint
         BinaryData{"int", "uint_10", "OpSDiv", "int_30", "__i32",
-                   R"(Bitcast<__i32>{
-          ScalarConstructor{10}
+                   R"(Bitcast[not set]<__i32>{
+          ScalarConstructor[not set]{10}
         })",
-                   "divide", "ScalarConstructor{30}"},
+                   "divide", "ScalarConstructor[not set]{30}"},
         // Mixed, returning v2int, first arg v2uint
         BinaryData{"v2int", "v2uint_10_20", "OpSDiv", "v2int_30_40",
                    "__vec_2__i32", AstFor("cast_int_v2uint_10_20"), "divide",
@@ -696,11 +702,11 @@
     none
     __u32
     {
-      Bitcast<__u32>{
-        Binary{
-          ScalarConstructor{30}
+      Bitcast[not set]<__u32>{
+        Binary[not set]{
+          ScalarConstructor[not set]{30}
           divide
-          ScalarConstructor{40}
+          ScalarConstructor[not set]{40}
         }
       }
     }
@@ -731,18 +737,18 @@
     none
     __vec_2__u32
     {
-      Bitcast<__vec_2__u32>{
-        Binary{
-          TypeConstructor{
+      Bitcast[not set]<__vec_2__u32>{
+        Binary[not set]{
+          TypeConstructor[not set]{
             __vec_2__i32
-            ScalarConstructor{30}
-            ScalarConstructor{40}
+            ScalarConstructor[not set]{30}
+            ScalarConstructor[not set]{40}
           }
           divide
-          TypeConstructor{
+          TypeConstructor[not set]{
             __vec_2__i32
-            ScalarConstructor{40}
-            ScalarConstructor{30}
+            ScalarConstructor[not set]{40}
+            ScalarConstructor[not set]{30}
           }
         }
       }
@@ -757,8 +763,8 @@
     ::testing::Values(
         // Scalar float
         BinaryData{"float", "float_50", "OpFDiv", "float_60", "__f32",
-                   "ScalarConstructor{50.000000}", "divide",
-                   "ScalarConstructor{60.000000}"},
+                   "ScalarConstructor[not set]{50.000000}", "divide",
+                   "ScalarConstructor[not set]{60.000000}"},
         // Vector float
         BinaryData{"v2float", "v2float_50_60", "OpFDiv", "v2float_60_50",
                    "__vec_2__f32", AstFor("v2float_50_60"), "divide",
@@ -770,7 +776,8 @@
     ::testing::Values(
         // Both uint
         BinaryData{"uint", "uint_10", "OpUMod", "uint_20", "__u32",
-                   "ScalarConstructor{10}", "modulo", "ScalarConstructor{20}"},
+                   "ScalarConstructor[not set]{10}", "modulo",
+                   "ScalarConstructor[not set]{20}"},
         // Both v2uint
         BinaryData{"v2uint", "v2uint_10_20", "OpUMod", "v2uint_20_10",
                    "__vec_2__u32", AstFor("v2uint_10_20"), "modulo",
@@ -785,7 +792,8 @@
     ::testing::Values(
         // Both int
         BinaryData{"int", "int_30", "OpSMod", "int_40", "__i32",
-                   "ScalarConstructor{30}", "modulo", "ScalarConstructor{40}"},
+                   "ScalarConstructor[not set]{30}", "modulo",
+                   "ScalarConstructor[not set]{40}"},
         // Both v2int
         BinaryData{"v2int", "v2int_30_40", "OpSMod", "v2int_40_30",
                    "__vec_2__i32", AstFor("v2int_30_40"), "modulo",
@@ -797,16 +805,16 @@
     ::testing::Values(
         // Mixed, returning int, second arg uint
         BinaryData{"int", "int_30", "OpSMod", "uint_10", "__i32",
-                   "ScalarConstructor{30}", "modulo",
-                   R"(Bitcast<__i32>{
-          ScalarConstructor{10}
+                   "ScalarConstructor[not set]{30}", "modulo",
+                   R"(Bitcast[not set]<__i32>{
+          ScalarConstructor[not set]{10}
         })"},
         // Mixed, returning int, first arg uint
         BinaryData{"int", "uint_10", "OpSMod", "int_30", "__i32",
-                   R"(Bitcast<__i32>{
-          ScalarConstructor{10}
+                   R"(Bitcast[not set]<__i32>{
+          ScalarConstructor[not set]{10}
         })",
-                   "modulo", "ScalarConstructor{30}"},
+                   "modulo", "ScalarConstructor[not set]{30}"},
         // Mixed, returning v2int, first arg v2uint
         BinaryData{"v2int", "v2uint_10_20", "OpSMod", "v2int_30_40",
                    "__vec_2__i32", AstFor("cast_int_v2uint_10_20"), "modulo",
@@ -840,11 +848,11 @@
     none
     __u32
     {
-      Bitcast<__u32>{
-        Binary{
-          ScalarConstructor{30}
+      Bitcast[not set]<__u32>{
+        Binary[not set]{
+          ScalarConstructor[not set]{30}
           modulo
-          ScalarConstructor{40}
+          ScalarConstructor[not set]{40}
         }
       }
     }
@@ -875,18 +883,18 @@
     none
     __vec_2__u32
     {
-      Bitcast<__vec_2__u32>{
-        Binary{
-          TypeConstructor{
+      Bitcast[not set]<__vec_2__u32>{
+        Binary[not set]{
+          TypeConstructor[not set]{
             __vec_2__i32
-            ScalarConstructor{30}
-            ScalarConstructor{40}
+            ScalarConstructor[not set]{30}
+            ScalarConstructor[not set]{40}
           }
           modulo
-          TypeConstructor{
+          TypeConstructor[not set]{
             __vec_2__i32
-            ScalarConstructor{40}
-            ScalarConstructor{30}
+            ScalarConstructor[not set]{40}
+            ScalarConstructor[not set]{30}
           }
         }
       }
@@ -901,8 +909,8 @@
     ::testing::Values(
         // Scalar float
         BinaryData{"float", "float_50", "OpFMod", "float_60", "__f32",
-                   "ScalarConstructor{50.000000}", "modulo",
-                   "ScalarConstructor{60.000000}"},
+                   "ScalarConstructor[not set]{50.000000}", "modulo",
+                   "ScalarConstructor[not set]{60.000000}"},
         // Vector float
         BinaryData{"v2float", "v2float_50_60", "OpFMod", "v2float_60_50",
                    "__vec_2__f32", AstFor("v2float_50_60"), "modulo",
@@ -927,10 +935,10 @@
     none
     __vec_2__f32
     {
-      Binary{
-        Identifier{x_1}
+      Binary[not set]{
+        Identifier[not set]{x_1}
         multiply
-        Identifier{x_2}
+        Identifier[not set]{x_2}
       }
     }
   })"))
@@ -956,10 +964,10 @@
     none
     __mat_2_2__f32
     {
-      Binary{
-        Identifier{x_1}
+      Binary[not set]{
+        Identifier[not set]{x_1}
         multiply
-        Identifier{x_2}
+        Identifier[not set]{x_2}
       }
     }
   })"))
@@ -985,10 +993,10 @@
     none
     __mat_2_2__f32
     {
-      Binary{
-        Identifier{x_1}
+      Binary[not set]{
+        Identifier[not set]{x_1}
         multiply
-        Identifier{x_2}
+        Identifier[not set]{x_2}
       }
     }
   })"))
@@ -1014,10 +1022,10 @@
     none
     __mat_2_2__f32
     {
-      Binary{
-        Identifier{x_1}
+      Binary[not set]{
+        Identifier[not set]{x_1}
         multiply
-        Identifier{x_2}
+        Identifier[not set]{x_2}
       }
     }
   })"))
@@ -1043,10 +1051,10 @@
     none
     __mat_2_2__f32
     {
-      Binary{
-        Identifier{x_1}
+      Binary[not set]{
+        Identifier[not set]{x_1}
         multiply
-        Identifier{x_2}
+        Identifier[not set]{x_2}
       }
     }
   })"))
@@ -1072,11 +1080,11 @@
     none
     __f32
     {
-      Call{
-        Identifier{dot}
+      Call[not set]{
+        Identifier[not set]{dot}
         (
-          Identifier{x_1}
-          Identifier{x_2}
+          Identifier[not set]{x_1}
+          Identifier[not set]{x_2}
         )
       }
     }
@@ -1103,11 +1111,11 @@
     none
     __mat_2_2__f32
     {
-      Call{
-        Identifier{outerProduct}
+      Call[not set]{
+        Identifier[not set]{outerProduct}
         (
-          Identifier{x_1}
-          Identifier{x_2}
+          Identifier[not set]{x_1}
+          Identifier[not set]{x_2}
         )
       }
     }
diff --git a/src/reader/spirv/function_bit_test.cc b/src/reader/spirv/function_bit_test.cc
index 636732f..d34b963 100644
--- a/src/reader/spirv/function_bit_test.cc
+++ b/src/reader/spirv/function_bit_test.cc
@@ -63,54 +63,54 @@
 // Returns the AST dump for a given SPIR-V assembly constant.
 std::string AstFor(std::string assembly) {
   if (assembly == "v2uint_10_20") {
-    return R"(TypeConstructor{
+    return R"(TypeConstructor[not set]{
           __vec_2__u32
-          ScalarConstructor{10}
-          ScalarConstructor{20}
+          ScalarConstructor[not set]{10}
+          ScalarConstructor[not set]{20}
         })";
   }
   if (assembly == "v2uint_20_10") {
-    return R"(TypeConstructor{
+    return R"(TypeConstructor[not set]{
           __vec_2__u32
-          ScalarConstructor{20}
-          ScalarConstructor{10}
+          ScalarConstructor[not set]{20}
+          ScalarConstructor[not set]{10}
         })";
   }
   if (assembly == "v2int_30_40") {
-    return R"(TypeConstructor{
+    return R"(TypeConstructor[not set]{
           __vec_2__i32
-          ScalarConstructor{30}
-          ScalarConstructor{40}
+          ScalarConstructor[not set]{30}
+          ScalarConstructor[not set]{40}
         })";
   }
   if (assembly == "v2int_40_30") {
-    return R"(TypeConstructor{
+    return R"(TypeConstructor[not set]{
           __vec_2__i32
-          ScalarConstructor{40}
-          ScalarConstructor{30}
+          ScalarConstructor[not set]{40}
+          ScalarConstructor[not set]{30}
         })";
   }
   if (assembly == "cast_int_v2uint_10_20") {
-    return R"(Bitcast<__vec_2__i32>{
-          TypeConstructor{
+    return R"(Bitcast[not set]<__vec_2__i32>{
+          TypeConstructor[not set]{
             __vec_2__u32
-            ScalarConstructor{10}
-            ScalarConstructor{20}
+            ScalarConstructor[not set]{10}
+            ScalarConstructor[not set]{20}
           }
         })";
   }
   if (assembly == "v2float_50_60") {
-    return R"(TypeConstructor{
+    return R"(TypeConstructor[not set]{
           __vec_2__f32
-          ScalarConstructor{50.000000}
-          ScalarConstructor{60.000000}
+          ScalarConstructor[not set]{50.000000}
+          ScalarConstructor[not set]{60.000000}
         })";
   }
   if (assembly == "v2float_60_50") {
-    return R"(TypeConstructor{
+    return R"(TypeConstructor[not set]{
           __vec_2__f32
-          ScalarConstructor{60.000000}
-          ScalarConstructor{50.000000}
+          ScalarConstructor[not set]{60.000000}
+          ScalarConstructor[not set]{50.000000}
         })";
   }
   return "bad case";
@@ -160,7 +160,7 @@
     x_1
     none
     )"
-     << GetParam().ast_type << "\n    {\n      Binary{"
+     << GetParam().ast_type << "\n    {\n      Binary[not set]{"
      << "\n        " << GetParam().ast_lhs << "\n        " << GetParam().ast_op
      << "\n        " << GetParam().ast_rhs;
   EXPECT_THAT(ToString(fe.ast_body()), HasSubstr(ss.str())) << assembly;
@@ -172,20 +172,20 @@
     ::testing::Values(
         // Both uint
         BinaryData{"uint", "uint_10", "OpShiftLeftLogical", "uint_20", "__u32",
-                   "ScalarConstructor{10}", "shift_left",
-                   "ScalarConstructor{20}"},
+                   "ScalarConstructor[not set]{10}", "shift_left",
+                   "ScalarConstructor[not set]{20}"},
         // Both int
         BinaryData{"int", "int_30", "OpShiftLeftLogical", "int_40", "__i32",
-                   "ScalarConstructor{30}", "shift_left",
-                   "ScalarConstructor{40}"},
+                   "ScalarConstructor[not set]{30}", "shift_left",
+                   "ScalarConstructor[not set]{40}"},
         // Mixed, returning uint
         BinaryData{"uint", "int_30", "OpShiftLeftLogical", "uint_10", "__u32",
-                   "ScalarConstructor{30}", "shift_left",
-                   "ScalarConstructor{10}"},
+                   "ScalarConstructor[not set]{30}", "shift_left",
+                   "ScalarConstructor[not set]{10}"},
         // Mixed, returning int
         BinaryData{"int", "int_30", "OpShiftLeftLogical", "uint_10", "__i32",
-                   "ScalarConstructor{30}", "shift_left",
-                   "ScalarConstructor{10}"},
+                   "ScalarConstructor[not set]{30}", "shift_left",
+                   "ScalarConstructor[not set]{10}"},
         // Both v2uint
         BinaryData{"v2uint", "v2uint_10_20", "OpShiftLeftLogical",
                    "v2uint_20_10", "__vec_2__u32", AstFor("v2uint_10_20"),
@@ -209,20 +209,20 @@
     ::testing::Values(
         // Both uint
         BinaryData{"uint", "uint_10", "OpShiftRightLogical", "uint_20", "__u32",
-                   "ScalarConstructor{10}", "shift_right",
-                   "ScalarConstructor{20}"},
+                   "ScalarConstructor[not set]{10}", "shift_right",
+                   "ScalarConstructor[not set]{20}"},
         // Both int
         BinaryData{"int", "int_30", "OpShiftRightLogical", "int_40", "__i32",
-                   "ScalarConstructor{30}", "shift_right",
-                   "ScalarConstructor{40}"},
+                   "ScalarConstructor[not set]{30}", "shift_right",
+                   "ScalarConstructor[not set]{40}"},
         // Mixed, returning uint
         BinaryData{"uint", "int_30", "OpShiftRightLogical", "uint_10", "__u32",
-                   "ScalarConstructor{30}", "shift_right",
-                   "ScalarConstructor{10}"},
+                   "ScalarConstructor[not set]{30}", "shift_right",
+                   "ScalarConstructor[not set]{10}"},
         // Mixed, returning int
         BinaryData{"int", "int_30", "OpShiftRightLogical", "uint_10", "__i32",
-                   "ScalarConstructor{30}", "shift_right",
-                   "ScalarConstructor{10}"},
+                   "ScalarConstructor[not set]{30}", "shift_right",
+                   "ScalarConstructor[not set]{10}"},
         // Both v2uint
         BinaryData{"v2uint", "v2uint_10_20", "OpShiftRightLogical",
                    "v2uint_20_10", "__vec_2__u32", AstFor("v2uint_10_20"),
@@ -246,20 +246,20 @@
     ::testing::Values(
         // Both uint
         BinaryData{"uint", "uint_10", "OpShiftRightArithmetic", "uint_20",
-                   "__u32", "ScalarConstructor{10}", "shift_right",
-                   "ScalarConstructor{20}"},
+                   "__u32", "ScalarConstructor[not set]{10}", "shift_right",
+                   "ScalarConstructor[not set]{20}"},
         // Both int
         BinaryData{"int", "int_30", "OpShiftRightArithmetic", "int_40", "__i32",
-                   "ScalarConstructor{30}", "shift_right",
-                   "ScalarConstructor{40}"},
+                   "ScalarConstructor[not set]{30}", "shift_right",
+                   "ScalarConstructor[not set]{40}"},
         // Mixed, returning uint
         BinaryData{"uint", "int_30", "OpShiftRightArithmetic", "uint_10",
-                   "__u32", "ScalarConstructor{30}", "shift_right",
-                   "ScalarConstructor{10}"},
+                   "__u32", "ScalarConstructor[not set]{30}", "shift_right",
+                   "ScalarConstructor[not set]{10}"},
         // Mixed, returning int
         BinaryData{"int", "int_30", "OpShiftRightArithmetic", "uint_10",
-                   "__i32", "ScalarConstructor{30}", "shift_right",
-                   "ScalarConstructor{10}"},
+                   "__i32", "ScalarConstructor[not set]{30}", "shift_right",
+                   "ScalarConstructor[not set]{10}"},
         // Both v2uint
         BinaryData{"v2uint", "v2uint_10_20", "OpShiftRightArithmetic",
                    "v2uint_20_10", "__vec_2__u32", AstFor("v2uint_10_20"),
@@ -283,16 +283,20 @@
     ::testing::Values(
         // Both uint
         BinaryData{"uint", "uint_10", "OpBitwiseAnd", "uint_20", "__u32",
-                   "ScalarConstructor{10}", "and", "ScalarConstructor{20}"},
+                   "ScalarConstructor[not set]{10}", "and",
+                   "ScalarConstructor[not set]{20}"},
         // Both int
         BinaryData{"int", "int_30", "OpBitwiseAnd", "int_40", "__i32",
-                   "ScalarConstructor{30}", "and", "ScalarConstructor{40}"},
+                   "ScalarConstructor[not set]{30}", "and",
+                   "ScalarConstructor[not set]{40}"},
         // Mixed, returning uint
         BinaryData{"uint", "int_30", "OpBitwiseAnd", "uint_10", "__u32",
-                   "ScalarConstructor{30}", "and", "ScalarConstructor{10}"},
+                   "ScalarConstructor[not set]{30}", "and",
+                   "ScalarConstructor[not set]{10}"},
         // Mixed, returning int
         BinaryData{"int", "int_30", "OpBitwiseAnd", "uint_10", "__i32",
-                   "ScalarConstructor{30}", "and", "ScalarConstructor{10}"},
+                   "ScalarConstructor[not set]{30}", "and",
+                   "ScalarConstructor[not set]{10}"},
         // Both v2uint
         BinaryData{"v2uint", "v2uint_10_20", "OpBitwiseAnd", "v2uint_20_10",
                    "__vec_2__u32", AstFor("v2uint_10_20"), "and",
@@ -316,16 +320,20 @@
     ::testing::Values(
         // Both uint
         BinaryData{"uint", "uint_10", "OpBitwiseOr", "uint_20", "__u32",
-                   "ScalarConstructor{10}", "or", "ScalarConstructor{20}"},
+                   "ScalarConstructor[not set]{10}", "or",
+                   "ScalarConstructor[not set]{20}"},
         // Both int
         BinaryData{"int", "int_30", "OpBitwiseOr", "int_40", "__i32",
-                   "ScalarConstructor{30}", "or", "ScalarConstructor{40}"},
+                   "ScalarConstructor[not set]{30}", "or",
+                   "ScalarConstructor[not set]{40}"},
         // Mixed, returning uint
         BinaryData{"uint", "int_30", "OpBitwiseOr", "uint_10", "__u32",
-                   "ScalarConstructor{30}", "or", "ScalarConstructor{10}"},
+                   "ScalarConstructor[not set]{30}", "or",
+                   "ScalarConstructor[not set]{10}"},
         // Mixed, returning int
         BinaryData{"int", "int_30", "OpBitwiseOr", "uint_10", "__i32",
-                   "ScalarConstructor{30}", "or", "ScalarConstructor{10}"},
+                   "ScalarConstructor[not set]{30}", "or",
+                   "ScalarConstructor[not set]{10}"},
         // Both v2uint
         BinaryData{"v2uint", "v2uint_10_20", "OpBitwiseOr", "v2uint_20_10",
                    "__vec_2__u32", AstFor("v2uint_10_20"), "or",
@@ -349,16 +357,20 @@
     ::testing::Values(
         // Both uint
         BinaryData{"uint", "uint_10", "OpBitwiseXor", "uint_20", "__u32",
-                   "ScalarConstructor{10}", "xor", "ScalarConstructor{20}"},
+                   "ScalarConstructor[not set]{10}", "xor",
+                   "ScalarConstructor[not set]{20}"},
         // Both int
         BinaryData{"int", "int_30", "OpBitwiseXor", "int_40", "__i32",
-                   "ScalarConstructor{30}", "xor", "ScalarConstructor{40}"},
+                   "ScalarConstructor[not set]{30}", "xor",
+                   "ScalarConstructor[not set]{40}"},
         // Mixed, returning uint
         BinaryData{"uint", "int_30", "OpBitwiseXor", "uint_10", "__u32",
-                   "ScalarConstructor{30}", "xor", "ScalarConstructor{10}"},
+                   "ScalarConstructor[not set]{30}", "xor",
+                   "ScalarConstructor[not set]{10}"},
         // Mixed, returning int
         BinaryData{"int", "int_30", "OpBitwiseXor", "uint_10", "__i32",
-                   "ScalarConstructor{30}", "xor", "ScalarConstructor{10}"},
+                   "ScalarConstructor[not set]{30}", "xor",
+                   "ScalarConstructor[not set]{10}"},
         // Both v2uint
         BinaryData{"v2uint", "v2uint_10_20", "OpBitwiseXor", "v2uint_20_10",
                    "__vec_2__u32", AstFor("v2uint_10_20"), "xor",
@@ -394,9 +406,9 @@
     none
     __i32
     {
-      UnaryOp{
+      UnaryOp[not set]{
         not
-        ScalarConstructor{30}
+        ScalarConstructor[not set]{30}
       }
     }
   })"))
@@ -421,10 +433,10 @@
     none
     __i32
     {
-      Bitcast<__i32>{
-        UnaryOp{
+      Bitcast[not set]<__i32>{
+        UnaryOp[not set]{
           not
-          ScalarConstructor{10}
+          ScalarConstructor[not set]{10}
         }
       }
     }
@@ -450,10 +462,10 @@
     none
     __u32
     {
-      Bitcast<__u32>{
-        UnaryOp{
+      Bitcast[not set]<__u32>{
+        UnaryOp[not set]{
           not
-          ScalarConstructor{30}
+          ScalarConstructor[not set]{30}
         }
       }
     }
@@ -479,9 +491,9 @@
     none
     __u32
     {
-      UnaryOp{
+      UnaryOp[not set]{
         not
-        ScalarConstructor{10}
+        ScalarConstructor[not set]{10}
       }
     }
   })"))
@@ -506,12 +518,12 @@
     none
     __vec_2__i32
     {
-      UnaryOp{
+      UnaryOp[not set]{
         not
-        TypeConstructor{
+        TypeConstructor[not set]{
           __vec_2__i32
-          ScalarConstructor{30}
-          ScalarConstructor{40}
+          ScalarConstructor[not set]{30}
+          ScalarConstructor[not set]{40}
         }
       }
     }
@@ -537,13 +549,13 @@
     none
     __vec_2__i32
     {
-      Bitcast<__vec_2__i32>{
-        UnaryOp{
+      Bitcast[not set]<__vec_2__i32>{
+        UnaryOp[not set]{
           not
-          TypeConstructor{
+          TypeConstructor[not set]{
             __vec_2__u32
-            ScalarConstructor{10}
-            ScalarConstructor{20}
+            ScalarConstructor[not set]{10}
+            ScalarConstructor[not set]{20}
           }
         }
       }
@@ -570,13 +582,13 @@
     none
     __vec_2__u32
     {
-      Bitcast<__vec_2__u32>{
-        UnaryOp{
+      Bitcast[not set]<__vec_2__u32>{
+        UnaryOp[not set]{
           not
-          TypeConstructor{
+          TypeConstructor[not set]{
             __vec_2__i32
-            ScalarConstructor{30}
-            ScalarConstructor{40}
+            ScalarConstructor[not set]{30}
+            ScalarConstructor[not set]{40}
           }
         }
       }
@@ -602,12 +614,12 @@
     none
     __vec_2__u32
     {
-      UnaryOp{
+      UnaryOp[not set]{
         not
-        TypeConstructor{
+        TypeConstructor[not set]{
           __vec_2__u32
-          ScalarConstructor{10}
-          ScalarConstructor{20}
+          ScalarConstructor[not set]{10}
+          ScalarConstructor[not set]{20}
         }
       }
     }
diff --git a/src/reader/spirv/function_call_test.cc b/src/reader/spirv/function_call_test.cc
index e2ab099..2686ab5 100644
--- a/src/reader/spirv/function_call_test.cc
+++ b/src/reader/spirv/function_call_test.cc
@@ -56,8 +56,8 @@
   Function x_100 -> __void
   ()
   {
-    Call{
-      Identifier{x_50}
+    Call[not set]{
+      Identifier[not set]{x_50}
       (
       )
     }
@@ -96,8 +96,8 @@
     none
     __u32
     {
-      Call{
-        Identifier{x_50}
+      Call[not set]{
+        Identifier[not set]{x_50}
         (
         )
       }
@@ -113,7 +113,7 @@
     EXPECT_TRUE(fe.EmitBody());
     EXPECT_THAT(ToString(fe.ast_body()), HasSubstr(R"(Return{
   {
-    ScalarConstructor{42}
+    ScalarConstructor[not set]{42}
   }
 })")) << ToString(fe.ast_body());
   }
@@ -159,8 +159,8 @@
     none
     __u32
     {
-      Call{
-        Identifier{x_50}
+      Call[not set]{
+        Identifier[not set]{x_50}
         (
         )
       }
@@ -168,12 +168,12 @@
   }
 }
 Assignment{
-  Identifier{x_10}
-  Identifier{x_1}
+  Identifier[not set]{x_10}
+  Identifier[not set]{x_1}
 }
 Assignment{
-  Identifier{x_10}
-  Identifier{x_1}
+  Identifier[not set]{x_10}
+  Identifier[not set]{x_1}
 }
 Return{})"))
         << ToString(fe.ast_body());
@@ -183,7 +183,7 @@
     EXPECT_TRUE(fe.EmitBody()) << p->error();
     EXPECT_THAT(ToString(fe.ast_body()), HasSubstr(R"(Return{
   {
-    ScalarConstructor{42}
+    ScalarConstructor[not set]{42}
   }
 })")) << ToString(fe.ast_body());
   }
@@ -232,10 +232,10 @@
   {
     Return{
       {
-        Binary{
-          Identifier{x_51}
+        Binary[not set]{
+          Identifier[not set]{x_51}
           add
-          Identifier{x_52}
+          Identifier[not set]{x_52}
         }
       }
     }
@@ -249,11 +249,11 @@
         none
         __u32
         {
-          Call{
-            Identifier{x_50}
+          Call[not set]{
+            Identifier[not set]{x_50}
             (
-              ScalarConstructor{42}
-              ScalarConstructor{84}
+              ScalarConstructor[not set]{42}
+              ScalarConstructor[not set]{84}
             )
           }
         }
diff --git a/src/reader/spirv/function_cfg_test.cc b/src/reader/spirv/function_cfg_test.cc
index ea3b0a1..af2553c 100644
--- a/src/reader/spirv/function_cfg_test.cc
+++ b/src/reader/spirv/function_cfg_test.cc
@@ -7362,8 +7362,8 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody()) << p->error();
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{1}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{1}
 }
 VariableDeclStatement{
   Variable{
@@ -7371,42 +7371,42 @@
     function
     __bool
     {
-      ScalarConstructor{true}
+      ScalarConstructor[not set]{true}
     }
   }
 }
 If{
   (
-    ScalarConstructor{false}
+    ScalarConstructor[not set]{false}
   )
   {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{2}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{2}
     }
     If{
       (
-        ScalarConstructor{true}
+        ScalarConstructor[not set]{true}
       )
       {
         Assignment{
-          Identifier{guard10}
-          ScalarConstructor{false}
+          Identifier[not set]{guard10}
+          ScalarConstructor[not set]{false}
         }
       }
     }
     If{
       (
-        Identifier{guard10}
+        Identifier[not set]{guard10}
       )
       {
         Assignment{
-          Identifier{var_1}
-          ScalarConstructor{3}
+          Identifier[not set]{var_1}
+          ScalarConstructor[not set]{3}
         }
         Assignment{
-          Identifier{guard10}
-          ScalarConstructor{false}
+          Identifier[not set]{guard10}
+          ScalarConstructor[not set]{false}
         }
       }
     }
@@ -7416,24 +7416,24 @@
   {
     If{
       (
-        Identifier{guard10}
+        Identifier[not set]{guard10}
       )
       {
         Assignment{
-          Identifier{var_1}
-          ScalarConstructor{4}
+          Identifier[not set]{var_1}
+          ScalarConstructor[not set]{4}
         }
         Assignment{
-          Identifier{guard10}
-          ScalarConstructor{false}
+          Identifier[not set]{guard10}
+          ScalarConstructor[not set]{false}
         }
       }
     }
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{5}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{5}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -7472,8 +7472,8 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody()) << p->error();
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{1}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{1}
 }
 VariableDeclStatement{
   Variable{
@@ -7481,22 +7481,22 @@
     function
     __bool
     {
-      ScalarConstructor{true}
+      ScalarConstructor[not set]{true}
     }
   }
 }
 If{
   (
-    ScalarConstructor{false}
+    ScalarConstructor[not set]{false}
   )
   {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{2}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{2}
     }
     Assignment{
-      Identifier{guard10}
-      ScalarConstructor{false}
+      Identifier[not set]{guard10}
+      ScalarConstructor[not set]{false}
     }
   }
 }
@@ -7504,36 +7504,36 @@
   {
     If{
       (
-        Identifier{guard10}
+        Identifier[not set]{guard10}
       )
       {
         Assignment{
-          Identifier{var_1}
-          ScalarConstructor{3}
+          Identifier[not set]{var_1}
+          ScalarConstructor[not set]{3}
         }
         If{
           (
-            ScalarConstructor{true}
+            ScalarConstructor[not set]{true}
           )
           {
             Assignment{
-              Identifier{guard10}
-              ScalarConstructor{false}
+              Identifier[not set]{guard10}
+              ScalarConstructor[not set]{false}
             }
           }
         }
         If{
           (
-            Identifier{guard10}
+            Identifier[not set]{guard10}
           )
           {
             Assignment{
-              Identifier{var_1}
-              ScalarConstructor{4}
+              Identifier[not set]{var_1}
+              ScalarConstructor[not set]{4}
             }
             Assignment{
-              Identifier{guard10}
-              ScalarConstructor{false}
+              Identifier[not set]{guard10}
+              ScalarConstructor[not set]{false}
             }
           }
         }
@@ -7542,8 +7542,8 @@
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{5}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{5}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -7597,8 +7597,8 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody()) << p->error() << assembly;
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{1}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{1}
 }
 VariableDeclStatement{
   Variable{
@@ -7606,22 +7606,22 @@
     function
     __bool
     {
-      ScalarConstructor{true}
+      ScalarConstructor[not set]{true}
     }
   }
 }
 If{
   (
-    ScalarConstructor{false}
+    ScalarConstructor[not set]{false}
   )
   {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{2}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{2}
     }
     If{
       (
-        ScalarConstructor{true}
+        ScalarConstructor[not set]{true}
       )
       {
       }
@@ -7629,19 +7629,19 @@
     Else{
       {
         Assignment{
-          Identifier{guard10}
-          ScalarConstructor{false}
+          Identifier[not set]{guard10}
+          ScalarConstructor[not set]{false}
         }
       }
     }
     If{
       (
-        Identifier{guard10}
+        Identifier[not set]{guard10}
       )
       {
         Assignment{
-          Identifier{var_1}
-          ScalarConstructor{3}
+          Identifier[not set]{var_1}
+          ScalarConstructor[not set]{3}
         }
       }
     }
@@ -7651,32 +7651,32 @@
   {
     If{
       (
-        Identifier{guard10}
+        Identifier[not set]{guard10}
       )
       {
         Assignment{
-          Identifier{var_1}
-          ScalarConstructor{4}
+          Identifier[not set]{var_1}
+          ScalarConstructor[not set]{4}
         }
         If{
           (
-            ScalarConstructor{true}
+            ScalarConstructor[not set]{true}
           )
           {
             Assignment{
-              Identifier{guard10}
-              ScalarConstructor{false}
+              Identifier[not set]{guard10}
+              ScalarConstructor[not set]{false}
             }
           }
         }
         If{
           (
-            Identifier{guard10}
+            Identifier[not set]{guard10}
           )
           {
             Assignment{
-              Identifier{var_1}
-              ScalarConstructor{5}
+              Identifier[not set]{var_1}
+              ScalarConstructor[not set]{5}
             }
           }
         }
@@ -7686,16 +7686,16 @@
 }
 If{
   (
-    Identifier{guard10}
+    Identifier[not set]{guard10}
   )
   {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{6}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{6}
     }
     If{
       (
-        ScalarConstructor{false}
+        ScalarConstructor[not set]{false}
       )
       {
       }
@@ -7703,31 +7703,31 @@
     Else{
       {
         Assignment{
-          Identifier{guard10}
-          ScalarConstructor{false}
+          Identifier[not set]{guard10}
+          ScalarConstructor[not set]{false}
         }
       }
     }
     If{
       (
-        Identifier{guard10}
+        Identifier[not set]{guard10}
       )
       {
         Assignment{
-          Identifier{var_1}
-          ScalarConstructor{7}
+          Identifier[not set]{var_1}
+          ScalarConstructor[not set]{7}
         }
         Assignment{
-          Identifier{guard10}
-          ScalarConstructor{false}
+          Identifier[not set]{guard10}
+          ScalarConstructor[not set]{false}
         }
       }
     }
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{8}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{8}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -7787,7 +7787,7 @@
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(If{
   (
-    ScalarConstructor{false}
+    ScalarConstructor[not set]{false}
   )
   {
   }
@@ -7820,23 +7820,23 @@
   EXPECT_TRUE(fe.EmitBody()) << p->error();
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{0}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{0}
 }
 If{
   (
-    ScalarConstructor{false}
+    ScalarConstructor[not set]{false}
   )
   {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{1}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{1}
     }
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{999}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{999}
 }
 Return{}
 )"));
@@ -7866,12 +7866,12 @@
   EXPECT_TRUE(fe.EmitBody()) << p->error();
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{0}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{0}
 }
 If{
   (
-    ScalarConstructor{false}
+    ScalarConstructor[not set]{false}
   )
   {
   }
@@ -7879,14 +7879,14 @@
 Else{
   {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{1}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{1}
     }
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{999}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{999}
 }
 Return{}
 )"));
@@ -7920,31 +7920,31 @@
   EXPECT_TRUE(fe.EmitBody()) << p->error();
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{0}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{0}
 }
 If{
   (
-    ScalarConstructor{false}
+    ScalarConstructor[not set]{false}
   )
   {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{1}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{1}
     }
   }
 }
 Else{
   {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{2}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{2}
     }
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{999}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{999}
 }
 Return{}
 )"));
@@ -7985,42 +7985,42 @@
   EXPECT_TRUE(fe.EmitBody()) << p->error();
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{0}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{0}
 }
 If{
   (
-    ScalarConstructor{false}
+    ScalarConstructor[not set]{false}
   )
   {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{1}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{1}
     }
   }
 }
 Else{
   {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{2}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{2}
     }
   }
 }
 If{
   (
-    ScalarConstructor{true}
+    ScalarConstructor[not set]{true}
   )
   {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{3}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{3}
     }
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{999}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{999}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -8055,34 +8055,34 @@
   EXPECT_TRUE(fe.EmitBody()) << p->error();
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{0}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{0}
 }
 If{
   (
-    ScalarConstructor{false}
+    ScalarConstructor[not set]{false}
   )
   {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{1}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{1}
     }
   }
 }
 If{
   (
-    ScalarConstructor{true}
+    ScalarConstructor[not set]{true}
   )
   {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{3}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{3}
     }
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{999}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{999}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -8117,12 +8117,12 @@
   EXPECT_TRUE(fe.EmitBody()) << p->error();
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{0}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{0}
 }
 If{
   (
-    ScalarConstructor{false}
+    ScalarConstructor[not set]{false}
   )
   {
   }
@@ -8130,25 +8130,25 @@
 Else{
   {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{1}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{1}
     }
   }
 }
 If{
   (
-    ScalarConstructor{true}
+    ScalarConstructor[not set]{true}
   )
   {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{3}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{3}
     }
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{999}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{999}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -8200,44 +8200,44 @@
   EXPECT_TRUE(fe.EmitBody()) << p->error();
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{0}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{0}
 }
 If{
   (
-    ScalarConstructor{false}
+    ScalarConstructor[not set]{false}
   )
   {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{1}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{1}
     }
     If{
       (
-        ScalarConstructor{true}
+        ScalarConstructor[not set]{true}
       )
       {
         Assignment{
-          Identifier{var_1}
-          ScalarConstructor{2}
+          Identifier[not set]{var_1}
+          ScalarConstructor[not set]{2}
         }
       }
     }
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{3}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{3}
     }
   }
 }
 Else{
   {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{4}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{4}
     }
     If{
       (
-        ScalarConstructor{true}
+        ScalarConstructor[not set]{true}
       )
       {
       }
@@ -8245,20 +8245,20 @@
     Else{
       {
         Assignment{
-          Identifier{var_1}
-          ScalarConstructor{5}
+          Identifier[not set]{var_1}
+          ScalarConstructor[not set]{5}
         }
       }
     }
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{6}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{6}
     }
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{999}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{999}
 }
 Return{}
 )"));
@@ -8288,17 +8288,17 @@
   EXPECT_TRUE(fe.EmitBody()) << p->error();
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{0}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{0}
 }
 Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{1}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{1}
   }
   If{
     (
-      ScalarConstructor{false}
+      ScalarConstructor[not set]{false}
     )
     {
     }
@@ -8310,8 +8310,8 @@
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{999}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{999}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -8341,17 +8341,17 @@
   EXPECT_TRUE(fe.EmitBody()) << p->error();
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{0}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{0}
 }
 Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{1}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{1}
   }
   If{
     (
-      ScalarConstructor{false}
+      ScalarConstructor[not set]{false}
     )
     {
       Break{}
@@ -8359,8 +8359,8 @@
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{999}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{999}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -8390,18 +8390,18 @@
   EXPECT_TRUE(fe.EmitBody()) << p->error();
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{0}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{0}
 }
 Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{1}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{1}
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{999}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{999}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -8431,18 +8431,18 @@
   EXPECT_TRUE(fe.EmitBody()) << p->error();
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{0}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{0}
 }
 Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{1}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{1}
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{999}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{999}
 }
 Return{}
 )"));
@@ -8480,28 +8480,28 @@
   EXPECT_TRUE(fe.EmitBody()) << p->error();
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{0}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{0}
 }
 Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{1}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{1}
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{2}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{2}
   }
   continuing {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{3}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{3}
     }
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{999}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{999}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -8543,32 +8543,32 @@
   EXPECT_TRUE(fe.EmitBody()) << p->error();
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{0}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{0}
 }
 Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{1}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{1}
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{2}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{2}
   }
   continuing {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{3}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{3}
     }
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{4}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{4}
     }
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{999}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{999}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -8615,43 +8615,43 @@
   EXPECT_TRUE(fe.EmitBody()) << p->error();
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{0}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{0}
 }
 Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{1}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{1}
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{2}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{2}
   }
   continuing {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{3}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{3}
     }
     If{
       (
-        ScalarConstructor{true}
+        ScalarConstructor[not set]{true}
       )
       {
         Assignment{
-          Identifier{var_1}
-          ScalarConstructor{4}
+          Identifier[not set]{var_1}
+          ScalarConstructor[not set]{4}
         }
       }
     }
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{5}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{5}
     }
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{999}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{999}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -8685,21 +8685,21 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody()) << p->error();
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{0}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{0}
 }
 Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{1}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{1}
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{2}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{2}
   }
   If{
     (
-      ScalarConstructor{false}
+      ScalarConstructor[not set]{false}
     )
     {
       Break{}
@@ -8707,8 +8707,8 @@
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{3}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{3}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -8742,20 +8742,20 @@
   EXPECT_TRUE(fe.EmitBody()) << p->error();
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{1}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{1}
   }
   Break{}
   continuing {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{2}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{2}
     }
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{3}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{3}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -8800,12 +8800,12 @@
   EXPECT_TRUE(fe.EmitBody()) << p->error();
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{1}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{1}
   }
   If{
     (
-      ScalarConstructor{false}
+      ScalarConstructor[not set]{false}
     )
     {
     }
@@ -8816,19 +8816,19 @@
     }
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{2}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{2}
   }
   continuing {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{3}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{3}
     }
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{4}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{4}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -8865,12 +8865,12 @@
   EXPECT_TRUE(fe.EmitBody()) << p->error();
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{1}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{1}
   }
   If{
     (
-      ScalarConstructor{false}
+      ScalarConstructor[not set]{false}
     )
     {
     }
@@ -8881,19 +8881,19 @@
     }
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{2}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{2}
   }
   continuing {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{3}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{3}
     }
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{4}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{4}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -8938,24 +8938,24 @@
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Loop{
   If{
     (
-      ScalarConstructor{false}
+      ScalarConstructor[not set]{false}
     )
     {
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{1}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{1}
       }
       Continue{}
     }
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{2}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{2}
   }
   continuing {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{3}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{3}
     }
   }
 }
@@ -8993,14 +8993,14 @@
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{1}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{1}
   }
   Break{}
   continuing {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{2}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{2}
     }
   }
 }
@@ -9040,12 +9040,12 @@
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{1}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{1}
   }
   If{
     (
-      ScalarConstructor{false}
+      ScalarConstructor[not set]{false}
     )
     {
       Break{}
@@ -9053,8 +9053,8 @@
   }
   continuing {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{2}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{2}
     }
   }
 }
@@ -9094,12 +9094,12 @@
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{1}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{1}
   }
   If{
     (
-      ScalarConstructor{false}
+      ScalarConstructor[not set]{false}
     )
     {
     }
@@ -9111,8 +9111,8 @@
   }
   continuing {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{2}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{2}
     }
   }
 }
@@ -9154,25 +9154,25 @@
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{1}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{1}
   }
   If{
     (
-      ScalarConstructor{false}
+      ScalarConstructor[not set]{false}
     )
     {
       Break{}
     }
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{3}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{3}
   }
   continuing {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{2}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{2}
     }
   }
 }
@@ -9214,12 +9214,12 @@
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{1}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{1}
   }
   If{
     (
-      ScalarConstructor{false}
+      ScalarConstructor[not set]{false}
     )
     {
     }
@@ -9230,13 +9230,13 @@
     }
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{3}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{3}
   }
   continuing {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{2}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{2}
     }
   }
 }
@@ -9264,19 +9264,19 @@
   EXPECT_TRUE(fe.EmitBody()) << p->error();
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{1}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{1}
 }
 Switch{
-  ScalarConstructor{42}
+  ScalarConstructor[not set]{42}
   {
     Default{
     }
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{7}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{7}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -9307,16 +9307,16 @@
   EXPECT_TRUE(fe.EmitBody()) << p->error();
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{1}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{1}
 }
 Switch{
-  ScalarConstructor{42}
+  ScalarConstructor[not set]{42}
   {
     Case 20{
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{20}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{20}
       }
     }
     Default{
@@ -9324,8 +9324,8 @@
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{7}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{7}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -9359,22 +9359,22 @@
   EXPECT_TRUE(fe.EmitBody()) << p->error();
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{1}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{1}
 }
 Switch{
-  ScalarConstructor{42}
+  ScalarConstructor[not set]{42}
   {
     Case 30{
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{30}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{30}
       }
     }
     Case 20{
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{20}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{20}
       }
     }
     Default{
@@ -9382,8 +9382,8 @@
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{7}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{7}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -9417,22 +9417,22 @@
   EXPECT_TRUE(fe.EmitBody()) << p->error();
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{1}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{1}
 }
 Switch{
-  ScalarConstructor{42}
+  ScalarConstructor[not set]{42}
   {
     Case 30{
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{30}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{30}
       }
     }
     Case 20, 40{
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{20}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{20}
       }
     }
     Default{
@@ -9440,8 +9440,8 @@
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{7}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{7}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -9481,35 +9481,35 @@
   EXPECT_TRUE(fe.EmitBody()) << p->error();
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{1}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{1}
 }
 Switch{
-  ScalarConstructor{42}
+  ScalarConstructor[not set]{42}
   {
     Case 40{
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{40}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{40}
       }
     }
     Case 20{
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{20}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{20}
       }
     }
     Default{
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{30}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{30}
       }
     }
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{7}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{7}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -9550,22 +9550,22 @@
   EXPECT_TRUE(fe.EmitBody()) << p->error();
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{1}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{1}
 }
 Switch{
-  ScalarConstructor{42}
+  ScalarConstructor[not set]{42}
   {
     Case 40{
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{40}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{40}
       }
     }
     Case 20{
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{20}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{20}
       }
     }
     Default{
@@ -9573,15 +9573,15 @@
     }
     Case 30{
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{30}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{30}
       }
     }
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{7}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{7}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -9620,28 +9620,28 @@
   EXPECT_TRUE(fe.EmitBody()) << p->error();
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{1}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{1}
 }
 Switch{
-  ScalarConstructor{42}
+  ScalarConstructor[not set]{42}
   {
     Case -294967296{
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{40}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{40}
       }
     }
     Case 2000000000{
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{30}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{30}
       }
     }
     Case 20{
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{20}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{20}
       }
     }
     Default{
@@ -9649,8 +9649,8 @@
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{7}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{7}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -9688,28 +9688,28 @@
   EXPECT_TRUE(fe.EmitBody()) << p->error();
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{1}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{1}
 }
 Switch{
-  ScalarConstructor{42}
+  ScalarConstructor[not set]{42}
   {
     Case 50{
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{40}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{40}
       }
     }
     Case 2000000000{
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{30}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{30}
       }
     }
     Case 20{
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{20}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{20}
       }
     }
     Default{
@@ -9717,8 +9717,8 @@
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{7}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{7}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -9763,7 +9763,7 @@
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(If{
   (
-    ScalarConstructor{false}
+    ScalarConstructor[not set]{false}
   )
   {
     Return{}
@@ -9829,7 +9829,7 @@
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Return{
   {
-    ScalarConstructor{2}
+    ScalarConstructor[not set]{2}
   }
 }
 )")) << ToString(fe.ast_body());
@@ -9866,19 +9866,19 @@
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(If{
   (
-    ScalarConstructor{false}
+    ScalarConstructor[not set]{false}
   )
   {
     Return{
       {
-        ScalarConstructor{2}
+        ScalarConstructor[not set]{2}
       }
     }
   }
 }
 Return{
   {
-    ScalarConstructor{3}
+    ScalarConstructor[not set]{3}
   }
 }
 )")) << ToString(fe.ast_body());
@@ -9922,13 +9922,13 @@
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Loop{
   Return{
     {
-      ScalarConstructor{2}
+      ScalarConstructor[not set]{2}
     }
   }
 }
 Return{
   {
-    ScalarConstructor{3}
+    ScalarConstructor[not set]{3}
   }
 }
 )")) << ToString(fe.ast_body());
@@ -9973,7 +9973,7 @@
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(If{
   (
-    ScalarConstructor{false}
+    ScalarConstructor[not set]{false}
   )
   {
     Discard{}
@@ -10055,7 +10055,7 @@
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(If{
   (
-    ScalarConstructor{false}
+    ScalarConstructor[not set]{false}
   )
   {
     Return{}
@@ -10121,7 +10121,7 @@
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Return{
   {
-    ScalarConstructor{0}
+    ScalarConstructor[not set]{0}
   }
 }
 )")) << ToString(fe.ast_body());
@@ -10154,8 +10154,8 @@
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Loop{
   continuing {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{1}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{1}
     }
   }
 }
@@ -10186,8 +10186,8 @@
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{1}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{1}
   }
 }
 Return{}
@@ -10220,16 +10220,16 @@
   EXPECT_TRUE(fe.EmitBody()) << p->error();
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{1}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{1}
 }
 Switch{
-  ScalarConstructor{42}
+  ScalarConstructor[not set]{42}
   {
     Case 20{
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{20}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{20}
       }
     }
     Default{
@@ -10237,8 +10237,8 @@
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{7}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{7}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -10278,32 +10278,32 @@
   EXPECT_TRUE(fe.EmitBody()) << p->error();
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{1}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{1}
 }
 Switch{
-  ScalarConstructor{42}
+  ScalarConstructor[not set]{42}
   {
     Case 20{
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{20}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{20}
       }
       If{
         (
-          ScalarConstructor{false}
+          ScalarConstructor[not set]{false}
         )
         {
           Assignment{
-            Identifier{var_1}
-            ScalarConstructor{40}
+            Identifier[not set]{var_1}
+            ScalarConstructor[not set]{40}
           }
           Break{}
         }
       }
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{50}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{50}
       }
     }
     Default{
@@ -10311,8 +10311,8 @@
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{7}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{7}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -10348,14 +10348,14 @@
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{1}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{1}
   }
   Break{}
   continuing {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{2}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{2}
     }
   }
 }
@@ -10429,8 +10429,8 @@
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Loop{
   continuing {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{1}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{1}
     }
     Break{}
   }
@@ -10468,13 +10468,13 @@
   EXPECT_TRUE(fe.EmitBody()) << p->error();
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{1}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{1}
   }
   continuing {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{2}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{2}
     }
   }
 }
@@ -10521,24 +10521,24 @@
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Loop{
   If{
     (
-      ScalarConstructor{false}
+      ScalarConstructor[not set]{false}
     )
     {
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{1}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{1}
       }
       Continue{}
     }
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{2}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{2}
   }
   continuing {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{3}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{3}
     }
   }
 }
@@ -10586,25 +10586,25 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody()) << p->error();
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{1}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{1}
 }
 Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{2}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{2}
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{3}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{3}
   }
   Switch{
-    ScalarConstructor{42}
+    ScalarConstructor[not set]{42}
     {
       Case 40{
         Assignment{
-          Identifier{var_1}
-          ScalarConstructor{4}
+          Identifier[not set]{var_1}
+          ScalarConstructor[not set]{4}
         }
         Continue{}
       }
@@ -10613,19 +10613,19 @@
     }
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{5}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{5}
   }
   continuing {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{6}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{6}
     }
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{7}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{7}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -10655,18 +10655,18 @@
   EXPECT_TRUE(fe.EmitBody()) << p->error();
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(If{
   (
-    ScalarConstructor{false}
+    ScalarConstructor[not set]{false}
   )
   {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{1}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{1}
     }
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{2}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{2}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -10696,7 +10696,7 @@
   EXPECT_TRUE(fe.EmitBody()) << p->error();
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(If{
   (
-    ScalarConstructor{false}
+    ScalarConstructor[not set]{false}
   )
   {
   }
@@ -10704,14 +10704,14 @@
 Else{
   {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{1}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{1}
     }
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{2}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{2}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -10745,23 +10745,23 @@
   EXPECT_TRUE(fe.EmitBody()) << p->error();
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{1}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{1}
 }
 Switch{
-  ScalarConstructor{42}
+  ScalarConstructor[not set]{42}
   {
     Case 20{
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{20}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{20}
       }
       Fallthrough{}
     }
     Case 30{
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{30}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{30}
       }
     }
     Default{
@@ -10769,8 +10769,8 @@
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{7}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{7}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -10794,12 +10794,12 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody()) << p->error();
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{1}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{1}
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{2}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{2}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -10896,18 +10896,18 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody()) << p->error();
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{0}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{0}
 }
 Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{1}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{1}
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{5}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{5}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -10937,17 +10937,17 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody()) << p->error();
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{0}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{0}
 }
 Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{1}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{1}
   }
   If{
     (
-      ScalarConstructor{false}
+      ScalarConstructor[not set]{false}
     )
     {
       Break{}
@@ -10955,8 +10955,8 @@
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{5}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{5}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -10986,17 +10986,17 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody()) << p->error();
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{0}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{0}
 }
 Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{1}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{1}
   }
   If{
     (
-      ScalarConstructor{false}
+      ScalarConstructor[not set]{false}
     )
     {
     }
@@ -11008,8 +11008,8 @@
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{5}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{5}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -11042,18 +11042,18 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody()) << p->error();
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{0}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{0}
 }
 Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{1}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{1}
   }
   continuing {
     If{
       (
-        ScalarConstructor{false}
+        ScalarConstructor[not set]{false}
       )
       {
         Break{}
@@ -11062,8 +11062,8 @@
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{5}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{5}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -11096,18 +11096,18 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody()) << p->error();
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{0}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{0}
 }
 Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{1}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{1}
   }
   continuing {
     If{
       (
-        ScalarConstructor{false}
+        ScalarConstructor[not set]{false}
       )
       {
       }
@@ -11120,8 +11120,8 @@
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{5}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{5}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -11154,16 +11154,16 @@
   EXPECT_TRUE(fe.EmitBody()) << p->error();
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{1}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{1}
 }
 Switch{
-  ScalarConstructor{42}
+  ScalarConstructor[not set]{42}
   {
     Case 20{
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{20}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{20}
       }
     }
     Default{
@@ -11171,8 +11171,8 @@
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{7}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{7}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -11213,32 +11213,32 @@
   EXPECT_TRUE(fe.EmitBody()) << p->error();
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{1}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{1}
 }
 Switch{
-  ScalarConstructor{42}
+  ScalarConstructor[not set]{42}
   {
     Case 20{
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{20}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{20}
       }
       If{
         (
-          ScalarConstructor{false}
+          ScalarConstructor[not set]{false}
         )
         {
           Assignment{
-            Identifier{var_1}
-            ScalarConstructor{40}
+            Identifier[not set]{var_1}
+            ScalarConstructor[not set]{40}
           }
           Break{}
         }
       }
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{50}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{50}
       }
     }
     Default{
@@ -11246,8 +11246,8 @@
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{7}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{7}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -11294,29 +11294,29 @@
   EXPECT_TRUE(fe.EmitBody()) << p->error();
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{1}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{1}
 }
 Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{2}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{2}
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{3}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{3}
   }
   Switch{
-    ScalarConstructor{42}
+    ScalarConstructor[not set]{42}
     {
       Case 40{
         Assignment{
-          Identifier{var_1}
-          ScalarConstructor{40}
+          Identifier[not set]{var_1}
+          ScalarConstructor[not set]{40}
         }
         If{
           (
-            ScalarConstructor{false}
+            ScalarConstructor[not set]{false}
           )
           {
             Continue{}
@@ -11328,19 +11328,19 @@
     }
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{6}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{6}
   }
   continuing {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{7}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{7}
     }
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{8}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{8}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -11387,29 +11387,29 @@
   EXPECT_TRUE(fe.EmitBody()) << p->error();
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{1}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{1}
 }
 Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{2}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{2}
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{3}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{3}
   }
   Switch{
-    ScalarConstructor{42}
+    ScalarConstructor[not set]{42}
     {
       Case 40{
         Assignment{
-          Identifier{var_1}
-          ScalarConstructor{40}
+          Identifier[not set]{var_1}
+          ScalarConstructor[not set]{40}
         }
         If{
           (
-            ScalarConstructor{false}
+            ScalarConstructor[not set]{false}
           )
           {
           }
@@ -11425,19 +11425,19 @@
     }
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{6}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{6}
   }
   continuing {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{7}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{7}
     }
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{8}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{8}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -11470,20 +11470,20 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody()) << p->error();
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{1}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{1}
 }
 Switch{
-  ScalarConstructor{42}
+  ScalarConstructor[not set]{42}
   {
     Case 20{
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{20}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{20}
       }
       If{
         (
-          ScalarConstructor{false}
+          ScalarConstructor[not set]{false}
         )
         {
         }
@@ -11494,8 +11494,8 @@
         }
       }
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{30}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{30}
       }
     }
     Default{
@@ -11503,8 +11503,8 @@
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{8}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{8}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -11537,28 +11537,28 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody()) << p->error();
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{1}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{1}
 }
 Switch{
-  ScalarConstructor{42}
+  ScalarConstructor[not set]{42}
   {
     Case 20{
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{20}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{20}
       }
       If{
         (
-          ScalarConstructor{false}
+          ScalarConstructor[not set]{false}
         )
         {
           Break{}
         }
       }
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{30}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{30}
       }
     }
     Default{
@@ -11566,8 +11566,8 @@
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{8}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{8}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -11602,20 +11602,20 @@
   EXPECT_TRUE(fe.EmitBody()) << p->error();
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{1}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{1}
 }
 Switch{
-  ScalarConstructor{42}
+  ScalarConstructor[not set]{42}
   {
     Case 20{
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{20}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{20}
       }
       If{
         (
-          ScalarConstructor{false}
+          ScalarConstructor[not set]{false}
         )
         {
         }
@@ -11629,8 +11629,8 @@
     }
     Case 30{
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{30}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{30}
       }
     }
     Default{
@@ -11638,8 +11638,8 @@
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{7}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{7}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -11674,20 +11674,20 @@
   EXPECT_TRUE(fe.EmitBody()) << p->error();
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{1}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{1}
 }
 Switch{
-  ScalarConstructor{42}
+  ScalarConstructor[not set]{42}
   {
     Case 20{
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{20}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{20}
       }
       If{
         (
-          ScalarConstructor{false}
+          ScalarConstructor[not set]{false}
         )
         {
           Break{}
@@ -11697,8 +11697,8 @@
     }
     Case 30{
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{30}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{30}
       }
     }
     Default{
@@ -11706,8 +11706,8 @@
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{7}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{7}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -11741,25 +11741,25 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody()) << p->error();
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{0}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{0}
 }
 Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{1}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{1}
   }
   Break{}
   continuing {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{4}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{4}
     }
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{5}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{5}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -11797,29 +11797,29 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody()) << p->error();
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{0}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{0}
 }
 Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{1}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{1}
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{2}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{2}
   }
   Break{}
   continuing {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{4}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{4}
     }
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{5}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{5}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -11868,26 +11868,26 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody()) << p->error();
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{0}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{0}
 }
 Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{1}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{1}
   }
   If{
     (
-      ScalarConstructor{true}
+      ScalarConstructor[not set]{true}
     )
     {
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{2}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{2}
       }
       If{
         (
-          ScalarConstructor{false}
+          ScalarConstructor[not set]{false}
         )
         {
           Continue{}
@@ -11901,19 +11901,19 @@
     }
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{3}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{3}
   }
   continuing {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{4}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{4}
     }
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{5}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{5}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -11962,26 +11962,26 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody()) << p->error();
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{0}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{0}
 }
 Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{1}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{1}
   }
   If{
     (
-      ScalarConstructor{true}
+      ScalarConstructor[not set]{true}
     )
     {
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{2}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{2}
       }
       If{
         (
-          ScalarConstructor{false}
+          ScalarConstructor[not set]{false}
         )
         {
           Break{}
@@ -11995,19 +11995,19 @@
     }
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{3}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{3}
   }
   continuing {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{4}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{4}
     }
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{5}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{5}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -12099,21 +12099,21 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody()) << p->error();
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{0}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{0}
 }
 Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{1}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{1}
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{2}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{2}
   }
   If{
     (
-      ScalarConstructor{false}
+      ScalarConstructor[not set]{false}
     )
     {
     }
@@ -12124,19 +12124,19 @@
     }
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{3}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{3}
   }
   continuing {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{4}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{4}
     }
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{5}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{5}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -12178,40 +12178,40 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody()) << p->error();
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{0}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{0}
 }
 Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{1}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{1}
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{2}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{2}
   }
   If{
     (
-      ScalarConstructor{false}
+      ScalarConstructor[not set]{false}
     )
     {
       Break{}
     }
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{3}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{3}
   }
   continuing {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{4}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{4}
     }
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{5}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{5}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -12244,24 +12244,24 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody()) << p->error();
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{0}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{0}
 }
 Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{1}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{1}
   }
   continuing {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{4}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{4}
     }
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{5}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{5}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -12299,28 +12299,28 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody()) << p->error();
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{0}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{0}
 }
 Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{1}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{1}
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{2}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{2}
   }
   continuing {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{4}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{4}
     }
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{5}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{5}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -12369,44 +12369,44 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody()) << p->error();
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{0}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{0}
 }
 Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{1}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{1}
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{2}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{2}
   }
   If{
     (
-      ScalarConstructor{true}
+      ScalarConstructor[not set]{true}
     )
     {
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{3}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{3}
       }
       Continue{}
     }
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{4}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{4}
   }
   continuing {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{5}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{5}
     }
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{6}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{6}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -12455,38 +12455,38 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody()) << p->error();
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{0}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{0}
 }
 Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{1}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{1}
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{2}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{2}
   }
   If{
     (
-      ScalarConstructor{true}
+      ScalarConstructor[not set]{true}
     )
     {
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{3}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{3}
       }
       Continue{}
     }
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{4}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{4}
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{6}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{6}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -12532,25 +12532,25 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody()) << p->error();
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{1}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{1}
 }
 Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{2}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{2}
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{3}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{3}
   }
   Switch{
-    ScalarConstructor{42}
+    ScalarConstructor[not set]{42}
     {
       Case 40{
         Assignment{
-          Identifier{var_1}
-          ScalarConstructor{4}
+          Identifier[not set]{var_1}
+          ScalarConstructor[not set]{4}
         }
         Continue{}
       }
@@ -12559,19 +12559,19 @@
     }
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{5}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{5}
   }
   continuing {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{6}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{6}
     }
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{7}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{7}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -12618,30 +12618,30 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody()) << p->error();
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{0}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{0}
 }
 Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{1}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{1}
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{2}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{2}
   }
   If{
     (
-      ScalarConstructor{true}
+      ScalarConstructor[not set]{true}
     )
     {
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{3}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{3}
       }
       If{
         (
-          ScalarConstructor{false}
+          ScalarConstructor[not set]{false}
         )
         {
         }
@@ -12654,19 +12654,19 @@
     }
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{4}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{4}
   }
   continuing {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{5}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{5}
     }
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{6}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{6}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -12713,30 +12713,30 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody()) << p->error();
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{0}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{0}
 }
 Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{1}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{1}
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{2}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{2}
   }
   If{
     (
-      ScalarConstructor{true}
+      ScalarConstructor[not set]{true}
     )
     {
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{3}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{3}
       }
       If{
         (
-          ScalarConstructor{false}
+          ScalarConstructor[not set]{false}
         )
         {
           Continue{}
@@ -12745,19 +12745,19 @@
     }
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{4}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{4}
   }
   continuing {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{5}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{5}
     }
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{6}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{6}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -12807,29 +12807,29 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody()) << p->error();
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{0}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{0}
 }
 Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{1}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{1}
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{2}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{2}
   }
   Switch{
-    ScalarConstructor{42}
+    ScalarConstructor[not set]{42}
     {
       Case 40{
         Assignment{
-          Identifier{var_1}
-          ScalarConstructor{40}
+          Identifier[not set]{var_1}
+          ScalarConstructor[not set]{40}
         }
         If{
           (
-            ScalarConstructor{false}
+            ScalarConstructor[not set]{false}
           )
           {
           }
@@ -12843,8 +12843,8 @@
       }
       Case 50{
         Assignment{
-          Identifier{var_1}
-          ScalarConstructor{50}
+          Identifier[not set]{var_1}
+          ScalarConstructor[not set]{50}
         }
       }
       Default{
@@ -12852,19 +12852,19 @@
     }
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{3}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{3}
   }
   continuing {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{4}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{4}
     }
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{5}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{5}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -12914,29 +12914,29 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody()) << p->error();
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{0}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{0}
 }
 Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{1}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{1}
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{2}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{2}
   }
   Switch{
-    ScalarConstructor{42}
+    ScalarConstructor[not set]{42}
     {
       Case 40{
         Assignment{
-          Identifier{var_1}
-          ScalarConstructor{40}
+          Identifier[not set]{var_1}
+          ScalarConstructor[not set]{40}
         }
         If{
           (
-            ScalarConstructor{false}
+            ScalarConstructor[not set]{false}
           )
           {
             Continue{}
@@ -12946,8 +12946,8 @@
       }
       Case 50{
         Assignment{
-          Identifier{var_1}
-          ScalarConstructor{50}
+          Identifier[not set]{var_1}
+          ScalarConstructor[not set]{50}
         }
       }
       Default{
@@ -12955,19 +12955,19 @@
     }
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{3}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{3}
   }
   continuing {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{4}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{4}
     }
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{5}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{5}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -13009,21 +13009,21 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody()) << p->error();
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{0}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{0}
 }
 Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{1}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{1}
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{2}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{2}
   }
   If{
     (
-      ScalarConstructor{false}
+      ScalarConstructor[not set]{false}
     )
     {
     }
@@ -13034,19 +13034,19 @@
     }
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{3}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{3}
   }
   continuing {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{4}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{4}
     }
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{5}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{5}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -13088,40 +13088,40 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody()) << p->error();
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{0}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{0}
 }
 Loop{
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{1}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{1}
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{2}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{2}
   }
   If{
     (
-      ScalarConstructor{false}
+      ScalarConstructor[not set]{false}
     )
     {
       Continue{}
     }
   }
   Assignment{
-    Identifier{var_1}
-    ScalarConstructor{3}
+    Identifier[not set]{var_1}
+    ScalarConstructor[not set]{3}
   }
   continuing {
     Assignment{
-      Identifier{var_1}
-      ScalarConstructor{4}
+      Identifier[not set]{var_1}
+      ScalarConstructor[not set]{4}
     }
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{5}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{5}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -13150,19 +13150,19 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody()) << p->error();
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{0}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{0}
 }
 If{
   (
-    ScalarConstructor{false}
+    ScalarConstructor[not set]{false}
   )
   {
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{5}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{5}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -13233,23 +13233,23 @@
   EXPECT_TRUE(fe.EmitBody()) << p->error();
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{1}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{1}
 }
 Switch{
-  ScalarConstructor{42}
+  ScalarConstructor[not set]{42}
   {
     Case 20{
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{20}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{20}
       }
       Fallthrough{}
     }
     Case 30{
       Assignment{
-        Identifier{var_1}
-        ScalarConstructor{30}
+        Identifier[not set]{var_1}
+        ScalarConstructor[not set]{30}
       }
     }
     Default{
@@ -13257,8 +13257,8 @@
   }
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{7}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{7}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -13322,12 +13322,12 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody()) << p->error();
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{var_1}
-  ScalarConstructor{1}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{1}
 }
 Assignment{
-  Identifier{var_1}
-  ScalarConstructor{2}
+  Identifier[not set]{var_1}
+  ScalarConstructor[not set]{2}
 }
 Return{}
 )")) << ToString(fe.ast_body());
diff --git a/src/reader/spirv/function_composite_test.cc b/src/reader/spirv/function_composite_test.cc
index 72b59bf..45b17b5 100644
--- a/src/reader/spirv/function_composite_test.cc
+++ b/src/reader/spirv/function_composite_test.cc
@@ -92,10 +92,10 @@
     none
     __vec_2__u32
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __vec_2__u32
-        ScalarConstructor{10}
-        ScalarConstructor{20}
+        ScalarConstructor[not set]{10}
+        ScalarConstructor[not set]{20}
       }
     }
   }
@@ -106,10 +106,10 @@
     none
     __vec_2__i32
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __vec_2__i32
-        ScalarConstructor{30}
-        ScalarConstructor{40}
+        ScalarConstructor[not set]{30}
+        ScalarConstructor[not set]{40}
       }
     }
   }
@@ -120,10 +120,10 @@
     none
     __vec_2__f32
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __vec_2__f32
-        ScalarConstructor{50.000000}
-        ScalarConstructor{60.000000}
+        ScalarConstructor[not set]{50.000000}
+        ScalarConstructor[not set]{60.000000}
       }
     }
   }
@@ -148,22 +148,22 @@
     none
     __mat_2_3__f32
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __mat_2_3__f32
-        TypeConstructor{
+        TypeConstructor[not set]{
           __vec_2__f32
-          ScalarConstructor{50.000000}
-          ScalarConstructor{60.000000}
+          ScalarConstructor[not set]{50.000000}
+          ScalarConstructor[not set]{60.000000}
         }
-        TypeConstructor{
+        TypeConstructor[not set]{
           __vec_2__f32
-          ScalarConstructor{60.000000}
-          ScalarConstructor{50.000000}
+          ScalarConstructor[not set]{60.000000}
+          ScalarConstructor[not set]{50.000000}
         }
-        TypeConstructor{
+        TypeConstructor[not set]{
           __vec_2__f32
-          ScalarConstructor{70.000000}
-          ScalarConstructor{70.000000}
+          ScalarConstructor[not set]{70.000000}
+          ScalarConstructor[not set]{70.000000}
         }
       }
     }
@@ -189,13 +189,13 @@
     none
     __array__u32_5
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __array__u32_5
-        ScalarConstructor{10}
-        ScalarConstructor{20}
-        ScalarConstructor{3}
-        ScalarConstructor{4}
-        ScalarConstructor{5}
+        ScalarConstructor[not set]{10}
+        ScalarConstructor[not set]{20}
+        ScalarConstructor[not set]{3}
+        ScalarConstructor[not set]{4}
+        ScalarConstructor[not set]{5}
       }
     }
   })"))
@@ -220,15 +220,15 @@
     none
     __struct_S
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __struct_S
-        TypeConstructor{
+        TypeConstructor[not set]{
           __vec_2__f32
-          ScalarConstructor{50.000000}
-          ScalarConstructor{60.000000}
+          ScalarConstructor[not set]{50.000000}
+          ScalarConstructor[not set]{60.000000}
         }
-        ScalarConstructor{5}
-        ScalarConstructor{30}
+        ScalarConstructor[not set]{5}
+        ScalarConstructor[not set]{30}
       }
     }
   })"))
@@ -255,13 +255,13 @@
     none
     __f32
     {
-      MemberAccessor{
-        TypeConstructor{
+      MemberAccessor[not set]{
+        TypeConstructor[not set]{
           __vec_2__f32
-          ScalarConstructor{50.000000}
-          ScalarConstructor{60.000000}
+          ScalarConstructor[not set]{50.000000}
+          ScalarConstructor[not set]{60.000000}
         }
-        Identifier{y}
+        Identifier[not set]{y}
       }
     }
   })"))
@@ -306,9 +306,9 @@
     none
     __vec_2__f32
     {
-      ArrayAccessor{
-        Identifier{x_1}
-        ScalarConstructor{2}
+      ArrayAccessor[not set]{
+        Identifier[not set]{x_1}
+        ScalarConstructor[not set]{2}
       }
     }
   })"))
@@ -357,12 +357,12 @@
     none
     __f32
     {
-      MemberAccessor{
-        ArrayAccessor{
-          Identifier{x_1}
-          ScalarConstructor{2}
+      MemberAccessor[not set]{
+        ArrayAccessor[not set]{
+          Identifier[not set]{x_1}
+          ScalarConstructor[not set]{2}
         }
-        Identifier{y}
+        Identifier[not set]{y}
       }
     }
   })"))
@@ -391,9 +391,9 @@
     none
     __u32
     {
-      ArrayAccessor{
-        Identifier{x_1}
-        ScalarConstructor{3}
+      ArrayAccessor[not set]{
+        Identifier[not set]{x_1}
+        ScalarConstructor[not set]{3}
       }
     }
   })"))
@@ -442,9 +442,9 @@
     none
     __i32
     {
-      MemberAccessor{
-        Identifier{x_1}
-        Identifier{field2}
+      MemberAccessor[not set]{
+        Identifier[not set]{x_1}
+        Identifier[not set]{field2}
       }
     }
   })"))
@@ -484,9 +484,9 @@
     none
     __u32
     {
-      MemberAccessor{
-        Identifier{x_1}
-        Identifier{algo}
+      MemberAccessor[not set]{
+        Identifier[not set]{x_1}
+        Identifier[not set]{algo}
       }
     }
   })"))
@@ -497,9 +497,9 @@
     none
     __u32
     {
-      MemberAccessor{
-        Identifier{x_3}
-        Identifier{rithm}
+      MemberAccessor[not set]{
+        Identifier[not set]{x_3}
+        Identifier[not set]{rithm}
       }
     }
   })"))
@@ -550,18 +550,18 @@
     none
     __f32
     {
-      MemberAccessor{
-        ArrayAccessor{
-          ArrayAccessor{
-            MemberAccessor{
-              Identifier{x_1}
-              Identifier{field1}
+      MemberAccessor[not set]{
+        ArrayAccessor[not set]{
+          ArrayAccessor[not set]{
+            MemberAccessor[not set]{
+              Identifier[not set]{x_1}
+              Identifier[not set]{field1}
             }
-            ScalarConstructor{2}
+            ScalarConstructor[not set]{2}
           }
-          ScalarConstructor{0}
+          ScalarConstructor[not set]{0}
         }
-        Identifier{y}
+        Identifier[not set]{y}
       }
     }
   })"))
@@ -589,7 +589,7 @@
     none
     __u32
     {
-      ScalarConstructor{3}
+      ScalarConstructor[not set]{3}
     }
   }
 }
@@ -599,7 +599,7 @@
     none
     __u32
     {
-      Identifier{x_1}
+      Identifier[not set]{x_1}
     }
   }
 })")) << ToString(fe.ast_body());
@@ -627,7 +627,7 @@
     none
     __ptr_function__u32
     {
-      Identifier{x_10}
+      Identifier[not set]{x_10}
     }
   }
 }
@@ -637,7 +637,7 @@
     none
     __ptr_function__u32
     {
-      Identifier{x_1}
+      Identifier[not set]{x_1}
     }
   }
 })")) << ToString(fe.ast_body());
@@ -666,23 +666,23 @@
     none
     __vec_4__u32
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __vec_4__u32
-        MemberAccessor{
-          Identifier{x_2}
-          Identifier{y}
+        MemberAccessor[not set]{
+          Identifier[not set]{x_2}
+          Identifier[not set]{y}
         }
-        MemberAccessor{
-          Identifier{x_2}
-          Identifier{x}
+        MemberAccessor[not set]{
+          Identifier[not set]{x_2}
+          Identifier[not set]{x}
         }
-        MemberAccessor{
-          Identifier{x_1}
-          Identifier{y}
+        MemberAccessor[not set]{
+          Identifier[not set]{x_1}
+          Identifier[not set]{y}
         }
-        MemberAccessor{
-          Identifier{x_1}
-          Identifier{x}
+        MemberAccessor[not set]{
+          Identifier[not set]{x_1}
+          Identifier[not set]{x}
         }
       }
     }
@@ -708,39 +708,39 @@
     none
     __vec_4__u32
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __vec_4__u32
-        MemberAccessor{
-          TypeConstructor{
+        MemberAccessor[not set]{
+          TypeConstructor[not set]{
             __vec_2__u32
-            ScalarConstructor{4}
-            ScalarConstructor{3}
+            ScalarConstructor[not set]{4}
+            ScalarConstructor[not set]{3}
           }
-          Identifier{y}
+          Identifier[not set]{y}
         }
-        MemberAccessor{
-          TypeConstructor{
+        MemberAccessor[not set]{
+          TypeConstructor[not set]{
             __vec_2__u32
-            ScalarConstructor{4}
-            ScalarConstructor{3}
+            ScalarConstructor[not set]{4}
+            ScalarConstructor[not set]{3}
           }
-          Identifier{x}
+          Identifier[not set]{x}
         }
-        MemberAccessor{
-          TypeConstructor{
+        MemberAccessor[not set]{
+          TypeConstructor[not set]{
             __vec_2__u32
-            ScalarConstructor{3}
-            ScalarConstructor{4}
+            ScalarConstructor[not set]{3}
+            ScalarConstructor[not set]{4}
           }
-          Identifier{y}
+          Identifier[not set]{y}
         }
-        MemberAccessor{
-          TypeConstructor{
+        MemberAccessor[not set]{
+          TypeConstructor[not set]{
             __vec_2__u32
-            ScalarConstructor{3}
-            ScalarConstructor{4}
+            ScalarConstructor[not set]{3}
+            ScalarConstructor[not set]{4}
           }
-          Identifier{x}
+          Identifier[not set]{x}
         }
       }
     }
@@ -767,12 +767,12 @@
     none
     __vec_2__u32
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __vec_2__u32
-        ScalarConstructor{0}
-        MemberAccessor{
-          Identifier{x_1}
-          Identifier{y}
+        ScalarConstructor[not set]{0}
+        MemberAccessor[not set]{
+          Identifier[not set]{x_1}
+          Identifier[not set]{y}
         }
       }
     }
diff --git a/src/reader/spirv/function_conversion_test.cc b/src/reader/spirv/function_conversion_test.cc
index 11da1cd..ac7dda5 100644
--- a/src/reader/spirv/function_conversion_test.cc
+++ b/src/reader/spirv/function_conversion_test.cc
@@ -88,8 +88,8 @@
     none
     __u32
     {
-      Bitcast<__u32>{
-        ScalarConstructor{50.000000}
+      Bitcast[not set]<__u32>{
+        ScalarConstructor[not set]{50.000000}
       }
     }
   })"))
@@ -114,11 +114,11 @@
     none
     __vec_2__f32
     {
-      Bitcast<__vec_2__f32>{
-        TypeConstructor{
+      Bitcast[not set]<__vec_2__f32>{
+        TypeConstructor[not set]{
           __vec_2__u32
-          ScalarConstructor{10}
-          ScalarConstructor{20}
+          ScalarConstructor[not set]{10}
+          ScalarConstructor[not set]{20}
         }
       }
     }
@@ -243,9 +243,9 @@
     none
     __f32
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __f32
-        Identifier{x_30}
+        Identifier[not set]{x_30}
       }
     }
   })"))
@@ -270,10 +270,10 @@
     none
     __f32
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __f32
-        Bitcast<__i32>{
-          Identifier{x_30}
+        Bitcast[not set]<__i32>{
+          Identifier[not set]{x_30}
         }
       }
     }
@@ -299,9 +299,9 @@
     none
     __vec_2__f32
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __vec_2__f32
-        Identifier{x_30}
+        Identifier[not set]{x_30}
       }
     }
   })"))
@@ -326,10 +326,10 @@
     none
     __vec_2__f32
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __vec_2__f32
-        Bitcast<__vec_2__i32>{
-          Identifier{x_30}
+        Bitcast[not set]<__vec_2__i32>{
+          Identifier[not set]{x_30}
         }
       }
     }
@@ -388,10 +388,10 @@
     none
     __f32
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __f32
-        Bitcast<__u32>{
-          Identifier{x_30}
+        Bitcast[not set]<__u32>{
+          Identifier[not set]{x_30}
         }
       }
     }
@@ -417,9 +417,9 @@
     none
     __f32
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __f32
-        Identifier{x_30}
+        Identifier[not set]{x_30}
       }
     }
   })"))
@@ -444,10 +444,10 @@
     none
     __vec_2__f32
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __vec_2__f32
-        Bitcast<__vec_2__u32>{
-          Identifier{x_30}
+        Bitcast[not set]<__vec_2__u32>{
+          Identifier[not set]{x_30}
         }
       }
     }
@@ -473,9 +473,9 @@
     none
     __vec_2__f32
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __vec_2__f32
-        Identifier{x_30}
+        Identifier[not set]{x_30}
       }
     }
   })"))
@@ -534,9 +534,9 @@
     none
     __i32
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __i32
-        Identifier{x_30}
+        Identifier[not set]{x_30}
       }
     }
   })"))
@@ -561,10 +561,10 @@
     none
     __u32
     {
-      Bitcast<__u32>{
-        TypeConstructor{
+      Bitcast[not set]<__u32>{
+        TypeConstructor[not set]{
           __i32
-          Identifier{x_30}
+          Identifier[not set]{x_30}
         }
       }
     }
@@ -590,9 +590,9 @@
     none
     __vec_2__i32
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __vec_2__i32
-        Identifier{x_30}
+        Identifier[not set]{x_30}
       }
     }
   })"))
@@ -617,10 +617,10 @@
     none
     __vec_2__u32
     {
-      Bitcast<__vec_2__u32>{
-        TypeConstructor{
+      Bitcast[not set]<__vec_2__u32>{
+        TypeConstructor[not set]{
           __vec_2__i32
-          Identifier{x_30}
+          Identifier[not set]{x_30}
         }
       }
     }
@@ -680,10 +680,10 @@
     none
     __i32
     {
-      Bitcast<__i32>{
-        TypeConstructor{
+      Bitcast[not set]<__i32>{
+        TypeConstructor[not set]{
           __u32
-          Identifier{x_30}
+          Identifier[not set]{x_30}
         }
       }
     }
@@ -709,9 +709,9 @@
     none
     __u32
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __u32
-        Identifier{x_30}
+        Identifier[not set]{x_30}
       }
     }
   })"))
@@ -736,10 +736,10 @@
     none
     __vec_2__i32
     {
-      Bitcast<__vec_2__i32>{
-        TypeConstructor{
+      Bitcast[not set]<__vec_2__i32>{
+        TypeConstructor[not set]{
           __vec_2__u32
-          Identifier{x_30}
+          Identifier[not set]{x_30}
         }
       }
     }
@@ -765,9 +765,9 @@
     none
     __vec_2__u32
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __vec_2__u32
-        Identifier{x_30}
+        Identifier[not set]{x_30}
       }
     }
   })"))
diff --git a/src/reader/spirv/function_glsl_std_450_test.cc b/src/reader/spirv/function_glsl_std_450_test.cc
index 11c2cb6..e333e41 100644
--- a/src/reader/spirv/function_glsl_std_450_test.cc
+++ b/src/reader/spirv/function_glsl_std_450_test.cc
@@ -106,10 +106,11 @@
     none
     __f32
     {
-      Call{
-        Identifier{)" + GetParam().wgsl_func + R"(}
+      Call[not set]{
+        Identifier[not set]{)" + GetParam().wgsl_func +
+                                                 R"(}
         (
-          ScalarConstructor{50.000000}
+          ScalarConstructor[not set]{50.000000}
         )
       }
     }
@@ -136,13 +137,14 @@
     none
     __f32
     {
-      Call{
-        Identifier{)" + GetParam().wgsl_func + R"(}
+      Call[not set]{
+        Identifier[not set]{)" + GetParam().wgsl_func +
+                                                 R"(}
         (
-          TypeConstructor{
+          TypeConstructor[not set]{
             __vec_2__f32
-            ScalarConstructor{50.000000}
-            ScalarConstructor{60.000000}
+            ScalarConstructor[not set]{50.000000}
+            ScalarConstructor[not set]{60.000000}
           }
         )
       }
@@ -170,11 +172,12 @@
     none
     __f32
     {
-      Call{
-        Identifier{)" + GetParam().wgsl_func + R"(}
+      Call[not set]{
+        Identifier[not set]{)" + GetParam().wgsl_func +
+                                                 R"(}
         (
-          ScalarConstructor{50.000000}
-          ScalarConstructor{60.000000}
+          ScalarConstructor[not set]{50.000000}
+          ScalarConstructor[not set]{60.000000}
         )
       }
     }
@@ -201,18 +204,19 @@
     none
     __f32
     {
-      Call{
-        Identifier{)" + GetParam().wgsl_func + R"(}
+      Call[not set]{
+        Identifier[not set]{)" + GetParam().wgsl_func +
+                                                 R"(}
         (
-          TypeConstructor{
+          TypeConstructor[not set]{
             __vec_2__f32
-            ScalarConstructor{50.000000}
-            ScalarConstructor{60.000000}
+            ScalarConstructor[not set]{50.000000}
+            ScalarConstructor[not set]{60.000000}
           }
-          TypeConstructor{
+          TypeConstructor[not set]{
             __vec_2__f32
-            ScalarConstructor{60.000000}
-            ScalarConstructor{50.000000}
+            ScalarConstructor[not set]{60.000000}
+            ScalarConstructor[not set]{50.000000}
           }
         )
       }
@@ -240,10 +244,11 @@
     none
     __f32
     {
-      Call{
-        Identifier{)" + GetParam().wgsl_func + R"(}
+      Call[not set]{
+        Identifier[not set]{)" + GetParam().wgsl_func +
+                                                 R"(}
         (
-          ScalarConstructor{50.000000}
+          ScalarConstructor[not set]{50.000000}
         )
       }
     }
@@ -270,13 +275,14 @@
     none
     __vec_2__f32
     {
-      Call{
-        Identifier{)" + GetParam().wgsl_func + R"(}
+      Call[not set]{
+        Identifier[not set]{)" + GetParam().wgsl_func +
+                                                 R"(}
         (
-          TypeConstructor{
+          TypeConstructor[not set]{
             __vec_2__f32
-            ScalarConstructor{50.000000}
-            ScalarConstructor{60.000000}
+            ScalarConstructor[not set]{50.000000}
+            ScalarConstructor[not set]{60.000000}
           }
         )
       }
@@ -304,11 +310,12 @@
     none
     __f32
     {
-      Call{
-        Identifier{)" + GetParam().wgsl_func + R"(}
+      Call[not set]{
+        Identifier[not set]{)" + GetParam().wgsl_func +
+                                                 R"(}
         (
-          ScalarConstructor{50.000000}
-          ScalarConstructor{60.000000}
+          ScalarConstructor[not set]{50.000000}
+          ScalarConstructor[not set]{60.000000}
         )
       }
     }
@@ -335,18 +342,19 @@
     none
     __vec_2__f32
     {
-      Call{
-        Identifier{)" + GetParam().wgsl_func + R"(}
+      Call[not set]{
+        Identifier[not set]{)" + GetParam().wgsl_func +
+                                                 R"(}
         (
-          TypeConstructor{
+          TypeConstructor[not set]{
             __vec_2__f32
-            ScalarConstructor{50.000000}
-            ScalarConstructor{60.000000}
+            ScalarConstructor[not set]{50.000000}
+            ScalarConstructor[not set]{60.000000}
           }
-          TypeConstructor{
+          TypeConstructor[not set]{
             __vec_2__f32
-            ScalarConstructor{60.000000}
-            ScalarConstructor{50.000000}
+            ScalarConstructor[not set]{60.000000}
+            ScalarConstructor[not set]{50.000000}
           }
         )
       }
@@ -374,12 +382,13 @@
     none
     __f32
     {
-      Call{
-        Identifier{)" + GetParam().wgsl_func + R"(}
+      Call[not set]{
+        Identifier[not set]{)" + GetParam().wgsl_func +
+                                                 R"(}
         (
-          ScalarConstructor{50.000000}
-          ScalarConstructor{60.000000}
-          ScalarConstructor{70.000000}
+          ScalarConstructor[not set]{50.000000}
+          ScalarConstructor[not set]{60.000000}
+          ScalarConstructor[not set]{70.000000}
         )
       }
     }
@@ -407,23 +416,24 @@
     none
     __vec_2__f32
     {
-      Call{
-        Identifier{)" + GetParam().wgsl_func + R"(}
+      Call[not set]{
+        Identifier[not set]{)" + GetParam().wgsl_func +
+                                                 R"(}
         (
-          TypeConstructor{
+          TypeConstructor[not set]{
             __vec_2__f32
-            ScalarConstructor{50.000000}
-            ScalarConstructor{60.000000}
+            ScalarConstructor[not set]{50.000000}
+            ScalarConstructor[not set]{60.000000}
           }
-          TypeConstructor{
+          TypeConstructor[not set]{
             __vec_2__f32
-            ScalarConstructor{60.000000}
-            ScalarConstructor{50.000000}
+            ScalarConstructor[not set]{60.000000}
+            ScalarConstructor[not set]{50.000000}
           }
-          TypeConstructor{
+          TypeConstructor[not set]{
             __vec_2__f32
-            ScalarConstructor{70.000000}
-            ScalarConstructor{70.000000}
+            ScalarConstructor[not set]{70.000000}
+            ScalarConstructor[not set]{70.000000}
           }
         )
       }
diff --git a/src/reader/spirv/function_logical_test.cc b/src/reader/spirv/function_logical_test.cc
index cb7572e..e50915a 100644
--- a/src/reader/spirv/function_logical_test.cc
+++ b/src/reader/spirv/function_logical_test.cc
@@ -71,122 +71,122 @@
 // Returns the AST dump for a given SPIR-V assembly constant.
 std::string AstFor(std::string assembly) {
   if (assembly == "v2bool_t_f") {
-    return R"(TypeConstructor{
+    return R"(TypeConstructor[not set]{
           __vec_2__bool
-          ScalarConstructor{true}
-          ScalarConstructor{false}
+          ScalarConstructor[not set]{true}
+          ScalarConstructor[not set]{false}
         })";
   }
   if (assembly == "v2bool_f_t") {
-    return R"(TypeConstructor{
+    return R"(TypeConstructor[not set]{
           __vec_2__bool
-          ScalarConstructor{false}
-          ScalarConstructor{true}
+          ScalarConstructor[not set]{false}
+          ScalarConstructor[not set]{true}
         })";
   }
   if (assembly == "v2uint_10_20") {
-    return R"(TypeConstructor{
+    return R"(TypeConstructor[not set]{
           __vec_2__u32
-          ScalarConstructor{10}
-          ScalarConstructor{20}
+          ScalarConstructor[not set]{10}
+          ScalarConstructor[not set]{20}
         })";
   }
   if (assembly == "cast_uint_10") {
-    return R"(Bitcast<__i32>{
-          ScalarConstructor{10}
+    return R"(Bitcast[not set]<__i32>{
+          ScalarConstructor[not set]{10}
         })";
   }
   if (assembly == "cast_uint_20") {
-    return R"(Bitcast<__i32>{
-          ScalarConstructor{20}
+    return R"(Bitcast[not set]<__i32>{
+          ScalarConstructor[not set]{20}
         })";
   }
   if (assembly == "cast_v2uint_10_20") {
-    return R"(Bitcast<__vec_2__i32>{
-          TypeConstructor{
+    return R"(Bitcast[not set]<__vec_2__i32>{
+          TypeConstructor[not set]{
             __vec_2__u32
-            ScalarConstructor{10}
-            ScalarConstructor{20}
+            ScalarConstructor[not set]{10}
+            ScalarConstructor[not set]{20}
           }
         })";
   }
   if (assembly == "v2uint_20_10") {
-    return R"(TypeConstructor{
+    return R"(TypeConstructor[not set]{
           __vec_2__u32
-          ScalarConstructor{20}
-          ScalarConstructor{10}
+          ScalarConstructor[not set]{20}
+          ScalarConstructor[not set]{10}
         })";
   }
   if (assembly == "cast_v2uint_20_10") {
-    return R"(Bitcast<__vec_2__i32>{
-          TypeConstructor{
+    return R"(Bitcast[not set]<__vec_2__i32>{
+          TypeConstructor[not set]{
             __vec_2__u32
-            ScalarConstructor{20}
-            ScalarConstructor{10}
+            ScalarConstructor[not set]{20}
+            ScalarConstructor[not set]{10}
           }
         })";
   }
   if (assembly == "cast_int_30") {
-    return R"(Bitcast<__u32>{
-          ScalarConstructor{30}
+    return R"(Bitcast[not set]<__u32>{
+          ScalarConstructor[not set]{30}
         })";
   }
   if (assembly == "cast_int_40") {
-    return R"(Bitcast<__u32>{
-          ScalarConstructor{40}
+    return R"(Bitcast[not set]<__u32>{
+          ScalarConstructor[not set]{40}
         })";
   }
   if (assembly == "v2int_30_40") {
-    return R"(TypeConstructor{
+    return R"(TypeConstructor[not set]{
           __vec_2__i32
-          ScalarConstructor{30}
-          ScalarConstructor{40}
+          ScalarConstructor[not set]{30}
+          ScalarConstructor[not set]{40}
         })";
   }
   if (assembly == "cast_v2int_30_40") {
-    return R"(Bitcast<__vec_2__u32>{
-          TypeConstructor{
+    return R"(Bitcast[not set]<__vec_2__u32>{
+          TypeConstructor[not set]{
             __vec_2__i32
-            ScalarConstructor{30}
-            ScalarConstructor{40}
+            ScalarConstructor[not set]{30}
+            ScalarConstructor[not set]{40}
           }
         })";
   }
   if (assembly == "v2int_40_30") {
-    return R"(TypeConstructor{
+    return R"(TypeConstructor[not set]{
           __vec_2__i32
-          ScalarConstructor{40}
-          ScalarConstructor{30}
+          ScalarConstructor[not set]{40}
+          ScalarConstructor[not set]{30}
         })";
   }
   if (assembly == "cast_v2int_40_30") {
-    return R"(Bitcast<__vec_2__u32>{
-          TypeConstructor{
+    return R"(Bitcast[not set]<__vec_2__u32>{
+          TypeConstructor[not set]{
             __vec_2__i32
-            ScalarConstructor{40}
-            ScalarConstructor{30}
+            ScalarConstructor[not set]{40}
+            ScalarConstructor[not set]{30}
           }
         })";
   }
   if (assembly == "v2int_40_30") {
-    return R"(TypeConstructor{
+    return R"(TypeConstructor[not set]{
           __vec_2__i32
-          ScalarConstructor{40}
-          ScalarConstructor{30}
+          ScalarConstructor[not set]{40}
+          ScalarConstructor[not set]{30}
         })";
   }
   if (assembly == "v2float_50_60") {
-    return R"(TypeConstructor{
+    return R"(TypeConstructor[not set]{
           __vec_2__f32
-          ScalarConstructor{50.000000}
-          ScalarConstructor{60.000000}
+          ScalarConstructor[not set]{50.000000}
+          ScalarConstructor[not set]{60.000000}
         })";
   }
   if (assembly == "v2float_60_50") {
-    return R"(TypeConstructor{
+    return R"(TypeConstructor[not set]{
           __vec_2__f32
-          ScalarConstructor{60.000000}
-          ScalarConstructor{50.000000}
+          ScalarConstructor[not set]{60.000000}
+          ScalarConstructor[not set]{50.000000}
         })";
   }
   return "bad case";
@@ -212,9 +212,9 @@
     none
     __bool
     {
-      UnaryOp{
+      UnaryOp[not set]{
         not
-        ScalarConstructor{true}
+        ScalarConstructor[not set]{true}
       }
     }
   })"))
@@ -239,12 +239,12 @@
     none
     __vec_2__bool
     {
-      UnaryOp{
+      UnaryOp[not set]{
         not
-        TypeConstructor{
+        TypeConstructor[not set]{
           __vec_2__bool
-          ScalarConstructor{true}
-          ScalarConstructor{false}
+          ScalarConstructor[not set]{true}
+          ScalarConstructor[not set]{false}
         }
       }
     }
@@ -293,7 +293,7 @@
     x_1
     none
     )"
-     << GetParam().ast_type << "\n    {\n      Binary{"
+     << GetParam().ast_type << "\n    {\n      Binary[not set]{"
      << "\n        " << GetParam().ast_lhs << "\n        " << GetParam().ast_op
      << "\n        " << GetParam().ast_rhs;
   EXPECT_THAT(ToString(fe.ast_body()), HasSubstr(ss.str())) << assembly;
@@ -305,10 +305,12 @@
     ::testing::Values(
         // Both uint
         BinaryData{"bool", "uint_10", "OpIEqual", "uint_20", "__bool",
-                   "ScalarConstructor{10}", "equal", "ScalarConstructor{20}"},
+                   "ScalarConstructor[not set]{10}", "equal",
+                   "ScalarConstructor[not set]{20}"},
         // Both int
         BinaryData{"bool", "int_30", "OpIEqual", "int_40", "__bool",
-                   "ScalarConstructor{30}", "equal", "ScalarConstructor{40}"},
+                   "ScalarConstructor[not set]{30}", "equal",
+                   "ScalarConstructor[not set]{40}"},
         // Both v2uint
         BinaryData{"v2bool", "v2uint_10_20", "OpIEqual", "v2uint_20_10",
                    "__vec_2__bool", AstFor("v2uint_10_20"), "equal",
@@ -321,13 +323,13 @@
 INSTANTIATE_TEST_SUITE_P(
     SpvParserTest_FOrdEqual,
     SpvBinaryLogicalTest,
-    ::testing::Values(BinaryData{"bool", "float_50", "OpFOrdEqual", "float_60",
-                                 "__bool", "ScalarConstructor{50.000000}",
-                                 "equal", "ScalarConstructor{60.000000}"},
-                      BinaryData{"v2bool", "v2float_50_60", "OpFOrdEqual",
-                                 "v2float_60_50", "__vec_2__bool",
-                                 AstFor("v2float_50_60"), "equal",
-                                 AstFor("v2float_60_50")}));
+    ::testing::Values(
+        BinaryData{"bool", "float_50", "OpFOrdEqual", "float_60", "__bool",
+                   "ScalarConstructor[not set]{50.000000}", "equal",
+                   "ScalarConstructor[not set]{60.000000}"},
+        BinaryData{"v2bool", "v2float_50_60", "OpFOrdEqual", "v2float_60_50",
+                   "__vec_2__bool", AstFor("v2float_50_60"), "equal",
+                   AstFor("v2float_60_50")}));
 
 INSTANTIATE_TEST_SUITE_P(
     SpvParserTest_INotEqual,
@@ -335,12 +337,12 @@
     ::testing::Values(
         // Both uint
         BinaryData{"bool", "uint_10", "OpINotEqual", "uint_20", "__bool",
-                   "ScalarConstructor{10}", "not_equal",
-                   "ScalarConstructor{20}"},
+                   "ScalarConstructor[not set]{10}", "not_equal",
+                   "ScalarConstructor[not set]{20}"},
         // Both int
         BinaryData{"bool", "int_30", "OpINotEqual", "int_40", "__bool",
-                   "ScalarConstructor{30}", "not_equal",
-                   "ScalarConstructor{40}"},
+                   "ScalarConstructor[not set]{30}", "not_equal",
+                   "ScalarConstructor[not set]{40}"},
         // Both v2uint
         BinaryData{"v2bool", "v2uint_10_20", "OpINotEqual", "v2uint_20_10",
                    "__vec_2__bool", AstFor("v2uint_10_20"), "not_equal",
@@ -353,34 +355,32 @@
 INSTANTIATE_TEST_SUITE_P(
     SpvParserTest_FOrdNotEqual,
     SpvBinaryLogicalTest,
-    ::testing::Values(BinaryData{"bool", "float_50", "OpFOrdNotEqual",
-                                 "float_60", "__bool",
-                                 "ScalarConstructor{50.000000}", "not_equal",
-                                 "ScalarConstructor{60.000000}"},
-                      BinaryData{"v2bool", "v2float_50_60", "OpFOrdNotEqual",
-                                 "v2float_60_50", "__vec_2__bool",
-                                 AstFor("v2float_50_60"), "not_equal",
-                                 AstFor("v2float_60_50")}));
+    ::testing::Values(
+        BinaryData{"bool", "float_50", "OpFOrdNotEqual", "float_60", "__bool",
+                   "ScalarConstructor[not set]{50.000000}", "not_equal",
+                   "ScalarConstructor[not set]{60.000000}"},
+        BinaryData{"v2bool", "v2float_50_60", "OpFOrdNotEqual", "v2float_60_50",
+                   "__vec_2__bool", AstFor("v2float_50_60"), "not_equal",
+                   AstFor("v2float_60_50")}));
 
 INSTANTIATE_TEST_SUITE_P(
     SpvParserTest_FOrdLessThan,
     SpvBinaryLogicalTest,
-    ::testing::Values(BinaryData{"bool", "float_50", "OpFOrdLessThan",
-                                 "float_60", "__bool",
-                                 "ScalarConstructor{50.000000}", "less_than",
-                                 "ScalarConstructor{60.000000}"},
-                      BinaryData{"v2bool", "v2float_50_60", "OpFOrdLessThan",
-                                 "v2float_60_50", "__vec_2__bool",
-                                 AstFor("v2float_50_60"), "less_than",
-                                 AstFor("v2float_60_50")}));
+    ::testing::Values(
+        BinaryData{"bool", "float_50", "OpFOrdLessThan", "float_60", "__bool",
+                   "ScalarConstructor[not set]{50.000000}", "less_than",
+                   "ScalarConstructor[not set]{60.000000}"},
+        BinaryData{"v2bool", "v2float_50_60", "OpFOrdLessThan", "v2float_60_50",
+                   "__vec_2__bool", AstFor("v2float_50_60"), "less_than",
+                   AstFor("v2float_60_50")}));
 
 INSTANTIATE_TEST_SUITE_P(
     SpvParserTest_FOrdLessThanEqual,
     SpvBinaryLogicalTest,
     ::testing::Values(
         BinaryData{"bool", "float_50", "OpFOrdLessThanEqual", "float_60",
-                   "__bool", "ScalarConstructor{50.000000}", "less_than_equal",
-                   "ScalarConstructor{60.000000}"},
+                   "__bool", "ScalarConstructor[not set]{50.000000}",
+                   "less_than_equal", "ScalarConstructor[not set]{60.000000}"},
         BinaryData{"v2bool", "v2float_50_60", "OpFOrdLessThanEqual",
                    "v2float_60_50", "__vec_2__bool", AstFor("v2float_50_60"),
                    "less_than_equal", AstFor("v2float_60_50")}));
@@ -388,22 +388,22 @@
 INSTANTIATE_TEST_SUITE_P(
     SpvParserTest_FOrdGreaterThan,
     SpvBinaryLogicalTest,
-    ::testing::Values(BinaryData{"bool", "float_50", "OpFOrdGreaterThan",
-                                 "float_60", "__bool",
-                                 "ScalarConstructor{50.000000}", "greater_than",
-                                 "ScalarConstructor{60.000000}"},
-                      BinaryData{"v2bool", "v2float_50_60", "OpFOrdGreaterThan",
-                                 "v2float_60_50", "__vec_2__bool",
-                                 AstFor("v2float_50_60"), "greater_than",
-                                 AstFor("v2float_60_50")}));
+    ::testing::Values(
+        BinaryData{"bool", "float_50", "OpFOrdGreaterThan", "float_60",
+                   "__bool", "ScalarConstructor[not set]{50.000000}",
+                   "greater_than", "ScalarConstructor[not set]{60.000000}"},
+        BinaryData{"v2bool", "v2float_50_60", "OpFOrdGreaterThan",
+                   "v2float_60_50", "__vec_2__bool", AstFor("v2float_50_60"),
+                   "greater_than", AstFor("v2float_60_50")}));
 
 INSTANTIATE_TEST_SUITE_P(
     SpvParserTest_FOrdGreaterThanEqual,
     SpvBinaryLogicalTest,
     ::testing::Values(
         BinaryData{"bool", "float_50", "OpFOrdGreaterThanEqual", "float_60",
-                   "__bool", "ScalarConstructor{50.000000}",
-                   "greater_than_equal", "ScalarConstructor{60.000000}"},
+                   "__bool", "ScalarConstructor[not set]{50.000000}",
+                   "greater_than_equal",
+                   "ScalarConstructor[not set]{60.000000}"},
         BinaryData{"v2bool", "v2float_50_60", "OpFOrdGreaterThanEqual",
                    "v2float_60_50", "__vec_2__bool", AstFor("v2float_50_60"),
                    "greater_than_equal", AstFor("v2float_60_50")}));
@@ -412,8 +412,9 @@
     SpvParserTest_LogicalAnd,
     SpvBinaryLogicalTest,
     ::testing::Values(BinaryData{"bool", "true", "OpLogicalAnd", "false",
-                                 "__bool", "ScalarConstructor{true}",
-                                 "logical_and", "ScalarConstructor{false}"},
+                                 "__bool", "ScalarConstructor[not set]{true}",
+                                 "logical_and",
+                                 "ScalarConstructor[not set]{false}"},
                       BinaryData{"v2bool", "v2bool_t_f", "OpLogicalAnd",
                                  "v2bool_f_t", "__vec_2__bool",
                                  AstFor("v2bool_t_f"), "logical_and",
@@ -423,8 +424,9 @@
     SpvParserTest_LogicalOr,
     SpvBinaryLogicalTest,
     ::testing::Values(BinaryData{"bool", "true", "OpLogicalOr", "false",
-                                 "__bool", "ScalarConstructor{true}",
-                                 "logical_or", "ScalarConstructor{false}"},
+                                 "__bool", "ScalarConstructor[not set]{true}",
+                                 "logical_or",
+                                 "ScalarConstructor[not set]{false}"},
                       BinaryData{"v2bool", "v2bool_t_f", "OpLogicalOr",
                                  "v2bool_f_t", "__vec_2__bool",
                                  AstFor("v2bool_t_f"), "logical_or",
@@ -434,8 +436,8 @@
     SpvParserTest_LogicalEqual,
     SpvBinaryLogicalTest,
     ::testing::Values(BinaryData{"bool", "true", "OpLogicalEqual", "false",
-                                 "__bool", "ScalarConstructor{true}", "equal",
-                                 "ScalarConstructor{false}"},
+                                 "__bool", "ScalarConstructor[not set]{true}",
+                                 "equal", "ScalarConstructor[not set]{false}"},
                       BinaryData{"v2bool", "v2bool_t_f", "OpLogicalEqual",
                                  "v2bool_f_t", "__vec_2__bool",
                                  AstFor("v2bool_t_f"), "equal",
@@ -445,8 +447,9 @@
     SpvParserTest_LogicalNotEqual,
     SpvBinaryLogicalTest,
     ::testing::Values(BinaryData{"bool", "true", "OpLogicalNotEqual", "false",
-                                 "__bool", "ScalarConstructor{true}",
-                                 "not_equal", "ScalarConstructor{false}"},
+                                 "__bool", "ScalarConstructor[not set]{true}",
+                                 "not_equal",
+                                 "ScalarConstructor[not set]{false}"},
                       BinaryData{"v2bool", "v2bool_t_f", "OpLogicalNotEqual",
                                  "v2bool_f_t", "__vec_2__bool",
                                  AstFor("v2bool_t_f"), "not_equal",
@@ -458,15 +461,15 @@
     ::testing::Values(
         // Both unsigned
         BinaryData{"bool", "uint_10", "OpUGreaterThan", "uint_20", "__bool",
-                   "ScalarConstructor{10}", "greater_than",
-                   "ScalarConstructor{20}"},
+                   "ScalarConstructor[not set]{10}", "greater_than",
+                   "ScalarConstructor[not set]{20}"},
         // First arg signed
         BinaryData{"bool", "int_30", "OpUGreaterThan", "uint_20", "__bool",
                    AstFor("cast_int_30"), "greater_than",
-                   "ScalarConstructor{20}"},
+                   "ScalarConstructor[not set]{20}"},
         // Second arg signed
         BinaryData{"bool", "uint_10", "OpUGreaterThan", "int_40", "__bool",
-                   "ScalarConstructor{10}", "greater_than",
+                   "ScalarConstructor[not set]{10}", "greater_than",
                    AstFor("cast_int_40")},
         // Vector, both unsigned
         BinaryData{"v2bool", "v2uint_10_20", "OpUGreaterThan", "v2uint_20_10",
@@ -487,15 +490,15 @@
     ::testing::Values(
         // Both unsigned
         BinaryData{"bool", "uint_10", "OpUGreaterThanEqual", "uint_20",
-                   "__bool", "ScalarConstructor{10}", "greater_than_equal",
-                   "ScalarConstructor{20}"},
+                   "__bool", "ScalarConstructor[not set]{10}",
+                   "greater_than_equal", "ScalarConstructor[not set]{20}"},
         // First arg signed
         BinaryData{"bool", "int_30", "OpUGreaterThanEqual", "uint_20", "__bool",
                    AstFor("cast_int_30"), "greater_than_equal",
-                   "ScalarConstructor{20}"},
+                   "ScalarConstructor[not set]{20}"},
         // Second arg signed
         BinaryData{"bool", "uint_10", "OpUGreaterThanEqual", "int_40", "__bool",
-                   "ScalarConstructor{10}", "greater_than_equal",
+                   "ScalarConstructor[not set]{10}", "greater_than_equal",
                    AstFor("cast_int_40")},
         // Vector, both unsigned
         BinaryData{"v2bool", "v2uint_10_20", "OpUGreaterThanEqual",
@@ -516,14 +519,16 @@
     ::testing::Values(
         // Both unsigned
         BinaryData{"bool", "uint_10", "OpULessThan", "uint_20", "__bool",
-                   "ScalarConstructor{10}", "less_than",
-                   "ScalarConstructor{20}"},
+                   "ScalarConstructor[not set]{10}", "less_than",
+                   "ScalarConstructor[not set]{20}"},
         // First arg signed
         BinaryData{"bool", "int_30", "OpULessThan", "uint_20", "__bool",
-                   AstFor("cast_int_30"), "less_than", "ScalarConstructor{20}"},
+                   AstFor("cast_int_30"), "less_than",
+                   "ScalarConstructor[not set]{20}"},
         // Second arg signed
         BinaryData{"bool", "uint_10", "OpULessThan", "int_40", "__bool",
-                   "ScalarConstructor{10}", "less_than", AstFor("cast_int_40")},
+                   "ScalarConstructor[not set]{10}", "less_than",
+                   AstFor("cast_int_40")},
         // Vector, both unsigned
         BinaryData{"v2bool", "v2uint_10_20", "OpULessThan", "v2uint_20_10",
                    "__vec_2__bool", AstFor("v2uint_10_20"), "less_than",
@@ -543,15 +548,15 @@
     ::testing::Values(
         // Both unsigned
         BinaryData{"bool", "uint_10", "OpULessThanEqual", "uint_20", "__bool",
-                   "ScalarConstructor{10}", "less_than_equal",
-                   "ScalarConstructor{20}"},
+                   "ScalarConstructor[not set]{10}", "less_than_equal",
+                   "ScalarConstructor[not set]{20}"},
         // First arg signed
         BinaryData{"bool", "int_30", "OpULessThanEqual", "uint_20", "__bool",
                    AstFor("cast_int_30"), "less_than_equal",
-                   "ScalarConstructor{20}"},
+                   "ScalarConstructor[not set]{20}"},
         // Second arg signed
         BinaryData{"bool", "uint_10", "OpULessThanEqual", "int_40", "__bool",
-                   "ScalarConstructor{10}", "less_than_equal",
+                   "ScalarConstructor[not set]{10}", "less_than_equal",
                    AstFor("cast_int_40")},
         // Vector, both unsigned
         BinaryData{"v2bool", "v2uint_10_20", "OpULessThanEqual", "v2uint_20_10",
@@ -572,15 +577,15 @@
     ::testing::Values(
         // Both signed
         BinaryData{"bool", "int_30", "OpSGreaterThan", "int_40", "__bool",
-                   "ScalarConstructor{30}", "greater_than",
-                   "ScalarConstructor{40}"},
+                   "ScalarConstructor[not set]{30}", "greater_than",
+                   "ScalarConstructor[not set]{40}"},
         // First arg unsigned
         BinaryData{"bool", "uint_10", "OpSGreaterThan", "int_40", "__bool",
                    AstFor("cast_uint_10"), "greater_than",
-                   "ScalarConstructor{40}"},
+                   "ScalarConstructor[not set]{40}"},
         // Second arg unsigned
         BinaryData{"bool", "int_30", "OpSGreaterThan", "uint_20", "__bool",
-                   "ScalarConstructor{30}", "greater_than",
+                   "ScalarConstructor[not set]{30}", "greater_than",
                    AstFor("cast_uint_20")},
         // Vector, both signed
         BinaryData{"v2bool", "v2int_30_40", "OpSGreaterThan", "v2int_40_30",
@@ -601,15 +606,15 @@
     ::testing::Values(
         // Both signed
         BinaryData{"bool", "int_30", "OpSGreaterThanEqual", "int_40", "__bool",
-                   "ScalarConstructor{30}", "greater_than_equal",
-                   "ScalarConstructor{40}"},
+                   "ScalarConstructor[not set]{30}", "greater_than_equal",
+                   "ScalarConstructor[not set]{40}"},
         // First arg unsigned
         BinaryData{"bool", "uint_10", "OpSGreaterThanEqual", "int_40", "__bool",
                    AstFor("cast_uint_10"), "greater_than_equal",
-                   "ScalarConstructor{40}"},
+                   "ScalarConstructor[not set]{40}"},
         // Second arg unsigned
         BinaryData{"bool", "int_30", "OpSGreaterThanEqual", "uint_20", "__bool",
-                   "ScalarConstructor{30}", "greater_than_equal",
+                   "ScalarConstructor[not set]{30}", "greater_than_equal",
                    AstFor("cast_uint_20")},
         // Vector, both signed
         BinaryData{"v2bool", "v2int_30_40", "OpSGreaterThanEqual",
@@ -630,15 +635,15 @@
     ::testing::Values(
         // Both signed
         BinaryData{"bool", "int_30", "OpSLessThan", "int_40", "__bool",
-                   "ScalarConstructor{30}", "less_than",
-                   "ScalarConstructor{40}"},
+                   "ScalarConstructor[not set]{30}", "less_than",
+                   "ScalarConstructor[not set]{40}"},
         // First arg unsigned
         BinaryData{"bool", "uint_10", "OpSLessThan", "int_40", "__bool",
                    AstFor("cast_uint_10"), "less_than",
-                   "ScalarConstructor{40}"},
+                   "ScalarConstructor[not set]{40}"},
         // Second arg unsigned
         BinaryData{"bool", "int_30", "OpSLessThan", "uint_20", "__bool",
-                   "ScalarConstructor{30}", "less_than",
+                   "ScalarConstructor[not set]{30}", "less_than",
                    AstFor("cast_uint_20")},
         // Vector, both signed
         BinaryData{"v2bool", "v2int_30_40", "OpSLessThan", "v2int_40_30",
@@ -659,15 +664,15 @@
     ::testing::Values(
         // Both signed
         BinaryData{"bool", "int_30", "OpSLessThanEqual", "int_40", "__bool",
-                   "ScalarConstructor{30}", "less_than_equal",
-                   "ScalarConstructor{40}"},
+                   "ScalarConstructor[not set]{30}", "less_than_equal",
+                   "ScalarConstructor[not set]{40}"},
         // First arg unsigned
         BinaryData{"bool", "uint_10", "OpSLessThanEqual", "int_40", "__bool",
                    AstFor("cast_uint_10"), "less_than_equal",
-                   "ScalarConstructor{40}"},
+                   "ScalarConstructor[not set]{40}"},
         // Second arg unsigned
         BinaryData{"bool", "int_30", "OpSLessThanEqual", "uint_20", "__bool",
-                   "ScalarConstructor{30}", "less_than_equal",
+                   "ScalarConstructor[not set]{30}", "less_than_equal",
                    AstFor("cast_uint_20")},
         // Vector, both signed
         BinaryData{"v2bool", "v2int_30_40", "OpSLessThanEqual", "v2int_40_30",
@@ -702,12 +707,12 @@
     none
     __bool
     {
-      UnaryOp{
+      UnaryOp[not set]{
         not
-        Binary{
-          ScalarConstructor{50.000000}
+        Binary[not set]{
+          ScalarConstructor[not set]{50.000000}
           not_equal
-          ScalarConstructor{60.000000}
+          ScalarConstructor[not set]{60.000000}
         }
       }
     }
@@ -733,19 +738,19 @@
     none
     __bool
     {
-      UnaryOp{
+      UnaryOp[not set]{
         not
-        Binary{
-          TypeConstructor{
+        Binary[not set]{
+          TypeConstructor[not set]{
             __vec_2__f32
-            ScalarConstructor{50.000000}
-            ScalarConstructor{60.000000}
+            ScalarConstructor[not set]{50.000000}
+            ScalarConstructor[not set]{60.000000}
           }
           not_equal
-          TypeConstructor{
+          TypeConstructor[not set]{
             __vec_2__f32
-            ScalarConstructor{60.000000}
-            ScalarConstructor{50.000000}
+            ScalarConstructor[not set]{60.000000}
+            ScalarConstructor[not set]{50.000000}
           }
         }
       }
@@ -772,12 +777,12 @@
     none
     __bool
     {
-      UnaryOp{
+      UnaryOp[not set]{
         not
-        Binary{
-          ScalarConstructor{50.000000}
+        Binary[not set]{
+          ScalarConstructor[not set]{50.000000}
           equal
-          ScalarConstructor{60.000000}
+          ScalarConstructor[not set]{60.000000}
         }
       }
     }
@@ -803,19 +808,19 @@
     none
     __bool
     {
-      UnaryOp{
+      UnaryOp[not set]{
         not
-        Binary{
-          TypeConstructor{
+        Binary[not set]{
+          TypeConstructor[not set]{
             __vec_2__f32
-            ScalarConstructor{50.000000}
-            ScalarConstructor{60.000000}
+            ScalarConstructor[not set]{50.000000}
+            ScalarConstructor[not set]{60.000000}
           }
           equal
-          TypeConstructor{
+          TypeConstructor[not set]{
             __vec_2__f32
-            ScalarConstructor{60.000000}
-            ScalarConstructor{50.000000}
+            ScalarConstructor[not set]{60.000000}
+            ScalarConstructor[not set]{50.000000}
           }
         }
       }
@@ -842,12 +847,12 @@
     none
     __bool
     {
-      UnaryOp{
+      UnaryOp[not set]{
         not
-        Binary{
-          ScalarConstructor{50.000000}
+        Binary[not set]{
+          ScalarConstructor[not set]{50.000000}
           greater_than_equal
-          ScalarConstructor{60.000000}
+          ScalarConstructor[not set]{60.000000}
         }
       }
     }
@@ -873,19 +878,19 @@
     none
     __bool
     {
-      UnaryOp{
+      UnaryOp[not set]{
         not
-        Binary{
-          TypeConstructor{
+        Binary[not set]{
+          TypeConstructor[not set]{
             __vec_2__f32
-            ScalarConstructor{50.000000}
-            ScalarConstructor{60.000000}
+            ScalarConstructor[not set]{50.000000}
+            ScalarConstructor[not set]{60.000000}
           }
           greater_than_equal
-          TypeConstructor{
+          TypeConstructor[not set]{
             __vec_2__f32
-            ScalarConstructor{60.000000}
-            ScalarConstructor{50.000000}
+            ScalarConstructor[not set]{60.000000}
+            ScalarConstructor[not set]{50.000000}
           }
         }
       }
@@ -912,12 +917,12 @@
     none
     __bool
     {
-      UnaryOp{
+      UnaryOp[not set]{
         not
-        Binary{
-          ScalarConstructor{50.000000}
+        Binary[not set]{
+          ScalarConstructor[not set]{50.000000}
           greater_than
-          ScalarConstructor{60.000000}
+          ScalarConstructor[not set]{60.000000}
         }
       }
     }
@@ -943,19 +948,19 @@
     none
     __bool
     {
-      UnaryOp{
+      UnaryOp[not set]{
         not
-        Binary{
-          TypeConstructor{
+        Binary[not set]{
+          TypeConstructor[not set]{
             __vec_2__f32
-            ScalarConstructor{50.000000}
-            ScalarConstructor{60.000000}
+            ScalarConstructor[not set]{50.000000}
+            ScalarConstructor[not set]{60.000000}
           }
           greater_than
-          TypeConstructor{
+          TypeConstructor[not set]{
             __vec_2__f32
-            ScalarConstructor{60.000000}
-            ScalarConstructor{50.000000}
+            ScalarConstructor[not set]{60.000000}
+            ScalarConstructor[not set]{50.000000}
           }
         }
       }
@@ -982,12 +987,12 @@
     none
     __bool
     {
-      UnaryOp{
+      UnaryOp[not set]{
         not
-        Binary{
-          ScalarConstructor{50.000000}
+        Binary[not set]{
+          ScalarConstructor[not set]{50.000000}
           less_than_equal
-          ScalarConstructor{60.000000}
+          ScalarConstructor[not set]{60.000000}
         }
       }
     }
@@ -1013,19 +1018,19 @@
     none
     __bool
     {
-      UnaryOp{
+      UnaryOp[not set]{
         not
-        Binary{
-          TypeConstructor{
+        Binary[not set]{
+          TypeConstructor[not set]{
             __vec_2__f32
-            ScalarConstructor{50.000000}
-            ScalarConstructor{60.000000}
+            ScalarConstructor[not set]{50.000000}
+            ScalarConstructor[not set]{60.000000}
           }
           less_than_equal
-          TypeConstructor{
+          TypeConstructor[not set]{
             __vec_2__f32
-            ScalarConstructor{60.000000}
-            ScalarConstructor{50.000000}
+            ScalarConstructor[not set]{60.000000}
+            ScalarConstructor[not set]{50.000000}
           }
         }
       }
@@ -1052,12 +1057,12 @@
     none
     __bool
     {
-      UnaryOp{
+      UnaryOp[not set]{
         not
-        Binary{
-          ScalarConstructor{50.000000}
+        Binary[not set]{
+          ScalarConstructor[not set]{50.000000}
           less_than
-          ScalarConstructor{60.000000}
+          ScalarConstructor[not set]{60.000000}
         }
       }
     }
@@ -1083,19 +1088,19 @@
     none
     __bool
     {
-      UnaryOp{
+      UnaryOp[not set]{
         not
-        Binary{
-          TypeConstructor{
+        Binary[not set]{
+          TypeConstructor[not set]{
             __vec_2__f32
-            ScalarConstructor{50.000000}
-            ScalarConstructor{60.000000}
+            ScalarConstructor[not set]{50.000000}
+            ScalarConstructor[not set]{60.000000}
           }
           less_than
-          TypeConstructor{
+          TypeConstructor[not set]{
             __vec_2__f32
-            ScalarConstructor{60.000000}
-            ScalarConstructor{50.000000}
+            ScalarConstructor[not set]{60.000000}
+            ScalarConstructor[not set]{50.000000}
           }
         }
       }
@@ -1122,12 +1127,12 @@
     none
     __bool
     {
-      Call{
-        Identifier{select}
+      Call[not set]{
+        Identifier[not set]{select}
         (
-          ScalarConstructor{true}
-          ScalarConstructor{false}
-          ScalarConstructor{true}
+          ScalarConstructor[not set]{true}
+          ScalarConstructor[not set]{false}
+          ScalarConstructor[not set]{true}
         )
       }
     }
@@ -1153,12 +1158,12 @@
     none
     __u32
     {
-      Call{
-        Identifier{select}
+      Call[not set]{
+        Identifier[not set]{select}
         (
-          ScalarConstructor{10}
-          ScalarConstructor{20}
-          ScalarConstructor{true}
+          ScalarConstructor[not set]{10}
+          ScalarConstructor[not set]{20}
+          ScalarConstructor[not set]{true}
         )
       }
     }
@@ -1184,12 +1189,12 @@
     none
     __f32
     {
-      Call{
-        Identifier{select}
+      Call[not set]{
+        Identifier[not set]{select}
         (
-          ScalarConstructor{50.000000}
-          ScalarConstructor{60.000000}
-          ScalarConstructor{true}
+          ScalarConstructor[not set]{50.000000}
+          ScalarConstructor[not set]{60.000000}
+          ScalarConstructor[not set]{true}
         )
       }
     }
@@ -1215,20 +1220,20 @@
     none
     __vec_2__u32
     {
-      Call{
-        Identifier{select}
+      Call[not set]{
+        Identifier[not set]{select}
         (
-          TypeConstructor{
+          TypeConstructor[not set]{
             __vec_2__u32
-            ScalarConstructor{10}
-            ScalarConstructor{20}
+            ScalarConstructor[not set]{10}
+            ScalarConstructor[not set]{20}
           }
-          TypeConstructor{
+          TypeConstructor[not set]{
             __vec_2__u32
-            ScalarConstructor{20}
-            ScalarConstructor{10}
+            ScalarConstructor[not set]{20}
+            ScalarConstructor[not set]{10}
           }
-          ScalarConstructor{true}
+          ScalarConstructor[not set]{true}
         )
       }
     }
@@ -1254,23 +1259,23 @@
     none
     __vec_2__u32
     {
-      Call{
-        Identifier{select}
+      Call[not set]{
+        Identifier[not set]{select}
         (
-          TypeConstructor{
+          TypeConstructor[not set]{
             __vec_2__u32
-            ScalarConstructor{10}
-            ScalarConstructor{20}
+            ScalarConstructor[not set]{10}
+            ScalarConstructor[not set]{20}
           }
-          TypeConstructor{
+          TypeConstructor[not set]{
             __vec_2__u32
-            ScalarConstructor{20}
-            ScalarConstructor{10}
+            ScalarConstructor[not set]{20}
+            ScalarConstructor[not set]{10}
           }
-          TypeConstructor{
+          TypeConstructor[not set]{
             __vec_2__bool
-            ScalarConstructor{true}
-            ScalarConstructor{false}
+            ScalarConstructor[not set]{true}
+            ScalarConstructor[not set]{false}
           }
         )
       }
@@ -1299,13 +1304,13 @@
     none
     __bool
     {
-      Call{
-        Identifier{any}
+      Call[not set]{
+        Identifier[not set]{any}
         (
-          TypeConstructor{
+          TypeConstructor[not set]{
             __vec_2__bool
-            ScalarConstructor{true}
-            ScalarConstructor{false}
+            ScalarConstructor[not set]{true}
+            ScalarConstructor[not set]{false}
           }
         )
       }
@@ -1332,13 +1337,13 @@
     none
     __bool
     {
-      Call{
-        Identifier{all}
+      Call[not set]{
+        Identifier[not set]{all}
         (
-          TypeConstructor{
+          TypeConstructor[not set]{
             __vec_2__bool
-            ScalarConstructor{true}
-            ScalarConstructor{false}
+            ScalarConstructor[not set]{true}
+            ScalarConstructor[not set]{false}
           }
         )
       }
@@ -1365,10 +1370,10 @@
     none
     __bool
     {
-      Call{
-        Identifier{is_nan}
+      Call[not set]{
+        Identifier[not set]{is_nan}
         (
-          ScalarConstructor{50.000000}
+          ScalarConstructor[not set]{50.000000}
         )
       }
     }
@@ -1394,13 +1399,13 @@
     none
     __vec_2__bool
     {
-      Call{
-        Identifier{is_nan}
+      Call[not set]{
+        Identifier[not set]{is_nan}
         (
-          TypeConstructor{
+          TypeConstructor[not set]{
             __vec_2__f32
-            ScalarConstructor{50.000000}
-            ScalarConstructor{60.000000}
+            ScalarConstructor[not set]{50.000000}
+            ScalarConstructor[not set]{60.000000}
           }
         )
       }
@@ -1427,10 +1432,10 @@
     none
     __bool
     {
-      Call{
-        Identifier{is_inf}
+      Call[not set]{
+        Identifier[not set]{is_inf}
         (
-          ScalarConstructor{50.000000}
+          ScalarConstructor[not set]{50.000000}
         )
       }
     }
@@ -1456,13 +1461,13 @@
     none
     __vec_2__bool
     {
-      Call{
-        Identifier{is_inf}
+      Call[not set]{
+        Identifier[not set]{is_inf}
         (
-          TypeConstructor{
+          TypeConstructor[not set]{
             __vec_2__f32
-            ScalarConstructor{50.000000}
-            ScalarConstructor{60.000000}
+            ScalarConstructor[not set]{50.000000}
+            ScalarConstructor[not set]{60.000000}
           }
         )
       }
diff --git a/src/reader/spirv/function_memory_test.cc b/src/reader/spirv/function_memory_test.cc
index 7291980..63013cf 100644
--- a/src/reader/spirv/function_memory_test.cc
+++ b/src/reader/spirv/function_memory_test.cc
@@ -51,16 +51,16 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody()) << p->error();
   EXPECT_THAT(ToString(fe.ast_body()), HasSubstr(R"(Assignment{
-  Identifier{x_1}
-  ScalarConstructor{true}
+  Identifier[not set]{x_1}
+  ScalarConstructor[not set]{true}
 }
 Assignment{
-  Identifier{x_1}
-  ScalarConstructor{false}
+  Identifier[not set]{x_1}
+  ScalarConstructor[not set]{false}
 }
 Assignment{
-  Identifier{x_1}
-  ScalarConstructor{false}
+  Identifier[not set]{x_1}
+  ScalarConstructor[not set]{false}
 })"));
 }
 
@@ -83,12 +83,12 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody());
   EXPECT_THAT(ToString(fe.ast_body()), HasSubstr(R"(Assignment{
-  Identifier{x_1}
-  ScalarConstructor{42}
+  Identifier[not set]{x_1}
+  ScalarConstructor[not set]{42}
 }
 Assignment{
-  Identifier{x_1}
-  ScalarConstructor{0}
+  Identifier[not set]{x_1}
+  ScalarConstructor[not set]{0}
 })"));
 }
 
@@ -111,12 +111,12 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody());
   EXPECT_THAT(ToString(fe.ast_body()), HasSubstr(R"(Assignment{
-  Identifier{x_1}
-  ScalarConstructor{42}
+  Identifier[not set]{x_1}
+  ScalarConstructor[not set]{42}
 }
 Assignment{
-  Identifier{x_1}
-  ScalarConstructor{0}
+  Identifier[not set]{x_1}
+  ScalarConstructor[not set]{0}
 })"));
 }
 
@@ -139,12 +139,12 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody());
   EXPECT_THAT(ToString(fe.ast_body()), HasSubstr(R"(Assignment{
-  Identifier{x_1}
-  ScalarConstructor{42.000000}
+  Identifier[not set]{x_1}
+  ScalarConstructor[not set]{42.000000}
 }
 Assignment{
-  Identifier{x_1}
-  ScalarConstructor{0.000000}
+  Identifier[not set]{x_1}
+  ScalarConstructor[not set]{0.000000}
 })"));
 }
 
@@ -173,7 +173,7 @@
     none
     __bool
     {
-      Identifier{x_1}
+      Identifier[not set]{x_1}
     }
   })"));
 }
@@ -202,7 +202,7 @@
     none
     __u32
     {
-      Identifier{x_1}
+      Identifier[not set]{x_1}
     }
   }
 }
@@ -212,7 +212,7 @@
     none
     __u32
     {
-      Identifier{x_1}
+      Identifier[not set]{x_1}
     }
   }
 })"));
@@ -243,17 +243,17 @@
     none
     __u32
     {
-      Identifier{x_1}
+      Identifier[not set]{x_1}
     }
   }
 }
 Assignment{
-  Identifier{x_1}
-  Identifier{x_2}
+  Identifier[not set]{x_1}
+  Identifier[not set]{x_2}
 }
 Assignment{
-  Identifier{x_1}
-  Identifier{x_2}
+  Identifier[not set]{x_1}
+  Identifier[not set]{x_2}
 }
 )"));
 }
@@ -275,8 +275,8 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody());
   EXPECT_THAT(ToString(fe.ast_body()), HasSubstr(R"(Assignment{
-  Identifier{x_1}
-  ScalarConstructor{42}
+  Identifier[not set]{x_1}
+  ScalarConstructor[not set]{42}
 })"));
 }
 
@@ -342,11 +342,11 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody());
   EXPECT_THAT(ToString(fe.ast_body()), HasSubstr(R"(Assignment{
-  MemberAccessor{
-    Identifier{myvar}
-    Identifier{z}
+  MemberAccessor[not set]{
+    Identifier[not set]{myvar}
+    Identifier[not set]{z}
   }
-  ScalarConstructor{42}
+  ScalarConstructor[not set]{42}
 })")) << ToString(fe.ast_body());
 }
 
@@ -405,11 +405,11 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody());
   EXPECT_THAT(ToString(fe.ast_body()), HasSubstr(R"(Assignment{
-  ArrayAccessor{
-    Identifier{myvar}
-    Identifier{x_11}
+  ArrayAccessor[not set]{
+    Identifier[not set]{myvar}
+    Identifier[not set]{x_11}
   }
-  ScalarConstructor{42}
+  ScalarConstructor[not set]{42}
 })"));
 }
 
@@ -442,16 +442,16 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody());
   EXPECT_THAT(ToString(fe.ast_body()), HasSubstr(R"(Assignment{
-  ArrayAccessor{
-    Identifier{myvar}
-    ScalarConstructor{2}
+  ArrayAccessor[not set]{
+    Identifier[not set]{myvar}
+    ScalarConstructor[not set]{2}
   }
-  TypeConstructor{
+  TypeConstructor[not set]{
     __vec_4__f32
-    ScalarConstructor{42.000000}
-    ScalarConstructor{42.000000}
-    ScalarConstructor{42.000000}
-    ScalarConstructor{42.000000}
+    ScalarConstructor[not set]{42.000000}
+    ScalarConstructor[not set]{42.000000}
+    ScalarConstructor[not set]{42.000000}
+    ScalarConstructor[not set]{42.000000}
   }
 })"));
 }
@@ -485,16 +485,16 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody());
   EXPECT_THAT(ToString(fe.ast_body()), HasSubstr(R"(Assignment{
-  ArrayAccessor{
-    Identifier{myvar}
-    ScalarConstructor{2}
+  ArrayAccessor[not set]{
+    Identifier[not set]{myvar}
+    ScalarConstructor[not set]{2}
   }
-  TypeConstructor{
+  TypeConstructor[not set]{
     __vec_4__f32
-    ScalarConstructor{42.000000}
-    ScalarConstructor{42.000000}
-    ScalarConstructor{42.000000}
-    ScalarConstructor{42.000000}
+    ScalarConstructor[not set]{42.000000}
+    ScalarConstructor[not set]{42.000000}
+    ScalarConstructor[not set]{42.000000}
+    ScalarConstructor[not set]{42.000000}
   }
 })"));
 }
@@ -527,11 +527,11 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody());
   EXPECT_THAT(ToString(fe.ast_body()), HasSubstr(R"(Assignment{
-  MemberAccessor{
-    Identifier{myvar}
-    Identifier{age}
+  MemberAccessor[not set]{
+    Identifier[not set]{myvar}
+    Identifier[not set]{age}
   }
-  ScalarConstructor{42.000000}
+  ScalarConstructor[not set]{42.000000}
 })"));
 }
 
@@ -575,18 +575,18 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody());
   EXPECT_THAT(ToString(fe.ast_body()), HasSubstr(R"(Assignment{
-  MemberAccessor{
-    Identifier{myvar}
-    Identifier{age}
+  MemberAccessor[not set]{
+    Identifier[not set]{myvar}
+    Identifier[not set]{age}
   }
-  ScalarConstructor{42.000000}
+  ScalarConstructor[not set]{42.000000}
 }
 Assignment{
-  MemberAccessor{
-    Identifier{myvar2}
-    Identifier{ancientness}
+  MemberAccessor[not set]{
+    Identifier[not set]{myvar2}
+    Identifier[not set]{ancientness}
   }
-  ScalarConstructor{420.000000}
+  ScalarConstructor[not set]{420.000000}
 })")) << ToString(fe.ast_body());
 }
 
@@ -685,14 +685,14 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody());
   EXPECT_THAT(ToString(fe.ast_body()), HasSubstr(R"(Assignment{
-  ArrayAccessor{
-    MemberAccessor{
-      Identifier{myvar}
-      Identifier{age}
+  ArrayAccessor[not set]{
+    MemberAccessor[not set]{
+      Identifier[not set]{myvar}
+      Identifier[not set]{age}
     }
-    ScalarConstructor{2}
+    ScalarConstructor[not set]{2}
   }
-  ScalarConstructor{42.000000}
+  ScalarConstructor[not set]{42.000000}
 })"));
 }
 
@@ -725,14 +725,14 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody());
   EXPECT_THAT(ToString(fe.ast_body()), HasSubstr(R"(Assignment{
-  MemberAccessor{
-    ArrayAccessor{
-      Identifier{myvar}
-      ScalarConstructor{2}
+  MemberAccessor[not set]{
+    ArrayAccessor[not set]{
+      Identifier[not set]{myvar}
+      ScalarConstructor[not set]{2}
     }
-    Identifier{w}
+    Identifier[not set]{w}
   }
-  ScalarConstructor{42.000000}
+  ScalarConstructor[not set]{42.000000}
 })"));
 }
 
@@ -833,21 +833,21 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody()) << p->error();
   EXPECT_THAT(ToString(fe.ast_body()), HasSubstr(R"(Assignment{
-  MemberAccessor{
-    Identifier{myvar}
-    Identifier{field0}
+  MemberAccessor[not set]{
+    Identifier[not set]{myvar}
+    Identifier[not set]{field0}
   }
-  ScalarConstructor{0}
+  ScalarConstructor[not set]{0}
 }
 Assignment{
-  ArrayAccessor{
-    MemberAccessor{
-      Identifier{myvar}
-      Identifier{field1}
+  ArrayAccessor[not set]{
+    MemberAccessor[not set]{
+      Identifier[not set]{myvar}
+      Identifier[not set]{field1}
     }
-    ScalarConstructor{1}
+    ScalarConstructor[not set]{1}
   }
-  ScalarConstructor{0}
+  ScalarConstructor[not set]{0}
 })")) << ToString(fe.ast_body())
       << p->error();
 }
@@ -872,14 +872,14 @@
   FunctionEmitter fe(p, *spirv_function(100));
   EXPECT_TRUE(fe.EmitBody()) << p->error();
   EXPECT_THAT(ToString(fe.ast_body()), HasSubstr(R"(Assignment{
-  ArrayAccessor{
-    MemberAccessor{
-      Identifier{myvar}
-      Identifier{field1}
+  ArrayAccessor[not set]{
+    MemberAccessor[not set]{
+      Identifier[not set]{myvar}
+      Identifier[not set]{field1}
     }
-    ScalarConstructor{1}
+    ScalarConstructor[not set]{1}
   }
-  ScalarConstructor{0}
+  ScalarConstructor[not set]{0}
 })")) << ToString(fe.ast_body())
       << p->error();
 }
@@ -910,19 +910,19 @@
     none
     __ptr_storage_buffer__u32
     {
-      ArrayAccessor{
-        MemberAccessor{
-          Identifier{myvar}
-          Identifier{field1}
+      ArrayAccessor[not set]{
+        MemberAccessor[not set]{
+          Identifier[not set]{myvar}
+          Identifier[not set]{field1}
         }
-        ScalarConstructor{1}
+        ScalarConstructor[not set]{1}
       }
     }
   }
 }
 Assignment{
-  Identifier{x_2}
-  ScalarConstructor{0}
+  Identifier[not set]{x_2}
+  ScalarConstructor[not set]{0}
 })")) << ToString(fe.ast_body())
       << p->error();
 }
@@ -968,17 +968,17 @@
 }
 If{
   (
-    ScalarConstructor{true}
+    ScalarConstructor[not set]{true}
   )
   {
     Assignment{
-      Identifier{x_2}
-      ArrayAccessor{
-        MemberAccessor{
-          Identifier{myvar}
-          Identifier{field1}
+      Identifier[not set]{x_2}
+      ArrayAccessor[not set]{
+        MemberAccessor[not set]{
+          Identifier[not set]{myvar}
+          Identifier[not set]{field1}
         }
-        ScalarConstructor{1}
+        ScalarConstructor[not set]{1}
       }
     }
   }
@@ -989,8 +989,8 @@
   }
 }
 Assignment{
-  Identifier{x_2}
-  ScalarConstructor{0}
+  Identifier[not set]{x_2}
+  ScalarConstructor[not set]{0}
 }
 Return{}
 )")) << ToString(fe.ast_body())
diff --git a/src/reader/spirv/function_misc_test.cc b/src/reader/spirv/function_misc_test.cc
index 9d87310..64207b6 100644
--- a/src/reader/spirv/function_misc_test.cc
+++ b/src/reader/spirv/function_misc_test.cc
@@ -73,7 +73,7 @@
     none
     __bool
     {
-      ScalarConstructor{false}
+      ScalarConstructor[not set]{false}
     }
   }
 }
@@ -83,7 +83,7 @@
     none
     __u32
     {
-      ScalarConstructor{0}
+      ScalarConstructor[not set]{0}
     }
   }
 }
@@ -93,7 +93,7 @@
     none
     __i32
     {
-      ScalarConstructor{0}
+      ScalarConstructor[not set]{0}
     }
   }
 }
@@ -103,7 +103,7 @@
     none
     __f32
     {
-      ScalarConstructor{0.000000}
+      ScalarConstructor[not set]{0.000000}
     }
   }
 })")) << ToString(fe.ast_body());
@@ -133,10 +133,10 @@
     none
     __vec_2__u32
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __vec_2__u32
-        ScalarConstructor{0}
-        ScalarConstructor{0}
+        ScalarConstructor[not set]{0}
+        ScalarConstructor[not set]{0}
       }
     }
   }
@@ -147,10 +147,10 @@
     none
     __vec_2__i32
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __vec_2__i32
-        ScalarConstructor{0}
-        ScalarConstructor{0}
+        ScalarConstructor[not set]{0}
+        ScalarConstructor[not set]{0}
       }
     }
   }
@@ -161,10 +161,10 @@
     none
     __vec_2__f32
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __vec_2__f32
-        ScalarConstructor{0.000000}
-        ScalarConstructor{0.000000}
+        ScalarConstructor[not set]{0.000000}
+        ScalarConstructor[not set]{0.000000}
       }
     }
   }
@@ -193,17 +193,17 @@
     none
     __mat_2_2__f32
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __mat_2_2__f32
-        TypeConstructor{
+        TypeConstructor[not set]{
           __vec_2__f32
-          ScalarConstructor{0.000000}
-          ScalarConstructor{0.000000}
+          ScalarConstructor[not set]{0.000000}
+          ScalarConstructor[not set]{0.000000}
         }
-        TypeConstructor{
+        TypeConstructor[not set]{
           __vec_2__f32
-          ScalarConstructor{0.000000}
-          ScalarConstructor{0.000000}
+          ScalarConstructor[not set]{0.000000}
+          ScalarConstructor[not set]{0.000000}
         }
       }
     }
@@ -234,10 +234,10 @@
     none
     __array__u32_2
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __array__u32_2
-        ScalarConstructor{0}
-        ScalarConstructor{0}
+        ScalarConstructor[not set]{0}
+        ScalarConstructor[not set]{0}
       }
     }
   }
@@ -266,12 +266,12 @@
     none
     __struct_S
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __struct_S
-        ScalarConstructor{false}
-        ScalarConstructor{0}
-        ScalarConstructor{0}
-        ScalarConstructor{0.000000}
+        ScalarConstructor[not set]{false}
+        ScalarConstructor[not set]{0}
+        ScalarConstructor[not set]{0}
+        ScalarConstructor[not set]{0.000000}
       }
     }
   }
diff --git a/src/reader/spirv/function_var_test.cc b/src/reader/spirv/function_var_test.cc
index f7a164d..4c37108 100644
--- a/src/reader/spirv/function_var_test.cc
+++ b/src/reader/spirv/function_var_test.cc
@@ -214,7 +214,7 @@
     function
     __bool
     {
-      ScalarConstructor{true}
+      ScalarConstructor[not set]{true}
     }
   }
 }
@@ -224,7 +224,7 @@
     function
     __bool
     {
-      ScalarConstructor{false}
+      ScalarConstructor[not set]{false}
     }
   }
 }
@@ -234,7 +234,7 @@
     function
     __i32
     {
-      ScalarConstructor{-1}
+      ScalarConstructor[not set]{-1}
     }
   }
 }
@@ -244,7 +244,7 @@
     function
     __u32
     {
-      ScalarConstructor{1}
+      ScalarConstructor[not set]{1}
     }
   }
 }
@@ -254,7 +254,7 @@
     function
     __f32
     {
-      ScalarConstructor{1.500000}
+      ScalarConstructor[not set]{1.500000}
     }
   }
 }
@@ -287,7 +287,7 @@
     function
     __bool
     {
-      ScalarConstructor{false}
+      ScalarConstructor[not set]{false}
     }
   }
 }
@@ -297,7 +297,7 @@
     function
     __i32
     {
-      ScalarConstructor{0}
+      ScalarConstructor[not set]{0}
     }
   }
 }
@@ -307,7 +307,7 @@
     function
     __u32
     {
-      ScalarConstructor{0}
+      ScalarConstructor[not set]{0}
     }
   }
 }
@@ -317,7 +317,7 @@
     function
     __f32
     {
-      ScalarConstructor{0.000000}
+      ScalarConstructor[not set]{0.000000}
     }
   }
 }
@@ -346,10 +346,10 @@
     function
     __vec_2__f32
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __vec_2__f32
-        ScalarConstructor{1.500000}
-        ScalarConstructor{2.000000}
+        ScalarConstructor[not set]{1.500000}
+        ScalarConstructor[not set]{2.000000}
       }
     }
   }
@@ -384,22 +384,22 @@
     function
     __mat_2_3__f32
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __mat_2_3__f32
-        TypeConstructor{
+        TypeConstructor[not set]{
           __vec_2__f32
-          ScalarConstructor{1.500000}
-          ScalarConstructor{2.000000}
+          ScalarConstructor[not set]{1.500000}
+          ScalarConstructor[not set]{2.000000}
         }
-        TypeConstructor{
+        TypeConstructor[not set]{
           __vec_2__f32
-          ScalarConstructor{2.000000}
-          ScalarConstructor{3.000000}
+          ScalarConstructor[not set]{2.000000}
+          ScalarConstructor[not set]{3.000000}
         }
-        TypeConstructor{
+        TypeConstructor[not set]{
           __vec_2__f32
-          ScalarConstructor{3.000000}
-          ScalarConstructor{4.000000}
+          ScalarConstructor[not set]{3.000000}
+          ScalarConstructor[not set]{4.000000}
         }
       }
     }
@@ -430,10 +430,10 @@
     function
     __array__u32_2
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __array__u32_2
-        ScalarConstructor{1}
-        ScalarConstructor{2}
+        ScalarConstructor[not set]{1}
+        ScalarConstructor[not set]{2}
       }
     }
   }
@@ -464,10 +464,10 @@
     function
     __alias_Arr__array__u32_2_stride_16
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __alias_Arr__array__u32_2_stride_16
-        ScalarConstructor{1}
-        ScalarConstructor{2}
+        ScalarConstructor[not set]{1}
+        ScalarConstructor[not set]{2}
       }
     }
   }
@@ -497,10 +497,10 @@
     function
     __array__u32_2
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __array__u32_2
-        ScalarConstructor{0}
-        ScalarConstructor{0}
+        ScalarConstructor[not set]{0}
+        ScalarConstructor[not set]{0}
       }
     }
   }
@@ -531,10 +531,10 @@
     function
     __alias_Arr__array__u32_2_stride_16
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __alias_Arr__array__u32_2_stride_16
-        ScalarConstructor{0}
-        ScalarConstructor{0}
+        ScalarConstructor[not set]{0}
+        ScalarConstructor[not set]{0}
       }
     }
   }
@@ -565,14 +565,14 @@
     function
     __struct_S
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __struct_S
-        ScalarConstructor{1}
-        ScalarConstructor{1.500000}
-        TypeConstructor{
+        ScalarConstructor[not set]{1}
+        ScalarConstructor[not set]{1.500000}
+        TypeConstructor[not set]{
           __array__u32_2
-          ScalarConstructor{1}
-          ScalarConstructor{2}
+          ScalarConstructor[not set]{1}
+          ScalarConstructor[not set]{2}
         }
       }
     }
@@ -604,14 +604,14 @@
     function
     __struct_S
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __struct_S
-        ScalarConstructor{0}
-        ScalarConstructor{0.000000}
-        TypeConstructor{
+        ScalarConstructor[not set]{0}
+        ScalarConstructor[not set]{0.000000}
+        TypeConstructor[not set]{
           __array__u32_2
-          ScalarConstructor{0}
-          ScalarConstructor{0}
+          ScalarConstructor[not set]{0}
+          ScalarConstructor[not set]{0}
         }
       }
     }
@@ -650,15 +650,15 @@
   }
 }
 Assignment{
-  Identifier{x_25}
-  ScalarConstructor{1}
+  Identifier[not set]{x_25}
+  ScalarConstructor[not set]{1}
 }
 Assignment{
-  Identifier{x_25}
-  Binary{
-    ScalarConstructor{1}
+  Identifier[not set]{x_25}
+  Binary[not set]{
+    ScalarConstructor[not set]{1}
     add
-    ScalarConstructor{1}
+    ScalarConstructor[not set]{1}
   }
 }
 Return{}
@@ -700,25 +700,25 @@
     none
     __u32
     {
-      Binary{
-        ScalarConstructor{1}
+      Binary[not set]{
+        ScalarConstructor[not set]{1}
         add
-        ScalarConstructor{1}
+        ScalarConstructor[not set]{1}
       }
     }
   }
 }
 Assignment{
-  Identifier{x_25}
-  ScalarConstructor{1}
+  Identifier[not set]{x_25}
+  ScalarConstructor[not set]{1}
 }
 Assignment{
-  Identifier{x_25}
-  Identifier{x_2}
+  Identifier[not set]{x_25}
+  Identifier[not set]{x_2}
 }
 Assignment{
-  Identifier{x_25}
-  Identifier{x_2}
+  Identifier[not set]{x_25}
+  Identifier[not set]{x_2}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -770,29 +770,29 @@
     none
     __u32
     {
-      Binary{
-        ScalarConstructor{1}
+      Binary[not set]{
+        ScalarConstructor[not set]{1}
         add
-        ScalarConstructor{1}
+        ScalarConstructor[not set]{1}
       }
     }
   }
 }
 Assignment{
-  Identifier{x_25}
-  ScalarConstructor{1}
+  Identifier[not set]{x_25}
+  ScalarConstructor[not set]{1}
 }
 Loop{
   continuing {
     Assignment{
-      Identifier{x_25}
-      Identifier{x_2}
+      Identifier[not set]{x_25}
+      Identifier[not set]{x_2}
     }
   }
 }
 Assignment{
-  Identifier{x_25}
-  ScalarConstructor{2}
+  Identifier[not set]{x_25}
+  ScalarConstructor[not set]{2}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -855,8 +855,8 @@
   EXPECT_TRUE(fe.EmitBody()) << p->error();
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(Assignment{
-  Identifier{x_1}
-  ScalarConstructor{0}
+  Identifier[not set]{x_1}
+  ScalarConstructor[not set]{0}
 }
 Loop{
   VariableDeclStatement{
@@ -867,32 +867,32 @@
     }
   }
   Assignment{
-    Identifier{x_1}
-    ScalarConstructor{1}
+    Identifier[not set]{x_1}
+    ScalarConstructor[not set]{1}
   }
   If{
     (
-      ScalarConstructor{false}
+      ScalarConstructor[not set]{false}
     )
     {
       Break{}
     }
   }
   Assignment{
-    Identifier{x_1}
-    ScalarConstructor{3}
+    Identifier[not set]{x_1}
+    ScalarConstructor[not set]{3}
   }
   If{
     (
-      ScalarConstructor{true}
+      ScalarConstructor[not set]{true}
     )
     {
       Assignment{
-        Identifier{x_2}
-        Binary{
-          ScalarConstructor{1}
+        Identifier[not set]{x_2}
+        Binary[not set]{
+          ScalarConstructor[not set]{1}
           add
-          ScalarConstructor{1}
+          ScalarConstructor[not set]{1}
         }
       }
     }
@@ -903,17 +903,17 @@
     }
   }
   Assignment{
-    Identifier{x_1}
-    Identifier{x_2}
+    Identifier[not set]{x_1}
+    Identifier[not set]{x_2}
   }
   continuing {
     Assignment{
-      Identifier{x_1}
-      ScalarConstructor{4}
+      Identifier[not set]{x_1}
+      ScalarConstructor[not set]{4}
     }
     If{
       (
-        ScalarConstructor{false}
+        ScalarConstructor[not set]{false}
       )
       {
         Break{}
@@ -922,8 +922,8 @@
   }
 }
 Assignment{
-  Identifier{x_1}
-  ScalarConstructor{5}
+  Identifier[not set]{x_1}
+  ScalarConstructor[not set]{5}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -976,13 +976,13 @@
     none
     __u32
     {
-      ScalarConstructor{1}
+      ScalarConstructor[not set]{1}
     }
   }
 }
 If{
   (
-    ScalarConstructor{true}
+    ScalarConstructor[not set]{true}
   )
   {
   }
@@ -993,13 +993,13 @@
     none
     __u32
     {
-      Identifier{x_1}
+      Identifier[not set]{x_1}
     }
   }
 }
 Assignment{
-  Identifier{x_200}
-  Identifier{x_3}
+  Identifier[not set]{x_200}
+  Identifier[not set]{x_3}
 }
 Return{}
 )")) << ToString(fe.ast_body());
@@ -1055,7 +1055,7 @@
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(If{
   (
-    ScalarConstructor{true}
+    ScalarConstructor[not set]{true}
   )
   {
     VariableDeclStatement{
@@ -1064,13 +1064,13 @@
         none
         __u32
         {
-          ScalarConstructor{1}
+          ScalarConstructor[not set]{1}
         }
       }
     }
     If{
       (
-        ScalarConstructor{true}
+        ScalarConstructor[not set]{true}
       )
       {
       }
@@ -1081,13 +1081,13 @@
         none
         __u32
         {
-          Identifier{x_1}
+          Identifier[not set]{x_1}
         }
       }
     }
     Assignment{
-      Identifier{x_200}
-      Identifier{x_3}
+      Identifier[not set]{x_200}
+      Identifier[not set]{x_3}
     }
   }
 }
@@ -1140,7 +1140,7 @@
 
   EXPECT_THAT(ToString(fe.ast_body()), Eq(R"(If{
   (
-    ScalarConstructor{true}
+    ScalarConstructor[not set]{true}
   )
   {
     VariableDeclStatement{
@@ -1149,12 +1149,12 @@
         none
         __u32
         {
-          ScalarConstructor{1}
+          ScalarConstructor[not set]{1}
         }
       }
     }
     Switch{
-      ScalarConstructor{1}
+      ScalarConstructor[not set]{1}
       {
         Case 0{
         }
@@ -1168,13 +1168,13 @@
         none
         __u32
         {
-          Identifier{x_1}
+          Identifier[not set]{x_1}
         }
       }
     }
     Assignment{
-      Identifier{x_200}
-      Identifier{x_3}
+      Identifier[not set]{x_200}
+      Identifier[not set]{x_3}
     }
   }
 }
@@ -1225,7 +1225,7 @@
     none
     __u32
     {
-      ScalarConstructor{1}
+      ScalarConstructor[not set]{1}
     }
   }
 }
@@ -1235,13 +1235,13 @@
     none
     __u32
     {
-      Identifier{x_1}
+      Identifier[not set]{x_1}
     }
   }
 }
 If{
   (
-    ScalarConstructor{true}
+    ScalarConstructor[not set]{true}
   )
   {
   }
@@ -1312,7 +1312,7 @@
       none
       __bool
       {
-        Identifier{x_7}
+        Identifier[not set]{x_7}
       }
     }
   }
@@ -1322,21 +1322,21 @@
       none
       __bool
       {
-        Identifier{x_8}
+        Identifier[not set]{x_8}
       }
     }
   }
   Assignment{
-    Identifier{x_2_phi}
-    ScalarConstructor{0}
+    Identifier[not set]{x_2_phi}
+    ScalarConstructor[not set]{0}
   }
   Assignment{
-    Identifier{x_3_phi}
-    ScalarConstructor{1}
+    Identifier[not set]{x_3_phi}
+    ScalarConstructor[not set]{1}
   }
   If{
     (
-      Identifier{x_101}
+      Identifier[not set]{x_101}
     )
     {
       Break{}
@@ -1349,7 +1349,7 @@
         none
         __u32
         {
-          Identifier{x_2_phi}
+          Identifier[not set]{x_2_phi}
         }
       }
     }
@@ -1359,25 +1359,25 @@
         none
         __u32
         {
-          Identifier{x_3_phi}
+          Identifier[not set]{x_3_phi}
         }
       }
     }
     Assignment{
-      Identifier{x_2_phi}
-      Binary{
-        Identifier{x_2}
+      Identifier[not set]{x_2_phi}
+      Binary[not set]{
+        Identifier[not set]{x_2}
         add
-        ScalarConstructor{1}
+        ScalarConstructor[not set]{1}
       }
     }
     Assignment{
-      Identifier{x_3_phi}
-      Identifier{x_3}
+      Identifier[not set]{x_3_phi}
+      Identifier[not set]{x_3}
     }
     If{
       (
-        Identifier{x_102}
+        Identifier[not set]{x_102}
       )
       {
         Break{}
@@ -1454,7 +1454,7 @@
       none
       __bool
       {
-        Identifier{x_7}
+        Identifier[not set]{x_7}
       }
     }
   }
@@ -1464,21 +1464,21 @@
       none
       __bool
       {
-        Identifier{x_8}
+        Identifier[not set]{x_8}
       }
     }
   }
   Assignment{
-    Identifier{x_2_phi}
-    ScalarConstructor{0}
+    Identifier[not set]{x_2_phi}
+    ScalarConstructor[not set]{0}
   }
   Assignment{
-    Identifier{x_3_phi}
-    ScalarConstructor{1}
+    Identifier[not set]{x_3_phi}
+    ScalarConstructor[not set]{1}
   }
   If{
     (
-      Identifier{x_101}
+      Identifier[not set]{x_101}
     )
     {
       Break{}
@@ -1498,7 +1498,7 @@
         none
         __u32
         {
-          Identifier{x_2_phi}
+          Identifier[not set]{x_2_phi}
         }
       }
     }
@@ -1508,13 +1508,13 @@
         none
         __u32
         {
-          Identifier{x_3_phi}
+          Identifier[not set]{x_3_phi}
         }
       }
     }
     If{
       (
-        Identifier{x_102}
+        Identifier[not set]{x_102}
       )
       {
         Break{}
@@ -1522,20 +1522,20 @@
     }
     continuing {
       Assignment{
-        Identifier{x_4}
-        Binary{
-          Identifier{x_2}
+        Identifier[not set]{x_4}
+        Binary[not set]{
+          Identifier[not set]{x_2}
           add
-          ScalarConstructor{1}
+          ScalarConstructor[not set]{1}
         }
       }
       Assignment{
-        Identifier{x_2_phi}
-        Identifier{x_4}
+        Identifier[not set]{x_2_phi}
+        Identifier[not set]{x_4}
       }
       Assignment{
-        Identifier{x_3_phi}
-        Identifier{x_3}
+        Identifier[not set]{x_3_phi}
+        Identifier[not set]{x_3}
       }
     }
   }
@@ -1595,7 +1595,7 @@
     none
     __bool
     {
-      Identifier{x_17}
+      Identifier[not set]{x_17}
     }
   }
 }
@@ -1615,12 +1615,12 @@
     }
   }
   Assignment{
-    Identifier{x_2_phi}
-    ScalarConstructor{0}
+    Identifier[not set]{x_2_phi}
+    ScalarConstructor[not set]{0}
   }
   Assignment{
-    Identifier{x_5_phi}
-    ScalarConstructor{1}
+    Identifier[not set]{x_5_phi}
+    ScalarConstructor[not set]{1}
   }
   Loop{
     VariableDeclStatement{
@@ -1636,7 +1636,7 @@
         none
         __u32
         {
-          Identifier{x_2_phi}
+          Identifier[not set]{x_2_phi}
         }
       }
     }
@@ -1646,7 +1646,7 @@
         none
         __u32
         {
-          Identifier{x_5_phi}
+          Identifier[not set]{x_5_phi}
         }
       }
     }
@@ -1656,10 +1656,10 @@
         none
         __u32
         {
-          Binary{
-            Identifier{x_2}
+          Binary[not set]{
+            Identifier[not set]{x_2}
             add
-            ScalarConstructor{1}
+            ScalarConstructor[not set]{1}
           }
         }
       }
@@ -1670,17 +1670,17 @@
         none
         __u32
         {
-          Binary{
-            Identifier{x_4}
+          Binary[not set]{
+            Identifier[not set]{x_4}
             add
-            ScalarConstructor{1}
+            ScalarConstructor[not set]{1}
           }
         }
       }
     }
     If{
       (
-        Identifier{x_101}
+        Identifier[not set]{x_101}
       )
       {
         Break{}
@@ -1688,20 +1688,20 @@
     }
     continuing {
       Assignment{
-        Identifier{x_7}
-        Binary{
-          Identifier{x_4}
+        Identifier[not set]{x_7}
+        Binary[not set]{
+          Identifier[not set]{x_4}
           add
-          Identifier{x_6}
+          Identifier[not set]{x_6}
         }
       }
       Assignment{
-        Identifier{x_2_phi}
-        Identifier{x_4}
+        Identifier[not set]{x_2_phi}
+        Identifier[not set]{x_4}
       }
       Assignment{
-        Identifier{x_5_phi}
-        Identifier{x_7}
+        Identifier[not set]{x_5_phi}
+        Identifier[not set]{x_7}
       }
     }
   }
@@ -1763,7 +1763,7 @@
     none
     __bool
     {
-      Identifier{x_7}
+      Identifier[not set]{x_7}
     }
   }
 }
@@ -1773,14 +1773,14 @@
     none
     __bool
     {
-      Identifier{x_8}
+      Identifier[not set]{x_8}
     }
   }
 }
 Loop{
   If{
     (
-      Identifier{x_101}
+      Identifier[not set]{x_101}
     )
     {
       Break{}
@@ -1795,12 +1795,12 @@
   }
   If{
     (
-      Identifier{x_102}
+      Identifier[not set]{x_102}
     )
     {
       Assignment{
-        Identifier{x_2_phi}
-        ScalarConstructor{0}
+        Identifier[not set]{x_2_phi}
+        ScalarConstructor[not set]{0}
       }
       Continue{}
     }
@@ -1808,8 +1808,8 @@
   Else{
     {
       Assignment{
-        Identifier{x_2_phi}
-        ScalarConstructor{1}
+        Identifier[not set]{x_2_phi}
+        ScalarConstructor[not set]{1}
       }
     }
   }
@@ -1820,13 +1820,13 @@
         none
         __u32
         {
-          Identifier{x_2_phi}
+          Identifier[not set]{x_2_phi}
         }
       }
     }
     Assignment{
-      Identifier{x_1}
-      Identifier{x_2}
+      Identifier[not set]{x_1}
+      Identifier[not set]{x_2}
     }
   }
 }
@@ -1883,7 +1883,7 @@
     none
     __bool
     {
-      Identifier{x_7}
+      Identifier[not set]{x_7}
     }
   }
 }
@@ -1893,14 +1893,14 @@
     none
     __bool
     {
-      Identifier{x_8}
+      Identifier[not set]{x_8}
     }
   }
 }
 Loop{
   If{
     (
-      Identifier{x_101}
+      Identifier[not set]{x_101}
     )
     {
       Break{}
@@ -1914,17 +1914,17 @@
     }
   }
   Assignment{
-    Identifier{x_2_phi}
-    ScalarConstructor{0}
+    Identifier[not set]{x_2_phi}
+    ScalarConstructor[not set]{0}
   }
   If{
     (
-      Identifier{x_102}
+      Identifier[not set]{x_102}
     )
     {
       Assignment{
-        Identifier{x_2_phi}
-        ScalarConstructor{1}
+        Identifier[not set]{x_2_phi}
+        ScalarConstructor[not set]{1}
       }
     }
   }
@@ -1935,13 +1935,13 @@
         none
         __u32
         {
-          Identifier{x_2_phi}
+          Identifier[not set]{x_2_phi}
         }
       }
     }
     Assignment{
-      Identifier{x_1}
-      Identifier{x_2}
+      Identifier[not set]{x_1}
+      Identifier[not set]{x_2}
     }
   }
 }
@@ -1996,10 +1996,10 @@
     none
     __bool
     {
-      Binary{
-        ScalarConstructor{true}
+      Binary[not set]{
+        ScalarConstructor[not set]{true}
         logical_and
-        ScalarConstructor{true}
+        ScalarConstructor[not set]{true}
       }
     }
   }
@@ -2010,25 +2010,25 @@
     none
     __bool
     {
-      UnaryOp{
+      UnaryOp[not set]{
         not
-        Identifier{x_11}
+        Identifier[not set]{x_11}
       }
     }
   }
 }
 Assignment{
-  Identifier{x_101_phi}
-  Identifier{x_11}
+  Identifier[not set]{x_101_phi}
+  Identifier[not set]{x_11}
 }
 If{
   (
-    ScalarConstructor{true}
+    ScalarConstructor[not set]{true}
   )
   {
     Assignment{
-      Identifier{x_101_phi}
-      Identifier{x_12}
+      Identifier[not set]{x_101_phi}
+      Identifier[not set]{x_12}
     }
   }
 }
@@ -2038,7 +2038,7 @@
     none
     __bool
     {
-      Identifier{x_101_phi}
+      Identifier[not set]{x_101_phi}
     }
   }
 }
diff --git a/src/reader/spirv/parser_impl_function_decl_test.cc b/src/reader/spirv/parser_impl_function_decl_test.cc
index 0d0c826..f03fd2b 100644
--- a/src/reader/spirv/parser_impl_function_decl_test.cc
+++ b/src/reader/spirv/parser_impl_function_decl_test.cc
@@ -200,7 +200,7 @@
   {
     Return{
       {
-        ScalarConstructor{0}
+        ScalarConstructor[not set]{0}
       }
     }
   }
@@ -213,8 +213,8 @@
         none
         __u32
         {
-          Call{
-            Identifier{leaf}
+          Call[not set]{
+            Identifier[not set]{leaf}
             (
             )
           }
@@ -223,7 +223,7 @@
     }
     Return{
       {
-        Identifier{leaf_result}
+        Identifier[not set]{leaf_result}
       }
     }
   }
@@ -236,8 +236,8 @@
         none
         __u32
         {
-          Call{
-            Identifier{branch}
+          Call[not set]{
+            Identifier[not set]{branch}
             (
             )
           }
@@ -267,7 +267,7 @@
   {
     Return{
       {
-        ScalarConstructor{0.000000}
+        ScalarConstructor[not set]{0.000000}
       }
     }
   })"))
diff --git a/src/reader/spirv/parser_impl_module_var_test.cc b/src/reader/spirv/parser_impl_module_var_test.cc
index 3f6fe8e..4235412 100644
--- a/src/reader/spirv/parser_impl_module_var_test.cc
+++ b/src/reader/spirv/parser_impl_module_var_test.cc
@@ -329,13 +329,13 @@
   const auto module_str = p->module().to_str();
   EXPECT_THAT(module_str, HasSubstr(R"(
     Assignment{
-      Identifier{gl_Position}
-      TypeConstructor{
+      Identifier[not set]{gl_Position}
+      TypeConstructor[not set]{
         __vec_4__f32
-        ScalarConstructor{0.000000}
-        ScalarConstructor{0.000000}
-        ScalarConstructor{0.000000}
-        ScalarConstructor{0.000000}
+        ScalarConstructor[not set]{0.000000}
+        ScalarConstructor[not set]{0.000000}
+        ScalarConstructor[not set]{0.000000}
+        ScalarConstructor[not set]{0.000000}
       }
     })"))
       << module_str;
@@ -360,11 +360,11 @@
   const auto module_str = p->module().to_str();
   EXPECT_THAT(module_str, HasSubstr(R"(
     Assignment{
-      MemberAccessor{
-        Identifier{gl_Position}
-        Identifier{y}
+      MemberAccessor[not set]{
+        Identifier[not set]{gl_Position}
+        Identifier[not set]{y}
       }
-      ScalarConstructor{0.000000}
+      ScalarConstructor[not set]{0.000000}
     })"))
       << module_str;
 }
@@ -392,11 +392,11 @@
   EXPECT_THAT(module_str, HasSubstr(R"(
   {
     Assignment{
-      MemberAccessor{
-        Identifier{gl_Position}
-        Identifier{y}
+      MemberAccessor[not set]{
+        Identifier[not set]{gl_Position}
+        Identifier[not set]{y}
       }
-      ScalarConstructor{0.000000}
+      ScalarConstructor[not set]{0.000000}
     }
     Return{}
   })"))
@@ -518,7 +518,7 @@
     private
     __bool
     {
-      ScalarConstructor{true}
+      ScalarConstructor[not set]{true}
     }
   }
   Variable{
@@ -526,7 +526,7 @@
     private
     __bool
     {
-      ScalarConstructor{false}
+      ScalarConstructor[not set]{false}
     }
   }
   Variable{
@@ -534,7 +534,7 @@
     private
     __i32
     {
-      ScalarConstructor{-1}
+      ScalarConstructor[not set]{-1}
     }
   }
   Variable{
@@ -542,7 +542,7 @@
     private
     __u32
     {
-      ScalarConstructor{1}
+      ScalarConstructor[not set]{1}
     }
   }
   Variable{
@@ -550,7 +550,7 @@
     private
     __f32
     {
-      ScalarConstructor{1.500000}
+      ScalarConstructor[not set]{1.500000}
     }
   })"));
 }
@@ -575,7 +575,7 @@
     private
     __bool
     {
-      ScalarConstructor{false}
+      ScalarConstructor[not set]{false}
     }
   }
   Variable{
@@ -583,7 +583,7 @@
     private
     __i32
     {
-      ScalarConstructor{0}
+      ScalarConstructor[not set]{0}
     }
   }
   Variable{
@@ -591,7 +591,7 @@
     private
     __u32
     {
-      ScalarConstructor{0}
+      ScalarConstructor[not set]{0}
     }
   }
   Variable{
@@ -599,7 +599,7 @@
     private
     __f32
     {
-      ScalarConstructor{0.000000}
+      ScalarConstructor[not set]{0.000000}
     }
   })"));
 }
@@ -624,7 +624,7 @@
     private
     __bool
     {
-      ScalarConstructor{false}
+      ScalarConstructor[not set]{false}
     }
   }
   Variable{
@@ -632,7 +632,7 @@
     private
     __i32
     {
-      ScalarConstructor{0}
+      ScalarConstructor[not set]{0}
     }
   }
   Variable{
@@ -640,7 +640,7 @@
     private
     __u32
     {
-      ScalarConstructor{0}
+      ScalarConstructor[not set]{0}
     }
   }
   Variable{
@@ -648,7 +648,7 @@
     private
     __f32
     {
-      ScalarConstructor{0.000000}
+      ScalarConstructor[not set]{0.000000}
     }
   })"));
 }
@@ -668,10 +668,10 @@
     private
     __vec_2__f32
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __vec_2__f32
-        ScalarConstructor{1.500000}
-        ScalarConstructor{2.000000}
+        ScalarConstructor[not set]{1.500000}
+        ScalarConstructor[not set]{2.000000}
       }
     }
   })"));
@@ -691,10 +691,10 @@
     private
     __vec_2__bool
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __vec_2__bool
-        ScalarConstructor{false}
-        ScalarConstructor{false}
+        ScalarConstructor[not set]{false}
+        ScalarConstructor[not set]{false}
       }
     }
   })"));
@@ -714,10 +714,10 @@
     private
     __vec_2__bool
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __vec_2__bool
-        ScalarConstructor{false}
-        ScalarConstructor{false}
+        ScalarConstructor[not set]{false}
+        ScalarConstructor[not set]{false}
       }
     }
   })"));
@@ -737,10 +737,10 @@
     private
     __vec_2__u32
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __vec_2__u32
-        ScalarConstructor{0}
-        ScalarConstructor{0}
+        ScalarConstructor[not set]{0}
+        ScalarConstructor[not set]{0}
       }
     }
   })"));
@@ -760,10 +760,10 @@
     private
     __vec_2__u32
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __vec_2__u32
-        ScalarConstructor{0}
-        ScalarConstructor{0}
+        ScalarConstructor[not set]{0}
+        ScalarConstructor[not set]{0}
       }
     }
   })"));
@@ -783,10 +783,10 @@
     private
     __vec_2__i32
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __vec_2__i32
-        ScalarConstructor{0}
-        ScalarConstructor{0}
+        ScalarConstructor[not set]{0}
+        ScalarConstructor[not set]{0}
       }
     }
   })"));
@@ -806,10 +806,10 @@
     private
     __vec_2__i32
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __vec_2__i32
-        ScalarConstructor{0}
-        ScalarConstructor{0}
+        ScalarConstructor[not set]{0}
+        ScalarConstructor[not set]{0}
       }
     }
   })"));
@@ -829,10 +829,10 @@
     private
     __vec_2__f32
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __vec_2__f32
-        ScalarConstructor{0.000000}
-        ScalarConstructor{0.000000}
+        ScalarConstructor[not set]{0.000000}
+        ScalarConstructor[not set]{0.000000}
       }
     }
   })"));
@@ -852,10 +852,10 @@
     private
     __vec_2__f32
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __vec_2__f32
-        ScalarConstructor{0.000000}
-        ScalarConstructor{0.000000}
+        ScalarConstructor[not set]{0.000000}
+        ScalarConstructor[not set]{0.000000}
       }
     }
   })"));
@@ -881,22 +881,22 @@
     private
     __mat_2_3__f32
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __mat_2_3__f32
-        TypeConstructor{
+        TypeConstructor[not set]{
           __vec_2__f32
-          ScalarConstructor{1.500000}
-          ScalarConstructor{2.000000}
+          ScalarConstructor[not set]{1.500000}
+          ScalarConstructor[not set]{2.000000}
         }
-        TypeConstructor{
+        TypeConstructor[not set]{
           __vec_2__f32
-          ScalarConstructor{2.000000}
-          ScalarConstructor{3.000000}
+          ScalarConstructor[not set]{2.000000}
+          ScalarConstructor[not set]{3.000000}
         }
-        TypeConstructor{
+        TypeConstructor[not set]{
           __vec_2__f32
-          ScalarConstructor{3.000000}
-          ScalarConstructor{4.000000}
+          ScalarConstructor[not set]{3.000000}
+          ScalarConstructor[not set]{4.000000}
         }
       }
     }
@@ -917,22 +917,22 @@
     private
     __mat_2_3__f32
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __mat_2_3__f32
-        TypeConstructor{
+        TypeConstructor[not set]{
           __vec_2__f32
-          ScalarConstructor{0.000000}
-          ScalarConstructor{0.000000}
+          ScalarConstructor[not set]{0.000000}
+          ScalarConstructor[not set]{0.000000}
         }
-        TypeConstructor{
+        TypeConstructor[not set]{
           __vec_2__f32
-          ScalarConstructor{0.000000}
-          ScalarConstructor{0.000000}
+          ScalarConstructor[not set]{0.000000}
+          ScalarConstructor[not set]{0.000000}
         }
-        TypeConstructor{
+        TypeConstructor[not set]{
           __vec_2__f32
-          ScalarConstructor{0.000000}
-          ScalarConstructor{0.000000}
+          ScalarConstructor[not set]{0.000000}
+          ScalarConstructor[not set]{0.000000}
         }
       }
     }
@@ -953,22 +953,22 @@
     private
     __mat_2_3__f32
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __mat_2_3__f32
-        TypeConstructor{
+        TypeConstructor[not set]{
           __vec_2__f32
-          ScalarConstructor{0.000000}
-          ScalarConstructor{0.000000}
+          ScalarConstructor[not set]{0.000000}
+          ScalarConstructor[not set]{0.000000}
         }
-        TypeConstructor{
+        TypeConstructor[not set]{
           __vec_2__f32
-          ScalarConstructor{0.000000}
-          ScalarConstructor{0.000000}
+          ScalarConstructor[not set]{0.000000}
+          ScalarConstructor[not set]{0.000000}
         }
-        TypeConstructor{
+        TypeConstructor[not set]{
           __vec_2__f32
-          ScalarConstructor{0.000000}
-          ScalarConstructor{0.000000}
+          ScalarConstructor[not set]{0.000000}
+          ScalarConstructor[not set]{0.000000}
         }
       }
     }
@@ -990,10 +990,10 @@
     private
     __array__u32_2
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __array__u32_2
-        ScalarConstructor{1}
-        ScalarConstructor{2}
+        ScalarConstructor[not set]{1}
+        ScalarConstructor[not set]{2}
       }
     }
   })"));
@@ -1013,10 +1013,10 @@
     private
     __array__u32_2
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __array__u32_2
-        ScalarConstructor{0}
-        ScalarConstructor{0}
+        ScalarConstructor[not set]{0}
+        ScalarConstructor[not set]{0}
       }
     }
   })"));
@@ -1036,10 +1036,10 @@
     private
     __array__u32_2
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __array__u32_2
-        ScalarConstructor{0}
-        ScalarConstructor{0}
+        ScalarConstructor[not set]{0}
+        ScalarConstructor[not set]{0}
       }
     }
   })"));
@@ -1061,14 +1061,14 @@
     private
     __struct_S
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __struct_S
-        ScalarConstructor{1}
-        ScalarConstructor{1.500000}
-        TypeConstructor{
+        ScalarConstructor[not set]{1}
+        ScalarConstructor[not set]{1.500000}
+        TypeConstructor[not set]{
           __array__u32_2
-          ScalarConstructor{1}
-          ScalarConstructor{2}
+          ScalarConstructor[not set]{1}
+          ScalarConstructor[not set]{2}
         }
       }
     }
@@ -1090,14 +1090,14 @@
     private
     __struct_S
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __struct_S
-        ScalarConstructor{0}
-        ScalarConstructor{0.000000}
-        TypeConstructor{
+        ScalarConstructor[not set]{0}
+        ScalarConstructor[not set]{0.000000}
+        TypeConstructor[not set]{
           __array__u32_2
-          ScalarConstructor{0}
-          ScalarConstructor{0}
+          ScalarConstructor[not set]{0}
+          ScalarConstructor[not set]{0}
         }
       }
     }
@@ -1119,14 +1119,14 @@
     private
     __struct_S
     {
-      TypeConstructor{
+      TypeConstructor[not set]{
         __struct_S
-        ScalarConstructor{0}
-        ScalarConstructor{0.000000}
-        TypeConstructor{
+        ScalarConstructor[not set]{0}
+        ScalarConstructor[not set]{0.000000}
+        TypeConstructor[not set]{
           __array__u32_2
-          ScalarConstructor{0}
-          ScalarConstructor{0}
+          ScalarConstructor[not set]{0}
+          ScalarConstructor[not set]{0}
         }
       }
     }
@@ -1509,7 +1509,7 @@
     none
     __bool
     {
-      ScalarConstructor{true}
+      ScalarConstructor[not set]{true}
     }
   }
 })")) << module_str;
@@ -1534,7 +1534,7 @@
     none
     __bool
     {
-      ScalarConstructor{false}
+      ScalarConstructor[not set]{false}
     }
   }
 })")) << module_str;
@@ -1559,7 +1559,7 @@
     none
     __u32
     {
-      ScalarConstructor{42}
+      ScalarConstructor[not set]{42}
     }
   }
 })")) << module_str;
@@ -1584,7 +1584,7 @@
     none
     __i32
     {
-      ScalarConstructor{42}
+      ScalarConstructor[not set]{42}
     }
   }
 })")) << module_str;
@@ -1609,7 +1609,7 @@
     none
     __f32
     {
-      ScalarConstructor{2.500000}
+      ScalarConstructor[not set]{2.500000}
     }
   }
 })")) << module_str;
@@ -1632,7 +1632,7 @@
     none
     __f32
     {
-      ScalarConstructor{2.500000}
+      ScalarConstructor[not set]{2.500000}
     }
   }
 })")) << module_str;
@@ -1660,10 +1660,10 @@
     none
     __f32
     {
-      Binary{
-        Identifier{myconst}
+      Binary[not set]{
+        Identifier[not set]{myconst}
         add
-        Identifier{myconst}
+        Identifier[not set]{myconst}
       }
     }
   })"))
diff --git a/src/transform/vertex_pulling_transform.cc b/src/transform/vertex_pulling_transform.cc
index cec42b8..addfee5 100644
--- a/src/transform/vertex_pulling_transform.cc
+++ b/src/transform/vertex_pulling_transform.cc
@@ -38,6 +38,7 @@
 #include "src/ast/type_constructor_expression.h"
 #include "src/ast/uint_literal.h"
 #include "src/ast/variable_decl_statement.h"
+#include "src/type_determiner.h"
 
 namespace tint {
 namespace transform {
@@ -100,7 +101,11 @@
   AddVertexStorageBuffers();
   AddVertexPullingPreamble(vertex_func);
 
-  return true;
+  // We've potentially inserted nodes into the AST so we have to make sure to
+  // re-run type determination else those nodes will be missing their
+  // result_type
+  TypeDeterminer td(ctx_, mod_);
+  return td.Determine();
 }
 
 std::string VertexPullingTransform::GetVertexBufferName(uint32_t index) {
diff --git a/src/transform/vertex_pulling_transform_test.cc b/src/transform/vertex_pulling_transform_test.cc
index 2b2d34b..25e731d 100644
--- a/src/transform/vertex_pulling_transform_test.cc
+++ b/src/transform/vertex_pulling_transform_test.cc
@@ -186,29 +186,29 @@
         }
       }
       Assignment{
-        Identifier{_tint_pulling_pos}
-        Binary{
-          Binary{
-            Identifier{_tint_pulling_vertex_index}
+        Identifier[__ptr_function__i32]{_tint_pulling_pos}
+        Binary[__i32]{
+          Binary[__i32]{
+            Identifier[__ptr_in__i32]{_tint_pulling_vertex_index}
             multiply
-            ScalarConstructor{4}
+            ScalarConstructor[__u32]{4}
           }
           add
-          ScalarConstructor{0}
+          ScalarConstructor[__u32]{0}
         }
       }
       Assignment{
-        Identifier{var_a}
-        Bitcast<__f32>{
-          ArrayAccessor{
-            MemberAccessor{
-              Identifier{_tint_pulling_vertex_buffer_0}
-              Identifier{_tint_vertex_data}
+        Identifier[__ptr_private__f32]{var_a}
+        Bitcast[__f32]<__f32>{
+          ArrayAccessor[__ptr_storage_buffer__u32]{
+            MemberAccessor[__ptr_storage_buffer__array__u32_stride_4]{
+              Identifier[__ptr_storage_buffer__struct_TintVertexData]{_tint_pulling_vertex_buffer_0}
+              Identifier[not set]{_tint_vertex_data}
             }
-            Binary{
-              Identifier{_tint_pulling_pos}
+            Binary[__i32]{
+              Identifier[__ptr_function__i32]{_tint_pulling_pos}
               divide
-              ScalarConstructor{4}
+              ScalarConstructor[__u32]{4}
             }
           }
         }
@@ -271,29 +271,29 @@
         }
       }
       Assignment{
-        Identifier{_tint_pulling_pos}
-        Binary{
-          Binary{
-            Identifier{_tint_pulling_instance_index}
+        Identifier[__ptr_function__i32]{_tint_pulling_pos}
+        Binary[__i32]{
+          Binary[__i32]{
+            Identifier[__ptr_in__i32]{_tint_pulling_instance_index}
             multiply
-            ScalarConstructor{4}
+            ScalarConstructor[__u32]{4}
           }
           add
-          ScalarConstructor{0}
+          ScalarConstructor[__u32]{0}
         }
       }
       Assignment{
-        Identifier{var_a}
-        Bitcast<__f32>{
-          ArrayAccessor{
-            MemberAccessor{
-              Identifier{_tint_pulling_vertex_buffer_0}
-              Identifier{_tint_vertex_data}
+        Identifier[__ptr_private__f32]{var_a}
+        Bitcast[__f32]<__f32>{
+          ArrayAccessor[__ptr_storage_buffer__u32]{
+            MemberAccessor[__ptr_storage_buffer__array__u32_stride_4]{
+              Identifier[__ptr_storage_buffer__struct_TintVertexData]{_tint_pulling_vertex_buffer_0}
+              Identifier[not set]{_tint_vertex_data}
             }
-            Binary{
-              Identifier{_tint_pulling_pos}
+            Binary[__i32]{
+              Identifier[__ptr_function__i32]{_tint_pulling_pos}
               divide
-              ScalarConstructor{4}
+              ScalarConstructor[__u32]{4}
             }
           }
         }
@@ -356,29 +356,29 @@
         }
       }
       Assignment{
-        Identifier{_tint_pulling_pos}
-        Binary{
-          Binary{
-            Identifier{_tint_pulling_vertex_index}
+        Identifier[__ptr_function__i32]{_tint_pulling_pos}
+        Binary[__i32]{
+          Binary[__i32]{
+            Identifier[__ptr_in__i32]{_tint_pulling_vertex_index}
             multiply
-            ScalarConstructor{4}
+            ScalarConstructor[__u32]{4}
           }
           add
-          ScalarConstructor{0}
+          ScalarConstructor[__u32]{0}
         }
       }
       Assignment{
-        Identifier{var_a}
-        Bitcast<__f32>{
-          ArrayAccessor{
-            MemberAccessor{
-              Identifier{_tint_pulling_vertex_buffer_0}
-              Identifier{_tint_vertex_data}
+        Identifier[__ptr_private__f32]{var_a}
+        Bitcast[__f32]<__f32>{
+          ArrayAccessor[__ptr_storage_buffer__u32]{
+            MemberAccessor[__ptr_storage_buffer__array__u32_stride_4]{
+              Identifier[__ptr_storage_buffer__struct_TintVertexData]{_tint_pulling_vertex_buffer_0}
+              Identifier[not set]{_tint_vertex_data}
             }
-            Binary{
-              Identifier{_tint_pulling_pos}
+            Binary[__i32]{
+              Identifier[__ptr_function__i32]{_tint_pulling_pos}
               divide
-              ScalarConstructor{4}
+              ScalarConstructor[__u32]{4}
             }
           }
         }
@@ -493,57 +493,57 @@
         }
       }
       Assignment{
-        Identifier{_tint_pulling_pos}
-        Binary{
-          Binary{
-            Identifier{custom_vertex_index}
+        Identifier[__ptr_function__i32]{_tint_pulling_pos}
+        Binary[__i32]{
+          Binary[__i32]{
+            Identifier[__ptr_in__i32]{custom_vertex_index}
             multiply
-            ScalarConstructor{4}
+            ScalarConstructor[__u32]{4}
           }
           add
-          ScalarConstructor{0}
+          ScalarConstructor[__u32]{0}
         }
       }
       Assignment{
-        Identifier{var_a}
-        Bitcast<__f32>{
-          ArrayAccessor{
-            MemberAccessor{
-              Identifier{_tint_pulling_vertex_buffer_0}
-              Identifier{_tint_vertex_data}
+        Identifier[__ptr_private__f32]{var_a}
+        Bitcast[__f32]<__f32>{
+          ArrayAccessor[__ptr_storage_buffer__u32]{
+            MemberAccessor[__ptr_storage_buffer__array__u32_stride_4]{
+              Identifier[__ptr_storage_buffer__struct_TintVertexData]{_tint_pulling_vertex_buffer_0}
+              Identifier[not set]{_tint_vertex_data}
             }
-            Binary{
-              Identifier{_tint_pulling_pos}
+            Binary[__i32]{
+              Identifier[__ptr_function__i32]{_tint_pulling_pos}
               divide
-              ScalarConstructor{4}
+              ScalarConstructor[__u32]{4}
             }
           }
         }
       }
       Assignment{
-        Identifier{_tint_pulling_pos}
-        Binary{
-          Binary{
-            Identifier{custom_instance_index}
+        Identifier[__ptr_function__i32]{_tint_pulling_pos}
+        Binary[__i32]{
+          Binary[__i32]{
+            Identifier[__ptr_in__i32]{custom_instance_index}
             multiply
-            ScalarConstructor{4}
+            ScalarConstructor[__u32]{4}
           }
           add
-          ScalarConstructor{0}
+          ScalarConstructor[__u32]{0}
         }
       }
       Assignment{
-        Identifier{var_b}
-        Bitcast<__f32>{
-          ArrayAccessor{
-            MemberAccessor{
-              Identifier{_tint_pulling_vertex_buffer_1}
-              Identifier{_tint_vertex_data}
+        Identifier[__ptr_private__f32]{var_b}
+        Bitcast[__f32]<__f32>{
+          ArrayAccessor[__ptr_storage_buffer__u32]{
+            MemberAccessor[__ptr_storage_buffer__array__u32_stride_4]{
+              Identifier[__ptr_storage_buffer__struct_TintVertexData]{_tint_pulling_vertex_buffer_1}
+              Identifier[not set]{_tint_vertex_data}
             }
-            Binary{
-              Identifier{_tint_pulling_pos}
+            Binary[__i32]{
+              Identifier[__ptr_function__i32]{_tint_pulling_pos}
               divide
-              ScalarConstructor{4}
+              ScalarConstructor[__u32]{4}
             }
           }
         }
@@ -616,114 +616,114 @@
         }
       }
       Assignment{
-        Identifier{_tint_pulling_pos}
-        Binary{
-          Binary{
-            Identifier{_tint_pulling_vertex_index}
+        Identifier[__ptr_function__i32]{_tint_pulling_pos}
+        Binary[__i32]{
+          Binary[__i32]{
+            Identifier[__ptr_in__i32]{_tint_pulling_vertex_index}
             multiply
-            ScalarConstructor{16}
+            ScalarConstructor[__u32]{16}
           }
           add
-          ScalarConstructor{0}
+          ScalarConstructor[__u32]{0}
         }
       }
       Assignment{
-        Identifier{var_a}
-        Bitcast<__f32>{
-          ArrayAccessor{
-            MemberAccessor{
-              Identifier{_tint_pulling_vertex_buffer_0}
-              Identifier{_tint_vertex_data}
+        Identifier[__ptr_private__f32]{var_a}
+        Bitcast[__f32]<__f32>{
+          ArrayAccessor[__ptr_storage_buffer__u32]{
+            MemberAccessor[__ptr_storage_buffer__array__u32_stride_4]{
+              Identifier[__ptr_storage_buffer__struct_TintVertexData]{_tint_pulling_vertex_buffer_0}
+              Identifier[not set]{_tint_vertex_data}
             }
-            Binary{
-              Identifier{_tint_pulling_pos}
+            Binary[__i32]{
+              Identifier[__ptr_function__i32]{_tint_pulling_pos}
               divide
-              ScalarConstructor{4}
+              ScalarConstructor[__u32]{4}
             }
           }
         }
       }
       Assignment{
-        Identifier{_tint_pulling_pos}
-        Binary{
-          Binary{
-            Identifier{_tint_pulling_vertex_index}
+        Identifier[__ptr_function__i32]{_tint_pulling_pos}
+        Binary[__i32]{
+          Binary[__i32]{
+            Identifier[__ptr_in__i32]{_tint_pulling_vertex_index}
             multiply
-            ScalarConstructor{16}
+            ScalarConstructor[__u32]{16}
           }
           add
-          ScalarConstructor{0}
+          ScalarConstructor[__u32]{0}
         }
       }
       Assignment{
-        Identifier{var_b}
-        TypeConstructor{
+        Identifier[__ptr_private__array__f32_4]{var_b}
+        TypeConstructor[__vec_4__f32]{
           __vec_4__f32
-          Bitcast<__f32>{
-            ArrayAccessor{
-              MemberAccessor{
-                Identifier{_tint_pulling_vertex_buffer_0}
-                Identifier{_tint_vertex_data}
+          Bitcast[__f32]<__f32>{
+            ArrayAccessor[__ptr_storage_buffer__u32]{
+              MemberAccessor[__ptr_storage_buffer__array__u32_stride_4]{
+                Identifier[__ptr_storage_buffer__struct_TintVertexData]{_tint_pulling_vertex_buffer_0}
+                Identifier[not set]{_tint_vertex_data}
               }
-              Binary{
-                Binary{
-                  Identifier{_tint_pulling_pos}
+              Binary[__i32]{
+                Binary[__i32]{
+                  Identifier[__ptr_function__i32]{_tint_pulling_pos}
                   add
-                  ScalarConstructor{0}
+                  ScalarConstructor[__u32]{0}
                 }
                 divide
-                ScalarConstructor{4}
+                ScalarConstructor[__u32]{4}
               }
             }
           }
-          Bitcast<__f32>{
-            ArrayAccessor{
-              MemberAccessor{
-                Identifier{_tint_pulling_vertex_buffer_0}
-                Identifier{_tint_vertex_data}
+          Bitcast[__f32]<__f32>{
+            ArrayAccessor[__ptr_storage_buffer__u32]{
+              MemberAccessor[__ptr_storage_buffer__array__u32_stride_4]{
+                Identifier[__ptr_storage_buffer__struct_TintVertexData]{_tint_pulling_vertex_buffer_0}
+                Identifier[not set]{_tint_vertex_data}
               }
-              Binary{
-                Binary{
-                  Identifier{_tint_pulling_pos}
+              Binary[__i32]{
+                Binary[__i32]{
+                  Identifier[__ptr_function__i32]{_tint_pulling_pos}
                   add
-                  ScalarConstructor{4}
+                  ScalarConstructor[__u32]{4}
                 }
                 divide
-                ScalarConstructor{4}
+                ScalarConstructor[__u32]{4}
               }
             }
           }
-          Bitcast<__f32>{
-            ArrayAccessor{
-              MemberAccessor{
-                Identifier{_tint_pulling_vertex_buffer_0}
-                Identifier{_tint_vertex_data}
+          Bitcast[__f32]<__f32>{
+            ArrayAccessor[__ptr_storage_buffer__u32]{
+              MemberAccessor[__ptr_storage_buffer__array__u32_stride_4]{
+                Identifier[__ptr_storage_buffer__struct_TintVertexData]{_tint_pulling_vertex_buffer_0}
+                Identifier[not set]{_tint_vertex_data}
               }
-              Binary{
-                Binary{
-                  Identifier{_tint_pulling_pos}
+              Binary[__i32]{
+                Binary[__i32]{
+                  Identifier[__ptr_function__i32]{_tint_pulling_pos}
                   add
-                  ScalarConstructor{8}
+                  ScalarConstructor[__u32]{8}
                 }
                 divide
-                ScalarConstructor{4}
+                ScalarConstructor[__u32]{4}
               }
             }
           }
-          Bitcast<__f32>{
-            ArrayAccessor{
-              MemberAccessor{
-                Identifier{_tint_pulling_vertex_buffer_0}
-                Identifier{_tint_vertex_data}
+          Bitcast[__f32]<__f32>{
+            ArrayAccessor[__ptr_storage_buffer__u32]{
+              MemberAccessor[__ptr_storage_buffer__array__u32_stride_4]{
+                Identifier[__ptr_storage_buffer__struct_TintVertexData]{_tint_pulling_vertex_buffer_0}
+                Identifier[not set]{_tint_vertex_data}
               }
-              Binary{
-                Binary{
-                  Identifier{_tint_pulling_pos}
+              Binary[__i32]{
+                Binary[__i32]{
+                  Identifier[__ptr_function__i32]{_tint_pulling_pos}
                   add
-                  ScalarConstructor{12}
+                  ScalarConstructor[__u32]{12}
                 }
                 divide
-                ScalarConstructor{4}
+                ScalarConstructor[__u32]{4}
               }
             }
           }
@@ -824,207 +824,207 @@
         }
       }
       Assignment{
-        Identifier{_tint_pulling_pos}
-        Binary{
-          Binary{
-            Identifier{_tint_pulling_vertex_index}
+        Identifier[__ptr_function__i32]{_tint_pulling_pos}
+        Binary[__i32]{
+          Binary[__i32]{
+            Identifier[__ptr_in__i32]{_tint_pulling_vertex_index}
             multiply
-            ScalarConstructor{8}
+            ScalarConstructor[__u32]{8}
           }
           add
-          ScalarConstructor{0}
+          ScalarConstructor[__u32]{0}
         }
       }
       Assignment{
-        Identifier{var_a}
-        TypeConstructor{
+        Identifier[__ptr_private__array__f32_2]{var_a}
+        TypeConstructor[__vec_2__f32]{
           __vec_2__f32
-          Bitcast<__f32>{
-            ArrayAccessor{
-              MemberAccessor{
-                Identifier{_tint_pulling_vertex_buffer_0}
-                Identifier{_tint_vertex_data}
+          Bitcast[__f32]<__f32>{
+            ArrayAccessor[__ptr_storage_buffer__u32]{
+              MemberAccessor[__ptr_storage_buffer__array__u32_stride_4]{
+                Identifier[__ptr_storage_buffer__struct_TintVertexData]{_tint_pulling_vertex_buffer_0}
+                Identifier[not set]{_tint_vertex_data}
               }
-              Binary{
-                Binary{
-                  Identifier{_tint_pulling_pos}
+              Binary[__i32]{
+                Binary[__i32]{
+                  Identifier[__ptr_function__i32]{_tint_pulling_pos}
                   add
-                  ScalarConstructor{0}
+                  ScalarConstructor[__u32]{0}
                 }
                 divide
-                ScalarConstructor{4}
+                ScalarConstructor[__u32]{4}
               }
             }
           }
-          Bitcast<__f32>{
-            ArrayAccessor{
-              MemberAccessor{
-                Identifier{_tint_pulling_vertex_buffer_0}
-                Identifier{_tint_vertex_data}
+          Bitcast[__f32]<__f32>{
+            ArrayAccessor[__ptr_storage_buffer__u32]{
+              MemberAccessor[__ptr_storage_buffer__array__u32_stride_4]{
+                Identifier[__ptr_storage_buffer__struct_TintVertexData]{_tint_pulling_vertex_buffer_0}
+                Identifier[not set]{_tint_vertex_data}
               }
-              Binary{
-                Binary{
-                  Identifier{_tint_pulling_pos}
+              Binary[__i32]{
+                Binary[__i32]{
+                  Identifier[__ptr_function__i32]{_tint_pulling_pos}
                   add
-                  ScalarConstructor{4}
+                  ScalarConstructor[__u32]{4}
                 }
                 divide
-                ScalarConstructor{4}
+                ScalarConstructor[__u32]{4}
               }
             }
           }
         }
       }
       Assignment{
-        Identifier{_tint_pulling_pos}
-        Binary{
-          Binary{
-            Identifier{_tint_pulling_vertex_index}
+        Identifier[__ptr_function__i32]{_tint_pulling_pos}
+        Binary[__i32]{
+          Binary[__i32]{
+            Identifier[__ptr_in__i32]{_tint_pulling_vertex_index}
             multiply
-            ScalarConstructor{12}
+            ScalarConstructor[__u32]{12}
           }
           add
-          ScalarConstructor{0}
+          ScalarConstructor[__u32]{0}
         }
       }
       Assignment{
-        Identifier{var_b}
-        TypeConstructor{
+        Identifier[__ptr_private__array__f32_3]{var_b}
+        TypeConstructor[__vec_3__f32]{
           __vec_3__f32
-          Bitcast<__f32>{
-            ArrayAccessor{
-              MemberAccessor{
-                Identifier{_tint_pulling_vertex_buffer_1}
-                Identifier{_tint_vertex_data}
+          Bitcast[__f32]<__f32>{
+            ArrayAccessor[__ptr_storage_buffer__u32]{
+              MemberAccessor[__ptr_storage_buffer__array__u32_stride_4]{
+                Identifier[__ptr_storage_buffer__struct_TintVertexData]{_tint_pulling_vertex_buffer_1}
+                Identifier[not set]{_tint_vertex_data}
               }
-              Binary{
-                Binary{
-                  Identifier{_tint_pulling_pos}
+              Binary[__i32]{
+                Binary[__i32]{
+                  Identifier[__ptr_function__i32]{_tint_pulling_pos}
                   add
-                  ScalarConstructor{0}
+                  ScalarConstructor[__u32]{0}
                 }
                 divide
-                ScalarConstructor{4}
+                ScalarConstructor[__u32]{4}
               }
             }
           }
-          Bitcast<__f32>{
-            ArrayAccessor{
-              MemberAccessor{
-                Identifier{_tint_pulling_vertex_buffer_1}
-                Identifier{_tint_vertex_data}
+          Bitcast[__f32]<__f32>{
+            ArrayAccessor[__ptr_storage_buffer__u32]{
+              MemberAccessor[__ptr_storage_buffer__array__u32_stride_4]{
+                Identifier[__ptr_storage_buffer__struct_TintVertexData]{_tint_pulling_vertex_buffer_1}
+                Identifier[not set]{_tint_vertex_data}
               }
-              Binary{
-                Binary{
-                  Identifier{_tint_pulling_pos}
+              Binary[__i32]{
+                Binary[__i32]{
+                  Identifier[__ptr_function__i32]{_tint_pulling_pos}
                   add
-                  ScalarConstructor{4}
+                  ScalarConstructor[__u32]{4}
                 }
                 divide
-                ScalarConstructor{4}
+                ScalarConstructor[__u32]{4}
               }
             }
           }
-          Bitcast<__f32>{
-            ArrayAccessor{
-              MemberAccessor{
-                Identifier{_tint_pulling_vertex_buffer_1}
-                Identifier{_tint_vertex_data}
+          Bitcast[__f32]<__f32>{
+            ArrayAccessor[__ptr_storage_buffer__u32]{
+              MemberAccessor[__ptr_storage_buffer__array__u32_stride_4]{
+                Identifier[__ptr_storage_buffer__struct_TintVertexData]{_tint_pulling_vertex_buffer_1}
+                Identifier[not set]{_tint_vertex_data}
               }
-              Binary{
-                Binary{
-                  Identifier{_tint_pulling_pos}
+              Binary[__i32]{
+                Binary[__i32]{
+                  Identifier[__ptr_function__i32]{_tint_pulling_pos}
                   add
-                  ScalarConstructor{8}
+                  ScalarConstructor[__u32]{8}
                 }
                 divide
-                ScalarConstructor{4}
+                ScalarConstructor[__u32]{4}
               }
             }
           }
         }
       }
       Assignment{
-        Identifier{_tint_pulling_pos}
-        Binary{
-          Binary{
-            Identifier{_tint_pulling_vertex_index}
+        Identifier[__ptr_function__i32]{_tint_pulling_pos}
+        Binary[__i32]{
+          Binary[__i32]{
+            Identifier[__ptr_in__i32]{_tint_pulling_vertex_index}
             multiply
-            ScalarConstructor{16}
+            ScalarConstructor[__u32]{16}
           }
           add
-          ScalarConstructor{0}
+          ScalarConstructor[__u32]{0}
         }
       }
       Assignment{
-        Identifier{var_c}
-        TypeConstructor{
+        Identifier[__ptr_private__array__f32_4]{var_c}
+        TypeConstructor[__vec_4__f32]{
           __vec_4__f32
-          Bitcast<__f32>{
-            ArrayAccessor{
-              MemberAccessor{
-                Identifier{_tint_pulling_vertex_buffer_2}
-                Identifier{_tint_vertex_data}
+          Bitcast[__f32]<__f32>{
+            ArrayAccessor[__ptr_storage_buffer__u32]{
+              MemberAccessor[__ptr_storage_buffer__array__u32_stride_4]{
+                Identifier[__ptr_storage_buffer__struct_TintVertexData]{_tint_pulling_vertex_buffer_2}
+                Identifier[not set]{_tint_vertex_data}
               }
-              Binary{
-                Binary{
-                  Identifier{_tint_pulling_pos}
+              Binary[__i32]{
+                Binary[__i32]{
+                  Identifier[__ptr_function__i32]{_tint_pulling_pos}
                   add
-                  ScalarConstructor{0}
+                  ScalarConstructor[__u32]{0}
                 }
                 divide
-                ScalarConstructor{4}
+                ScalarConstructor[__u32]{4}
               }
             }
           }
-          Bitcast<__f32>{
-            ArrayAccessor{
-              MemberAccessor{
-                Identifier{_tint_pulling_vertex_buffer_2}
-                Identifier{_tint_vertex_data}
+          Bitcast[__f32]<__f32>{
+            ArrayAccessor[__ptr_storage_buffer__u32]{
+              MemberAccessor[__ptr_storage_buffer__array__u32_stride_4]{
+                Identifier[__ptr_storage_buffer__struct_TintVertexData]{_tint_pulling_vertex_buffer_2}
+                Identifier[not set]{_tint_vertex_data}
               }
-              Binary{
-                Binary{
-                  Identifier{_tint_pulling_pos}
+              Binary[__i32]{
+                Binary[__i32]{
+                  Identifier[__ptr_function__i32]{_tint_pulling_pos}
                   add
-                  ScalarConstructor{4}
+                  ScalarConstructor[__u32]{4}
                 }
                 divide
-                ScalarConstructor{4}
+                ScalarConstructor[__u32]{4}
               }
             }
           }
-          Bitcast<__f32>{
-            ArrayAccessor{
-              MemberAccessor{
-                Identifier{_tint_pulling_vertex_buffer_2}
-                Identifier{_tint_vertex_data}
+          Bitcast[__f32]<__f32>{
+            ArrayAccessor[__ptr_storage_buffer__u32]{
+              MemberAccessor[__ptr_storage_buffer__array__u32_stride_4]{
+                Identifier[__ptr_storage_buffer__struct_TintVertexData]{_tint_pulling_vertex_buffer_2}
+                Identifier[not set]{_tint_vertex_data}
               }
-              Binary{
-                Binary{
-                  Identifier{_tint_pulling_pos}
+              Binary[__i32]{
+                Binary[__i32]{
+                  Identifier[__ptr_function__i32]{_tint_pulling_pos}
                   add
-                  ScalarConstructor{8}
+                  ScalarConstructor[__u32]{8}
                 }
                 divide
-                ScalarConstructor{4}
+                ScalarConstructor[__u32]{4}
               }
             }
           }
-          Bitcast<__f32>{
-            ArrayAccessor{
-              MemberAccessor{
-                Identifier{_tint_pulling_vertex_buffer_2}
-                Identifier{_tint_vertex_data}
+          Bitcast[__f32]<__f32>{
+            ArrayAccessor[__ptr_storage_buffer__u32]{
+              MemberAccessor[__ptr_storage_buffer__array__u32_stride_4]{
+                Identifier[__ptr_storage_buffer__struct_TintVertexData]{_tint_pulling_vertex_buffer_2}
+                Identifier[not set]{_tint_vertex_data}
               }
-              Binary{
-                Binary{
-                  Identifier{_tint_pulling_pos}
+              Binary[__i32]{
+                Binary[__i32]{
+                  Identifier[__ptr_function__i32]{_tint_pulling_pos}
                   add
-                  ScalarConstructor{12}
+                  ScalarConstructor[__u32]{12}
                 }
                 divide
-                ScalarConstructor{4}
+                ScalarConstructor[__u32]{4}
               }
             }
           }