[ast] Change module dump order.

This CL changes the AST dumping order to emit alias types before global
variables. This makes the output easier to read as the types come before
the usages.

Bug: tint:175
Change-Id: Ib7325384b910472e89d6d01853503be989ce4210
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/30281
Reviewed-by: Ryan Harrison <rharrison@chromium.org>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
diff --git a/src/ast/module.cc b/src/ast/module.cc
index dfb2ab8..48731cc 100644
--- a/src/ast/module.cc
+++ b/src/ast/module.cc
@@ -74,9 +74,6 @@
 
   out << "Module{" << std::endl;
   const auto indent = 2;
-  for (const auto& var : global_variables_) {
-    var->to_str(out, indent);
-  }
   for (auto* const alias : alias_types_) {
     for (size_t i = 0; i < indent; ++i) {
       out << " ";
@@ -86,6 +83,9 @@
       alias->type()->AsStruct()->impl()->to_str(out, indent);
     }
   }
+  for (const auto& var : global_variables_) {
+    var->to_str(out, indent);
+  }
   for (const auto& func : functions_) {
     func->to_str(out, indent);
   }
diff --git a/src/reader/spirv/function_memory_test.cc b/src/reader/spirv/function_memory_test.cc
index 267ae07..6c6b871 100644
--- a/src/reader/spirv/function_memory_test.cc
+++ b/src/reader/spirv/function_memory_test.cc
@@ -799,17 +799,17 @@
       << assembly << p->error();
   const auto module_str = p->module().to_str();
   EXPECT_THAT(module_str, HasSubstr(R"(
-  Variable{
-    myvar
-    storage_buffer
-    __alias_S__struct_S
-  }
   RTArr -> __array__u32_stride_4
   S -> __struct_S
   Struct{
     [[block]]
     StructMember{[[ offset 0 ]] field0: __u32}
     StructMember{[[ offset 4 ]] field1: __alias_RTArr__array__u32_stride_4}
+  }
+  Variable{
+    myvar
+    storage_buffer
+    __alias_S__struct_S
   })"));
 }
 
diff --git a/src/reader/spirv/parser_impl_module_var_test.cc b/src/reader/spirv/parser_impl_module_var_test.cc
index 06a81c8..6831cd8 100644
--- a/src/reader/spirv/parser_impl_module_var_test.cc
+++ b/src/reader/spirv/parser_impl_module_var_test.cc
@@ -1305,11 +1305,6 @@
   EXPECT_TRUE(p->error().empty());
   const auto module_str = p->module().to_str();
   EXPECT_THAT(module_str, HasSubstr(R"(
-  Variable{
-    myvar
-    storage_buffer
-    __alias_S__struct_S
-  }
   S -> __struct_S
   Struct{
     [[block]]
@@ -1317,6 +1312,11 @@
     StructMember{field1: __f32}
     StructMember{field2: __array__u32_2}
   }
+  Variable{
+    myvar
+    storage_buffer
+    __alias_S__struct_S
+  }
 })")) << module_str;
 }
 
@@ -1333,11 +1333,6 @@
   EXPECT_TRUE(p->error().empty());
   const auto module_str = p->module().to_str();
   EXPECT_THAT(module_str, HasSubstr(R"(
-  Variable{
-    myvar
-    storage_buffer
-    __alias_S__struct_S
-  }
   S -> __struct_S
   Struct{
     [[block]]
@@ -1345,6 +1340,11 @@
     StructMember{field1: __f32}
     StructMember{field2: __array__u32_2}
   }
+  Variable{
+    myvar
+    storage_buffer
+    __alias_S__struct_S
+  }
 })")) << module_str;
 }
 
@@ -1365,16 +1365,16 @@
   EXPECT_TRUE(p->error().empty());
   const auto module_str = p->module().to_str();
   EXPECT_THAT(module_str, HasSubstr(R"(
-  Variable{
-    myvar
-    storage_buffer
-    __alias_S__struct_S
-  }
   S -> __struct_S
   Struct{
     [[block]]
     StructMember{field0: __mat_2_3__f32}
   }
+  Variable{
+    myvar
+    storage_buffer
+    __alias_S__struct_S
+  }
 })")) << module_str;
 }
 
@@ -1395,16 +1395,16 @@
   EXPECT_TRUE(p->error().empty());
   const auto module_str = p->module().to_str();
   EXPECT_THAT(module_str, HasSubstr(R"(
-  Variable{
-    myvar
-    storage_buffer
-    __alias_S__struct_S
-  }
   S -> __struct_S
   Struct{
     [[block]]
     StructMember{field0: __mat_2_3__f32}
   }
+  Variable{
+    myvar
+    storage_buffer
+    __alias_S__struct_S
+  }
 })")) << module_str;
 }
 
diff --git a/src/transform/vertex_pulling_transform_test.cc b/src/transform/vertex_pulling_transform_test.cc
index cc44466..73fdaad 100644
--- a/src/transform/vertex_pulling_transform_test.cc
+++ b/src/transform/vertex_pulling_transform_test.cc
@@ -136,6 +136,11 @@
   EXPECT_TRUE(transform()->Run());
 
   EXPECT_EQ(R"(Module{
+  TintVertexData -> __struct_TintVertexData
+  Struct{
+    [[block]]
+    StructMember{[[ offset 0 ]] _tint_vertex_data: __array__u32_stride_4}
+  }
   Variable{
     var_a
     private
@@ -158,11 +163,6 @@
     storage_buffer
     __alias_TintVertexData__struct_TintVertexData
   }
-  TintVertexData -> __struct_TintVertexData
-  Struct{
-    [[block]]
-    StructMember{[[ offset 0 ]] _tint_vertex_data: __array__u32_stride_4}
-  }
   Function main -> __void
   StageDecoration{vertex}
   ()
@@ -222,6 +222,11 @@
   EXPECT_TRUE(transform()->Run());
 
   EXPECT_EQ(R"(Module{
+  TintVertexData -> __struct_TintVertexData
+  Struct{
+    [[block]]
+    StructMember{[[ offset 0 ]] _tint_vertex_data: __array__u32_stride_4}
+  }
   Variable{
     var_a
     private
@@ -244,11 +249,6 @@
     storage_buffer
     __alias_TintVertexData__struct_TintVertexData
   }
-  TintVertexData -> __struct_TintVertexData
-  Struct{
-    [[block]]
-    StructMember{[[ offset 0 ]] _tint_vertex_data: __array__u32_stride_4}
-  }
   Function main -> __void
   StageDecoration{vertex}
   ()
@@ -308,6 +308,11 @@
   EXPECT_TRUE(transform()->Run());
 
   EXPECT_EQ(R"(Module{
+  TintVertexData -> __struct_TintVertexData
+  Struct{
+    [[block]]
+    StructMember{[[ offset 0 ]] _tint_vertex_data: __array__u32_stride_4}
+  }
   Variable{
     var_a
     private
@@ -330,11 +335,6 @@
     storage_buffer
     __alias_TintVertexData__struct_TintVertexData
   }
-  TintVertexData -> __struct_TintVertexData
-  Struct{
-    [[block]]
-    StructMember{[[ offset 0 ]] _tint_vertex_data: __array__u32_stride_4}
-  }
   Function main -> __void
   StageDecoration{vertex}
   ()
@@ -424,6 +424,11 @@
   EXPECT_TRUE(transform()->Run());
 
   EXPECT_EQ(R"(Module{
+  TintVertexData -> __struct_TintVertexData
+  Struct{
+    [[block]]
+    StructMember{[[ offset 0 ]] _tint_vertex_data: __array__u32_stride_4}
+  }
   Variable{
     var_a
     private
@@ -468,11 +473,6 @@
     storage_buffer
     __alias_TintVertexData__struct_TintVertexData
   }
-  TintVertexData -> __struct_TintVertexData
-  Struct{
-    [[block]]
-    StructMember{[[ offset 0 ]] _tint_vertex_data: __array__u32_stride_4}
-  }
   Function main -> __void
   StageDecoration{vertex}
   ()
@@ -565,6 +565,11 @@
   EXPECT_TRUE(transform()->Run());
 
   EXPECT_EQ(R"(Module{
+  TintVertexData -> __struct_TintVertexData
+  Struct{
+    [[block]]
+    StructMember{[[ offset 0 ]] _tint_vertex_data: __array__u32_stride_4}
+  }
   Variable{
     var_a
     private
@@ -592,11 +597,6 @@
     storage_buffer
     __alias_TintVertexData__struct_TintVertexData
   }
-  TintVertexData -> __struct_TintVertexData
-  Struct{
-    [[block]]
-    StructMember{[[ offset 0 ]] _tint_vertex_data: __array__u32_stride_4}
-  }
   Function main -> __void
   StageDecoration{vertex}
   ()
@@ -751,6 +751,11 @@
   EXPECT_TRUE(transform()->Run());
 
   EXPECT_EQ(R"(Module{
+  TintVertexData -> __struct_TintVertexData
+  Struct{
+    [[block]]
+    StructMember{[[ offset 0 ]] _tint_vertex_data: __array__u32_stride_4}
+  }
   Variable{
     var_a
     private
@@ -801,11 +806,6 @@
     storage_buffer
     __alias_TintVertexData__struct_TintVertexData
   }
-  TintVertexData -> __struct_TintVertexData
-  Struct{
-    [[block]]
-    StructMember{[[ offset 0 ]] _tint_vertex_data: __array__u32_stride_4}
-  }
   Function main -> __void
   StageDecoration{vertex}
   ()