diff --git a/docs/origin-trial-changes.md b/docs/origin-trial-changes.md
index a4acf8c..bc03ac6 100644
--- a/docs/origin-trial-changes.md
+++ b/docs/origin-trial-changes.md
@@ -11,7 +11,8 @@
 The following features have been deprecated and will be removed in M102:
 
 * The `[[block]]` attribute has been deprecated. [tint:1324](https://crbug.com/tint/1324)
-* `elseif` has been replaced with `else if` [tint:1289](https://crbug.com/tint/1289)
+* Attributes now use the `@decoration` syntax instead of the `[[decoration]]` syntax. [tint:1382](https://crbug.com/tint/1382)
+* `elseif` has been replaced with `else if`. [tint:1289](https://crbug.com/tint/1289)
 
 ### New Features
 
diff --git a/docs/spirv-input-output-variables.md b/docs/spirv-input-output-variables.md
index d4b2553..0f149e0 100644
--- a/docs/spirv-input-output-variables.md
+++ b/docs/spirv-input-output-variables.md
@@ -85,8 +85,8 @@
 Current translation, through SPIR-V, SPIR-V reader, WGSL writer:
 
 ```groovy
-    [[location(0)]] var<out> frag_colour : vec4<f32>;
-    [[location(0)]] var<in> the_colour : vec4<f32>;
+    @location(0) var<out> frag_colour : vec4<f32>;
+    @location(0) var<in> the_colour : vec4<f32>;
 
     fn bar_() -> void {
       const x_14 : vec4<f32> = the_colour;
@@ -94,7 +94,7 @@
       return;
     }
 
-    [[stage(fragment)]]
+    @stage(fragment)
     fn main() -> void {
       bar_();
       return;
@@ -123,14 +123,14 @@
 
     // Declare a structure type to collect the return values.
     struct main_result_type {
-      [[location(0)]] frag_color : vec4<f32>;
+      @location(0) frag_color : vec4<f32>;
     };
 
-    [[stage(fragment)]]
+    @stage(fragment)
     fn main(
 
       // 'in' variables are entry point parameters
-      [[location(0)]] the_color_arg : vec4<f32>
+      @location(0) the_color_arg : vec4<f32>
 
     ) -> main_result_type {
 
diff --git a/docs/translations.md b/docs/translations.md
index d7b2713..b22ed20 100644
--- a/docs/translations.md
+++ b/docs/translations.md
@@ -188,4 +188,4 @@
 ```
 
 ## MSL
-`[[function_constant(<id>)]]`
+`@function_constant(<id>)`
diff --git a/fuzzers/tint_ast_fuzzer/mutations/replace_identifier_test.cc b/fuzzers/tint_ast_fuzzer/mutations/replace_identifier_test.cc
index afc4ced..707b15a 100644
--- a/fuzzers/tint_ast_fuzzer/mutations/replace_identifier_test.cc
+++ b/fuzzers/tint_ast_fuzzer/mutations/replace_identifier_test.cc
@@ -287,13 +287,12 @@
   // Can't replace `a` with `b` since the latter has a wrong access mode
   // (`read` for uniform storage class).
   std::string shader = R"(
-[[block]]
 struct S {
   a: i32;
 };
 
 var<private> a: S;
-[[group(1), binding(1)]] var<uniform> b: S;
+@group(1) @binding(1) var<uniform> b: S;
 fn f() {
   *&a = S(4);
 }
@@ -323,13 +322,12 @@
 TEST(ReplaceIdentifierTest, NotApplicable6) {
   // Can't replace `ptr_b` with `a` since the latter is not a pointer.
   std::string shader = R"(
-[[block]]
 struct S {
   a: i32;
 };
 
 var<private> a: S;
-[[group(1), binding(1)]] var<uniform> b: S;
+@group(1) @binding(1) var<uniform> b: S;
 fn f() {
   let ptr_b = &b;
   *&a = *ptr_b;
@@ -360,14 +358,13 @@
   // Can't replace `ptr_b` with `c` since the latter has a wrong access mode and
   // storage class.
   std::string shader = R"(
-[[block]]
 struct S {
   a: i32;
 };
 
 var<private> a: S;
-[[group(1), binding(1)]] var<uniform> b: S;
-[[group(1), binding(2)]] var<storage, write> c: S;
+@group(1) @binding(1) var<uniform> b: S;
+@group(1) @binding(2) var<storage, write> c: S;
 fn f() {
   let ptr_b = &b;
   *&a = *ptr_b;
@@ -397,14 +394,13 @@
 TEST(ReplaceIdentifierTest, NotApplicable9) {
   // Can't replace `b` with `e` since the latter is not a reference.
   std::string shader = R"(
-[[block]]
 struct S {
   a: i32;
 };
 
 var<private> a: S;
 let e = 3;
-[[group(1), binding(1)]] var<uniform> b: S;
+@group(1) @binding(1) var<uniform> b: S;
 fn f() {
   *&a = *&b;
 }
@@ -434,14 +430,13 @@
 TEST(ReplaceIdentifierTest, NotApplicable10) {
   // Can't replace `b` with `e` since the latter has a wrong access mode.
   std::string shader = R"(
-[[block]]
 struct S {
   a: i32;
 };
 
 var<private> a: S;
-[[group(0), binding(0)]] var<storage, write> e: S;
-[[group(1), binding(1)]] var<uniform> b: S;
+@group(0) @binding(0) var<storage, write> e: S;
+@group(1) @binding(1) var<uniform> b: S;
 fn f() {
   *&a = *&b;
 }
diff --git a/fuzzers/tint_regex_fuzzer/regex_fuzzer_tests.cc b/fuzzers/tint_regex_fuzzer/regex_fuzzer_tests.cc
index bd56e0f..e5f175b 100644
--- a/fuzzers/tint_regex_fuzzer/regex_fuzzer_tests.cc
+++ b/fuzzers/tint_regex_fuzzer/regex_fuzzer_tests.cc
@@ -198,16 +198,16 @@
       R"(fn clamp_0acf8f() {
         var res: vec2<f32> = clamp(vec2<f32>(), vec2<f32>(), vec2<f32>());
       }
-      [[stage(vertex)]]
-      fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+      @stage(vertex)
+      fn vertex_main() -> @builtin(position) vec4<f32> {
          clamp_0acf8f();"
          return vec4<f32>();
       }
-      [[stage(fragment)]]
+      @stage(fragment)
       fn fragment_main() {
         clamp_0acf8f();
       }
-      [[stage(compute), workgroup_size(1)]]
+      @stage(compute) @workgroup_size(1)
       fn compute_main() {"
         var<private> foo: f32 = 0.0;
         clamp_0acf8f();
@@ -219,13 +219,13 @@
   std::vector<std::pair<size_t, size_t>> ground_truth = {
       std::make_pair(3, 12),   std::make_pair(28, 3),  std::make_pair(37, 4),
       std::make_pair(49, 5),   std::make_pair(60, 3),  std::make_pair(68, 4),
-      std::make_pair(81, 4),   std::make_pair(111, 5), std::make_pair(133, 2),
-      std::make_pair(143, 4),  std::make_pair(155, 7), std::make_pair(175, 4),
-      std::make_pair(196, 12), std::make_pair(222, 6), std::make_pair(234, 3),
-      std::make_pair(258, 5),  std::make_pair(282, 2), std::make_pair(294, 4),
-      std::make_pair(311, 12), std::make_pair(343, 5), std::make_pair(359, 14),
-      std::make_pair(385, 2),  std::make_pair(396, 4), std::make_pair(414, 3),
-      std::make_pair(427, 3),  std::make_pair(432, 3), std::make_pair(451, 12)};
+      std::make_pair(81, 4),   std::make_pair(110, 5), std::make_pair(130, 2),
+      std::make_pair(140, 4),  std::make_pair(151, 7), std::make_pair(169, 4),
+      std::make_pair(190, 12), std::make_pair(216, 6), std::make_pair(228, 3),
+      std::make_pair(251, 5),  std::make_pair(273, 2), std::make_pair(285, 4),
+      std::make_pair(302, 12), std::make_pair(333, 5), std::make_pair(349, 14),
+      std::make_pair(373, 2),  std::make_pair(384, 4), std::make_pair(402, 3),
+      std::make_pair(415, 3),  std::make_pair(420, 3), std::make_pair(439, 12)};
 
   ASSERT_EQ(ground_truth, identifiers_pos);
 }
@@ -234,18 +234,18 @@
   std::string wgsl_code =
       R"(fn clamp_0acf8f() {
         var res: vec2<f32> = clamp(vec2<f32>(), vec2<f32>(), vec2<f32>());
-      } 
-      [[stage(vertex)]]
-      fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+      }
+      @stage(vertex)
+      fn vertex_main() -> @builtin(position) vec4<f32> {
         clamp_0acf8f();
         var foo_1: i32 = 3;
         return vec4<f32>();
       }
-      [[stage(fragment)]]
+      @stage(fragment)
       fn fragment_main() {
         clamp_0acf8f();
       }
-      [[stage(compute), workgroup_size(1)]]
+      @stage(compute) @workgroup_size(1)
       fn compute_main() {
         var<private> foo: f32 = 0.0;
         var foo_2: i32 = 10;
@@ -277,17 +277,17 @@
           var res: vec2<f32> = clamp(vec2<f32>(), vec2<f32>(), vec2<f32>());
           }
         }
-        [[stage(vertex)]]
-        fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+        @stage(vertex)
+        fn vertex_main() -> @builtin(position) vec4<f32> {
           clamp_0acf8f();
           var foo_1: i32 = 3;
           return vec4<f32>();
         }
-        [[stage(fragment)]]
+        @stage(fragment)
         fn fragment_main() {
           clamp_0acf8f();
         }
-        [[stage(compute), workgroup_size(1)]]
+        @stage(compute) @workgroup_size(1)
         fn compute_main() {
           var<private> foo: f32 = 0.0;
           var foo_2: i32 = 10;
@@ -323,17 +323,17 @@
         var res: vec2<f32> = clamp(vec2<f32>(), vec2<f32>(), vec2<f32>());
         }
       }
-      [[stage(vertex)]]
-      fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+      @stage(vertex)
+      fn vertex_main() -> @builtin(position) vec4<f32> {
         clamp_0acf8f();
         var foo_1: i32 = 3;
         return vec4<f32>();
       }
-      [[stage(fragment)]]
+      @stage(fragment)
       fn fragment_main() {
         clamp_0acf8f();
       }
-      [[stage(compute), workgroup_size(1)]]
+      @stage(compute) @workgroup_size(1)
       fn compute_main() {
         var<private> foo: f32 = 0.0;
         var foo_2: i32 = 10;
@@ -362,17 +362,17 @@
       R"(fn clamp_0acf8f() {
         var res: vec2<f32> = clamp(vec2<f32>(), vec2<f32>(), vec2<f32>());
       }
-      [[stage(vertex)]]
-      fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+      @stage(vertex)
+      fn vertex_main() -> @builtin(position) vec4<f32> {
         clamp_0acf8f();
         var foo_1: i32 = 3;
         return vec4<f32>();
       }
-      [[stage(fragment)]]
+      @stage(fragment)
       fn fragment_main() {
         clamp_0acf8f();
       }
-      [[stage(compute), workgroup_size(1)]]
+      @stage(compute) @workgroup_size(1)
       fn compute_main() {
         var<private> foo: f32 = 0.0;
         var foo_2: i32 = 10;
@@ -395,17 +395,17 @@
       R"(fn clamp_0acf8f() {
         var res: vec2<f32> = clamp(vec2<f32>(), vec2<f32>(), vec2<f32>());return true;
       }
-      [[stage(vertex)]]
-      fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+      @stage(vertex)
+      fn vertex_main() -> @builtin(position) vec4<f32> {
         clamp_0acf8f();
         var foo_1: i32 = 3;
         return vec4<f32>();
       }
-      [[stage(fragment)]]
+      @stage(fragment)
       fn fragment_main() {
         clamp_0acf8f();
       }
-      [[stage(compute), workgroup_size(1)]]
+      @stage(compute) @workgroup_size(1)
       fn compute_main() {
         var<private> foo: f32 = 0.0;
         var foo_2: i32 = 10;
@@ -422,23 +422,23 @@
       R"(fn clamp_0acf8f() {
           var res: vec2<f32> = clamp(vec2<f32>(), vec2<f32>(), vec2<f32>());
         }
-        [[stage(vertex)]]
-        fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+        @stage(vertex)
+        fn vertex_main() -> @builtin(position) vec4<f32> {
           clamp_0acf8f();
           var foo_1: i32 = 3;
           return vec4<f32>();
         }
-        [[stage(fragment)]]
+        @stage(fragment)
         fn fragment_main() {
           clamp_0acf8f();
         }
-        [[stage(compute), workgroup_size(1)]]
+        @stage(compute) @workgroup_size(1)
         fn compute_main() {
           var<private> foo: f32 = 0.0;
           var foo_2: i32 = 10;
           clamp_0acf8f();
         }
-        fn vert_main() -> [[builtin(position)]] vec4<f32> {
+        fn vert_main() -> @builtin(position) vec4<f32> {
           clamp_0acf8f();
           var foo_1: i32 = 3;
           return vec4<f32>();
@@ -447,7 +447,7 @@
         var foo_3 : i32 = -20;)";
 
   std::vector<size_t> function_positions = GetFunctionBodyPositions(wgsl_code);
-  std::vector<size_t> expected_positions = {193, 622};
+  std::vector<size_t> expected_positions = {187, 607};
   ASSERT_EQ(expected_positions, function_positions);
 }
 
@@ -456,23 +456,23 @@
       R"(fn clamp_0acf8f() {
           var res: vec2<f32> = clamp(vec2<f32>(), vec2<f32>(), vec2<f32>())
         }
-        [[stage(vertex)]]
-        fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+        @stage(vertex)
+        fn vertex_main() -> @builtin(position) vec4<f32> {
           clamp_0acf8f()
           var foo_1: i32 = 3
           return vec4<f32>()
         }
-        [[stage(fragment)]]
+        @stage(fragment)
         fn fragment_main() {
           clamp_0acf8f();
         }
-        [[stage(compute), workgroup_size(1)]]
+        @stage(compute) @workgroup_size(1)
         fn compute_main() {
           var<private> foo: f32 = 0.0;
           var foo_2: i32 = 10;
           clamp_0acf8f();
         }
-        fn vert_main() -> [[builtin(position)]] vec4<f32> {
+        fn vert_main() -> @builtin(position) vec4<f32> {
           clamp_0acf8f()
           var foo_1: i32 = 3
           return vec4<f32>()
@@ -489,23 +489,23 @@
       R"(fn clamp_0acf8f() {
           var res: vec2<f32> = clamp(vec2<f32>(), vec2<f32>(), vec2<f32>())
         }
-        [[stage(vertex)]]
-        fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+        @stage(vertex)
+        fn vertex_main() -> @builtin(position) vec4<f32> {
           clamp_0acf8f()
           var foo_1: i32 = 3
           return vec4<f32>()
         }
-        [[stage(fragment)]]
+        @stage(fragment)
         fn fragment_main() {
           clamp_0acf8f();
         }
-        [[stage(compute), workgroup_size(1)]]
+        @stage(compute) @workgroup_size(1)
         fn compute_main() {
           var<private> foo: f32 = 0.0;
           var foo_2: i32 = 10;
           clamp_0acf8f();
         }
-        fn vert_main() -> [[builtin(position)]] vec4<f32> {
+        fn vert_main() -> @builtin(position) vec4<f32> {
           clamp_0acf8f()
           var foo_1: i32 = 3
           return vec4<f32>()
diff --git a/src/ast/array.cc b/src/ast/array.cc
index e8339f8..a620dd0 100644
--- a/src/ast/array.cc
+++ b/src/ast/array.cc
@@ -54,7 +54,7 @@
   std::ostringstream out;
   for (auto* deco : decorations) {
     if (auto* stride = deco->As<ast::StrideDecoration>()) {
-      out << "[[stride(" << stride->stride << ")]] ";
+      out << "@stride(" << stride->stride << ") ";
     }
   }
   out << "array<" << type->FriendlyName(symbols);
diff --git a/src/ast/array_test.cc b/src/ast/array_test.cc
index 3ada2c7..5a7f02c 100644
--- a/src/ast/array_test.cc
+++ b/src/ast/array_test.cc
@@ -63,7 +63,7 @@
   auto* i32 = create<I32>();
   auto* arr =
       create<Array>(i32, Expr(5), DecorationList{create<StrideDecoration>(32)});
-  EXPECT_EQ(arr->FriendlyName(Symbols()), "[[stride(32)]] array<i32, 5>");
+  EXPECT_EQ(arr->FriendlyName(Symbols()), "@stride(32) array<i32, 5>");
 }
 
 }  // namespace
diff --git a/src/ast/disable_validation_decoration.h b/src/ast/disable_validation_decoration.h
index 099a669..5eea9bf 100644
--- a/src/ast/disable_validation_decoration.h
+++ b/src/ast/disable_validation_decoration.h
@@ -65,7 +65,7 @@
   ~DisableValidationDecoration() override;
 
   /// @return a short description of the internal decoration which will be
-  /// displayed in WGSL as `[[internal(<name>)]]` (but is not parsable).
+  /// displayed in WGSL as `@internal(<name>)` (but is not parsable).
   std::string InternalName() const override;
 
   /// Performs a deep clone of this object using the CloneContext `ctx`.
diff --git a/src/ast/internal_decoration.h b/src/ast/internal_decoration.h
index eb0b814..50f920c 100644
--- a/src/ast/internal_decoration.h
+++ b/src/ast/internal_decoration.h
@@ -35,7 +35,7 @@
   ~InternalDecoration() override;
 
   /// @return a short description of the internal decoration which will be
-  /// displayed in WGSL as `[[internal(<name>)]]` (but is not parsable).
+  /// displayed in WGSL as `@internal(<name>)` (but is not parsable).
   virtual std::string InternalName() const = 0;
 
   /// @returns the WGSL name for the decoration
diff --git a/src/ast/module_clone_test.cc b/src/ast/module_clone_test.cc
index b2415dc..29e9891 100644
--- a/src/ast/module_clone_test.cc
+++ b/src/ast/module_clone_test.cc
@@ -28,13 +28,13 @@
   // See also fuzzers/tint_ast_clone_fuzzer.cc for further coverage of cloning.
   Source::File file("test.wgsl", R"([[block]]
 struct S0 {
-  [[size(4)]]
+  @size(4)
   m0 : u32;
   m1 : array<u32>;
 };
 
 [[block]] struct S1 {
-  [[size(4)]]
+  @size(4)
   m0 : u32;
   m1 : array<u32, 6>;
 };
@@ -42,21 +42,21 @@
 let c0 : i32 = 10;
 let c1 : bool = true;
 
-type t0 = [[stride(16)]] array<vec4<f32>>;
+type t0 = @stride(16) array<vec4<f32>>;
 type t1 = array<vec4<f32>>;
 
 var<private> g0 : u32 = 20u;
 var<private> g1 : f32 = 123.0;
-[[group(0), binding(0)]] var g2 : texture_2d<f32>;
-[[group(1), binding(0)]] var g3 : texture_depth_2d;
-[[group(2), binding(0)]] var g4 : texture_storage_2d<rg32float, write>;
-[[group(3), binding(0)]] var g5 : texture_depth_cube_array;
-[[group(4), binding(0)]] var g6 : texture_external;
+@group(0) @binding(0) var g2 : texture_2d<f32>;
+@group(1) @binding(0) var g3 : texture_depth_2d;
+@group(2) @binding(0) var g4 : texture_storage_2d<rg32float, write>;
+@group(3) @binding(0) var g5 : texture_depth_cube_array;
+@group(4) @binding(0) var g6 : texture_external;
 
 var<private> g7 : vec3<f32>;
-[[group(0), binding(1)]] var<storage, write> g8 : S0;
-[[group(1), binding(1)]] var<storage, read> g9 : S0;
-[[group(2), binding(1)]] var<storage, read_write> g10 : S0;
+@group(0) @binding(1) var<storage, write> g8 : S0;
+@group(1) @binding(1) var<storage, read> g9 : S0;
+@group(2) @binding(1) var<storage, read_write> g10 : S0;
 
 fn f0(p0 : bool) -> f32 {
   if (p0) {
@@ -101,7 +101,7 @@
   return 1.0;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   f1(1.0, 2);
 }
diff --git a/src/ast/struct_member_offset_decoration.h b/src/ast/struct_member_offset_decoration.h
index 8c6f3ac..da1a661 100644
--- a/src/ast/struct_member_offset_decoration.h
+++ b/src/ast/struct_member_offset_decoration.h
@@ -23,14 +23,14 @@
 namespace ast {
 
 /// A struct member offset decoration
-/// @note The WGSL spec removed the `[[offset(n)]]` decoration for `[[size(n)]]`
-/// and `[[align(n)]]` in https://github.com/gpuweb/gpuweb/pull/1447. However
+/// @note The WGSL spec removed the `@offset(n)` decoration for `@size(n)`
+/// and `@align(n)` in https://github.com/gpuweb/gpuweb/pull/1447. However
 /// this decoration is kept because the SPIR-V reader has to deal with absolute
 /// offsets, and transforming these to size / align is complex and can be done
 /// in a number of ways. The Resolver is responsible for consuming the size and
 /// align decorations and transforming these into absolute offsets. It is
-/// trivial for the Resolver to handle `[[offset(n)]]` or `[[size(n)]]` /
-/// `[[align(n)]]` decorations, so this is what we do, keeping all the layout
+/// trivial for the Resolver to handle `@offset(n)` or `@size(n)` /
+/// `@align(n)` decorations, so this is what we do, keeping all the layout
 /// logic in one place.
 class StructMemberOffsetDecoration
     : public Castable<StructMemberOffsetDecoration, Decoration> {
diff --git a/src/inspector/inspector_test.cc b/src/inspector/inspector_test.cc
index 1d237f8..713887b 100644
--- a/src/inspector/inspector_test.cc
+++ b/src/inspector/inspector_test.cc
@@ -2726,7 +2726,7 @@
 
 TEST_F(InspectorGetSamplerTextureUsesTest, None) {
   std::string shader = R"(
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
 })";
 
@@ -2739,12 +2739,12 @@
 
 TEST_F(InspectorGetSamplerTextureUsesTest, Simple) {
   std::string shader = R"(
-[[group(0), binding(1)]] var mySampler: sampler;
-[[group(0), binding(2)]] var myTexture: texture_2d<f32>;
+@group(0) @binding(1) var mySampler: sampler;
+@group(0) @binding(2) var myTexture: texture_2d<f32>;
 
-[[stage(fragment)]]
-fn main([[location(0)]] fragUV: vec2<f32>,
-        [[location(1)]] fragPosition: vec4<f32>) -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn main(@location(0) fragUV: vec2<f32>,
+        @location(1) fragPosition: vec4<f32>) -> @location(0) vec4<f32> {
   return textureSample(myTexture, mySampler, fragUV) * fragPosition;
 })";
 
@@ -2762,12 +2762,12 @@
 
 TEST_F(InspectorGetSamplerTextureUsesTest, UnknownEntryPoint) {
   std::string shader = R"(
-[[group(0), binding(1)]] var mySampler: sampler;
-[[group(0), binding(2)]] var myTexture: texture_2d<f32>;
+@group(0) @binding(1) var mySampler: sampler;
+@group(0) @binding(2) var myTexture: texture_2d<f32>;
 
-[[stage(fragment)]]
-fn main([[location(0)]] fragUV: vec2<f32>,
-        [[location(1)]] fragPosition: vec4<f32>) -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn main(@location(0) fragUV: vec2<f32>,
+        @location(1) fragPosition: vec4<f32>) -> @location(0) vec4<f32> {
   return textureSample(myTexture, mySampler, fragUV) * fragPosition;
 })";
 
@@ -2778,12 +2778,12 @@
 
 TEST_F(InspectorGetSamplerTextureUsesTest, MultipleCalls) {
   std::string shader = R"(
-[[group(0), binding(1)]] var mySampler: sampler;
-[[group(0), binding(2)]] var myTexture: texture_2d<f32>;
+@group(0) @binding(1) var mySampler: sampler;
+@group(0) @binding(2) var myTexture: texture_2d<f32>;
 
-[[stage(fragment)]]
-fn main([[location(0)]] fragUV: vec2<f32>,
-        [[location(1)]] fragPosition: vec4<f32>) -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn main(@location(0) fragUV: vec2<f32>,
+        @location(1) fragPosition: vec4<f32>) -> @location(0) vec4<f32> {
   return textureSample(myTexture, mySampler, fragUV) * fragPosition;
 })";
 
@@ -2799,16 +2799,16 @@
 
 TEST_F(InspectorGetSamplerTextureUsesTest, BothIndirect) {
   std::string shader = R"(
-[[group(0), binding(1)]] var mySampler: sampler;
-[[group(0), binding(2)]] var myTexture: texture_2d<f32>;
+@group(0) @binding(1) var mySampler: sampler;
+@group(0) @binding(2) var myTexture: texture_2d<f32>;
 
 fn doSample(t: texture_2d<f32>, s: sampler, uv: vec2<f32>) -> vec4<f32> {
   return textureSample(t, s, uv);
 }
 
-[[stage(fragment)]]
-fn main([[location(0)]] fragUV: vec2<f32>,
-        [[location(1)]] fragPosition: vec4<f32>) -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn main(@location(0) fragUV: vec2<f32>,
+        @location(1) fragPosition: vec4<f32>) -> @location(0) vec4<f32> {
   return doSample(myTexture, mySampler, fragUV) * fragPosition;
 })";
 
@@ -2826,16 +2826,16 @@
 
 TEST_F(InspectorGetSamplerTextureUsesTest, SamplerIndirect) {
   std::string shader = R"(
-[[group(0), binding(1)]] var mySampler: sampler;
-[[group(0), binding(2)]] var myTexture: texture_2d<f32>;
+@group(0) @binding(1) var mySampler: sampler;
+@group(0) @binding(2) var myTexture: texture_2d<f32>;
 
 fn doSample(s: sampler, uv: vec2<f32>) -> vec4<f32> {
   return textureSample(myTexture, s, uv);
 }
 
-[[stage(fragment)]]
-fn main([[location(0)]] fragUV: vec2<f32>,
-        [[location(1)]] fragPosition: vec4<f32>) -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn main(@location(0) fragUV: vec2<f32>,
+        @location(1) fragPosition: vec4<f32>) -> @location(0) vec4<f32> {
   return doSample(mySampler, fragUV) * fragPosition;
 })";
 
@@ -2853,16 +2853,16 @@
 
 TEST_F(InspectorGetSamplerTextureUsesTest, TextureIndirect) {
   std::string shader = R"(
-[[group(0), binding(1)]] var mySampler: sampler;
-[[group(0), binding(2)]] var myTexture: texture_2d<f32>;
+@group(0) @binding(1) var mySampler: sampler;
+@group(0) @binding(2) var myTexture: texture_2d<f32>;
 
 fn doSample(t: texture_2d<f32>, uv: vec2<f32>) -> vec4<f32> {
   return textureSample(t, mySampler, uv);
 }
 
-[[stage(fragment)]]
-fn main([[location(0)]] fragUV: vec2<f32>,
-        [[location(1)]] fragPosition: vec4<f32>) -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn main(@location(0) fragUV: vec2<f32>,
+        @location(1) fragPosition: vec4<f32>) -> @location(0) vec4<f32> {
   return doSample(myTexture, fragUV) * fragPosition;
 })";
 
@@ -2880,16 +2880,16 @@
 
 TEST_F(InspectorGetSamplerTextureUsesTest, NeitherIndirect) {
   std::string shader = R"(
-[[group(0), binding(1)]] var mySampler: sampler;
-[[group(0), binding(2)]] var myTexture: texture_2d<f32>;
+@group(0) @binding(1) var mySampler: sampler;
+@group(0) @binding(2) var myTexture: texture_2d<f32>;
 
 fn doSample(uv: vec2<f32>) -> vec4<f32> {
   return textureSample(myTexture, mySampler, uv);
 }
 
-[[stage(fragment)]]
-fn main([[location(0)]] fragUV: vec2<f32>,
-        [[location(1)]] fragPosition: vec4<f32>) -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn main(@location(0) fragUV: vec2<f32>,
+        @location(1) fragPosition: vec4<f32>) -> @location(0) vec4<f32> {
   return doSample(fragUV) * fragPosition;
 })";
 
@@ -2907,8 +2907,8 @@
 
 TEST_F(InspectorGetSamplerTextureUsesTest, Complex) {
   std::string shader = R"(
-[[group(0), binding(1)]] var mySampler: sampler;
-[[group(0), binding(2)]] var myTexture: texture_2d<f32>;
+@group(0) @binding(1) var mySampler: sampler;
+@group(0) @binding(2) var myTexture: texture_2d<f32>;
 
 
 fn doSample(t: texture_2d<f32>, s: sampler, uv: vec2<f32>) -> vec4<f32> {
@@ -2927,21 +2927,21 @@
   return X(t, s, uv) + Y(t, s, uv);
 }
 
-[[stage(fragment)]]
-fn via_call([[location(0)]] fragUV: vec2<f32>,
-        [[location(1)]] fragPosition: vec4<f32>) -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn via_call(@location(0) fragUV: vec2<f32>,
+        @location(1) fragPosition: vec4<f32>) -> @location(0) vec4<f32> {
   return Z(myTexture, mySampler, fragUV) * fragPosition;
 }
 
-[[stage(fragment)]]
-fn via_ptr([[location(0)]] fragUV: vec2<f32>,
-        [[location(1)]] fragPosition: vec4<f32>) -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn via_ptr(@location(0) fragUV: vec2<f32>,
+        @location(1) fragPosition: vec4<f32>) -> @location(0) vec4<f32> {
   return textureSample(myTexture, mySampler, fragUV) + fragPosition;
 }
 
-[[stage(fragment)]]
-fn direct([[location(0)]] fragUV: vec2<f32>,
-        [[location(1)]] fragPosition: vec4<f32>) -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn direct(@location(0) fragUV: vec2<f32>,
+        @location(1) fragPosition: vec4<f32>) -> @location(0) vec4<f32> {
   return textureSample(myTexture, mySampler, fragUV) + fragPosition;
 })";
 
@@ -3075,16 +3075,16 @@
 // ::GetSamplerTextureUses was called.
 TEST_F(InspectorRegressionTest, tint967) {
   std::string shader = R"(
-[[group(0), binding(1)]] var mySampler: sampler;
-[[group(0), binding(2)]] var myTexture: texture_2d<f32>;
+@group(0) @binding(1) var mySampler: sampler;
+@group(0) @binding(2) var myTexture: texture_2d<f32>;
 
 fn doSample(t: texture_2d<f32>, s: sampler, uv: vec2<f32>) -> vec4<f32> {
   return textureSample(t, s, uv);
 }
 
-[[stage(fragment)]]
-fn main([[location(0)]] fragUV: vec2<f32>,
-        [[location(1)]] fragPosition: vec4<f32>) -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn main(@location(0) fragUV: vec2<f32>,
+        @location(1) fragPosition: vec4<f32>) -> @location(0) vec4<f32> {
   return doSample(myTexture, mySampler, fragUV) * fragPosition;
 })";
 
diff --git a/src/reader/spirv/function_call_test.cc b/src/reader/spirv/function_call_test.cc
index c3efe3f..1626fc8 100644
--- a/src/reader/spirv/function_call_test.cc
+++ b/src/reader/spirv/function_call_test.cc
@@ -61,7 +61,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn x_100() {
   x_100_1();
 }
@@ -188,7 +188,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn x_100() {
   x_100_1();
 }
diff --git a/src/reader/spirv/function_memory_test.cc b/src/reader/spirv/function_memory_test.cc
index 189fdbe..9526586 100644
--- a/src/reader/spirv/function_memory_test.cc
+++ b/src/reader/spirv/function_memory_test.cc
@@ -858,7 +858,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
@@ -899,7 +899,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
@@ -950,14 +950,14 @@
   ASSERT_TRUE(p->BuildAndParseInternalModuleExceptFunctions())
       << assembly << p->error();
   const auto module_str = test::ToString(p->program());
-  EXPECT_THAT(module_str, HasSubstr(R"(type RTArr = [[stride(4)]] array<u32>;
+  EXPECT_THAT(module_str, HasSubstr(R"(type RTArr = @stride(4) array<u32>;
 
 struct S {
   field0 : u32;
   field1 : RTArr;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> myvar : S;
+@group(0) @binding(0) var<storage, read_write> myvar : S;
 )"));
 }
 
diff --git a/src/reader/spirv/function_var_test.cc b/src/reader/spirv/function_var_test.cc
index 9e09f66..eb1d179 100644
--- a/src/reader/spirv/function_var_test.cc
+++ b/src/reader/spirv/function_var_test.cc
@@ -338,9 +338,8 @@
   EXPECT_TRUE(fe.EmitFunctionVariables());
 
   auto ast_body = fe.ast_body();
-  EXPECT_THAT(
-      test::ToString(p->program(), ast_body),
-      HasSubstr("var x_200 : array<u32, 2u> = array<u32, 2u>();"));
+  EXPECT_THAT(test::ToString(p->program(), ast_body),
+              HasSubstr("var x_200 : array<u32, 2u> = array<u32, 2u>();"));
 }
 
 TEST_F(SpvParserFunctionVarTest,
@@ -368,7 +367,7 @@
 
   auto ast_body = fe.ast_body();
   EXPECT_THAT(test::ToString(p->program(), ast_body),
-              HasSubstr("var x_200 : Arr = [[stride(16)]] array<u32, 2u>();"));
+              HasSubstr("var x_200 : Arr = @stride(16) array<u32, 2u>();"));
 }
 
 TEST_F(SpvParserFunctionVarTest, EmitFunctionVariables_StructInitializer) {
diff --git a/src/reader/spirv/parser_impl_function_decl_test.cc b/src/reader/spirv/parser_impl_function_decl_test.cc
index b3eecc1..925883d 100644
--- a/src/reader/spirv/parser_impl_function_decl_test.cc
+++ b/src/reader/spirv/parser_impl_function_decl_test.cc
@@ -124,13 +124,13 @@
   const auto program_ast = test::ToString(program);
   EXPECT_THAT(program_ast, HasSubstr(R"(
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   x_2_1 : vec4<f32>;
 }
 )")) << program_ast;
 
   EXPECT_THAT(program_ast, HasSubstr(R"(
-[[stage(vertex)]]
+@stage(vertex)
 fn main() -> main_out {
 )"));
 }
@@ -148,7 +148,7 @@
   Program program = p->program();
   const auto program_ast = test::ToString(program);
   EXPECT_THAT(program_ast, HasSubstr(R"(
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
 )"));
 }
@@ -166,7 +166,7 @@
   Program program = p->program();
   const auto program_ast = test::ToString(program);
   EXPECT_THAT(program_ast, HasSubstr(R"(
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
 )"));
 }
@@ -186,11 +186,11 @@
   Program program = p->program();
   const auto program_ast = test::ToString(program);
   EXPECT_THAT(program_ast, HasSubstr(R"(
-[[stage(fragment)]]
+@stage(fragment)
 fn first_shader() {
 )"));
   EXPECT_THAT(program_ast, HasSubstr(R"(
-[[stage(fragment)]]
+@stage(fragment)
 fn second_shader() {
 )"));
 }
@@ -213,7 +213,7 @@
   Program program = p->program();
   const auto program_ast = test::ToString(program);
   EXPECT_THAT(program_ast, HasSubstr(R"(
-[[stage(compute), workgroup_size(2, 4, 8)]]
+@stage(compute) @workgroup_size(2, 4, 8)
 fn comp_main() {
 )")) << program_ast;
 }
@@ -239,7 +239,7 @@
   Program program = p->program();
   const auto program_ast = test::ToString(program);
   EXPECT_THAT(program_ast, HasSubstr(R"(
-[[stage(compute), workgroup_size(3, 5, 7)]]
+@stage(compute) @workgroup_size(3, 5, 7)
 fn comp_main() {
 )")) << program_ast;
 }
@@ -270,7 +270,7 @@
   Program program = p->program();
   const auto program_ast = test::ToString(program);
   EXPECT_THAT(program_ast, HasSubstr(R"(
-[[stage(compute), workgroup_size(3, 5, 7)]]
+@stage(compute) @workgroup_size(3, 5, 7)
 fn comp_main() {
 )")) << program_ast;
 }
@@ -300,7 +300,7 @@
   Program program = p->program();
   const auto program_ast = test::ToString(program);
   EXPECT_THAT(program_ast, HasSubstr(R"(
-[[stage(compute), workgroup_size(3, 5, 7)]]
+@stage(compute) @workgroup_size(3, 5, 7)
 fn comp_main() {
 )")) << program_ast;
 }
@@ -334,7 +334,7 @@
   Program program = p->program();
   const auto program_ast = test::ToString(program);
   EXPECT_THAT(program_ast, HasSubstr(R"(
-[[stage(compute), workgroup_size(3, 5, 7)]]
+@stage(compute) @workgroup_size(3, 5, 7)
 fn comp_main() {
 )")) << program_ast;
 }
diff --git a/src/reader/spirv/parser_impl_handle_test.cc b/src/reader/spirv/parser_impl_handle_test.cc
index a5f0cba..2e08b30 100644
--- a/src/reader/spirv/parser_impl_handle_test.cc
+++ b/src/reader/spirv/parser_impl_handle_test.cc
@@ -1254,7 +1254,7 @@
          %ptr = OpTypePointer UniformConstant %sampler
          %10 = OpVariable %ptr UniformConstant
 )",
-            R"([[group(0), binding(0)]] var x_10 : sampler;)"}));
+            R"(@group(0) @binding(0) var x_10 : sampler;)"}));
 
 INSTANTIATE_TEST_SUITE_P(
     Images,
@@ -1265,7 +1265,7 @@
             "", R"(
          %10 = OpVariable %ptr_f_texture_1d UniformConstant
 )",
-            R"([[group(0), binding(0)]] var x_10 : texture_1d<f32>;)"},
+            R"(@group(0) @binding(0) var x_10 : texture_1d<f32>;)"},
         DeclUnderspecifiedHandleCase{
             R"(
          OpDecorate %10 NonWritable
@@ -1273,7 +1273,7 @@
             R"(
          %10 = OpVariable %ptr_f_storage_1d UniformConstant
 )",
-            R"([[group(0), binding(0)]] var x_10 : texture_1d<f32>;)"},
+            R"(@group(0) @binding(0) var x_10 : texture_1d<f32>;)"},
         DeclUnderspecifiedHandleCase{
             R"(
          OpDecorate %10 NonReadable
@@ -1281,7 +1281,7 @@
             R"(
          %10 = OpVariable %ptr_f_storage_1d UniformConstant
 )",
-            R"([[group(0), binding(0)]] var x_10 : texture_storage_1d<rg32float, write>;)"}));
+            R"(@group(0) @binding(0) var x_10 : texture_storage_1d<rg32float, write>;)"}));
 
 // Test handle declaration or error, when there is an image access.
 
@@ -1405,8 +1405,7 @@
         {"%float 1D 0 1 1 1 Unknown", "%result = OpImageQuerySamples %uint %im",
          "WGSL arrayed textures must be 2d_array or cube_array: ", ""},
         {"%float 2D 0 0 1 1 Unknown", "%result = OpImageQuerySamples %uint %im",
-         "",
-         "[[group(2), binding(1)]] var x_20 : texture_multisampled_2d<f32>;"},
+         "", "@group(2) @binding(1) var x_20 : texture_multisampled_2d<f32>;"},
         {"%float 2D 0 1 1 1 Unknown", "%result = OpImageQuerySamples %uint %im",
          "WGSL multisampled textures must be 2d and non-arrayed: ", ""},
         {"%float 3D 0 0 1 1 Unknown", "%result = OpImageQuerySamples %uint %im",
@@ -1560,36 +1559,36 @@
         ImageAccessCase{"%float 2D 0 0 0 1 Unknown",
                         "%result = OpImageGather "
                         "%v4float %sampled_image %coords12 %int_1",
-                        R"([[group(0), binding(0)]] var x_10 : sampler;
+                        R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_2d<f32>;)",
+@group(2) @binding(1) var x_20 : texture_2d<f32>;)",
                         "textureGather(1, x_20, x_10, coords12)"},
         // OpImageGather 2D ConstOffset signed
         ImageAccessCase{
             "%float 2D 0 0 0 1 Unknown",
             "%result = OpImageGather "
             "%v4float %sampled_image %coords12 %int_1 ConstOffset %offsets2d",
-            R"([[group(0), binding(0)]] var x_10 : sampler;
+            R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_2d<f32>;)",
+@group(2) @binding(1) var x_20 : texture_2d<f32>;)",
             "textureGather(1, x_20, x_10, coords12, vec2<i32>(3, 4))"},
         // OpImageGather 2D ConstOffset unsigned
         ImageAccessCase{"%float 2D 0 0 0 1 Unknown",
                         "%result = OpImageGather "
                         "%v4float %sampled_image %coords12 %int_1 ConstOffset "
                         "%u_offsets2d",
-                        R"([[group(0), binding(0)]] var x_10 : sampler;
+                        R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_2d<f32>;)",
+@group(2) @binding(1) var x_20 : texture_2d<f32>;)",
                         "textureGather(1, x_20, x_10, coords12, "
                         "vec2<i32>(vec2<u32>(3u, 4u)))"},
         // OpImageGather 2D Array
         ImageAccessCase{"%float 2D 0 1 0 1 Unknown",
                         "%result = OpImageGather "
                         "%v4float %sampled_image %coords123 %int_1",
-                        R"([[group(0), binding(0)]] var x_10 : sampler;
+                        R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_2d_array<f32>;)",
+@group(2) @binding(1) var x_20 : texture_2d_array<f32>;)",
                         "textureGather(1, x_20, x_10, coords123.xy, "
                         "i32(round(coords123.z)))"},
         // OpImageGather 2D Array ConstOffset signed
@@ -1597,9 +1596,9 @@
             "%float 2D 0 1 0 1 Unknown",
             "%result = OpImageGather "
             "%v4float %sampled_image %coords123 %int_1 ConstOffset %offsets2d",
-            R"([[group(0), binding(0)]] var x_10 : sampler;
+            R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_2d_array<f32>;)",
+@group(2) @binding(1) var x_20 : texture_2d_array<f32>;)",
             "textureGather(1, x_20, x_10, coords123.xy, "
             "i32(round(coords123.z)), vec2<i32>(3, 4))"},
         // OpImageGather 2D Array ConstOffset unsigned
@@ -1607,9 +1606,9 @@
                         "%result = OpImageGather "
                         "%v4float %sampled_image %coords123 %int_1 ConstOffset "
                         "%u_offsets2d",
-                        R"([[group(0), binding(0)]] var x_10 : sampler;
+                        R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_2d_array<f32>;)",
+@group(2) @binding(1) var x_20 : texture_2d_array<f32>;)",
                         "textureGather(1, x_20, x_10, coords123.xy, "
                         "i32(round(coords123.z)), "
                         "vec2<i32>(vec2<u32>(3u, 4u)))"},
@@ -1617,53 +1616,53 @@
         ImageAccessCase{"%float Cube 0 0 0 1 Unknown",
                         "%result = OpImageGather "
                         "%v4float %sampled_image %coords123 %int_1",
-                        R"([[group(0), binding(0)]] var x_10 : sampler;
+                        R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_cube<f32>;)",
+@group(2) @binding(1) var x_20 : texture_cube<f32>;)",
                         "textureGather(1, x_20, x_10, coords123)"},
         // OpImageGather Cube Array
         ImageAccessCase{"%float Cube 0 1 0 1 Unknown",
                         "%result = OpImageGather "
                         "%v4float %sampled_image %coords1234 %int_1",
-                        R"([[group(0), binding(0)]] var x_10 : sampler;
+                        R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_cube_array<f32>;)",
+@group(2) @binding(1) var x_20 : texture_cube_array<f32>;)",
                         "textureGather(1, x_20, x_10, coords1234.xyz, "
                         "i32(round(coords1234.w)))"},
         // OpImageGather 2DDepth
         ImageAccessCase{"%float 2D 1 0 0 1 Unknown",
                         "%result = OpImageGather "
                         "%v4float %sampled_image %coords12 %int_1",
-                        R"([[group(0), binding(0)]] var x_10 : sampler;
+                        R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_depth_2d;)",
+@group(2) @binding(1) var x_20 : texture_depth_2d;)",
                         "textureGather(x_20, x_10, coords12)"},
         // OpImageGather 2DDepth ConstOffset signed
         ImageAccessCase{
             "%float 2D 1 0 0 1 Unknown",
             "%result = OpImageGather "
             "%v4float %sampled_image %coords12 %int_1 ConstOffset %offsets2d",
-            R"([[group(0), binding(0)]] var x_10 : sampler;
+            R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_depth_2d;)",
+@group(2) @binding(1) var x_20 : texture_depth_2d;)",
             "textureGather(x_20, x_10, coords12, vec2<i32>(3, 4))"},
         // OpImageGather 2DDepth ConstOffset unsigned
         ImageAccessCase{"%float 2D 1 0 0 1 Unknown",
                         "%result = OpImageGather "
                         "%v4float %sampled_image %coords12 %int_1 ConstOffset "
                         "%u_offsets2d",
-                        R"([[group(0), binding(0)]] var x_10 : sampler;
+                        R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_depth_2d;)",
+@group(2) @binding(1) var x_20 : texture_depth_2d;)",
                         "textureGather(x_20, x_10, coords12, "
                         "vec2<i32>(vec2<u32>(3u, 4u)))"},
         // OpImageGather 2DDepth Array
         ImageAccessCase{"%float 2D 1 1 0 1 Unknown",
                         "%result = OpImageGather "
                         "%v4float %sampled_image %coords123 %int_1",
-                        R"([[group(0), binding(0)]] var x_10 : sampler;
+                        R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_depth_2d_array;)",
+@group(2) @binding(1) var x_20 : texture_depth_2d_array;)",
                         "textureGather(x_20, x_10, coords123.xy, "
                         "i32(round(coords123.z)))"},
         // OpImageGather 2DDepth Array ConstOffset signed
@@ -1671,9 +1670,9 @@
             "%float 2D 1 1 0 1 Unknown",
             "%result = OpImageGather "
             "%v4float %sampled_image %coords123 %int_1 ConstOffset %offsets2d",
-            R"([[group(0), binding(0)]] var x_10 : sampler;
+            R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_depth_2d_array;)",
+@group(2) @binding(1) var x_20 : texture_depth_2d_array;)",
             "textureGather(x_20, x_10, coords123.xy, "
             "i32(round(coords123.z)), vec2<i32>(3, 4))"},
         // OpImageGather 2DDepth Array ConstOffset unsigned
@@ -1681,9 +1680,9 @@
                         "%result = OpImageGather "
                         "%v4float %sampled_image %coords123 %int_1 ConstOffset "
                         "%u_offsets2d",
-                        R"([[group(0), binding(0)]] var x_10 : sampler;
+                        R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_depth_2d_array;)",
+@group(2) @binding(1) var x_20 : texture_depth_2d_array;)",
                         "textureGather(x_20, x_10, coords123.xy, "
                         "i32(round(coords123.z)), "
                         "vec2<i32>(vec2<u32>(3u, 4u)))"},
@@ -1691,17 +1690,17 @@
         ImageAccessCase{"%float Cube 1 0 0 1 Unknown",
                         "%result = OpImageGather "
                         "%v4float %sampled_image %coords123 %int_1",
-                        R"([[group(0), binding(0)]] var x_10 : sampler;
+                        R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_depth_cube;)",
+@group(2) @binding(1) var x_20 : texture_depth_cube;)",
                         "textureGather(x_20, x_10, coords123)"},
         // OpImageGather DepthCube Array
         ImageAccessCase{"%float Cube 1 1 0 1 Unknown",
                         "%result = OpImageGather "
                         "%v4float %sampled_image %coords1234 %int_1",
-                        R"([[group(0), binding(0)]] var x_10 : sampler;
+                        R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_depth_cube_array;)",
+@group(2) @binding(1) var x_20 : texture_depth_cube_array;)",
                         "textureGather(x_20, x_10, coords1234.xyz, "
                         "i32(round(coords1234.w)))"}}));
 
@@ -1714,18 +1713,18 @@
             "%float 2D 1 0 0 1 Unknown",
             "%result = OpImageDrefGather "
             "%v4float %sampled_image %coords12 %depth",
-            R"([[group(0), binding(0)]] var x_10 : sampler_comparison;
+            R"(@group(0) @binding(0) var x_10 : sampler_comparison;
 
-[[group(2), binding(1)]] var x_20 : texture_depth_2d;)",
+@group(2) @binding(1) var x_20 : texture_depth_2d;)",
             "textureGatherCompare(x_20, x_10, coords12, 0.200000003)"},
         // OpImageDrefGather 2DDepth ConstOffset signed
         ImageAccessCase{
             "%float 2D 1 0 0 1 Unknown",
             "%result = OpImageDrefGather "
             "%v4float %sampled_image %coords12 %depth ConstOffset %offsets2d",
-            R"([[group(0), binding(0)]] var x_10 : sampler_comparison;
+            R"(@group(0) @binding(0) var x_10 : sampler_comparison;
 
-[[group(2), binding(1)]] var x_20 : texture_depth_2d;)",
+@group(2) @binding(1) var x_20 : texture_depth_2d;)",
             "textureGatherCompare(x_20, x_10, coords12, 0.200000003, "
             "vec2<i32>(3, 4))"},
         // OpImageDrefGather 2DDepth ConstOffset unsigned
@@ -1734,62 +1733,59 @@
             "%result = OpImageDrefGather "
             "%v4float %sampled_image %coords12 %depth ConstOffset "
             "%u_offsets2d",
-            R"([[group(0), binding(0)]] var x_10 : sampler_comparison;
+            R"(@group(0) @binding(0) var x_10 : sampler_comparison;
 
-[[group(2), binding(1)]] var x_20 : texture_depth_2d;)",
+@group(2) @binding(1) var x_20 : texture_depth_2d;)",
             "textureGatherCompare(x_20, x_10, coords12, 0.200000003, "
             "vec2<i32>(vec2<u32>(3u, 4u)))"},
         // OpImageDrefGather 2DDepth Array
-        ImageAccessCase{
-            "%float 2D 1 1 0 1 Unknown",
-            "%result = OpImageDrefGather "
-            "%v4float %sampled_image %coords123 %depth",
-            R"([[group(0), binding(0)]] var x_10 : sampler_comparison;
+        ImageAccessCase{"%float 2D 1 1 0 1 Unknown",
+                        "%result = OpImageDrefGather "
+                        "%v4float %sampled_image %coords123 %depth",
+                        R"(@group(0) @binding(0) var x_10 : sampler_comparison;
 
-[[group(2), binding(1)]] var x_20 : texture_depth_2d_array;)",
-            "textureGatherCompare(x_20, x_10, coords123.xy, "
-            "i32(round(coords123.z)), 0.200000003)"},
+@group(2) @binding(1) var x_20 : texture_depth_2d_array;)",
+                        "textureGatherCompare(x_20, x_10, coords123.xy, "
+                        "i32(round(coords123.z)), 0.200000003)"},
         // OpImageDrefGather 2DDepth Array ConstOffset signed
         ImageAccessCase{
             "%float 2D 1 1 0 1 Unknown",
             "%result = OpImageDrefGather "
             "%v4float %sampled_image %coords123 %depth ConstOffset %offsets2d",
-            R"([[group(0), binding(0)]] var x_10 : sampler_comparison;
+            R"(@group(0) @binding(0) var x_10 : sampler_comparison;
 
-[[group(2), binding(1)]] var x_20 : texture_depth_2d_array;)",
+@group(2) @binding(1) var x_20 : texture_depth_2d_array;)",
             "textureGatherCompare(x_20, x_10, coords123.xy, "
             "i32(round(coords123.z)), 0.200000003, vec2<i32>(3, 4))"},
         // OpImageDrefGather 2DDepth Array ConstOffset unsigned
-        ImageAccessCase{
-            "%float 2D 1 1 0 1 Unknown",
-            "%result = OpImageDrefGather "
-            "%v4float %sampled_image %coords123 %depth ConstOffset "
-            "%u_offsets2d",
-            R"([[group(0), binding(0)]] var x_10 : sampler_comparison;
+        ImageAccessCase{"%float 2D 1 1 0 1 Unknown",
+                        "%result = OpImageDrefGather "
+                        "%v4float %sampled_image %coords123 %depth ConstOffset "
+                        "%u_offsets2d",
+                        R"(@group(0) @binding(0) var x_10 : sampler_comparison;
 
-[[group(2), binding(1)]] var x_20 : texture_depth_2d_array;)",
-            "textureGatherCompare(x_20, x_10, coords123.xy, "
-            "i32(round(coords123.z)), 0.200000003, "
-            "vec2<i32>(vec2<u32>(3u, 4u)))"},
+@group(2) @binding(1) var x_20 : texture_depth_2d_array;)",
+                        "textureGatherCompare(x_20, x_10, coords123.xy, "
+                        "i32(round(coords123.z)), 0.200000003, "
+                        "vec2<i32>(vec2<u32>(3u, 4u)))"},
         // OpImageDrefGather DepthCube
         ImageAccessCase{
             "%float Cube 1 0 0 1 Unknown",
             "%result = OpImageDrefGather "
             "%v4float %sampled_image %coords123 %depth",
-            R"([[group(0), binding(0)]] var x_10 : sampler_comparison;
+            R"(@group(0) @binding(0) var x_10 : sampler_comparison;
 
-[[group(2), binding(1)]] var x_20 : texture_depth_cube;)",
+@group(2) @binding(1) var x_20 : texture_depth_cube;)",
             "textureGatherCompare(x_20, x_10, coords123, 0.200000003)"},
         // OpImageDrefGather DepthCube Array
-        ImageAccessCase{
-            "%float Cube 1 1 0 1 Unknown",
-            "%result = OpImageDrefGather "
-            "%v4float %sampled_image %coords1234 %depth",
-            R"([[group(0), binding(0)]] var x_10 : sampler_comparison;
+        ImageAccessCase{"%float Cube 1 1 0 1 Unknown",
+                        "%result = OpImageDrefGather "
+                        "%v4float %sampled_image %coords1234 %depth",
+                        R"(@group(0) @binding(0) var x_10 : sampler_comparison;
 
-[[group(2), binding(1)]] var x_20 : texture_depth_cube_array;)",
-            "textureGatherCompare(x_20, x_10, coords1234.xyz, "
-            "i32(round(coords1234.w)), 0.200000003)"}}));
+@group(2) @binding(1) var x_20 : texture_depth_cube_array;)",
+                        "textureGatherCompare(x_20, x_10, coords1234.xyz, "
+                        "i32(round(coords1234.w)), 0.200000003)"}}));
 
 INSTANTIATE_TEST_SUITE_P(
     ImageSampleImplicitLod,
@@ -1800,9 +1796,9 @@
         ImageAccessCase{"%float 2D 0 0 0 1 Unknown",
                         "%result = OpImageSampleImplicitLod "
                         "%v4float %sampled_image %coords12",
-                        R"([[group(0), binding(0)]] var x_10 : sampler;
+                        R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_2d<f32>;)",
+@group(2) @binding(1) var x_20 : texture_2d<f32>;)",
                         "textureSample(x_20, x_10, coords12)"},
 
         // OpImageSampleImplicitLod arrayed
@@ -1810,9 +1806,9 @@
             "%float 2D 0 1 0 1 Unknown",
             "%result = OpImageSampleImplicitLod "
             "%v4float %sampled_image %coords123",
-            R"([[group(0), binding(0)]] var x_10 : sampler;
+            R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_2d_array<f32>;)",
+@group(2) @binding(1) var x_20 : texture_2d_array<f32>;)",
             "textureSample(x_20, x_10, coords123.xy, i32(round(coords123.z)))"},
 
         // OpImageSampleImplicitLod with ConstOffset
@@ -1820,9 +1816,9 @@
             "%float 2D 0 0 0 1 Unknown",
             "%result = OpImageSampleImplicitLod "
             "%v4float %sampled_image %coords12 ConstOffset %offsets2d",
-            R"([[group(0), binding(0)]] var x_10 : sampler;
+            R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_2d<f32>;)",
+@group(2) @binding(1) var x_20 : texture_2d<f32>;)",
             "textureSample(x_20, x_10, coords12, vec2<i32>(3, 4))"},
 
         // OpImageSampleImplicitLod arrayed with ConstOffset
@@ -1830,18 +1826,18 @@
             "%float 2D 0 1 0 1 Unknown",
             "%result = OpImageSampleImplicitLod "
             "%v4float %sampled_image %coords123 ConstOffset %offsets2d",
-            R"([[group(0), binding(0)]] var x_10 : sampler;
+            R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_2d_array<f32>;)",
+@group(2) @binding(1) var x_20 : texture_2d_array<f32>;)",
             R"(textureSample(x_20, x_10, coords123.xy, i32(round(coords123.z)), vec2<i32>(3, 4)))"},
 
         // OpImageSampleImplicitLod with Bias
         ImageAccessCase{"%float 2D 0 0 0 1 Unknown",
                         "%result = OpImageSampleImplicitLod "
                         "%v4float %sampled_image %coords12 Bias %float_7",
-                        R"([[group(0), binding(0)]] var x_10 : sampler;
+                        R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_2d<f32>;)",
+@group(2) @binding(1) var x_20 : texture_2d<f32>;)",
                         "textureSampleBias(x_20, x_10, coords12, 7.0)"},
 
         // OpImageSampleImplicitLod arrayed with Bias
@@ -1849,9 +1845,9 @@
             "%float 2D 0 1 0 1 Unknown",
             "%result = OpImageSampleImplicitLod "
             "%v4float %sampled_image %coords123 Bias %float_7",
-            R"([[group(0), binding(0)]] var x_10 : sampler;
+            R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_2d_array<f32>;)",
+@group(2) @binding(1) var x_20 : texture_2d_array<f32>;)",
             R"(textureSampleBias(x_20, x_10, coords123.xy, i32(round(coords123.z)), 7.0))"},
 
         // OpImageSampleImplicitLod with Bias and signed ConstOffset
@@ -1860,9 +1856,9 @@
             "%result = OpImageSampleImplicitLod "
             "%v4float %sampled_image %coords12 Bias|ConstOffset "
             "%float_7 %offsets2d",
-            R"([[group(0), binding(0)]] var x_10 : sampler;
+            R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_2d<f32>;)",
+@group(2) @binding(1) var x_20 : texture_2d<f32>;)",
             R"(textureSampleBias(x_20, x_10, coords12, 7.0, vec2<i32>(3, 4))"},
 
         // OpImageSampleImplicitLod with Bias and unsigned ConstOffset
@@ -1872,9 +1868,9 @@
             "%result = OpImageSampleImplicitLod "
             "%v4float %sampled_image %coords12 Bias|ConstOffset "
             "%float_7 %u_offsets2d",
-            R"([[group(0), binding(0)]] var x_10 : sampler;
+            R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_2d<f32>;)",
+@group(2) @binding(1) var x_20 : texture_2d<f32>;)",
             R"(textureSampleBias(x_20, x_10, coords12, 7.0, vec2<i32>(vec2<u32>(3u, 4u)))"},
         // OpImageSampleImplicitLod arrayed with Bias
         ImageAccessCase{
@@ -1882,9 +1878,9 @@
             "%result = OpImageSampleImplicitLod "
             "%v4float %sampled_image %coords123 Bias|ConstOffset "
             "%float_7 %offsets2d",
-            R"([[group(0), binding(0)]] var x_10 : sampler;
+            R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_2d_array<f32>;)",
+@group(2) @binding(1) var x_20 : texture_2d_array<f32>;)",
             R"(textureSampleBias(x_20, x_10, coords123.xy, i32(round(coords123.z)), 7.0, vec2<i32>(3, 4))"}));
 
 INSTANTIATE_TEST_SUITE_P(
@@ -1903,11 +1899,11 @@
      %200 = OpImageSampleImplicitLod %v4float %sampled_image %coords12
      %210 = OpImageSampleDrefImplicitLod %float %sampled_dref_image %coords12 %depth
 )",
-                        R"([[group(0), binding(0)]] var x_10 : sampler;
+                        R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_depth_2d;
+@group(2) @binding(1) var x_20 : texture_depth_2d;
 
-[[group(0), binding(1)]] var x_30 : sampler_comparison;
+@group(0) @binding(1) var x_30 : sampler_comparison;
 )",
                         R"(
   let x_200 : vec4<f32> = vec4<f32>(textureSample(x_20, x_10, coords12), 0.0, 0.0, 0.0);
@@ -1923,9 +1919,9 @@
             "%float 2D 0 0 0 1 Unknown",
             "%result = OpImageSampleDrefImplicitLod "
             "%float %sampled_image %coords12 %depth",
-            R"([[group(0), binding(0)]] var x_10 : sampler_comparison;
+            R"(@group(0) @binding(0) var x_10 : sampler_comparison;
 
-[[group(2), binding(1)]] var x_20 : texture_depth_2d;
+@group(2) @binding(1) var x_20 : texture_depth_2d;
 )",
             R"(textureSampleCompare(x_20, x_10, coords12, 0.200000003))"},
         // ImageSampleDrefImplicitLod - arrayed
@@ -1933,18 +1929,18 @@
             "%float 2D 0 1 0 1 Unknown",
             "%result = OpImageSampleDrefImplicitLod "
             "%float %sampled_image %coords123 %depth",
-            R"([[group(0), binding(0)]] var x_10 : sampler_comparison;
+            R"(@group(0) @binding(0) var x_10 : sampler_comparison;
 
-[[group(2), binding(1)]] var x_20 : texture_depth_2d_array;)",
+@group(2) @binding(1) var x_20 : texture_depth_2d_array;)",
             R"(textureSampleCompare(x_20, x_10, coords123.xy, i32(round(coords123.z)), 0.200000003))"},
         // ImageSampleDrefImplicitLod with ConstOffset
         ImageAccessCase{
             "%float 2D 0 0 0 1 Unknown",
             "%result = OpImageSampleDrefImplicitLod %float "
             "%sampled_image %coords12 %depth ConstOffset %offsets2d",
-            R"([[group(0), binding(0)]] var x_10 : sampler_comparison;
+            R"(@group(0) @binding(0) var x_10 : sampler_comparison;
 
-[[group(2), binding(1)]] var x_20 : texture_depth_2d;
+@group(2) @binding(1) var x_20 : texture_depth_2d;
 )",
             R"(textureSampleCompare(x_20, x_10, coords12, 0.200000003, vec2<i32>(3, 4)))"},
         // ImageSampleDrefImplicitLod arrayed with ConstOffset
@@ -1952,9 +1948,9 @@
             "%float 2D 0 1 0 1 Unknown",
             "%result = OpImageSampleDrefImplicitLod %float "
             "%sampled_image %coords123 %depth ConstOffset %offsets2d",
-            R"([[group(0), binding(0)]] var x_10 : sampler_comparison;
+            R"(@group(0) @binding(0) var x_10 : sampler_comparison;
 
-[[group(2), binding(1)]] var x_20 : texture_depth_2d_array;)",
+@group(2) @binding(1) var x_20 : texture_depth_2d_array;)",
             R"(textureSampleCompare(x_20, x_10, coords123.xy, i32(round(coords123.z)), 0.200000003, vec2<i32>(3, 4)))"}));
 
 INSTANTIATE_TEST_SUITE_P(
@@ -1968,9 +1964,9 @@
             "%float 2D 1 0 0 1 Unknown",
             "%result = OpImageSampleDrefExplicitLod "
             "%float %sampled_image %coords12 %depth Lod %float_0",
-            R"([[group(0), binding(0)]] var x_10 : sampler_comparison;
+            R"(@group(0) @binding(0) var x_10 : sampler_comparison;
 
-[[group(2), binding(1)]] var x_20 : texture_depth_2d;
+@group(2) @binding(1) var x_20 : texture_depth_2d;
 )",
             R"(textureSampleCompareLevel(x_20, x_10, coords12, 0.200000003))"},
         // 2D array
@@ -1978,9 +1974,9 @@
             "%float 2D 1 1 0 1 Unknown",
             "%result = OpImageSampleDrefExplicitLod "
             "%float %sampled_image %coords123 %depth Lod %float_0",
-            R"([[group(0), binding(0)]] var x_10 : sampler_comparison;
+            R"(@group(0) @binding(0) var x_10 : sampler_comparison;
 
-[[group(2), binding(1)]] var x_20 : texture_depth_2d_array;)",
+@group(2) @binding(1) var x_20 : texture_depth_2d_array;)",
             R"(textureSampleCompareLevel(x_20, x_10, coords123.xy, i32(round(coords123.z)), 0.200000003))"},
         // 2D, ConstOffset
         ImageAccessCase{
@@ -1988,9 +1984,9 @@
             "%result = OpImageSampleDrefExplicitLod %float "
             "%sampled_image %coords12 %depth Lod|ConstOffset "
             "%float_0 %offsets2d",
-            R"([[group(0), binding(0)]] var x_10 : sampler_comparison;
+            R"(@group(0) @binding(0) var x_10 : sampler_comparison;
 
-[[group(2), binding(1)]] var x_20 : texture_depth_2d;
+@group(2) @binding(1) var x_20 : texture_depth_2d;
 )",
             R"(textureSampleCompareLevel(x_20, x_10, coords12, 0.200000003, vec2<i32>(3, 4)))"},
         // 2D array, ConstOffset
@@ -1999,27 +1995,27 @@
             "%result = OpImageSampleDrefExplicitLod %float "
             "%sampled_image %coords123 %depth Lod|ConstOffset "
             "%float_0 %offsets2d",
-            R"([[group(0), binding(0)]] var x_10 : sampler_comparison;
+            R"(@group(0) @binding(0) var x_10 : sampler_comparison;
 
-[[group(2), binding(1)]] var x_20 : texture_depth_2d_array;)",
+@group(2) @binding(1) var x_20 : texture_depth_2d_array;)",
             R"(textureSampleCompareLevel(x_20, x_10, coords123.xy, i32(round(coords123.z)), 0.200000003, vec2<i32>(3, 4)))"},
         // Cube
         ImageAccessCase{
             "%float Cube 1 0 0 1 Unknown",
             "%result = OpImageSampleDrefExplicitLod "
             "%float %sampled_image %coords123 %depth Lod %float_0",
-            R"([[group(0), binding(0)]] var x_10 : sampler_comparison;
+            R"(@group(0) @binding(0) var x_10 : sampler_comparison;
 
-[[group(2), binding(1)]] var x_20 : texture_depth_cube;)",
+@group(2) @binding(1) var x_20 : texture_depth_cube;)",
             R"(textureSampleCompareLevel(x_20, x_10, coords123, 0.200000003))"},
         // Cube array
         ImageAccessCase{
             "%float Cube 1 1 0 1 Unknown",
             "%result = OpImageSampleDrefExplicitLod "
             "%float %sampled_image %coords1234 %depth Lod %float_0",
-            R"([[group(0), binding(0)]] var x_10 : sampler_comparison;
+            R"(@group(0) @binding(0) var x_10 : sampler_comparison;
 
-[[group(2), binding(1)]] var x_20 : texture_depth_cube_array;)",
+@group(2) @binding(1) var x_20 : texture_depth_cube_array;)",
             R"(textureSampleCompareLevel(x_20, x_10, coords1234.xyz, i32(round(coords1234.w)), 0.200000003))"}));
 
 INSTANTIATE_TEST_SUITE_P(
@@ -2031,9 +2027,9 @@
         ImageAccessCase{"%float 2D 0 0 0 1 Unknown",
                         "%result = OpImageSampleExplicitLod "
                         "%v4float %sampled_image %coords12 Lod %float_null",
-                        R"([[group(0), binding(0)]] var x_10 : sampler;
+                        R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_2d<f32>;)",
+@group(2) @binding(1) var x_20 : texture_2d<f32>;)",
                         R"(textureSampleLevel(x_20, x_10, coords12, 0.0))"},
 
         // OpImageSampleExplicitLod arrayed - using Lod
@@ -2041,9 +2037,9 @@
             "%float 2D 0 1 0 1 Unknown",
             "%result = OpImageSampleExplicitLod "
             "%v4float %sampled_image %coords123 Lod %float_null",
-            R"([[group(0), binding(0)]] var x_10 : sampler;
+            R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_2d_array<f32>;)",
+@group(2) @binding(1) var x_20 : texture_2d_array<f32>;)",
             R"(textureSampleLevel(x_20, x_10, coords123.xy, i32(round(coords123.z)), 0.0))"},
 
         // OpImageSampleExplicitLod - using Lod and ConstOffset
@@ -2052,9 +2048,9 @@
             "%result = OpImageSampleExplicitLod "
             "%v4float %sampled_image %coords12 Lod|ConstOffset "
             "%float_null %offsets2d",
-            R"([[group(0), binding(0)]] var x_10 : sampler;
+            R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_2d<f32>;)",
+@group(2) @binding(1) var x_20 : texture_2d<f32>;)",
             R"(textureSampleLevel(x_20, x_10, coords12, 0.0, vec2<i32>(3, 4)))"},
 
         // OpImageSampleExplicitLod - using Lod and unsigned ConstOffset
@@ -2064,9 +2060,9 @@
             "%result = OpImageSampleExplicitLod "
             "%v4float %sampled_image %coords12 Lod|ConstOffset "
             "%float_null %u_offsets2d",
-            R"([[group(0), binding(0)]] var x_10 : sampler;
+            R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_2d<f32>;)",
+@group(2) @binding(1) var x_20 : texture_2d<f32>;)",
             R"(textureSampleLevel(x_20, x_10, coords12, 0.0, vec2<i32>(vec2<u32>(3u, 4u)))"},
 
         // OpImageSampleExplicitLod arrayed - using Lod and ConstOffset
@@ -2075,9 +2071,9 @@
             "%result = OpImageSampleExplicitLod "
             "%v4float %sampled_image %coords123 Lod|ConstOffset "
             "%float_null %offsets2d",
-            R"([[group(0), binding(0)]] var x_10 : sampler;
+            R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_2d_array<f32>;)",
+@group(2) @binding(1) var x_20 : texture_2d_array<f32>;)",
             R"(textureSampleLevel(x_20, x_10, coords123.xy, i32(round(coords123.z)), 0.0, vec2<i32>(3, 4)))"}));
 
 INSTANTIATE_TEST_SUITE_P(
@@ -2090,9 +2086,9 @@
             "%float 2D 0 0 0 1 Unknown",
             "%result = OpImageSampleExplicitLod "
             "%v4float %sampled_image %coords12 Grad %vf12 %vf21",
-            R"([[group(0), binding(0)]] var x_10 : sampler;
+            R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_2d<f32>;)",
+@group(2) @binding(1) var x_20 : texture_2d<f32>;)",
             R"(textureSampleGrad(x_20, x_10, coords12, vf12, vf21))"},
 
         // OpImageSampleExplicitLod arrayed - using Grad
@@ -2100,9 +2096,9 @@
             "%float 2D 0 1 0 1 Unknown",
             "%result = OpImageSampleExplicitLod "
             "%v4float %sampled_image %coords123 Grad %vf12 %vf21",
-            R"([[group(0), binding(0)]] var x_10 : sampler;
+            R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_2d_array<f32>;)",
+@group(2) @binding(1) var x_20 : texture_2d_array<f32>;)",
             R"(textureSampleGrad(x_20, x_10, coords123.xy, i32(round(coords123.z)), vf12, vf21))"},
 
         // OpImageSampleExplicitLod - using Grad and ConstOffset
@@ -2111,9 +2107,9 @@
             "%result = OpImageSampleExplicitLod "
             "%v4float %sampled_image %coords12 Grad|ConstOffset "
             "%vf12 %vf21 %offsets2d",
-            R"([[group(0), binding(0)]] var x_10 : sampler;
+            R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_2d<f32>;)",
+@group(2) @binding(1) var x_20 : texture_2d<f32>;)",
             R"(textureSampleGrad(x_20, x_10, coords12, vf12, vf21, vec2<i32>(3, 4)))"},
 
         // OpImageSampleExplicitLod - using Grad and unsigned ConstOffset
@@ -2122,9 +2118,9 @@
             "%result = OpImageSampleExplicitLod "
             "%v4float %sampled_image %coords12 Grad|ConstOffset "
             "%vf12 %vf21 %u_offsets2d",
-            R"([[group(0), binding(0)]] var x_10 : sampler;
+            R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_2d<f32>;)",
+@group(2) @binding(1) var x_20 : texture_2d<f32>;)",
             R"(textureSampleGrad(x_20, x_10, coords12, vf12, vf21, vec2<i32>(vec2<u32>(3u, 4u)))"},
 
         // OpImageSampleExplicitLod arrayed - using Grad and ConstOffset
@@ -2133,9 +2129,9 @@
             "%result = OpImageSampleExplicitLod "
             "%v4float %sampled_image %coords123 Grad|ConstOffset "
             "%vf12 %vf21 %offsets2d",
-            R"([[group(0), binding(0)]] var x_10 : sampler;
+            R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_2d_array<f32>;)",
+@group(2) @binding(1) var x_20 : texture_2d_array<f32>;)",
             R"(textureSampleGrad(x_20, x_10, coords123.xy, i32(round(coords123.z)), vf12, vf21, vec2<i32>(3, 4)))"},
 
         // OpImageSampleExplicitLod arrayed - using Grad and unsigned
@@ -2145,9 +2141,9 @@
             "%result = OpImageSampleExplicitLod "
             "%v4float %sampled_image %coords123 Grad|ConstOffset "
             "%vf12 %vf21 %u_offsets2d",
-            R"([[group(0), binding(0)]] var x_10 : sampler;
+            R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_2d_array<f32>;)",
+@group(2) @binding(1) var x_20 : texture_2d_array<f32>;)",
             R"(textureSampleGrad(x_20, x_10, coords123.xy, i32(round(coords123.z)), vf12, vf21, vec2<i32>(vec2<u32>(3u, 4u))))"}));
 
 // Test crbug.com/378:
@@ -2164,17 +2160,17 @@
         {"%float 2D 0 0 0 1 Unknown",
          "%result = OpImageSampleExplicitLod %v4float "
          "%sampled_image %vf12 Lod %f1",
-         R"([[group(0), binding(0)]] var x_10 : sampler;
+         R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_2d<f32>;)",
+@group(2) @binding(1) var x_20 : texture_2d<f32>;)",
          R"(textureSampleLevel(x_20, x_10, vf12, f1))"},
         // Test a depth case
         {"%float 2D 1 0 0 1 Unknown",
          "%result = OpImageSampleExplicitLod %v4float "
          "%sampled_image %vf12 Lod %f1",
-         R"([[group(0), binding(0)]] var x_10 : sampler;
+         R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_depth_2d;
+@group(2) @binding(1) var x_20 : texture_depth_2d;
 )",
          R"(vec4<f32>(textureSampleLevel(x_20, x_10, vf12, i32(f1)), 0.0, 0.0, 0.0))"}}));
 
@@ -2213,9 +2209,9 @@
             "%float 1D 0 0 0 1 Unknown",
             "%result = OpImageSampleProjImplicitLod "
             "%v4float %sampled_image %coords12",
-            R"([[group(0), binding(0)]] var x_10 : sampler;
+            R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_1d<f32>;)",
+@group(2) @binding(1) var x_20 : texture_1d<f32>;)",
             R"(textureSample(x_20, x_10, (coords12.x / coords12.y)))"},
 
         // OpImageSampleProjImplicitLod 2D
@@ -2223,9 +2219,9 @@
             "%float 2D 0 0 0 1 Unknown",
             "%result = OpImageSampleProjImplicitLod "
             "%v4float %sampled_image %coords123",
-            R"([[group(0), binding(0)]] var x_10 : sampler;
+            R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_2d<f32>;)",
+@group(2) @binding(1) var x_20 : texture_2d<f32>;)",
             R"(textureSample(x_20, x_10, (coords123.xy / coords123.z)))"},
 
         // OpImageSampleProjImplicitLod 3D
@@ -2233,9 +2229,9 @@
             "%float 3D 0 0 0 1 Unknown",
             "%result = OpImageSampleProjImplicitLod "
             "%v4float %sampled_image %coords1234",
-            R"([[group(0), binding(0)]] var x_10 : sampler;
+            R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_3d<f32>;)",
+@group(2) @binding(1) var x_20 : texture_3d<f32>;)",
             R"(textureSample(x_20, x_10, (coords1234.xyz / coords1234.w)))"},
 
         // OpImageSampleProjImplicitLod 2D with ConstOffset
@@ -2245,9 +2241,9 @@
             "%float 2D 0 0 0 1 Unknown",
             "%result = OpImageSampleProjImplicitLod "
             "%v4float %sampled_image %coords123 ConstOffset %offsets2d",
-            R"([[group(0), binding(0)]] var x_10 : sampler;
+            R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_2d<f32>;)",
+@group(2) @binding(1) var x_20 : texture_2d<f32>;)",
             R"(textureSample(x_20, x_10, (coords123.xy / coords123.z), vec2<i32>(3, 4)))"}));
 
 INSTANTIATE_TEST_SUITE_P(
@@ -2261,9 +2257,9 @@
             "%float 2D 0 0 0 1 Unknown",
             "%result = OpImageSampleProjImplicitLod "
             "%v4float %sampled_image %coords123 Bias %float_7",
-            R"([[group(0), binding(0)]] var x_10 : sampler;
+            R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_2d<f32>;)",
+@group(2) @binding(1) var x_20 : texture_2d<f32>;)",
             R"(textureSampleBias(x_20, x_10, (coords123.xy / coords123.z), 7.0))"},
 
         // OpImageSampleProjImplicitLod with Bias and signed ConstOffset
@@ -2272,9 +2268,9 @@
             "%result = OpImageSampleProjImplicitLod "
             "%v4float %sampled_image %coords123 Bias|ConstOffset "
             "%float_7 %offsets2d",
-            R"([[group(0), binding(0)]] var x_10 : sampler;
+            R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_2d<f32>;)",
+@group(2) @binding(1) var x_20 : texture_2d<f32>;)",
             R"(textureSampleBias(x_20, x_10, (coords123.xy / coords123.z), 7.0, vec2<i32>(3, 4)))"},
 
         // OpImageSampleProjImplicitLod with Bias and unsigned ConstOffset
@@ -2284,9 +2280,9 @@
             "%result = OpImageSampleProjImplicitLod "
             "%v4float %sampled_image %coords123 Bias|ConstOffset "
             "%float_7 %u_offsets2d",
-            R"([[group(0), binding(0)]] var x_10 : sampler;
+            R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_2d<f32>;)",
+@group(2) @binding(1) var x_20 : texture_2d<f32>;)",
             R"(textureSampleBias(x_20, x_10, (coords123.xy / coords123.z), 7.0, vec2<i32>(vec2<u32>(3u, 4u))))"}));
 
 INSTANTIATE_TEST_SUITE_P(
@@ -2298,9 +2294,9 @@
             "%float 2D 0 0 0 1 Unknown",
             "%result = OpImageSampleProjExplicitLod "
             "%v4float %sampled_image %coords123 Lod %f1",
-            R"([[group(0), binding(0)]] var x_10 : sampler;
+            R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_2d<f32>;)",
+@group(2) @binding(1) var x_20 : texture_2d<f32>;)",
             R"(textureSampleLevel(x_20, x_10, (coords123.xy / coords123.z), f1))"},
 
         // OpImageSampleProjExplicitLod 2D Lod with ConstOffset
@@ -2308,9 +2304,9 @@
             "%float 2D 0 0 0 1 Unknown",
             "%result = OpImageSampleProjExplicitLod "
             "%v4float %sampled_image %coords123 Lod|ConstOffset %f1 %offsets2d",
-            R"([[group(0), binding(0)]] var x_10 : sampler;
+            R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_2d<f32>;)",
+@group(2) @binding(1) var x_20 : texture_2d<f32>;)",
             R"(textureSampleLevel(x_20, x_10, (coords123.xy / coords123.z), f1, vec2<i32>(3, 4)))"}));
 
 INSTANTIATE_TEST_SUITE_P(
@@ -2322,9 +2318,9 @@
             "%float 2D 0 0 0 1 Unknown",
             "%result = OpImageSampleProjExplicitLod "
             "%v4float %sampled_image %coords123 Grad %vf12 %vf21",
-            R"([[group(0), binding(0)]] var x_10 : sampler;
+            R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_2d<f32>;)",
+@group(2) @binding(1) var x_20 : texture_2d<f32>;)",
             R"(textureSampleGrad(x_20, x_10, (coords123.xy / coords123.z), vf12, vf21))"},
 
         // OpImageSampleProjExplicitLod 2D Lod Grad ConstOffset
@@ -2333,9 +2329,9 @@
             "%result = OpImageSampleProjExplicitLod "
             "%v4float %sampled_image %coords123 Grad|ConstOffset "
             "%vf12 %vf21 %offsets2d",
-            R"([[group(0), binding(0)]] var x_10 : sampler;
+            R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_2d<f32>;)",
+@group(2) @binding(1) var x_20 : texture_2d<f32>;)",
             R"(textureSampleGrad(x_20, x_10, (coords123.xy / coords123.z), vf12, vf21, vec2<i32>(3, 4)))"}));
 
 INSTANTIATE_TEST_SUITE_P(
@@ -2348,9 +2344,9 @@
             "%float 2D 1 0 0 1 Unknown",
             "%result = OpImageSampleProjImplicitLod "
             "%v4float %sampled_image %coords123",
-            R"([[group(0), binding(0)]] var x_10 : sampler;
+            R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_depth_2d;
+@group(2) @binding(1) var x_20 : texture_depth_2d;
 )",
             // Sampling the depth texture yields an f32, but the
             // SPIR-V operation yiedls vec4<f32>, so fill out the
@@ -2367,9 +2363,9 @@
             "%float 2D 1 0 0 1 Unknown",
             "%result = OpImageSampleProjDrefImplicitLod "
             "%float %sampled_image %coords123 %f1",
-            R"([[group(0), binding(0)]] var x_10 : sampler_comparison;
+            R"(@group(0) @binding(0) var x_10 : sampler_comparison;
 
-[[group(2), binding(1)]] var x_20 : texture_depth_2d;
+@group(2) @binding(1) var x_20 : texture_depth_2d;
 )",
             R"(textureSampleCompare(x_20, x_10, (coords123.xy / coords123.z), f1))"},
 
@@ -2378,9 +2374,9 @@
             "%float 2D 1 0 0 1 Unknown",
             "%result = OpImageSampleProjDrefImplicitLod "
             "%float %sampled_image %coords123 %f1 ConstOffset %offsets2d",
-            R"([[group(0), binding(0)]] var x_10 : sampler_comparison;
+            R"(@group(0) @binding(0) var x_10 : sampler_comparison;
 
-[[group(2), binding(1)]] var x_20 : texture_depth_2d;
+@group(2) @binding(1) var x_20 : texture_depth_2d;
 )",
             R"(textureSampleCompare(x_20, x_10, (coords123.xy / coords123.z), f1, vec2<i32>(3, 4)))"}));
 
@@ -2397,9 +2393,9 @@
             "%float 2D 1 0 0 1 Unknown",
             "%result = OpImageSampleProjDrefExplicitLod "
             "%float %sampled_image %coords123 %depth Lod %float_0",
-            R"([[group(0), binding(0)]] var x_10 : sampler_comparison;
+            R"(@group(0) @binding(0) var x_10 : sampler_comparison;
 
-[[group(2), binding(1)]] var x_20 : texture_depth_2d;
+@group(2) @binding(1) var x_20 : texture_depth_2d;
 )",
             R"(textureSampleCompare(x_20, x_10, (coords123.xy / coords123.z), 0.200000003, 0.0))"},
 
@@ -2409,9 +2405,9 @@
             "%result = OpImageSampleProjDrefExplicitLod "
             "%float %sampled_image %coords123 %depth "
             "Lod|ConstOffset %float_0 %offsets2d",
-            R"([[group(0), binding(0)]] var x_10 : sampler_comparison;
+            R"(@group(0) @binding(0) var x_10 : sampler_comparison;
 
-[[group(2), binding(1)]] var x_20 : texture_depth_2d;
+@group(2) @binding(1) var x_20 : texture_depth_2d;
 )",
             R"(textureSampleCompareLevel(x_20, x_10, (coords123.xy / coords123.z), 0.200000003, 0.0, vec2<i32>(3, 4)))"}));
 
@@ -2492,7 +2488,7 @@
                              // OpImageWrite with no extra params
                              {"%float 2D 0 0 0 2 Rgba32f",
                               "OpImageWrite %im %vi12 %vf1234",
-                              "[[group(2), binding(1)]] var x_20 : "
+                              "@group(2) @binding(1) var x_20 : "
                               "texture_storage_2d<rgba32float, write>;",
                               "textureStore(x_20, vi12, vf1234);"}}));
 
@@ -2507,36 +2503,36 @@
     ::testing::ValuesIn(std::vector<ImageAccessCase>{
         // Source 1 component
         {"%float 2D 0 0 0 2 R32f", "OpImageWrite %im %vi12 %f1",
-         R"([[group(2), binding(1)]] var x_20 : texture_storage_2d<r32float, write>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_storage_2d<r32float, write>;)",
          "textureStore(x_20, vi12, vec4<f32>(f1, 0.0, 0.0, 0.0));"},
         // Source 2 component, dest 1 component
         {"%float 2D 0 0 0 2 R32f", "OpImageWrite %im %vi12 %vf12",
-         R"([[group(2), binding(1)]] var x_20 : texture_storage_2d<r32float, write>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_storage_2d<r32float, write>;)",
          "textureStore(x_20, vi12, vec4<f32>(vf12, 0.0, 0.0));"},
         // Source 3 component, dest 1 component
         {"%float 2D 0 0 0 2 R32f", "OpImageWrite %im %vi12 %vf123",
-         R"([[group(2), binding(1)]] var x_20 : texture_storage_2d<r32float, write>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_storage_2d<r32float, write>;)",
          "textureStore(x_20, vi12, vec4<f32>(vf123, 0.0));"},
         // Source 4 component, dest 1 component
         {"%float 2D 0 0 0 2 R32f", "OpImageWrite %im %vi12 %vf1234",
-         R"([[group(2), binding(1)]] var x_20 : texture_storage_2d<r32float, write>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_storage_2d<r32float, write>;)",
          "textureStore(x_20, vi12, vf1234);"},
         // Source 2 component, dest 2 component
         {"%float 2D 0 0 0 2 Rg32f", "OpImageWrite %im %vi12 %vf12",
-         R"([[group(2), binding(1)]] var x_20 : texture_storage_2d<rg32float, write>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_storage_2d<rg32float, write>;)",
          "textureStore(x_20, vi12, vec4<f32>(vf12, 0.0, 0.0));"},
         // Source 3 component, dest 2 component
         {"%float 2D 0 0 0 2 Rg32f", "OpImageWrite %im %vi12 %vf123",
-         R"([[group(2), binding(1)]] var x_20 : texture_storage_2d<rg32float, write>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_storage_2d<rg32float, write>;)",
          "textureStore(x_20, vi12, vec4<f32>(vf123, 0.0));"},
         // Source 4 component, dest 2 component
         {"%float 2D 0 0 0 2 Rg32f", "OpImageWrite %im %vi12 %vf1234",
-         R"([[group(2), binding(1)]] var x_20 : texture_storage_2d<rg32float, write>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_storage_2d<rg32float, write>;)",
          "textureStore(x_20, vi12, vf1234);"},
         // WGSL does not support 3-component storage textures.
         // Source 4 component, dest 4 component
         {"%float 2D 0 0 0 2 Rgba32f", "OpImageWrite %im %vi12 %vf1234",
-         "[[group(2), binding(1)]] var x_20 : "
+         "@group(2) @binding(1) var x_20 : "
          "texture_storage_2d<rgba32float, write>;",
          "textureStore(x_20, vi12, vf1234);"}}));
 
@@ -2617,11 +2613,11 @@
     ::testing::ValuesIn(std::vector<ImageAccessCase>{
         // Sampled type is unsigned int, texel is unsigned int
         {"%uint 2D 0 0 0 2 Rgba32ui", "OpImageWrite %im %vi12 %vu1234",
-         R"([[group(2), binding(1)]] var x_20 : texture_storage_2d<rgba32uint, write>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_storage_2d<rgba32uint, write>;)",
          R"(textureStore(x_20, vi12, vu1234))"},
         // Sampled type is signed int, texel is signed int
         {"%int 2D 0 0 0 2 Rgba32i", "OpImageWrite %im %vi12 %vi1234",
-         R"([[group(2), binding(1)]] var x_20 : texture_storage_2d<rgba32sint, write>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_storage_2d<rgba32sint, write>;)",
          R"(textureStore(x_20, vi12, vi1234))"}}));
 
 INSTANTIATE_TEST_SUITE_P(
@@ -2635,25 +2631,25 @@
          "invalid texel type for storage texture write: component must be "
          "float, signed integer, or unsigned integer to match the texture "
          "channel type: OpImageWrite",
-         R"([[group(2), binding(1)]] var x_20 : texture_storage_2d<rgba32float, write>;)"},
+         R"(@group(2) @binding(1) var x_20 : texture_storage_2d<rgba32float, write>;)"},
         // Sampled type is float, texel is unsigned int
         {"%int 2D 0 0 0 2 Rgba32f", "OpImageWrite %im %vi12 %vu1234",
          "invalid texel type for storage texture write: component must be "
          "float, signed integer, or unsigned integer to match the texture "
          "channel type: OpImageWrite",
-         R"([[group(2), binding(1)]] var x_20 : texture_storage_2d<rgba32float, write>;)"},
+         R"(@group(2) @binding(1) var x_20 : texture_storage_2d<rgba32float, write>;)"},
         // Sampled type is unsigned int, texel is float
         {"%uint 2D 0 0 0 2 Rgba32ui", "OpImageWrite %im %vi12 %vf1234",
          "invalid texel type for storage texture write: component must be "
          "float, signed integer, or unsigned integer to match the texture "
          "channel type: OpImageWrite",
-         R"([[group(2), binding(1)]] var x_20 : texture_storage_2d<rgba32uint, write>;)"},
+         R"(@group(2) @binding(1) var x_20 : texture_storage_2d<rgba32uint, write>;)"},
         // Sampled type is signed int, texel is float
         {"%int 2D 0 0 0 2 Rgba32i", "OpImageWrite %im %vi12 %vf1234",
          "invalid texel type for storage texture write: component must be "
          "float, signed integer, or unsigned integer to match the texture "
          "channel type: OpImageWrite",
-         R"([[group(2), binding(1)]] var x_20 : texture_storage_2d<rgba32sint, write>;
+         R"(@group(2) @binding(1) var x_20 : texture_storage_2d<rgba32sint, write>;
   })"}}));
 
 INSTANTIATE_TEST_SUITE_P(
@@ -2667,13 +2663,13 @@
          "invalid texel type for storage texture write: component must be "
          "float, signed integer, or unsigned integer to match the texture "
          "channel type: OpImageWrite",
-         R"([[group(2), binding(1)]] var x_20 : texture_storage_2d<rgba32uint, write>;)"},
+         R"(@group(2) @binding(1) var x_20 : texture_storage_2d<rgba32uint, write>;)"},
         // Sampled type is signed int, texel is unsigned int
         {"%int 2D 0 0 0 2 Rgba32i", "OpImageWrite %im %vi12 %vu1234",
          "invalid texel type for storage texture write: component must be "
          "float, signed integer, or unsigned integer to match the texture "
          "channel type: OpImageWrite",
-         R"([[group(2), binding(1)]] var x_20 : texture_storage_2d<rgba32sint, write>;
+         R"(@group(2) @binding(1) var x_20 : texture_storage_2d<rgba32sint, write>;
   })"}}));
 
 INSTANTIATE_TEST_SUITE_P(
@@ -2684,11 +2680,11 @@
     ::testing::ValuesIn(std::vector<ImageAccessCase>{
         // Source unsigned, dest unsigned
         {"%uint 2D 0 0 0 2 R32ui", "OpImageWrite %im %vi12 %vu12",
-         R"([[group(2), binding(1)]] var x_20 : texture_storage_2d<r32uint, write>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_storage_2d<r32uint, write>;)",
          R"(textureStore(x_20, vi12, vec4<u32>(vu12, 0u, 0u)))"},
         // Source signed, dest signed
         {"%int 2D 0 0 0 2 R32i", "OpImageWrite %im %vi12 %vi12",
-         R"([[group(2), binding(1)]] var x_20 : texture_storage_2d<r32sint, write>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_storage_2d<r32sint, write>;)",
          R"(textureStore(x_20, vi12, vec4<i32>(vi12, 0, 0)))"}}));
 
 INSTANTIATE_TEST_SUITE_P(
@@ -2698,22 +2694,22 @@
         // OpImageFetch with no extra params, on sampled texture
         // Level of detail is injected for sampled texture
         {"%float 2D 0 0 0 1 Unknown", "%99 = OpImageFetch %v4float %im %vi12",
-         R"([[group(2), binding(1)]] var x_20 : texture_2d<f32>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_2d<f32>;)",
          R"(let x_99 : vec4<f32> = textureLoad(x_20, vi12, 0);)"},
         // OpImageFetch with explicit level, on sampled texture
         {"%float 2D 0 0 0 1 Unknown",
          "%99 = OpImageFetch %v4float %im %vi12 Lod %int_3",
-         R"([[group(2), binding(1)]] var x_20 : texture_2d<f32>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_2d<f32>;)",
          R"(let x_99 : vec4<f32> = textureLoad(x_20, vi12, 3);)"},
         // OpImageFetch with no extra params, on depth texture
         // Level of detail is injected for depth texture
         {"%float 2D 1 0 0 1 Unknown", "%99 = OpImageFetch %v4float %im %vi12",
-         R"([[group(2), binding(1)]] var x_20 : texture_depth_2d;)",
+         R"(@group(2) @binding(1) var x_20 : texture_depth_2d;)",
          R"(let x_99 : vec4<f32> = vec4<f32>(textureLoad(x_20, vi12, 0), 0.0, 0.0, 0.0);)"},
         // OpImageFetch with extra params, on depth texture
         {"%float 2D 1 0 0 1 Unknown",
          "%99 = OpImageFetch %v4float %im %vi12 Lod %int_3",
-         R"([[group(2), binding(1)]] var x_20 : texture_depth_2d;)",
+         R"(@group(2) @binding(1) var x_20 : texture_depth_2d;)",
          R"(let x_99 : vec4<f32> = vec4<f32>(textureLoad(x_20, vi12, 3), 0.0, 0.0, 0.0);)"}}));
 
 INSTANTIATE_TEST_SUITE_P(
@@ -2726,7 +2722,7 @@
     ::testing::ValuesIn(std::vector<ImageAccessCase>{
         // ImageFetch on depth image.
         {"%float 2D 1 0 0 1 Unknown", "%99 = OpImageFetch %v4float %im %vi12 ",
-         R"([[group(2), binding(1)]] var x_20 : texture_depth_2d;)",
+         R"(@group(2) @binding(1) var x_20 : texture_depth_2d;)",
          R"(let x_99 : vec4<f32> = vec4<f32>(textureLoad(x_20, vi12, 0), 0.0, 0.0, 0.0);)"}}));
 
 INSTANTIATE_TEST_SUITE_P(
@@ -2740,7 +2736,7 @@
         // ImageFetch on multisampled depth image.
         {"%float 2D 1 0 1 1 Unknown",
          "%99 = OpImageFetch %v4float %im %vi12 Sample %i1",
-         R"([[group(2), binding(1)]] var x_20 : texture_depth_multisampled_2d;)",
+         R"(@group(2) @binding(1) var x_20 : texture_depth_multisampled_2d;)",
          R"(let x_99 : vec4<f32> = vec4<f32>(textureLoad(x_20, vi12, i1), 0.0, 0.0, 0.0);)"}}));
 
 INSTANTIATE_TEST_SUITE_P(
@@ -2756,7 +2752,7 @@
         // ImageFetch non-arrayed
         {"%float 2D 0 0 1 1 Unknown",
          "%99 = OpImageFetch %v4float %im %vi12 Sample %i1",
-         R"([[group(2), binding(1)]] var x_20 : texture_multisampled_2d<f32>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_multisampled_2d<f32>;)",
          R"(let x_99 : vec4<f32> = textureLoad(x_20, vi12, i1);)"}}));
 
 INSTANTIATE_TEST_SUITE_P(
@@ -2765,7 +2761,7 @@
     ::testing::ValuesIn(std::vector<ImageAccessCase>{
         {"%float 2D 0 0 1 1 Unknown",
          "%99 = OpImageFetch %v4float %im %vi12 Sample %u1",
-         R"([[group(2), binding(1)]] var x_20 : texture_multisampled_2d<f32>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_multisampled_2d<f32>;)",
          R"(let x_99 : vec4<f32> = textureLoad(x_20, vi12, i32(u1));)"}}));
 
 INSTANTIATE_TEST_SUITE_P(
@@ -2788,11 +2784,11 @@
 
         // OpImageFetch requires no conversion, float -> v4float
         {"%float 2D 0 0 0 1 Unknown", "%99 = OpImageFetch %v4float %im %vi12",
-         R"([[group(2), binding(1)]] var x_20 : texture_2d<f32>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_2d<f32>;)",
          R"(let x_99 : vec4<f32> = textureLoad(x_20, vi12, 0);)"},
         // OpImageFetch requires no conversion, uint -> v4uint
         {"%uint 2D 0 0 0 1 Unknown", "%99 = OpImageFetch %v4uint %im %vi12",
-         R"([[group(2), binding(1)]] var x_20 : texture_2d<u32>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_2d<u32>;)",
          R"(let x_99 : vec4<u32> = textureLoad(x_20, vi12, 0);)"},
         // OpImageFetch requires conversion, uint -> v4int
         // is invalid SPIR-V:
@@ -2801,7 +2797,7 @@
 
         // OpImageFetch requires no conversion, int -> v4int
         {"%int 2D 0 0 0 1 Unknown", "%99 = OpImageFetch %v4int %im %vi12",
-         R"([[group(2), binding(1)]] var x_20 : texture_2d<i32>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_2d<i32>;)",
          R"(let x_99 : vec4<i32> = textureLoad(x_20, vi12, 0);)"},
         // OpImageFetch requires conversion, int -> v4uint
         // is invalid SPIR-V:
@@ -2814,11 +2810,11 @@
 
         // OpImageRead requires no conversion, float -> v4float
         {"%float 2D 0 0 0 2 Rgba32f", "%99 = OpImageRead %v4float %im %vi12",
-         R"([[group(2), binding(1)]] var x_20 : texture_2d<f32>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_2d<f32>;)",
          R"(let x_99 : vec4<f32> = textureLoad(x_20, vi12, 0);)"},
         // OpImageRead requires no conversion, uint -> v4uint
         {"%uint 2D 0 0 0 2 Rgba32ui", "%99 = OpImageRead %v4uint %im %vi12",
-         R"([[group(2), binding(1)]] var x_20 : texture_2d<u32>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_2d<u32>;)",
          R"(let x_99 : vec4<u32> = textureLoad(x_20, vi12, 0);)"},
 
         // OpImageRead requires conversion, uint -> v4int
@@ -2828,7 +2824,7 @@
 
         // OpImageRead requires no conversion, int -> v4int
         {"%int 2D 0 0 0 2 Rgba32i", "%99 = OpImageRead %v4int %im %vi12",
-         R"([[group(2), binding(1)]] var x_20 : texture_2d<i32>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_2d<i32>;)",
          R"(let x_99 : vec4<i32> = textureLoad(x_20, vi12, 0);)"},
 
         // OpImageRead requires conversion, int -> v4uint
@@ -2845,9 +2841,9 @@
         // OpImageSampleImplicitLod requires no conversion, float -> v4float
         {"%float 2D 0 0 0 1 Unknown",
          "%99 = OpImageSampleImplicitLod %v4float %sampled_image %vf12",
-         R"([[group(0), binding(0)]] var x_10 : sampler;
+         R"(@group(0) @binding(0) var x_10 : sampler;
 
-[[group(2), binding(1)]] var x_20 : texture_2d<f32>;)",
+@group(2) @binding(1) var x_20 : texture_2d<f32>;)",
          R"(let x_99 : vec4<f32> = textureSample(x_20, x_10, vf12);)"}}));
 
 INSTANTIATE_TEST_SUITE_P(
@@ -2862,26 +2858,26 @@
          "%99 = OpImageQuerySize %int %im \n"
          "%98 = OpImageRead %v4float %im %i1\n",  // Implicitly mark as
                                                   // NonWritable
-         R"([[group(2), binding(1)]] var x_20 : texture_1d<f32>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_1d<f32>;)",
          R"(let x_99 : i32 = i32(textureDimensions(x_20));)"},
         // 2D storage image
         {"%float 2D 0 0 0 2 Rgba32f",
          "%99 = OpImageQuerySize %v2int %im \n"
          "%98 = OpImageRead %v4float %im %vi12\n",  // Implicitly mark as
                                                     // NonWritable
-         R"([[group(2), binding(1)]] var x_20 : texture_2d<f32>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_2d<f32>;)",
          R"(let x_99 : vec2<i32> = vec2<i32>(textureDimensions(x_20))"},
         // 3D storage image
         {"%float 3D 0 0 0 2 Rgba32f",
          "%99 = OpImageQuerySize %v3int %im \n"
          "%98 = OpImageRead %v4float %im %vi123\n",  // Implicitly mark as
                                                      // NonWritable
-         R"([[group(2), binding(1)]] var x_20 : texture_3d<f32>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_3d<f32>;)",
          R"(let x_99 : vec3<i32> = vec3<i32>(textureDimensions(x_20));)"},
 
         // Multisampled
         {"%float 2D 0 0 1 1 Unknown", "%99 = OpImageQuerySize %v2int %im \n",
-         R"([[group(2), binding(1)]] var x_20 : texture_multisampled_2d<f32>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_multisampled_2d<f32>;)",
          R"(let x_99 : vec2<i32> = vec2<i32>(textureDimensions(x_20));)"}}));
 
 INSTANTIATE_TEST_SUITE_P(
@@ -2897,7 +2893,7 @@
         {"%float 2D 0 1 0 2 Rgba32f",
          "%99 = OpImageQuerySize %v3int %im \n"
          "%98 = OpImageRead %v4float %im %vi123\n",
-         R"([[group(2), binding(1)]] var x_20 : texture_2d_array<f32>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_2d_array<f32>;)",
          R"(let x_99 : vec3<i32> = vec3<i32>(textureDimensions(x_20), textureNumLayers(x_20));)"}
         // 3D array storage image doesn't exist.
 
@@ -2914,37 +2910,37 @@
         // 1D
         {"%float 1D 0 0 0 1 Unknown",
          "%99 = OpImageQuerySizeLod %int %im %i1\n",
-         R"([[group(2), binding(1)]] var x_20 : texture_1d<f32>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_1d<f32>;)",
          R"(let x_99 : i32 = i32(textureDimensions(x_20, i1)))"},
 
         // 2D
         {"%float 2D 0 0 0 1 Unknown",
          "%99 = OpImageQuerySizeLod %v2int %im %i1\n",
-         R"([[group(2), binding(1)]] var x_20 : texture_2d<f32>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_2d<f32>;)",
          R"(let x_99 : vec2<i32> = vec2<i32>(textureDimensions(x_20, i1));)"},
 
         // 3D
         {"%float 3D 0 0 0 1 Unknown",
          "%99 = OpImageQuerySizeLod %v3int %im %i1\n",
-         R"([[group(2), binding(1)]] var x_20 : texture_3d<f32>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_3d<f32>;)",
          R"(let x_99 : vec3<i32> = vec3<i32>(textureDimensions(x_20, i1));)"},
 
         // Cube
         {"%float Cube 0 0 0 1 Unknown",
          "%99 = OpImageQuerySizeLod %v2int %im %i1\n",
-         R"([[group(2), binding(1)]] var x_20 : texture_cube<f32>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_cube<f32>;)",
          R"(let x_99 : vec2<i32> = vec2<i32>(textureDimensions(x_20, i1).xy);)"},
 
         // Depth 2D
         {"%float 2D 1 0 0 1 Unknown",
          "%99 = OpImageQuerySizeLod %v2int %im %i1\n",
-         R"([[group(2), binding(1)]] var x_20 : texture_depth_2d;)",
+         R"(@group(2) @binding(1) var x_20 : texture_depth_2d;)",
          R"(let x_99 : vec2<i32> = vec2<i32>(textureDimensions(x_20, i1));)"},
 
         // Depth Cube
         {"%float Cube 1 0 0 1 Unknown",
          "%99 = OpImageQuerySizeLod %v2int %im %i1\n",
-         R"([[group(2), binding(1)]] var x_20 : texture_depth_cube;)",
+         R"(@group(2) @binding(1) var x_20 : texture_depth_cube;)",
          R"(let x_99 : vec2<i32> = vec2<i32>(textureDimensions(x_20, i1).xy);)"}}));
 
 INSTANTIATE_TEST_SUITE_P(
@@ -2960,7 +2956,7 @@
         // 2D array
         {"%float 2D 0 1 0 1 Unknown",
          "%99 = OpImageQuerySizeLod %v3int %im %i1\n",
-         R"([[group(2), binding(1)]] var x_20 : texture_2d_array<f32>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_2d_array<f32>;)",
          R"(let x_99 : vec3<i32> = vec3<i32>(textureDimensions(x_20, i1), textureNumLayers(x_20));)"},
 
         // There is no 3D array
@@ -2972,13 +2968,13 @@
         // https://github.com/gpuweb/gpuweb/issues/1345
         {"%float Cube 0 1 0 1 Unknown",
          "%99 = OpImageQuerySizeLod %v3int %im %i1\n",
-         R"([[group(2), binding(1)]] var x_20 : texture_cube_array<f32>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_cube_array<f32>;)",
          R"(let x_99 : vec3<i32> = vec3<i32>(textureDimensions(x_20, i1).xy, textureNumLayers(x_20));)"},
 
         // Depth 2D array
         {"%float 2D 1 1 0 1 Unknown",
          "%99 = OpImageQuerySizeLod %v3int %im %i1\n",
-         R"([[group(2), binding(1)]] var x_20 : texture_depth_2d_array;)",
+         R"(@group(2) @binding(1) var x_20 : texture_depth_2d_array;)",
          R"(let x_99 : vec3<i32> = vec3<i32>(textureDimensions(x_20, i1), textureNumLayers(x_20));)"},
 
         // Depth Cube Array
@@ -2988,7 +2984,7 @@
         // https://github.com/gpuweb/gpuweb/issues/1345
         {"%float Cube 1 1 0 1 Unknown",
          "%99 = OpImageQuerySizeLod %v3int %im %i1\n",
-         R"([[group(2), binding(1)]] var x_20 : texture_depth_cube_array;)",
+         R"(@group(2) @binding(1) var x_20 : texture_depth_cube_array;)",
          R"(let x_99 : vec3<i32> = vec3<i32>(textureDimensions(x_20, i1).xy, textureNumLayers(x_20));)"}}));
 
 INSTANTIATE_TEST_SUITE_P(
@@ -3001,7 +2997,7 @@
 
         {"%float 1D 0 0 0 1 Unknown",
          "%99 = OpImageQuerySizeLod %int %im %u1\n",
-         R"([[group(2), binding(1)]] var x_20 : texture_1d<f32>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_1d<f32>;)",
          R"(let x_99 : i32 = i32(textureDimensions(x_20, i32(u1)));)"}}));
 
 INSTANTIATE_TEST_SUITE_P(
@@ -3015,7 +3011,7 @@
 
         {"%float 1D 0 0 0 1 Unknown",
          "%99 = OpImageQuerySizeLod %uint %im %i1\n",
-         R"([[group(2), binding(1)]] var x_20 : texture_1d<f32>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_1d<f32>;)",
          R"(let x_99 : u32 = u32(textureDimensions(x_20, i1));)"}}));
 
 INSTANTIATE_TEST_SUITE_P(
@@ -3029,47 +3025,47 @@
 
         // 2D
         {"%float 2D 0 0 0 1 Unknown", "%99 = OpImageQueryLevels %int %im\n",
-         R"([[group(2), binding(1)]] var x_20 : texture_2d<f32>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_2d<f32>;)",
          R"(let x_99 : i32 = textureNumLevels(x_20);)"},
 
         // 2D array
         {"%float 2D 0 1 0 1 Unknown", "%99 = OpImageQueryLevels %int %im\n",
-         R"([[group(2), binding(1)]] var x_20 : texture_2d_array<f32>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_2d_array<f32>;)",
          R"(let x_99 : i32 = textureNumLevels(x_20);)"},
 
         // 3D
         {"%float 3D 0 0 0 1 Unknown", "%99 = OpImageQueryLevels %int %im\n",
-         R"([[group(2), binding(1)]] var x_20 : texture_3d<f32>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_3d<f32>;)",
          R"(let x_99 : i32 = textureNumLevels(x_20);)"},
 
         // Cube
         {"%float Cube 0 0 0 1 Unknown", "%99 = OpImageQueryLevels %int %im\n",
-         R"([[group(2), binding(1)]] var x_20 : texture_cube<f32>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_cube<f32>;)",
          R"(let x_99 : i32 = textureNumLevels(x_20);)"},
 
         // Cube array
         {"%float Cube 0 1 0 1 Unknown", "%99 = OpImageQueryLevels %int %im\n",
-         R"([[group(2), binding(1)]] var x_20 : texture_cube_array<f32>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_cube_array<f32>;)",
          R"(let x_99 : i32 = textureNumLevels(x_20);)"},
 
         // depth 2d
         {"%float 2D 1 0 0 1 Unknown", "%99 = OpImageQueryLevels %int %im\n",
-         R"([[group(2), binding(1)]] var x_20 : texture_depth_2d;)",
+         R"(@group(2) @binding(1) var x_20 : texture_depth_2d;)",
          R"(let x_99 : i32 = textureNumLevels(x_20);)"},
 
         // depth 2d array
         {"%float 2D 1 1 0 1 Unknown", "%99 = OpImageQueryLevels %int %im\n",
-         R"([[group(2), binding(1)]] var x_20 : texture_depth_2d_array;)",
+         R"(@group(2) @binding(1) var x_20 : texture_depth_2d_array;)",
          R"(let x_99 : i32 = textureNumLevels(x_20);)"},
 
         // depth cube
         {"%float Cube 1 0 0 1 Unknown", "%99 = OpImageQueryLevels %int %im\n",
-         R"([[group(2), binding(1)]] var x_20 : texture_depth_cube;)",
+         R"(@group(2) @binding(1) var x_20 : texture_depth_cube;)",
          R"(let x_99 : i32 = textureNumLevels(x_20);)"},
 
         // depth cube array
         {"%float Cube 1 1 0 1 Unknown", "%99 = OpImageQueryLevels %int %im\n",
-         R"([[group(2), binding(1)]] var x_20 : texture_depth_cube_array;)",
+         R"(@group(2) @binding(1) var x_20 : texture_depth_cube_array;)",
          R"(let x_99 : i32 = textureNumLevels(x_20);)"}}));
 
 INSTANTIATE_TEST_SUITE_P(
@@ -3079,7 +3075,7 @@
     SpvParserHandleTest_SampledImageAccessTest,
     ::testing::ValuesIn(std::vector<ImageAccessCase>{
         {"%float 2D 0 0 0 1 Unknown", "%99 = OpImageQueryLevels %uint %im\n",
-         R"([[group(2), binding(1)]] var x_20 : texture_2d<f32>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_2d<f32>;)",
          R"(let x_99 : u32 = u32(textureNumLevels(x_20));)"}}));
 
 INSTANTIATE_TEST_SUITE_P(
@@ -3088,7 +3084,7 @@
     ::testing::ValuesIn(std::vector<ImageAccessCase>{
         // Multsample 2D
         {"%float 2D 0 0 1 1 Unknown", "%99 = OpImageQuerySamples %int %im\n",
-         R"([[group(2), binding(1)]] var x_20 : texture_multisampled_2d<f32>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_multisampled_2d<f32>;)",
          R"(let x_99 : i32 = textureNumSamples(x_20);)"}  // namespace
 
         // Multisample 2D array
@@ -3102,7 +3098,7 @@
     ::testing::ValuesIn(std::vector<ImageAccessCase>{
         // Multsample 2D
         {"%float 2D 0 0 1 1 Unknown", "%99 = OpImageQuerySamples %uint %im\n",
-         R"([[group(2), binding(1)]] var x_20 : texture_multisampled_2d<f32>;)",
+         R"(@group(2) @binding(1) var x_20 : texture_multisampled_2d<f32>;)",
          R"(let x_99 : u32 = u32(textureNumSamples(x_20));)"}
 
         // Multisample 2D array
diff --git a/src/reader/spirv/parser_impl_module_var_test.cc b/src/reader/spirv/parser_impl_module_var_test.cc
index 4c7ab3a..31007f3 100644
--- a/src/reader/spirv/parser_impl_module_var_test.cc
+++ b/src/reader/spirv/parser_impl_module_var_test.cc
@@ -471,11 +471,11 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn main() -> main_out {
   main_1();
   return main_out(gl_Position);
@@ -531,11 +531,11 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn main() -> main_out {
   main_1();
   return main_out(gl_Position);
@@ -590,11 +590,11 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn main() -> main_out {
   main_1();
   return main_out(gl_Position);
@@ -649,11 +649,11 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   x_2_1 : vec4<f32>;
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn main() -> main_out {
   main_1();
   return main_out(x_2);
@@ -707,11 +707,11 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   x_2_1 : vec4<f32>;
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn main() -> main_out {
   main_1();
   return main_out(x_2);
@@ -765,11 +765,11 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   x_2_1 : vec4<f32>;
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn main() -> main_out {
   main_1();
   return main_out(x_2);
@@ -801,11 +801,11 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   x_2_1 : vec4<f32>;
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn main() -> main_out {
   main_1();
   return main_out(x_2);
@@ -1298,7 +1298,7 @@
   const auto module_str = test::ToString(p->program());
   EXPECT_THAT(
       module_str,
-      HasSubstr("[[group(3), binding(9)]] var<storage, read_write> x_1 : S;"))
+      HasSubstr("@group(3) @binding(9) var<storage, read_write> x_1 : S;"))
       << module_str;
 }
 
@@ -1349,7 +1349,7 @@
   const auto module_str = test::ToString(p->program());
   EXPECT_THAT(
       module_str,
-      HasSubstr("[[group(0), binding(3)]] var<storage, read_write> x_1 : S;"))
+      HasSubstr("@group(0) @binding(3) var<storage, read_write> x_1 : S;"))
       << module_str;
 }
 
@@ -1399,7 +1399,7 @@
   ASSERT_TRUE(p->BuildAndParseInternalModuleExceptFunctions());
   EXPECT_TRUE(p->error().empty());
   const auto module_str = test::ToString(p->program());
-  EXPECT_THAT(module_str, HasSubstr(R"(type Arr = [[stride(4)]] array<u32, 2u>;
+  EXPECT_THAT(module_str, HasSubstr(R"(type Arr = @stride(4) array<u32, 2u>;
 
 struct S {
   field0 : u32;
@@ -1407,7 +1407,7 @@
   field2 : Arr;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> x_1 : S;
+@group(0) @binding(0) var<storage, read_write> x_1 : S;
 )")) << module_str;
 }
 
@@ -1437,7 +1437,7 @@
   field0 : mat3x2<f32>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> myvar : S;
+@group(0) @binding(0) var<storage, read_write> myvar : S;
 )")) << module_str;
 }
 
@@ -1466,7 +1466,7 @@
   field0 : mat3x2<f32>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> myvar : S;
+@group(0) @binding(0) var<storage, read_write> myvar : S;
 )")) << module_str;
 }
 
@@ -1492,11 +1492,11 @@
   EXPECT_TRUE(p->error().empty());
   const auto module_str = test::ToString(p->program());
   EXPECT_THAT(module_str, HasSubstr(R"(struct S {
-  [[stride(64), internal(disable_validation__ignore_stride)]]
+  @stride(64) @internal(disable_validation__ignore_stride)
   field0 : mat3x2<f32>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> myvar : S;
+@group(0) @binding(0) var<storage, read_write> myvar : S;
 )")) << module_str;
 }
 
@@ -1549,7 +1549,7 @@
   field1 : f32;
 }
 
-[[group(0), binding(0)]] var<storage, read> x_1 : S;
+@group(0) @binding(0) var<storage, read> x_1 : S;
 )")) << module_str;
 }
 
@@ -1578,7 +1578,7 @@
   field1 : f32;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> x_1 : S;
+@group(0) @binding(0) var<storage, read_write> x_1 : S;
 )")) << module_str;
 }
 
@@ -1610,7 +1610,7 @@
   field1 : f32;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> x_1 : S;
+@group(0) @binding(0) var<storage, read_write> x_1 : S;
 )")) << module_str;
 }
 
@@ -1655,8 +1655,7 @@
   ASSERT_TRUE(p->BuildAndParseInternalModuleExceptFunctions()) << p->error();
   EXPECT_TRUE(p->error().empty());
   const auto module_str = test::ToString(p->program());
-  EXPECT_THAT(module_str,
-              HasSubstr("[[override(12)]] let myconst : bool = true;"))
+  EXPECT_THAT(module_str, HasSubstr("@override(12) let myconst : bool = true;"))
       << module_str;
 }
 
@@ -1673,7 +1672,7 @@
   EXPECT_TRUE(p->error().empty());
   const auto module_str = test::ToString(p->program());
   EXPECT_THAT(module_str,
-              HasSubstr("[[override(12)]] let myconst : bool = false;"))
+              HasSubstr("@override(12) let myconst : bool = false;"))
       << module_str;
 }
 
@@ -1689,8 +1688,7 @@
   ASSERT_TRUE(p->BuildAndParseInternalModuleExceptFunctions()) << p->error();
   EXPECT_TRUE(p->error().empty());
   const auto module_str = test::ToString(p->program());
-  EXPECT_THAT(module_str,
-              HasSubstr("[[override(12)]] let myconst : u32 = 42u;"))
+  EXPECT_THAT(module_str, HasSubstr("@override(12) let myconst : u32 = 42u;"))
       << module_str;
 }
 
@@ -1706,7 +1704,7 @@
   ASSERT_TRUE(p->BuildAndParseInternalModuleExceptFunctions()) << p->error();
   EXPECT_TRUE(p->error().empty());
   const auto module_str = test::ToString(p->program());
-  EXPECT_THAT(module_str, HasSubstr("[[override(12)]] let myconst : i32 = 42;"))
+  EXPECT_THAT(module_str, HasSubstr("@override(12) let myconst : i32 = 42;"))
       << module_str;
 }
 
@@ -1722,8 +1720,7 @@
   ASSERT_TRUE(p->BuildAndParseInternalModuleExceptFunctions()) << p->error();
   EXPECT_TRUE(p->error().empty());
   const auto module_str = test::ToString(p->program());
-  EXPECT_THAT(module_str,
-              HasSubstr("[[override(12)]] let myconst : f32 = 2.5;"))
+  EXPECT_THAT(module_str, HasSubstr("@override(12) let myconst : f32 = 2.5;"))
       << module_str;
 }
 
@@ -1810,8 +1807,8 @@
   return;
 }
 
-[[stage(fragment)]]
-fn main([[builtin(sample_index)]] x_1_param : u32) {
+@stage(fragment)
+fn main(@builtin(sample_index) x_1_param : u32) {
   x_1 = bitcast<i32>(x_1_param);
   main_1();
 }
@@ -1923,8 +1920,8 @@
   return;
 }
 
-[[stage(fragment)]]
-fn main([[builtin(sample_index)]] x_1_param : u32) {
+@stage(fragment)
+fn main(@builtin(sample_index) x_1_param : u32) {
   x_1 = bitcast<i32>(x_1_param);
   main_1();
 }
@@ -1977,8 +1974,8 @@
   return;
 }
 
-[[stage(fragment)]]
-fn main([[builtin(sample_index)]] x_1_param : u32) {
+@stage(fragment)
+fn main(@builtin(sample_index) x_1_param : u32) {
   x_1 = x_1_param;
   main_1();
 }
@@ -2007,8 +2004,8 @@
   return;
 }
 
-[[stage(fragment)]]
-fn main([[builtin(sample_index)]] x_1_param : u32) {
+@stage(fragment)
+fn main(@builtin(sample_index) x_1_param : u32) {
   x_1 = x_1_param;
   main_1();
 }
@@ -2036,8 +2033,8 @@
   return;
 }
 
-[[stage(fragment)]]
-fn main([[builtin(sample_index)]] x_1_param : u32) {
+@stage(fragment)
+fn main(@builtin(sample_index) x_1_param : u32) {
   x_1 = x_1_param;
   main_1();
 }
@@ -2152,8 +2149,8 @@
   return;
 }
 
-[[stage(fragment)]]
-fn main([[builtin(sample_mask)]] x_1_param : u32) {
+@stage(fragment)
+fn main(@builtin(sample_mask) x_1_param : u32) {
   x_1[0] = x_1_param;
   main_1();
 }
@@ -2184,8 +2181,8 @@
   return;
 }
 
-[[stage(fragment)]]
-fn main([[builtin(sample_mask)]] x_1_param : u32) {
+@stage(fragment)
+fn main(@builtin(sample_mask) x_1_param : u32) {
   x_1[0] = x_1_param;
   main_1();
 }
@@ -2216,8 +2213,8 @@
   return;
 }
 
-[[stage(fragment)]]
-fn main([[builtin(sample_mask)]] x_1_param : u32) {
+@stage(fragment)
+fn main(@builtin(sample_mask) x_1_param : u32) {
   x_1[0] = x_1_param;
   main_1();
 }
@@ -2247,8 +2244,8 @@
   return;
 }
 
-[[stage(fragment)]]
-fn main([[builtin(sample_mask)]] x_1_param : u32) {
+@stage(fragment)
+fn main(@builtin(sample_mask) x_1_param : u32) {
   x_1[0] = bitcast<i32>(x_1_param);
   main_1();
 }
@@ -2279,8 +2276,8 @@
   return;
 }
 
-[[stage(fragment)]]
-fn main([[builtin(sample_mask)]] x_1_param : u32) {
+@stage(fragment)
+fn main(@builtin(sample_mask) x_1_param : u32) {
   x_1[0] = bitcast<i32>(x_1_param);
   main_1();
 }
@@ -2311,8 +2308,8 @@
   return;
 }
 
-[[stage(fragment)]]
-fn main([[builtin(sample_mask)]] x_1_param : u32) {
+@stage(fragment)
+fn main(@builtin(sample_mask) x_1_param : u32) {
   x_1[0] = bitcast<i32>(x_1_param);
   main_1();
 }
@@ -2362,11 +2359,11 @@
 }
 
 struct main_out {
-  [[builtin(sample_mask)]]
+  @builtin(sample_mask)
   x_1_1 : u32;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_1[0]);
@@ -2399,11 +2396,11 @@
 }
 
 struct main_out {
-  [[builtin(sample_mask)]]
+  @builtin(sample_mask)
   x_1_1 : u32;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_1[0]);
@@ -2436,11 +2433,11 @@
 }
 
 struct main_out {
-  [[builtin(sample_mask)]]
+  @builtin(sample_mask)
   x_1_1 : u32;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_1[0]);
@@ -2472,11 +2469,11 @@
 }
 
 struct main_out {
-  [[builtin(sample_mask)]]
+  @builtin(sample_mask)
   x_1_1 : u32;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(bitcast<u32>(x_1[0]));
@@ -2509,11 +2506,11 @@
 }
 
 struct main_out {
-  [[builtin(sample_mask)]]
+  @builtin(sample_mask)
   x_1_1 : u32;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(bitcast<u32>(x_1[0]));
@@ -2546,11 +2543,11 @@
 }
 
 struct main_out {
-  [[builtin(sample_mask)]]
+  @builtin(sample_mask)
   x_1_1 : u32;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(bitcast<u32>(x_1[0]));
@@ -2574,13 +2571,13 @@
   ASSERT_TRUE(p->BuildAndParseInternalModule()) << p->error() << assembly;
   EXPECT_TRUE(p->error().empty());
   const auto module_str = test::ToString(p->program());
-  const std::string expected = R"(type Arr = [[stride(4)]] array<u32, 1u>;
+  const std::string expected = R"(type Arr = @stride(4) array<u32, 1u>;
 
-type Arr_1 = [[stride(4)]] array<u32, 2u>;
+type Arr_1 = @stride(4) array<u32, 2u>;
 
-type Arr_2 = [[stride(4)]] array<i32, 1u>;
+type Arr_2 = @stride(4) array<i32, 1u>;
 
-type Arr_3 = [[stride(4)]] array<i32, 2u>;
+type Arr_3 = @stride(4) array<i32, 2u>;
 
 var<private> x_1 : Arr;
 
@@ -2589,8 +2586,8 @@
   return;
 }
 
-[[stage(fragment)]]
-fn main([[builtin(sample_mask)]] x_1_param : u32) {
+@stage(fragment)
+fn main(@builtin(sample_mask) x_1_param : u32) {
   x_1[0] = x_1_param;
   main_1();
 }
@@ -2613,13 +2610,13 @@
   ASSERT_TRUE(p->BuildAndParseInternalModule()) << p->error() << assembly;
   EXPECT_TRUE(p->error().empty());
   const auto module_str = test::ToString(p->program());
-  const std::string expected = R"(type Arr = [[stride(4)]] array<u32, 1u>;
+  const std::string expected = R"(type Arr = @stride(4) array<u32, 1u>;
 
-type Arr_1 = [[stride(4)]] array<u32, 2u>;
+type Arr_1 = @stride(4) array<u32, 2u>;
 
-type Arr_2 = [[stride(4)]] array<i32, 1u>;
+type Arr_2 = @stride(4) array<i32, 1u>;
 
-type Arr_3 = [[stride(4)]] array<i32, 2u>;
+type Arr_3 = @stride(4) array<i32, 2u>;
 
 var<private> x_1 : Arr;
 
@@ -2629,11 +2626,11 @@
 }
 
 struct main_out {
-  [[builtin(sample_mask)]]
+  @builtin(sample_mask)
   x_1_1 : u32;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_1[0]);
@@ -2687,12 +2684,12 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   x_4_1 : vec4<f32>;
 }
 
-[[stage(vertex)]]
-fn main([[builtin(vertex_index)]] x_1_param : u32) -> main_out {
+@stage(vertex)
+fn main(@builtin(vertex_index) x_1_param : u32) -> main_out {
   x_1 = bitcast<i32>(x_1_param);
   main_1();
   return main_out(x_4);
@@ -2725,12 +2722,12 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   x_4_1 : vec4<f32>;
 }
 
-[[stage(vertex)]]
-fn main([[builtin(vertex_index)]] x_1_param : u32) -> main_out {
+@stage(vertex)
+fn main(@builtin(vertex_index) x_1_param : u32) -> main_out {
   x_1 = bitcast<i32>(x_1_param);
   main_1();
   return main_out(x_4);
@@ -2762,12 +2759,12 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   x_4_1 : vec4<f32>;
 }
 
-[[stage(vertex)]]
-fn main([[builtin(vertex_index)]] x_1_param : u32) -> main_out {
+@stage(vertex)
+fn main(@builtin(vertex_index) x_1_param : u32) -> main_out {
   x_1 = bitcast<i32>(x_1_param);
   main_1();
   return main_out(x_4);
@@ -2798,12 +2795,12 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   x_4_1 : vec4<f32>;
 }
 
-[[stage(vertex)]]
-fn main([[builtin(vertex_index)]] x_1_param : u32) -> main_out {
+@stage(vertex)
+fn main(@builtin(vertex_index) x_1_param : u32) -> main_out {
   x_1 = x_1_param;
   main_1();
   return main_out(x_4);
@@ -2836,12 +2833,12 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   x_4_1 : vec4<f32>;
 }
 
-[[stage(vertex)]]
-fn main([[builtin(vertex_index)]] x_1_param : u32) -> main_out {
+@stage(vertex)
+fn main(@builtin(vertex_index) x_1_param : u32) -> main_out {
   x_1 = x_1_param;
   main_1();
   return main_out(x_4);
@@ -2873,12 +2870,12 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   x_4_1 : vec4<f32>;
 }
 
-[[stage(vertex)]]
-fn main([[builtin(vertex_index)]] x_1_param : u32) -> main_out {
+@stage(vertex)
+fn main(@builtin(vertex_index) x_1_param : u32) -> main_out {
   x_1 = x_1_param;
   main_1();
   return main_out(x_4);
@@ -2958,12 +2955,12 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   position_1 : vec4<f32>;
 }
 
-[[stage(vertex)]]
-fn main([[builtin(instance_index)]] x_1_param : u32) -> main_out {
+@stage(vertex)
+fn main(@builtin(instance_index) x_1_param : u32) -> main_out {
   x_1 = bitcast<i32>(x_1_param);
   main_1();
   return main_out(position);
@@ -2996,12 +2993,12 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   position_1 : vec4<f32>;
 }
 
-[[stage(vertex)]]
-fn main([[builtin(instance_index)]] x_1_param : u32) -> main_out {
+@stage(vertex)
+fn main(@builtin(instance_index) x_1_param : u32) -> main_out {
   x_1 = bitcast<i32>(x_1_param);
   main_1();
   return main_out(position);
@@ -3033,12 +3030,12 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   position_1 : vec4<f32>;
 }
 
-[[stage(vertex)]]
-fn main([[builtin(instance_index)]] x_1_param : u32) -> main_out {
+@stage(vertex)
+fn main(@builtin(instance_index) x_1_param : u32) -> main_out {
   x_1 = bitcast<i32>(x_1_param);
   main_1();
   return main_out(position);
@@ -3093,12 +3090,12 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   position_1 : vec4<f32>;
 }
 
-[[stage(vertex)]]
-fn main([[builtin(instance_index)]] x_1_param : u32) -> main_out {
+@stage(vertex)
+fn main(@builtin(instance_index) x_1_param : u32) -> main_out {
   x_1 = x_1_param;
   main_1();
   return main_out(position);
@@ -3131,12 +3128,12 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   position_1 : vec4<f32>;
 }
 
-[[stage(vertex)]]
-fn main([[builtin(instance_index)]] x_1_param : u32) -> main_out {
+@stage(vertex)
+fn main(@builtin(instance_index) x_1_param : u32) -> main_out {
   x_1 = x_1_param;
   main_1();
   return main_out(position);
@@ -3168,12 +3165,12 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   position_1 : vec4<f32>;
 }
 
-[[stage(vertex)]]
-fn main([[builtin(instance_index)]] x_1_param : u32) -> main_out {
+@stage(vertex)
+fn main(@builtin(instance_index) x_1_param : u32) -> main_out {
   x_1 = x_1_param;
   main_1();
   return main_out(position);
@@ -3318,8 +3315,8 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
-fn main([[builtin(${wgsl_builtin})]] x_1_param : ${unsigned_wgsl_type}) {
+@stage(compute) @workgroup_size(1, 1, 1)
+fn main(@builtin(${wgsl_builtin}) x_1_param : ${unsigned_wgsl_type}) {
   x_1 = ${assignment_value};
   main_1();
 }
@@ -3367,8 +3364,8 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
-fn main([[builtin(${wgsl_builtin})]] x_1_param : ${unsigned_wgsl_type}) {
+@stage(compute) @workgroup_size(1, 1, 1)
+fn main(@builtin(${wgsl_builtin}) x_1_param : ${unsigned_wgsl_type}) {
   x_1 = ${assignment_value};
   main_1();
 }
@@ -3415,8 +3412,8 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
-fn main([[builtin(${wgsl_builtin})]] x_1_param : ${unsigned_wgsl_type}) {
+@stage(compute) @workgroup_size(1, 1, 1)
+fn main(@builtin(${wgsl_builtin}) x_1_param : ${unsigned_wgsl_type}) {
   x_1 = ${assignment_value};
   main_1();
 }
@@ -3730,14 +3727,14 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_2_1 : u32;
-  [[location(6)]]
+  @location(6)
   x_4_1 : u32;
 }
 
-[[stage(fragment)]]
-fn main([[location(0)]] x_1_param : u32, [[location(30)]] x_3_param : u32) -> main_out {
+@stage(fragment)
+fn main(@location(0) x_1_param : u32, @location(30) x_3_param : u32) -> main_out {
   x_1 = x_1_param;
   x_3 = x_3_param;
   main_1();
@@ -3784,12 +3781,12 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   x_4_1 : vec4<f32>;
 }
 
-[[stage(vertex)]]
-fn main([[builtin(instance_index)]] x_1_param : u32) -> main_out {
+@stage(vertex)
+fn main(@builtin(instance_index) x_1_param : u32) -> main_out {
   x_1 = x_1_param;
   main_1();
   return main_out(x_4);
@@ -3834,12 +3831,12 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   x_4_1 : vec4<f32>;
 }
 
-[[stage(vertex)]]
-fn main([[builtin(instance_index)]] x_1_param : u32) -> main_out {
+@stage(vertex)
+fn main(@builtin(instance_index) x_1_param : u32) -> main_out {
   x_1 = bitcast<i32>(x_1_param);
   main_1();
   return main_out(x_4);
@@ -3879,8 +3876,8 @@
   return;
 }
 
-[[stage(fragment)]]
-fn main([[builtin(sample_mask)]] x_1_param : u32) {
+@stage(fragment)
+fn main(@builtin(sample_mask) x_1_param : u32) {
   x_1[0] = x_1_param;
   main_1();
 }
@@ -3918,8 +3915,8 @@
   return;
 }
 
-[[stage(fragment)]]
-fn main([[builtin(sample_mask)]] x_1_param : u32) {
+@stage(fragment)
+fn main(@builtin(sample_mask) x_1_param : u32) {
   x_1[0] = bitcast<i32>(x_1_param);
   main_1();
 }
@@ -3960,11 +3957,11 @@
 }
 
 struct main_out {
-  [[builtin(sample_mask)]]
+  @builtin(sample_mask)
   x_1_1 : u32;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_1[0]);
@@ -4006,11 +4003,11 @@
 }
 
 struct main_out {
-  [[builtin(sample_mask)]]
+  @builtin(sample_mask)
   x_1_1 : u32;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(bitcast<u32>(x_1[0]));
@@ -4050,11 +4047,11 @@
 }
 
 struct main_out {
-  [[builtin(frag_depth)]]
+  @builtin(frag_depth)
   x_1_1 : f32;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_1);
@@ -4084,11 +4081,11 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn main() -> main_out {
   main_1();
   return main_out(gl_Position);
@@ -4154,11 +4151,11 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn main() -> main_out {
   main_1();
   return main_out(gl_Position);
@@ -4211,12 +4208,12 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   x_2_1 : vec4<f32>;
 }
 
-[[stage(vertex)]]
-fn main([[location(4)]] x_1_param : f32, [[location(5)]] x_1_param_1 : f32, [[location(6)]] x_1_param_2 : f32) -> main_out {
+@stage(vertex)
+fn main(@location(4) x_1_param : f32, @location(5) x_1_param_1 : f32, @location(6) x_1_param_2 : f32) -> main_out {
   x_1[0] = x_1_param;
   x_1[1] = x_1_param_1;
   x_1[2] = x_1_param_2;
@@ -4269,12 +4266,12 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   x_2_1 : vec4<f32>;
 }
 
-[[stage(vertex)]]
-fn main([[location(9)]] x_1_param : vec4<f32>, [[location(10)]] x_1_param_1 : vec4<f32>) -> main_out {
+@stage(vertex)
+fn main(@location(9) x_1_param : vec4<f32>, @location(10) x_1_param_1 : vec4<f32>) -> main_out {
   x_1[0] = x_1_param;
   x_1[1] = x_1_param_1;
   main_1();
@@ -4336,12 +4333,12 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   x_2_1 : vec4<f32>;
 }
 
-[[stage(vertex)]]
-fn main([[location(9)]] x_1_param : f32, [[location(10)]] x_1_param_1 : vec4<f32>) -> main_out {
+@stage(vertex)
+fn main(@location(9) x_1_param : f32, @location(10) x_1_param_1 : vec4<f32>) -> main_out {
   x_1.alice = x_1_param;
   x_1.bob = x_1_param_1;
   main_1();
@@ -4395,12 +4392,12 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   x_2_1 : vec4<f32>;
 }
 
-[[stage(vertex)]]
-fn main([[location(7)]] x_1_param : vec4<f32>, [[location(8)]] x_1_param_1 : vec4<f32>, [[location(9)]] x_1_param_2 : vec4<f32>, [[location(10)]] x_1_param_3 : vec4<f32>) -> main_out {
+@stage(vertex)
+fn main(@location(7) x_1_param : vec4<f32>, @location(8) x_1_param_1 : vec4<f32>, @location(9) x_1_param_2 : vec4<f32>, @location(10) x_1_param_3 : vec4<f32>) -> main_out {
   x_1[0][0] = x_1_param;
   x_1[0][1] = x_1_param_1;
   x_1[1][0] = x_1_param_2;
@@ -4456,17 +4453,17 @@
 }
 
 struct main_out {
-  [[location(4)]]
+  @location(4)
   x_1_1 : f32;
-  [[location(5)]]
+  @location(5)
   x_1_2 : f32;
-  [[location(6)]]
+  @location(6)
   x_1_3 : f32;
-  [[builtin(position)]]
+  @builtin(position)
   x_2_1 : vec4<f32>;
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn main() -> main_out {
   main_1();
   return main_out(x_1[0], x_1[1], x_1[2], x_2);
@@ -4517,15 +4514,15 @@
 }
 
 struct main_out {
-  [[location(9)]]
+  @location(9)
   x_1_1 : vec4<f32>;
-  [[location(10)]]
+  @location(10)
   x_1_2 : vec4<f32>;
-  [[builtin(position)]]
+  @builtin(position)
   x_2_1 : vec4<f32>;
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn main() -> main_out {
   main_1();
   return main_out(x_1[0], x_1[1], x_2);
@@ -4586,15 +4583,15 @@
 }
 
 struct main_out {
-  [[location(9)]]
+  @location(9)
   x_1_1 : f32;
-  [[location(10)]]
+  @location(10)
   x_1_2 : vec4<f32>;
-  [[builtin(position)]]
+  @builtin(position)
   x_2_1 : vec4<f32>;
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn main() -> main_out {
   main_1();
   return main_out(x_1.alice, x_1.bob, x_2);
@@ -4661,16 +4658,16 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   x_2_1 : vec4<f32>;
-  [[location(9)]]
+  @location(9)
   x_3_1 : f32;
-  [[location(11)]]
+  @location(11)
   x_3_2 : vec4<f32>;
 }
 
-[[stage(vertex)]]
-fn main([[location(9)]] x_1_param : f32, [[location(11)]] x_1_param_1 : vec4<f32>) -> main_out {
+@stage(vertex)
+fn main(@location(9) x_1_param : f32, @location(11) x_1_param_1 : vec4<f32>) -> main_out {
   x_1.alice = x_1_param;
   x_1.bob = x_1_param_1;
   main_1();
@@ -4746,12 +4743,12 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   x_10_1 : vec4<f32>;
 }
 
-[[stage(vertex)]]
-fn main([[location(1), interpolate(flat)]] x_1_param : u32, [[location(2), interpolate(flat)]] x_2_param : vec2<u32>, [[location(3), interpolate(flat)]] x_3_param : i32, [[location(4), interpolate(flat)]] x_4_param : vec2<i32>, [[location(5), interpolate(flat)]] x_5_param : f32, [[location(6), interpolate(flat)]] x_6_param : vec2<f32>) -> main_out {
+@stage(vertex)
+fn main(@location(1) @interpolate(flat) x_1_param : u32, @location(2) @interpolate(flat) x_2_param : vec2<u32>, @location(3) @interpolate(flat) x_3_param : i32, @location(4) @interpolate(flat) x_4_param : vec2<i32>, @location(5) @interpolate(flat) x_5_param : f32, @location(6) @interpolate(flat) x_6_param : vec2<f32>) -> main_out {
   x_1 = x_1_param;
   x_2 = x_2_param;
   x_3 = x_3_param;
@@ -4831,23 +4828,23 @@
 }
 
 struct main_out {
-  [[location(1), interpolate(flat)]]
+  @location(1) @interpolate(flat)
   x_1_1 : u32;
-  [[location(2), interpolate(flat)]]
+  @location(2) @interpolate(flat)
   x_2_1 : vec2<u32>;
-  [[location(3), interpolate(flat)]]
+  @location(3) @interpolate(flat)
   x_3_1 : i32;
-  [[location(4), interpolate(flat)]]
+  @location(4) @interpolate(flat)
   x_4_1 : vec2<i32>;
-  [[location(5), interpolate(flat)]]
+  @location(5) @interpolate(flat)
   x_5_1 : f32;
-  [[location(6), interpolate(flat)]]
+  @location(6) @interpolate(flat)
   x_6_1 : vec2<f32>;
-  [[builtin(position)]]
+  @builtin(position)
   x_10_1 : vec4<f32>;
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn main() -> main_out {
   main_1();
   return main_out(x_1, x_2, x_3, x_4, x_5, x_6, x_10);
@@ -4899,8 +4896,8 @@
   return;
 }
 
-[[stage(fragment)]]
-fn main([[location(1), interpolate(flat)]] x_1_param : f32, [[location(2), interpolate(flat)]] x_1_param_1 : f32, [[location(5), interpolate(flat)]] x_2_param : f32, [[location(6), interpolate(flat)]] x_2_param_1 : f32) {
+@stage(fragment)
+fn main(@location(1) @interpolate(flat) x_1_param : f32, @location(2) @interpolate(flat) x_1_param_1 : f32, @location(5) @interpolate(flat) x_2_param : f32, @location(6) @interpolate(flat) x_2_param_1 : f32) {
   x_1[0] = x_1_param;
   x_1[1] = x_1_param_1;
   x_2.field0 = x_2_param;
@@ -4975,8 +4972,8 @@
   return;
 }
 
-[[stage(fragment)]]
-fn main([[location(1)]] x_1_param : f32, [[location(2), interpolate(perspective, centroid)]] x_2_param : f32, [[location(3), interpolate(perspective, sample)]] x_3_param : f32, [[location(4), interpolate(linear)]] x_4_param : f32, [[location(5), interpolate(linear, centroid)]] x_5_param : f32, [[location(6), interpolate(linear, sample)]] x_6_param : f32) {
+@stage(fragment)
+fn main(@location(1) x_1_param : f32, @location(2) @interpolate(perspective, centroid) x_2_param : f32, @location(3) @interpolate(perspective, sample) x_3_param : f32, @location(4) @interpolate(linear) x_4_param : f32, @location(5) @interpolate(linear, centroid) x_5_param : f32, @location(6) @interpolate(linear, sample) x_6_param : f32) {
   x_1 = x_1_param;
   x_2 = x_2_param;
   x_3 = x_3_param;
@@ -5043,8 +5040,8 @@
   return;
 }
 
-[[stage(fragment)]]
-fn main([[location(1)]] x_1_param : f32, [[location(2), interpolate(perspective, centroid)]] x_1_param_1 : f32, [[location(3), interpolate(perspective, sample)]] x_1_param_2 : f32, [[location(4), interpolate(linear)]] x_1_param_3 : f32, [[location(5), interpolate(linear, centroid)]] x_1_param_4 : f32, [[location(6), interpolate(linear, sample)]] x_1_param_5 : f32) {
+@stage(fragment)
+fn main(@location(1) x_1_param : f32, @location(2) @interpolate(perspective, centroid) x_1_param_1 : f32, @location(3) @interpolate(perspective, sample) x_1_param_2 : f32, @location(4) @interpolate(linear) x_1_param_3 : f32, @location(5) @interpolate(linear, centroid) x_1_param_4 : f32, @location(6) @interpolate(linear, sample) x_1_param_5 : f32) {
   x_1.field0 = x_1_param;
   x_1.field1 = x_1_param_1;
   x_1.field2 = x_1_param_2;
@@ -5122,21 +5119,21 @@
 }
 
 struct main_out {
-  [[location(1)]]
+  @location(1)
   x_1_1 : f32;
-  [[location(2), interpolate(perspective, centroid)]]
+  @location(2) @interpolate(perspective, centroid)
   x_2_1 : f32;
-  [[location(3), interpolate(perspective, sample)]]
+  @location(3) @interpolate(perspective, sample)
   x_3_1 : f32;
-  [[location(4), interpolate(linear)]]
+  @location(4) @interpolate(linear)
   x_4_1 : f32;
-  [[location(5), interpolate(linear, centroid)]]
+  @location(5) @interpolate(linear, centroid)
   x_5_1 : f32;
-  [[location(6), interpolate(linear, sample)]]
+  @location(6) @interpolate(linear, sample)
   x_6_1 : f32;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_1, x_2, x_3, x_4, x_5, x_6);
@@ -5201,21 +5198,21 @@
 }
 
 struct main_out {
-  [[location(1)]]
+  @location(1)
   x_1_1 : f32;
-  [[location(2), interpolate(perspective, centroid)]]
+  @location(2) @interpolate(perspective, centroid)
   x_1_2 : f32;
-  [[location(3), interpolate(perspective, sample)]]
+  @location(3) @interpolate(perspective, sample)
   x_1_3 : f32;
-  [[location(4), interpolate(linear)]]
+  @location(4) @interpolate(linear)
   x_1_4 : f32;
-  [[location(5), interpolate(linear, centroid)]]
+  @location(5) @interpolate(linear, centroid)
   x_1_5 : f32;
-  [[location(6), interpolate(linear, sample)]]
+  @location(6) @interpolate(linear, sample)
   x_1_6 : f32;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_1.field0, x_1.field1, x_1.field2, x_1.field3, x_1.field4, x_1.field5);
diff --git a/src/reader/spirv/parser_impl_named_types_test.cc b/src/reader/spirv/parser_impl_named_types_test.cc
index f593222..8da9c73 100644
--- a/src/reader/spirv/parser_impl_named_types_test.cc
+++ b/src/reader/spirv/parser_impl_named_types_test.cc
@@ -78,7 +78,7 @@
   )"));
   EXPECT_TRUE(p->BuildAndParseInternalModule());
   EXPECT_THAT(test::ToString(p->program()),
-              HasSubstr("RTArr = [[stride(8)]] array<u32>;\n"));
+              HasSubstr("RTArr = @stride(8) array<u32>;\n"));
 
   p->DeliberatelyInvalidSpirv();
 }
@@ -93,9 +93,9 @@
   )"));
   EXPECT_TRUE(p->BuildAndParseInternalModule());
   EXPECT_THAT(test::ToString(p->program()),
-              HasSubstr(R"(type RTArr = [[stride(8)]] array<u32>;
+              HasSubstr(R"(type RTArr = @stride(8) array<u32>;
 
-type RTArr_1 = [[stride(8)]] array<u32>;
+type RTArr_1 = @stride(8) array<u32>;
 )"));
 
   p->DeliberatelyInvalidSpirv();
@@ -110,7 +110,7 @@
   )"));
   EXPECT_TRUE(p->BuildAndParseInternalModule());
   EXPECT_THAT(test::ToString(p->program()),
-              HasSubstr("myrtarr = [[stride(8)]] array<u32>;\n"));
+              HasSubstr("myrtarr = @stride(8) array<u32>;\n"));
 
   p->DeliberatelyInvalidSpirv();
 }
@@ -126,7 +126,7 @@
   )"));
   EXPECT_TRUE(p->BuildAndParseInternalModule());
   EXPECT_THAT(test::ToString(p->program()),
-              HasSubstr("myarr = [[stride(8)]] array<u32, 5u>;"));
+              HasSubstr("myarr = @stride(8) array<u32, 5u>;"));
 
   p->DeliberatelyInvalidSpirv();
 }
@@ -142,9 +142,9 @@
   )"));
   EXPECT_TRUE(p->BuildAndParseInternalModule());
   EXPECT_THAT(test::ToString(p->program()),
-              HasSubstr(R"(type Arr = [[stride(8)]] array<u32, 5u>;
+              HasSubstr(R"(type Arr = @stride(8) array<u32, 5u>;
 
-type Arr_1 = [[stride(8)]] array<u32, 5u>;
+type Arr_1 = @stride(8) array<u32, 5u>;
 )"));
 
   p->DeliberatelyInvalidSpirv();
diff --git a/src/reader/wgsl/lexer.cc b/src/reader/wgsl/lexer.cc
index f8c8bfa..31d2546 100644
--- a/src/reader/wgsl/lexer.cc
+++ b/src/reader/wgsl/lexer.cc
@@ -777,7 +777,11 @@
   auto source = begin_source();
   auto type = Token::Type::kUninitialized;
 
-  if (matches(pos_, "[[")) {
+  if (matches(pos_, "@")) {
+    type = Token::Type::kAttr;
+    pos_ += 1;
+    location_.column += 1;
+  } else if (matches(pos_, "[[")) {
     type = Token::Type::kAttrLeft;
     pos_ += 2;
     location_.column += 2;
diff --git a/src/reader/wgsl/lexer_test.cc b/src/reader/wgsl/lexer_test.cc
index 20b3f18..0ea9b9a 100644
--- a/src/reader/wgsl/lexer_test.cc
+++ b/src/reader/wgsl/lexer_test.cc
@@ -662,6 +662,7 @@
     testing::Values(TokenData{"&", Token::Type::kAnd},
                     TokenData{"&&", Token::Type::kAndAnd},
                     TokenData{"->", Token::Type::kArrow},
+                    TokenData{"@", Token::Type::kAttr},
                     TokenData{"[[", Token::Type::kAttrLeft},
                     TokenData{"]]", Token::Type::kAttrRight},
                     TokenData{"/", Token::Type::kForwardSlash},
diff --git a/src/reader/wgsl/parser_impl.cc b/src/reader/wgsl/parser_impl.cc
index cdc9b87..9f54309 100644
--- a/src/reader/wgsl/parser_impl.cc
+++ b/src/reader/wgsl/parser_impl.cc
@@ -161,9 +161,9 @@
   /// @return the current enter-exit depth for the given block token type. If
   /// `t` is not a block token type, then 0 is always returned.
   int consume(const Token& t) {
-    if (t.Is(Token::Type::kAttrLeft))
+    if (t.Is(Token::Type::kAttrLeft))  // [DEPRECATED]
       return attrs++;
-    if (t.Is(Token::Type::kAttrRight))
+    if (t.Is(Token::Type::kAttrRight))  // [DEPRECATED]
       return attrs--;
     if (t.Is(Token::Type::kBraceLeft))
       return brace++;
@@ -1383,7 +1383,8 @@
   while (continue_parsing()) {
     // Check for the end of the list.
     auto t = peek();
-    if (!t.IsIdentifier() && !t.Is(Token::Type::kAttrLeft)) {
+    if (!t.IsIdentifier() && !t.Is(Token::Type::kAttr) &&
+        !t.Is(Token::Type::kAttrLeft)) {
       break;
     }
 
@@ -2834,11 +2835,21 @@
   ast::DecorationList decos;
 
   while (continue_parsing()) {
-    auto list = decoration_bracketed_list(decos);
-    if (list.errored)
-      errored = true;
-    if (!list.matched)
-      break;
+    if (match(Token::Type::kAttr)) {
+      if (auto deco = expect_decoration(); deco.errored) {
+        errored = true;
+      } else {
+        decos.emplace_back(deco.value);
+      }
+    } else {  // [DEPRECATED] - old [[decoration]] style
+      auto list = decoration_bracketed_list(decos);
+      if (list.errored) {
+        errored = true;
+      }
+      if (!list.matched) {
+        break;
+      }
+    }
 
     matched = true;
   }
@@ -2855,11 +2866,15 @@
 Maybe<bool> ParserImpl::decoration_bracketed_list(ast::DecorationList& decos) {
   const char* use = "decoration list";
 
-  if (!match(Token::Type::kAttrLeft)) {
+  Source source;
+  if (!match(Token::Type::kAttrLeft, &source)) {
     return Failure::kNoMatch;
   }
 
-  Source source;
+  deprecated(source,
+             "[[decoration]] style decorations have been replaced with "
+             "@decoration style");
+
   if (match(Token::Type::kAttrRight, &source))
     return add_error(source, "empty decoration list");
 
@@ -2879,7 +2894,7 @@
 
       if (is_decoration(peek())) {
         // We have two decorations in a bracket without a separating comma.
-        // e.g. [[location(1) group(2)]]
+        // e.g. @location(1) group(2)
         //                    ^^^ expected comma
         expect(use, Token::Type::kComma);
         return Failure::kErrored;
@@ -3092,7 +3107,7 @@
     const char* use = "override decoration";
 
     if (peek_is(Token::Type::kParenLeft)) {
-      // [[override(x)]]
+      // @override(x)
       return expect_paren_block(use, [&]() -> Result {
         auto val = expect_positive_sint(use);
         if (val.errored)
diff --git a/src/reader/wgsl/parser_impl.h b/src/reader/wgsl/parser_impl.h
index 77c97e2..6c202a7 100644
--- a/src/reader/wgsl/parser_impl.h
+++ b/src/reader/wgsl/parser_impl.h
@@ -669,7 +669,7 @@
   /// Parses a `assignment_stmt` grammar element
   /// @returns the parsed assignment or nullptr
   Maybe<const ast::AssignmentStatement*> assignment_stmt();
-  /// Parses one or more bracketed decoration lists.
+  /// Parses one or more decoration lists.
   /// @return the parsed decoration list, or an empty list on error.
   Maybe<ast::DecorationList> decoration_list();
   /// Parses a list of decorations between `ATTR_LEFT` and `ATTR_RIGHT`
diff --git a/src/reader/wgsl/parser_impl_error_msg_test.cc b/src/reader/wgsl/parser_impl_error_msg_test.cc
index 29f5a7e..417c1eb 100644
--- a/src/reader/wgsl/parser_impl_error_msg_test.cc
+++ b/src/reader/wgsl/parser_impl_error_msg_test.cc
@@ -39,387 +39,491 @@
 
 TEST_F(ParserImplErrorTest, AdditiveInvalidExpr) {
   EXPECT("fn f() { return 1.0 + <; }",
-         "test.wgsl:1:23 error: unable to parse right side of + expression\n"
-         "fn f() { return 1.0 + <; }\n"
-         "                      ^\n");
+         R"(test.wgsl:1:23 error: unable to parse right side of + expression
+fn f() { return 1.0 + <; }
+                      ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, AndInvalidExpr) {
   EXPECT("fn f() { return 1 & >; }",
-         "test.wgsl:1:21 error: unable to parse right side of & expression\n"
-         "fn f() { return 1 & >; }\n"
-         "                    ^\n");
+         R"(test.wgsl:1:21 error: unable to parse right side of & expression
+fn f() { return 1 & >; }
+                    ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, AliasDeclInvalidDeco) {
-  EXPECT("[[override]]type e=u32;",
-         "test.wgsl:1:3 error: unexpected decorations\n"
-         "[[override]]type e=u32;\n"
-         "  ^^^^^^^^\n");
+  EXPECT(
+      "@override type e=u32;",
+      R"(test.wgsl:1:2 error: unexpected decorations
+@override type e=u32;
+ ^^^^^^^^
+)");
+}
+
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplErrorTest, DEPRECATED_AliasDeclInvalidDeco) {
+  EXPECT(
+      "[[override]]type e=u32;",
+      R"(test.wgsl:1:1 warning: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+[[override]]type e=u32;
+^^
+
+test.wgsl:1:3 error: unexpected decorations
+[[override]]type e=u32;
+  ^^^^^^^^
+)");
 }
 
 TEST_F(ParserImplErrorTest, IndexExprInvalidExpr) {
   EXPECT("fn f() { x = y[^]; }",
-         "test.wgsl:1:16 error: unable to parse expression inside []\n"
-         "fn f() { x = y[^]; }\n"
-         "               ^\n");
+         R"(test.wgsl:1:16 error: unable to parse expression inside []
+fn f() { x = y[^]; }
+               ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, IndexExprMissingRBracket) {
   EXPECT("fn f() { x = y[1; }",
-         "test.wgsl:1:17 error: expected ']' for index accessor\n"
-         "fn f() { x = y[1; }\n"
-         "                ^\n");
+         R"(test.wgsl:1:17 error: expected ']' for index accessor
+fn f() { x = y[1; }
+                ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, AssignmentStmtMissingAssignment) {
-  EXPECT("fn f() { a; }",
-         "test.wgsl:1:11 error: expected '=' for assignment\n"
-         "fn f() { a; }\n"
-         "          ^\n");
+  EXPECT("fn f() { a; }", R"(test.wgsl:1:11 error: expected '=' for assignment
+fn f() { a; }
+          ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, AssignmentStmtMissingAssignment2) {
   EXPECT("fn f() { a : i32; }",
-         "test.wgsl:1:10 error: expected 'var' for variable declaration\n"
-         "fn f() { a : i32; }\n"
-         "         ^\n");
+         R"(test.wgsl:1:10 error: expected 'var' for variable declaration
+fn f() { a : i32; }
+         ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, AssignmentStmtMissingSemicolon) {
   EXPECT("fn f() { a = 1 }",
-         "test.wgsl:1:16 error: expected ';' for assignment statement\n"
-         "fn f() { a = 1 }\n"
-         "               ^\n");
+         R"(test.wgsl:1:16 error: expected ';' for assignment statement
+fn f() { a = 1 }
+               ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, AssignmentStmtInvalidLHS_IntrinsicFunctionName) {
   EXPECT("normalize = 5;",
-         "test.wgsl:1:1 error: statement found outside of function body\n"
-         "normalize = 5;\n"
-         "^^^^^^^^^\n");
+         R"(test.wgsl:1:1 error: statement found outside of function body
+normalize = 5;
+^^^^^^^^^
+)");
 }
 
 TEST_F(ParserImplErrorTest, AssignmentStmtInvalidRHS) {
   EXPECT("fn f() { a = >; }",
-         "test.wgsl:1:14 error: unable to parse right side of assignment\n"
-         "fn f() { a = >; }\n"
-         "             ^\n");
+         R"(test.wgsl:1:14 error: unable to parse right side of assignment
+fn f() { a = >; }
+             ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, BitcastExprMissingLessThan) {
   EXPECT("fn f() { x = bitcast(y); }",
-         "test.wgsl:1:21 error: expected '<' for bitcast expression\n"
-         "fn f() { x = bitcast(y); }\n"
-         "                    ^\n");
+         R"(test.wgsl:1:21 error: expected '<' for bitcast expression
+fn f() { x = bitcast(y); }
+                    ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, BitcastExprMissingGreaterThan) {
   EXPECT("fn f() { x = bitcast<u32(y); }",
-         "test.wgsl:1:25 error: expected '>' for bitcast expression\n"
-         "fn f() { x = bitcast<u32(y); }\n"
-         "                        ^\n");
+         R"(test.wgsl:1:25 error: expected '>' for bitcast expression
+fn f() { x = bitcast<u32(y); }
+                        ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, BitcastExprMissingType) {
   EXPECT("fn f() { x = bitcast<>(y); }",
-         "test.wgsl:1:22 error: invalid type for bitcast expression\n"
-         "fn f() { x = bitcast<>(y); }\n"
-         "                     ^\n");
+         R"(test.wgsl:1:22 error: invalid type for bitcast expression
+fn f() { x = bitcast<>(y); }
+                     ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, BreakStmtMissingSemicolon) {
   EXPECT("fn f() { loop { break } }",
-         "test.wgsl:1:23 error: expected ';' for break statement\n"
-         "fn f() { loop { break } }\n"
-         "                      ^\n");
+         R"(test.wgsl:1:23 error: expected ';' for break statement
+fn f() { loop { break } }
+                      ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, CallExprMissingRParen) {
   EXPECT("fn f() { x = f(1.; }",
-         "test.wgsl:1:18 error: expected ')' for function call\n"
-         "fn f() { x = f(1.; }\n"
-         "                 ^\n");
+         R"(test.wgsl:1:18 error: expected ')' for function call
+fn f() { x = f(1.; }
+                 ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, CallStmtMissingRParen) {
   EXPECT("fn f() { f(1.; }",
-         "test.wgsl:1:14 error: expected ')' for function call\n"
-         "fn f() { f(1.; }\n"
-         "             ^\n");
+         R"(test.wgsl:1:14 error: expected ')' for function call
+fn f() { f(1.; }
+             ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, CallStmtInvalidArgument0) {
   EXPECT("fn f() { f(<); }",
-         "test.wgsl:1:12 error: expected ')' for function call\n"
-         "fn f() { f(<); }\n"
-         "           ^\n");
+         R"(test.wgsl:1:12 error: expected ')' for function call
+fn f() { f(<); }
+           ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, CallStmtInvalidArgument1) {
   EXPECT("fn f() { f(1.0, <); }",
-         "test.wgsl:1:17 error: expected ')' for function call\n"
-         "fn f() { f(1.0, <); }\n"
-         "                ^\n");
+         R"(test.wgsl:1:17 error: expected ')' for function call
+fn f() { f(1.0, <); }
+                ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, CallStmtMissingSemicolon) {
   EXPECT("fn f() { f() }",
-         "test.wgsl:1:14 error: expected ';' for function call\n"
-         "fn f() { f() }\n"
-         "             ^\n");
+         R"(test.wgsl:1:14 error: expected ';' for function call
+fn f() { f() }
+             ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, ConstructorExprMissingLParen) {
   EXPECT("fn f() { x = vec2<u32>1,2); }",
-         "test.wgsl:1:23 error: expected '(' for type constructor\n"
-         "fn f() { x = vec2<u32>1,2); }\n"
-         "                      ^\n");
+         R"(test.wgsl:1:23 error: expected '(' for type constructor
+fn f() { x = vec2<u32>1,2); }
+                      ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, ConstructorExprMissingRParen) {
   EXPECT("fn f() { x = vec2<u32>(1,2; }",
-         "test.wgsl:1:27 error: expected ')' for type constructor\n"
-         "fn f() { x = vec2<u32>(1,2; }\n"
-         "                          ^\n");
+         R"(test.wgsl:1:27 error: expected ')' for type constructor
+fn f() { x = vec2<u32>(1,2; }
+                          ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, ConstVarStmtInvalid) {
   EXPECT("fn f() { let >; }",
-         "test.wgsl:1:14 error: expected identifier for let declaration\n"
-         "fn f() { let >; }\n"
-         "             ^\n");
+         R"(test.wgsl:1:14 error: expected identifier for let declaration
+fn f() { let >; }
+             ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, ConstVarStmtMissingAssignment) {
   EXPECT("fn f() { let a : i32; }",
-         "test.wgsl:1:21 error: expected '=' for let declaration\n"
-         "fn f() { let a : i32; }\n"
-         "                    ^\n");
+         R"(test.wgsl:1:21 error: expected '=' for let declaration
+fn f() { let a : i32; }
+                    ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, ConstVarStmtMissingConstructor) {
   EXPECT("fn f() { let a : i32 = >; }",
-         "test.wgsl:1:24 error: missing constructor for let declaration\n"
-         "fn f() { let a : i32 = >; }\n"
-         "                       ^\n");
+         R"(test.wgsl:1:24 error: missing constructor for let declaration
+fn f() { let a : i32 = >; }
+                       ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, ContinueStmtMissingSemicolon) {
   EXPECT("fn f() { loop { continue } }",
-         "test.wgsl:1:26 error: expected ';' for continue statement\n"
-         "fn f() { loop { continue } }\n"
-         "                         ^\n");
+         R"(test.wgsl:1:26 error: expected ';' for continue statement
+fn f() { loop { continue } }
+                         ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, DiscardStmtMissingSemicolon) {
   EXPECT("fn f() { discard }",
-         "test.wgsl:1:18 error: expected ';' for discard statement\n"
-         "fn f() { discard }\n"
-         "                 ^\n");
+         R"(test.wgsl:1:18 error: expected ';' for discard statement
+fn f() { discard }
+                 ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, EqualityInvalidExpr) {
   EXPECT("fn f() { return 1 == >; }",
-         "test.wgsl:1:22 error: unable to parse right side of == expression\n"
-         "fn f() { return 1 == >; }\n"
-         "                     ^\n");
+         R"(test.wgsl:1:22 error: unable to parse right side of == expression
+fn f() { return 1 == >; }
+                     ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, ForLoopInitializerMissingSemicolon) {
   EXPECT("fn f() { for (var i : i32 = 0 i < 8; i=i+1) {} }",
-         "test.wgsl:1:31 error: expected ';' for initializer in for loop\n"
-         "fn f() { for (var i : i32 = 0 i < 8; i=i+1) {} }\n"
-         "                              ^\n");
+         R"(test.wgsl:1:31 error: expected ';' for initializer in for loop
+fn f() { for (var i : i32 = 0 i < 8; i=i+1) {} }
+                              ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, ForLoopInitializerMissingVar) {
   EXPECT("fn f() { for (i : i32 = 0; i < 8; i=i+1) {} }",
-         "test.wgsl:1:15 error: expected 'var' for variable declaration\n"
-         "fn f() { for (i : i32 = 0; i < 8; i=i+1) {} }\n"
-         "              ^\n");
+         R"(test.wgsl:1:15 error: expected 'var' for variable declaration
+fn f() { for (i : i32 = 0; i < 8; i=i+1) {} }
+              ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, ForLoopConditionMissingSemicolon) {
   EXPECT("fn f() { for (var i : i32 = 0; i < 8 i=i+1) {} }",
-         "test.wgsl:1:38 error: expected ';' for condition in for loop\n"
-         "fn f() { for (var i : i32 = 0; i < 8 i=i+1) {} }\n"
-         "                                     ^\n");
+         R"(test.wgsl:1:38 error: expected ';' for condition in for loop
+fn f() { for (var i : i32 = 0; i < 8 i=i+1) {} }
+                                     ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, ForLoopMissingLParen) {
   EXPECT("fn f() { for var i : i32 = 0; i < 8; i=i+1) {} }",
-         "test.wgsl:1:14 error: expected '(' for for loop\n"
-         "fn f() { for var i : i32 = 0; i < 8; i=i+1) {} }\n"
-         "             ^^^\n");
+         R"(test.wgsl:1:14 error: expected '(' for for loop
+fn f() { for var i : i32 = 0; i < 8; i=i+1) {} }
+             ^^^
+)");
 }
 
 TEST_F(ParserImplErrorTest, ForLoopMissingRParen) {
   EXPECT("fn f() { for (var i : i32 = 0; i < 8; i=i+1 {} }",
-         "test.wgsl:1:45 error: expected ')' for for loop\n"
-         "fn f() { for (var i : i32 = 0; i < 8; i=i+1 {} }\n"
-         "                                            ^\n");
+         R"(test.wgsl:1:45 error: expected ')' for for loop
+fn f() { for (var i : i32 = 0; i < 8; i=i+1 {} }
+                                            ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, ForLoopMissingLBrace) {
   EXPECT("fn f() { for (var i : i32 = 0; i < 8; i=i+1) }",
-         "test.wgsl:1:46 error: expected '{' for for loop\n"
-         "fn f() { for (var i : i32 = 0; i < 8; i=i+1) }\n"
-         "                                             ^\n");
+         R"(test.wgsl:1:46 error: expected '{' for for loop
+fn f() { for (var i : i32 = 0; i < 8; i=i+1) }
+                                             ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, ForLoopMissingRBrace) {
   EXPECT("fn f() { for (var i : i32 = 0; i < 8; i=i+1) {",
-         "test.wgsl:1:47 error: expected '}' for for loop\n"
-         "fn f() { for (var i : i32 = 0; i < 8; i=i+1) {\n"
-         "                                              ^\n");
-}
-
-TEST_F(ParserImplErrorTest, FunctionDeclDecoMissingEnd) {
-  EXPECT("[[stage(vertex) fn f() {}",
-         "test.wgsl:1:17 error: expected ']]' for decoration list\n"
-         "[[stage(vertex) fn f() {}\n"
-         "                ^^\n");
+         R"(test.wgsl:1:47 error: expected '}' for for loop
+fn f() { for (var i : i32 = 0; i < 8; i=i+1) {
+                                              ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, FunctionDeclDecoStageMissingLParen) {
-  EXPECT("[[stage vertex]] fn f() {}",
-         "test.wgsl:1:9 error: expected '(' for stage decoration\n"
-         "[[stage vertex]] fn f() {}\n"
-         "        ^^^^^^\n");
+  EXPECT(
+      "@stage vertex) fn f() {}",
+      R"(test.wgsl:1:8 error: expected '(' for stage decoration
+@stage vertex) fn f() {}
+       ^^^^^^
+)");
 }
 
 TEST_F(ParserImplErrorTest, FunctionDeclDecoStageMissingRParen) {
-  EXPECT("[[stage(vertex]] fn f() {}",
-         "test.wgsl:1:15 error: expected ')' for stage decoration\n"
-         "[[stage(vertex]] fn f() {}\n"
-         "              ^^\n");
+  EXPECT(
+      "@stage(vertex fn f() {}",
+      R"(test.wgsl:1:15 error: expected ')' for stage decoration
+@stage(vertex fn f() {}
+              ^^
+)");
+}
+
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplErrorTest, DEPRECATED_FunctionDeclDecoStageMissingLParen) {
+  EXPECT(
+      "[[stage vertex]] fn f() {}",
+      R"(test.wgsl:1:1 warning: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+[[stage vertex]] fn f() {}
+^^
+
+test.wgsl:1:9 error: expected '(' for stage decoration
+[[stage vertex]] fn f() {}
+        ^^^^^^
+)");
+}
+
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplErrorTest, DEPRECATED_FunctionDeclDecoStageMissingRParen) {
+  EXPECT(
+      "[[stage(vertex]] fn f() {}",
+      R"(test.wgsl:1:1 warning: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+[[stage(vertex]] fn f() {}
+^^
+
+test.wgsl:1:15 error: expected ')' for stage decoration
+[[stage(vertex]] fn f() {}
+              ^^
+)");
 }
 
 TEST_F(ParserImplErrorTest, FunctionDeclDecoStageInvalid) {
-  EXPECT("[[stage(x)]] fn f() {}",
-         "test.wgsl:1:9 error: invalid value for stage decoration\n"
-         "[[stage(x)]] fn f() {}\n"
-         "        ^\n");
+  EXPECT("@stage(x) fn f() {}",
+         R"(test.wgsl:1:8 error: invalid value for stage decoration
+@stage(x) fn f() {}
+       ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, FunctionDeclDecoStageTypeInvalid) {
-  EXPECT("[[shader(vertex)]] fn main() {}",
-         "test.wgsl:1:3 error: expected decoration\n"
-         "[[shader(vertex)]] fn main() {}\n"
-         "  ^^^^^^\n");
+  EXPECT("@shader(vertex) fn main() {}",
+         R"(test.wgsl:1:2 error: expected decoration
+@shader(vertex) fn main() {}
+ ^^^^^^
+
+test.wgsl:1:8 error: unexpected token
+@shader(vertex) fn main() {}
+       ^
+)");
 }
 
-TEST_F(ParserImplErrorTest, FunctionDeclDecoWorkgroupSizeMissingLParen) {
-  EXPECT("[[workgroup_size 1]] fn f() {}",
-         "test.wgsl:1:18 error: expected '(' for workgroup_size decoration\n"
-         "[[workgroup_size 1]] fn f() {}\n"
-         "                 ^\n");
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplErrorTest,
+       DEPRECATED_FunctionDeclDecoWorkgroupSizeMissingLParen) {
+  EXPECT(
+      "[[workgroup_size 1]] fn f() {}",
+      R"(test.wgsl:1:1 warning: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+[[workgroup_size 1]] fn f() {}
+^^
+
+test.wgsl:1:18 error: expected '(' for workgroup_size decoration
+[[workgroup_size 1]] fn f() {}
+                 ^
+)");
 }
 
-TEST_F(ParserImplErrorTest, FunctionDeclDecoWorkgroupSizeMissingRParen) {
-  EXPECT("[[workgroup_size(1]] fn f() {}",
-         "test.wgsl:1:19 error: expected ')' for workgroup_size decoration\n"
-         "[[workgroup_size(1]] fn f() {}\n"
-         "                  ^^\n");
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplErrorTest,
+       DEPRECATED_FunctionDeclDecoWorkgroupSizeMissingRParen) {
+  EXPECT(
+      "[[workgroup_size(1]] fn f() {}",
+      R"(test.wgsl:1:1 warning: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+[[workgroup_size(1]] fn f() {}
+^^
+
+test.wgsl:1:19 error: expected ')' for workgroup_size decoration
+[[workgroup_size(1]] fn f() {}
+                  ^^
+)");
 }
 
 TEST_F(ParserImplErrorTest, FunctionDeclDecoWorkgroupSizeXInvalid) {
-  EXPECT("[[workgroup_size()]] fn f() {}",
-         "test.wgsl:1:18 error: expected workgroup_size x parameter\n"
-         "[[workgroup_size()]] fn f() {}\n"
-         "                 ^\n");
+  EXPECT("@workgroup_size() fn f() {}",
+         R"(test.wgsl:1:17 error: expected workgroup_size x parameter
+@workgroup_size() fn f() {}
+                ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, FunctionDeclDecoWorkgroupSizeYInvalid) {
-  EXPECT("[[workgroup_size(1, )]] fn f() {}",
-         "test.wgsl:1:21 error: expected workgroup_size y parameter\n"
-         "[[workgroup_size(1, )]] fn f() {}\n"
-         "                    ^\n");
+  EXPECT("@workgroup_size(1, ) fn f() {}",
+         R"(test.wgsl:1:20 error: expected workgroup_size y parameter
+@workgroup_size(1, ) fn f() {}
+                   ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, FunctionDeclDecoWorkgroupSizeZInvalid) {
-  EXPECT("[[workgroup_size(1, 2, )]] fn f() {}",
-         "test.wgsl:1:24 error: expected workgroup_size z parameter\n"
-         "[[workgroup_size(1, 2, )]] fn f() {}\n"
-         "                       ^\n");
+  EXPECT("@workgroup_size(1, 2, ) fn f() {}",
+         R"(test.wgsl:1:23 error: expected workgroup_size z parameter
+@workgroup_size(1, 2, ) fn f() {}
+                      ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, FunctionDeclMissingIdentifier) {
   EXPECT("fn () {}",
-         "test.wgsl:1:4 error: expected identifier for function declaration\n"
-         "fn () {}\n"
-         "   ^\n");
+         R"(test.wgsl:1:4 error: expected identifier for function declaration
+fn () {}
+   ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, FunctionDeclMissingLParen) {
   EXPECT("fn f) {}",
-         "test.wgsl:1:5 error: expected '(' for function declaration\n"
-         "fn f) {}\n"
-         "    ^\n");
+         R"(test.wgsl:1:5 error: expected '(' for function declaration
+fn f) {}
+    ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, FunctionDeclMissingRParen) {
   EXPECT("fn f( {}",
-         "test.wgsl:1:7 error: expected ')' for function declaration\n"
-         "fn f( {}\n"
-         "      ^\n");
+         R"(test.wgsl:1:7 error: expected ')' for function declaration
+fn f( {}
+      ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, FunctionDeclMissingArrow) {
-  EXPECT("fn f() f32 {}",
-         "test.wgsl:1:8 error: expected '{'\n"
-         "fn f() f32 {}\n"
-         "       ^^^\n");
+  EXPECT("fn f() f32 {}", R"(test.wgsl:1:8 error: expected '{'
+fn f() f32 {}
+       ^^^
+)");
 }
 
 TEST_F(ParserImplErrorTest, FunctionDeclInvalidReturnType) {
   EXPECT("fn f() -> 1 {}",
-         "test.wgsl:1:11 error: unable to determine function return type\n"
-         "fn f() -> 1 {}\n"
-         "          ^\n");
+         R"(test.wgsl:1:11 error: unable to determine function return type
+fn f() -> 1 {}
+          ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, FunctionDeclParamMissingColon) {
-  EXPECT("fn f(x) {}",
-         "test.wgsl:1:7 error: expected ':' for parameter\n"
-         "fn f(x) {}\n"
-         "      ^\n");
+  EXPECT("fn f(x) {}", R"(test.wgsl:1:7 error: expected ':' for parameter
+fn f(x) {}
+      ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, FunctionDeclParamInvalidType) {
-  EXPECT("fn f(x : 1) {}",
-         "test.wgsl:1:10 error: invalid type for parameter\n"
-         "fn f(x : 1) {}\n"
-         "         ^\n");
+  EXPECT("fn f(x : 1) {}", R"(test.wgsl:1:10 error: invalid type for parameter
+fn f(x : 1) {}
+         ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, FunctionDeclParamMissing) {
   EXPECT("fn f(x : i32, ,) {}",
-         "test.wgsl:1:15 error: expected ')' for function declaration\n"
-         "fn f(x : i32, ,) {}\n"
-         "              ^\n");
+         R"(test.wgsl:1:15 error: expected ')' for function declaration
+fn f(x : i32, ,) {}
+              ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, FunctionDeclMissingLBrace) {
-  EXPECT("fn f() }",
-         "test.wgsl:1:8 error: expected '{'\n"
-         "fn f() }\n"
-         "       ^\n");
+  EXPECT("fn f() }", R"(test.wgsl:1:8 error: expected '{'
+fn f() }
+       ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, FunctionDeclMissingRBrace) {
-  EXPECT("fn f() {",
-         "test.wgsl:1:9 error: expected '}'\n"
-         "fn f() {\n"
-         "        ^\n");
+  EXPECT("fn f() {", R"(test.wgsl:1:9 error: expected '}'
+fn f() {
+        ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, FunctionScopeUnusedDecl) {
-  EXPECT("fn f(a:i32)->i32{return a;[[size(1)]]}",
-         "test.wgsl:1:29 error: unexpected decorations\n"
-         "fn f(a:i32)->i32{return a;[[size(1)]]}\n"
-         "                            ^^^^\n");
+  EXPECT("fn f(a:i32)->i32{return a;@size(1)}",
+         R"(test.wgsl:1:28 error: unexpected decorations
+fn f(a:i32)->i32{return a;@size(1)}
+                           ^^^^
+)");
 }
 
 TEST_F(ParserImplErrorTest, FunctionMissingOpenLine) {
@@ -427,64 +531,72 @@
   var a : f32 = bar[0];
   return;
 })",
-         "test.wgsl:2:17 error: unable to parse const_expr\n"
-         "  var a : f32 = bar[0];\n"
-         "                ^^^\n"
-         "\n"
-         "test.wgsl:3:3 error: statement found outside of function body\n"
-         "  return;\n"
-         "  ^^^^^^\n");
+         R"(test.wgsl:2:17 error: unable to parse const_expr
+  var a : f32 = bar[0];
+                ^^^
+
+test.wgsl:3:3 error: statement found outside of function body
+  return;
+  ^^^^^^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclConstInvalidIdentifier) {
   EXPECT("let ^ : i32 = 1;",
-         "test.wgsl:1:5 error: expected identifier for let declaration\n"
-         "let ^ : i32 = 1;\n"
-         "    ^\n");
+         R"(test.wgsl:1:5 error: expected identifier for let declaration
+let ^ : i32 = 1;
+    ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclConstMissingSemicolon) {
   EXPECT("let i : i32 = 1",
-         "test.wgsl:1:16 error: expected ';' for let declaration\n"
-         "let i : i32 = 1\n"
-         "               ^\n");
+         R"(test.wgsl:1:16 error: expected ';' for let declaration
+let i : i32 = 1
+               ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclConstMissingLParen) {
   EXPECT("let i : vec2<i32> = vec2<i32>;",
-         "test.wgsl:1:30 error: expected '(' for type constructor\n"
-         "let i : vec2<i32> = vec2<i32>;\n"
-         "                             ^\n");
+         R"(test.wgsl:1:30 error: expected '(' for type constructor
+let i : vec2<i32> = vec2<i32>;
+                             ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclConstMissingRParen) {
   EXPECT("let i : vec2<i32> = vec2<i32>(1., 2.;",
-         "test.wgsl:1:37 error: expected ')' for type constructor\n"
-         "let i : vec2<i32> = vec2<i32>(1., 2.;\n"
-         "                                    ^\n");
+         R"(test.wgsl:1:37 error: expected ')' for type constructor
+let i : vec2<i32> = vec2<i32>(1., 2.;
+                                    ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclConstBadConstLiteral) {
   EXPECT("let i : vec2<i32> = vec2<i32>(!);",
-         "test.wgsl:1:31 error: unable to parse const_expr\n"
-         "let i : vec2<i32> = vec2<i32>(!);\n"
-         "                              ^\n");
+         R"(test.wgsl:1:31 error: unable to parse const_expr
+let i : vec2<i32> = vec2<i32>(!);
+                              ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclConstBadConstLiteralSpaceLessThan) {
   EXPECT("let i = 1 < 2;",
-         "test.wgsl:1:11 error: expected \';\' for let declaration\n"
-         "let i = 1 < 2;\n"
-         "          ^\n");
+         R"(test.wgsl:1:11 error: expected ';' for let declaration
+let i = 1 < 2;
+          ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclConstNotConstExpr) {
   EXPECT(
       "let a = 1;\n"
       "let b = a;",
-      "test.wgsl:2:9 error: unable to parse const_expr\n"
-      "let b = a;\n"
-      "        ^\n");
+      R"(test.wgsl:2:9 error: unable to parse const_expr
+let b = a;
+        ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclConstExprMaxDepth) {
@@ -516,767 +628,1080 @@
 
 TEST_F(ParserImplErrorTest, GlobalDeclConstExprMissingLParen) {
   EXPECT("let i : vec2<i32> = vec2<i32> 1, 2);",
-         "test.wgsl:1:31 error: expected '(' for type constructor\n"
-         "let i : vec2<i32> = vec2<i32> 1, 2);\n"
-         "                              ^\n");
+         R"(test.wgsl:1:31 error: expected '(' for type constructor
+let i : vec2<i32> = vec2<i32> 1, 2);
+                              ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclConstExprMissingRParen) {
   EXPECT("let i : vec2<i32> = vec2<i32>(1, 2;",
-         "test.wgsl:1:35 error: expected ')' for type constructor\n"
-         "let i : vec2<i32> = vec2<i32>(1, 2;\n"
-         "                                  ^\n");
+         R"(test.wgsl:1:35 error: expected ')' for type constructor
+let i : vec2<i32> = vec2<i32>(1, 2;
+                                  ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclInvalidDeco) {
-  EXPECT("[[stage(vertex)]] x;",
-         "test.wgsl:1:19 error: expected declaration after decorations\n"
-         "[[stage(vertex)]] x;\n"
-         "                  ^\n");
+  EXPECT("@stage(vertex) x;",
+         R"(test.wgsl:1:16 error: expected declaration after decorations
+@stage(vertex) x;
+               ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclSampledTextureMissingLessThan) {
   EXPECT("var x : texture_1d;",
-         "test.wgsl:1:19 error: expected '<' for sampled texture type\n"
-         "var x : texture_1d;\n"
-         "                  ^\n");
+         R"(test.wgsl:1:19 error: expected '<' for sampled texture type
+var x : texture_1d;
+                  ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclSampledTextureMissingGreaterThan) {
   EXPECT("var x : texture_1d<f32;",
-         "test.wgsl:1:23 error: expected '>' for sampled texture type\n"
-         "var x : texture_1d<f32;\n"
-         "                      ^\n");
+         R"(test.wgsl:1:23 error: expected '>' for sampled texture type
+var x : texture_1d<f32;
+                      ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclSampledTextureInvalidSubtype) {
   EXPECT("var x : texture_1d<1>;",
-         "test.wgsl:1:20 error: invalid type for sampled texture type\n"
-         "var x : texture_1d<1>;\n"
-         "                   ^\n");
+         R"(test.wgsl:1:20 error: invalid type for sampled texture type
+var x : texture_1d<1>;
+                   ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclMultisampledTextureMissingLessThan) {
   EXPECT("var x : texture_multisampled_2d;",
-         "test.wgsl:1:32 error: expected '<' for multisampled texture type\n"
-         "var x : texture_multisampled_2d;\n"
-         "                               ^\n");
+         R"(test.wgsl:1:32 error: expected '<' for multisampled texture type
+var x : texture_multisampled_2d;
+                               ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclMultisampledTextureMissingGreaterThan) {
   EXPECT("var x : texture_multisampled_2d<f32;",
-         "test.wgsl:1:36 error: expected '>' for multisampled texture type\n"
-         "var x : texture_multisampled_2d<f32;\n"
-         "                                   ^\n");
+         R"(test.wgsl:1:36 error: expected '>' for multisampled texture type
+var x : texture_multisampled_2d<f32;
+                                   ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclMultisampledTextureInvalidSubtype) {
   EXPECT("var x : texture_multisampled_2d<1>;",
-         "test.wgsl:1:33 error: invalid type for multisampled texture type\n"
-         "var x : texture_multisampled_2d<1>;\n"
-         "                                ^\n");
+         R"(test.wgsl:1:33 error: invalid type for multisampled texture type
+var x : texture_multisampled_2d<1>;
+                                ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclStorageTextureMissingLessThan) {
   EXPECT("var x : texture_storage_2d;",
-         "test.wgsl:1:27 error: expected '<' for storage texture type\n"
-         "var x : texture_storage_2d;\n"
-         "                          ^\n");
+         R"(test.wgsl:1:27 error: expected '<' for storage texture type
+var x : texture_storage_2d;
+                          ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclStorageTextureMissingGreaterThan) {
   EXPECT("var x : texture_storage_2d<r32uint, read;",
-         "test.wgsl:1:41 error: expected '>' for storage texture type\n"
-         "var x : texture_storage_2d<r32uint, read;\n"
-         "                                        ^\n");
+         R"(test.wgsl:1:41 error: expected '>' for storage texture type
+var x : texture_storage_2d<r32uint, read;
+                                        ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclStorageTextureMissingSubtype) {
   EXPECT("var x : texture_storage_2d<>;",
-         "test.wgsl:1:28 error: invalid format for storage texture type\n"
-         "var x : texture_storage_2d<>;\n"
-         "                           ^\n");
+         R"(test.wgsl:1:28 error: invalid format for storage texture type
+var x : texture_storage_2d<>;
+                           ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclStorageTextureMissingInvalidSubtype) {
   EXPECT("var x : texture_storage_2d<1>;",
-         "test.wgsl:1:28 error: invalid format for storage texture type\n"
-         "var x : texture_storage_2d<1>;\n"
-         "                           ^\n");
+         R"(test.wgsl:1:28 error: invalid format for storage texture type
+var x : texture_storage_2d<1>;
+                           ^
+)");
 }
 
 // TODO(crbug.com/tint/1324): DEPRECATED: Remove when [[block]] is removed.
-TEST_F(ParserImplErrorTest, GlobalDeclStructDecoMissingStruct) {
-  EXPECT("[[block]];",
-         "test.wgsl:1:3 warning: use of deprecated language feature: [[block]] "
-         "attributes have been removed from WGSL\n"
-         "[[block]];\n"
-         "  ^^^^^\n\n"
-         "test.wgsl:1:10 error: expected declaration after decorations\n"
-         "[[block]];\n"
-         "         ^\n");
+TEST_F(ParserImplErrorTest, DEPRECATED_GlobalDeclStructDecoMissingStruct) {
+  EXPECT(
+      "[[block]];",
+      R"(test.wgsl:1:1 warning: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+[[block]];
+^^
+
+test.wgsl:1:3 warning: use of deprecated language feature: [[block]] attributes have been removed from WGSL
+[[block]];
+  ^^^^^
+
+test.wgsl:1:10 error: expected declaration after decorations
+[[block]];
+         ^
+)");
 }
 
 // TODO(crbug.com/tint/1324): DEPRECATED: Remove when [[block]] is removed.
-TEST_F(ParserImplErrorTest, GlobalDeclStructDecoMissingEnd) {
-  EXPECT("[[block struct {};",
-         "test.wgsl:1:3 warning: use of deprecated language feature: [[block]] "
-         "attributes have been removed from WGSL\n"
-         "[[block struct {};\n"
-         "  ^^^^^\n\n"
-         "test.wgsl:1:9 error: expected ']]' for decoration list\n"
-         "[[block struct {};\n"
-         "        ^^^^^^\n");
+TEST_F(ParserImplErrorTest, DEPRECATED_GlobalDeclStructDecoMissingEnd) {
+  EXPECT(
+      "[[block struct {};",
+      R"(test.wgsl:1:1 warning: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+[[block struct {};
+^^
+
+test.wgsl:1:3 warning: use of deprecated language feature: [[block]] attributes have been removed from WGSL
+[[block struct {};
+  ^^^^^
+
+test.wgsl:1:9 error: expected ']]' for decoration list
+[[block struct {};
+        ^^^^^^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclStructDeclMissingIdentifier) {
   EXPECT("struct {};",
-         "test.wgsl:1:8 error: expected identifier for struct declaration\n"
-         "struct {};\n"
-         "       ^\n");
+         R"(test.wgsl:1:8 error: expected identifier for struct declaration
+struct {};
+       ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclStructDeclMissingLBrace) {
   EXPECT("struct S };",
-         "test.wgsl:1:10 error: expected '{' for struct declaration\n"
-         "struct S };\n"
-         "         ^\n");
+         R"(test.wgsl:1:10 error: expected '{' for struct declaration
+struct S };
+         ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclStructDeclMissingRBrace) {
   EXPECT("struct S { i : i32;",
-         "test.wgsl:1:20 error: expected '}' for struct declaration\n"
-         "struct S { i : i32;\n"
-         "                   ^\n");
+         R"(test.wgsl:1:20 error: expected '}' for struct declaration
+struct S { i : i32;
+                   ^
+)");
 }
 
-TEST_F(ParserImplErrorTest, GlobalDeclStructMemberDecoEmpty) {
-  EXPECT("struct S { [[]] i : i32; };",
-         "test.wgsl:1:14 error: empty decoration list\n"
-         "struct S { [[]] i : i32; };\n"
-         "             ^^\n");
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplErrorTest, DEPRECATED_GlobalDeclStructMemberDecoEmpty) {
+  EXPECT(
+      "struct S { [[]] i : i32; };",
+      R"(test.wgsl:1:12 warning: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+struct S { [[]] i : i32; };
+           ^^
+
+test.wgsl:1:14 error: empty decoration list
+struct S { [[]] i : i32; };
+             ^^
+)");
 }
 
-TEST_F(ParserImplErrorTest, GlobalDeclStructMemberDecoMissingEnd) {
-  EXPECT("struct S { [[ i : i32; };",
-         "test.wgsl:1:15 error: expected decoration\n"
-         "struct S { [[ i : i32; };\n"
-         "              ^\n");
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplErrorTest, DEPRECATED_GlobalDeclStructMemberDecoMissingEnd) {
+  EXPECT(
+      "struct S { [[ i : i32; };",
+      R"(test.wgsl:1:12 warning: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+struct S { [[ i : i32; };
+           ^^
+
+test.wgsl:1:15 error: expected decoration
+struct S { [[ i : i32; };
+              ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclStructMemberInvalidIdentifier) {
   EXPECT("struct S { 1 : i32; };",
-         "test.wgsl:1:12 error: expected identifier for struct member\n"
-         "struct S { 1 : i32; };\n"
-         "           ^\n");
+         R"(test.wgsl:1:12 error: expected identifier for struct member
+struct S { 1 : i32; };
+           ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclStructMemberMissingSemicolon) {
   EXPECT("struct S { i : i32 };",
-         "test.wgsl:1:20 error: expected ';' for struct member\n"
-         "struct S { i : i32 };\n"
-         "                   ^\n");
+         R"(test.wgsl:1:20 error: expected ';' for struct member
+struct S { i : i32 };
+                   ^
+)");
 }
 
-TEST_F(ParserImplErrorTest, GlobalDeclStructMemberAlignMissingLParen) {
-  EXPECT("struct S { [[align 1)]] i : i32; };",
-         "test.wgsl:1:20 error: expected '(' for align decoration\n"
-         "struct S { [[align 1)]] i : i32; };\n"
-         "                   ^\n");
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplErrorTest,
+       DEPRECATED_GlobalDeclStructMemberAlignMissingLParen) {
+  EXPECT(
+      "struct S { [[align 1)]] i : i32; };",
+      R"(test.wgsl:1:12 warning: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+struct S { [[align 1)]] i : i32; };
+           ^^
+
+test.wgsl:1:20 error: expected '(' for align decoration
+struct S { [[align 1)]] i : i32; };
+                   ^
+)");
 }
 
-TEST_F(ParserImplErrorTest, GlobalDeclStructMemberAlignMissingRParen) {
-  EXPECT("struct S { [[align(1]] i : i32; };",
-         "test.wgsl:1:21 error: expected ')' for align decoration\n"
-         "struct S { [[align(1]] i : i32; };\n"
-         "                    ^^\n");
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplErrorTest,
+       DEPRECATED_GlobalDeclStructMemberAlignMissingRParen) {
+  EXPECT(
+      "struct S { [[align(1]] i : i32; };",
+      R"(test.wgsl:1:12 warning: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+struct S { [[align(1]] i : i32; };
+           ^^
+
+test.wgsl:1:21 error: expected ')' for align decoration
+struct S { [[align(1]] i : i32; };
+                    ^^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclStructMemberAlignInvaldValue) {
-  EXPECT("struct S { [[align(x)]] i : i32; };",
-         "test.wgsl:1:20 error: expected signed integer literal for align "
-         "decoration\n"
-         "struct S { [[align(x)]] i : i32; };\n"
-         "                   ^\n");
+  EXPECT(
+      "struct S { @align(x) i : i32; };",
+      R"(test.wgsl:1:19 error: expected signed integer literal for align decoration
+struct S { @align(x) i : i32; };
+                  ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclStructMemberAlignNegativeValue) {
-  EXPECT("struct S { [[align(-2)]] i : i32; };",
-         "test.wgsl:1:20 error: align decoration must be positive\n"
-         "struct S { [[align(-2)]] i : i32; };\n"
-         "                   ^^\n");
+  EXPECT("struct S { @align(-2) i : i32; };",
+         R"(test.wgsl:1:19 error: align decoration must be positive
+struct S { @align(-2) i : i32; };
+                  ^^
+)");
 }
 
-TEST_F(ParserImplErrorTest, GlobalDeclStructMemberSizeMissingLParen) {
-  EXPECT("struct S { [[size 1)]] i : i32; };",
-         "test.wgsl:1:19 error: expected '(' for size decoration\n"
-         "struct S { [[size 1)]] i : i32; };\n"
-         "                  ^\n");
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplErrorTest,
+       DEPRECATED_GlobalDeclStructMemberSizeMissingLParen) {
+  EXPECT(
+      "struct S { [[size 1)]] i : i32; };",
+      R"(test.wgsl:1:12 warning: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+struct S { [[size 1)]] i : i32; };
+           ^^
+
+test.wgsl:1:19 error: expected '(' for size decoration
+struct S { [[size 1)]] i : i32; };
+                  ^
+)");
 }
 
-TEST_F(ParserImplErrorTest, GlobalDeclStructMemberSizeMissingRParen) {
-  EXPECT("struct S { [[size(1]] i : i32; };",
-         "test.wgsl:1:20 error: expected ')' for size decoration\n"
-         "struct S { [[size(1]] i : i32; };\n"
-         "                   ^^\n");
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplErrorTest,
+       DEPRECATED_GlobalDeclStructMemberSizeMissingRParen) {
+  EXPECT(
+      "struct S { [[size(1]] i : i32; };",
+      R"(test.wgsl:1:12 warning: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+struct S { [[size(1]] i : i32; };
+           ^^
+
+test.wgsl:1:20 error: expected ')' for size decoration
+struct S { [[size(1]] i : i32; };
+                   ^^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclStructMemberSizeInvaldValue) {
-  EXPECT("struct S { [[size(x)]] i : i32; };",
-         "test.wgsl:1:19 error: expected signed integer literal for size "
-         "decoration\n"
-         "struct S { [[size(x)]] i : i32; };\n"
-         "                  ^\n");
+  EXPECT(
+      "struct S { @size(x) i : i32; };",
+      R"(test.wgsl:1:18 error: expected signed integer literal for size decoration
+struct S { @size(x) i : i32; };
+                 ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclStructMemberSizeNegativeValue) {
-  EXPECT("struct S { [[size(-2)]] i : i32; };",
-         "test.wgsl:1:19 error: size decoration must be positive\n"
-         "struct S { [[size(-2)]] i : i32; };\n"
-         "                  ^^\n");
+  EXPECT("struct S { @size(-2) i : i32; };",
+         R"(test.wgsl:1:18 error: size decoration must be positive
+struct S { @size(-2) i : i32; };
+                 ^^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclTypeAliasMissingIdentifier) {
   EXPECT("type 1 = f32;",
-         "test.wgsl:1:6 error: expected identifier for type alias\n"
-         "type 1 = f32;\n"
-         "     ^\n");
+         R"(test.wgsl:1:6 error: expected identifier for type alias
+type 1 = f32;
+     ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclTypeAliasInvalidType) {
-  EXPECT("type meow = 1;",
-         "test.wgsl:1:13 error: invalid type alias\n"
-         "type meow = 1;\n"
-         "            ^\n");
+  EXPECT("type meow = 1;", R"(test.wgsl:1:13 error: invalid type alias
+type meow = 1;
+            ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclTypeAliasMissingAssignment) {
-  EXPECT("type meow f32",
-         "test.wgsl:1:11 error: expected '=' for type alias\n"
-         "type meow f32\n"
-         "          ^^^\n");
+  EXPECT("type meow f32", R"(test.wgsl:1:11 error: expected '=' for type alias
+type meow f32
+          ^^^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclTypeAliasMissingSemicolon) {
-  EXPECT("type meow = f32",
-         "test.wgsl:1:16 error: expected ';' for type alias\n"
-         "type meow = f32\n"
-         "               ^\n");
+  EXPECT("type meow = f32", R"(test.wgsl:1:16 error: expected ';' for type alias
+type meow = f32
+               ^
+)");
 }
 
-TEST_F(ParserImplErrorTest, GlobalDeclTypeDecoInvalid) {
-  EXPECT("var x : [[]] i32;",
-         "test.wgsl:1:11 error: empty decoration list\n"
-         "var x : [[]] i32;\n"
-         "          ^^\n");
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplErrorTest, DEPRECATED_GlobalDeclTypeDecoInvalid) {
+  EXPECT(
+      "var x : [[]] i32;",
+      R"(test.wgsl:1:9 warning: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+var x : [[]] i32;
+        ^^
+
+test.wgsl:1:11 error: empty decoration list
+var x : [[]] i32;
+          ^^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclVarArrayMissingLessThan) {
   EXPECT("var i : array;",
-         "test.wgsl:1:14 error: expected '<' for array declaration\n"
-         "var i : array;\n"
-         "             ^\n");
+         R"(test.wgsl:1:14 error: expected '<' for array declaration
+var i : array;
+             ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclVarArrayMissingGreaterThan) {
   EXPECT("var i : array<u32, 3;",
-         "test.wgsl:1:21 error: expected '>' for array declaration\n"
-         "var i : array<u32, 3;\n"
-         "                    ^\n");
+         R"(test.wgsl:1:21 error: expected '>' for array declaration
+var i : array<u32, 3;
+                    ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclVarArrayDecoNotArray) {
-  EXPECT("var i : [[stride(1)]] i32;",
-         "test.wgsl:1:11 error: unexpected decorations\n"
-         "var i : [[stride(1)]] i32;\n"
-         "          ^^^^^^\n");
+  EXPECT("var i : @stride(1) i32;",
+         R"(test.wgsl:1:10 error: unexpected decorations
+var i : @stride(1) i32;
+         ^^^^^^
+)");
 }
 
-TEST_F(ParserImplErrorTest, GlobalDeclVarArrayDecoMissingEnd) {
-  EXPECT("var i : [[stride(1) array<i32>;",
-         "test.wgsl:1:21 error: expected ']]' for decoration list\n"
-         "var i : [[stride(1) array<i32>;\n"
-         "                    ^^^^^\n");
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplErrorTest, DEPRECATED_GlobalDeclVarArrayDecoMissingEnd) {
+  EXPECT(
+      "var i : [[stride(1) array<i32>;",
+      R"(test.wgsl:1:9 warning: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+var i : [[stride(1) array<i32>;
+        ^^
+
+test.wgsl:1:21 error: expected ']]' for decoration list
+var i : [[stride(1) array<i32>;
+                    ^^^^^
+)");
 }
 
-TEST_F(ParserImplErrorTest, GlobalDeclVarArrayDecoStrideMissingLParen) {
-  EXPECT("var i : [[stride 1)]] array<i32>;",
-         "test.wgsl:1:18 error: expected '(' for stride decoration\n"
-         "var i : [[stride 1)]] array<i32>;\n"
-         "                 ^\n");
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplErrorTest,
+       DEPRECATED_GlobalDeclVarArrayDecoStrideMissingLParen) {
+  EXPECT(
+      "var i : [[stride 1)]] array<i32>;",
+      R"(test.wgsl:1:9 warning: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+var i : [[stride 1)]] array<i32>;
+        ^^
+
+test.wgsl:1:18 error: expected '(' for stride decoration
+var i : [[stride 1)]] array<i32>;
+                 ^
+)");
 }
 
-TEST_F(ParserImplErrorTest, GlobalDeclVarArrayDecoStrideMissingRParen) {
-  EXPECT("var i : [[stride(1]] array<i32>;",
-         "test.wgsl:1:19 error: expected ')' for stride decoration\n"
-         "var i : [[stride(1]] array<i32>;\n"
-         "                  ^^\n");
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplErrorTest,
+       DEPRECATED_GlobalDeclVarArrayDecoStrideMissingRParen) {
+  EXPECT(
+      "var i : [[stride(1]] array<i32>;",
+      R"(test.wgsl:1:9 warning: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+var i : [[stride(1]] array<i32>;
+        ^^
+
+test.wgsl:1:19 error: expected ')' for stride decoration
+var i : [[stride(1]] array<i32>;
+                  ^^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclVarArrayDecoStrideInvalid) {
-  EXPECT("var i : [[stride(x)]] array<i32>;",
-         "test.wgsl:1:18 error: expected signed integer literal for stride "
-         "decoration\n"
-         "var i : [[stride(x)]] array<i32>;\n"
-         "                 ^\n");
+  EXPECT(
+      "var i : @stride(x) array<i32>;",
+      R"(test.wgsl:1:17 error: expected signed integer literal for stride decoration
+var i : @stride(x) array<i32>;
+                ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclVarArrayDecoStrideNegative) {
-  EXPECT("var i : [[stride(-1)]] array<i32>;",
-         "test.wgsl:1:18 error: stride decoration must be greater than 0\n"
-         "var i : [[stride(-1)]] array<i32>;\n"
-         "                 ^^\n");
+  EXPECT("var i : @stride(-1) array<i32>;",
+         R"(test.wgsl:1:17 error: stride decoration must be greater than 0
+var i : @stride(-1) array<i32>;
+                ^^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclVarArrayMissingType) {
   EXPECT("var i : array<1, 3>;",
-         "test.wgsl:1:15 error: invalid type for array declaration\n"
-         "var i : array<1, 3>;\n"
-         "              ^\n");
+         R"(test.wgsl:1:15 error: invalid type for array declaration
+var i : array<1, 3>;
+              ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclVarArrayMissingSize) {
   EXPECT("var i : array<u32, >;",
-         "test.wgsl:1:20 error: expected array size expression\n"
-         "var i : array<u32, >;\n"
-         "                   ^\n");
+         R"(test.wgsl:1:20 error: expected array size expression
+var i : array<u32, >;
+                   ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclVarArrayInvalidSize) {
   EXPECT("var i : array<u32, !>;",
-         "test.wgsl:1:20 error: expected array size expression\n"
-         "var i : array<u32, !>;\n"
-         "                   ^\n");
+         R"(test.wgsl:1:20 error: expected array size expression
+var i : array<u32, !>;
+                   ^
+)");
 }
 
-TEST_F(ParserImplErrorTest, GlobalDeclVarDecoListEmpty) {
-  EXPECT("[[]] var i : i32;",
-         "test.wgsl:1:3 error: empty decoration list\n"
-         "[[]] var i : i32;\n"
-         "  ^^\n");
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplErrorTest, DEPRECATED_GlobalDeclVarDecoListEmpty) {
+  EXPECT(
+      "[[]] var i : i32;",
+      R"(test.wgsl:1:1 warning: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+[[]] var i : i32;
+^^
+
+test.wgsl:1:3 error: empty decoration list
+[[]] var i : i32;
+  ^^
+)");
 }
 
-TEST_F(ParserImplErrorTest, GlobalDeclVarDecoListInvalid) {
-  EXPECT("[[location(1), meow]] var i : i32;",
-         "test.wgsl:1:16 error: expected decoration\n"
-         "[[location(1), meow]] var i : i32;\n"
-         "               ^^^^\n");
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplErrorTest, DEPRECATED_GlobalDeclVarDecoListInvalid) {
+  EXPECT(
+      "[[location(1), meow]] var i : i32;",
+      R"(test.wgsl:1:1 warning: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+[[location(1), meow]] var i : i32;
+^^
+
+test.wgsl:1:16 error: expected decoration
+[[location(1), meow]] var i : i32;
+               ^^^^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclVarDecoListMissingComma) {
-  EXPECT("[[location(1) group(2)]] var i : i32;",
-         "test.wgsl:1:15 error: expected ',' for decoration list\n"
-         "[[location(1) group(2)]] var i : i32;\n"
-         "              ^^^^^\n");
+  EXPECT("@location(1) group(2) var i : i32;",
+         R"(test.wgsl:1:14 error: expected declaration after decorations
+@location(1) group(2) var i : i32;
+             ^^^^^
+
+test.wgsl:1:19 error: unexpected token
+@location(1) group(2) var i : i32;
+                  ^
+)");
 }
 
-TEST_F(ParserImplErrorTest, GlobalDeclVarDecoListMissingEnd) {
-  EXPECT("[[location(1) meow]] var i : i32;",
-         "test.wgsl:1:15 error: expected ']]' for decoration list\n"
-         "[[location(1) meow]] var i : i32;\n"
-         "              ^^^^\n");
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplErrorTest, DEPRECATED_GlobalDeclVarDecoListMissingEnd) {
+  EXPECT(
+      "[[location(1) meow]] var i : i32;",
+      R"(test.wgsl:1:1 warning: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+[[location(1) meow]] var i : i32;
+^^
+
+test.wgsl:1:15 error: expected ']]' for decoration list
+[[location(1) meow]] var i : i32;
+              ^^^^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclVarDecoLocationMissingLParen) {
-  EXPECT("[[location 1]] var i : i32;",
-         "test.wgsl:1:12 error: expected '(' for location decoration\n"
-         "[[location 1]] var i : i32;\n"
-         "           ^\n");
+  EXPECT(
+      "@location 1) var i : i32;",
+      R"(test.wgsl:1:11 error: expected '(' for location decoration
+@location 1) var i : i32;
+          ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclVarDecoLocationMissingRParen) {
-  EXPECT("[[location (1]] var i : i32;",
-         "test.wgsl:1:14 error: expected ')' for location decoration\n"
-         "[[location (1]] var i : i32;\n"
-         "             ^^\n");
+  EXPECT(
+      "@location (1 var i : i32;",
+      R"(test.wgsl:1:14 error: expected ')' for location decoration
+@location (1 var i : i32;
+             ^^^
+)");
+}
+
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplErrorTest, DEPRECATED_GlobalDeclVarDecoLocationMissingLParen) {
+  EXPECT(
+      "[[location 1]] var i : i32;",
+      R"(test.wgsl:1:1 warning: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+[[location 1]] var i : i32;
+^^
+
+test.wgsl:1:12 error: expected '(' for location decoration
+[[location 1]] var i : i32;
+           ^
+)");
+}
+
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplErrorTest, DEPRECATED_GlobalDeclVarDecoLocationMissingRParen) {
+  EXPECT(
+      "[[location (1]] var i : i32;",
+      R"(test.wgsl:1:1 warning: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+[[location (1]] var i : i32;
+^^
+
+test.wgsl:1:14 error: expected ')' for location decoration
+[[location (1]] var i : i32;
+             ^^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclVarDecoLocationInvalidValue) {
-  EXPECT("[[location(x)]] var i : i32;",
-         "test.wgsl:1:12 error: expected signed integer literal for location "
-         "decoration\n"
-         "[[location(x)]] var i : i32;\n"
-         "           ^\n");
+  EXPECT(
+      "@location(x) var i : i32;",
+      R"(test.wgsl:1:11 error: expected signed integer literal for location decoration
+@location(x) var i : i32;
+          ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclVarDecoBuiltinMissingLParen) {
-  EXPECT("[[builtin position]] var i : i32;",
-         "test.wgsl:1:11 error: expected '(' for builtin decoration\n"
-         "[[builtin position]] var i : i32;\n"
-         "          ^^^^^^^^\n");
+  EXPECT(
+      "@builtin position) var i : i32;",
+      R"(test.wgsl:1:10 error: expected '(' for builtin decoration
+@builtin position) var i : i32;
+         ^^^^^^^^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclVarDecoBuiltinMissingRParen) {
-  EXPECT("[[builtin(position]] var i : i32;",
-         "test.wgsl:1:19 error: expected ')' for builtin decoration\n"
-         "[[builtin(position]] var i : i32;\n"
-         "                  ^^\n");
+  EXPECT(
+      "@builtin(position var i : i32;",
+      R"(test.wgsl:1:19 error: expected ')' for builtin decoration
+@builtin(position var i : i32;
+                  ^^^
+)");
+}
+
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplErrorTest, DEPRECATED_GlobalDeclVarDecoBuiltinMissingLParen) {
+  EXPECT(
+      "[[builtin position]] var i : i32;",
+      R"(test.wgsl:1:1 warning: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+[[builtin position]] var i : i32;
+^^
+
+test.wgsl:1:11 error: expected '(' for builtin decoration
+[[builtin position]] var i : i32;
+          ^^^^^^^^
+)");
+}
+
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplErrorTest, DEPRECATED_GlobalDeclVarDecoBuiltinMissingRParen) {
+  EXPECT(
+      "[[builtin(position]] var i : i32;",
+      R"(test.wgsl:1:1 warning: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+[[builtin(position]] var i : i32;
+^^
+
+test.wgsl:1:19 error: expected ')' for builtin decoration
+[[builtin(position]] var i : i32;
+                  ^^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclVarDecoBuiltinInvalidIdentifer) {
-  EXPECT("[[builtin(1)]] var i : i32;",
-         "test.wgsl:1:11 error: expected identifier for builtin\n"
-         "[[builtin(1)]] var i : i32;\n"
-         "          ^\n");
+  EXPECT("@builtin(1) var i : i32;",
+         R"(test.wgsl:1:10 error: expected identifier for builtin
+@builtin(1) var i : i32;
+         ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclVarDecoBuiltinInvalidValue) {
-  EXPECT("[[builtin(x)]] var i : i32;",
-         "test.wgsl:1:11 error: invalid value for builtin decoration\n"
-         "[[builtin(x)]] var i : i32;\n"
-         "          ^\n");
+  EXPECT("@builtin(x) var i : i32;",
+         R"(test.wgsl:1:10 error: invalid value for builtin decoration
+@builtin(x) var i : i32;
+         ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclVarDecoBindingMissingLParen) {
-  EXPECT("[[binding 1]] var i : i32;",
-         "test.wgsl:1:11 error: expected '(' for binding decoration\n"
-         "[[binding 1]] var i : i32;\n"
-         "          ^\n");
+  EXPECT(
+      "@binding 1) var i : i32;",
+      R"(test.wgsl:1:10 error: expected '(' for binding decoration
+@binding 1) var i : i32;
+         ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclVarDecoBindingMissingRParen) {
-  EXPECT("[[binding(1]] var i : i32;",
-         "test.wgsl:1:12 error: expected ')' for binding decoration\n"
-         "[[binding(1]] var i : i32;\n"
-         "           ^^\n");
+  EXPECT(
+      "@binding(1 var i : i32;",
+      R"(test.wgsl:1:12 error: expected ')' for binding decoration
+@binding(1 var i : i32;
+           ^^^
+)");
+}
+
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplErrorTest, DEPRECATED_GlobalDeclVarDecoBindingMissingLParen) {
+  EXPECT(
+      "[[binding 1]] var i : i32;",
+      R"(test.wgsl:1:1 warning: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+[[binding 1]] var i : i32;
+^^
+
+test.wgsl:1:11 error: expected '(' for binding decoration
+[[binding 1]] var i : i32;
+          ^
+)");
+}
+
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplErrorTest, DEPRECATED_GlobalDeclVarDecoBindingMissingRParen) {
+  EXPECT(
+      "[[binding(1]] var i : i32;",
+      R"(test.wgsl:1:1 warning: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+[[binding(1]] var i : i32;
+^^
+
+test.wgsl:1:12 error: expected ')' for binding decoration
+[[binding(1]] var i : i32;
+           ^^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclVarDecoBindingInvalidValue) {
-  EXPECT("[[binding(x)]] var i : i32;",
-         "test.wgsl:1:11 error: expected signed integer literal for binding "
-         "decoration\n"
-         "[[binding(x)]] var i : i32;\n"
-         "          ^\n");
+  EXPECT(
+      "@binding(x) var i : i32;",
+      R"(test.wgsl:1:10 error: expected signed integer literal for binding decoration
+@binding(x) var i : i32;
+         ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclVarDecoGroupMissingLParen) {
-  EXPECT("[[group 1]] var i : i32;",
-         "test.wgsl:1:9 error: expected '(' for group decoration\n"
-         "[[group 1]] var i : i32;\n"
-         "        ^\n");
+  EXPECT(
+      "@group 1) var i : i32;",
+      R"(test.wgsl:1:8 error: expected '(' for group decoration
+@group 1) var i : i32;
+       ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclVarDecoGroupMissingRParen) {
-  EXPECT("[[group(1]] var i : i32;",
-         "test.wgsl:1:10 error: expected ')' for group decoration\n"
-         "[[group(1]] var i : i32;\n"
-         "         ^^\n");
+  EXPECT(
+      "@group(1 var i : i32;",
+      R"(test.wgsl:1:10 error: expected ')' for group decoration
+@group(1 var i : i32;
+         ^^^
+)");
+}
+
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplErrorTest, DEPRECATED_GlobalDeclVarDecoGroupMissingLParen) {
+  EXPECT(
+      "[[group 1]] var i : i32;",
+      R"(test.wgsl:1:1 warning: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+[[group 1]] var i : i32;
+^^
+
+test.wgsl:1:9 error: expected '(' for group decoration
+[[group 1]] var i : i32;
+        ^
+)");
+}
+
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplErrorTest, DEPRECATED_GlobalDeclVarDecoGroupMissingRParen) {
+  EXPECT(
+      "[[group(1]] var i : i32;",
+      R"(test.wgsl:1:1 warning: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+[[group(1]] var i : i32;
+^^
+
+test.wgsl:1:10 error: expected ')' for group decoration
+[[group(1]] var i : i32;
+         ^^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclVarDecoBindingGroupValue) {
-  EXPECT("[[group(x)]] var i : i32;",
-         "test.wgsl:1:9 error: expected signed integer literal for group "
-         "decoration\n"
-         "[[group(x)]] var i : i32;\n"
-         "        ^\n");
+  EXPECT(
+      "@group(x) var i : i32;",
+      R"(test.wgsl:1:8 error: expected signed integer literal for group decoration
+@group(x) var i : i32;
+       ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclVarInvalidIdentifier) {
   EXPECT("var ^ : mat4x4;",
-         "test.wgsl:1:5 error: expected identifier for variable declaration\n"
-         "var ^ : mat4x4;\n"
-         "    ^\n");
+         R"(test.wgsl:1:5 error: expected identifier for variable declaration
+var ^ : mat4x4;
+    ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclVarMatrixMissingGreaterThan) {
-  EXPECT("var i : mat4x4<u32;",
-         "test.wgsl:1:19 error: expected '>' for matrix\n"
-         "var i : mat4x4<u32;\n"
-         "                  ^\n");
+  EXPECT("var i : mat4x4<u32;", R"(test.wgsl:1:19 error: expected '>' for matrix
+var i : mat4x4<u32;
+                  ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclVarMatrixMissingType) {
-  EXPECT("var i : mat4x4<1>;",
-         "test.wgsl:1:16 error: invalid type for matrix\n"
-         "var i : mat4x4<1>;\n"
-         "               ^\n");
+  EXPECT("var i : mat4x4<1>;", R"(test.wgsl:1:16 error: invalid type for matrix
+var i : mat4x4<1>;
+               ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclVarMissingSemicolon) {
   EXPECT("var i : i32",
-         "test.wgsl:1:12 error: expected ';' for variable declaration\n"
-         "var i : i32\n"
-         "           ^\n");
+         R"(test.wgsl:1:12 error: expected ';' for variable declaration
+var i : i32
+           ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclVarPtrMissingLessThan) {
   EXPECT("var i : ptr;",
-         "test.wgsl:1:12 error: expected '<' for ptr declaration\n"
-         "var i : ptr;\n"
-         "           ^\n");
+         R"(test.wgsl:1:12 error: expected '<' for ptr declaration
+var i : ptr;
+           ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclVarPtrMissingGreaterThan) {
   EXPECT("var i : ptr<private, u32;",
-         "test.wgsl:1:25 error: expected '>' for ptr declaration\n"
-         "var i : ptr<private, u32;\n"
-         "                        ^\n");
+         R"(test.wgsl:1:25 error: expected '>' for ptr declaration
+var i : ptr<private, u32;
+                        ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclVarPtrMissingComma) {
   EXPECT("var i : ptr<private u32>;",
-         "test.wgsl:1:21 error: expected ',' for ptr declaration\n"
-         "var i : ptr<private u32>;\n"
-         "                    ^^^\n");
+         R"(test.wgsl:1:21 error: expected ',' for ptr declaration
+var i : ptr<private u32>;
+                    ^^^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclVarPtrMissingStorageClass) {
   EXPECT("var i : ptr<meow, u32>;",
-         "test.wgsl:1:13 error: invalid storage class for ptr declaration\n"
-         "var i : ptr<meow, u32>;\n"
-         "            ^^^^\n");
+         R"(test.wgsl:1:13 error: invalid storage class for ptr declaration
+var i : ptr<meow, u32>;
+            ^^^^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclVarPtrMissingType) {
   EXPECT("var i : ptr<private, 1>;",
-         "test.wgsl:1:22 error: invalid type for ptr declaration\n"
-         "var i : ptr<private, 1>;\n"
-         "                     ^\n");
+         R"(test.wgsl:1:22 error: invalid type for ptr declaration
+var i : ptr<private, 1>;
+                     ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclVarAtomicMissingLessThan) {
   EXPECT("var i : atomic;",
-         "test.wgsl:1:15 error: expected '<' for atomic declaration\n"
-         "var i : atomic;\n"
-         "              ^\n");
+         R"(test.wgsl:1:15 error: expected '<' for atomic declaration
+var i : atomic;
+              ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclVarAtomicMissingGreaterThan) {
   EXPECT("var i : atomic<u32 x;",
-         "test.wgsl:1:20 error: expected '>' for atomic declaration\n"
-         "var i : atomic<u32 x;\n"
-         "                   ^\n");
+         R"(test.wgsl:1:20 error: expected '>' for atomic declaration
+var i : atomic<u32 x;
+                   ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclVarStorageDeclInvalidClass) {
   EXPECT("var<fish> i : i32",
-         "test.wgsl:1:5 error: invalid storage class for variable declaration\n"
-         "var<fish> i : i32\n"
-         "    ^^^^\n");
+         R"(test.wgsl:1:5 error: invalid storage class for variable declaration
+var<fish> i : i32
+    ^^^^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclVarStorageDeclMissingGThan) {
   EXPECT("var<private i : i32",
-         "test.wgsl:1:13 error: expected '>' for variable declaration\n"
-         "var<private i : i32\n"
-         "            ^\n");
+         R"(test.wgsl:1:13 error: expected '>' for variable declaration
+var<private i : i32
+            ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclVarVectorMissingGreaterThan) {
-  EXPECT("var i : vec3<u32;",
-         "test.wgsl:1:17 error: expected '>' for vector\n"
-         "var i : vec3<u32;\n"
-         "                ^\n");
+  EXPECT("var i : vec3<u32;", R"(test.wgsl:1:17 error: expected '>' for vector
+var i : vec3<u32;
+                ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclVarVectorMissingType) {
-  EXPECT("var i : vec3<1>;",
-         "test.wgsl:1:14 error: invalid type for vector\n"
-         "var i : vec3<1>;\n"
-         "             ^\n");
+  EXPECT("var i : vec3<1>;", R"(test.wgsl:1:14 error: invalid type for vector
+var i : vec3<1>;
+             ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, IfStmtMissingLParen) {
-  EXPECT("fn f() { if true) {} }",
-         "test.wgsl:1:13 error: expected '('\n"
-         "fn f() { if true) {} }\n"
-         "            ^^^^\n");
+  EXPECT("fn f() { if true) {} }", R"(test.wgsl:1:13 error: expected '('
+fn f() { if true) {} }
+            ^^^^
+)");
 }
 
 TEST_F(ParserImplErrorTest, IfStmtMissingRParen) {
-  EXPECT("fn f() { if (true {} }",
-         "test.wgsl:1:19 error: expected ')'\n"
-         "fn f() { if (true {} }\n"
-         "                  ^\n");
+  EXPECT("fn f() { if (true {} }", R"(test.wgsl:1:19 error: expected ')'
+fn f() { if (true {} }
+                  ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, IfStmtInvalidCond) {
   EXPECT("fn f() { if (>) {} }",
-         "test.wgsl:1:14 error: unable to parse expression\n"
-         "fn f() { if (>) {} }\n"
-         "             ^\n");
+         R"(test.wgsl:1:14 error: unable to parse expression
+fn f() { if (>) {} }
+             ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, LogicalAndInvalidExpr) {
   EXPECT("fn f() { return 1 && >; }",
-         "test.wgsl:1:22 error: unable to parse right side of && expression\n"
-         "fn f() { return 1 && >; }\n"
-         "                     ^\n");
+         R"(test.wgsl:1:22 error: unable to parse right side of && expression
+fn f() { return 1 && >; }
+                     ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, LogicalOrInvalidExpr) {
   EXPECT("fn f() { return 1 || >; }",
-         "test.wgsl:1:22 error: unable to parse right side of || expression\n"
-         "fn f() { return 1 || >; }\n"
-         "                     ^\n");
+         R"(test.wgsl:1:22 error: unable to parse right side of || expression
+fn f() { return 1 || >; }
+                     ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, LoopMissingLBrace) {
-  EXPECT("fn f() { loop }",
-         "test.wgsl:1:15 error: expected '{' for loop\n"
-         "fn f() { loop }\n"
-         "              ^\n");
+  EXPECT("fn f() { loop }", R"(test.wgsl:1:15 error: expected '{' for loop
+fn f() { loop }
+              ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, LoopMissingRBrace) {
-  EXPECT("fn f() { loop {",
-         "test.wgsl:1:16 error: expected '}' for loop\n"
-         "fn f() { loop {\n"
-         "               ^\n");
+  EXPECT("fn f() { loop {", R"(test.wgsl:1:16 error: expected '}' for loop
+fn f() { loop {
+               ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, MaxErrorsReached) {
-  EXPECT("x; x; x; x; x; x; x; x;",
-         "test.wgsl:1:1 error: unexpected token\n"
-         "x; x; x; x; x; x; x; x;\n"
-         "^\n\n"
-         "test.wgsl:1:4 error: unexpected token\n"
-         "x; x; x; x; x; x; x; x;\n"
-         "   ^\n\n"
-         "test.wgsl:1:7 error: unexpected token\n"
-         "x; x; x; x; x; x; x; x;\n"
-         "      ^\n\n"
-         "test.wgsl:1:10 error: unexpected token\n"
-         "x; x; x; x; x; x; x; x;\n"
-         "         ^\n\n"
-         "test.wgsl:1:13 error: unexpected token\n"
-         "x; x; x; x; x; x; x; x;\n"
-         "            ^\n\n"
-         "test.wgsl error: stopping after 5 errors");
+  EXPECT("x; x; x; x; x; x; x; x;", R"(test.wgsl:1:1 error: unexpected token
+x; x; x; x; x; x; x; x;
+^
+
+test.wgsl:1:4 error: unexpected token
+x; x; x; x; x; x; x; x;
+   ^
+
+test.wgsl:1:7 error: unexpected token
+x; x; x; x; x; x; x; x;
+      ^
+
+test.wgsl:1:10 error: unexpected token
+x; x; x; x; x; x; x; x;
+         ^
+
+test.wgsl:1:13 error: unexpected token
+x; x; x; x; x; x; x; x;
+            ^
+
+test.wgsl error: stopping after 5 errors)");
 }
 
 TEST_F(ParserImplErrorTest, MemberExprMissingIdentifier) {
   EXPECT("fn f() { x = a.; }",
-         "test.wgsl:1:16 error: expected identifier for member accessor\n"
-         "fn f() { x = a.; }\n"
-         "               ^\n");
+         R"(test.wgsl:1:16 error: expected identifier for member accessor
+fn f() { x = a.; }
+               ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, MultiplicativeInvalidExpr) {
   EXPECT("fn f() { return 1.0 * <; }",
-         "test.wgsl:1:23 error: unable to parse right side of * expression\n"
-         "fn f() { return 1.0 * <; }\n"
-         "                      ^\n");
+         R"(test.wgsl:1:23 error: unable to parse right side of * expression
+fn f() { return 1.0 * <; }
+                      ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, OrInvalidExpr) {
   EXPECT("fn f() { return 1 | >; }",
-         "test.wgsl:1:21 error: unable to parse right side of | expression\n"
-         "fn f() { return 1 | >; }\n"
-         "                    ^\n");
+         R"(test.wgsl:1:21 error: unable to parse right side of | expression
+fn f() { return 1 | >; }
+                    ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, RelationalInvalidExpr) {
   EXPECT("fn f() { return 1 < >; }",
-         "test.wgsl:1:21 error: unable to parse right side of < expression\n"
-         "fn f() { return 1 < >; }\n"
-         "                    ^\n");
+         R"(test.wgsl:1:21 error: unable to parse right side of < expression
+fn f() { return 1 < >; }
+                    ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, ReturnStmtMissingSemicolon) {
   EXPECT("fn f() { return }",
-         "test.wgsl:1:17 error: expected ';' for return statement\n"
-         "fn f() { return }\n"
-         "                ^\n");
+         R"(test.wgsl:1:17 error: expected ';' for return statement
+fn f() { return }
+                ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, ShiftInvalidExpr) {
   EXPECT("fn f() { return 1 << >; }",
-         "test.wgsl:1:22 error: unable to parse right side of << expression\n"
-         "fn f() { return 1 << >; }\n"
-         "                     ^\n");
+         R"(test.wgsl:1:22 error: unable to parse right side of << expression
+fn f() { return 1 << >; }
+                     ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, SwitchStmtMissingLBrace) {
   EXPECT("fn f() { switch(1) }",
-         "test.wgsl:1:20 error: expected '{' for switch statement\n"
-         "fn f() { switch(1) }\n"
-         "                   ^\n");
+         R"(test.wgsl:1:20 error: expected '{' for switch statement
+fn f() { switch(1) }
+                   ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, SwitchStmtMissingRBrace) {
   EXPECT("fn f() { switch(1) {",
-         "test.wgsl:1:21 error: expected '}' for switch statement\n"
-         "fn f() { switch(1) {\n"
-         "                    ^\n");
+         R"(test.wgsl:1:21 error: expected '}' for switch statement
+fn f() { switch(1) {
+                    ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, SwitchStmtInvalidCase) {
   EXPECT("fn f() { switch(1) { case ^: } }",
-         "test.wgsl:1:27 error: unable to parse case selectors\n"
-         "fn f() { switch(1) { case ^: } }\n"
-         "                          ^\n");
+         R"(test.wgsl:1:27 error: unable to parse case selectors
+fn f() { switch(1) { case ^: } }
+                          ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, SwitchStmtInvalidCase2) {
-  EXPECT(
-      "fn f() { switch(1) { case false: } }",
-      "test.wgsl:1:27 error: invalid case selector must be an integer value\n"
-      "fn f() { switch(1) { case false: } }\n"
-      "                          ^^^^^\n");
+  EXPECT("fn f() { switch(1) { case false: } }",
+         R"(test.wgsl:1:27 error: invalid case selector must be an integer value
+fn f() { switch(1) { case false: } }
+                          ^^^^^
+)");
 }
 
 TEST_F(ParserImplErrorTest, SwitchStmtCaseMissingColon) {
   EXPECT("fn f() { switch(1) { case 1 {} } }",
-         "test.wgsl:1:29 error: expected ':' for case statement\n"
-         "fn f() { switch(1) { case 1 {} } }\n"
-         "                            ^\n");
+         R"(test.wgsl:1:29 error: expected ':' for case statement
+fn f() { switch(1) { case 1 {} } }
+                            ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, SwitchStmtCaseMissingLBrace) {
   EXPECT("fn f() { switch(1) { case 1: } }",
-         "test.wgsl:1:30 error: expected '{' for case statement\n"
-         "fn f() { switch(1) { case 1: } }\n"
-         "                             ^\n");
+         R"(test.wgsl:1:30 error: expected '{' for case statement
+fn f() { switch(1) { case 1: } }
+                             ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, SwitchStmtCaseMissingRBrace) {
   EXPECT("fn f() { switch(1) { case 1: {",
-         "test.wgsl:1:31 error: expected '}' for case statement\n"
-         "fn f() { switch(1) { case 1: {\n"
-         "                              ^\n");
+         R"(test.wgsl:1:31 error: expected '}' for case statement
+fn f() { switch(1) { case 1: {
+                              ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, SwitchStmtCaseFallthroughMissingSemicolon) {
   EXPECT("fn f() { switch(1) { case 1: { fallthrough } case 2: {} } }",
-         "test.wgsl:1:44 error: expected ';' for fallthrough statement\n"
-         "fn f() { switch(1) { case 1: { fallthrough } case 2: {} } }\n"
-         "                                           ^\n");
+         R"(test.wgsl:1:44 error: expected ';' for fallthrough statement
+fn f() { switch(1) { case 1: { fallthrough } case 2: {} } }
+                                           ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, VarStmtMissingSemicolon) {
   EXPECT("fn f() { var a : u32 }",
-         "test.wgsl:1:22 error: expected ';' for variable declaration\n"
-         "fn f() { var a : u32 }\n"
-         "                     ^\n");
+         R"(test.wgsl:1:22 error: expected ';' for variable declaration
+fn f() { var a : u32 }
+                     ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, VarStmtInvalidAssignment) {
   EXPECT("fn f() { var a : u32 = >; }",
-         "test.wgsl:1:24 error: missing constructor for variable declaration\n"
-         "fn f() { var a : u32 = >; }\n"
-         "                       ^\n");
+         R"(test.wgsl:1:24 error: missing constructor for variable declaration
+fn f() { var a : u32 = >; }
+                       ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, UnaryInvalidExpr) {
   EXPECT("fn f() { return !<; }",
-         "test.wgsl:1:18 error: unable to parse right side of ! expression\n"
-         "fn f() { return !<; }\n"
-         "                 ^\n");
+         R"(test.wgsl:1:18 error: unable to parse right side of ! expression
+fn f() { return !<; }
+                 ^
+)");
 }
 
 TEST_F(ParserImplErrorTest, UnexpectedToken) {
-  EXPECT("unexpected",
-         "test.wgsl:1:1 error: unexpected token\n"
-         "unexpected\n"
-         "^^^^^^^^^^\n");
+  EXPECT("unexpected", R"(test.wgsl:1:1 error: unexpected token
+unexpected
+^^^^^^^^^^
+)");
 }
 
 TEST_F(ParserImplErrorTest, XorInvalidExpr) {
   EXPECT("fn f() { return 1 ^ >; }",
-         "test.wgsl:1:21 error: unable to parse right side of ^ expression\n"
-         "fn f() { return 1 ^ >; }\n"
-         "                    ^\n");
+         R"(test.wgsl:1:21 error: unable to parse right side of ^ expression
+fn f() { return 1 ^ >; }
+                    ^
+)");
 }
 
 }  // namespace
diff --git a/src/reader/wgsl/parser_impl_error_resync_test.cc b/src/reader/wgsl/parser_impl_error_resync_test.cc
index db31ce3..04ae887 100644
--- a/src/reader/wgsl/parser_impl_error_resync_test.cc
+++ b/src/reader/wgsl/parser_impl_error_resync_test.cc
@@ -40,32 +40,29 @@
   EXPECT(R"(
 fn .() -> . {}
 fn x(.) {}
-[[.,.]] fn -> {}
+@_ fn -> {}
 fn good() {}
 )",
-         "test.wgsl:2:4 error: expected identifier for function declaration\n"
-         "fn .() -> . {}\n"
-         "   ^\n"
-         "\n"
-         "test.wgsl:2:11 error: unable to determine function return type\n"
-         "fn .() -> . {}\n"
-         "          ^\n"
-         "\n"
-         "test.wgsl:3:6 error: expected ')' for function declaration\n"
-         "fn x(.) {}\n"
-         "     ^\n"
-         "\n"
-         "test.wgsl:4:3 error: expected decoration\n"
-         "[[.,.]] fn -> {}\n"
-         "  ^\n"
-         "\n"
-         "test.wgsl:4:5 error: expected decoration\n"
-         "[[.,.]] fn -> {}\n"
-         "    ^\n"
-         "\n"
-         "test.wgsl:4:12 error: expected identifier for function declaration\n"
-         "[[.,.]] fn -> {}\n"
-         "           ^^\n");
+         R"(test.wgsl:2:4 error: expected identifier for function declaration
+fn .() -> . {}
+   ^
+
+test.wgsl:2:11 error: unable to determine function return type
+fn .() -> . {}
+          ^
+
+test.wgsl:3:6 error: expected ')' for function declaration
+fn x(.) {}
+     ^
+
+test.wgsl:4:2 error: expected decoration
+@_ fn -> {}
+ ^
+
+test.wgsl:4:7 error: expected identifier for function declaration
+@_ fn -> {}
+      ^^
+)");
 }
 
 TEST_F(ParserImplErrorResyncTest, AssignmentStatement) {
@@ -78,17 +75,18 @@
   good = 1;
 }
 )",
-         "test.wgsl:3:8 error: expected '=' for assignment\n"
-         "  blah blah blah blah;\n"
-         "       ^^^^\n"
-         "\n"
-         "test.wgsl:5:8 error: expected '=' for assignment\n"
-         "  blah blah blah blah;\n"
-         "       ^^^^\n"
-         "\n"
-         "test.wgsl:6:7 error: unable to parse right side of assignment\n"
-         "  x = .;\n"
-         "      ^\n");
+         R"(test.wgsl:3:8 error: expected '=' for assignment
+  blah blah blah blah;
+       ^^^^
+
+test.wgsl:5:8 error: expected '=' for assignment
+  blah blah blah blah;
+       ^^^^
+
+test.wgsl:6:7 error: unable to parse right side of assignment
+  x = .;
+      ^
+)");
 }
 
 TEST_F(ParserImplErrorResyncTest, DiscardStatement) {
@@ -99,13 +97,14 @@
   discard blah blah blah;
 }
 )",
-         "test.wgsl:3:11 error: expected ';' for discard statement\n"
-         "  discard blah blah blah;\n"
-         "          ^^^^\n"
-         "\n"
-         "test.wgsl:5:11 error: expected ';' for discard statement\n"
-         "  discard blah blah blah;\n"
-         "          ^^^^\n");
+         R"(test.wgsl:3:11 error: expected ';' for discard statement
+  discard blah blah blah;
+          ^^^^
+
+test.wgsl:5:11 error: expected ';' for discard statement
+  discard blah blah blah;
+          ^^^^
+)");
 }
 
 TEST_F(ParserImplErrorResyncTest, StructMembers) {
@@ -115,21 +114,22 @@
     a : i32;
     blah blah blah;
     b : i32;
-    [[]] x : i32;
+    @- x : i32;
     c : i32;
 }
 )",
-         "test.wgsl:3:10 error: expected ':' for struct member\n"
-         "    blah blah blah;\n"
-         "         ^^^^\n"
-         "\n"
-         "test.wgsl:5:10 error: expected ':' for struct member\n"
-         "    blah blah blah;\n"
-         "         ^^^^\n"
-         "\n"
-         "test.wgsl:7:7 error: empty decoration list\n"
-         "    [[]] x : i32;\n"
-         "      ^^\n");
+         R"(test.wgsl:3:10 error: expected ':' for struct member
+    blah blah blah;
+         ^^^^
+
+test.wgsl:5:10 error: expected ':' for struct member
+    blah blah blah;
+         ^^^^
+
+test.wgsl:7:6 error: expected decoration
+    @- x : i32;
+     ^
+)");
 }
 
 // Check that the forward scan in resynchronize() stop at nested sync points.
@@ -144,38 +144,36 @@
 }
 struct S { blah };
 )",
-         "test.wgsl:5:1 error: expected ';' for discard statement\n"
-         "}\n"
-         "^\n"
-         "\n"
-         "test.wgsl:6:17 error: expected ':' for struct member\n"
-         "struct S { blah };\n"
-         "                ^\n");
+         R"(test.wgsl:5:1 error: expected ';' for discard statement
+}
+^
+
+test.wgsl:6:17 error: expected ':' for struct member
+struct S { blah };
+                ^
+)");
 }
 
 TEST_F(ParserImplErrorResyncTest, BracketCounting) {
-  EXPECT(R"(
-[[woof[[[[]]]]]]
+  EXPECT(
+      R"(
 fn f(x(((())))) {
   meow = {{{}}}
 }
 struct S { blah };
 )",
-         "test.wgsl:2:3 error: expected decoration\n"
-         "[[woof[[[[]]]]]]\n"
-         "  ^^^^\n"
-         "\n"
-         "test.wgsl:3:7 error: expected ':' for parameter\n"
-         "fn f(x(((())))) {\n"
-         "      ^\n"
-         "\n"
-         "test.wgsl:4:10 error: unable to parse right side of assignment\n"
-         "  meow = {{{}}}\n"
-         "         ^\n"
-         "\n"
-         "test.wgsl:6:17 error: expected ':' for struct member\n"
-         "struct S { blah };\n"
-         "                ^\n");
+      R"(test.wgsl:2:7 error: expected ':' for parameter
+fn f(x(((())))) {
+      ^
+
+test.wgsl:3:10 error: unable to parse right side of assignment
+  meow = {{{}}}
+         ^
+
+test.wgsl:5:17 error: expected ':' for struct member
+struct S { blah };
+                ^
+)");
 }
 
 }  // namespace
diff --git a/src/reader/wgsl/parser_impl_function_decl_test.cc b/src/reader/wgsl/parser_impl_function_decl_test.cc
index d593c22..5a59562 100644
--- a/src/reader/wgsl/parser_impl_function_decl_test.cc
+++ b/src/reader/wgsl/parser_impl_function_decl_test.cc
@@ -49,7 +49,7 @@
 }
 
 TEST_F(ParserImplTest, FunctionDecl_DecorationList) {
-  auto p = parser("[[workgroup_size(2, 3, 4)]] fn main() { return; }");
+  auto p = parser("@workgroup_size(2, 3, 4) fn main() { return; }");
   auto decos = p->decoration_list();
   EXPECT_FALSE(p->has_error()) << p->error();
   ASSERT_FALSE(decos.errored);
@@ -87,7 +87,7 @@
 
 TEST_F(ParserImplTest, FunctionDecl_DecorationList_MultipleEntries) {
   auto p = parser(R"(
-[[workgroup_size(2, 3, 4), stage(compute)]]
+@workgroup_size(2, 3, 4) @stage(compute)
 fn main() { return; })");
   auto decos = p->decoration_list();
   EXPECT_FALSE(p->has_error()) << p->error();
@@ -130,8 +130,8 @@
 
 TEST_F(ParserImplTest, FunctionDecl_DecorationList_MultipleLists) {
   auto p = parser(R"(
-[[workgroup_size(2, 3, 4)]]
-[[stage(compute)]]
+@workgroup_size(2, 3, 4)
+@stage(compute)
 fn main() { return; })");
   auto decorations = p->decoration_list();
   EXPECT_FALSE(p->has_error()) << p->error();
@@ -173,7 +173,7 @@
 }
 
 TEST_F(ParserImplTest, FunctionDecl_ReturnTypeDecorationList) {
-  auto p = parser("fn main() -> [[location(1)]] f32 { return 1.0; }");
+  auto p = parser("fn main() -> @location(1) f32 { return 1.0; }");
   auto decos = p->decoration_list();
   EXPECT_FALSE(p->has_error()) << p->error();
   ASSERT_FALSE(decos.errored);
diff --git a/src/reader/wgsl/parser_impl_function_decoration_list_test.cc b/src/reader/wgsl/parser_impl_function_decoration_list_test.cc
index 9f5b0b6..8fd6760 100644
--- a/src/reader/wgsl/parser_impl_function_decoration_list_test.cc
+++ b/src/reader/wgsl/parser_impl_function_decoration_list_test.cc
@@ -21,7 +21,7 @@
 namespace {
 
 TEST_F(ParserImplTest, DecorationList_Parses) {
-  auto p = parser("[[workgroup_size(2), stage(compute)]]");
+  auto p = parser("@workgroup_size(2) @stage(compute)");
   auto decos = p->decoration_list();
   EXPECT_FALSE(p->has_error()) << p->error();
   EXPECT_FALSE(decos.errored);
@@ -46,23 +46,14 @@
             ast::PipelineStage::kCompute);
 }
 
-TEST_F(ParserImplTest, DecorationList_Empty) {
-  auto p = parser("[[]]");
-  auto decos = p->decoration_list();
-  EXPECT_TRUE(p->has_error());
-  EXPECT_TRUE(decos.errored);
-  EXPECT_FALSE(decos.matched);
-  EXPECT_EQ(p->error(), "1:3: empty decoration list");
-}
-
 TEST_F(ParserImplTest, DecorationList_Invalid) {
-  auto p = parser("[[invalid]]");
+  auto p = parser("@invalid");
   auto decos = p->decoration_list();
   EXPECT_TRUE(p->has_error());
   EXPECT_TRUE(decos.errored);
   EXPECT_FALSE(decos.matched);
   EXPECT_TRUE(decos.value.empty());
-  EXPECT_EQ(p->error(), "1:3: expected decoration");
+  EXPECT_EQ(p->error(), "1:2: expected decoration");
 }
 
 TEST_F(ParserImplTest, DecorationList_ExtraComma) {
@@ -71,34 +62,98 @@
   EXPECT_TRUE(p->has_error());
   EXPECT_TRUE(decos.errored);
   EXPECT_FALSE(decos.matched);
-  EXPECT_EQ(p->error(), "1:22: expected decoration");
+  EXPECT_EQ(
+      p->error(),
+      R"(1:1: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+1:22: expected decoration)");
 }
 
-TEST_F(ParserImplTest, DecorationList_MissingComma) {
+TEST_F(ParserImplTest, DecorationList_BadDecoration) {
+  auto p = parser("@stage()");
+  auto decos = p->decoration_list();
+  EXPECT_TRUE(p->has_error());
+  EXPECT_TRUE(decos.errored);
+  EXPECT_FALSE(decos.matched);
+  EXPECT_EQ(p->error(), "1:8: invalid value for stage decoration");
+}
+
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplTest, DEPRECATED_DecorationList_Empty) {
+  auto p = parser("[[]]");
+  auto decos = p->decoration_list();
+  EXPECT_TRUE(p->has_error());
+  EXPECT_TRUE(decos.errored);
+  EXPECT_FALSE(decos.matched);
+  EXPECT_EQ(
+      p->error(),
+      R"(1:1: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+1:3: empty decoration list)");
+}
+
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplTest, DEPRECATED_DecorationList_Invalid) {
+  auto p = parser("[[invalid]]");
+  auto decos = p->decoration_list();
+  EXPECT_TRUE(p->has_error());
+  EXPECT_TRUE(decos.errored);
+  EXPECT_FALSE(decos.matched);
+  EXPECT_TRUE(decos.value.empty());
+  EXPECT_EQ(
+      p->error(),
+      R"(1:1: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+1:3: expected decoration)");
+}
+
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplTest, DEPRECATED_DecorationList_ExtraComma) {
+  auto p = parser("[[workgroup_size(2), ]]");
+  auto decos = p->decoration_list();
+  EXPECT_TRUE(p->has_error());
+  EXPECT_TRUE(decos.errored);
+  EXPECT_FALSE(decos.matched);
+  EXPECT_EQ(
+      p->error(),
+      R"(1:1: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+1:22: expected decoration)");
+}
+
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplTest, DEPRECATED_DecorationList_MissingComma) {
   auto p = parser("[[workgroup_size(2) workgroup_size(2)]]");
   auto decos = p->decoration_list();
   EXPECT_TRUE(p->has_error());
   EXPECT_TRUE(decos.errored);
   EXPECT_FALSE(decos.matched);
-  EXPECT_EQ(p->error(), "1:21: expected ',' for decoration list");
+  EXPECT_EQ(
+      p->error(),
+      R"(1:1: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+1:21: expected ',' for decoration list)");
 }
 
-TEST_F(ParserImplTest, DecorationList_BadDecoration) {
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplTest, DEPRECATED_DecorationList_BadDecoration) {
   auto p = parser("[[stage()]]");
   auto decos = p->decoration_list();
   EXPECT_TRUE(p->has_error());
   EXPECT_TRUE(decos.errored);
   EXPECT_FALSE(decos.matched);
-  EXPECT_EQ(p->error(), "1:9: invalid value for stage decoration");
+  EXPECT_EQ(
+      p->error(),
+      R"(1:1: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+1:9: invalid value for stage decoration)");
 }
 
-TEST_F(ParserImplTest, DecorationList_MissingRightAttr) {
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplTest, DEPRECATED_DecorationList_MissingRightAttr) {
   auto p = parser("[[workgroup_size(2), workgroup_size(3, 4, 5)");
   auto decos = p->decoration_list();
   EXPECT_TRUE(p->has_error());
   EXPECT_TRUE(decos.errored);
   EXPECT_FALSE(decos.matched);
-  EXPECT_EQ(p->error(), "1:45: expected ']]' for decoration list");
+  EXPECT_EQ(
+      p->error(),
+      R"(1:1: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+1:45: expected ']]' for decoration list)");
 }
 
 }  // namespace
diff --git a/src/reader/wgsl/parser_impl_function_header_test.cc b/src/reader/wgsl/parser_impl_function_header_test.cc
index 369e8d0..00d3136 100644
--- a/src/reader/wgsl/parser_impl_function_header_test.cc
+++ b/src/reader/wgsl/parser_impl_function_header_test.cc
@@ -46,7 +46,7 @@
 }
 
 TEST_F(ParserImplTest, FunctionHeader_DecoratedReturnType) {
-  auto p = parser("fn main() -> [[location(1)]] f32");
+  auto p = parser("fn main() -> @location(1) f32");
   auto f = p->function_header();
   ASSERT_FALSE(p->has_error()) << p->error();
   EXPECT_TRUE(f.matched);
@@ -76,7 +76,7 @@
 }
 
 TEST_F(ParserImplTest, FunctionHeader_DecoratedReturnType_WithArrayStride) {
-  auto p = parser("fn main() -> [[location(1), stride(16)]] array<f32, 4>");
+  auto p = parser("fn main() -> @location(1) @stride(16) array<f32, 4>");
   auto f = p->function_header();
   ASSERT_FALSE(p->has_error()) << p->error();
   EXPECT_TRUE(f.matched);
diff --git a/src/reader/wgsl/parser_impl_global_constant_decl_test.cc b/src/reader/wgsl/parser_impl_global_constant_decl_test.cc
index 2c4cd54..74c2557 100644
--- a/src/reader/wgsl/parser_impl_global_constant_decl_test.cc
+++ b/src/reader/wgsl/parser_impl_global_constant_decl_test.cc
@@ -102,7 +102,7 @@
 }
 
 TEST_F(ParserImplTest, GlobalConstantDec_Override_WithId) {
-  auto p = parser("[[override(7)]] let a : f32 = 1.");
+  auto p = parser("@override(7) let a : f32 = 1.");
   auto decos = p->decoration_list();
   EXPECT_FALSE(decos.errored);
   EXPECT_TRUE(decos.matched);
@@ -119,9 +119,9 @@
   EXPECT_TRUE(e->type->Is<ast::F32>());
 
   EXPECT_EQ(e->source.range.begin.line, 1u);
-  EXPECT_EQ(e->source.range.begin.column, 21u);
+  EXPECT_EQ(e->source.range.begin.column, 18u);
   EXPECT_EQ(e->source.range.end.line, 1u);
-  EXPECT_EQ(e->source.range.end.column, 22u);
+  EXPECT_EQ(e->source.range.end.column, 19u);
 
   ASSERT_NE(e->constructor, nullptr);
   EXPECT_TRUE(e->constructor->Is<ast::LiteralExpression>());
@@ -165,7 +165,7 @@
 }
 
 TEST_F(ParserImplTest, GlobalConstantDec_Override_MissingId) {
-  auto p = parser("[[override()]] let a : f32 = 1.");
+  auto p = parser("@override() let a : f32 = 1.");
   auto decos = p->decoration_list();
   EXPECT_TRUE(decos.errored);
   EXPECT_FALSE(decos.matched);
@@ -177,11 +177,11 @@
 
   EXPECT_TRUE(p->has_error());
   EXPECT_EQ(p->error(),
-            "1:12: expected signed integer literal for override decoration");
+            "1:11: expected signed integer literal for override decoration");
 }
 
 TEST_F(ParserImplTest, GlobalConstantDec_Override_InvalidId) {
-  auto p = parser("[[override(-7)]] let a : f32 = 1.");
+  auto p = parser("@override(-7) let a : f32 = 1.");
   auto decos = p->decoration_list();
   EXPECT_TRUE(decos.errored);
   EXPECT_FALSE(decos.matched);
@@ -192,7 +192,7 @@
   ASSERT_NE(e.value, nullptr);
 
   EXPECT_TRUE(p->has_error());
-  EXPECT_EQ(p->error(), "1:12: override decoration must be positive");
+  EXPECT_EQ(p->error(), "1:11: override decoration must be positive");
 }
 
 }  // namespace
diff --git a/src/reader/wgsl/parser_impl_global_decl_test.cc b/src/reader/wgsl/parser_impl_global_decl_test.cc
index d880e4a..fe8b24d 100644
--- a/src/reader/wgsl/parser_impl_global_decl_test.cc
+++ b/src/reader/wgsl/parser_impl_global_decl_test.cc
@@ -132,7 +132,7 @@
 }
 
 TEST_F(ParserImplTest, GlobalDecl_Function_WithDecoration) {
-  auto p = parser("[[workgroup_size(2)]] fn main() { return; }");
+  auto p = parser("@workgroup_size(2) fn main() { return; }");
   p->expect_global_decl();
   ASSERT_FALSE(p->has_error()) << p->error();
 
@@ -167,7 +167,7 @@
 }
 
 TEST_F(ParserImplTest, GlobalDecl_Struct_WithStride) {
-  auto p = parser("struct A { data: [[stride(4)]] array<f32>; }");
+  auto p = parser("struct A { data: @stride(4) array<f32>; }");
 
   p->expect_global_decl();
   ASSERT_FALSE(p->has_error()) << p->error();
diff --git a/src/reader/wgsl/parser_impl_global_variable_decl_test.cc b/src/reader/wgsl/parser_impl_global_variable_decl_test.cc
index d79a8ae..52cc75b 100644
--- a/src/reader/wgsl/parser_impl_global_variable_decl_test.cc
+++ b/src/reader/wgsl/parser_impl_global_variable_decl_test.cc
@@ -67,7 +67,7 @@
 }
 
 TEST_F(ParserImplTest, GlobalVariableDecl_WithDecoration) {
-  auto p = parser("[[binding(2), group(1)]] var<uniform> a : f32");
+  auto p = parser("@binding(2) @group(1) var<uniform> a : f32");
   auto decos = p->decoration_list();
   EXPECT_FALSE(decos.errored);
   EXPECT_TRUE(decos.matched);
@@ -83,9 +83,9 @@
   EXPECT_EQ(e->declared_storage_class, ast::StorageClass::kUniform);
 
   EXPECT_EQ(e->source.range.begin.line, 1u);
-  EXPECT_EQ(e->source.range.begin.column, 39u);
+  EXPECT_EQ(e->source.range.begin.column, 36u);
   EXPECT_EQ(e->source.range.end.line, 1u);
-  EXPECT_EQ(e->source.range.end.column, 40u);
+  EXPECT_EQ(e->source.range.end.column, 37u);
 
   ASSERT_EQ(e->constructor, nullptr);
 
@@ -96,7 +96,7 @@
 }
 
 TEST_F(ParserImplTest, GlobalVariableDecl_WithDecoration_MulitpleGroups) {
-  auto p = parser("[[binding(2)]] [[group(1)]] var<uniform> a : f32");
+  auto p = parser("@binding(2) @group(1) var<uniform> a : f32");
   auto decos = p->decoration_list();
   EXPECT_FALSE(decos.errored);
   EXPECT_TRUE(decos.matched);
@@ -113,9 +113,9 @@
   EXPECT_EQ(e->declared_storage_class, ast::StorageClass::kUniform);
 
   EXPECT_EQ(e->source.range.begin.line, 1u);
-  EXPECT_EQ(e->source.range.begin.column, 42u);
+  EXPECT_EQ(e->source.range.begin.column, 36u);
   EXPECT_EQ(e->source.range.end.line, 1u);
-  EXPECT_EQ(e->source.range.end.column, 43u);
+  EXPECT_EQ(e->source.range.end.column, 37u);
 
   ASSERT_EQ(e->constructor, nullptr);
 
@@ -126,7 +126,7 @@
 }
 
 TEST_F(ParserImplTest, GlobalVariableDecl_InvalidDecoration) {
-  auto p = parser("[[binding()]] var<uniform> a : f32");
+  auto p = parser("@binding() var<uniform> a : f32");
   auto decos = p->decoration_list();
   EXPECT_TRUE(decos.errored);
   EXPECT_FALSE(decos.matched);
@@ -138,7 +138,7 @@
 
   EXPECT_TRUE(p->has_error());
   EXPECT_EQ(p->error(),
-            "1:11: expected signed integer literal for binding decoration");
+            "1:10: expected signed integer literal for binding decoration");
 }
 
 TEST_F(ParserImplTest, GlobalVariableDecl_InvalidConstExpr) {
diff --git a/src/reader/wgsl/parser_impl_param_list_test.cc b/src/reader/wgsl/parser_impl_param_list_test.cc
index e29725fc..d8e9b31 100644
--- a/src/reader/wgsl/parser_impl_param_list_test.cc
+++ b/src/reader/wgsl/parser_impl_param_list_test.cc
@@ -92,9 +92,8 @@
 }
 
 TEST_F(ParserImplTest, ParamList_Decorations) {
-  auto p = parser(
-      "[[builtin(position)]] coord : vec4<f32>, "
-      "[[location(1)]] loc1 : f32");
+  auto p =
+      parser("@builtin(position) coord : vec4<f32>, @location(1) loc1 : f32");
 
   auto e = p->expect_param_list();
   ASSERT_FALSE(p->has_error()) << p->error();
@@ -113,9 +112,9 @@
             ast::Builtin::kPosition);
 
   ASSERT_EQ(e.value[0]->source.range.begin.line, 1u);
-  ASSERT_EQ(e.value[0]->source.range.begin.column, 23u);
+  ASSERT_EQ(e.value[0]->source.range.begin.column, 20u);
   ASSERT_EQ(e.value[0]->source.range.end.line, 1u);
-  ASSERT_EQ(e.value[0]->source.range.end.column, 28u);
+  ASSERT_EQ(e.value[0]->source.range.end.column, 25u);
 
   EXPECT_EQ(e.value[1]->symbol, p->builder().Symbols().Get("loc1"));
   EXPECT_TRUE(e.value[1]->type->Is<ast::F32>());
@@ -125,10 +124,10 @@
   EXPECT_TRUE(decos1[0]->Is<ast::LocationDecoration>());
   EXPECT_EQ(decos1[0]->As<ast::LocationDecoration>()->value, 1u);
 
-  ASSERT_EQ(e.value[1]->source.range.begin.line, 1u);
-  ASSERT_EQ(e.value[1]->source.range.begin.column, 58u);
-  ASSERT_EQ(e.value[1]->source.range.end.line, 1u);
-  ASSERT_EQ(e.value[1]->source.range.end.column, 62u);
+  EXPECT_EQ(e.value[1]->source.range.begin.line, 1u);
+  EXPECT_EQ(e.value[1]->source.range.begin.column, 52u);
+  EXPECT_EQ(e.value[1]->source.range.end.line, 1u);
+  EXPECT_EQ(e.value[1]->source.range.end.column, 56u);
 }
 
 }  // namespace
diff --git a/src/reader/wgsl/parser_impl_struct_body_decl_test.cc b/src/reader/wgsl/parser_impl_struct_body_decl_test.cc
index 729fac4..86c2954 100644
--- a/src/reader/wgsl/parser_impl_struct_body_decl_test.cc
+++ b/src/reader/wgsl/parser_impl_struct_body_decl_test.cc
@@ -46,25 +46,25 @@
 TEST_F(ParserImplTest, StructBodyDecl_InvalidAlign) {
   auto p = parser(R"(
 {
-  [[align(nan)]] a : i32;
+  @align(nan) a : i32;
 })");
   auto m = p->expect_struct_body_decl();
   ASSERT_TRUE(p->has_error());
   ASSERT_TRUE(m.errored);
   EXPECT_EQ(p->error(),
-            "3:11: expected signed integer literal for align decoration");
+            "3:10: expected signed integer literal for align decoration");
 }
 
 TEST_F(ParserImplTest, StructBodyDecl_InvalidSize) {
   auto p = parser(R"(
 {
-  [[size(nan)]] a : i32;
+  @size(nan) a : i32;
 })");
   auto m = p->expect_struct_body_decl();
   ASSERT_TRUE(p->has_error());
   ASSERT_TRUE(m.errored);
   EXPECT_EQ(p->error(),
-            "3:10: expected signed integer literal for size decoration");
+            "3:9: expected signed integer literal for size decoration");
 }
 
 TEST_F(ParserImplTest, StructBodyDecl_MissingClosingBracket) {
diff --git a/src/reader/wgsl/parser_impl_struct_decl_test.cc b/src/reader/wgsl/parser_impl_struct_decl_test.cc
index 8d411ff..aa930d3 100644
--- a/src/reader/wgsl/parser_impl_struct_decl_test.cc
+++ b/src/reader/wgsl/parser_impl_struct_decl_test.cc
@@ -154,7 +154,8 @@
   EXPECT_TRUE(p->has_error());
   EXPECT_EQ(
       p->error(),
-      R"(1:3: use of deprecated language feature: [[block]] attributes have been removed from WGSL
+      R"(1:1: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+1:3: use of deprecated language feature: [[block]] attributes have been removed from WGSL
 1:9: expected ']]' for decoration list)");
 }
 
diff --git a/src/reader/wgsl/parser_impl_struct_decoration_decl_test.cc b/src/reader/wgsl/parser_impl_struct_decoration_decl_test.cc
index 655bb19..b4acaed 100644
--- a/src/reader/wgsl/parser_impl_struct_decoration_decl_test.cc
+++ b/src/reader/wgsl/parser_impl_struct_decoration_decl_test.cc
@@ -21,6 +21,60 @@
 namespace {
 
 TEST_F(ParserImplTest, DecorationDecl_Parses) {
+  auto p = parser("@override");
+  auto decos = p->decoration_list();
+  EXPECT_FALSE(p->has_error());
+  EXPECT_FALSE(decos.errored);
+  EXPECT_TRUE(decos.matched);
+  ASSERT_EQ(decos.value.size(), 1u);
+  auto* override_deco = decos.value[0]->As<ast::Decoration>();
+  EXPECT_TRUE(override_deco->Is<ast::OverrideDecoration>());
+}
+
+TEST_F(ParserImplTest, DecorationDecl_MissingParenLeft) {
+  auto p = parser("@location 1)");
+  auto decos = p->decoration_list();
+  EXPECT_TRUE(p->has_error());
+  EXPECT_TRUE(decos.errored);
+  EXPECT_FALSE(decos.matched);
+  EXPECT_TRUE(decos.value.empty());
+  EXPECT_EQ(p->error(),
+            "1:11: expected '(' for location decoration");
+}
+
+TEST_F(ParserImplTest, DecorationDecl_MissingValue) {
+  auto p = parser("@location()");
+  auto decos = p->decoration_list();
+  EXPECT_TRUE(p->has_error());
+  EXPECT_TRUE(decos.errored);
+  EXPECT_FALSE(decos.matched);
+  EXPECT_TRUE(decos.value.empty());
+  EXPECT_EQ(p->error(),
+            "1:11: expected signed integer literal for location decoration");
+}
+
+TEST_F(ParserImplTest, DecorationDecl_MissingParenRight) {
+  auto p = parser("@location(1");
+  auto decos = p->decoration_list();
+  EXPECT_TRUE(p->has_error());
+  EXPECT_TRUE(decos.errored);
+  EXPECT_FALSE(decos.matched);
+  EXPECT_TRUE(decos.value.empty());
+  EXPECT_EQ(p->error(),
+            "1:12: expected ')' for location decoration");
+}
+
+TEST_F(ParserImplTest, DecorationDecl_InvalidDecoration) {
+  auto p = parser("@invalid");
+  auto decos = p->decoration_list();
+  EXPECT_TRUE(p->has_error());
+  EXPECT_TRUE(decos.errored);
+  EXPECT_FALSE(decos.matched);
+  EXPECT_TRUE(decos.value.empty());
+}
+
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplTest, DEPRECATED_DecorationDecl_Parses) {
   auto p = parser("[[override]]");
   auto decos = p->decoration_list();
   EXPECT_FALSE(p->has_error());
@@ -31,17 +85,22 @@
   EXPECT_TRUE(override_deco->Is<ast::OverrideDecoration>());
 }
 
-TEST_F(ParserImplTest, DecorationDecl_MissingAttrRight) {
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplTest, DEPRECATED_DecorationDecl_MissingAttrRight) {
   auto p = parser("[[override");
   auto decos = p->decoration_list();
   EXPECT_TRUE(p->has_error());
   EXPECT_TRUE(decos.errored);
   EXPECT_FALSE(decos.matched);
   EXPECT_TRUE(decos.value.empty());
-  EXPECT_EQ(p->error(), "1:11: expected ']]' for decoration list");
+  EXPECT_EQ(
+      p->error(),
+      R"(1:1: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+1:11: expected ']]' for decoration list)");
 }
 
-TEST_F(ParserImplTest, DecorationDecl_InvalidDecoration) {
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplTest, DEPRECATED_DecorationDecl_InvalidDecoration) {
   auto p = parser("[[invalid]]");
   auto decos = p->decoration_list();
   EXPECT_TRUE(p->has_error());
diff --git a/src/reader/wgsl/parser_impl_struct_member_decoration_decl_test.cc b/src/reader/wgsl/parser_impl_struct_member_decoration_decl_test.cc
index 107c358..a7c1383 100644
--- a/src/reader/wgsl/parser_impl_struct_member_decoration_decl_test.cc
+++ b/src/reader/wgsl/parser_impl_struct_member_decoration_decl_test.cc
@@ -28,18 +28,20 @@
   EXPECT_EQ(decos.value.size(), 0u);
 }
 
-TEST_F(ParserImplTest, DecorationDecl_EmptyBlock) {
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplTest, DEPRECATED_DecorationDecl_EmptyBlock) {
   auto p = parser("[[]]");
   auto decos = p->decoration_list();
   EXPECT_TRUE(p->has_error());
   EXPECT_TRUE(decos.errored);
   EXPECT_FALSE(decos.matched);
   EXPECT_EQ(decos.value.size(), 0u);
-  EXPECT_EQ(p->error(), "1:3: empty decoration list");
+  EXPECT_EQ(p->error(), R"(1:1: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+1:3: empty decoration list)");
 }
 
 TEST_F(ParserImplTest, DecorationDecl_Single) {
-  auto p = parser("[[size(4)]]");
+  auto p = parser("@size(4)");
   auto decos = p->decoration_list();
   EXPECT_FALSE(p->has_error());
   EXPECT_FALSE(decos.errored);
@@ -51,13 +53,13 @@
 }
 
 TEST_F(ParserImplTest, DecorationDecl_InvalidDecoration) {
-  auto p = parser("[[size(nan)]]");
+  auto p = parser("@size(nan)");
   auto decos = p->decoration_list();
   EXPECT_TRUE(p->has_error()) << p->error();
   EXPECT_TRUE(decos.errored);
   EXPECT_FALSE(decos.matched);
   EXPECT_EQ(p->error(),
-            "1:8: expected signed integer literal for size decoration");
+            "1:7: expected signed integer literal for size decoration");
 }
 
 TEST_F(ParserImplTest, DecorationDecl_MissingClose) {
@@ -66,7 +68,8 @@
   EXPECT_TRUE(p->has_error()) << p->error();
   EXPECT_TRUE(decos.errored);
   EXPECT_FALSE(decos.matched);
-  EXPECT_EQ(p->error(), "1:10: expected ']]' for decoration list");
+  EXPECT_EQ(p->error(), R"(1:1: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+1:10: expected ']]' for decoration list)");
 }
 
 TEST_F(ParserImplTest, StructMemberDecorationDecl_SizeMissingClose) {
@@ -75,7 +78,8 @@
   EXPECT_TRUE(p->has_error()) << p->error();
   EXPECT_TRUE(decos.errored);
   EXPECT_FALSE(decos.matched);
-  EXPECT_EQ(p->error(), "1:10: expected ']]' for decoration list");
+  EXPECT_EQ(p->error(), R"(1:1: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+1:10: expected ']]' for decoration list)");
 }
 
 }  // namespace
diff --git a/src/reader/wgsl/parser_impl_struct_member_test.cc b/src/reader/wgsl/parser_impl_struct_member_test.cc
index 0f0f980..eccf079 100644
--- a/src/reader/wgsl/parser_impl_struct_member_test.cc
+++ b/src/reader/wgsl/parser_impl_struct_member_test.cc
@@ -43,7 +43,7 @@
 }
 
 TEST_F(ParserImplTest, StructMember_ParsesWithAlignDecoration) {
-  auto p = parser("[[align(2)]] a : i32;");
+  auto p = parser("@align(2) a : i32;");
 
   auto& builder = p->builder();
 
@@ -64,12 +64,12 @@
   EXPECT_EQ(m->decorations[0]->As<ast::StructMemberAlignDecoration>()->align,
             2u);
 
-  EXPECT_EQ(m->source.range, (Source::Range{{1u, 14u}, {1u, 15u}}));
-  EXPECT_EQ(m->type->source.range, (Source::Range{{1u, 18u}, {1u, 21u}}));
+  EXPECT_EQ(m->source.range, (Source::Range{{1u, 11u}, {1u, 12u}}));
+  EXPECT_EQ(m->type->source.range, (Source::Range{{1u, 15u}, {1u, 18u}}));
 }
 
 TEST_F(ParserImplTest, StructMember_ParsesWithSizeDecoration) {
-  auto p = parser("[[size(2)]] a : i32;");
+  auto p = parser("@size(2) a : i32;");
 
   auto& builder = p->builder();
 
@@ -89,12 +89,12 @@
   EXPECT_TRUE(m->decorations[0]->Is<ast::StructMemberSizeDecoration>());
   EXPECT_EQ(m->decorations[0]->As<ast::StructMemberSizeDecoration>()->size, 2u);
 
-  EXPECT_EQ(m->source.range, (Source::Range{{1u, 13u}, {1u, 14u}}));
-  EXPECT_EQ(m->type->source.range, (Source::Range{{1u, 17u}, {1u, 20u}}));
+  EXPECT_EQ(m->source.range, (Source::Range{{1u, 10u}, {1u, 11u}}));
+  EXPECT_EQ(m->type->source.range, (Source::Range{{1u, 14u}, {1u, 17u}}));
 }
 
 TEST_F(ParserImplTest, StructMember_ParsesWithDecoration) {
-  auto p = parser("[[size(2)]] a : i32;");
+  auto p = parser("@size(2) a : i32;");
 
   auto& builder = p->builder();
 
@@ -114,13 +114,13 @@
   EXPECT_TRUE(m->decorations[0]->Is<ast::StructMemberSizeDecoration>());
   EXPECT_EQ(m->decorations[0]->As<ast::StructMemberSizeDecoration>()->size, 2u);
 
-  EXPECT_EQ(m->source.range, (Source::Range{{1u, 13u}, {1u, 14u}}));
-  EXPECT_EQ(m->type->source.range, (Source::Range{{1u, 17u}, {1u, 20u}}));
+  EXPECT_EQ(m->source.range, (Source::Range{{1u, 10u}, {1u, 11u}}));
+  EXPECT_EQ(m->type->source.range, (Source::Range{{1u, 14u}, {1u, 17u}}));
 }
 
 TEST_F(ParserImplTest, StructMember_ParsesWithMultipleDecorations) {
-  auto p = parser(R"([[size(2)]]
-[[align(4)]] a : i32;)");
+  auto p = parser(R"(@size(2)
+@align(4) a : i32;)");
 
   auto& builder = p->builder();
 
@@ -143,12 +143,12 @@
   EXPECT_EQ(m->decorations[1]->As<ast::StructMemberAlignDecoration>()->align,
             4u);
 
-  EXPECT_EQ(m->source.range, (Source::Range{{2u, 14u}, {2u, 15u}}));
-  EXPECT_EQ(m->type->source.range, (Source::Range{{2u, 18u}, {2u, 21u}}));
+  EXPECT_EQ(m->source.range, (Source::Range{{2u, 11u}, {2u, 12u}}));
+  EXPECT_EQ(m->type->source.range, (Source::Range{{2u, 15u}, {2u, 18u}}));
 }
 
 TEST_F(ParserImplTest, StructMember_InvalidDecoration) {
-  auto p = parser("[[size(nan)]] a : i32;");
+  auto p = parser("@size(nan) a : i32;");
   auto decos = p->decoration_list();
   EXPECT_TRUE(decos.errored);
   EXPECT_FALSE(decos.matched);
@@ -159,7 +159,7 @@
 
   ASSERT_TRUE(p->has_error());
   EXPECT_EQ(p->error(),
-            "1:8: expected signed integer literal for size decoration");
+            "1:7: expected signed integer literal for size decoration");
 }
 
 TEST_F(ParserImplTest, StructMember_MissingSemicolon) {
diff --git a/src/reader/wgsl/parser_impl_test.cc b/src/reader/wgsl/parser_impl_test.cc
index 269cc9b..09da3b5 100644
--- a/src/reader/wgsl/parser_impl_test.cc
+++ b/src/reader/wgsl/parser_impl_test.cc
@@ -26,8 +26,8 @@
 
 TEST_F(ParserImplTest, Parses) {
   auto p = parser(R"(
-[[stage(fragment)]]
-fn main() -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn main() -> @location(0) vec4<f32> {
   return vec4<f32>(.4, .2, .3, 1);
 }
 )");
@@ -114,11 +114,11 @@
  * /* I can nest /**/ comments. */
  * // I can nest line comments too.
  **/
-[[stage(fragment)]] // This is the stage
+@stage(fragment) // This is the stage
 fn main(/*
 no
 parameters
-*/) -> [[location(0)]] vec4<f32> {
+*/) -> @location(0) vec4<f32> {
   return/*block_comments_delimit_tokens*/vec4<f32>(.4, .2, .3, 1);
 }/* block comments are OK at EOF...*/)");
 
@@ -128,8 +128,8 @@
 
 TEST_F(ParserImplTest, Comments_UnterminatedBlockComment) {
   auto p = parser(R"(
-[[stage(fragment)]]
-fn main() -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn main() -> @location(0) vec4<f32> {
   return vec4<f32>(.4, .2, .3, 1);
 } /* unterminated block comments are invalid ...)");
 
diff --git a/src/reader/wgsl/parser_impl_type_decl_test.cc b/src/reader/wgsl/parser_impl_type_decl_test.cc
index f3cc52d..13e368a 100644
--- a/src/reader/wgsl/parser_impl_type_decl_test.cc
+++ b/src/reader/wgsl/parser_impl_type_decl_test.cc
@@ -440,7 +440,7 @@
 }
 
 TEST_F(ParserImplTest, TypeDecl_Array_Stride) {
-  auto p = parser("[[stride(16)]] array<f32, 5>");
+  auto p = parser("@stride(16) array<f32, 5>");
   auto t = p->type_decl();
   EXPECT_TRUE(t.matched);
   EXPECT_FALSE(t.errored);
@@ -460,11 +460,11 @@
   auto* stride = a->decorations[0];
   ASSERT_TRUE(stride->Is<ast::StrideDecoration>());
   ASSERT_EQ(stride->As<ast::StrideDecoration>()->stride, 16u);
-  EXPECT_EQ(t.value->source.range, (Source::Range{{1u, 16u}, {1u, 29u}}));
+  EXPECT_EQ(t.value->source.range, (Source::Range{{1u, 13u}, {1u, 26u}}));
 }
 
 TEST_F(ParserImplTest, TypeDecl_Array_Runtime_Stride) {
-  auto p = parser("[[stride(16)]] array<f32>");
+  auto p = parser("@stride(16) array<f32>");
   auto t = p->type_decl();
   EXPECT_TRUE(t.matched);
   EXPECT_FALSE(t.errored);
@@ -480,11 +480,11 @@
   auto* stride = a->decorations[0];
   ASSERT_TRUE(stride->Is<ast::StrideDecoration>());
   ASSERT_EQ(stride->As<ast::StrideDecoration>()->stride, 16u);
-  EXPECT_EQ(t.value->source.range, (Source::Range{{1u, 16u}, {1u, 26u}}));
+  EXPECT_EQ(t.value->source.range, (Source::Range{{1u, 13u}, {1u, 23u}}));
 }
 
 TEST_F(ParserImplTest, TypeDecl_Array_MultipleDecorations_OneBlock) {
-  auto p = parser("[[stride(16), stride(32)]] array<f32>");
+  auto p = parser("@stride(16) @stride(32) array<f32>");
   auto t = p->type_decl();
   EXPECT_TRUE(t.matched);
   EXPECT_FALSE(t.errored);
@@ -502,11 +502,11 @@
   EXPECT_EQ(decos[0]->As<ast::StrideDecoration>()->stride, 16u);
   EXPECT_TRUE(decos[1]->Is<ast::StrideDecoration>());
   EXPECT_EQ(decos[1]->As<ast::StrideDecoration>()->stride, 32u);
-  EXPECT_EQ(t.value->source.range, (Source::Range{{1u, 28u}, {1u, 38u}}));
+  EXPECT_EQ(t.value->source.range, (Source::Range{{1u, 25u}, {1u, 35u}}));
 }
 
 TEST_F(ParserImplTest, TypeDecl_Array_MultipleDecorations_MultipleBlocks) {
-  auto p = parser("[[stride(16)]] [[stride(32)]] array<f32>");
+  auto p = parser("@stride(16) @stride(32) array<f32>");
   auto t = p->type_decl();
   EXPECT_TRUE(t.matched);
   EXPECT_FALSE(t.errored);
@@ -524,89 +524,163 @@
   EXPECT_EQ(decos[0]->As<ast::StrideDecoration>()->stride, 16u);
   EXPECT_TRUE(decos[1]->Is<ast::StrideDecoration>());
   EXPECT_EQ(decos[1]->As<ast::StrideDecoration>()->stride, 32u);
-  EXPECT_EQ(t.value->source.range, (Source::Range{{1u, 31u}, {1u, 41u}}));
+  EXPECT_EQ(t.value->source.range, (Source::Range{{1u, 25u}, {1u, 35u}}));
 }
 
 TEST_F(ParserImplTest, TypeDecl_Array_Decoration_MissingArray) {
-  auto p = parser("[[stride(16)]] f32");
+  auto p = parser("@stride(16) f32");
   auto t = p->type_decl();
   EXPECT_TRUE(t.errored);
   EXPECT_FALSE(t.matched);
   ASSERT_EQ(t.value, nullptr);
   ASSERT_TRUE(p->has_error());
-  EXPECT_EQ(p->error(), "1:3: unexpected decorations");
+  EXPECT_EQ(p->error(), "1:2: unexpected decorations");
 }
 
-TEST_F(ParserImplTest, TypeDecl_Array_Decoration_MissingClosingAttr) {
+TEST_F(ParserImplTest, TypeDecl_Array_Decoration_UnknownDecoration) {
+  auto p = parser("@unknown(16) array<f32, 5>");
+  auto t = p->type_decl();
+  EXPECT_TRUE(t.errored);
+  EXPECT_FALSE(t.matched);
+  ASSERT_EQ(t.value, nullptr);
+  ASSERT_TRUE(p->has_error());
+  EXPECT_EQ(p->error(), R"(1:2: expected decoration)");
+}
+TEST_F(ParserImplTest, TypeDecl_Array_Stride_MissingLeftParen) {
+  auto p = parser("@stride 4) array<f32, 5>");
+  auto t = p->type_decl();
+  EXPECT_TRUE(t.errored);
+  EXPECT_FALSE(t.matched);
+  ASSERT_EQ(t.value, nullptr);
+  ASSERT_TRUE(p->has_error());
+  EXPECT_EQ(p->error(), R"(1:9: expected '(' for stride decoration)");
+}
+
+TEST_F(ParserImplTest, TypeDecl_Array_Stride_MissingRightParen) {
+  auto p = parser("@stride(4 array<f32, 5>");
+  auto t = p->type_decl();
+  EXPECT_TRUE(t.errored);
+  EXPECT_FALSE(t.matched);
+  ASSERT_EQ(t.value, nullptr);
+  ASSERT_TRUE(p->has_error());
+  EXPECT_EQ(p->error(), R"(1:11: expected ')' for stride decoration)");
+}
+
+TEST_F(ParserImplTest, TypeDecl_Array_Stride_MissingValue) {
+  auto p = parser("@stride() array<f32, 5>");
+  auto t = p->type_decl();
+  EXPECT_TRUE(t.errored);
+  EXPECT_FALSE(t.matched);
+  ASSERT_EQ(t.value, nullptr);
+  ASSERT_TRUE(p->has_error());
+  EXPECT_EQ(p->error(),
+            "1:9: expected signed integer literal for stride decoration");
+}
+
+TEST_F(ParserImplTest, TypeDecl_Array_Stride_InvalidValue) {
+  auto p = parser("@stride(invalid) array<f32, 5>");
+  auto t = p->type_decl();
+  EXPECT_TRUE(t.errored);
+  EXPECT_FALSE(t.matched);
+  ASSERT_EQ(t.value, nullptr);
+  ASSERT_TRUE(p->has_error());
+  EXPECT_EQ(p->error(),
+            "1:9: expected signed integer literal for stride decoration");
+}
+
+TEST_F(ParserImplTest, TypeDecl_Array_Stride_InvalidValue_Negative) {
+  auto p = parser("@stride(-1) array<f32, 5>");
+  auto t = p->type_decl();
+  EXPECT_TRUE(t.errored);
+  EXPECT_FALSE(t.matched);
+  ASSERT_EQ(t.value, nullptr);
+  ASSERT_TRUE(p->has_error());
+  EXPECT_EQ(p->error(), "1:9: stride decoration must be greater than 0");
+}
+
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplTest,
+       DEPRECATED_TypeDecl_Array_Decoration_MissingClosingAttr) {
   auto p = parser("[[stride(16) array<f32, 5>");
   auto t = p->type_decl();
   EXPECT_TRUE(t.errored);
   EXPECT_FALSE(t.matched);
   ASSERT_EQ(t.value, nullptr);
   ASSERT_TRUE(p->has_error());
-  EXPECT_EQ(p->error(), "1:14: expected ']]' for decoration list");
+  EXPECT_EQ(
+      p->error(),
+      R"(1:1: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+1:14: expected ']]' for decoration list)");
 }
 
-TEST_F(ParserImplTest, TypeDecl_Array_Decoration_UnknownDecoration) {
-  auto p = parser("[[unknown 16]] array<f32, 5>");
-  auto t = p->type_decl();
-  EXPECT_TRUE(t.errored);
-  EXPECT_FALSE(t.matched);
-  ASSERT_EQ(t.value, nullptr);
-  ASSERT_TRUE(p->has_error());
-  EXPECT_EQ(p->error(), "1:3: expected decoration");
-}
-
-TEST_F(ParserImplTest, TypeDecl_Array_Stride_MissingLeftParen) {
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplTest, DEPRECATED_TypeDecl_Array_Stride_MissingLeftParen) {
   auto p = parser("[[stride 4)]] array<f32, 5>");
   auto t = p->type_decl();
   EXPECT_TRUE(t.errored);
   EXPECT_FALSE(t.matched);
   ASSERT_EQ(t.value, nullptr);
   ASSERT_TRUE(p->has_error());
-  EXPECT_EQ(p->error(), "1:10: expected '(' for stride decoration");
+  EXPECT_EQ(
+      p->error(),
+      R"(1:1: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+1:10: expected '(' for stride decoration)");
 }
 
-TEST_F(ParserImplTest, TypeDecl_Array_Stride_MissingRightParen) {
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplTest, DEPRECATED_TypeDecl_Array_Stride_MissingRightParen) {
   auto p = parser("[[stride(4]] array<f32, 5>");
   auto t = p->type_decl();
   EXPECT_TRUE(t.errored);
   EXPECT_FALSE(t.matched);
   ASSERT_EQ(t.value, nullptr);
   ASSERT_TRUE(p->has_error());
-  EXPECT_EQ(p->error(), "1:11: expected ')' for stride decoration");
+  EXPECT_EQ(
+      p->error(),
+      R"(1:1: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+1:11: expected ')' for stride decoration)");
 }
 
-TEST_F(ParserImplTest, TypeDecl_Array_Stride_MissingValue) {
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplTest, DEPRECATED_TypeDecl_Array_Stride_MissingValue) {
   auto p = parser("[[stride()]] array<f32, 5>");
   auto t = p->type_decl();
   EXPECT_TRUE(t.errored);
   EXPECT_FALSE(t.matched);
   ASSERT_EQ(t.value, nullptr);
   ASSERT_TRUE(p->has_error());
-  EXPECT_EQ(p->error(),
-            "1:10: expected signed integer literal for stride decoration");
+  EXPECT_EQ(
+      p->error(),
+      R"(1:1: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+1:10: expected signed integer literal for stride decoration)");
 }
 
-TEST_F(ParserImplTest, TypeDecl_Array_Stride_InvalidValue) {
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplTest, DEPRECATED_TypeDecl_Array_Stride_InvalidValue) {
   auto p = parser("[[stride(invalid)]] array<f32, 5>");
   auto t = p->type_decl();
   EXPECT_TRUE(t.errored);
   EXPECT_FALSE(t.matched);
   ASSERT_EQ(t.value, nullptr);
   ASSERT_TRUE(p->has_error());
-  EXPECT_EQ(p->error(),
-            "1:10: expected signed integer literal for stride decoration");
+  EXPECT_EQ(
+      p->error(),
+      R"(1:1: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+1:10: expected signed integer literal for stride decoration)");
 }
 
-TEST_F(ParserImplTest, TypeDecl_Array_Stride_InvalidValue_Negative) {
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplTest, DEPRECATED_TypeDecl_Array_Stride_InvalidValue_Negative) {
   auto p = parser("[[stride(-1)]] array<f32, 5>");
   auto t = p->type_decl();
   EXPECT_TRUE(t.errored);
   EXPECT_FALSE(t.matched);
   ASSERT_EQ(t.value, nullptr);
   ASSERT_TRUE(p->has_error());
-  EXPECT_EQ(p->error(), "1:10: stride decoration must be greater than 0");
+  EXPECT_EQ(
+      p->error(),
+      R"(1:1: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+1:10: stride decoration must be greater than 0)");
 }
 
 TEST_F(ParserImplTest, TypeDecl_Array_Runtime) {
diff --git a/src/reader/wgsl/parser_impl_variable_decoration_list_test.cc b/src/reader/wgsl/parser_impl_variable_decoration_list_test.cc
index 5493345..5cb3801 100644
--- a/src/reader/wgsl/parser_impl_variable_decoration_list_test.cc
+++ b/src/reader/wgsl/parser_impl_variable_decoration_list_test.cc
@@ -20,7 +20,7 @@
 namespace {
 
 TEST_F(ParserImplTest, DecorationList_Parses) {
-  auto p = parser(R"([[location(4), builtin(position)]])");
+  auto p = parser(R"(@location(4) @builtin(position))");
   auto decos = p->decoration_list();
   ASSERT_FALSE(p->has_error()) << p->error();
   ASSERT_FALSE(decos.errored);
@@ -39,65 +39,94 @@
             ast::Builtin::kPosition);
 }
 
-TEST_F(ParserImplTest, DecorationList_Empty) {
+TEST_F(ParserImplTest, DecorationList_Invalid) {
+  auto p = parser(R"(@invalid)");
+  auto decos = p->decoration_list();
+  EXPECT_TRUE(p->has_error());
+  EXPECT_TRUE(decos.errored);
+  EXPECT_FALSE(decos.matched);
+  EXPECT_TRUE(decos.value.empty());
+  EXPECT_EQ(p->error(), R"(1:2: expected decoration)");
+}
+
+TEST_F(ParserImplTest, DecorationList_InvalidValue) {
+  auto p = parser("@builtin(invalid)");
+  auto decos = p->decoration_list();
+  EXPECT_TRUE(p->has_error());
+  EXPECT_TRUE(decos.errored);
+  EXPECT_FALSE(decos.matched);
+  EXPECT_TRUE(decos.value.empty());
+  EXPECT_EQ(p->error(), "1:10: invalid value for builtin decoration");
+}
+
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplTest, DEPRECATED_DecorationList_Empty) {
   auto p = parser(R"([[]])");
   auto decos = p->decoration_list();
   EXPECT_TRUE(p->has_error());
   EXPECT_TRUE(decos.errored);
   EXPECT_FALSE(decos.matched);
   EXPECT_TRUE(decos.value.empty());
-  EXPECT_EQ(p->error(), "1:3: empty decoration list");
+  EXPECT_EQ(
+      p->error(),
+      R"(1:1: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+1:3: empty decoration list)");
 }
 
-TEST_F(ParserImplTest, DecorationList_Invalid) {
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplTest, DEPRECATED_DecorationList_Invalid) {
   auto p = parser(R"([[invalid]])");
   auto decos = p->decoration_list();
   EXPECT_TRUE(p->has_error());
   EXPECT_TRUE(decos.errored);
   EXPECT_FALSE(decos.matched);
   EXPECT_TRUE(decos.value.empty());
-  EXPECT_EQ(p->error(), "1:3: expected decoration");
+  EXPECT_EQ(
+      p->error(),
+      R"(1:1: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+1:3: expected decoration)");
 }
 
-TEST_F(ParserImplTest, DecorationList_ExtraComma) {
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplTest, DEPRECATED_DecorationList_ExtraComma) {
   auto p = parser(R"([[builtin(position), ]])");
   auto decos = p->decoration_list();
   EXPECT_TRUE(p->has_error());
   EXPECT_TRUE(decos.errored);
   EXPECT_FALSE(decos.matched);
   EXPECT_TRUE(decos.value.empty());
-  EXPECT_EQ(p->error(), "1:22: expected decoration");
+  EXPECT_EQ(
+      p->error(),
+      R"(1:1: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+1:22: expected decoration)");
 }
 
-TEST_F(ParserImplTest, DecorationList_MissingComma) {
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplTest, DEPRECATED_DecorationList_MissingComma) {
   auto p = parser(R"([[binding(4) location(5)]])");
   auto decos = p->decoration_list();
   EXPECT_TRUE(p->has_error());
   EXPECT_TRUE(decos.errored);
   EXPECT_FALSE(decos.matched);
   EXPECT_TRUE(decos.value.empty());
-  EXPECT_EQ(p->error(), "1:14: expected ',' for decoration list");
+  EXPECT_EQ(
+      p->error(),
+      R"(1:1: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+1:14: expected ',' for decoration list)");
 }
 
-TEST_F(ParserImplTest, DecorationList_BadDecoration) {
-  auto p = parser(R"([[location(bad)]])");
-  auto decos = p->decoration_list();
-  EXPECT_TRUE(p->has_error());
-  EXPECT_TRUE(decos.errored);
-  EXPECT_FALSE(decos.matched);
-  EXPECT_TRUE(decos.value.empty());
-  EXPECT_EQ(p->error(),
-            "1:12: expected signed integer literal for location decoration");
-}
-
-TEST_F(ParserImplTest, DecorationList_InvalidBuiltin) {
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplTest, DEPRECATED_DecorationList_InvalidValue) {
   auto p = parser("[[builtin(invalid)]]");
   auto decos = p->decoration_list();
   EXPECT_TRUE(p->has_error());
   EXPECT_TRUE(decos.errored);
   EXPECT_FALSE(decos.matched);
   EXPECT_TRUE(decos.value.empty());
-  EXPECT_EQ(p->error(), "1:11: invalid value for builtin decoration");
+  EXPECT_EQ(
+      p->error(),
+      R"(1:1: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+1:11: invalid value for builtin decoration)");
 }
 
 }  // namespace
diff --git a/src/reader/wgsl/parser_impl_variable_ident_decl_test.cc b/src/reader/wgsl/parser_impl_variable_ident_decl_test.cc
index 489463e..73efe8c 100644
--- a/src/reader/wgsl/parser_impl_variable_ident_decl_test.cc
+++ b/src/reader/wgsl/parser_impl_variable_ident_decl_test.cc
@@ -77,7 +77,7 @@
 }
 
 TEST_F(ParserImplTest, VariableIdentDecl_NonAccessDecoFail) {
-  auto p = parser("my_var : [[stride(1)]] S");
+  auto p = parser("my_var : @stride(1) S");
 
   auto* mem = Member("a", ty.i32(), ast::DecorationList{});
   ast::StructMemberList members;
@@ -90,19 +90,11 @@
   auto decl = p->expect_variable_ident_decl("test");
   ASSERT_TRUE(p->has_error());
   ASSERT_TRUE(decl.errored);
-  ASSERT_EQ(p->error(), "1:12: unexpected decorations");
-}
-
-TEST_F(ParserImplTest, VariableIdentDecl_DecorationMissingRightBlock) {
-  auto p = parser("my_var : [[stride(4) S");
-  auto decl = p->expect_variable_ident_decl("test");
-  ASSERT_TRUE(p->has_error());
-  ASSERT_TRUE(decl.errored);
-  ASSERT_EQ(p->error(), "1:22: expected ']]' for decoration list");
+  ASSERT_EQ(p->error(), "1:11: unexpected decorations");
 }
 
 TEST_F(ParserImplTest, VariableIdentDecl_DecorationMissingRightParen) {
-  auto p = parser("my_var : [[stride(4]] S");
+  auto p = parser("my_var : @stride(4 S");
   auto decl = p->expect_variable_ident_decl("test");
   ASSERT_TRUE(p->has_error());
   ASSERT_TRUE(decl.errored);
@@ -110,19 +102,62 @@
 }
 
 TEST_F(ParserImplTest, VariableIdentDecl_DecorationMissingLeftParen) {
+  auto p = parser("my_var : @stride 4) S");
+  auto decl = p->expect_variable_ident_decl("test");
+  ASSERT_TRUE(p->has_error());
+  ASSERT_TRUE(decl.errored);
+  ASSERT_EQ(p->error(), "1:18: expected '(' for stride decoration");
+}
+
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplTest,
+       DEPRECATED_VariableIdentDecl_DecorationMissingRightBlock) {
+  auto p = parser("my_var : [[stride(4) S");
+  auto decl = p->expect_variable_ident_decl("test");
+  ASSERT_TRUE(p->has_error());
+  ASSERT_TRUE(decl.errored);
+  ASSERT_EQ(
+      p->error(),
+      R"(1:10: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+1:22: expected ']]' for decoration list)");
+}
+
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplTest,
+       DEPRECATED_VariableIdentDecl_DecorationMissingRightParen) {
+  auto p = parser("my_var : [[stride(4]] S");
+  auto decl = p->expect_variable_ident_decl("test");
+  ASSERT_TRUE(p->has_error());
+  ASSERT_TRUE(decl.errored);
+  ASSERT_EQ(
+      p->error(),
+      R"(1:10: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+1:20: expected ')' for stride decoration)");
+}
+
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplTest,
+       DEPRECATED_VariableIdentDecl_DecorationMissingLeftParen) {
   auto p = parser("my_var : [[stride 4)]] S");
   auto decl = p->expect_variable_ident_decl("test");
   ASSERT_TRUE(p->has_error());
   ASSERT_TRUE(decl.errored);
-  ASSERT_EQ(p->error(), "1:19: expected '(' for stride decoration");
+  ASSERT_EQ(
+      p->error(),
+      R"(1:10: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+1:19: expected '(' for stride decoration)");
 }
 
-TEST_F(ParserImplTest, VariableIdentDecl_DecorationEmpty) {
+// TODO(crbug.com/tint/1382): Remove
+TEST_F(ParserImplTest, DEPRECATED_VariableIdentDecl_DecorationEmpty) {
   auto p = parser("my_var : [[]] S");
   auto decl = p->expect_variable_ident_decl("test");
   ASSERT_TRUE(p->has_error());
   ASSERT_TRUE(decl.errored);
-  ASSERT_EQ(p->error(), "1:12: empty decoration list");
+  ASSERT_EQ(
+      p->error(),
+      R"(1:10: use of deprecated language feature: [[decoration]] style decorations have been replaced with @decoration style
+1:12: empty decoration list)");
 }
 
 }  // namespace
diff --git a/src/reader/wgsl/parser_test.cc b/src/reader/wgsl/parser_test.cc
index b1e5566..f6031dd 100644
--- a/src/reader/wgsl/parser_test.cc
+++ b/src/reader/wgsl/parser_test.cc
@@ -34,8 +34,8 @@
 
 TEST_F(ParserTest, Parses) {
   Source::File file("test.wgsl", R"(
-[[stage(fragment)]]
-fn main() -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn main() -> @location(0) vec4<f32> {
   return vec4<f32>(.4, .2, .3, 1.);
 }
 )");
diff --git a/src/reader/wgsl/token.cc b/src/reader/wgsl/token.cc
index 864036c..8ba2cff 100644
--- a/src/reader/wgsl/token.cc
+++ b/src/reader/wgsl/token.cc
@@ -42,6 +42,8 @@
       return "&&";
     case Token::Type::kArrow:
       return "->";
+    case Token::Type::kAttr:
+      return "@";
     case Token::Type::kAttrLeft:
       return "[[";
     case Token::Type::kAttrRight:
diff --git a/src/reader/wgsl/token.h b/src/reader/wgsl/token.h
index dca2112..8fdc87e 100644
--- a/src/reader/wgsl/token.h
+++ b/src/reader/wgsl/token.h
@@ -50,9 +50,11 @@
     kAndAnd,
     /// A '->'
     kArrow,
-    /// A '[['
+    /// A '@'
+    kAttr,
+    /// A '[[' - [DEPRECATED] now '@'
     kAttrLeft,
-    /// A ']]'
+    /// A ']]' - [DEPRECATED] now '@'
     kAttrRight,
     /// A '/'
     kForwardSlash,
diff --git a/src/resolver/assignment_validation_test.cc b/src/resolver/assignment_validation_test.cc
index f573161..39cb300 100644
--- a/src/resolver/assignment_validation_test.cc
+++ b/src/resolver/assignment_validation_test.cc
@@ -27,7 +27,7 @@
 
 TEST_F(ResolverAssignmentValidationTest, ReadOnlyBuffer) {
   // [[block]] struct S { m : i32 };
-  // [[group(0), binding(0)]]
+  // @group(0) @binding(0)
   // var<storage,read> a : S;
   auto* s = Structure("S", {Member("m", ty.i32())},
                       {create<ast::StructBlockDecoration>()});
@@ -251,7 +251,7 @@
 
 TEST_F(ResolverAssignmentValidationTest, AssignNonConstructible_Atomic) {
   // [[block]] struct S { a : atomic<i32>; };
-  // [[group(0), binding(0)]] var<storage, read_write> v : S;
+  // @group(0) @binding(0) var<storage, read_write> v : S;
   // v.a = v.a;
 
   auto* s = Structure("S", {Member("a", ty.atomic(ty.i32()))},
@@ -273,7 +273,7 @@
 
 TEST_F(ResolverAssignmentValidationTest, AssignNonConstructible_RuntimeArray) {
   // [[block]] struct S { a : array<f32>; };
-  // [[group(0), binding(0)]] var<storage, read_write> v : S;
+  // @group(0) @binding(0) var<storage, read_write> v : S;
   // v.a = v.a;
 
   auto* s = Structure("S", {Member("a", ty.array(ty.f32()))},
@@ -299,7 +299,7 @@
   // struct S {
   //   arr: array<i32>;
   // };
-  // [[group(0), binding(0)]] var<storage, read_write> s : S;
+  // @group(0) @binding(0) var<storage, read_write> s : S;
   // fn f() {
   //   _ = s;
   // }
@@ -320,7 +320,7 @@
   // struct S {
   //   arr: array<i32>;
   // };
-  // [[group(0), binding(0)]] var<storage, read_write> s : S;
+  // @group(0) @binding(0) var<storage, read_write> s : S;
   // fn f() {
   //   _ = s.arr;
   // }
@@ -347,10 +347,10 @@
   // struct U {
   //   i:   i32;
   // };
-  // [[group(0), binding(0)]] var tex texture_2d;
-  // [[group(0), binding(1)]] var smp sampler;
-  // [[group(0), binding(2)]] var<uniform> u : U;
-  // [[group(0), binding(3)]] var<storage, read_write> s : S;
+  // @group(0) @binding(0) var tex texture_2d;
+  // @group(0) @binding(1) var smp sampler;
+  // @group(0) @binding(2) var<uniform> u : U;
+  // @group(0) @binding(3) var<storage, read_write> s : S;
   // var<workgroup> wg : array<f32, 10>
   // fn f() {
   //   _ = 1;
diff --git a/src/resolver/builtins_validation_test.cc b/src/resolver/builtins_validation_test.cc
index 251be8e..8bbcf3a 100644
--- a/src/resolver/builtins_validation_test.cc
+++ b/src/resolver/builtins_validation_test.cc
@@ -201,10 +201,10 @@
                          testing::ValuesIn(cases));
 
 TEST_F(ResolverBuiltinsValidationTest, FragDepthIsInput_Fail) {
-  // [[stage(fragment)]]
+  // @stage(fragment)
   // fn fs_main(
-  //   [[builtin(frag_depth)]] fd: f32,
-  // ) -> [[location(0)]] f32 { return 1.0; }
+  //   @builtin(frag_depth) fd: f32,
+  // ) -> @location(0) f32 { return 1.0; }
   auto* fd = Param(
       "fd", ty.f32(),
       ast::DecorationList{Builtin(Source{{12, 34}}, ast::Builtin::kFragDepth)});
@@ -219,10 +219,10 @@
 
 TEST_F(ResolverBuiltinsValidationTest, FragDepthIsInputStruct_Fail) {
   // struct MyInputs {
-  //   [[builtin(frag_depth)]] ff: f32;
+  //   @builtin(frag_depth) ff: f32;
   // };
-  // [[stage(fragment)]]
-  // fn fragShader(arg: MyInputs) -> [[location(0)]] f32 { return 1.0; }
+  // @stage(fragment)
+  // fn fragShader(arg: MyInputs) -> @location(0) f32 { return 1.0; }
 
   auto* s = Structure(
       "MyInputs", {Member("frag_depth", ty.f32(),
@@ -240,9 +240,9 @@
 
 TEST_F(ResolverBuiltinsValidationTest, StructBuiltinInsideEntryPoint_Ignored) {
   // struct S {
-  //   [[builtin(vertex_index)]] idx: u32;
+  //   @builtin(vertex_index) idx: u32;
   // };
-  // [[stage(fragment)]]
+  // @stage(fragment)
   // fn fragShader() { var s : S; }
 
   Structure("S",
@@ -257,10 +257,10 @@
 
 TEST_F(ResolverBuiltinsValidationTest, PositionNotF32_Struct_Fail) {
   // struct MyInputs {
-  //   [[builtin(kPosition)]] p: vec4<u32>;
+  //   @builtin(kPosition) p: vec4<u32>;
   // };
-  // [[stage(fragment)]]
-  // fn fragShader(is_front: MyInputs) -> [[location(0)]] f32 { return 1.0; }
+  // @stage(fragment)
+  // fn fragShader(is_front: MyInputs) -> @location(0) f32 { return 1.0; }
 
   auto* m = Member(
       "position", ty.vec4<u32>(),
@@ -275,8 +275,8 @@
 }
 
 TEST_F(ResolverBuiltinsValidationTest, PositionNotF32_ReturnType_Fail) {
-  // [[stage(vertex)]]
-  // fn main() -> [[builtin(position)]] f32 { return 1.0; }
+  // @stage(vertex)
+  // fn main() -> @builtin(position) f32 { return 1.0; }
   Func("main", {}, ty.f32(), {Return(1.0f)},
        {Stage(ast::PipelineStage::kVertex)},
        {Builtin(Source{{12, 34}}, ast::Builtin::kPosition)});
@@ -288,10 +288,10 @@
 
 TEST_F(ResolverBuiltinsValidationTest, FragDepthNotF32_Struct_Fail) {
   // struct MyInputs {
-  //   [[builtin(kFragDepth)]] p: i32;
+  //   @builtin(kFragDepth) p: i32;
   // };
-  // [[stage(fragment)]]
-  // fn fragShader(is_front: MyInputs) -> [[location(0)]] f32 { return 1.0; }
+  // @stage(fragment)
+  // fn fragShader(is_front: MyInputs) -> @location(0) f32 { return 1.0; }
 
   auto* m = Member(
       "frag_depth", ty.i32(),
@@ -307,10 +307,10 @@
 
 TEST_F(ResolverBuiltinsValidationTest, SampleMaskNotU32_Struct_Fail) {
   // struct MyInputs {
-  //   [[builtin(sample_mask)]] m: f32;
+  //   @builtin(sample_mask) m: f32;
   // };
-  // [[stage(fragment)]]
-  // fn fragShader(is_front: MyInputs) -> [[location(0)]] f32 { return 1.0; }
+  // @stage(fragment)
+  // fn fragShader(is_front: MyInputs) -> @location(0) f32 { return 1.0; }
 
   auto* s = Structure(
       "MyInputs", {Member("m", ty.f32(),
@@ -325,8 +325,8 @@
 }
 
 TEST_F(ResolverBuiltinsValidationTest, SampleMaskNotU32_ReturnType_Fail) {
-  // [[stage(fragment)]]
-  // fn main() -> [[builtin(sample_mask)]] i32 { return 1; }
+  // @stage(fragment)
+  // fn main() -> @builtin(sample_mask) i32 { return 1; }
   Func("main", {}, ty.i32(), {Return(1)},
        {Stage(ast::PipelineStage::kFragment)},
        {Builtin(Source{{12, 34}}, ast::Builtin::kSampleMask)});
@@ -337,10 +337,10 @@
 }
 
 TEST_F(ResolverBuiltinsValidationTest, SampleMaskIsNotU32_Fail) {
-  // [[stage(fragment)]]
+  // @stage(fragment)
   // fn fs_main(
-  //   [[builtin(sample_mask)]] arg: bool
-  // ) -> [[location(0)]] f32 { return 1.0; }
+  //   @builtin(sample_mask) arg: bool
+  // ) -> @location(0) f32 { return 1.0; }
   auto* arg = Param("arg", ty.bool_(),
                     ast::DecorationList{
                         Builtin(Source{{12, 34}}, ast::Builtin::kSampleMask)});
@@ -354,10 +354,10 @@
 
 TEST_F(ResolverBuiltinsValidationTest, SampleIndexIsNotU32_Struct_Fail) {
   // struct MyInputs {
-  //   [[builtin(sample_index)]] m: f32;
+  //   @builtin(sample_index) m: f32;
   // };
-  // [[stage(fragment)]]
-  // fn fragShader(is_front: MyInputs) -> [[location(0)]] f32 { return 1.0; }
+  // @stage(fragment)
+  // fn fragShader(is_front: MyInputs) -> @location(0) f32 { return 1.0; }
 
   auto* s = Structure(
       "MyInputs", {Member("m", ty.f32(),
@@ -372,10 +372,10 @@
 }
 
 TEST_F(ResolverBuiltinsValidationTest, SampleIndexIsNotU32_Fail) {
-  // [[stage(fragment)]]
+  // @stage(fragment)
   // fn fs_main(
-  //   [[builtin(sample_index)]] arg: bool
-  // ) -> [[location(0)]] f32 { return 1.0; }
+  //   @builtin(sample_index) arg: bool
+  // ) -> @location(0) f32 { return 1.0; }
   auto* arg = Param("arg", ty.bool_(),
                     ast::DecorationList{
                         Builtin(Source{{12, 34}}, ast::Builtin::kSampleIndex)});
@@ -388,10 +388,10 @@
 }
 
 TEST_F(ResolverBuiltinsValidationTest, PositionIsNotF32_Fail) {
-  // [[stage(fragment)]]
+  // @stage(fragment)
   // fn fs_main(
-  //   [[builtin(kPosition)]] p: vec3<f32>,
-  // ) -> [[location(0)]] f32 { return 1.0; }
+  //   @builtin(kPosition) p: vec3<f32>,
+  // ) -> @location(0) f32 { return 1.0; }
   auto* p = Param(
       "p", ty.vec3<f32>(),
       ast::DecorationList{Builtin(Source{{12, 34}}, ast::Builtin::kPosition)});
@@ -404,8 +404,8 @@
 }
 
 TEST_F(ResolverBuiltinsValidationTest, FragDepthIsNotF32_Fail) {
-  // [[stage(fragment)]]
-  // fn fs_main() -> [[builtin(kFragDepth)]] f32 { var fd: i32; return fd; }
+  // @stage(fragment)
+  // fn fs_main() -> @builtin(kFragDepth) f32 { var fd: i32; return fd; }
   auto* fd = Var("fd", ty.i32());
   Func(
       "fs_main", {}, ty.i32(), {Decl(fd), Return(fd)},
@@ -417,11 +417,11 @@
 }
 
 TEST_F(ResolverBuiltinsValidationTest, VertexIndexIsNotU32_Fail) {
-  // [[stage(vertex)]]
+  // @stage(vertex)
   // fn main(
-  //   [[builtin(kVertexIndex)]] vi : f32,
-  //   [[builtin(kPosition)]] p :vec4<f32>
-  // ) -> [[builtin(kPosition)]] vec4<f32> { return vec4<f32>(); }
+  //   @builtin(kVertexIndex) vi : f32,
+  //   @builtin(kPosition) p :vec4<f32>
+  // ) -> @builtin(kPosition) vec4<f32> { return vec4<f32>(); }
   auto* p = Param("p", ty.vec4<f32>(),
                   ast::DecorationList{Builtin(ast::Builtin::kPosition)});
   auto* vi = Param("vi", ty.f32(),
@@ -436,11 +436,11 @@
 }
 
 TEST_F(ResolverBuiltinsValidationTest, InstanceIndexIsNotU32) {
-  // [[stage(vertex)]]
+  // @stage(vertex)
   // fn main(
-  //   [[builtin(kInstanceIndex)]] ii : f32,
-  //   [[builtin(kPosition)]] p :vec4<f32>
-  // ) -> [[builtin(kPosition)]] vec4<f32> { return vec4<f32>(); }
+  //   @builtin(kInstanceIndex) ii : f32,
+  //   @builtin(kPosition) p :vec4<f32>
+  // ) -> @builtin(kPosition) vec4<f32> { return vec4<f32>(); }
   auto* p = Param("p", ty.vec4<f32>(),
                   ast::DecorationList{Builtin(ast::Builtin::kPosition)});
   auto* ii = Param("ii", ty.f32(),
@@ -455,13 +455,13 @@
 }
 
 TEST_F(ResolverBuiltinsValidationTest, FragmentBuiltin_Pass) {
-  // [[stage(fragment)]]
+  // @stage(fragment)
   // fn fs_main(
-  //   [[builtin(kPosition)]] p: vec4<f32>,
-  //   [[builtin(front_facing)]] ff: bool,
-  //   [[builtin(sample_index)]] si: u32,
-  //   [[builtin(sample_mask)]] sm : u32
-  // ) -> [[builtin(frag_depth)]] f32 { var fd: f32; return fd; }
+  //   @builtin(kPosition) p: vec4<f32>,
+  //   @builtin(front_facing) ff: bool,
+  //   @builtin(sample_index) si: u32,
+  //   @builtin(sample_mask) sm : u32
+  // ) -> @builtin(frag_depth) f32 { var fd: f32; return fd; }
   auto* p = Param("p", ty.vec4<f32>(),
                   ast::DecorationList{Builtin(ast::Builtin::kPosition)});
   auto* ff = Param("ff", ty.bool_(),
@@ -479,11 +479,11 @@
 }
 
 TEST_F(ResolverBuiltinsValidationTest, VertexBuiltin_Pass) {
-  // [[stage(vertex)]]
+  // @stage(vertex)
   // fn main(
-  //   [[builtin(vertex_index)]] vi : u32,
-  //   [[builtin(instance_index)]] ii : u32,
-  // ) -> [[builtin(position)]] vec4<f32> { var p :vec4<f32>; return p; }
+  //   @builtin(vertex_index) vi : u32,
+  //   @builtin(instance_index) ii : u32,
+  // ) -> @builtin(position) vec4<f32> { var p :vec4<f32>; return p; }
   auto* vi = Param("vi", ty.u32(),
                    ast::DecorationList{
                        Builtin(Source{{12, 34}}, ast::Builtin::kVertexIndex)});
@@ -504,13 +504,13 @@
 }
 
 TEST_F(ResolverBuiltinsValidationTest, ComputeBuiltin_Pass) {
-  // [[stage(compute), workgroup_size(1)]]
+  // @stage(compute) @workgroup_size(1)
   // fn main(
-  //   [[builtin(local_invocationId)]] li_id: vec3<u32>,
-  //   [[builtin(local_invocationIndex)]] li_index: u32,
-  //   [[builtin(global_invocationId)]] gi: vec3<u32>,
-  //   [[builtin(workgroup_id)]] wi: vec3<u32>,
-  //   [[builtin(num_workgroups)]] nwgs: vec3<u32>,
+  //   @builtin(local_invocationId) li_id: vec3<u32>,
+  //   @builtin(local_invocationIndex) li_index: u32,
+  //   @builtin(global_invocationId) gi: vec3<u32>,
+  //   @builtin(workgroup_id) wi: vec3<u32>,
+  //   @builtin(num_workgroups) nwgs: vec3<u32>,
   // ) {}
 
   auto* li_id =
@@ -618,13 +618,13 @@
 
 TEST_F(ResolverBuiltinsValidationTest, FragmentBuiltinStruct_Pass) {
   // Struct MyInputs {
-  //   [[builtin(kPosition)]] p: vec4<f32>;
-  //   [[builtin(frag_depth)]] fd: f32;
-  //   [[builtin(sample_index)]] si: u32;
-  //   [[builtin(sample_mask)]] sm : u32;;
+  //   @builtin(kPosition) p: vec4<f32>;
+  //   @builtin(frag_depth) fd: f32;
+  //   @builtin(sample_index) si: u32;
+  //   @builtin(sample_mask) sm : u32;;
   // };
-  // [[stage(fragment)]]
-  // fn fragShader(arg: MyInputs) -> [[location(0)]] f32 { return 1.0; }
+  // @stage(fragment)
+  // fn fragShader(arg: MyInputs) -> @location(0) f32 { return 1.0; }
 
   auto* s = Structure(
       "MyInputs",
@@ -642,10 +642,10 @@
 }
 
 TEST_F(ResolverBuiltinsValidationTest, FrontFacingParamIsNotBool_Fail) {
-  // [[stage(fragment)]]
+  // @stage(fragment)
   // fn fs_main(
-  //   [[builtin(front_facing)]] is_front: i32;
-  // ) -> [[location(0)]] f32 { return 1.0; }
+  //   @builtin(front_facing) is_front: i32;
+  // ) -> @location(0) f32 { return 1.0; }
 
   auto* is_front = Param("is_front", ty.i32(),
                          ast::DecorationList{Builtin(
@@ -661,10 +661,10 @@
 
 TEST_F(ResolverBuiltinsValidationTest, FrontFacingMemberIsNotBool_Fail) {
   // struct MyInputs {
-  //   [[builtin(front_facing)]] pos: f32;
+  //   @builtin(front_facing) pos: f32;
   // };
-  // [[stage(fragment)]]
-  // fn fragShader(is_front: MyInputs) -> [[location(0)]] f32 { return 1.0; }
+  // @stage(fragment)
+  // fn fragShader(is_front: MyInputs) -> @location(0) f32 { return 1.0; }
 
   auto* s = Structure(
       "MyInputs", {Member("pos", ty.f32(),
diff --git a/src/resolver/call_validation_test.cc b/src/resolver/call_validation_test.cc
index 86e4a17..5af0bf9 100644
--- a/src/resolver/call_validation_test.cc
+++ b/src/resolver/call_validation_test.cc
@@ -172,7 +172,7 @@
   // fn bar(p: ptr<function, i32>) {
   // foo(p);
   // }
-  // [[stage(fragment)]]
+  // @stage(fragment)
   // fn main() {
   //   var v: i32;
   //   bar(&v);
@@ -195,7 +195,7 @@
 
 TEST_F(ResolverCallValidationTest, LetPointer) {
   // fn x(p : ptr<function, i32>) -> i32 {}
-  // [[stage(fragment)]]
+  // @stage(fragment)
   // fn main() {
   //   var v: i32;
   //   let p: ptr<function, i32> = &v;
@@ -227,7 +227,7 @@
   // let p: ptr<private, i32> = &v;
   // fn foo(p : ptr<private, i32>) -> i32 {}
   // var v: i32;
-  // [[stage(fragment)]]
+  // @stage(fragment)
   // fn main() {
   //   var c: i32 = foo(p);
   // }
diff --git a/src/resolver/decoration_validation_test.cc b/src/resolver/decoration_validation_test.cc
index 8f043d6..592ba15 100644
--- a/src/resolver/decoration_validation_test.cc
+++ b/src/resolver/decoration_validation_test.cc
@@ -973,9 +973,9 @@
   Global(Source{{12, 34}}, "G", ty.Of(s), ast::StorageClass::kUniform);
 
   EXPECT_FALSE(r()->Resolve());
-  EXPECT_EQ(r()->error(),
-            "12:34 error: resource variables require [[group]] and [[binding]] "
-            "decorations");
+  EXPECT_EQ(
+      r()->error(),
+      R"(12:34 error: resource variables require @group and @binding decorations)");
 }
 
 TEST_F(ResourceDecorationTest, StorageBufferMissingBinding) {
@@ -985,9 +985,9 @@
          ast::Access::kRead);
 
   EXPECT_FALSE(r()->Resolve());
-  EXPECT_EQ(r()->error(),
-            "12:34 error: resource variables require [[group]] and [[binding]] "
-            "decorations");
+  EXPECT_EQ(
+      r()->error(),
+      R"(12:34 error: resource variables require @group and @binding decorations)");
 }
 
 TEST_F(ResourceDecorationTest, TextureMissingBinding) {
@@ -995,9 +995,9 @@
          ast::StorageClass::kNone);
 
   EXPECT_FALSE(r()->Resolve());
-  EXPECT_EQ(r()->error(),
-            "12:34 error: resource variables require [[group]] and [[binding]] "
-            "decorations");
+  EXPECT_EQ(
+      r()->error(),
+      R"(12:34 error: resource variables require @group and @binding decorations)");
 }
 
 TEST_F(ResourceDecorationTest, SamplerMissingBinding) {
@@ -1005,9 +1005,9 @@
          ast::StorageClass::kNone);
 
   EXPECT_FALSE(r()->Resolve());
-  EXPECT_EQ(r()->error(),
-            "12:34 error: resource variables require [[group]] and [[binding]] "
-            "decorations");
+  EXPECT_EQ(
+      r()->error(),
+      R"(12:34 error: resource variables require @group and @binding decorations)");
 }
 
 TEST_F(ResourceDecorationTest, BindingPairMissingBinding) {
@@ -1018,9 +1018,9 @@
          });
 
   EXPECT_FALSE(r()->Resolve());
-  EXPECT_EQ(r()->error(),
-            "12:34 error: resource variables require [[group]] and [[binding]] "
-            "decorations");
+  EXPECT_EQ(
+      r()->error(),
+      R"(12:34 error: resource variables require @group and @binding decorations)");
 }
 
 TEST_F(ResourceDecorationTest, BindingPairMissingGroup) {
@@ -1031,9 +1031,9 @@
          });
 
   EXPECT_FALSE(r()->Resolve());
-  EXPECT_EQ(r()->error(),
-            "12:34 error: resource variables require [[group]] and [[binding]] "
-            "decorations");
+  EXPECT_EQ(
+      r()->error(),
+      R"(12:34 error: resource variables require @group and @binding decorations)");
 }
 
 TEST_F(ResourceDecorationTest, BindingPointUsedTwiceByEntryPoint) {
@@ -1064,7 +1064,7 @@
   EXPECT_FALSE(r()->Resolve());
   EXPECT_EQ(
       r()->error(),
-      R"(56:78 error: entry point 'F' references multiple variables that use the same resource binding [[group(2), binding(1)]]
+      R"(56:78 error: entry point 'F' references multiple variables that use the same resource binding @group(2), @binding(1)
 12:34 note: first resource binding usage declared here)");
 }
 
@@ -1108,9 +1108,9 @@
          });
 
   EXPECT_FALSE(r()->Resolve());
-  EXPECT_EQ(r()->error(),
-            "12:34 error: non-resource variables must not have [[group]] or "
-            "[[binding]] decorations");
+  EXPECT_EQ(
+      r()->error(),
+      R"(12:34 error: non-resource variables must not have @group or @binding decorations)");
 }
 
 }  // namespace
@@ -1368,9 +1368,9 @@
        ast::DecorationList{Stage(ast::PipelineStage::kFragment)});
 
   EXPECT_FALSE(r()->Resolve());
-  EXPECT_EQ(r()->error(),
-            "12:34 error: interpolate attribute must only be used with "
-            "[[location]]");
+  EXPECT_EQ(
+      r()->error(),
+      R"(12:34 error: interpolate attribute must only be used with @location)");
 }
 
 TEST_F(InterpolateTest, MissingLocationAttribute_ReturnType) {
@@ -1381,9 +1381,9 @@
                     ast::InterpolationSampling::kNone)});
 
   EXPECT_FALSE(r()->Resolve());
-  EXPECT_EQ(r()->error(),
-            "12:34 error: interpolate attribute must only be used with "
-            "[[location]]");
+  EXPECT_EQ(
+      r()->error(),
+      R"(12:34 error: interpolate attribute must only be used with @location)");
 }
 
 TEST_F(InterpolateTest, MissingLocationAttribute_Struct) {
@@ -1393,9 +1393,9 @@
                                 ast::InterpolationSampling::kNone)})});
 
   EXPECT_FALSE(r()->Resolve());
-  EXPECT_EQ(r()->error(),
-            "12:34 error: interpolate attribute must only be used with "
-            "[[location]]");
+  EXPECT_EQ(
+      r()->error(),
+      R"(12:34 error: interpolate attribute must only be used with @location)");
 }
 
 }  // namespace
diff --git a/src/resolver/entry_point_validation_test.cc b/src/resolver/entry_point_validation_test.cc
index 0fc620b..a2c0eac 100644
--- a/src/resolver/entry_point_validation_test.cc
+++ b/src/resolver/entry_point_validation_test.cc
@@ -51,8 +51,8 @@
                                          public testing::Test {};
 
 TEST_F(ResolverEntryPointValidationTest, ReturnTypeAttribute_Location) {
-  // [[stage(fragment)]]
-  // fn main() -> [[location(0)]] f32 { return 1.0; }
+  // @stage(fragment)
+  // fn main() -> @location(0) f32 { return 1.0; }
   Func(Source{{12, 34}}, "main", {}, ty.f32(), {Return(1.0f)},
        {Stage(ast::PipelineStage::kFragment)}, {Location(0)});
 
@@ -60,8 +60,8 @@
 }
 
 TEST_F(ResolverEntryPointValidationTest, ReturnTypeAttribute_Builtin) {
-  // [[stage(vertex)]]
-  // fn main() -> [[builtin(position)]] vec4<f32> { return vec4<f32>(); }
+  // @stage(vertex)
+  // fn main() -> @builtin(position) vec4<f32> { return vec4<f32>(); }
   Func(Source{{12, 34}}, "main", {}, ty.vec4<f32>(),
        {Return(Construct(ty.vec4<f32>()))},
        {Stage(ast::PipelineStage::kVertex)},
@@ -71,7 +71,7 @@
 }
 
 TEST_F(ResolverEntryPointValidationTest, ReturnTypeAttribute_Missing) {
-  // [[stage(vertex)]]
+  // @stage(vertex)
   // fn main() -> f32 {
   //   return 1.0;
   // }
@@ -85,8 +85,8 @@
 }
 
 TEST_F(ResolverEntryPointValidationTest, ReturnTypeAttribute_Multiple) {
-  // [[stage(vertex)]]
-  // fn main() -> [[location(0)]] [[builtin(position)]] vec4<f32> {
+  // @stage(vertex)
+  // fn main() -> @location(0) @builtin(position) vec4<f32> {
   //   return vec4<f32>();
   // }
   Func(Source{{12, 34}}, "main", {}, ty.vec4<f32>(),
@@ -102,10 +102,10 @@
 
 TEST_F(ResolverEntryPointValidationTest, ReturnType_Struct_Valid) {
   // struct Output {
-  //   [[location(0)]] a : f32;
-  //   [[builtin(frag_depth)]] b : f32;
+  //   @location(0) a : f32;
+  //   @builtin(frag_depth) b : f32;
   // };
-  // [[stage(fragment)]]
+  // @stage(fragment)
   // fn main() -> Output {
   //   return Output();
   // }
@@ -122,9 +122,9 @@
 TEST_F(ResolverEntryPointValidationTest,
        ReturnType_Struct_MemberMultipleAttributes) {
   // struct Output {
-  //   [[location(0)]] [[builtin(frag_depth)]] a : f32;
+  //   @location(0) @builtin(frag_depth) a : f32;
   // };
-  // [[stage(fragment)]]
+  // @stage(fragment)
   // fn main() -> Output {
   //   return Output();
   // }
@@ -146,10 +146,10 @@
 TEST_F(ResolverEntryPointValidationTest,
        ReturnType_Struct_MemberMissingAttribute) {
   // struct Output {
-  //   [[location(0)]] a : f32;
+  //   @location(0) a : f32;
   //   b : f32;
   // };
-  // [[stage(fragment)]]
+  // @stage(fragment)
   // fn main() -> Output {
   //   return Output();
   // }
@@ -168,10 +168,10 @@
 
 TEST_F(ResolverEntryPointValidationTest, ReturnType_Struct_DuplicateBuiltins) {
   // struct Output {
-  //   [[builtin(frag_depth)]] a : f32;
-  //   [[builtin(frag_depth)]] b : f32;
+  //   @builtin(frag_depth) a : f32;
+  //   @builtin(frag_depth) b : f32;
   // };
-  // [[stage(fragment)]]
+  // @stage(fragment)
   // fn main() -> Output {
   //   return Output();
   // }
@@ -190,8 +190,8 @@
 }
 
 TEST_F(ResolverEntryPointValidationTest, ParameterAttribute_Location) {
-  // [[stage(fragment)]]
-  // fn main([[location(0)]] param : f32) {}
+  // @stage(fragment)
+  // fn main(@location(0) param : f32) {}
   auto* param = Param("param", ty.f32(), {Location(0)});
   Func(Source{{12, 34}}, "main", {param}, ty.void_(), {},
        {Stage(ast::PipelineStage::kFragment)});
@@ -200,7 +200,7 @@
 }
 
 TEST_F(ResolverEntryPointValidationTest, ParameterAttribute_Missing) {
-  // [[stage(fragment)]]
+  // @stage(fragment)
   // fn main(param : f32) {}
   auto* param = Param(Source{{13, 43}}, "param", ty.vec4<f32>());
   Func(Source{{12, 34}}, "main", {param}, ty.void_(), {},
@@ -212,8 +212,8 @@
 }
 
 TEST_F(ResolverEntryPointValidationTest, ParameterAttribute_Multiple) {
-  // [[stage(fragment)]]
-  // fn main([[location(0)]] [[builtin(sample_index)]] param : u32) {}
+  // @stage(fragment)
+  // fn main(@location(0) @builtin(sample_index) param : u32) {}
   auto* param = Param("param", ty.u32(),
                       {Location(Source{{13, 43}}, 0),
                        Builtin(Source{{14, 52}}, ast::Builtin::kSampleIndex)});
@@ -227,10 +227,10 @@
 
 TEST_F(ResolverEntryPointValidationTest, Parameter_Struct_Valid) {
   // struct Input {
-  //   [[location(0)]] a : f32;
-  //   [[builtin(sample_index)]] b : u32;
+  //   @location(0) a : f32;
+  //   @builtin(sample_index) b : u32;
   // };
-  // [[stage(fragment)]]
+  // @stage(fragment)
   // fn main(param : Input) {}
   auto* input = Structure(
       "Input", {Member("a", ty.f32(), {Location(0)}),
@@ -245,9 +245,9 @@
 TEST_F(ResolverEntryPointValidationTest,
        Parameter_Struct_MemberMultipleAttributes) {
   // struct Input {
-  //   [[location(0)]] [[builtin(sample_index)]] a : u32;
+  //   @location(0) @builtin(sample_index) a : u32;
   // };
-  // [[stage(fragment)]]
+  // @stage(fragment)
   // fn main(param : Input) {}
   auto* input = Structure(
       "Input",
@@ -267,10 +267,10 @@
 TEST_F(ResolverEntryPointValidationTest,
        Parameter_Struct_MemberMissingAttribute) {
   // struct Input {
-  //   [[location(0)]] a : f32;
+  //   @location(0) a : f32;
   //   b : f32;
   // };
-  // [[stage(fragment)]]
+  // @stage(fragment)
   // fn main(param : Input) {}
   auto* input = Structure(
       "Input", {Member(Source{{13, 43}}, "a", ty.f32(), {Location(0)}),
@@ -285,9 +285,9 @@
 }
 
 TEST_F(ResolverEntryPointValidationTest, Parameter_DuplicateBuiltins) {
-  // [[stage(fragment)]]
-  // fn main([[builtin(sample_index)]] param_a : u32,
-  //         [[builtin(sample_index)]] param_b : u32) {}
+  // @stage(fragment)
+  // fn main(@builtin(sample_index) param_a : u32,
+  //         @builtin(sample_index) param_b : u32) {}
   auto* param_a =
       Param("param_a", ty.u32(), {Builtin(ast::Builtin::kSampleIndex)});
   auto* param_b =
@@ -304,12 +304,12 @@
 
 TEST_F(ResolverEntryPointValidationTest, Parameter_Struct_DuplicateBuiltins) {
   // struct InputA {
-  //   [[builtin(sample_index)]] a : u32;
+  //   @builtin(sample_index) a : u32;
   // };
   // struct InputB {
-  //   [[builtin(sample_index)]] a : u32;
+  //   @builtin(sample_index) a : u32;
   // };
-  // [[stage(fragment)]]
+  // @stage(fragment)
   // fn main(param_a : InputA, param_b : InputB) {}
   auto* input_a = Structure(
       "InputA", {Member("a", ty.u32(), {Builtin(ast::Builtin::kSampleIndex)})});
@@ -328,7 +328,7 @@
 }
 
 TEST_F(ResolverEntryPointValidationTest, VertexShaderMustReturnPosition) {
-  // [[stage(vertex)]]
+  // @stage(vertex)
   // fn main() {}
   Func(Source{{12, 34}}, "main", {}, ty.void_(), {},
        {Stage(ast::PipelineStage::kVertex)});
@@ -370,8 +370,8 @@
 };
 
 TEST_P(TypeValidationTest, BareInputs) {
-  // [[stage(fragment)]]
-  // fn main([[location(0)]] a : *) {}
+  // @stage(fragment)
+  // fn main(@location(0) a : *) {}
   auto params = GetParam();
   auto* a = Param("a", params.create_ast_type(*this), {Location(0)});
   Func(Source{{12, 34}}, "main", {a}, ty.void_(), {},
@@ -386,9 +386,9 @@
 
 TEST_P(TypeValidationTest, StructInputs) {
   // struct Input {
-  //   [[location(0)]] a : *;
+  //   @location(0) a : *;
   // };
-  // [[stage(fragment)]]
+  // @stage(fragment)
   // fn main(a : Input) {}
   auto params = GetParam();
   auto* input = Structure(
@@ -405,8 +405,8 @@
 }
 
 TEST_P(TypeValidationTest, BareOutputs) {
-  // [[stage(fragment)]]
-  // fn main() -> [[location(0)]] * {
+  // @stage(fragment)
+  // fn main() -> @location(0) * {
   //   return *();
   // }
   auto params = GetParam();
@@ -423,9 +423,9 @@
 
 TEST_P(TypeValidationTest, StructOutputs) {
   // struct Output {
-  //   [[location(0)]] a : *;
+  //   @location(0) a : *;
   // };
-  // [[stage(fragment)]]
+  // @stage(fragment)
   // fn main() -> Output {
   //   return Output();
   // }
@@ -453,8 +453,8 @@
 using LocationDecorationTests = ResolverTest;
 
 TEST_F(LocationDecorationTests, Pass) {
-  // [[stage(fragment)]]
-  // fn frag_main([[location(0)]] a: i32) {}
+  // @stage(fragment)
+  // fn frag_main(@location(0) a: i32) {}
 
   auto* p = Param(Source{{12, 34}}, "a", ty.i32(), {Location(0)});
   Func("frag_main", {p}, ty.void_(), {},
@@ -464,8 +464,8 @@
 }
 
 TEST_F(LocationDecorationTests, BadType_Input_bool) {
-  // [[stage(fragment)]]
-  // fn frag_main([[location(0)]] a: bool) {}
+  // @stage(fragment)
+  // fn frag_main(@location(0) a: bool) {}
 
   auto* p =
       Param(Source{{12, 34}}, "a", ty.bool_(), {Location(Source{{34, 56}}, 0)});
@@ -481,8 +481,8 @@
 }
 
 TEST_F(LocationDecorationTests, BadType_Output_Array) {
-  // [[stage(fragment)]]
-  // fn frag_main()->[[location(0)]] array<f32, 2> { return array<f32, 2>(); }
+  // @stage(fragment)
+  // fn frag_main()->@location(0) array<f32, 2> { return array<f32, 2>(); }
 
   Func(Source{{12, 34}}, "frag_main", {}, ty.array<f32, 2>(),
        {Return(Construct(ty.array<f32, 2>()))},
@@ -500,8 +500,8 @@
   // struct Input {
   //   a : f32;
   // };
-  // [[stage(fragment)]]
-  // fn main([[location(0)]] param : Input) {}
+  // @stage(fragment)
+  // fn main(@location(0) param : Input) {}
   auto* input = Structure("Input", {Member("a", ty.f32())});
   auto* param = Param(Source{{12, 34}}, "param", ty.Of(input),
                       {Location(Source{{13, 43}}, 0)});
@@ -518,12 +518,12 @@
 
 TEST_F(LocationDecorationTests, BadType_Input_Struct_NestedStruct) {
   // struct Inner {
-  //   [[location(0)]] b : f32;
+  //   @location(0) b : f32;
   // };
   // struct Input {
   //   a : Inner;
   // };
-  // [[stage(fragment)]]
+  // @stage(fragment)
   // fn main(param : Input) {}
   auto* inner = Structure(
       "Inner", {Member(Source{{13, 43}}, "a", ty.f32(), {Location(0)})});
@@ -542,9 +542,9 @@
 TEST_F(LocationDecorationTests, BadType_Input_Struct_RuntimeArray) {
   // [[block]]
   // struct Input {
-  //   [[location(0)]] a : array<f32>;
+  //   @location(0) a : array<f32>;
   // };
-  // [[stage(fragment)]]
+  // @stage(fragment)
   // fn main(param : Input) {}
   auto* input = Structure(
       "Input",
@@ -564,8 +564,8 @@
 
 TEST_F(LocationDecorationTests, BadMemberType_Input) {
   // [[block]]
-  // struct S { [[location(0)]] m: array<i32>; };
-  // [[stage(fragment)]]
+  // struct S { @location(0) m: array<i32>; };
+  // @stage(fragment)
   // fn frag_main( a: S) {}
 
   auto* m = Member(Source{{34, 56}}, "m", ty.array<i32>(),
@@ -585,8 +585,8 @@
 }
 
 TEST_F(LocationDecorationTests, BadMemberType_Output) {
-  // struct S { [[location(0)]] m: atomic<i32>; };
-  // [[stage(fragment)]]
+  // struct S { @location(0) m: atomic<i32>; };
+  // @stage(fragment)
   // fn frag_main() -> S {}
   auto* m = Member(Source{{34, 56}}, "m", ty.atomic<i32>(),
                    ast::DecorationList{Location(Source{{12, 34}}, 0u)});
@@ -604,7 +604,7 @@
 }
 
 TEST_F(LocationDecorationTests, BadMemberType_Unused) {
-  // struct S { [[location(0)]] m: mat3x2<f32>; };
+  // struct S { @location(0) m: mat3x2<f32>; };
 
   auto* m = Member(Source{{34, 56}}, "m", ty.mat3x2<f32>(),
                    ast::DecorationList{Location(Source{{12, 34}}, 0u)});
@@ -620,10 +620,10 @@
 
 TEST_F(LocationDecorationTests, ReturnType_Struct_Valid) {
   // struct Output {
-  //   [[location(0)]] a : f32;
-  //   [[builtin(frag_depth)]] b : f32;
+  //   @location(0) a : f32;
+  //   @builtin(frag_depth) b : f32;
   // };
-  // [[stage(fragment)]]
+  // @stage(fragment)
   // fn main() -> Output {
   //   return Output();
   // }
@@ -641,8 +641,8 @@
   // struct Output {
   //   a : f32;
   // };
-  // [[stage(vertex)]]
-  // fn main() -> [[location(0)]] Output {
+  // @stage(vertex)
+  // fn main() -> @location(0) Output {
   //   return Output();
   // }
   auto* output = Structure("Output", {Member("a", ty.f32())});
@@ -660,12 +660,12 @@
 
 TEST_F(LocationDecorationTests, ReturnType_Struct_NestedStruct) {
   // struct Inner {
-  //   [[location(0)]] b : f32;
+  //   @location(0) b : f32;
   // };
   // struct Output {
   //   a : Inner;
   // };
-  // [[stage(fragment)]]
+  // @stage(fragment)
   // fn main() -> Output { return Output(); }
   auto* inner = Structure(
       "Inner", {Member(Source{{13, 43}}, "a", ty.f32(), {Location(0)})});
@@ -684,9 +684,9 @@
 TEST_F(LocationDecorationTests, ReturnType_Struct_RuntimeArray) {
   // [[block]]
   // struct Output {
-  //   [[location(0)]] a : array<f32>;
+  //   @location(0) a : array<f32>;
   // };
-  // [[stage(fragment)]]
+  // @stage(fragment)
   // fn main() -> Output {
   //   return Output();
   // }
@@ -760,9 +760,9 @@
 }
 
 TEST_F(LocationDecorationTests, Duplicate_input) {
-  // [[stage(fragment)]]
-  // fn main([[location(1)]] param_a : f32,
-  //         [[location(1)]] param_b : f32) {}
+  // @stage(fragment)
+  // fn main(@location(1) param_a : f32,
+  //         @location(1) param_b : f32) {}
   auto* param_a = Param("param_a", ty.f32(), {Location(1)});
   auto* param_b = Param("param_b", ty.f32(), {Location(Source{{12, 34}}, 1)});
   Func(Source{{12, 34}}, "main", {param_a, param_b}, ty.void_(), {},
@@ -775,12 +775,12 @@
 
 TEST_F(LocationDecorationTests, Duplicate_struct) {
   // struct InputA {
-  //   [[location(1)]] a : f32;
+  //   @location(1) a : f32;
   // };
   // struct InputB {
-  //   [[location(1)]] a : f32;
+  //   @location(1) a : f32;
   // };
-  // [[stage(fragment)]]
+  // @stage(fragment)
   // fn main(param_a : InputA, param_b : InputB) {}
   auto* input_a = Structure("InputA", {Member("a", ty.f32(), {Location(1)})});
   auto* input_b = Structure(
diff --git a/src/resolver/function_validation_test.cc b/src/resolver/function_validation_test.cc
index f2976de..6263169 100644
--- a/src/resolver/function_validation_test.cc
+++ b/src/resolver/function_validation_test.cc
@@ -353,7 +353,7 @@
 }
 
 TEST_F(ResolverFunctionValidationTest, CannotCallEntryPoint) {
-  // [[stage(compute), workgroup_size(1)]] fn entrypoint() {}
+  // @stage(compute) @workgroup_size(1) fn entrypoint() {}
   // fn func() { return entrypoint(); }
   Func("entrypoint", ast::VariableList{}, ty.void_(), {},
        {Stage(ast::PipelineStage::kCompute), WorkgroupSize(1)});
@@ -371,8 +371,8 @@
 }
 
 TEST_F(ResolverFunctionValidationTest, PipelineStage_MustBeUnique_Fail) {
-  // [[stage(fragment)]]
-  // [[stage(vertex)]]
+  // @stage(fragment)
+  // @stage(vertex)
   // fn main() { return; }
   Func(Source{{12, 34}}, "main", ast::VariableList{}, ty.void_(),
        ast::StatementList{
@@ -440,7 +440,7 @@
 TEST_F(ResolverFunctionValidationTest, WorkgroupSize_GoodType_ConstU32) {
   // let x = 4u;
   // let x = 8u;
-  // [[stage(compute), workgroup_size(x, y, 16u)]]
+  // @stage(compute) @workgroup_size(x, y, 16u)
   // fn main() {}
   auto* x = GlobalConst("x", ty.u32(), Expr(4u));
   auto* y = GlobalConst("y", ty.u32(), Expr(8u));
diff --git a/src/resolver/intrinsic_validation_test.cc b/src/resolver/intrinsic_validation_test.cc
index edae91f..80a3dc9 100644
--- a/src/resolver/intrinsic_validation_test.cc
+++ b/src/resolver/intrinsic_validation_test.cc
@@ -36,7 +36,7 @@
 }
 
 TEST_F(ResolverIntrinsicValidationTest, InvalidPipelineStageDirect) {
-  // [[stage(compute), workgroup_size(1)]] fn func { return dpdx(1.0); }
+  // @stage(compute) @workgroup_size(1) fn func { return dpdx(1.0); }
 
   auto* dpdx = create<ast::CallExpression>(Source{{3, 4}}, Expr("dpdx"),
                                            ast::ExpressionList{Expr(1.0f)});
@@ -53,7 +53,7 @@
   // fn f0 { return dpdx(1.0); }
   // fn f1 { f0(); }
   // fn f2 { f1(); }
-  // [[stage(compute), workgroup_size(1)]] fn main { return f2(); }
+  // @stage(compute) @workgroup_size(1) fn main { return f2(); }
 
   auto* dpdx = create<ast::CallExpression>(Source{{3, 4}}, Expr("dpdx"),
                                            ast::ExpressionList{Expr(1.0f)});
diff --git a/src/resolver/ptr_ref_validation_test.cc b/src/resolver/ptr_ref_validation_test.cc
index 367b209..003388a 100644
--- a/src/resolver/ptr_ref_validation_test.cc
+++ b/src/resolver/ptr_ref_validation_test.cc
@@ -53,7 +53,7 @@
 }
 
 TEST_F(ResolverPtrRefValidationTest, AddressOfHandle) {
-  // [[group(0), binding(0)]] var t: texture_3d<f32>;
+  // @group(0) @binding(0) var t: texture_3d<f32>;
   // &t
   Global("t", ty.sampled_texture(ast::TextureDimension::k3d, ty.f32()),
          GroupAndBinding(0u, 0u));
@@ -95,7 +95,7 @@
 }
 
 TEST_F(ResolverPtrRefValidationTest, IndirectOfAddressOfHandle) {
-  // [[group(0), binding(0)]] var t: texture_3d<f32>;
+  // @group(0) @binding(0) var t: texture_3d<f32>;
   // *&t
   Global("t", ty.sampled_texture(ast::TextureDimension::k3d, ty.f32()),
          GroupAndBinding(0u, 0u));
@@ -142,7 +142,7 @@
   // [[block]] struct S {
   //    inner: Inner;
   // }
-  // [[group(0), binding(0)]] var<storage, read_write> s : S;
+  // @group(0) @binding(0) var<storage, read_write> s : S;
   // fn f() {
   //   let p : pointer<storage, i32> = &s.inner.arr[2];
   // }
diff --git a/src/resolver/resolver.cc b/src/resolver/resolver.cc
index 434f7ff..1cfed25 100644
--- a/src/resolver/resolver.cc
+++ b/src/resolver/resolver.cc
@@ -2151,7 +2151,7 @@
     return nullptr;
   }
 
-  // Look for explicit stride via [[stride(n)]] decoration
+  // Look for explicit stride via @stride(n) decoration
   uint32_t explicit_stride = 0;
   for (auto* deco : arr->decorations) {
     Mark(deco);
diff --git a/src/resolver/resolver_test.cc b/src/resolver/resolver_test.cc
index a32f563..5b97b25 100644
--- a/src/resolver/resolver_test.cc
+++ b/src/resolver/resolver_test.cc
@@ -920,7 +920,7 @@
 }
 
 TEST_F(ResolverTest, Function_WorkgroupSize_NotSet) {
-  // [[stage(compute), workgroup_size(1)]]
+  // @stage(compute) @workgroup_size(1)
   // fn main() {}
   auto* func = Func("main", ast::VariableList{}, ty.void_(), {}, {});
 
@@ -938,7 +938,7 @@
 }
 
 TEST_F(ResolverTest, Function_WorkgroupSize_Literals) {
-  // [[stage(compute), workgroup_size(8, 2, 3)]]
+  // @stage(compute) @workgroup_size(8, 2, 3)
   // fn main() {}
   auto* func =
       Func("main", ast::VariableList{}, ty.void_(), {},
@@ -961,7 +961,7 @@
   // let width = 16;
   // let height = 8;
   // let depth = 2;
-  // [[stage(compute), workgroup_size(width, height, depth)]]
+  // @stage(compute) @workgroup_size(width, height, depth)
   // fn main() {}
   GlobalConst("width", ty.i32(), Expr(16));
   GlobalConst("height", ty.i32(), Expr(8));
@@ -986,7 +986,7 @@
 TEST_F(ResolverTest, Function_WorkgroupSize_Consts_NestedInitializer) {
   // let width = i32(i32(i32(8)));
   // let height = i32(i32(i32(4)));
-  // [[stage(compute), workgroup_size(width, height)]]
+  // @stage(compute) @workgroup_size(width, height)
   // fn main() {}
   GlobalConst("width", ty.i32(),
               Construct(ty.i32(), Construct(ty.i32(), Construct(ty.i32(), 8))));
@@ -1010,10 +1010,10 @@
 }
 
 TEST_F(ResolverTest, Function_WorkgroupSize_OverridableConsts) {
-  // [[override(0)]] let width = 16;
-  // [[override(1)]] let height = 8;
-  // [[override(2)]] let depth = 2;
-  // [[stage(compute), workgroup_size(width, height, depth)]]
+  // @override(0) let width = 16;
+  // @override(1) let height = 8;
+  // @override(2) let depth = 2;
+  // @stage(compute) @workgroup_size(width, height, depth)
   // fn main() {}
   auto* width = GlobalConst("width", ty.i32(), Expr(16), {Override(0)});
   auto* height = GlobalConst("height", ty.i32(), Expr(8), {Override(1)});
@@ -1036,10 +1036,10 @@
 }
 
 TEST_F(ResolverTest, Function_WorkgroupSize_OverridableConsts_NoInit) {
-  // [[override(0)]] let width : i32;
-  // [[override(1)]] let height : i32;
-  // [[override(2)]] let depth : i32;
-  // [[stage(compute), workgroup_size(width, height, depth)]]
+  // @override(0) let width : i32;
+  // @override(1) let height : i32;
+  // @override(2) let depth : i32;
+  // @stage(compute) @workgroup_size(width, height, depth)
   // fn main() {}
   auto* width = GlobalConst("width", ty.i32(), nullptr, {Override(0)});
   auto* height = GlobalConst("height", ty.i32(), nullptr, {Override(1)});
@@ -1062,9 +1062,9 @@
 }
 
 TEST_F(ResolverTest, Function_WorkgroupSize_Mixed) {
-  // [[override(1)]] let height = 2;
+  // @override(1) let height = 2;
   // let depth = 3;
-  // [[stage(compute), workgroup_size(8, height, depth)]]
+  // @stage(compute) @workgroup_size(8, height, depth)
   // fn main() {}
   auto* height = GlobalConst("height", ty.i32(), Expr(2), {Override(0)});
   GlobalConst("depth", ty.i32(), Expr(3));
@@ -1816,8 +1816,8 @@
 }
 
 TEST_F(ResolverTest, BindingPoint_SetForResources) {
-  // [[group(1), binding(2)]] var s1 : sampler;
-  // [[group(3), binding(4)]] var s2 : sampler;
+  // @group(1) @binding(2) var s1 : sampler;
+  // @group(3) @binding(4) var s2 : sampler;
   auto* s1 = Global(Sym(), ty.sampler(ast::SamplerKind::kSampler),
                     ast::DecorationList{create<ast::GroupDecoration>(1),
                                         create<ast::BindingDecoration>(2)});
diff --git a/src/resolver/resolver_validation.cc b/src/resolver/resolver_validation.cc
index 3218e4a..5edc4ee 100644
--- a/src/resolver/resolver_validation.cc
+++ b/src/resolver/resolver_validation.cc
@@ -271,8 +271,8 @@
                    "' must be a multiple of " + std::to_string(required_align) +
                    " bytes, but '" + member_name_of(m) +
                    "' is currently at offset " + std::to_string(m->Offset()) +
-                   ". Consider setting [[align(" +
-                   std::to_string(required_align) + ")]] on this member",
+                   ". Consider setting @align(" +
+                   std::to_string(required_align) + ") on this member",
                m->Declaration()->source);
 
       AddNote("see layout of struct:\n" + str->Layout(builder_->Symbols()),
@@ -299,7 +299,7 @@
             "member be a multiple of 16 bytes, but there are currently " +
                 std::to_string(prev_to_curr_offset) + " bytes between '" +
                 member_name_of(prev_member) + "' and '" + member_name_of(m) +
-                "'. Consider setting [[align(16)]] on this member",
+                "'. Consider setting @align(16) on this member",
             m->Declaration()->source);
 
         AddNote("see layout of struct:\n" + str->Layout(builder_->Symbols()),
@@ -326,10 +326,10 @@
               "bytes, but array stride of '" +
                   member_name_of(m) + "' is currently " +
                   std::to_string(arr->Stride()) +
-                  ". Consider setting [[stride(" +
+                  ". Consider setting @stride(" +
                   std::to_string(
                       utils::RoundUp(required_align, arr->Stride())) +
-                  ")]] on the array type",
+                  ") on the array type",
               m->Declaration()->type->source);
           AddNote("see layout of struct:\n" + str->Layout(builder_->Symbols()),
                   str->Declaration()->source);
@@ -429,7 +429,7 @@
       // attributes.
       if (!binding_point) {
         AddError(
-            "resource variables require [[group]] and [[binding]] "
+            "resource variables require @group and @binding "
             "decorations",
             decl->source);
         return false;
@@ -441,7 +441,7 @@
         // https://gpuweb.github.io/gpuweb/wgsl/#attribute-binding
         // Must only be applied to a resource variable
         AddError(
-            "non-resource variables must not have [[group]] or [[binding]] "
+            "non-resource variables must not have @group or @binding "
             "decorations",
             decl->source);
         return false;
@@ -1037,7 +1037,7 @@
       if (interpolate_attribute) {
         if (!pipeline_io_attribute ||
             !pipeline_io_attribute->Is<ast::LocationDecoration>()) {
-          AddError("interpolate attribute must only be used with [[location]]",
+          AddError("interpolate attribute must only be used with @location",
                    interpolate_attribute->source);
           return false;
         }
@@ -1167,9 +1167,9 @@
       auto func_name = builder_->Symbols().NameFor(decl->symbol);
       AddError("entry point '" + func_name +
                    "' references multiple variables that use the "
-                   "same resource binding [[group(" +
-                   std::to_string(bp.group) + "), binding(" +
-                   std::to_string(bp.binding) + ")]]",
+                   "same resource binding @group(" +
+                   std::to_string(bp.group) + "), @binding(" +
+                   std::to_string(bp.binding) + ")",
                var_decl->source);
       AddNote("first resource binding usage declared here",
               res.first->second->source);
@@ -2035,7 +2035,7 @@
     }
 
     if (interpolate_attribute && !has_location) {
-      AddError("interpolate attribute must only be used with [[location]]",
+      AddError("interpolate attribute must only be used with @location",
                interpolate_attribute->source);
       return false;
     }
diff --git a/src/resolver/storage_class_layout_validation_test.cc b/src/resolver/storage_class_layout_validation_test.cc
index 467608d..f9fcc12 100644
--- a/src/resolver/storage_class_layout_validation_test.cc
+++ b/src/resolver/storage_class_layout_validation_test.cc
@@ -28,10 +28,10 @@
        StorageBuffer_UnalignedMember) {
   // [[block]]
   // struct S {
-  //     [[size(5)]] a : f32;
-  //     [[align(1)]] b : f32;
+  //     @size(5) a : f32;
+  //     @align(1) b : f32;
   // };
-  // [[group(0), binding(0)]]
+  // @group(0) @binding(0)
   // var<storage> a : S;
 
   Structure(Source{{12, 34}}, "S",
@@ -45,7 +45,7 @@
   ASSERT_FALSE(r()->Resolve());
   EXPECT_EQ(
       r()->error(),
-      R"(34:56 error: the offset of a struct member of type 'f32' in storage class 'storage' must be a multiple of 4 bytes, but 'b' is currently at offset 5. Consider setting [[align(4)]] on this member
+      R"(34:56 error: the offset of a struct member of type 'f32' in storage class 'storage' must be a multiple of 4 bytes, but 'b' is currently at offset 5. Consider setting @align(4) on this member
 12:34 note: see layout of struct:
 /*           align(4) size(12) */ struct S {
 /* offset(0) align(4) size( 5) */   a : f32;
@@ -59,10 +59,10 @@
        StorageBuffer_UnalignedMember_SuggestedFix) {
   // [[block]]
   // struct S {
-  //     [[size(5)]] a : f32;
-  //     [[align(4)]] b : f32;
+  //     @size(5) a : f32;
+  //     @align(4) b : f32;
   // };
-  // [[group(0), binding(0)]]
+  // @group(0) @binding(0)
   // var<storage> a : S;
 
   Structure(Source{{12, 34}}, "S",
@@ -89,7 +89,7 @@
   //   inner : Inner;
   // };
   //
-  // [[group(0), binding(0)]]
+  // @group(0) @binding(0)
   // var<uniform> a : Outer;
 
   Structure(Source{{12, 34}}, "Inner", {Member("scalar", ty.i32())});
@@ -107,7 +107,7 @@
   ASSERT_FALSE(r()->Resolve());
   EXPECT_EQ(
       r()->error(),
-      R"(56:78 error: the offset of a struct member of type 'Inner' in storage class 'uniform' must be a multiple of 16 bytes, but 'inner' is currently at offset 4. Consider setting [[align(16)]] on this member
+      R"(56:78 error: the offset of a struct member of type 'Inner' in storage class 'uniform' must be a multiple of 16 bytes, but 'inner' is currently at offset 4. Consider setting @align(16) on this member
 34:56 note: see layout of struct:
 /*           align(4) size(8) */ struct Outer {
 /* offset(0) align(4) size(4) */   scalar : f32;
@@ -129,10 +129,10 @@
   // [[block]]
   // struct Outer {
   //   scalar : f32;
-  //   [[align(16)]] inner : Inner;
+  //   @align(16) inner : Inner;
   // };
   //
-  // [[group(0), binding(0)]]
+  // @group(0) @binding(0)
   // var<uniform> a : Outer;
 
   Structure(Source{{12, 34}}, "Inner", {Member("scalar", ty.i32())});
@@ -154,7 +154,7 @@
 // Detect unaligned array member for uniform buffers
 TEST_F(ResolverStorageClassLayoutValidationTest,
        UniformBuffer_UnalignedMember_Array) {
-  // type Inner = [[stride(16)]] array<f32, 10>;
+  // type Inner = @stride(16) array<f32, 10>;
   //
   // [[block]]
   // struct Outer {
@@ -162,7 +162,7 @@
   //   inner : Inner;
   // };
   //
-  // [[group(0), binding(0)]]
+  // @group(0) @binding(0)
   // var<uniform> a : Outer;
   Alias("Inner", ty.array(ty.f32(), 10, 16));
 
@@ -179,26 +179,26 @@
   ASSERT_FALSE(r()->Resolve());
   EXPECT_EQ(
       r()->error(),
-      R"(56:78 error: the offset of a struct member of type '[[stride(16)]] array<f32, 10>' in storage class 'uniform' must be a multiple of 16 bytes, but 'inner' is currently at offset 4. Consider setting [[align(16)]] on this member
+      R"(56:78 error: the offset of a struct member of type '@stride(16) array<f32, 10>' in storage class 'uniform' must be a multiple of 16 bytes, but 'inner' is currently at offset 4. Consider setting @align(16) on this member
 12:34 note: see layout of struct:
 /*             align(4) size(164) */ struct Outer {
 /* offset(  0) align(4) size(  4) */   scalar : f32;
-/* offset(  4) align(4) size(160) */   inner : [[stride(16)]] array<f32, 10>;
+/* offset(  4) align(4) size(160) */   inner : @stride(16) array<f32, 10>;
 /*                                */ };
 78:90 note: see declaration of variable)");
 }
 
 TEST_F(ResolverStorageClassLayoutValidationTest,
        UniformBuffer_UnalignedMember_Array_SuggestedFix) {
-  // type Inner = [[stride(16)]] array<f32, 10>;
+  // type Inner = @stride(16) array<f32, 10>;
   //
   // [[block]]
   // struct Outer {
   //   scalar : f32;
-  //   [[align(16)]] inner : Inner;
+  //   @align(16) inner : Inner;
   // };
   //
-  // [[group(0), binding(0)]]
+  // @group(0) @binding(0)
   // var<uniform> a : Outer;
   Alias("Inner", ty.array(ty.f32(), 10, 16));
 
@@ -221,7 +221,7 @@
 TEST_F(ResolverStorageClassLayoutValidationTest,
        UniformBuffer_MembersOffsetNotMultipleOf16) {
   // struct Inner {
-  //   [[align(1), size(5)]] scalar : i32;
+  //   @align(1) @size(5) scalar : i32;
   // };
   //
   // [[block]]
@@ -230,7 +230,7 @@
   //   scalar : i32;
   // };
   //
-  // [[group(0), binding(0)]]
+  // @group(0) @binding(0)
   // var<uniform> a : Outer;
 
   Structure(Source{{12, 34}}, "Inner",
@@ -249,7 +249,7 @@
   ASSERT_FALSE(r()->Resolve());
   EXPECT_EQ(
       r()->error(),
-      R"(78:90 error: uniform storage requires that the number of bytes between the start of the previous member of type struct and the current member be a multiple of 16 bytes, but there are currently 8 bytes between 'inner' and 'scalar'. Consider setting [[align(16)]] on this member
+      R"(78:90 error: uniform storage requires that the number of bytes between the start of the previous member of type struct and the current member be a multiple of 16 bytes, but there are currently 8 bytes between 'inner' and 'scalar'. Consider setting @align(16) on this member
 34:56 note: see layout of struct:
 /*            align(4) size(12) */ struct Outer {
 /* offset( 0) align(1) size( 5) */   inner : Inner;
@@ -270,7 +270,7 @@
   //   a : i32;
   //   b : i32;
   //   c : i32;
-  //   [[align(1), size(5)]] scalar : i32;
+  //   @align(1) @size(5) scalar : i32;
   // };
   //
   // [[block]]
@@ -279,7 +279,7 @@
   //   scalar : i32;
   // };
   //
-  // [[group(0), binding(0)]]
+  // @group(0) @binding(0)
   // var<uniform> a : Outer;
 
   Structure(Source{{12, 34}}, "Inner",
@@ -303,7 +303,7 @@
   ASSERT_FALSE(r()->Resolve());
   EXPECT_EQ(
       r()->error(),
-      R"(78:90 error: uniform storage requires that the number of bytes between the start of the previous member of type struct and the current member be a multiple of 16 bytes, but there are currently 20 bytes between 'inner' and 'scalar'. Consider setting [[align(16)]] on this member
+      R"(78:90 error: uniform storage requires that the number of bytes between the start of the previous member of type struct and the current member be a multiple of 16 bytes, but there are currently 20 bytes between 'inner' and 'scalar'. Consider setting @align(16) on this member
 34:56 note: see layout of struct:
 /*            align(4) size(24) */ struct Outer {
 /* offset( 0) align(4) size(20) */   inner : Inner;
@@ -323,16 +323,16 @@
 TEST_F(ResolverStorageClassLayoutValidationTest,
        UniformBuffer_MembersOffsetNotMultipleOf16_SuggestedFix) {
   // struct Inner {
-  //   [[align(1), size(5)]] scalar : i32;
+  //   @align(1) @size(5) scalar : i32;
   // };
   //
   // [[block]]
   // struct Outer {
-  //   [[align(16)]] inner : Inner;
+  //   @align(16) inner : Inner;
   //   scalar : i32;
   // };
   //
-  // [[group(0), binding(0)]]
+  // @group(0) @binding(0)
   // var<uniform> a : Outer;
 
   Structure(Source{{12, 34}}, "Inner",
@@ -360,7 +360,7 @@
   //     v : vec3<f32>;
   //     s : f32;
   // };
-  // [[group(0), binding(0)]]
+  // @group(0) @binding(0)
   // var<uniform> a : ScalarPackedAtEndOfVec3;
 
   Structure("ScalarPackedAtEndOfVec3",
@@ -379,7 +379,7 @@
 // Detect array stride must be a multiple of 16 bytes for uniform buffers
 TEST_F(ResolverStorageClassLayoutValidationTest,
        UniformBuffer_InvalidArrayStride) {
-  // type Inner = [[stride(8)]] array<f32, 10>;
+  // type Inner = @stride(8) array<f32, 10>;
   //
   // [[block]]
   // struct Outer {
@@ -387,7 +387,7 @@
   //   scalar : i32;
   // };
   //
-  // [[group(0), binding(0)]]
+  // @group(0) @binding(0)
   // var<uniform> a : Outer;
 
   Alias("Inner", ty.array(ty.f32(), 10, 8));
@@ -405,10 +405,10 @@
   ASSERT_FALSE(r()->Resolve());
   EXPECT_EQ(
       r()->error(),
-      R"(34:56 error: uniform storage requires that array elements be aligned to 16 bytes, but array stride of 'inner' is currently 8. Consider setting [[stride(16)]] on the array type
+      R"(34:56 error: uniform storage requires that array elements be aligned to 16 bytes, but array stride of 'inner' is currently 8. Consider setting @stride(16) on the array type
 12:34 note: see layout of struct:
 /*            align(4) size(84) */ struct Outer {
-/* offset( 0) align(4) size(80) */   inner : [[stride(8)]] array<f32, 10>;
+/* offset( 0) align(4) size(80) */   inner : @stride(8) array<f32, 10>;
 /* offset(80) align(4) size( 4) */   scalar : i32;
 /*                              */ };
 78:90 note: see declaration of variable)");
@@ -416,7 +416,7 @@
 
 TEST_F(ResolverStorageClassLayoutValidationTest,
        UniformBuffer_InvalidArrayStride_SuggestedFix) {
-  // type Inner = [[stride(16)]] array<f32, 10>;
+  // type Inner = @stride(16) array<f32, 10>;
   //
   // [[block]]
   // struct Outer {
@@ -424,7 +424,7 @@
   //   scalar : i32;
   // };
   //
-  // [[group(0), binding(0)]]
+  // @group(0) @binding(0)
   // var<uniform> a : Outer;
 
   Alias("Inner", ty.array(ty.f32(), 10, 16));
diff --git a/src/resolver/storage_class_validation_test.cc b/src/resolver/storage_class_validation_test.cc
index 5d922c2..9965e08 100644
--- a/src/resolver/storage_class_validation_test.cc
+++ b/src/resolver/storage_class_validation_test.cc
@@ -226,7 +226,7 @@
 
 TEST_F(ResolverStorageClassValidationTest, UniformBuffer_Struct_Runtime) {
   // [[block]] struct S { m:  array<f32>; };
-  // [[group(0), binding(0)]] var<uniform, > svar : S;
+  // @group(0) @binding(0) var<uniform, > svar : S;
 
   auto* s = Structure(Source{{12, 34}}, "S", {Member("m", ty.array<i32>())},
                       {create<ast::StructBlockDecoration>()});
diff --git a/src/resolver/type_validation_test.cc b/src/resolver/type_validation_test.cc
index 08f37be..292a57f 100644
--- a/src/resolver/type_validation_test.cc
+++ b/src/resolver/type_validation_test.cc
@@ -79,7 +79,7 @@
 }
 
 TEST_F(ResolverTypeValidationTest, GlobalConstantNoConstructor_Pass) {
-  // [[override(0)]] let a :i32;
+  // @override(0) let a :i32;
   GlobalConst(Source{{12, 34}}, "a", ty.i32(), nullptr,
               ast::DecorationList{create<ast::OverrideDecoration>(0)});
 
@@ -336,7 +336,7 @@
 }
 
 TEST_F(ResolverTypeValidationTest, ArraySize_TooBig_ExplicitStride) {
-  // var<private> a : [[stride(8)]] array<f32, 0x20000000>;
+  // var<private> a : @stride(8) array<f32, 0x20000000>;
   Global("a", ty.array(Source{{12, 34}}, ty.f32(), 0x20000000, 8),
          ast::StorageClass::kPrivate);
   EXPECT_FALSE(r()->Resolve());
@@ -396,7 +396,7 @@
 }
 
 TEST_F(ResolverTypeValidationTest, RuntimeArrayInFunction_Fail) {
-  /// [[stage(vertex)]]
+  /// @stage(vertex)
   // fn func() { var a : array<i32>; }
 
   auto* var =
@@ -594,7 +594,7 @@
 
 TEST_F(ResolverTypeValidationTest, RuntimeArrayAsParameter_Fail) {
   // fn func(a : array<u32>) {}
-  // [[stage(vertex)]] fn main() {}
+  // @stage(vertex) fn main() {}
 
   auto* param = Param(Source{{12, 34}}, "a", ty.array<i32>());
 
@@ -855,7 +855,7 @@
 
 using StorageTextureDimensionTest = ResolverTestWithParam<DimensionParams>;
 TEST_P(StorageTextureDimensionTest, All) {
-  // [[group(0), binding(0)]]
+  // @group(0) @binding(0)
   // var a : texture_storage_*<ru32int, write>;
   auto& params = GetParam();
 
@@ -905,13 +905,13 @@
 using StorageTextureFormatTest = ResolverTestWithParam<FormatParams>;
 TEST_P(StorageTextureFormatTest, All) {
   auto& params = GetParam();
-  // [[group(0), binding(0)]]
+  // @group(0) @binding(0)
   // var a : texture_storage_1d<*, write>;
-  // [[group(0), binding(1)]]
+  // @group(0) @binding(1)
   // var b : texture_storage_2d<*, write>;
-  // [[group(0), binding(2)]]
+  // @group(0) @binding(2)
   // var c : texture_storage_2d_array<*, write>;
-  // [[group(0), binding(3)]]
+  // @group(0) @binding(3)
   // var d : texture_storage_3d<*, write>;
 
   auto* st_a = ty.storage_texture(Source{{12, 34}}, ast::TextureDimension::k1d,
@@ -951,7 +951,7 @@
 using StorageTextureAccessTest = ResolverTest;
 
 TEST_F(StorageTextureAccessTest, MissingAccess_Fail) {
-  // [[group(0), binding(0)]]
+  // @group(0) @binding(0)
   // var a : texture_storage_1d<ru32int>;
 
   auto* st =
@@ -967,7 +967,7 @@
 }
 
 TEST_F(StorageTextureAccessTest, RWAccess_Fail) {
-  // [[group(0), binding(0)]]
+  // @group(0) @binding(0)
   // var a : texture_storage_1d<ru32int, read_write>;
 
   auto* st =
@@ -984,7 +984,7 @@
 }
 
 TEST_F(StorageTextureAccessTest, ReadOnlyAccess_Fail) {
-  // [[group(0), binding(0)]]
+  // @group(0) @binding(0)
   // var a : texture_storage_1d<ru32int, read>;
 
   auto* st = ty.storage_texture(Source{{12, 34}}, ast::TextureDimension::k1d,
@@ -1000,7 +1000,7 @@
 }
 
 TEST_F(StorageTextureAccessTest, WriteOnlyAccess_Pass) {
-  // [[group(0), binding(0)]]
+  // @group(0) @binding(0)
   // var a : texture_storage_1d<ru32int, write>;
 
   auto* st =
diff --git a/src/resolver/validation_test.cc b/src/resolver/validation_test.cc
index 0b3152a..2a8e41b 100644
--- a/src/resolver/validation_test.cc
+++ b/src/resolver/validation_test.cc
@@ -80,7 +80,7 @@
   // var<workgroup> dst : vec4<f32>;
   // fn f2(){ dst = wg; }
   // fn f1() { f2(); }
-  // [[stage(fragment)]]
+  // @stage(fragment)
   // fn f0() {
   //  f1();
   //}
diff --git a/src/resolver/var_let_test.cc b/src/resolver/var_let_test.cc
index 631537b..0bce039 100644
--- a/src/resolver/var_let_test.cc
+++ b/src/resolver/var_let_test.cc
@@ -288,7 +288,7 @@
   // [[block]] struct S {
   //    inner: Inner;
   // }
-  // [[group(0), binding(0)]] var<storage, read_write> s : S;
+  // @group(0) @binding(0) var<storage, read_write> s : S;
   // fn f() {
   //   let p = &s.inner.arr[2];
   // }
diff --git a/src/resolver/var_let_validation_test.cc b/src/resolver/var_let_validation_test.cc
index 9ee07b0..8260136 100644
--- a/src/resolver/var_let_validation_test.cc
+++ b/src/resolver/var_let_validation_test.cc
@@ -79,7 +79,7 @@
 }
 
 TEST_F(ResolverVarLetValidationTest, LetTypeNotConstructible) {
-  // [[group(0), binding(0)]] var t1 : texture_2d<f32>;
+  // @group(0) @binding(0) var t1 : texture_2d<f32>;
   // let t2 : t1;
   auto* t1 =
       Global("t1", ty.sampled_texture(ast::TextureDimension::k2d, ty.f32()),
@@ -223,7 +223,7 @@
   // [[block]] struct S {
   //    inner: Inner;
   // }
-  // [[group(0), binding(0)]] var<storage> s : S;
+  // @group(0) @binding(0) var<storage> s : S;
   // fn f() {
   //   let p : pointer<storage, i32, read_write> = &s.inner.arr[2];
   // }
@@ -286,7 +286,7 @@
 }
 
 TEST_F(ResolverVarLetValidationTest, NonConstructibleType_InferredType) {
-  // [[group(0), binding(0)]] var s : sampler;
+  // @group(0) @binding(0) var s : sampler;
   // fn foo() {
   //   var v = s;
   // }
diff --git a/src/sem/array.cc b/src/sem/array.cc
index a5757be..9bb3604 100644
--- a/src/sem/array.cc
+++ b/src/sem/array.cc
@@ -58,7 +58,7 @@
 std::string Array::FriendlyName(const SymbolTable& symbols) const {
   std::ostringstream out;
   if (!IsStrideImplicit()) {
-    out << "[[stride(" << stride_ << ")]] ";
+    out << "@stride(" << stride_ << ") ";
   }
   out << "array<" << element_->FriendlyName(symbols);
   if (!IsRuntimeSized()) {
diff --git a/src/sem/array.h b/src/sem/array.h
index b1992ff..feb4020 100644
--- a/src/sem/array.h
+++ b/src/sem/array.h
@@ -61,12 +61,12 @@
 
   /// @returns the byte alignment of the array
   /// @note this may differ from the alignment of a structure member of this
-  /// array type, if the member is annotated with the `[[align(n)]]` decoration.
+  /// array type, if the member is annotated with the `@align(n)` decoration.
   uint32_t Align() const override;
 
   /// @returns the byte size of the array
   /// @note this may differ from the size of a structure member of this array
-  /// type, if the member is annotated with the `[[size(n)]]` decoration.
+  /// type, if the member is annotated with the `@size(n)` decoration.
   uint32_t Size() const override;
 
   /// @returns the number of bytes from the start of one element of the
diff --git a/src/sem/sem_array_test.cc b/src/sem/sem_array_test.cc
index 04207b6..a74c58f 100644
--- a/src/sem/sem_array_test.cc
+++ b/src/sem/sem_array_test.cc
@@ -65,12 +65,12 @@
 
 TEST_F(ArrayTest, FriendlyNameRuntimeSizedNonImplicitStride) {
   auto* arr = create<Array>(create<I32>(), 0, 0, 4, 8, 4);
-  EXPECT_EQ(arr->FriendlyName(Symbols()), "[[stride(8)]] array<i32>");
+  EXPECT_EQ(arr->FriendlyName(Symbols()), "@stride(8) array<i32>");
 }
 
 TEST_F(ArrayTest, FriendlyNameStaticSizedNonImplicitStride) {
   auto* arr = create<Array>(create<I32>(), 5, 4, 20, 8, 4);
-  EXPECT_EQ(arr->FriendlyName(Symbols()), "[[stride(8)]] array<i32, 5>");
+  EXPECT_EQ(arr->FriendlyName(Symbols()), "@stride(8) array<i32, 5>");
 }
 
 TEST_F(ArrayTest, TypeName_RuntimeArray) {
diff --git a/src/sem/struct.h b/src/sem/struct.h
index 3c42c6c..f041058 100644
--- a/src/sem/struct.h
+++ b/src/sem/struct.h
@@ -89,13 +89,13 @@
 
   /// @returns the byte alignment of the structure
   /// @note this may differ from the alignment of a structure member of this
-  /// structure type, if the member is annotated with the `[[align(n)]]`
+  /// structure type, if the member is annotated with the `@align(n)`
   /// decoration.
   uint32_t Align() const override;
 
   /// @returns the byte size of the structure
   /// @note this may differ from the size of a structure member of this
-  /// structure type, if the member is annotated with the `[[size(n)]]`
+  /// structure type, if the member is annotated with the `@size(n)`
   /// decoration.
   uint32_t Size() const override;
 
diff --git a/src/transform/add_empty_entry_point_test.cc b/src/transform/add_empty_entry_point_test.cc
index 722af1a..4cee0bc 100644
--- a/src/transform/add_empty_entry_point_test.cc
+++ b/src/transform/add_empty_entry_point_test.cc
@@ -28,7 +28,7 @@
   auto* src = R"()";
 
   auto* expect = R"(
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn unused_entry_point() {
 }
 )";
@@ -40,7 +40,7 @@
 
 TEST_F(AddEmptyEntryPointTest, ExistingEntryPoint) {
   auto* src = R"(
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
 }
 )";
@@ -56,7 +56,7 @@
   auto* src = R"(var<private> unused_entry_point : f32;)";
 
   auto* expect = R"(
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn unused_entry_point_1() {
 }
 
diff --git a/src/transform/add_spirv_block_decoration.h b/src/transform/add_spirv_block_decoration.h
index c5e67bb..2f23fb9 100644
--- a/src/transform/add_spirv_block_decoration.h
+++ b/src/transform/add_spirv_block_decoration.h
@@ -24,10 +24,10 @@
 namespace transform {
 
 /// AddSpirvBlockDecoration is a transform that adds an
-/// [[internal(spirv_block)]] attribute to any structure that is used as the
+/// `@internal(spirv_block)` attribute to any structure that is used as the
 /// store type of a buffer. If that structure is nested inside another structure
 /// or an array, then it is wrapped inside another structure which gets the
-/// [[internal(spirv_block)]] attribute instead.
+/// `@internal(spirv_block)` attribute instead.
 class AddSpirvBlockDecoration
     : public Castable<AddSpirvBlockDecoration, Transform> {
  public:
@@ -43,7 +43,7 @@
     ~SpirvBlockDecoration() override;
 
     /// @return a short description of the internal decoration which will be
-    /// displayed as `[[internal(<name>)]]`
+    /// displayed as `@internal(<name>)`
     std::string InternalName() const override;
 
     /// Performs a deep clone of this object using the CloneContext `ctx`.
diff --git a/src/transform/add_spirv_block_decoration_test.cc b/src/transform/add_spirv_block_decoration_test.cc
index e504c50..3a8455f 100644
--- a/src/transform/add_spirv_block_decoration_test.cc
+++ b/src/transform/add_spirv_block_decoration_test.cc
@@ -42,7 +42,7 @@
 
 var<private> p : S;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   p.f = 1.0;
 }
@@ -57,11 +57,11 @@
 TEST_F(AddSpirvBlockDecorationTest, Noop_UsedForShaderIO) {
   auto* src = R"(
 struct S {
-  [[location(0)]]
+  @location(0)
   f : f32;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> S {
   return S();
 }
@@ -75,23 +75,23 @@
 
 TEST_F(AddSpirvBlockDecorationTest, BasicScalar) {
   auto* src = R"(
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<uniform> u : f32;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   let f = u;
 }
 )";
   auto* expect = R"(
-[[internal(spirv_block)]]
+@internal(spirv_block)
 struct u_block {
   inner : f32;
 }
 
-[[group(0), binding(0)]] var<uniform> u : u_block;
+@group(0) @binding(0) var<uniform> u : u_block;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   let f = u.inner;
 }
@@ -104,23 +104,23 @@
 
 TEST_F(AddSpirvBlockDecorationTest, BasicArray) {
   auto* src = R"(
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<uniform> u : array<vec4<f32>, 4u>;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   let a = u;
 }
 )";
   auto* expect = R"(
-[[internal(spirv_block)]]
+@internal(spirv_block)
 struct u_block {
   inner : array<vec4<f32>, 4u>;
 }
 
-[[group(0), binding(0)]] var<uniform> u : u_block;
+@group(0) @binding(0) var<uniform> u : u_block;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   let a = u.inner;
 }
@@ -135,10 +135,10 @@
   auto* src = R"(
 type Numbers = array<vec4<f32>, 4u>;
 
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<uniform> u : Numbers;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   let a = u;
 }
@@ -146,14 +146,14 @@
   auto* expect = R"(
 type Numbers = array<vec4<f32>, 4u>;
 
-[[internal(spirv_block)]]
+@internal(spirv_block)
 struct u_block {
   inner : array<vec4<f32>, 4u>;
 }
 
-[[group(0), binding(0)]] var<uniform> u : u_block;
+@group(0) @binding(0) var<uniform> u : u_block;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   let a = u.inner;
 }
@@ -170,23 +170,23 @@
   f : f32;
 };
 
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<uniform> u : S;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   let f = u.f;
 }
 )";
   auto* expect = R"(
-[[internal(spirv_block)]]
+@internal(spirv_block)
 struct S {
   f : f32;
 }
 
-[[group(0), binding(0)]] var<uniform> u : S;
+@group(0) @binding(0) var<uniform> u : S;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   let f = u.f;
 }
@@ -207,10 +207,10 @@
   i : Inner;
 };
 
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<uniform> u : Outer;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   let f = u.i.f;
 }
@@ -220,14 +220,14 @@
   f : f32;
 }
 
-[[internal(spirv_block)]]
+@internal(spirv_block)
 struct Outer {
   i : Inner;
 }
 
-[[group(0), binding(0)]] var<uniform> u : Outer;
+@group(0) @binding(0) var<uniform> u : Outer;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   let f = u.i.f;
 }
@@ -248,13 +248,13 @@
   i : Inner;
 };
 
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<uniform> u0 : Outer;
 
-[[group(0), binding(1)]]
+@group(0) @binding(1)
 var<uniform> u1 : Inner;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   let f0 = u0.i.f;
   let f1 = u1.f;
@@ -265,21 +265,21 @@
   f : f32;
 }
 
-[[internal(spirv_block)]]
+@internal(spirv_block)
 struct Outer {
   i : Inner;
 }
 
-[[group(0), binding(0)]] var<uniform> u0 : Outer;
+@group(0) @binding(0) var<uniform> u0 : Outer;
 
-[[internal(spirv_block)]]
+@internal(spirv_block)
 struct u1_block {
   inner : Inner;
 }
 
-[[group(0), binding(1)]] var<uniform> u1 : u1_block;
+@group(0) @binding(1) var<uniform> u1 : u1_block;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   let f0 = u0.i.f;
   let f1 = u1.inner.f;
@@ -303,10 +303,10 @@
 
 var<private> p : Outer;
 
-[[group(0), binding(1)]]
+@group(0) @binding(1)
 var<uniform> u : Inner;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   let f0 = p.i.f;
   let f1 = u.f;
@@ -323,14 +323,14 @@
 
 var<private> p : Outer;
 
-[[internal(spirv_block)]]
+@internal(spirv_block)
 struct u_block {
   inner : Inner;
 }
 
-[[group(0), binding(1)]] var<uniform> u : u_block;
+@group(0) @binding(1) var<uniform> u : u_block;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   let f0 = p.i.f;
   let f1 = u.inner.f;
@@ -352,16 +352,16 @@
   i : Inner;
 };
 
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<uniform> u0 : S;
 
-[[group(0), binding(1)]]
+@group(0) @binding(1)
 var<uniform> u1 : Inner;
 
-[[group(0), binding(2)]]
+@group(0) @binding(2)
 var<uniform> u2 : Inner;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   let f0 = u0.i.f;
   let f1 = u1.f;
@@ -373,23 +373,23 @@
   f : f32;
 }
 
-[[internal(spirv_block)]]
+@internal(spirv_block)
 struct S {
   i : Inner;
 }
 
-[[group(0), binding(0)]] var<uniform> u0 : S;
+@group(0) @binding(0) var<uniform> u0 : S;
 
-[[internal(spirv_block)]]
+@internal(spirv_block)
 struct u1_block {
   inner : Inner;
 }
 
-[[group(0), binding(1)]] var<uniform> u1 : u1_block;
+@group(0) @binding(1) var<uniform> u1 : u1_block;
 
-[[group(0), binding(2)]] var<uniform> u2 : u1_block;
+@group(0) @binding(2) var<uniform> u2 : u1_block;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   let f0 = u0.i.f;
   let f1 = u1.inner.f;
@@ -408,10 +408,10 @@
   f : f32;
 };
 
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<uniform> u : S;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   let f = u.f;
   let a = array<S, 4>();
@@ -422,14 +422,14 @@
   f : f32;
 }
 
-[[internal(spirv_block)]]
+@internal(spirv_block)
 struct u_block {
   inner : S;
 }
 
-[[group(0), binding(0)]] var<uniform> u : u_block;
+@group(0) @binding(0) var<uniform> u : u_block;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   let f = u.inner.f;
   let a = array<S, 4>();
@@ -447,13 +447,13 @@
   f : f32;
 };
 
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<uniform> u0 : S;
 
-[[group(0), binding(1)]]
+@group(0) @binding(1)
 var<uniform> u1 : S;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   let f0 = u0.f;
   let f1 = u1.f;
@@ -465,16 +465,16 @@
   f : f32;
 }
 
-[[internal(spirv_block)]]
+@internal(spirv_block)
 struct u0_block {
   inner : S;
 }
 
-[[group(0), binding(0)]] var<uniform> u0 : u0_block;
+@group(0) @binding(0) var<uniform> u0 : u0_block;
 
-[[group(0), binding(1)]] var<uniform> u1 : u0_block;
+@group(0) @binding(1) var<uniform> u1 : u0_block;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   let f0 = u0.inner.f;
   let f1 = u1.inner.f;
@@ -501,13 +501,13 @@
 
 type MyOuter = Outer;
 
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<uniform> u0 : MyOuter;
 
-[[group(0), binding(1)]]
+@group(0) @binding(1)
 var<uniform> u1 : MyInner;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   let f0 = u0.i.f;
   let f1 = u1.f;
@@ -520,23 +520,23 @@
 
 type MyInner = Inner;
 
-[[internal(spirv_block)]]
+@internal(spirv_block)
 struct Outer {
   i : MyInner;
 }
 
 type MyOuter = Outer;
 
-[[group(0), binding(0)]] var<uniform> u0 : MyOuter;
+@group(0) @binding(0) var<uniform> u0 : MyOuter;
 
-[[internal(spirv_block)]]
+@internal(spirv_block)
 struct u1_block {
   inner : Inner;
 }
 
-[[group(0), binding(1)]] var<uniform> u1 : u1_block;
+@group(0) @binding(1) var<uniform> u1 : u1_block;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   let f0 = u0.i.f;
   let f1 = u1.inner.f;
diff --git a/src/transform/array_length_from_uniform.h b/src/transform/array_length_from_uniform.h
index 6ab1598..bd7a461 100644
--- a/src/transform/array_length_from_uniform.h
+++ b/src/transform/array_length_from_uniform.h
@@ -38,7 +38,7 @@
 ///  buffer_size : array<u32, 8>;
 /// };
 ///
-/// [[group(0), binding(30)]]
+/// @group(0) @binding(30)
 /// var<uniform> buffer_size_ubo : buffer_size_struct;
 /// ```
 /// The binding group and number used for this uniform buffer is provided via
diff --git a/src/transform/array_length_from_uniform_test.cc b/src/transform/array_length_from_uniform_test.cc
index b9139a9..944fc6a 100644
--- a/src/transform/array_length_from_uniform_test.cc
+++ b/src/transform/array_length_from_uniform_test.cc
@@ -52,9 +52,9 @@
 
 TEST_F(ArrayLengthFromUniformTest, Basic) {
   auto* src = R"(
-[[group(0), binding(0)]] var<storage, read> sb : array<i32>;
+@group(0) @binding(0) var<storage, read> sb : array<i32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var len : u32 = arrayLength(&sb);
 }
@@ -65,11 +65,11 @@
   buffer_size : array<vec4<u32>, 1u>;
 }
 
-[[group(0), binding(30)]] var<uniform> tint_symbol_1 : tint_symbol;
+@group(0) @binding(30) var<uniform> tint_symbol_1 : tint_symbol;
 
-[[group(0), binding(0)]] var<storage, read> sb : array<i32>;
+@group(0) @binding(0) var<storage, read> sb : array<i32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var len : u32 = (tint_symbol_1.buffer_size[0u][0u] / 4u);
 }
@@ -95,9 +95,9 @@
   arr : array<i32>;
 };
 
-[[group(0), binding(0)]] var<storage, read> sb : SB;
+@group(0) @binding(0) var<storage, read> sb : SB;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var len : u32 = arrayLength(&sb.arr);
 }
@@ -108,16 +108,16 @@
   buffer_size : array<vec4<u32>, 1u>;
 }
 
-[[group(0), binding(30)]] var<uniform> tint_symbol_1 : tint_symbol;
+@group(0) @binding(30) var<uniform> tint_symbol_1 : tint_symbol;
 
 struct SB {
   x : i32;
   arr : array<i32>;
 }
 
-[[group(0), binding(0)]] var<storage, read> sb : SB;
+@group(0) @binding(0) var<storage, read> sb : SB;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var len : u32 = ((tint_symbol_1.buffer_size[0u][0u] - 4u) / 4u);
 }
@@ -138,9 +138,9 @@
 
 TEST_F(ArrayLengthFromUniformTest, WithStride) {
   auto* src = R"(
-[[group(0), binding(0)]] var<storage, read> sb : [[stride(64)]] array<i32>;
+@group(0) @binding(0) var<storage, read> sb : @stride(64) array<i32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var len : u32 = arrayLength(&sb);
 }
@@ -151,11 +151,11 @@
   buffer_size : array<vec4<u32>, 1u>;
 }
 
-[[group(0), binding(30)]] var<uniform> tint_symbol_1 : tint_symbol;
+@group(0) @binding(30) var<uniform> tint_symbol_1 : tint_symbol;
 
-[[group(0), binding(0)]] var<storage, read> sb : [[stride(64)]] array<i32>;
+@group(0) @binding(0) var<storage, read> sb : @stride(64) array<i32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var len : u32 = (tint_symbol_1.buffer_size[0u][0u] / 64u);
 }
@@ -179,12 +179,12 @@
 struct SB {
   x : i32;
   y : f32;
-  arr : [[stride(64)]] array<i32>;
+  arr : @stride(64) array<i32>;
 };
 
-[[group(0), binding(0)]] var<storage, read> sb : SB;
+@group(0) @binding(0) var<storage, read> sb : SB;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var len : u32 = arrayLength(&sb.arr);
 }
@@ -195,17 +195,17 @@
   buffer_size : array<vec4<u32>, 1u>;
 }
 
-[[group(0), binding(30)]] var<uniform> tint_symbol_1 : tint_symbol;
+@group(0) @binding(30) var<uniform> tint_symbol_1 : tint_symbol;
 
 struct SB {
   x : i32;
   y : f32;
-  arr : [[stride(64)]] array<i32>;
+  arr : @stride(64) array<i32>;
 }
 
-[[group(0), binding(0)]] var<storage, read> sb : SB;
+@group(0) @binding(0) var<storage, read> sb : SB;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var len : u32 = ((tint_symbol_1.buffer_size[0u][0u] - 8u) / 64u);
 }
@@ -239,13 +239,13 @@
   arr4 : array<vec4<f32>>;
 };
 
-[[group(0), binding(2)]] var<storage, read> sb1 : SB1;
-[[group(1), binding(2)]] var<storage, read> sb2 : SB2;
-[[group(2), binding(2)]] var<storage, read> sb3 : array<vec4<f32>>;
-[[group(3), binding(2)]] var<storage, read> sb4 : SB4;
-[[group(4), binding(2)]] var<storage, read> sb5 : array<vec4<f32>>;
+@group(0) @binding(2) var<storage, read> sb1 : SB1;
+@group(1) @binding(2) var<storage, read> sb2 : SB2;
+@group(2) @binding(2) var<storage, read> sb3 : array<vec4<f32>>;
+@group(3) @binding(2) var<storage, read> sb4 : SB4;
+@group(4) @binding(2) var<storage, read> sb5 : array<vec4<f32>>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var len1 : u32 = arrayLength(&(sb1.arr1));
   var len2 : u32 = arrayLength(&(sb2.arr2));
@@ -261,7 +261,7 @@
   buffer_size : array<vec4<u32>, 2u>;
 }
 
-[[group(0), binding(30)]] var<uniform> tint_symbol_1 : tint_symbol;
+@group(0) @binding(30) var<uniform> tint_symbol_1 : tint_symbol;
 
 struct SB1 {
   x : i32;
@@ -278,17 +278,17 @@
   arr4 : array<vec4<f32>>;
 }
 
-[[group(0), binding(2)]] var<storage, read> sb1 : SB1;
+@group(0) @binding(2) var<storage, read> sb1 : SB1;
 
-[[group(1), binding(2)]] var<storage, read> sb2 : SB2;
+@group(1) @binding(2) var<storage, read> sb2 : SB2;
 
-[[group(2), binding(2)]] var<storage, read> sb3 : array<vec4<f32>>;
+@group(2) @binding(2) var<storage, read> sb3 : array<vec4<f32>>;
 
-[[group(3), binding(2)]] var<storage, read> sb4 : SB4;
+@group(3) @binding(2) var<storage, read> sb4 : SB4;
 
-[[group(4), binding(2)]] var<storage, read> sb5 : array<vec4<f32>>;
+@group(4) @binding(2) var<storage, read> sb5 : array<vec4<f32>>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var len1 : u32 = ((tint_symbol_1.buffer_size[0u][0u] - 4u) / 4u);
   var len2 : u32 = ((tint_symbol_1.buffer_size[0u][1u] - 16u) / 16u);
@@ -331,13 +331,13 @@
   arr4 : array<vec4<f32>>;
 };
 
-[[group(0), binding(2)]] var<storage, read> sb1 : SB1;
-[[group(1), binding(2)]] var<storage, read> sb2 : SB2;
-[[group(2), binding(2)]] var<storage, read> sb3 : array<vec4<f32>>;
-[[group(3), binding(2)]] var<storage, read> sb4 : SB4;
-[[group(4), binding(2)]] var<storage, read> sb5 : array<vec4<f32>>;
+@group(0) @binding(2) var<storage, read> sb1 : SB1;
+@group(1) @binding(2) var<storage, read> sb2 : SB2;
+@group(2) @binding(2) var<storage, read> sb3 : array<vec4<f32>>;
+@group(3) @binding(2) var<storage, read> sb4 : SB4;
+@group(4) @binding(2) var<storage, read> sb5 : array<vec4<f32>>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var len1 : u32 = arrayLength(&(sb1.arr1));
   var len3 : u32 = arrayLength(&sb3);
@@ -350,7 +350,7 @@
   buffer_size : array<vec4<u32>, 1u>;
 }
 
-[[group(0), binding(30)]] var<uniform> tint_symbol_1 : tint_symbol;
+@group(0) @binding(30) var<uniform> tint_symbol_1 : tint_symbol;
 
 struct SB1 {
   x : i32;
@@ -367,17 +367,17 @@
   arr4 : array<vec4<f32>>;
 }
 
-[[group(0), binding(2)]] var<storage, read> sb1 : SB1;
+@group(0) @binding(2) var<storage, read> sb1 : SB1;
 
-[[group(1), binding(2)]] var<storage, read> sb2 : SB2;
+@group(1) @binding(2) var<storage, read> sb2 : SB2;
 
-[[group(2), binding(2)]] var<storage, read> sb3 : array<vec4<f32>>;
+@group(2) @binding(2) var<storage, read> sb3 : array<vec4<f32>>;
 
-[[group(3), binding(2)]] var<storage, read> sb4 : SB4;
+@group(3) @binding(2) var<storage, read> sb4 : SB4;
 
-[[group(4), binding(2)]] var<storage, read> sb5 : array<vec4<f32>>;
+@group(4) @binding(2) var<storage, read> sb5 : array<vec4<f32>>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var len1 : u32 = ((tint_symbol_1.buffer_size[0u][0u] - 4u) / 4u);
   var len3 : u32 = (tint_symbol_1.buffer_size[0u][2u] / 16u);
@@ -409,9 +409,9 @@
   arr : array<i32>;
 }
 
-[[group(0), binding(0)]] var<storage, read> sb : SB;
+@group(0) @binding(0) var<storage, read> sb : SB;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   ignore(&(sb.arr));
 }
@@ -442,11 +442,11 @@
   arr2 : array<vec4<f32>>;
 };
 
-[[group(0), binding(2)]] var<storage, read> sb1 : SB1;
+@group(0) @binding(2) var<storage, read> sb1 : SB1;
 
-[[group(1), binding(2)]] var<storage, read> sb2 : SB2;
+@group(1) @binding(2) var<storage, read> sb2 : SB2;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var len1 : u32 = arrayLength(&(sb1.arr1));
   var len2 : u32 = arrayLength(&(sb2.arr2));
@@ -459,7 +459,7 @@
   buffer_size : array<vec4<u32>, 1u>;
 }
 
-[[group(0), binding(30)]] var<uniform> tint_symbol_1 : tint_symbol;
+@group(0) @binding(30) var<uniform> tint_symbol_1 : tint_symbol;
 
 struct SB1 {
   x : i32;
@@ -471,11 +471,11 @@
   arr2 : array<vec4<f32>>;
 }
 
-[[group(0), binding(2)]] var<storage, read> sb1 : SB1;
+@group(0) @binding(2) var<storage, read> sb1 : SB1;
 
-[[group(1), binding(2)]] var<storage, read> sb2 : SB2;
+@group(1) @binding(2) var<storage, read> sb2 : SB2;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var len1 : u32 = ((tint_symbol_1.buffer_size[0u][0u] - 4u) / 4u);
   var len2 : u32 = arrayLength(&(sb2.arr2));
diff --git a/src/transform/binding_remapper_test.cc b/src/transform/binding_remapper_test.cc
index de85cb0..5827cb2 100644
--- a/src/transform/binding_remapper_test.cc
+++ b/src/transform/binding_remapper_test.cc
@@ -30,11 +30,11 @@
   a : f32;
 }
 
-[[group(2), binding(1)]] var<storage, read> a : S;
+@group(2) @binding(1) var<storage, read> a : S;
 
-[[group(3), binding(2)]] var<storage, read> b : S;
+@group(3) @binding(2) var<storage, read> b : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
 }
 )";
@@ -55,11 +55,11 @@
   a : f32;
 };
 
-[[group(2), binding(1)]] var<storage, read> a : S;
+@group(2) @binding(1) var<storage, read> a : S;
 
-[[group(3), binding(2)]] var<storage, read> b : S;
+@group(3) @binding(2) var<storage, read> b : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
 }
 )";
@@ -69,11 +69,11 @@
   a : f32;
 }
 
-[[group(1), binding(2)]] var<storage, read> a : S;
+@group(1) @binding(2) var<storage, read> a : S;
 
-[[group(3), binding(2)]] var<storage, read> b : S;
+@group(3) @binding(2) var<storage, read> b : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
 }
 )";
@@ -83,7 +83,7 @@
       BindingRemapper::BindingPoints{
           {{2, 1}, {1, 2}},  // Remap
           {{4, 5}, {6, 7}},  // Not found
-                             // Keep [[group(3), binding(2)]] as is
+                             // Keep @group(3) @binding(2) as is
       },
       BindingRemapper::AccessControls{});
   auto got = Run<BindingRemapper>(src, data);
@@ -97,13 +97,13 @@
   a : f32;
 };
 
-[[group(2), binding(1)]] var<storage, read> a : S;
+@group(2) @binding(1) var<storage, read> a : S;
 
-[[group(3), binding(2)]] var<storage, write> b : S;
+@group(3) @binding(2) var<storage, write> b : S;
 
-[[group(4), binding(3)]] var<storage, read> c : S;
+@group(4) @binding(3) var<storage, read> c : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
 }
 )";
@@ -113,13 +113,13 @@
   a : f32;
 }
 
-[[group(2), binding(1)]] var<storage, write> a : S;
+@group(2) @binding(1) var<storage, write> a : S;
 
-[[group(3), binding(2)]] var<storage, write> b : S;
+@group(3) @binding(2) var<storage, write> b : S;
 
-[[group(4), binding(3)]] var<storage, read> c : S;
+@group(4) @binding(3) var<storage, read> c : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
 }
 )";
@@ -129,7 +129,7 @@
       BindingRemapper::BindingPoints{},
       BindingRemapper::AccessControls{
           {{2, 1}, ast::Access::kWrite},  // Modify access control
-          // Keep [[group(3), binding(2)]] as is
+          // Keep @group(3) @binding(2) as is
           {{4, 3}, ast::Access::kRead},  // Add access control
       });
   auto got = Run<BindingRemapper>(src, data);
@@ -151,13 +151,13 @@
 
 type A = S;
 
-[[group(2), binding(1)]] var<storage> a : ReadOnlyS;
+@group(2) @binding(1) var<storage> a : ReadOnlyS;
 
-[[group(3), binding(2)]] var<storage> b : WriteOnlyS;
+@group(3) @binding(2) var<storage> b : WriteOnlyS;
 
-[[group(4), binding(3)]] var<storage> c : A;
+@group(4) @binding(3) var<storage> c : A;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
 }
 )";
@@ -173,13 +173,13 @@
 
 type A = S;
 
-[[group(2), binding(1)]] var<storage, write> a : S;
+@group(2) @binding(1) var<storage, write> a : S;
 
-[[group(3), binding(2)]] var<storage> b : WriteOnlyS;
+@group(3) @binding(2) var<storage> b : WriteOnlyS;
 
-[[group(4), binding(3)]] var<storage, write> c : S;
+@group(4) @binding(3) var<storage, write> c : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
 }
 )";
@@ -189,7 +189,7 @@
       BindingRemapper::BindingPoints{},
       BindingRemapper::AccessControls{
           {{2, 1}, ast::Access::kWrite},  // Modify access control
-          // Keep [[group(3), binding(2)]] as is
+          // Keep @group(3) @binding(2) as is
           {{4, 3}, ast::Access::kRead},  // Add access control
       });
   auto got = Run<BindingRemapper>(src, data);
@@ -203,11 +203,11 @@
   a : f32;
 };
 
-[[group(2), binding(1)]] var<storage, read> a : S;
+@group(2) @binding(1) var<storage, read> a : S;
 
-[[group(3), binding(2)]] var<storage, read> b : S;
+@group(3) @binding(2) var<storage, read> b : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
 }
 )";
@@ -217,11 +217,11 @@
   a : f32;
 }
 
-[[group(4), binding(5)]] var<storage, write> a : S;
+@group(4) @binding(5) var<storage, write> a : S;
 
-[[group(6), binding(7)]] var<storage, write> b : S;
+@group(6) @binding(7) var<storage, write> b : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
 }
 )";
@@ -247,15 +247,15 @@
   i : i32;
 };
 
-[[group(2), binding(1)]] var<storage, read> a : S;
+@group(2) @binding(1) var<storage, read> a : S;
 
-[[group(3), binding(2)]] var<storage, read> b : S;
+@group(3) @binding(2) var<storage, read> b : S;
 
-[[group(4), binding(3)]] var<storage, read> c : S;
+@group(4) @binding(3) var<storage, read> c : S;
 
-[[group(5), binding(4)]] var<storage, read> d : S;
+@group(5) @binding(4) var<storage, read> d : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let x : i32 = (((a.i + b.i) + c.i) + d.i);
 }
@@ -266,15 +266,15 @@
   i : i32;
 }
 
-[[internal(disable_validation__binding_point_collision), group(1), binding(1)]] var<storage, read> a : S;
+@internal(disable_validation__binding_point_collision) @group(1) @binding(1) var<storage, read> a : S;
 
-[[internal(disable_validation__binding_point_collision), group(1), binding(1)]] var<storage, read> b : S;
+@internal(disable_validation__binding_point_collision) @group(1) @binding(1) var<storage, read> b : S;
 
-[[internal(disable_validation__binding_point_collision), group(5), binding(4)]] var<storage, read> c : S;
+@internal(disable_validation__binding_point_collision) @group(5) @binding(4) var<storage, read> c : S;
 
-[[internal(disable_validation__binding_point_collision), group(5), binding(4)]] var<storage, read> d : S;
+@internal(disable_validation__binding_point_collision) @group(5) @binding(4) var<storage, read> d : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let x : i32 = (((a.i + b.i) + c.i) + d.i);
 }
@@ -299,20 +299,20 @@
   i : i32;
 };
 
-[[group(2), binding(1)]] var<storage, read> a : S;
+@group(2) @binding(1) var<storage, read> a : S;
 
-[[group(3), binding(2)]] var<storage, read> b : S;
+@group(3) @binding(2) var<storage, read> b : S;
 
-[[group(4), binding(3)]] var<storage, read> c : S;
+@group(4) @binding(3) var<storage, read> c : S;
 
-[[group(5), binding(4)]] var<storage, read> d : S;
+@group(5) @binding(4) var<storage, read> d : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f1() {
   let x : i32 = (a.i + c.i);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f2() {
   let x : i32 = (b.i + d.i);
 }
@@ -323,20 +323,20 @@
   i : i32;
 }
 
-[[group(1), binding(1)]] var<storage, read> a : S;
+@group(1) @binding(1) var<storage, read> a : S;
 
-[[group(1), binding(1)]] var<storage, read> b : S;
+@group(1) @binding(1) var<storage, read> b : S;
 
-[[group(5), binding(4)]] var<storage, read> c : S;
+@group(5) @binding(4) var<storage, read> c : S;
 
-[[group(5), binding(4)]] var<storage, read> d : S;
+@group(5) @binding(4) var<storage, read> d : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f1() {
   let x : i32 = (a.i + c.i);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f2() {
   let x : i32 = (b.i + d.i);
 }
@@ -361,10 +361,10 @@
   a : f32;
 };
 
-[[group(2), binding(1)]] var<storage, read> a : S;
-[[group(3), binding(2)]] var<storage, read> b : S;
+@group(2) @binding(1) var<storage, read> a : S;
+@group(3) @binding(2) var<storage, read> b : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {}
 )";
 
diff --git a/src/transform/calculate_array_length_test.cc b/src/transform/calculate_array_length_test.cc
index 83e0ac7..88643ae 100644
--- a/src/transform/calculate_array_length_test.cc
+++ b/src/transform/calculate_array_length_test.cc
@@ -38,21 +38,21 @@
 
 TEST_F(CalculateArrayLengthTest, Basic) {
   auto* src = R"(
-[[group(0), binding(0)]] var<storage, read> sb : array<i32>;
+@group(0) @binding(0) var<storage, read> sb : array<i32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var len : u32 = arrayLength(&sb);
 }
 )";
 
   auto* expect = R"(
-[[internal(intrinsic_buffer_size)]]
-fn tint_symbol([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : array<i32>, result : ptr<function, u32>)
+@internal(intrinsic_buffer_size)
+fn tint_symbol(@internal(disable_validation__ignore_constructible_function_parameter) buffer : array<i32>, result : ptr<function, u32>)
 
-[[group(0), binding(0)]] var<storage, read> sb : array<i32>;
+@group(0) @binding(0) var<storage, read> sb : array<i32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var tint_symbol_1 : u32 = 0u;
   tint_symbol(sb, &(tint_symbol_1));
@@ -73,9 +73,9 @@
   arr : array<i32>;
 };
 
-[[group(0), binding(0)]] var<storage, read> sb : SB;
+@group(0) @binding(0) var<storage, read> sb : SB;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var len : u32 = arrayLength(&sb.arr);
 }
@@ -87,12 +87,12 @@
   arr : array<i32>;
 }
 
-[[internal(intrinsic_buffer_size)]]
-fn tint_symbol([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, result : ptr<function, u32>)
+@internal(intrinsic_buffer_size)
+fn tint_symbol(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, result : ptr<function, u32>)
 
-[[group(0), binding(0)]] var<storage, read> sb : SB;
+@group(0) @binding(0) var<storage, read> sb : SB;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var tint_symbol_1 : u32 = 0u;
   tint_symbol(sb, &(tint_symbol_1));
@@ -108,9 +108,9 @@
 
 TEST_F(CalculateArrayLengthTest, InSameBlock) {
   auto* src = R"(
-[[group(0), binding(0)]] var<storage, read> sb : array<i32>;;
+@group(0) @binding(0) var<storage, read> sb : array<i32>;;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var a : u32 = arrayLength(&sb);
   var b : u32 = arrayLength(&sb);
@@ -119,12 +119,12 @@
 )";
 
   auto* expect = R"(
-[[internal(intrinsic_buffer_size)]]
-fn tint_symbol([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : array<i32>, result : ptr<function, u32>)
+@internal(intrinsic_buffer_size)
+fn tint_symbol(@internal(disable_validation__ignore_constructible_function_parameter) buffer : array<i32>, result : ptr<function, u32>)
 
-[[group(0), binding(0)]] var<storage, read> sb : array<i32>;
+@group(0) @binding(0) var<storage, read> sb : array<i32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var tint_symbol_1 : u32 = 0u;
   tint_symbol(sb, &(tint_symbol_1));
@@ -147,9 +147,9 @@
   arr : array<i32>;
 };
 
-[[group(0), binding(0)]] var<storage, read> sb : SB;
+@group(0) @binding(0) var<storage, read> sb : SB;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var a : u32 = arrayLength(&sb.arr);
   var b : u32 = arrayLength(&sb.arr);
@@ -163,12 +163,12 @@
   arr : array<i32>;
 }
 
-[[internal(intrinsic_buffer_size)]]
-fn tint_symbol([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, result : ptr<function, u32>)
+@internal(intrinsic_buffer_size)
+fn tint_symbol(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, result : ptr<function, u32>)
 
-[[group(0), binding(0)]] var<storage, read> sb : SB;
+@group(0) @binding(0) var<storage, read> sb : SB;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var tint_symbol_1 : u32 = 0u;
   tint_symbol(sb, &(tint_symbol_1));
@@ -186,21 +186,21 @@
 
 TEST_F(CalculateArrayLengthTest, WithStride) {
   auto* src = R"(
-[[group(0), binding(0)]] var<storage, read> sb : [[stride(64)]] array<i32>;
+@group(0) @binding(0) var<storage, read> sb : @stride(64) array<i32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var len : u32 = arrayLength(&sb);
 }
 )";
 
   auto* expect = R"(
-[[internal(intrinsic_buffer_size)]]
-fn tint_symbol([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : [[stride(64)]] array<i32>, result : ptr<function, u32>)
+@internal(intrinsic_buffer_size)
+fn tint_symbol(@internal(disable_validation__ignore_constructible_function_parameter) buffer : @stride(64) array<i32>, result : ptr<function, u32>)
 
-[[group(0), binding(0)]] var<storage, read> sb : [[stride(64)]] array<i32>;
+@group(0) @binding(0) var<storage, read> sb : @stride(64) array<i32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var tint_symbol_1 : u32 = 0u;
   tint_symbol(sb, &(tint_symbol_1));
@@ -219,12 +219,12 @@
 struct SB {
   x : i32;
   y : f32;
-  arr : [[stride(64)]] array<i32>;
+  arr : @stride(64) array<i32>;
 };
 
-[[group(0), binding(0)]] var<storage, read> sb : SB;
+@group(0) @binding(0) var<storage, read> sb : SB;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var len : u32 = arrayLength(&sb.arr);
 }
@@ -234,15 +234,15 @@
 struct SB {
   x : i32;
   y : f32;
-  arr : [[stride(64)]] array<i32>;
+  arr : @stride(64) array<i32>;
 }
 
-[[internal(intrinsic_buffer_size)]]
-fn tint_symbol([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, result : ptr<function, u32>)
+@internal(intrinsic_buffer_size)
+fn tint_symbol(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, result : ptr<function, u32>)
 
-[[group(0), binding(0)]] var<storage, read> sb : SB;
+@group(0) @binding(0) var<storage, read> sb : SB;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var tint_symbol_1 : u32 = 0u;
   tint_symbol(sb, &(tint_symbol_1));
@@ -263,9 +263,9 @@
   arr : array<i32>;
 };
 
-[[group(0), binding(0)]] var<storage, read> sb : SB;
+@group(0) @binding(0) var<storage, read> sb : SB;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   if (true) {
     var len : u32 = arrayLength(&sb.arr);
@@ -283,12 +283,12 @@
   arr : array<i32>;
 }
 
-[[internal(intrinsic_buffer_size)]]
-fn tint_symbol([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, result : ptr<function, u32>)
+@internal(intrinsic_buffer_size)
+fn tint_symbol(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, result : ptr<function, u32>)
 
-[[group(0), binding(0)]] var<storage, read> sb : SB;
+@group(0) @binding(0) var<storage, read> sb : SB;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   if (true) {
     var tint_symbol_1 : u32 = 0u;
@@ -323,13 +323,13 @@
   arr2 : array<vec4<f32>>;
 };
 
-[[group(0), binding(0)]] var<storage, read> sb1 : SB1;
+@group(0) @binding(0) var<storage, read> sb1 : SB1;
 
-[[group(0), binding(1)]] var<storage, read> sb2 : SB2;
+@group(0) @binding(1) var<storage, read> sb2 : SB2;
 
-[[group(0), binding(2)]] var<storage, read> sb3 : array<i32>;
+@group(0) @binding(2) var<storage, read> sb3 : array<i32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var len1 : u32 = arrayLength(&(sb1.arr1));
   var len2 : u32 = arrayLength(&(sb2.arr2));
@@ -339,32 +339,32 @@
 )";
 
   auto* expect = R"(
-[[internal(intrinsic_buffer_size)]]
-fn tint_symbol_6([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : array<i32>, result : ptr<function, u32>)
+@internal(intrinsic_buffer_size)
+fn tint_symbol_6(@internal(disable_validation__ignore_constructible_function_parameter) buffer : array<i32>, result : ptr<function, u32>)
 
 struct SB1 {
   x : i32;
   arr1 : array<i32>;
 }
 
-[[internal(intrinsic_buffer_size)]]
-fn tint_symbol([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB1, result : ptr<function, u32>)
+@internal(intrinsic_buffer_size)
+fn tint_symbol(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB1, result : ptr<function, u32>)
 
 struct SB2 {
   x : i32;
   arr2 : array<vec4<f32>>;
 }
 
-[[internal(intrinsic_buffer_size)]]
-fn tint_symbol_3([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB2, result : ptr<function, u32>)
+@internal(intrinsic_buffer_size)
+fn tint_symbol_3(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB2, result : ptr<function, u32>)
 
-[[group(0), binding(0)]] var<storage, read> sb1 : SB1;
+@group(0) @binding(0) var<storage, read> sb1 : SB1;
 
-[[group(0), binding(1)]] var<storage, read> sb2 : SB2;
+@group(0) @binding(1) var<storage, read> sb2 : SB2;
 
-[[group(0), binding(2)]] var<storage, read> sb3 : array<i32>;
+@group(0) @binding(2) var<storage, read> sb3 : array<i32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var tint_symbol_1 : u32 = 0u;
   tint_symbol(sb1, &(tint_symbol_1));
@@ -394,10 +394,10 @@
   arr : array<i32>;
 };
 
-[[group(0), binding(0)]] var<storage, read> a : SB;
-[[group(0), binding(1)]] var<storage, read> b : SB;
+@group(0) @binding(0) var<storage, read> a : SB;
+@group(0) @binding(1) var<storage, read> b : SB;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let x = &a;
   var a : u32 = arrayLength(&a.arr);
@@ -414,14 +414,14 @@
   arr : array<i32>;
 }
 
-[[internal(intrinsic_buffer_size)]]
-fn tint_symbol([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, result : ptr<function, u32>)
+@internal(intrinsic_buffer_size)
+fn tint_symbol(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, result : ptr<function, u32>)
 
-[[group(0), binding(0)]] var<storage, read> a : SB;
+@group(0) @binding(0) var<storage, read> a : SB;
 
-[[group(0), binding(1)]] var<storage, read> b : SB;
+@group(0) @binding(1) var<storage, read> b : SB;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var tint_symbol_1 : u32 = 0u;
   tint_symbol(a, &(tint_symbol_1));
diff --git a/src/transform/canonicalize_entry_point_io.h b/src/transform/canonicalize_entry_point_io.h
index baaa65a..0bf16ba 100644
--- a/src/transform/canonicalize_entry_point_io.h
+++ b/src/transform/canonicalize_entry_point_io.h
@@ -31,13 +31,13 @@
 /// Before:
 /// ```
 /// struct Locations{
-///   [[location(1)]] loc1 : f32;
-///   [[location(2)]] loc2 : vec4<u32>;
+///   @location(1) loc1 : f32;
+///   @location(2) loc2 : vec4<u32>;
 /// };
 ///
-/// [[stage(fragment)]]
-/// fn frag_main([[builtin(position)]] coord : vec4<f32>,
-///              locations : Locations) -> [[location(0)]] f32 {
+/// @stage(fragment)
+/// fn frag_main(@builtin(position) coord : vec4<f32>,
+///              locations : Locations) -> @location(0) f32 {
 ///   if (coord.w > 1.0) {
 ///     return 0.0;
 ///   }
@@ -54,13 +54,13 @@
 /// };
 ///
 /// struct frag_main_in {
-///   [[builtin(position)]] coord : vec4<f32>;
-///   [[location(1)]] loc1 : f32;
-///   [[location(2)]] loc2 : vec4<u32>
+///   @builtin(position) coord : vec4<f32>;
+///   @location(1) loc1 : f32;
+///   @location(2) loc2 : vec4<u32>
 /// };
 ///
 /// struct frag_main_out {
-///   [[location(0)]] loc0 : f32;
+///   @location(0) loc0 : f32;
 /// };
 ///
 /// fn frag_main_inner(coord : vec4<f32>,
@@ -72,7 +72,7 @@
 ///   return col;
 /// }
 ///
-/// [[stage(fragment)]]
+/// @stage(fragment)
 /// fn frag_main(in : frag_main_in) -> frag_main_out {
 ///   let inner_retval = frag_main_inner(in.coord, Locations(in.loc1, in.loc2));
 ///   var wrapper_result : frag_main_out;
diff --git a/src/transform/canonicalize_entry_point_io_test.cc b/src/transform/canonicalize_entry_point_io_test.cc
index 3c16ee5..0219ff2 100644
--- a/src/transform/canonicalize_entry_point_io_test.cc
+++ b/src/transform/canonicalize_entry_point_io_test.cc
@@ -51,11 +51,11 @@
   // Test that we do not introduce wrapper functions when there is no shader IO
   // to process.
   auto* src = R"(
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main() {
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn comp_main() {
 }
 )";
@@ -72,26 +72,26 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, Parameters_Spirv) {
   auto* src = R"(
-[[stage(fragment)]]
-fn frag_main([[location(1)]] loc1 : f32,
-             [[location(2)]] loc2 : vec4<u32>,
-             [[builtin(position)]] coord : vec4<f32>) {
+@stage(fragment)
+fn frag_main(@location(1) loc1 : f32,
+             @location(2) loc2 : vec4<u32>,
+             @builtin(position) coord : vec4<f32>) {
   var col : f32 = (coord.x * loc1);
 }
 )";
 
   auto* expect = R"(
-[[location(1), internal(disable_validation__ignore_storage_class)]] var<in> loc1_1 : f32;
+@location(1) @internal(disable_validation__ignore_storage_class) var<in> loc1_1 : f32;
 
-[[location(2), interpolate(flat), internal(disable_validation__ignore_storage_class)]] var<in> loc2_1 : vec4<u32>;
+@location(2) @interpolate(flat) @internal(disable_validation__ignore_storage_class) var<in> loc2_1 : vec4<u32>;
 
-[[builtin(position), internal(disable_validation__ignore_storage_class)]] var<in> coord_1 : vec4<f32>;
+@builtin(position) @internal(disable_validation__ignore_storage_class) var<in> coord_1 : vec4<f32>;
 
 fn frag_main_inner(loc1 : f32, loc2 : vec4<u32>, coord : vec4<f32>) {
   var col : f32 = (coord.x * loc1);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main() {
   frag_main_inner(loc1_1, loc2_1, coord_1);
 }
@@ -107,19 +107,19 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, Parameters_Msl) {
   auto* src = R"(
-[[stage(fragment)]]
-fn frag_main([[location(1)]] loc1 : f32,
-             [[location(2)]] loc2 : vec4<u32>,
-             [[builtin(position)]] coord : vec4<f32>) {
+@stage(fragment)
+fn frag_main(@location(1) loc1 : f32,
+             @location(2) loc2 : vec4<u32>,
+             @builtin(position) coord : vec4<f32>) {
   var col : f32 = (coord.x * loc1);
 }
 )";
 
   auto* expect = R"(
 struct tint_symbol_1 {
-  [[location(1)]]
+  @location(1)
   loc1 : f32;
-  [[location(2)]]
+  @location(2)
   loc2 : vec4<u32>;
 }
 
@@ -127,8 +127,8 @@
   var col : f32 = (coord.x * loc1);
 }
 
-[[stage(fragment)]]
-fn frag_main([[builtin(position)]] coord : vec4<f32>, tint_symbol : tint_symbol_1) {
+@stage(fragment)
+fn frag_main(@builtin(position) coord : vec4<f32>, tint_symbol : tint_symbol_1) {
   frag_main_inner(tint_symbol.loc1, tint_symbol.loc2, coord);
 }
 )";
@@ -143,21 +143,21 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, Parameters_Hlsl) {
   auto* src = R"(
-[[stage(fragment)]]
-fn frag_main([[location(1)]] loc1 : f32,
-             [[location(2)]] loc2 : vec4<u32>,
-             [[builtin(position)]] coord : vec4<f32>) {
+@stage(fragment)
+fn frag_main(@location(1) loc1 : f32,
+             @location(2) loc2 : vec4<u32>,
+             @builtin(position) coord : vec4<f32>) {
   var col : f32 = (coord.x * loc1);
 }
 )";
 
   auto* expect = R"(
 struct tint_symbol_1 {
-  [[location(1)]]
+  @location(1)
   loc1 : f32;
-  [[location(2)]]
+  @location(2)
   loc2 : vec4<u32>;
-  [[builtin(position)]]
+  @builtin(position)
   coord : vec4<f32>;
 }
 
@@ -165,7 +165,7 @@
   var col : f32 = (coord.x * loc1);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main(tint_symbol : tint_symbol_1) {
   frag_main_inner(tint_symbol.loc1, tint_symbol.loc2, tint_symbol.coord);
 }
@@ -183,8 +183,8 @@
   auto* src = R"(
 type myf32 = f32;
 
-[[stage(fragment)]]
-fn frag_main([[location(1)]] loc1 : myf32) {
+@stage(fragment)
+fn frag_main(@location(1) loc1 : myf32) {
   var x : myf32 = loc1;
 }
 )";
@@ -193,7 +193,7 @@
 type myf32 = f32;
 
 struct tint_symbol_1 {
-  [[location(1)]]
+  @location(1)
   loc1 : f32;
 }
 
@@ -201,7 +201,7 @@
   var x : myf32 = loc1;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main(tint_symbol : tint_symbol_1) {
   frag_main_inner(tint_symbol.loc1);
 }
@@ -218,15 +218,15 @@
 TEST_F(CanonicalizeEntryPointIOTest, StructParameters_Spirv) {
   auto* src = R"(
 struct FragBuiltins {
-  [[builtin(position)]] coord : vec4<f32>;
+  @builtin(position) coord : vec4<f32>;
 };
 struct FragLocations {
-  [[location(1)]] loc1 : f32;
-  [[location(2)]] loc2 : vec4<u32>;
+  @location(1) loc1 : f32;
+  @location(2) loc2 : vec4<u32>;
 };
 
-[[stage(fragment)]]
-fn frag_main([[location(0)]] loc0 : f32,
+@stage(fragment)
+fn frag_main(@location(0) loc0 : f32,
              locations : FragLocations,
              builtins : FragBuiltins) {
   var col : f32 = ((builtins.coord.x * locations.loc1) + loc0);
@@ -234,13 +234,13 @@
 )";
 
   auto* expect = R"(
-[[location(0), internal(disable_validation__ignore_storage_class)]] var<in> loc0_1 : f32;
+@location(0) @internal(disable_validation__ignore_storage_class) var<in> loc0_1 : f32;
 
-[[location(1), internal(disable_validation__ignore_storage_class)]] var<in> loc1_1 : f32;
+@location(1) @internal(disable_validation__ignore_storage_class) var<in> loc1_1 : f32;
 
-[[location(2), interpolate(flat), internal(disable_validation__ignore_storage_class)]] var<in> loc2_1 : vec4<u32>;
+@location(2) @interpolate(flat) @internal(disable_validation__ignore_storage_class) var<in> loc2_1 : vec4<u32>;
 
-[[builtin(position), internal(disable_validation__ignore_storage_class)]] var<in> coord_1 : vec4<f32>;
+@builtin(position) @internal(disable_validation__ignore_storage_class) var<in> coord_1 : vec4<f32>;
 
 struct FragBuiltins {
   coord : vec4<f32>;
@@ -255,7 +255,7 @@
   var col : f32 = ((builtins.coord.x * locations.loc1) + loc0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main() {
   frag_main_inner(loc0_1, FragLocations(loc1_1, loc2_1), FragBuiltins(coord_1));
 }
@@ -272,15 +272,15 @@
 TEST_F(CanonicalizeEntryPointIOTest, StructParameters_kMsl) {
   auto* src = R"(
 struct FragBuiltins {
-  [[builtin(position)]] coord : vec4<f32>;
+  @builtin(position) coord : vec4<f32>;
 };
 struct FragLocations {
-  [[location(1)]] loc1 : f32;
-  [[location(2)]] loc2 : vec4<u32>;
+  @location(1) loc1 : f32;
+  @location(2) loc2 : vec4<u32>;
 };
 
-[[stage(fragment)]]
-fn frag_main([[location(0)]] loc0 : f32,
+@stage(fragment)
+fn frag_main(@location(0) loc0 : f32,
              locations : FragLocations,
              builtins : FragBuiltins) {
   var col : f32 = ((builtins.coord.x * locations.loc1) + loc0);
@@ -298,11 +298,11 @@
 }
 
 struct tint_symbol_1 {
-  [[location(0)]]
+  @location(0)
   loc0 : f32;
-  [[location(1)]]
+  @location(1)
   loc1 : f32;
-  [[location(2)]]
+  @location(2)
   loc2 : vec4<u32>;
 }
 
@@ -310,8 +310,8 @@
   var col : f32 = ((builtins.coord.x * locations.loc1) + loc0);
 }
 
-[[stage(fragment)]]
-fn frag_main([[builtin(position)]] coord : vec4<f32>, tint_symbol : tint_symbol_1) {
+@stage(fragment)
+fn frag_main(@builtin(position) coord : vec4<f32>, tint_symbol : tint_symbol_1) {
   frag_main_inner(tint_symbol.loc0, FragLocations(tint_symbol.loc1, tint_symbol.loc2), FragBuiltins(coord));
 }
 )";
@@ -327,15 +327,15 @@
 TEST_F(CanonicalizeEntryPointIOTest, StructParameters_Hlsl) {
   auto* src = R"(
 struct FragBuiltins {
-  [[builtin(position)]] coord : vec4<f32>;
+  @builtin(position) coord : vec4<f32>;
 };
 struct FragLocations {
-  [[location(1)]] loc1 : f32;
-  [[location(2)]] loc2 : vec4<u32>;
+  @location(1) loc1 : f32;
+  @location(2) loc2 : vec4<u32>;
 };
 
-[[stage(fragment)]]
-fn frag_main([[location(0)]] loc0 : f32,
+@stage(fragment)
+fn frag_main(@location(0) loc0 : f32,
              locations : FragLocations,
              builtins : FragBuiltins) {
   var col : f32 = ((builtins.coord.x * locations.loc1) + loc0);
@@ -353,13 +353,13 @@
 }
 
 struct tint_symbol_1 {
-  [[location(0)]]
+  @location(0)
   loc0 : f32;
-  [[location(1)]]
+  @location(1)
   loc1 : f32;
-  [[location(2)]]
+  @location(2)
   loc2 : vec4<u32>;
-  [[builtin(position)]]
+  @builtin(position)
   coord : vec4<f32>;
 }
 
@@ -367,7 +367,7 @@
   var col : f32 = ((builtins.coord.x * locations.loc1) + loc0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main(tint_symbol : tint_symbol_1) {
   frag_main_inner(tint_symbol.loc0, FragLocations(tint_symbol.loc1, tint_symbol.loc2), FragBuiltins(tint_symbol.coord));
 }
@@ -383,20 +383,20 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, Return_NonStruct_Spirv) {
   auto* src = R"(
-[[stage(fragment)]]
-fn frag_main() -> [[builtin(frag_depth)]] f32 {
+@stage(fragment)
+fn frag_main() -> @builtin(frag_depth) f32 {
   return 1.0;
 }
 )";
 
   auto* expect = R"(
-[[builtin(frag_depth), internal(disable_validation__ignore_storage_class)]] var<out> value : f32;
+@builtin(frag_depth) @internal(disable_validation__ignore_storage_class) var<out> value : f32;
 
 fn frag_main_inner() -> f32 {
   return 1.0;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main() {
   let inner_result = frag_main_inner();
   value = inner_result;
@@ -413,15 +413,15 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, Return_NonStruct_Msl) {
   auto* src = R"(
-[[stage(fragment)]]
-fn frag_main() -> [[builtin(frag_depth)]] f32 {
+@stage(fragment)
+fn frag_main() -> @builtin(frag_depth) f32 {
   return 1.0;
 }
 )";
 
   auto* expect = R"(
 struct tint_symbol {
-  [[builtin(frag_depth)]]
+  @builtin(frag_depth)
   value : f32;
 }
 
@@ -429,7 +429,7 @@
   return 1.0;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main() -> tint_symbol {
   let inner_result = frag_main_inner();
   var wrapper_result : tint_symbol;
@@ -448,15 +448,15 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, Return_NonStruct_Hlsl) {
   auto* src = R"(
-[[stage(fragment)]]
-fn frag_main() -> [[builtin(frag_depth)]] f32 {
+@stage(fragment)
+fn frag_main() -> @builtin(frag_depth) f32 {
   return 1.0;
 }
 )";
 
   auto* expect = R"(
 struct tint_symbol {
-  [[builtin(frag_depth)]]
+  @builtin(frag_depth)
   value : f32;
 }
 
@@ -464,7 +464,7 @@
   return 1.0;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main() -> tint_symbol {
   let inner_result = frag_main_inner();
   var wrapper_result : tint_symbol;
@@ -484,12 +484,12 @@
 TEST_F(CanonicalizeEntryPointIOTest, Return_Struct_Spirv) {
   auto* src = R"(
 struct FragOutput {
-  [[location(0)]] color : vec4<f32>;
-  [[builtin(frag_depth)]] depth : f32;
-  [[builtin(sample_mask)]] mask : u32;
+  @location(0) color : vec4<f32>;
+  @builtin(frag_depth) depth : f32;
+  @builtin(sample_mask) mask : u32;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main() -> FragOutput {
   var output : FragOutput;
   output.depth = 1.0;
@@ -500,11 +500,11 @@
 )";
 
   auto* expect = R"(
-[[location(0), internal(disable_validation__ignore_storage_class)]] var<out> color_1 : vec4<f32>;
+@location(0) @internal(disable_validation__ignore_storage_class) var<out> color_1 : vec4<f32>;
 
-[[builtin(frag_depth), internal(disable_validation__ignore_storage_class)]] var<out> depth_1 : f32;
+@builtin(frag_depth) @internal(disable_validation__ignore_storage_class) var<out> depth_1 : f32;
 
-[[builtin(sample_mask), internal(disable_validation__ignore_storage_class)]] var<out> mask_1 : array<u32, 1>;
+@builtin(sample_mask) @internal(disable_validation__ignore_storage_class) var<out> mask_1 : array<u32, 1>;
 
 struct FragOutput {
   color : vec4<f32>;
@@ -520,7 +520,7 @@
   return output;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main() {
   let inner_result = frag_main_inner();
   color_1 = inner_result.color;
@@ -540,12 +540,12 @@
 TEST_F(CanonicalizeEntryPointIOTest, Return_Struct_Msl) {
   auto* src = R"(
 struct FragOutput {
-  [[location(0)]] color : vec4<f32>;
-  [[builtin(frag_depth)]] depth : f32;
-  [[builtin(sample_mask)]] mask : u32;
+  @location(0) color : vec4<f32>;
+  @builtin(frag_depth) depth : f32;
+  @builtin(sample_mask) mask : u32;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main() -> FragOutput {
   var output : FragOutput;
   output.depth = 1.0;
@@ -563,11 +563,11 @@
 }
 
 struct tint_symbol {
-  [[location(0)]]
+  @location(0)
   color : vec4<f32>;
-  [[builtin(frag_depth)]]
+  @builtin(frag_depth)
   depth : f32;
-  [[builtin(sample_mask)]]
+  @builtin(sample_mask)
   mask : u32;
 }
 
@@ -579,7 +579,7 @@
   return output;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main() -> tint_symbol {
   let inner_result = frag_main_inner();
   var wrapper_result : tint_symbol;
@@ -601,12 +601,12 @@
 TEST_F(CanonicalizeEntryPointIOTest, Return_Struct_Hlsl) {
   auto* src = R"(
 struct FragOutput {
-  [[location(0)]] color : vec4<f32>;
-  [[builtin(frag_depth)]] depth : f32;
-  [[builtin(sample_mask)]] mask : u32;
+  @location(0) color : vec4<f32>;
+  @builtin(frag_depth) depth : f32;
+  @builtin(sample_mask) mask : u32;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main() -> FragOutput {
   var output : FragOutput;
   output.depth = 1.0;
@@ -624,11 +624,11 @@
 }
 
 struct tint_symbol {
-  [[location(0)]]
+  @location(0)
   color : vec4<f32>;
-  [[builtin(frag_depth)]]
+  @builtin(frag_depth)
   depth : f32;
-  [[builtin(sample_mask)]]
+  @builtin(sample_mask)
   mask : u32;
 }
 
@@ -640,7 +640,7 @@
   return output;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main() -> tint_symbol {
   let inner_result = frag_main_inner();
   var wrapper_result : tint_symbol;
@@ -663,33 +663,33 @@
        StructParameters_SharedDeviceFunction_Spirv) {
   auto* src = R"(
 struct FragmentInput {
-  [[location(0)]] value : f32;
-  [[location(1)]] mul : f32;
+  @location(0) value : f32;
+  @location(1) mul : f32;
 };
 
 fn foo(x : FragmentInput) -> f32 {
   return x.value * x.mul;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main1(inputs : FragmentInput) {
   var x : f32 = foo(inputs);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main2(inputs : FragmentInput) {
   var x : f32 = foo(inputs);
 }
 )";
 
   auto* expect = R"(
-[[location(0), internal(disable_validation__ignore_storage_class)]] var<in> value_1 : f32;
+@location(0) @internal(disable_validation__ignore_storage_class) var<in> value_1 : f32;
 
-[[location(1), internal(disable_validation__ignore_storage_class)]] var<in> mul_1 : f32;
+@location(1) @internal(disable_validation__ignore_storage_class) var<in> mul_1 : f32;
 
-[[location(0), internal(disable_validation__ignore_storage_class)]] var<in> value_2 : f32;
+@location(0) @internal(disable_validation__ignore_storage_class) var<in> value_2 : f32;
 
-[[location(1), internal(disable_validation__ignore_storage_class)]] var<in> mul_2 : f32;
+@location(1) @internal(disable_validation__ignore_storage_class) var<in> mul_2 : f32;
 
 struct FragmentInput {
   value : f32;
@@ -704,7 +704,7 @@
   var x : f32 = foo(inputs);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main1() {
   frag_main1_inner(FragmentInput(value_1, mul_1));
 }
@@ -713,7 +713,7 @@
   var x : f32 = foo(inputs);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main2() {
   frag_main2_inner(FragmentInput(value_2, mul_2));
 }
@@ -731,20 +731,20 @@
        StructParameters_SharedDeviceFunction_Msl) {
   auto* src = R"(
 struct FragmentInput {
-  [[location(0)]] value : f32;
-  [[location(1)]] mul : f32;
+  @location(0) value : f32;
+  @location(1) mul : f32;
 };
 
 fn foo(x : FragmentInput) -> f32 {
   return x.value * x.mul;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main1(inputs : FragmentInput) {
   var x : f32 = foo(inputs);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main2(inputs : FragmentInput) {
   var x : f32 = foo(inputs);
 }
@@ -761,9 +761,9 @@
 }
 
 struct tint_symbol_1 {
-  [[location(0)]]
+  @location(0)
   value : f32;
-  [[location(1)]]
+  @location(1)
   mul : f32;
 }
 
@@ -771,15 +771,15 @@
   var x : f32 = foo(inputs);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main1(tint_symbol : tint_symbol_1) {
   frag_main1_inner(FragmentInput(tint_symbol.value, tint_symbol.mul));
 }
 
 struct tint_symbol_3 {
-  [[location(0)]]
+  @location(0)
   value : f32;
-  [[location(1)]]
+  @location(1)
   mul : f32;
 }
 
@@ -787,7 +787,7 @@
   var x : f32 = foo(inputs);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main2(tint_symbol_2 : tint_symbol_3) {
   frag_main2_inner(FragmentInput(tint_symbol_2.value, tint_symbol_2.mul));
 }
@@ -805,20 +805,20 @@
        StructParameters_SharedDeviceFunction_Hlsl) {
   auto* src = R"(
 struct FragmentInput {
-  [[location(0)]] value : f32;
-  [[location(1)]] mul : f32;
+  @location(0) value : f32;
+  @location(1) mul : f32;
 };
 
 fn foo(x : FragmentInput) -> f32 {
   return x.value * x.mul;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main1(inputs : FragmentInput) {
   var x : f32 = foo(inputs);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main2(inputs : FragmentInput) {
   var x : f32 = foo(inputs);
 }
@@ -835,9 +835,9 @@
 }
 
 struct tint_symbol_1 {
-  [[location(0)]]
+  @location(0)
   value : f32;
-  [[location(1)]]
+  @location(1)
   mul : f32;
 }
 
@@ -845,15 +845,15 @@
   var x : f32 = foo(inputs);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main1(tint_symbol : tint_symbol_1) {
   frag_main1_inner(FragmentInput(tint_symbol.value, tint_symbol.mul));
 }
 
 struct tint_symbol_3 {
-  [[location(0)]]
+  @location(0)
   value : f32;
-  [[location(1)]]
+  @location(1)
   mul : f32;
 }
 
@@ -861,7 +861,7 @@
   var x : f32 = foo(inputs);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main2(tint_symbol_2 : tint_symbol_3) {
   frag_main2_inner(FragmentInput(tint_symbol_2.value, tint_symbol_2.mul));
 }
@@ -878,8 +878,8 @@
 TEST_F(CanonicalizeEntryPointIOTest, Struct_ModuleScopeVariable) {
   auto* src = R"(
 struct FragmentInput {
-  [[location(0)]] col1 : f32;
-  [[location(1)]] col2 : f32;
+  @location(0) col1 : f32;
+  @location(1) col2 : f32;
 };
 
 var<private> global_inputs : FragmentInput;
@@ -892,7 +892,7 @@
   return global_inputs.col2 * 2.0;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main1(inputs : FragmentInput) {
  global_inputs = inputs;
  var r : f32 = foo();
@@ -917,9 +917,9 @@
 }
 
 struct tint_symbol_1 {
-  [[location(0)]]
+  @location(0)
   col1 : f32;
-  [[location(1)]]
+  @location(1)
   col2 : f32;
 }
 
@@ -929,7 +929,7 @@
   var g : f32 = bar();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main1(tint_symbol : tint_symbol_1) {
   frag_main1_inner(FragmentInput(tint_symbol.col1, tint_symbol.col2));
 }
@@ -948,13 +948,13 @@
 type myf32 = f32;
 
 struct FragmentInput {
-  [[location(0)]] col1 : myf32;
-  [[location(1)]] col2 : myf32;
+  @location(0) col1 : myf32;
+  @location(1) col2 : myf32;
 };
 
 struct FragmentOutput {
-  [[location(0)]] col1 : myf32;
-  [[location(1)]] col2 : myf32;
+  @location(0) col1 : myf32;
+  @location(1) col2 : myf32;
 };
 
 type MyFragmentInput = FragmentInput;
@@ -965,7 +965,7 @@
   return x.col1;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main(inputs : MyFragmentInput) -> MyFragmentOutput {
   var x : myf32 = foo(inputs);
   return MyFragmentOutput(x, inputs.col2);
@@ -994,16 +994,16 @@
 }
 
 struct tint_symbol_1 {
-  [[location(0)]]
+  @location(0)
   col1 : f32;
-  [[location(1)]]
+  @location(1)
   col2 : f32;
 }
 
 struct tint_symbol_2 {
-  [[location(0)]]
+  @location(0)
   col1 : f32;
-  [[location(1)]]
+  @location(1)
   col2 : f32;
 }
 
@@ -1012,7 +1012,7 @@
   return MyFragmentOutput(x, inputs.col2);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main(tint_symbol : tint_symbol_1) -> tint_symbol_2 {
   let inner_result = frag_main_inner(MyFragmentInput(tint_symbol.col1, tint_symbol.col2));
   var wrapper_result : tint_symbol_2;
@@ -1033,25 +1033,25 @@
 TEST_F(CanonicalizeEntryPointIOTest, InterpolateAttributes) {
   auto* src = R"(
 struct VertexOut {
-  [[builtin(position)]] pos : vec4<f32>;
-  [[location(1), interpolate(flat)]] loc1: f32;
-  [[location(2), interpolate(linear, sample)]] loc2 : f32;
-  [[location(3), interpolate(perspective, centroid)]] loc3 : f32;
+  @builtin(position) pos : vec4<f32>;
+  @location(1) @interpolate(flat) loc1: f32;
+  @location(2) @interpolate(linear, sample) loc2 : f32;
+  @location(3) @interpolate(perspective, centroid) loc3 : f32;
 };
 
 struct FragmentIn {
-  [[location(1), interpolate(flat)]] loc1: f32;
-  [[location(2), interpolate(linear, sample)]] loc2 : f32;
+  @location(1) @interpolate(flat) loc1: f32;
+  @location(2) @interpolate(linear, sample) loc2 : f32;
 };
 
-[[stage(vertex)]]
+@stage(vertex)
 fn vert_main() -> VertexOut {
   return VertexOut();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main(inputs : FragmentIn,
-             [[location(3), interpolate(perspective, centroid)]] loc3 : f32) {
+             @location(3) @interpolate(perspective, centroid) loc3 : f32) {
   let x = inputs.loc1 + inputs.loc2 + loc3;
 }
 )";
@@ -1070,13 +1070,13 @@
 }
 
 struct tint_symbol {
-  [[location(1), interpolate(flat)]]
+  @location(1) @interpolate(flat)
   loc1 : f32;
-  [[location(2), interpolate(linear, sample)]]
+  @location(2) @interpolate(linear, sample)
   loc2 : f32;
-  [[location(3), interpolate(perspective, centroid)]]
+  @location(3) @interpolate(perspective, centroid)
   loc3 : f32;
-  [[builtin(position)]]
+  @builtin(position)
   pos : vec4<f32>;
 }
 
@@ -1084,7 +1084,7 @@
   return VertexOut();
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn vert_main() -> tint_symbol {
   let inner_result = vert_main_inner();
   var wrapper_result : tint_symbol;
@@ -1096,11 +1096,11 @@
 }
 
 struct tint_symbol_2 {
-  [[location(1), interpolate(flat)]]
+  @location(1) @interpolate(flat)
   loc1 : f32;
-  [[location(2), interpolate(linear, sample)]]
+  @location(2) @interpolate(linear, sample)
   loc2 : f32;
-  [[location(3), interpolate(perspective, centroid)]]
+  @location(3) @interpolate(perspective, centroid)
   loc3 : f32;
 }
 
@@ -1108,7 +1108,7 @@
   let x = ((inputs.loc1 + inputs.loc2) + loc3);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main(tint_symbol_1 : tint_symbol_2) {
   frag_main_inner(FragmentIn(tint_symbol_1.loc1, tint_symbol_1.loc2), tint_symbol_1.loc3);
 }
@@ -1127,33 +1127,33 @@
   // fragment inputs, but not vertex inputs or fragment outputs.
   auto* src = R"(
 struct VertexIn {
-  [[location(0)]] i : i32;
-  [[location(1)]] u : u32;
-  [[location(2)]] vi : vec4<i32>;
-  [[location(3)]] vu : vec4<u32>;
+  @location(0) i : i32;
+  @location(1) u : u32;
+  @location(2) vi : vec4<i32>;
+  @location(3) vu : vec4<u32>;
 };
 
 struct VertexOut {
-  [[location(0)]] i : i32;
-  [[location(1)]] u : u32;
-  [[location(2)]] vi : vec4<i32>;
-  [[location(3)]] vu : vec4<u32>;
-  [[builtin(position)]] pos : vec4<f32>;
+  @location(0) i : i32;
+  @location(1) u : u32;
+  @location(2) vi : vec4<i32>;
+  @location(3) vu : vec4<u32>;
+  @builtin(position) pos : vec4<f32>;
 };
 
 struct FragmentInterface {
-  [[location(0)]] i : i32;
-  [[location(1)]] u : u32;
-  [[location(2)]] vi : vec4<i32>;
-  [[location(3)]] vu : vec4<u32>;
+  @location(0) i : i32;
+  @location(1) u : u32;
+  @location(2) vi : vec4<i32>;
+  @location(3) vu : vec4<u32>;
 };
 
-[[stage(vertex)]]
+@stage(vertex)
 fn vert_main(in : VertexIn) -> VertexOut {
   return VertexOut(in.i, in.u, in.vi, in.vu, vec4<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main(inputs : FragmentInterface) -> FragmentInterface {
   return inputs;
 }
@@ -1161,39 +1161,39 @@
 
   auto* expect =
       R"(
-[[location(0), internal(disable_validation__ignore_storage_class)]] var<in> i_1 : i32;
+@location(0) @internal(disable_validation__ignore_storage_class) var<in> i_1 : i32;
 
-[[location(1), internal(disable_validation__ignore_storage_class)]] var<in> u_1 : u32;
+@location(1) @internal(disable_validation__ignore_storage_class) var<in> u_1 : u32;
 
-[[location(2), internal(disable_validation__ignore_storage_class)]] var<in> vi_1 : vec4<i32>;
+@location(2) @internal(disable_validation__ignore_storage_class) var<in> vi_1 : vec4<i32>;
 
-[[location(3), internal(disable_validation__ignore_storage_class)]] var<in> vu_1 : vec4<u32>;
+@location(3) @internal(disable_validation__ignore_storage_class) var<in> vu_1 : vec4<u32>;
 
-[[location(0), interpolate(flat), internal(disable_validation__ignore_storage_class)]] var<out> i_2 : i32;
+@location(0) @interpolate(flat) @internal(disable_validation__ignore_storage_class) var<out> i_2 : i32;
 
-[[location(1), interpolate(flat), internal(disable_validation__ignore_storage_class)]] var<out> u_2 : u32;
+@location(1) @interpolate(flat) @internal(disable_validation__ignore_storage_class) var<out> u_2 : u32;
 
-[[location(2), interpolate(flat), internal(disable_validation__ignore_storage_class)]] var<out> vi_2 : vec4<i32>;
+@location(2) @interpolate(flat) @internal(disable_validation__ignore_storage_class) var<out> vi_2 : vec4<i32>;
 
-[[location(3), interpolate(flat), internal(disable_validation__ignore_storage_class)]] var<out> vu_2 : vec4<u32>;
+@location(3) @interpolate(flat) @internal(disable_validation__ignore_storage_class) var<out> vu_2 : vec4<u32>;
 
-[[builtin(position), internal(disable_validation__ignore_storage_class)]] var<out> pos_1 : vec4<f32>;
+@builtin(position) @internal(disable_validation__ignore_storage_class) var<out> pos_1 : vec4<f32>;
 
-[[location(0), interpolate(flat), internal(disable_validation__ignore_storage_class)]] var<in> i_3 : i32;
+@location(0) @interpolate(flat) @internal(disable_validation__ignore_storage_class) var<in> i_3 : i32;
 
-[[location(1), interpolate(flat), internal(disable_validation__ignore_storage_class)]] var<in> u_3 : u32;
+@location(1) @interpolate(flat) @internal(disable_validation__ignore_storage_class) var<in> u_3 : u32;
 
-[[location(2), interpolate(flat), internal(disable_validation__ignore_storage_class)]] var<in> vi_3 : vec4<i32>;
+@location(2) @interpolate(flat) @internal(disable_validation__ignore_storage_class) var<in> vi_3 : vec4<i32>;
 
-[[location(3), interpolate(flat), internal(disable_validation__ignore_storage_class)]] var<in> vu_3 : vec4<u32>;
+@location(3) @interpolate(flat) @internal(disable_validation__ignore_storage_class) var<in> vu_3 : vec4<u32>;
 
-[[location(0), internal(disable_validation__ignore_storage_class)]] var<out> i_4 : i32;
+@location(0) @internal(disable_validation__ignore_storage_class) var<out> i_4 : i32;
 
-[[location(1), internal(disable_validation__ignore_storage_class)]] var<out> u_4 : u32;
+@location(1) @internal(disable_validation__ignore_storage_class) var<out> u_4 : u32;
 
-[[location(2), internal(disable_validation__ignore_storage_class)]] var<out> vi_4 : vec4<i32>;
+@location(2) @internal(disable_validation__ignore_storage_class) var<out> vi_4 : vec4<i32>;
 
-[[location(3), internal(disable_validation__ignore_storage_class)]] var<out> vu_4 : vec4<u32>;
+@location(3) @internal(disable_validation__ignore_storage_class) var<out> vu_4 : vec4<u32>;
 
 struct VertexIn {
   i : i32;
@@ -1221,7 +1221,7 @@
   return VertexOut(in.i, in.u, in.vi, in.vu, vec4<f32>());
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn vert_main() {
   let inner_result = vert_main_inner(VertexIn(i_1, u_1, vi_1, vu_1));
   i_2 = inner_result.i;
@@ -1235,7 +1235,7 @@
   return inputs;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main() {
   let inner_result_1 = frag_main_inner(FragmentInterface(i_3, u_3, vi_3, vu_3));
   i_4 = inner_result_1.i;
@@ -1259,12 +1259,12 @@
   [[builtin(position), invariant]] pos : vec4<f32>;
 };
 
-[[stage(vertex)]]
+@stage(vertex)
 fn main1() -> VertexOut {
   return VertexOut();
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn main2() -> [[builtin(position), invariant]] vec4<f32> {
   return vec4<f32>();
 }
@@ -1276,7 +1276,7 @@
 }
 
 struct tint_symbol {
-  [[builtin(position), invariant]]
+  @builtin(position) @invariant
   pos : vec4<f32>;
 }
 
@@ -1284,7 +1284,7 @@
   return VertexOut();
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn main1() -> tint_symbol {
   let inner_result = main1_inner();
   var wrapper_result : tint_symbol;
@@ -1293,7 +1293,7 @@
 }
 
 struct tint_symbol_1 {
-  [[builtin(position), invariant]]
+  @builtin(position) @invariant
   value : vec4<f32>;
 }
 
@@ -1301,7 +1301,7 @@
   return vec4<f32>();
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn main2() -> tint_symbol_1 {
   let inner_result_1 = main2_inner();
   var wrapper_result_1 : tint_symbol_1;
@@ -1321,16 +1321,16 @@
 TEST_F(CanonicalizeEntryPointIOTest, Struct_LayoutDecorations) {
   auto* src = R"(
 struct FragmentInput {
-  [[size(16), location(1)]] value : f32;
-  [[builtin(position)]] [[align(32)]] coord : vec4<f32>;
-  [[location(0), interpolate(linear, sample)]] [[align(128)]] loc0 : f32;
+  @size(16) @location(1) value : f32;
+  @builtin(position) @align(32) coord : vec4<f32>;
+  @location(0) @interpolate(linear, sample) @align(128) loc0 : f32;
 };
 
 struct FragmentOutput {
-  [[size(16), location(1), interpolate(flat)]] value : f32;
+  @size(16) @location(1) @interpolate(flat) value : f32;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main(inputs : FragmentInput) -> FragmentOutput {
   return FragmentOutput(inputs.coord.x * inputs.value + inputs.loc0);
 }
@@ -1338,30 +1338,30 @@
 
   auto* expect = R"(
 struct FragmentInput {
-  [[size(16)]]
+  @size(16)
   value : f32;
-  [[align(32)]]
+  @align(32)
   coord : vec4<f32>;
-  [[align(128)]]
+  @align(128)
   loc0 : f32;
 }
 
 struct FragmentOutput {
-  [[size(16)]]
+  @size(16)
   value : f32;
 }
 
 struct tint_symbol_1 {
-  [[location(0), interpolate(linear, sample)]]
+  @location(0) @interpolate(linear, sample)
   loc0 : f32;
-  [[location(1)]]
+  @location(1)
   value : f32;
-  [[builtin(position)]]
+  @builtin(position)
   coord : vec4<f32>;
 }
 
 struct tint_symbol_2 {
-  [[location(1), interpolate(flat)]]
+  @location(1) @interpolate(flat)
   value : f32;
 }
 
@@ -1369,7 +1369,7 @@
   return FragmentOutput(((inputs.coord.x * inputs.value) + inputs.loc0));
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main(tint_symbol : tint_symbol_1) -> tint_symbol_2 {
   let inner_result = frag_main_inner(FragmentInput(tint_symbol.value, tint_symbol.coord, tint_symbol.loc0));
   var wrapper_result : tint_symbol_2;
@@ -1389,29 +1389,29 @@
 TEST_F(CanonicalizeEntryPointIOTest, SortedMembers) {
   auto* src = R"(
 struct VertexOutput {
-  [[location(1)]] b : u32;
-  [[builtin(position)]] pos : vec4<f32>;
-  [[location(3)]] d : u32;
-  [[location(0)]] a : f32;
-  [[location(2)]] c : i32;
+  @location(1) b : u32;
+  @builtin(position) pos : vec4<f32>;
+  @location(3) d : u32;
+  @location(0) a : f32;
+  @location(2) c : i32;
 };
 
 struct FragmentInputExtra {
-  [[location(3)]] d : u32;
-  [[builtin(position)]] pos : vec4<f32>;
-  [[location(0)]] a : f32;
+  @location(3) d : u32;
+  @builtin(position) pos : vec4<f32>;
+  @location(0) a : f32;
 };
 
-[[stage(vertex)]]
+@stage(vertex)
 fn vert_main() -> VertexOutput {
   return VertexOutput();
 }
 
-[[stage(fragment)]]
-fn frag_main([[builtin(front_facing)]] ff : bool,
-             [[location(2)]] c : i32,
+@stage(fragment)
+fn frag_main(@builtin(front_facing) ff : bool,
+             @location(2) c : i32,
              inputs : FragmentInputExtra,
-             [[location(1)]] b : u32) {
+             @location(1) b : u32) {
 }
 )";
 
@@ -1431,15 +1431,15 @@
 }
 
 struct tint_symbol {
-  [[location(0)]]
+  @location(0)
   a : f32;
-  [[location(1)]]
+  @location(1)
   b : u32;
-  [[location(2)]]
+  @location(2)
   c : i32;
-  [[location(3)]]
+  @location(3)
   d : u32;
-  [[builtin(position)]]
+  @builtin(position)
   pos : vec4<f32>;
 }
 
@@ -1447,7 +1447,7 @@
   return VertexOutput();
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn vert_main() -> tint_symbol {
   let inner_result = vert_main_inner();
   var wrapper_result : tint_symbol;
@@ -1460,24 +1460,24 @@
 }
 
 struct tint_symbol_2 {
-  [[location(0)]]
+  @location(0)
   a : f32;
-  [[location(1)]]
+  @location(1)
   b : u32;
-  [[location(2)]]
+  @location(2)
   c : i32;
-  [[location(3)]]
+  @location(3)
   d : u32;
-  [[builtin(position)]]
+  @builtin(position)
   pos : vec4<f32>;
-  [[builtin(front_facing)]]
+  @builtin(front_facing)
   ff : bool;
 }
 
 fn frag_main_inner(ff : bool, c : i32, inputs : FragmentInputExtra, b : u32) {
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main(tint_symbol_1 : tint_symbol_2) {
   frag_main_inner(tint_symbol_1.ff, tint_symbol_1.c, FragmentInputExtra(tint_symbol_1.d, tint_symbol_1.pos, tint_symbol_1.a), tint_symbol_1.b);
 }
@@ -1493,21 +1493,21 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, DontRenameSymbols) {
   auto* src = R"(
-[[stage(fragment)]]
-fn tint_symbol_1([[location(0)]] col : f32) {
+@stage(fragment)
+fn tint_symbol_1(@location(0) col : f32) {
 }
 )";
 
   auto* expect = R"(
 struct tint_symbol_2 {
-  [[location(0)]]
+  @location(0)
   col : f32;
 }
 
 fn tint_symbol_1_inner(col : f32) {
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn tint_symbol_1(tint_symbol : tint_symbol_2) {
   tint_symbol_1_inner(tint_symbol.col);
 }
@@ -1523,21 +1523,21 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, FixedSampleMask_VoidNoReturn) {
   auto* src = R"(
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main() {
 }
 )";
 
   auto* expect = R"(
 struct tint_symbol {
-  [[builtin(sample_mask)]]
+  @builtin(sample_mask)
   fixed_sample_mask : u32;
 }
 
 fn frag_main_inner() {
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main() -> tint_symbol {
   frag_main_inner();
   var wrapper_result : tint_symbol;
@@ -1556,7 +1556,7 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, FixedSampleMask_VoidWithReturn) {
   auto* src = R"(
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main() {
   return;
 }
@@ -1564,7 +1564,7 @@
 
   auto* expect = R"(
 struct tint_symbol {
-  [[builtin(sample_mask)]]
+  @builtin(sample_mask)
   fixed_sample_mask : u32;
 }
 
@@ -1572,7 +1572,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main() -> tint_symbol {
   frag_main_inner();
   var wrapper_result : tint_symbol;
@@ -1591,15 +1591,15 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, FixedSampleMask_WithAuthoredMask) {
   auto* src = R"(
-[[stage(fragment)]]
-fn frag_main() -> [[builtin(sample_mask)]] u32 {
+@stage(fragment)
+fn frag_main() -> @builtin(sample_mask) u32 {
   return 7u;
 }
 )";
 
   auto* expect = R"(
 struct tint_symbol {
-  [[builtin(sample_mask)]]
+  @builtin(sample_mask)
   value : u32;
 }
 
@@ -1607,7 +1607,7 @@
   return 7u;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main() -> tint_symbol {
   let inner_result = frag_main_inner();
   var wrapper_result : tint_symbol;
@@ -1626,17 +1626,17 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, FixedSampleMask_WithoutAuthoredMask) {
   auto* src = R"(
-[[stage(fragment)]]
-fn frag_main() -> [[location(0)]] f32 {
+@stage(fragment)
+fn frag_main() -> @location(0) f32 {
   return 1.0;
 }
 )";
 
   auto* expect = R"(
 struct tint_symbol {
-  [[location(0)]]
+  @location(0)
   value : f32;
-  [[builtin(sample_mask)]]
+  @builtin(sample_mask)
   fixed_sample_mask : u32;
 }
 
@@ -1644,7 +1644,7 @@
   return 1.0;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main() -> tint_symbol {
   let inner_result = frag_main_inner();
   var wrapper_result : tint_symbol;
@@ -1665,12 +1665,12 @@
 TEST_F(CanonicalizeEntryPointIOTest, FixedSampleMask_StructWithAuthoredMask) {
   auto* src = R"(
 struct Output {
-  [[builtin(frag_depth)]] depth : f32;
-  [[builtin(sample_mask)]] mask : u32;
-  [[location(0)]] value : f32;
+  @builtin(frag_depth) depth : f32;
+  @builtin(sample_mask) mask : u32;
+  @location(0) value : f32;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main() -> Output {
   return Output(0.5, 7u, 1.0);
 }
@@ -1684,11 +1684,11 @@
 }
 
 struct tint_symbol {
-  [[location(0)]]
+  @location(0)
   value : f32;
-  [[builtin(frag_depth)]]
+  @builtin(frag_depth)
   depth : f32;
-  [[builtin(sample_mask)]]
+  @builtin(sample_mask)
   mask : u32;
 }
 
@@ -1696,7 +1696,7 @@
   return Output(0.5, 7u, 1.0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main() -> tint_symbol {
   let inner_result = frag_main_inner();
   var wrapper_result : tint_symbol;
@@ -1719,11 +1719,11 @@
        FixedSampleMask_StructWithoutAuthoredMask) {
   auto* src = R"(
 struct Output {
-  [[builtin(frag_depth)]] depth : f32;
-  [[location(0)]] value : f32;
+  @builtin(frag_depth) depth : f32;
+  @location(0) value : f32;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main() -> Output {
   return Output(0.5, 1.0);
 }
@@ -1736,11 +1736,11 @@
 }
 
 struct tint_symbol {
-  [[location(0)]]
+  @location(0)
   value : f32;
-  [[builtin(frag_depth)]]
+  @builtin(frag_depth)
   depth : f32;
-  [[builtin(sample_mask)]]
+  @builtin(sample_mask)
   fixed_sample_mask : u32;
 }
 
@@ -1748,7 +1748,7 @@
   return Output(0.5, 1.0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main() -> tint_symbol {
   let inner_result = frag_main_inner();
   var wrapper_result : tint_symbol;
@@ -1769,29 +1769,29 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, FixedSampleMask_MultipleShaders) {
   auto* src = R"(
-[[stage(fragment)]]
-fn frag_main1() -> [[builtin(sample_mask)]] u32 {
+@stage(fragment)
+fn frag_main1() -> @builtin(sample_mask) u32 {
   return 7u;
 }
 
-[[stage(fragment)]]
-fn frag_main2() -> [[location(0)]] f32 {
+@stage(fragment)
+fn frag_main2() -> @location(0) f32 {
   return 1.0;
 }
 
-[[stage(vertex)]]
-fn vert_main1() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vert_main1() -> @builtin(position) vec4<f32> {
   return vec4<f32>();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn comp_main1() {
 }
 )";
 
   auto* expect = R"(
 struct tint_symbol {
-  [[builtin(sample_mask)]]
+  @builtin(sample_mask)
   value : u32;
 }
 
@@ -1799,7 +1799,7 @@
   return 7u;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main1() -> tint_symbol {
   let inner_result = frag_main1_inner();
   var wrapper_result : tint_symbol;
@@ -1808,9 +1808,9 @@
 }
 
 struct tint_symbol_1 {
-  [[location(0)]]
+  @location(0)
   value : f32;
-  [[builtin(sample_mask)]]
+  @builtin(sample_mask)
   fixed_sample_mask : u32;
 }
 
@@ -1818,7 +1818,7 @@
   return 1.0;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main2() -> tint_symbol_1 {
   let inner_result_1 = frag_main2_inner();
   var wrapper_result_1 : tint_symbol_1;
@@ -1828,7 +1828,7 @@
 }
 
 struct tint_symbol_2 {
-  [[builtin(position)]]
+  @builtin(position)
   value : vec4<f32>;
 }
 
@@ -1836,7 +1836,7 @@
   return vec4<f32>();
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn vert_main1() -> tint_symbol_2 {
   let inner_result_2 = vert_main1_inner();
   var wrapper_result_2 : tint_symbol_2;
@@ -1844,7 +1844,7 @@
   return wrapper_result_2;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn comp_main1() {
 }
 )";
@@ -1860,11 +1860,11 @@
 TEST_F(CanonicalizeEntryPointIOTest, FixedSampleMask_AvoidNameClash) {
   auto* src = R"(
 struct FragOut {
-  [[location(0)]] fixed_sample_mask : vec4<f32>;
-  [[location(1)]] fixed_sample_mask_1 : vec4<f32>;
+  @location(0) fixed_sample_mask : vec4<f32>;
+  @location(1) fixed_sample_mask_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main() -> FragOut {
   return FragOut();
 }
@@ -1877,11 +1877,11 @@
 }
 
 struct tint_symbol {
-  [[location(0)]]
+  @location(0)
   fixed_sample_mask : vec4<f32>;
-  [[location(1)]]
+  @location(1)
   fixed_sample_mask_1 : vec4<f32>;
-  [[builtin(sample_mask)]]
+  @builtin(sample_mask)
   fixed_sample_mask_2 : u32;
 }
 
@@ -1889,7 +1889,7 @@
   return FragOut();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main() -> tint_symbol {
   let inner_result = frag_main_inner();
   var wrapper_result : tint_symbol;
@@ -1911,22 +1911,22 @@
 TEST_F(CanonicalizeEntryPointIOTest,
        EmitVertexPointSize_ReturnNonStruct_Spirv) {
   auto* src = R"(
-[[stage(vertex)]]
-fn vert_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vert_main() -> @builtin(position) vec4<f32> {
   return vec4<f32>();
 }
 )";
 
   auto* expect = R"(
-[[builtin(position), internal(disable_validation__ignore_storage_class)]] var<out> value : vec4<f32>;
+@builtin(position) @internal(disable_validation__ignore_storage_class) var<out> value : vec4<f32>;
 
-[[builtin(pointsize), internal(disable_validation__ignore_storage_class)]] var<out> vertex_point_size : f32;
+@builtin(pointsize) @internal(disable_validation__ignore_storage_class) var<out> vertex_point_size : f32;
 
 fn vert_main_inner() -> vec4<f32> {
   return vec4<f32>();
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn vert_main() {
   let inner_result = vert_main_inner();
   value = inner_result;
@@ -1944,17 +1944,17 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, EmitVertexPointSize_ReturnNonStruct_Msl) {
   auto* src = R"(
-[[stage(vertex)]]
-fn vert_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vert_main() -> @builtin(position) vec4<f32> {
   return vec4<f32>();
 }
 )";
 
   auto* expect = R"(
 struct tint_symbol {
-  [[builtin(position)]]
+  @builtin(position)
   value : vec4<f32>;
-  [[builtin(pointsize)]]
+  @builtin(pointsize)
   vertex_point_size : f32;
 }
 
@@ -1962,7 +1962,7 @@
   return vec4<f32>();
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn vert_main() -> tint_symbol {
   let inner_result = vert_main_inner();
   var wrapper_result : tint_symbol;
@@ -1983,19 +1983,19 @@
 TEST_F(CanonicalizeEntryPointIOTest, EmitVertexPointSize_ReturnStruct_Spirv) {
   auto* src = R"(
 struct VertOut {
-  [[builtin(position)]] pos : vec4<f32>;
+  @builtin(position) pos : vec4<f32>;
 };
 
-[[stage(vertex)]]
+@stage(vertex)
 fn vert_main() -> VertOut {
   return VertOut();
 }
 )";
 
   auto* expect = R"(
-[[builtin(position), internal(disable_validation__ignore_storage_class)]] var<out> pos_1 : vec4<f32>;
+@builtin(position) @internal(disable_validation__ignore_storage_class) var<out> pos_1 : vec4<f32>;
 
-[[builtin(pointsize), internal(disable_validation__ignore_storage_class)]] var<out> vertex_point_size : f32;
+@builtin(pointsize) @internal(disable_validation__ignore_storage_class) var<out> vertex_point_size : f32;
 
 struct VertOut {
   pos : vec4<f32>;
@@ -2005,7 +2005,7 @@
   return VertOut();
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn vert_main() {
   let inner_result = vert_main_inner();
   pos_1 = inner_result.pos;
@@ -2024,10 +2024,10 @@
 TEST_F(CanonicalizeEntryPointIOTest, EmitVertexPointSize_ReturnStruct_Msl) {
   auto* src = R"(
 struct VertOut {
-  [[builtin(position)]] pos : vec4<f32>;
+  @builtin(position) pos : vec4<f32>;
 };
 
-[[stage(vertex)]]
+@stage(vertex)
 fn vert_main() -> VertOut {
   return VertOut();
 }
@@ -2039,9 +2039,9 @@
 }
 
 struct tint_symbol {
-  [[builtin(position)]]
+  @builtin(position)
   pos : vec4<f32>;
-  [[builtin(pointsize)]]
+  @builtin(pointsize)
   vertex_point_size : f32;
 }
 
@@ -2049,7 +2049,7 @@
   return VertOut();
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn vert_main() -> tint_symbol {
   let inner_result = vert_main_inner();
   var wrapper_result : tint_symbol;
@@ -2074,19 +2074,19 @@
 var<private> vertex_point_size_2 : f32;
 
 struct VertIn1 {
-  [[location(0)]] collide : f32;
+  @location(0) collide : f32;
 };
 
 struct VertIn2 {
-  [[location(1)]] collide : f32;
+  @location(1) collide : f32;
 };
 
 struct VertOut {
-  [[location(0)]] vertex_point_size : f32;
-  [[builtin(position)]] vertex_point_size_1 : vec4<f32>;
+  @location(0) vertex_point_size : f32;
+  @builtin(position) vertex_point_size_1 : vec4<f32>;
 };
 
-[[stage(vertex)]]
+@stage(vertex)
 fn vert_main(collide : VertIn1, collide_1 : VertIn2) -> VertOut {
   let x = collide.collide + collide_1.collide;
   return VertOut();
@@ -2094,15 +2094,15 @@
 )";
 
   auto* expect = R"(
-[[location(0), internal(disable_validation__ignore_storage_class)]] var<in> collide_2 : f32;
+@location(0) @internal(disable_validation__ignore_storage_class) var<in> collide_2 : f32;
 
-[[location(1), internal(disable_validation__ignore_storage_class)]] var<in> collide_3 : f32;
+@location(1) @internal(disable_validation__ignore_storage_class) var<in> collide_3 : f32;
 
-[[location(0), internal(disable_validation__ignore_storage_class)]] var<out> vertex_point_size_3 : f32;
+@location(0) @internal(disable_validation__ignore_storage_class) var<out> vertex_point_size_3 : f32;
 
-[[builtin(position), internal(disable_validation__ignore_storage_class)]] var<out> vertex_point_size_1_1 : vec4<f32>;
+@builtin(position) @internal(disable_validation__ignore_storage_class) var<out> vertex_point_size_1_1 : vec4<f32>;
 
-[[builtin(pointsize), internal(disable_validation__ignore_storage_class)]] var<out> vertex_point_size_4 : f32;
+@builtin(pointsize) @internal(disable_validation__ignore_storage_class) var<out> vertex_point_size_4 : f32;
 
 var<private> vertex_point_size : f32;
 
@@ -2128,7 +2128,7 @@
   return VertOut();
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn vert_main() {
   let inner_result = vert_main_inner(VertIn1(collide_2), VertIn2(collide_3));
   vertex_point_size_3 = inner_result.vertex_point_size;
@@ -2148,19 +2148,19 @@
 TEST_F(CanonicalizeEntryPointIOTest, EmitVertexPointSize_AvoidNameClash_Msl) {
   auto* src = R"(
 struct VertIn1 {
-  [[location(0)]] collide : f32;
+  @location(0) collide : f32;
 };
 
 struct VertIn2 {
-  [[location(1)]] collide : f32;
+  @location(1) collide : f32;
 };
 
 struct VertOut {
-  [[location(0)]] vertex_point_size : vec4<f32>;
-  [[builtin(position)]] vertex_point_size_1 : vec4<f32>;
+  @location(0) vertex_point_size : vec4<f32>;
+  @builtin(position) vertex_point_size_1 : vec4<f32>;
 };
 
-[[stage(vertex)]]
+@stage(vertex)
 fn vert_main(collide : VertIn1, collide_1 : VertIn2) -> VertOut {
   let x = collide.collide + collide_1.collide;
   return VertOut();
@@ -2182,18 +2182,18 @@
 }
 
 struct tint_symbol_1 {
-  [[location(0)]]
+  @location(0)
   collide : f32;
-  [[location(1)]]
+  @location(1)
   collide_2 : f32;
 }
 
 struct tint_symbol_2 {
-  [[location(0)]]
+  @location(0)
   vertex_point_size : vec4<f32>;
-  [[builtin(position)]]
+  @builtin(position)
   vertex_point_size_1 : vec4<f32>;
-  [[builtin(pointsize)]]
+  @builtin(pointsize)
   vertex_point_size_2 : f32;
 }
 
@@ -2202,7 +2202,7 @@
   return VertOut();
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn vert_main(tint_symbol : tint_symbol_1) -> tint_symbol_2 {
   let inner_result = vert_main_inner(VertIn1(tint_symbol.collide), VertIn2(tint_symbol.collide_2));
   var wrapper_result : tint_symbol_2;
@@ -2224,19 +2224,19 @@
 TEST_F(CanonicalizeEntryPointIOTest, EmitVertexPointSize_AvoidNameClash_Hlsl) {
   auto* src = R"(
 struct VertIn1 {
-  [[location(0)]] collide : f32;
+  @location(0) collide : f32;
 };
 
 struct VertIn2 {
-  [[location(1)]] collide : f32;
+  @location(1) collide : f32;
 };
 
 struct VertOut {
-  [[location(0)]] vertex_point_size : vec4<f32>;
-  [[builtin(position)]] vertex_point_size_1 : vec4<f32>;
+  @location(0) vertex_point_size : vec4<f32>;
+  @builtin(position) vertex_point_size_1 : vec4<f32>;
 };
 
-[[stage(vertex)]]
+@stage(vertex)
 fn vert_main(collide : VertIn1, collide_1 : VertIn2) -> VertOut {
   let x = collide.collide + collide_1.collide;
   return VertOut();
@@ -2258,18 +2258,18 @@
 }
 
 struct tint_symbol_1 {
-  [[location(0)]]
+  @location(0)
   collide : f32;
-  [[location(1)]]
+  @location(1)
   collide_2 : f32;
 }
 
 struct tint_symbol_2 {
-  [[location(0)]]
+  @location(0)
   vertex_point_size : vec4<f32>;
-  [[builtin(position)]]
+  @builtin(position)
   vertex_point_size_1 : vec4<f32>;
-  [[builtin(pointsize)]]
+  @builtin(pointsize)
   vertex_point_size_2 : f32;
 }
 
@@ -2278,7 +2278,7 @@
   return VertOut();
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn vert_main(tint_symbol : tint_symbol_1) -> tint_symbol_2 {
   let inner_result = vert_main_inner(VertIn1(tint_symbol.collide), VertIn2(tint_symbol.collide_2));
   var wrapper_result : tint_symbol_2;
@@ -2299,26 +2299,26 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, SpirvSampleMaskBuiltins) {
   auto* src = R"(
-[[stage(fragment)]]
-fn main([[builtin(sample_index)]] sample_index : u32,
-        [[builtin(sample_mask)]] mask_in : u32
-        ) -> [[builtin(sample_mask)]] u32 {
+@stage(fragment)
+fn main(@builtin(sample_index) sample_index : u32,
+        @builtin(sample_mask) mask_in : u32
+        ) -> @builtin(sample_mask) u32 {
   return mask_in;
 }
 )";
 
   auto* expect = R"(
-[[builtin(sample_index), internal(disable_validation__ignore_storage_class)]] var<in> sample_index_1 : u32;
+@builtin(sample_index) @internal(disable_validation__ignore_storage_class) var<in> sample_index_1 : u32;
 
-[[builtin(sample_mask), internal(disable_validation__ignore_storage_class)]] var<in> mask_in_1 : array<u32, 1>;
+@builtin(sample_mask) @internal(disable_validation__ignore_storage_class) var<in> mask_in_1 : array<u32, 1>;
 
-[[builtin(sample_mask), internal(disable_validation__ignore_storage_class)]] var<out> value : array<u32, 1>;
+@builtin(sample_mask) @internal(disable_validation__ignore_storage_class) var<out> value : array<u32, 1>;
 
 fn main_inner(sample_index : u32, mask_in : u32) -> u32 {
   return mask_in;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   let inner_result = main_inner(sample_index_1, mask_in_1[0]);
   value[0] = inner_result;
diff --git a/src/transform/decompose_memory_access.h b/src/transform/decompose_memory_access.h
index 67f3eb9..9fb1b0f 100644
--- a/src/transform/decompose_memory_access.h
+++ b/src/transform/decompose_memory_access.h
@@ -82,7 +82,7 @@
     ~Intrinsic() override;
 
     /// @return a short description of the internal decoration which will be
-    /// displayed as `[[internal(<name>)]]`
+    /// displayed as `@internal(<name>)`
     std::string InternalName() const override;
 
     /// Performs a deep clone of this object using the CloneContext `ctx`.
diff --git a/src/transform/decompose_memory_access_test.cc b/src/transform/decompose_memory_access_test.cc
index c28f48e..2fd6e10 100644
--- a/src/transform/decompose_memory_access_test.cc
+++ b/src/transform/decompose_memory_access_test.cc
@@ -49,9 +49,9 @@
   v : array<vec3<f32>, 2>;
 };
 
-[[group(0), binding(0)]] var<storage, read_write> sb : SB;
+@group(0) @binding(0) var<storage, read_write> sb : SB;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var a : i32 = sb.a;
   var b : u32 = sb.b;
@@ -104,81 +104,81 @@
   v : array<vec3<f32>, 2>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> sb : SB;
+@group(0) @binding(0) var<storage, read_write> sb : SB;
 
-[[internal(intrinsic_load_storage_i32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> i32
+@internal(intrinsic_load_storage_i32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> i32
 
-[[internal(intrinsic_load_storage_u32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_1([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> u32
+@internal(intrinsic_load_storage_u32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_1(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> u32
 
-[[internal(intrinsic_load_storage_f32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_2([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> f32
+@internal(intrinsic_load_storage_f32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_2(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> f32
 
-[[internal(intrinsic_load_storage_vec2_i32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_3([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> vec2<i32>
+@internal(intrinsic_load_storage_vec2_i32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_3(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> vec2<i32>
 
-[[internal(intrinsic_load_storage_vec2_u32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_4([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> vec2<u32>
+@internal(intrinsic_load_storage_vec2_u32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_4(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> vec2<u32>
 
-[[internal(intrinsic_load_storage_vec2_f32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_5([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> vec2<f32>
+@internal(intrinsic_load_storage_vec2_f32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_5(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> vec2<f32>
 
-[[internal(intrinsic_load_storage_vec3_i32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_6([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> vec3<i32>
+@internal(intrinsic_load_storage_vec3_i32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_6(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> vec3<i32>
 
-[[internal(intrinsic_load_storage_vec3_u32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_7([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> vec3<u32>
+@internal(intrinsic_load_storage_vec3_u32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_7(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> vec3<u32>
 
-[[internal(intrinsic_load_storage_vec3_f32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_8([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> vec3<f32>
+@internal(intrinsic_load_storage_vec3_f32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_8(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> vec3<f32>
 
-[[internal(intrinsic_load_storage_vec4_i32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_9([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> vec4<i32>
+@internal(intrinsic_load_storage_vec4_i32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_9(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> vec4<i32>
 
-[[internal(intrinsic_load_storage_vec4_u32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_10([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> vec4<u32>
+@internal(intrinsic_load_storage_vec4_u32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_10(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> vec4<u32>
 
-[[internal(intrinsic_load_storage_vec4_f32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_11([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> vec4<f32>
+@internal(intrinsic_load_storage_vec4_f32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_11(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> vec4<f32>
 
-fn tint_symbol_12([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> mat2x2<f32> {
+fn tint_symbol_12(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> mat2x2<f32> {
   return mat2x2<f32>(tint_symbol_5(buffer, (offset + 0u)), tint_symbol_5(buffer, (offset + 8u)));
 }
 
-fn tint_symbol_13([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> mat2x3<f32> {
+fn tint_symbol_13(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> mat2x3<f32> {
   return mat2x3<f32>(tint_symbol_8(buffer, (offset + 0u)), tint_symbol_8(buffer, (offset + 16u)));
 }
 
-fn tint_symbol_14([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> mat2x4<f32> {
+fn tint_symbol_14(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> mat2x4<f32> {
   return mat2x4<f32>(tint_symbol_11(buffer, (offset + 0u)), tint_symbol_11(buffer, (offset + 16u)));
 }
 
-fn tint_symbol_15([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> mat3x2<f32> {
+fn tint_symbol_15(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> mat3x2<f32> {
   return mat3x2<f32>(tint_symbol_5(buffer, (offset + 0u)), tint_symbol_5(buffer, (offset + 8u)), tint_symbol_5(buffer, (offset + 16u)));
 }
 
-fn tint_symbol_16([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> mat3x3<f32> {
+fn tint_symbol_16(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> mat3x3<f32> {
   return mat3x3<f32>(tint_symbol_8(buffer, (offset + 0u)), tint_symbol_8(buffer, (offset + 16u)), tint_symbol_8(buffer, (offset + 32u)));
 }
 
-fn tint_symbol_17([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> mat3x4<f32> {
+fn tint_symbol_17(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> mat3x4<f32> {
   return mat3x4<f32>(tint_symbol_11(buffer, (offset + 0u)), tint_symbol_11(buffer, (offset + 16u)), tint_symbol_11(buffer, (offset + 32u)));
 }
 
-fn tint_symbol_18([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> mat4x2<f32> {
+fn tint_symbol_18(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> mat4x2<f32> {
   return mat4x2<f32>(tint_symbol_5(buffer, (offset + 0u)), tint_symbol_5(buffer, (offset + 8u)), tint_symbol_5(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 24u)));
 }
 
-fn tint_symbol_19([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> mat4x3<f32> {
+fn tint_symbol_19(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> mat4x3<f32> {
   return mat4x3<f32>(tint_symbol_8(buffer, (offset + 0u)), tint_symbol_8(buffer, (offset + 16u)), tint_symbol_8(buffer, (offset + 32u)), tint_symbol_8(buffer, (offset + 48u)));
 }
 
-fn tint_symbol_20([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> mat4x4<f32> {
+fn tint_symbol_20(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> mat4x4<f32> {
   return mat4x4<f32>(tint_symbol_11(buffer, (offset + 0u)), tint_symbol_11(buffer, (offset + 16u)), tint_symbol_11(buffer, (offset + 32u)), tint_symbol_11(buffer, (offset + 48u)));
 }
 
-fn tint_symbol_21([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> array<vec3<f32>, 2u> {
+fn tint_symbol_21(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> array<vec3<f32>, 2u> {
   var arr : array<vec3<f32>, 2u>;
   for(var i_1 = 0u; (i_1 < 2u); i_1 = (i_1 + 1u)) {
     arr[i_1] = tint_symbol_8(buffer, (offset + (i_1 * 16u)));
@@ -186,7 +186,7 @@
   return arr;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var a : i32 = tint_symbol(sb, 0u);
   var b : u32 = tint_symbol_1(sb, 4u);
@@ -245,9 +245,9 @@
   v : array<vec3<f32>, 2>;
 };
 
-[[group(0), binding(0)]] var<uniform> ub : UB;
+@group(0) @binding(0) var<uniform> ub : UB;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var a : i32 = ub.a;
   var b : u32 = ub.b;
@@ -300,81 +300,81 @@
   v : array<vec3<f32>, 2>;
 }
 
-[[group(0), binding(0)]] var<uniform> ub : UB;
+@group(0) @binding(0) var<uniform> ub : UB;
 
-[[internal(intrinsic_load_uniform_i32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : UB, offset : u32) -> i32
+@internal(intrinsic_load_uniform_i32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol(@internal(disable_validation__ignore_constructible_function_parameter) buffer : UB, offset : u32) -> i32
 
-[[internal(intrinsic_load_uniform_u32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_1([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : UB, offset : u32) -> u32
+@internal(intrinsic_load_uniform_u32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_1(@internal(disable_validation__ignore_constructible_function_parameter) buffer : UB, offset : u32) -> u32
 
-[[internal(intrinsic_load_uniform_f32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_2([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : UB, offset : u32) -> f32
+@internal(intrinsic_load_uniform_f32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_2(@internal(disable_validation__ignore_constructible_function_parameter) buffer : UB, offset : u32) -> f32
 
-[[internal(intrinsic_load_uniform_vec2_i32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_3([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : UB, offset : u32) -> vec2<i32>
+@internal(intrinsic_load_uniform_vec2_i32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_3(@internal(disable_validation__ignore_constructible_function_parameter) buffer : UB, offset : u32) -> vec2<i32>
 
-[[internal(intrinsic_load_uniform_vec2_u32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_4([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : UB, offset : u32) -> vec2<u32>
+@internal(intrinsic_load_uniform_vec2_u32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_4(@internal(disable_validation__ignore_constructible_function_parameter) buffer : UB, offset : u32) -> vec2<u32>
 
-[[internal(intrinsic_load_uniform_vec2_f32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_5([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : UB, offset : u32) -> vec2<f32>
+@internal(intrinsic_load_uniform_vec2_f32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_5(@internal(disable_validation__ignore_constructible_function_parameter) buffer : UB, offset : u32) -> vec2<f32>
 
-[[internal(intrinsic_load_uniform_vec3_i32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_6([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : UB, offset : u32) -> vec3<i32>
+@internal(intrinsic_load_uniform_vec3_i32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_6(@internal(disable_validation__ignore_constructible_function_parameter) buffer : UB, offset : u32) -> vec3<i32>
 
-[[internal(intrinsic_load_uniform_vec3_u32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_7([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : UB, offset : u32) -> vec3<u32>
+@internal(intrinsic_load_uniform_vec3_u32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_7(@internal(disable_validation__ignore_constructible_function_parameter) buffer : UB, offset : u32) -> vec3<u32>
 
-[[internal(intrinsic_load_uniform_vec3_f32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_8([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : UB, offset : u32) -> vec3<f32>
+@internal(intrinsic_load_uniform_vec3_f32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_8(@internal(disable_validation__ignore_constructible_function_parameter) buffer : UB, offset : u32) -> vec3<f32>
 
-[[internal(intrinsic_load_uniform_vec4_i32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_9([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : UB, offset : u32) -> vec4<i32>
+@internal(intrinsic_load_uniform_vec4_i32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_9(@internal(disable_validation__ignore_constructible_function_parameter) buffer : UB, offset : u32) -> vec4<i32>
 
-[[internal(intrinsic_load_uniform_vec4_u32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_10([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : UB, offset : u32) -> vec4<u32>
+@internal(intrinsic_load_uniform_vec4_u32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_10(@internal(disable_validation__ignore_constructible_function_parameter) buffer : UB, offset : u32) -> vec4<u32>
 
-[[internal(intrinsic_load_uniform_vec4_f32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_11([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : UB, offset : u32) -> vec4<f32>
+@internal(intrinsic_load_uniform_vec4_f32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_11(@internal(disable_validation__ignore_constructible_function_parameter) buffer : UB, offset : u32) -> vec4<f32>
 
-fn tint_symbol_12([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : UB, offset : u32) -> mat2x2<f32> {
+fn tint_symbol_12(@internal(disable_validation__ignore_constructible_function_parameter) buffer : UB, offset : u32) -> mat2x2<f32> {
   return mat2x2<f32>(tint_symbol_5(buffer, (offset + 0u)), tint_symbol_5(buffer, (offset + 8u)));
 }
 
-fn tint_symbol_13([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : UB, offset : u32) -> mat2x3<f32> {
+fn tint_symbol_13(@internal(disable_validation__ignore_constructible_function_parameter) buffer : UB, offset : u32) -> mat2x3<f32> {
   return mat2x3<f32>(tint_symbol_8(buffer, (offset + 0u)), tint_symbol_8(buffer, (offset + 16u)));
 }
 
-fn tint_symbol_14([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : UB, offset : u32) -> mat2x4<f32> {
+fn tint_symbol_14(@internal(disable_validation__ignore_constructible_function_parameter) buffer : UB, offset : u32) -> mat2x4<f32> {
   return mat2x4<f32>(tint_symbol_11(buffer, (offset + 0u)), tint_symbol_11(buffer, (offset + 16u)));
 }
 
-fn tint_symbol_15([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : UB, offset : u32) -> mat3x2<f32> {
+fn tint_symbol_15(@internal(disable_validation__ignore_constructible_function_parameter) buffer : UB, offset : u32) -> mat3x2<f32> {
   return mat3x2<f32>(tint_symbol_5(buffer, (offset + 0u)), tint_symbol_5(buffer, (offset + 8u)), tint_symbol_5(buffer, (offset + 16u)));
 }
 
-fn tint_symbol_16([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : UB, offset : u32) -> mat3x3<f32> {
+fn tint_symbol_16(@internal(disable_validation__ignore_constructible_function_parameter) buffer : UB, offset : u32) -> mat3x3<f32> {
   return mat3x3<f32>(tint_symbol_8(buffer, (offset + 0u)), tint_symbol_8(buffer, (offset + 16u)), tint_symbol_8(buffer, (offset + 32u)));
 }
 
-fn tint_symbol_17([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : UB, offset : u32) -> mat3x4<f32> {
+fn tint_symbol_17(@internal(disable_validation__ignore_constructible_function_parameter) buffer : UB, offset : u32) -> mat3x4<f32> {
   return mat3x4<f32>(tint_symbol_11(buffer, (offset + 0u)), tint_symbol_11(buffer, (offset + 16u)), tint_symbol_11(buffer, (offset + 32u)));
 }
 
-fn tint_symbol_18([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : UB, offset : u32) -> mat4x2<f32> {
+fn tint_symbol_18(@internal(disable_validation__ignore_constructible_function_parameter) buffer : UB, offset : u32) -> mat4x2<f32> {
   return mat4x2<f32>(tint_symbol_5(buffer, (offset + 0u)), tint_symbol_5(buffer, (offset + 8u)), tint_symbol_5(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 24u)));
 }
 
-fn tint_symbol_19([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : UB, offset : u32) -> mat4x3<f32> {
+fn tint_symbol_19(@internal(disable_validation__ignore_constructible_function_parameter) buffer : UB, offset : u32) -> mat4x3<f32> {
   return mat4x3<f32>(tint_symbol_8(buffer, (offset + 0u)), tint_symbol_8(buffer, (offset + 16u)), tint_symbol_8(buffer, (offset + 32u)), tint_symbol_8(buffer, (offset + 48u)));
 }
 
-fn tint_symbol_20([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : UB, offset : u32) -> mat4x4<f32> {
+fn tint_symbol_20(@internal(disable_validation__ignore_constructible_function_parameter) buffer : UB, offset : u32) -> mat4x4<f32> {
   return mat4x4<f32>(tint_symbol_11(buffer, (offset + 0u)), tint_symbol_11(buffer, (offset + 16u)), tint_symbol_11(buffer, (offset + 32u)), tint_symbol_11(buffer, (offset + 48u)));
 }
 
-fn tint_symbol_21([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : UB, offset : u32) -> array<vec3<f32>, 2u> {
+fn tint_symbol_21(@internal(disable_validation__ignore_constructible_function_parameter) buffer : UB, offset : u32) -> array<vec3<f32>, 2u> {
   var arr : array<vec3<f32>, 2u>;
   for(var i_1 = 0u; (i_1 < 2u); i_1 = (i_1 + 1u)) {
     arr[i_1] = tint_symbol_8(buffer, (offset + (i_1 * 16u)));
@@ -382,7 +382,7 @@
   return arr;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var a : i32 = tint_symbol(ub, 0u);
   var b : u32 = tint_symbol_1(ub, 4u);
@@ -441,9 +441,9 @@
   v : array<vec3<f32>, 2>;
 };
 
-[[group(0), binding(0)]] var<storage, read_write> sb : SB;
+@group(0) @binding(0) var<storage, read_write> sb : SB;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   sb.a = i32();
   sb.b = u32();
@@ -496,106 +496,106 @@
   v : array<vec3<f32>, 2>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> sb : SB;
+@group(0) @binding(0) var<storage, read_write> sb : SB;
 
-[[internal(intrinsic_store_storage_i32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : i32)
+@internal(intrinsic_store_storage_i32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : i32)
 
-[[internal(intrinsic_store_storage_u32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_1([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : u32)
+@internal(intrinsic_store_storage_u32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_1(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : u32)
 
-[[internal(intrinsic_store_storage_f32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_2([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : f32)
+@internal(intrinsic_store_storage_f32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_2(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : f32)
 
-[[internal(intrinsic_store_storage_vec2_i32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_3([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : vec2<i32>)
+@internal(intrinsic_store_storage_vec2_i32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_3(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : vec2<i32>)
 
-[[internal(intrinsic_store_storage_vec2_u32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_4([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : vec2<u32>)
+@internal(intrinsic_store_storage_vec2_u32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_4(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : vec2<u32>)
 
-[[internal(intrinsic_store_storage_vec2_f32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_5([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : vec2<f32>)
+@internal(intrinsic_store_storage_vec2_f32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_5(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : vec2<f32>)
 
-[[internal(intrinsic_store_storage_vec3_i32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_6([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : vec3<i32>)
+@internal(intrinsic_store_storage_vec3_i32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_6(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : vec3<i32>)
 
-[[internal(intrinsic_store_storage_vec3_u32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_7([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : vec3<u32>)
+@internal(intrinsic_store_storage_vec3_u32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_7(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : vec3<u32>)
 
-[[internal(intrinsic_store_storage_vec3_f32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_8([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : vec3<f32>)
+@internal(intrinsic_store_storage_vec3_f32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_8(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : vec3<f32>)
 
-[[internal(intrinsic_store_storage_vec4_i32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_9([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : vec4<i32>)
+@internal(intrinsic_store_storage_vec4_i32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_9(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : vec4<i32>)
 
-[[internal(intrinsic_store_storage_vec4_u32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_10([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : vec4<u32>)
+@internal(intrinsic_store_storage_vec4_u32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_10(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : vec4<u32>)
 
-[[internal(intrinsic_store_storage_vec4_f32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_11([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : vec4<f32>)
+@internal(intrinsic_store_storage_vec4_f32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_11(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : vec4<f32>)
 
-fn tint_symbol_12([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : mat2x2<f32>) {
+fn tint_symbol_12(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : mat2x2<f32>) {
   tint_symbol_5(buffer, (offset + 0u), value[0u]);
   tint_symbol_5(buffer, (offset + 8u), value[1u]);
 }
 
-fn tint_symbol_13([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : mat2x3<f32>) {
+fn tint_symbol_13(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : mat2x3<f32>) {
   tint_symbol_8(buffer, (offset + 0u), value[0u]);
   tint_symbol_8(buffer, (offset + 16u), value[1u]);
 }
 
-fn tint_symbol_14([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : mat2x4<f32>) {
+fn tint_symbol_14(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : mat2x4<f32>) {
   tint_symbol_11(buffer, (offset + 0u), value[0u]);
   tint_symbol_11(buffer, (offset + 16u), value[1u]);
 }
 
-fn tint_symbol_15([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : mat3x2<f32>) {
+fn tint_symbol_15(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : mat3x2<f32>) {
   tint_symbol_5(buffer, (offset + 0u), value[0u]);
   tint_symbol_5(buffer, (offset + 8u), value[1u]);
   tint_symbol_5(buffer, (offset + 16u), value[2u]);
 }
 
-fn tint_symbol_16([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : mat3x3<f32>) {
+fn tint_symbol_16(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : mat3x3<f32>) {
   tint_symbol_8(buffer, (offset + 0u), value[0u]);
   tint_symbol_8(buffer, (offset + 16u), value[1u]);
   tint_symbol_8(buffer, (offset + 32u), value[2u]);
 }
 
-fn tint_symbol_17([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : mat3x4<f32>) {
+fn tint_symbol_17(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : mat3x4<f32>) {
   tint_symbol_11(buffer, (offset + 0u), value[0u]);
   tint_symbol_11(buffer, (offset + 16u), value[1u]);
   tint_symbol_11(buffer, (offset + 32u), value[2u]);
 }
 
-fn tint_symbol_18([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : mat4x2<f32>) {
+fn tint_symbol_18(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : mat4x2<f32>) {
   tint_symbol_5(buffer, (offset + 0u), value[0u]);
   tint_symbol_5(buffer, (offset + 8u), value[1u]);
   tint_symbol_5(buffer, (offset + 16u), value[2u]);
   tint_symbol_5(buffer, (offset + 24u), value[3u]);
 }
 
-fn tint_symbol_19([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : mat4x3<f32>) {
+fn tint_symbol_19(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : mat4x3<f32>) {
   tint_symbol_8(buffer, (offset + 0u), value[0u]);
   tint_symbol_8(buffer, (offset + 16u), value[1u]);
   tint_symbol_8(buffer, (offset + 32u), value[2u]);
   tint_symbol_8(buffer, (offset + 48u), value[3u]);
 }
 
-fn tint_symbol_20([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : mat4x4<f32>) {
+fn tint_symbol_20(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : mat4x4<f32>) {
   tint_symbol_11(buffer, (offset + 0u), value[0u]);
   tint_symbol_11(buffer, (offset + 16u), value[1u]);
   tint_symbol_11(buffer, (offset + 32u), value[2u]);
   tint_symbol_11(buffer, (offset + 48u), value[3u]);
 }
 
-fn tint_symbol_21([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : array<vec3<f32>, 2u>) {
+fn tint_symbol_21(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : array<vec3<f32>, 2u>) {
   var array = value;
   for(var i_1 = 0u; (i_1 < 2u); i_1 = (i_1 + 1u)) {
     tint_symbol_8(buffer, (offset + (i_1 * 16u)), array[i_1]);
   }
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   tint_symbol(sb, 0u, i32());
   tint_symbol_1(sb, 4u, u32());
@@ -654,9 +654,9 @@
   v : array<vec3<f32>, 2>;
 };
 
-[[group(0), binding(0)]] var<storage, read_write> sb : SB;
+@group(0) @binding(0) var<storage, read_write> sb : SB;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var x : SB = sb;
 }
@@ -688,81 +688,81 @@
   v : array<vec3<f32>, 2>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> sb : SB;
+@group(0) @binding(0) var<storage, read_write> sb : SB;
 
-[[internal(intrinsic_load_storage_i32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_1([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> i32
+@internal(intrinsic_load_storage_i32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_1(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> i32
 
-[[internal(intrinsic_load_storage_u32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_2([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> u32
+@internal(intrinsic_load_storage_u32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_2(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> u32
 
-[[internal(intrinsic_load_storage_f32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_3([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> f32
+@internal(intrinsic_load_storage_f32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_3(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> f32
 
-[[internal(intrinsic_load_storage_vec2_i32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_4([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> vec2<i32>
+@internal(intrinsic_load_storage_vec2_i32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_4(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> vec2<i32>
 
-[[internal(intrinsic_load_storage_vec2_u32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_5([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> vec2<u32>
+@internal(intrinsic_load_storage_vec2_u32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_5(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> vec2<u32>
 
-[[internal(intrinsic_load_storage_vec2_f32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_6([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> vec2<f32>
+@internal(intrinsic_load_storage_vec2_f32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_6(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> vec2<f32>
 
-[[internal(intrinsic_load_storage_vec3_i32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_7([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> vec3<i32>
+@internal(intrinsic_load_storage_vec3_i32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_7(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> vec3<i32>
 
-[[internal(intrinsic_load_storage_vec3_u32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_8([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> vec3<u32>
+@internal(intrinsic_load_storage_vec3_u32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_8(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> vec3<u32>
 
-[[internal(intrinsic_load_storage_vec3_f32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_9([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> vec3<f32>
+@internal(intrinsic_load_storage_vec3_f32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_9(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> vec3<f32>
 
-[[internal(intrinsic_load_storage_vec4_i32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_10([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> vec4<i32>
+@internal(intrinsic_load_storage_vec4_i32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_10(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> vec4<i32>
 
-[[internal(intrinsic_load_storage_vec4_u32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_11([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> vec4<u32>
+@internal(intrinsic_load_storage_vec4_u32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_11(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> vec4<u32>
 
-[[internal(intrinsic_load_storage_vec4_f32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_12([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> vec4<f32>
+@internal(intrinsic_load_storage_vec4_f32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_12(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> vec4<f32>
 
-fn tint_symbol_13([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> mat2x2<f32> {
+fn tint_symbol_13(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> mat2x2<f32> {
   return mat2x2<f32>(tint_symbol_6(buffer, (offset + 0u)), tint_symbol_6(buffer, (offset + 8u)));
 }
 
-fn tint_symbol_14([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> mat2x3<f32> {
+fn tint_symbol_14(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> mat2x3<f32> {
   return mat2x3<f32>(tint_symbol_9(buffer, (offset + 0u)), tint_symbol_9(buffer, (offset + 16u)));
 }
 
-fn tint_symbol_15([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> mat2x4<f32> {
+fn tint_symbol_15(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> mat2x4<f32> {
   return mat2x4<f32>(tint_symbol_12(buffer, (offset + 0u)), tint_symbol_12(buffer, (offset + 16u)));
 }
 
-fn tint_symbol_16([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> mat3x2<f32> {
+fn tint_symbol_16(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> mat3x2<f32> {
   return mat3x2<f32>(tint_symbol_6(buffer, (offset + 0u)), tint_symbol_6(buffer, (offset + 8u)), tint_symbol_6(buffer, (offset + 16u)));
 }
 
-fn tint_symbol_17([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> mat3x3<f32> {
+fn tint_symbol_17(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> mat3x3<f32> {
   return mat3x3<f32>(tint_symbol_9(buffer, (offset + 0u)), tint_symbol_9(buffer, (offset + 16u)), tint_symbol_9(buffer, (offset + 32u)));
 }
 
-fn tint_symbol_18([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> mat3x4<f32> {
+fn tint_symbol_18(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> mat3x4<f32> {
   return mat3x4<f32>(tint_symbol_12(buffer, (offset + 0u)), tint_symbol_12(buffer, (offset + 16u)), tint_symbol_12(buffer, (offset + 32u)));
 }
 
-fn tint_symbol_19([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> mat4x2<f32> {
+fn tint_symbol_19(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> mat4x2<f32> {
   return mat4x2<f32>(tint_symbol_6(buffer, (offset + 0u)), tint_symbol_6(buffer, (offset + 8u)), tint_symbol_6(buffer, (offset + 16u)), tint_symbol_6(buffer, (offset + 24u)));
 }
 
-fn tint_symbol_20([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> mat4x3<f32> {
+fn tint_symbol_20(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> mat4x3<f32> {
   return mat4x3<f32>(tint_symbol_9(buffer, (offset + 0u)), tint_symbol_9(buffer, (offset + 16u)), tint_symbol_9(buffer, (offset + 32u)), tint_symbol_9(buffer, (offset + 48u)));
 }
 
-fn tint_symbol_21([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> mat4x4<f32> {
+fn tint_symbol_21(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> mat4x4<f32> {
   return mat4x4<f32>(tint_symbol_12(buffer, (offset + 0u)), tint_symbol_12(buffer, (offset + 16u)), tint_symbol_12(buffer, (offset + 32u)), tint_symbol_12(buffer, (offset + 48u)));
 }
 
-fn tint_symbol_22([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> array<vec3<f32>, 2u> {
+fn tint_symbol_22(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> array<vec3<f32>, 2u> {
   var arr : array<vec3<f32>, 2u>;
   for(var i_1 = 0u; (i_1 < 2u); i_1 = (i_1 + 1u)) {
     arr[i_1] = tint_symbol_9(buffer, (offset + (i_1 * 16u)));
@@ -770,11 +770,11 @@
   return arr;
 }
 
-fn tint_symbol([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> SB {
+fn tint_symbol(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> SB {
   return SB(tint_symbol_1(buffer, (offset + 0u)), tint_symbol_2(buffer, (offset + 4u)), tint_symbol_3(buffer, (offset + 8u)), tint_symbol_4(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 24u)), tint_symbol_6(buffer, (offset + 32u)), tint_symbol_7(buffer, (offset + 48u)), tint_symbol_8(buffer, (offset + 64u)), tint_symbol_9(buffer, (offset + 80u)), tint_symbol_10(buffer, (offset + 96u)), tint_symbol_11(buffer, (offset + 112u)), tint_symbol_12(buffer, (offset + 128u)), tint_symbol_13(buffer, (offset + 144u)), tint_symbol_14(buffer, (offset + 160u)), tint_symbol_15(buffer, (offset + 192u)), tint_symbol_16(buffer, (offset + 224u)), tint_symbol_17(buffer, (offset + 256u)), tint_symbol_18(buffer, (offset + 304u)), tint_symbol_19(buffer, (offset + 352u)), tint_symbol_20(buffer, (offset + 384u)), tint_symbol_21(buffer, (offset + 448u)), tint_symbol_22(buffer, (offset + 512u)));
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var x : SB = tint_symbol(sb, 0u);
 }
@@ -812,9 +812,9 @@
   v : array<vec3<f32>, 2>;
 };
 
-[[group(0), binding(0)]] var<storage, read_write> sb : SB;
+@group(0) @binding(0) var<storage, read_write> sb : SB;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   sb = SB();
 }
@@ -846,106 +846,106 @@
   v : array<vec3<f32>, 2>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> sb : SB;
+@group(0) @binding(0) var<storage, read_write> sb : SB;
 
-[[internal(intrinsic_store_storage_i32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_1([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : i32)
+@internal(intrinsic_store_storage_i32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_1(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : i32)
 
-[[internal(intrinsic_store_storage_u32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_2([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : u32)
+@internal(intrinsic_store_storage_u32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_2(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : u32)
 
-[[internal(intrinsic_store_storage_f32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_3([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : f32)
+@internal(intrinsic_store_storage_f32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_3(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : f32)
 
-[[internal(intrinsic_store_storage_vec2_i32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_4([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : vec2<i32>)
+@internal(intrinsic_store_storage_vec2_i32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_4(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : vec2<i32>)
 
-[[internal(intrinsic_store_storage_vec2_u32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_5([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : vec2<u32>)
+@internal(intrinsic_store_storage_vec2_u32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_5(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : vec2<u32>)
 
-[[internal(intrinsic_store_storage_vec2_f32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_6([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : vec2<f32>)
+@internal(intrinsic_store_storage_vec2_f32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_6(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : vec2<f32>)
 
-[[internal(intrinsic_store_storage_vec3_i32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_7([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : vec3<i32>)
+@internal(intrinsic_store_storage_vec3_i32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_7(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : vec3<i32>)
 
-[[internal(intrinsic_store_storage_vec3_u32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_8([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : vec3<u32>)
+@internal(intrinsic_store_storage_vec3_u32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_8(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : vec3<u32>)
 
-[[internal(intrinsic_store_storage_vec3_f32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_9([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : vec3<f32>)
+@internal(intrinsic_store_storage_vec3_f32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_9(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : vec3<f32>)
 
-[[internal(intrinsic_store_storage_vec4_i32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_10([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : vec4<i32>)
+@internal(intrinsic_store_storage_vec4_i32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_10(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : vec4<i32>)
 
-[[internal(intrinsic_store_storage_vec4_u32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_11([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : vec4<u32>)
+@internal(intrinsic_store_storage_vec4_u32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_11(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : vec4<u32>)
 
-[[internal(intrinsic_store_storage_vec4_f32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_12([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : vec4<f32>)
+@internal(intrinsic_store_storage_vec4_f32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_12(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : vec4<f32>)
 
-fn tint_symbol_13([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : mat2x2<f32>) {
+fn tint_symbol_13(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : mat2x2<f32>) {
   tint_symbol_6(buffer, (offset + 0u), value[0u]);
   tint_symbol_6(buffer, (offset + 8u), value[1u]);
 }
 
-fn tint_symbol_14([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : mat2x3<f32>) {
+fn tint_symbol_14(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : mat2x3<f32>) {
   tint_symbol_9(buffer, (offset + 0u), value[0u]);
   tint_symbol_9(buffer, (offset + 16u), value[1u]);
 }
 
-fn tint_symbol_15([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : mat2x4<f32>) {
+fn tint_symbol_15(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : mat2x4<f32>) {
   tint_symbol_12(buffer, (offset + 0u), value[0u]);
   tint_symbol_12(buffer, (offset + 16u), value[1u]);
 }
 
-fn tint_symbol_16([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : mat3x2<f32>) {
+fn tint_symbol_16(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : mat3x2<f32>) {
   tint_symbol_6(buffer, (offset + 0u), value[0u]);
   tint_symbol_6(buffer, (offset + 8u), value[1u]);
   tint_symbol_6(buffer, (offset + 16u), value[2u]);
 }
 
-fn tint_symbol_17([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : mat3x3<f32>) {
+fn tint_symbol_17(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : mat3x3<f32>) {
   tint_symbol_9(buffer, (offset + 0u), value[0u]);
   tint_symbol_9(buffer, (offset + 16u), value[1u]);
   tint_symbol_9(buffer, (offset + 32u), value[2u]);
 }
 
-fn tint_symbol_18([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : mat3x4<f32>) {
+fn tint_symbol_18(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : mat3x4<f32>) {
   tint_symbol_12(buffer, (offset + 0u), value[0u]);
   tint_symbol_12(buffer, (offset + 16u), value[1u]);
   tint_symbol_12(buffer, (offset + 32u), value[2u]);
 }
 
-fn tint_symbol_19([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : mat4x2<f32>) {
+fn tint_symbol_19(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : mat4x2<f32>) {
   tint_symbol_6(buffer, (offset + 0u), value[0u]);
   tint_symbol_6(buffer, (offset + 8u), value[1u]);
   tint_symbol_6(buffer, (offset + 16u), value[2u]);
   tint_symbol_6(buffer, (offset + 24u), value[3u]);
 }
 
-fn tint_symbol_20([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : mat4x3<f32>) {
+fn tint_symbol_20(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : mat4x3<f32>) {
   tint_symbol_9(buffer, (offset + 0u), value[0u]);
   tint_symbol_9(buffer, (offset + 16u), value[1u]);
   tint_symbol_9(buffer, (offset + 32u), value[2u]);
   tint_symbol_9(buffer, (offset + 48u), value[3u]);
 }
 
-fn tint_symbol_21([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : mat4x4<f32>) {
+fn tint_symbol_21(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : mat4x4<f32>) {
   tint_symbol_12(buffer, (offset + 0u), value[0u]);
   tint_symbol_12(buffer, (offset + 16u), value[1u]);
   tint_symbol_12(buffer, (offset + 32u), value[2u]);
   tint_symbol_12(buffer, (offset + 48u), value[3u]);
 }
 
-fn tint_symbol_22([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : array<vec3<f32>, 2u>) {
+fn tint_symbol_22(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : array<vec3<f32>, 2u>) {
   var array = value;
   for(var i_1 = 0u; (i_1 < 2u); i_1 = (i_1 + 1u)) {
     tint_symbol_9(buffer, (offset + (i_1 * 16u)), array[i_1]);
   }
 }
 
-fn tint_symbol([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, value : SB) {
+fn tint_symbol(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, value : SB) {
   tint_symbol_1(buffer, (offset + 0u), value.a);
   tint_symbol_2(buffer, (offset + 4u), value.b);
   tint_symbol_3(buffer, (offset + 8u), value.c);
@@ -970,7 +970,7 @@
   tint_symbol_22(buffer, (offset + 512u), value.v);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   tint_symbol(sb, 0u, SB());
 }
@@ -991,19 +991,19 @@
 
 struct S2 {
   a : i32;
-  b : [[stride(32)]] array<S1, 3>;
+  b : @stride(32) array<S1, 3>;
   c : i32;
 };
 
 struct SB {
-  [[size(128)]]
+  @size(128)
   a : i32;
-  b : [[stride(256)]] array<S2>;
+  b : @stride(256) array<S2>;
 };
 
-[[group(0), binding(0)]] var<storage, read_write> sb : SB;
+@group(0) @binding(0) var<storage, read_write> sb : SB;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var x : f32 = sb.b[4].b[1].b.z;
 }
@@ -1025,22 +1025,22 @@
 
 struct S2 {
   a : i32;
-  b : [[stride(32)]] array<S1, 3>;
+  b : @stride(32) array<S1, 3>;
   c : i32;
 }
 
 struct SB {
-  [[size(128)]]
+  @size(128)
   a : i32;
-  b : [[stride(256)]] array<S2>;
+  b : @stride(256) array<S2>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> sb : SB;
+@group(0) @binding(0) var<storage, read_write> sb : SB;
 
-[[internal(intrinsic_load_storage_f32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> f32
+@internal(intrinsic_load_storage_f32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> f32
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var x : f32 = tint_symbol(sb, 1224u);
 }
@@ -1061,19 +1061,19 @@
 
 struct S2 {
   a : i32;
-  b : [[stride(32)]] array<S1, 3>;
+  b : @stride(32) array<S1, 3>;
   c : i32;
 };
 
 struct SB {
-  [[size(128)]]
+  @size(128)
   a : i32;
-  b : [[stride(256)]] array<S2>;
+  b : @stride(256) array<S2>;
 };
 
-[[group(0), binding(0)]] var<storage, read_write> sb : SB;
+@group(0) @binding(0) var<storage, read_write> sb : SB;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var i : i32 = 4;
   var j : u32 = 1u;
@@ -1091,22 +1091,22 @@
 
 struct S2 {
   a : i32;
-  b : [[stride(32)]] array<S1, 3>;
+  b : @stride(32) array<S1, 3>;
   c : i32;
 }
 
 struct SB {
-  [[size(128)]]
+  @size(128)
   a : i32;
-  b : [[stride(256)]] array<S2>;
+  b : @stride(256) array<S2>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> sb : SB;
+@group(0) @binding(0) var<storage, read_write> sb : SB;
 
-[[internal(intrinsic_load_storage_f32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> f32
+@internal(intrinsic_load_storage_f32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> f32
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var i : i32 = 4;
   var j : u32 = 1u;
@@ -1130,7 +1130,7 @@
 
 type A1 = S1;
 
-type A1_Array = [[stride(32)]] array<S1, 3>;
+type A1_Array = @stride(32) array<S1, 3>;
 
 struct S2 {
   a : i32;
@@ -1140,17 +1140,17 @@
 
 type A2 = S2;
 
-type A2_Array = [[stride(256)]] array<S2>;
+type A2_Array = @stride(256) array<S2>;
 
 struct SB {
-  [[size(128)]]
+  @size(128)
   a : i32;
   b : A2_Array;
 };
 
-[[group(0), binding(0)]] var<storage, read_write> sb : SB;
+@group(0) @binding(0) var<storage, read_write> sb : SB;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var i : i32 = 4;
   var j : u32 = 1u;
@@ -1168,7 +1168,7 @@
 
 type A1 = S1;
 
-type A1_Array = [[stride(32)]] array<S1, 3>;
+type A1_Array = @stride(32) array<S1, 3>;
 
 struct S2 {
   a : i32;
@@ -1178,20 +1178,20 @@
 
 type A2 = S2;
 
-type A2_Array = [[stride(256)]] array<S2>;
+type A2_Array = @stride(256) array<S2>;
 
 struct SB {
-  [[size(128)]]
+  @size(128)
   a : i32;
   b : A2_Array;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> sb : SB;
+@group(0) @binding(0) var<storage, read_write> sb : SB;
 
-[[internal(intrinsic_load_storage_f32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> f32
+@internal(intrinsic_load_storage_f32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> f32
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var i : i32 = 4;
   var j : u32 = 1u;
@@ -1213,9 +1213,9 @@
   b : atomic<u32>;
 };
 
-[[group(0), binding(0)]] var<storage, read_write> sb : SB;
+@group(0) @binding(0) var<storage, read_write> sb : SB;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   atomicStore(&sb.a, 123);
   atomicLoad(&sb.a);
@@ -1250,75 +1250,75 @@
   b : atomic<u32>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> sb : SB;
+@group(0) @binding(0) var<storage, read_write> sb : SB;
 
-[[internal(intrinsic_atomic_store_storage_i32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, param_1 : i32)
+@internal(intrinsic_atomic_store_storage_i32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32)
 
-[[internal(intrinsic_atomic_load_storage_i32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_1([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> i32
+@internal(intrinsic_atomic_load_storage_i32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_1(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> i32
 
-[[internal(intrinsic_atomic_add_storage_i32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_2([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, param_1 : i32) -> i32
+@internal(intrinsic_atomic_add_storage_i32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_2(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32) -> i32
 
-[[internal(intrinsic_atomic_sub_storage_i32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_3([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, param_1 : i32) -> i32
+@internal(intrinsic_atomic_sub_storage_i32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_3(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32) -> i32
 
-[[internal(intrinsic_atomic_max_storage_i32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_4([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, param_1 : i32) -> i32
+@internal(intrinsic_atomic_max_storage_i32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_4(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32) -> i32
 
-[[internal(intrinsic_atomic_min_storage_i32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_5([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, param_1 : i32) -> i32
+@internal(intrinsic_atomic_min_storage_i32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_5(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32) -> i32
 
-[[internal(intrinsic_atomic_and_storage_i32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_6([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, param_1 : i32) -> i32
+@internal(intrinsic_atomic_and_storage_i32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_6(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32) -> i32
 
-[[internal(intrinsic_atomic_or_storage_i32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_7([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, param_1 : i32) -> i32
+@internal(intrinsic_atomic_or_storage_i32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_7(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32) -> i32
 
-[[internal(intrinsic_atomic_xor_storage_i32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_8([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, param_1 : i32) -> i32
+@internal(intrinsic_atomic_xor_storage_i32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_8(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32) -> i32
 
-[[internal(intrinsic_atomic_exchange_storage_i32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_9([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, param_1 : i32) -> i32
+@internal(intrinsic_atomic_exchange_storage_i32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_9(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32) -> i32
 
-[[internal(intrinsic_atomic_compare_exchange_weak_storage_i32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_10([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, param_1 : i32, param_2 : i32) -> vec2<i32>
+@internal(intrinsic_atomic_compare_exchange_weak_storage_i32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_10(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32, param_2 : i32) -> vec2<i32>
 
-[[internal(intrinsic_atomic_store_storage_u32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_11([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, param_1 : u32)
+@internal(intrinsic_atomic_store_storage_u32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_11(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32)
 
-[[internal(intrinsic_atomic_load_storage_u32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_12([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32) -> u32
+@internal(intrinsic_atomic_load_storage_u32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_12(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> u32
 
-[[internal(intrinsic_atomic_add_storage_u32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_13([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, param_1 : u32) -> u32
+@internal(intrinsic_atomic_add_storage_u32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_13(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32) -> u32
 
-[[internal(intrinsic_atomic_sub_storage_u32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_14([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, param_1 : u32) -> u32
+@internal(intrinsic_atomic_sub_storage_u32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_14(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32) -> u32
 
-[[internal(intrinsic_atomic_max_storage_u32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_15([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, param_1 : u32) -> u32
+@internal(intrinsic_atomic_max_storage_u32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_15(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32) -> u32
 
-[[internal(intrinsic_atomic_min_storage_u32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_16([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, param_1 : u32) -> u32
+@internal(intrinsic_atomic_min_storage_u32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_16(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32) -> u32
 
-[[internal(intrinsic_atomic_and_storage_u32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_17([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, param_1 : u32) -> u32
+@internal(intrinsic_atomic_and_storage_u32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_17(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32) -> u32
 
-[[internal(intrinsic_atomic_or_storage_u32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_18([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, param_1 : u32) -> u32
+@internal(intrinsic_atomic_or_storage_u32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_18(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32) -> u32
 
-[[internal(intrinsic_atomic_xor_storage_u32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_19([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, param_1 : u32) -> u32
+@internal(intrinsic_atomic_xor_storage_u32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_19(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32) -> u32
 
-[[internal(intrinsic_atomic_exchange_storage_u32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_20([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, param_1 : u32) -> u32
+@internal(intrinsic_atomic_exchange_storage_u32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_20(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32) -> u32
 
-[[internal(intrinsic_atomic_compare_exchange_weak_storage_u32), internal(disable_validation__function_has_no_body)]]
-fn tint_symbol_21([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB, offset : u32, param_1 : u32, param_2 : u32) -> vec2<u32>
+@internal(intrinsic_atomic_compare_exchange_weak_storage_u32) @internal(disable_validation__function_has_no_body)
+fn tint_symbol_21(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32, param_2 : u32) -> vec2<u32>
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   tint_symbol(sb, 16u, 123);
   tint_symbol_1(sb, 16u);
@@ -1360,7 +1360,7 @@
 
 var<workgroup> w : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   atomicStore(&(w.a), 123);
   atomicLoad(&(w.a));
diff --git a/src/transform/decompose_strided_matrix_test.cc b/src/transform/decompose_strided_matrix_test.cc
index db31c62..8561ccf 100644
--- a/src/transform/decompose_strided_matrix_test.cc
+++ b/src/transform/decompose_strided_matrix_test.cc
@@ -52,13 +52,13 @@
 
 TEST_F(DecomposeStridedMatrixTest, ReadUniformMatrix) {
   // struct S {
-  //   [[offset(16), stride(32)]]
-  //   [[internal(ignore_stride_decoration)]]
+  //   @offset(16) @stride(32)
+  //   @internal(ignore_stride_decoration)
   //   m : mat2x2<f32>;
   // };
-  // [[group(0), binding(0)]] var<uniform> s : S;
+  // @group(0) @binding(0) var<uniform> s : S;
   //
-  // [[stage(compute), workgroup_size(1)]]
+  // @stage(compute) @workgroup_size(1)
   // fn f() {
   //   let x : mat2x2<f32> = s.m;
   // }
@@ -88,18 +88,18 @@
 
   auto* expect = R"(
 struct S {
-  [[size(16)]]
+  @size(16)
   padding : u32;
-  m : [[stride(32)]] array<vec2<f32>, 2u>;
+  m : @stride(32) array<vec2<f32>, 2u>;
 }
 
-[[group(0), binding(0)]] var<uniform> s : S;
+@group(0) @binding(0) var<uniform> s : S;
 
-fn arr_to_mat2x2_stride_32(arr : [[stride(32)]] array<vec2<f32>, 2u>) -> mat2x2<f32> {
+fn arr_to_mat2x2_stride_32(arr : @stride(32) array<vec2<f32>, 2u>) -> mat2x2<f32> {
   return mat2x2<f32>(arr[0u], arr[1u]);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let x : mat2x2<f32> = arr_to_mat2x2_stride_32(s.m);
 }
@@ -113,13 +113,13 @@
 
 TEST_F(DecomposeStridedMatrixTest, ReadUniformColumn) {
   // struct S {
-  //   [[offset(16), stride(32)]]
-  //   [[internal(ignore_stride_decoration)]]
+  //   @offset(16) @stride(32)
+  //   @internal(ignore_stride_decoration)
   //   m : mat2x2<f32>;
   // };
-  // [[group(0), binding(0)]] var<uniform> s : S;
+  // @group(0) @binding(0) var<uniform> s : S;
   //
-  // [[stage(compute), workgroup_size(1)]]
+  // @stage(compute) @workgroup_size(1)
   // fn f() {
   //   let x : vec2<f32> = s.m[1];
   // }
@@ -149,14 +149,14 @@
 
   auto* expect = R"(
 struct S {
-  [[size(16)]]
+  @size(16)
   padding : u32;
-  m : [[stride(32)]] array<vec2<f32>, 2u>;
+  m : @stride(32) array<vec2<f32>, 2u>;
 }
 
-[[group(0), binding(0)]] var<uniform> s : S;
+@group(0) @binding(0) var<uniform> s : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let x : vec2<f32> = s.m[1];
 }
@@ -170,13 +170,13 @@
 
 TEST_F(DecomposeStridedMatrixTest, ReadUniformMatrix_DefaultStride) {
   // struct S {
-  //   [[offset(16), stride(8)]]
-  //   [[internal(ignore_stride_decoration)]]
+  //   @offset(16) @stride(8)
+  //   @internal(ignore_stride_decoration)
   //   m : mat2x2<f32>;
   // };
-  // [[group(0), binding(0)]] var<uniform> s : S;
+  // @group(0) @binding(0) var<uniform> s : S;
   //
-  // [[stage(compute), workgroup_size(1)]]
+  // @stage(compute) @workgroup_size(1)
   // fn f() {
   //   let x : mat2x2<f32> = s.m;
   // }
@@ -206,15 +206,15 @@
 
   auto* expect = R"(
 struct S {
-  [[size(16)]]
+  @size(16)
   padding : u32;
-  [[stride(8), internal(disable_validation__ignore_stride)]]
+  @stride(8) @internal(disable_validation__ignore_stride)
   m : mat2x2<f32>;
 }
 
-[[group(0), binding(0)]] var<uniform> s : S;
+@group(0) @binding(0) var<uniform> s : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let x : mat2x2<f32> = s.m;
 }
@@ -228,13 +228,13 @@
 
 TEST_F(DecomposeStridedMatrixTest, ReadStorageMatrix) {
   // struct S {
-  //   [[offset(8), stride(32)]]
-  //   [[internal(ignore_stride_decoration)]]
+  //   @offset(8) @stride(32)
+  //   @internal(ignore_stride_decoration)
   //   m : mat2x2<f32>;
   // };
-  // [[group(0), binding(0)]] var<storage, read_write> s : S;
+  // @group(0) @binding(0) var<storage, read_write> s : S;
   //
-  // [[stage(compute), workgroup_size(1)]]
+  // @stage(compute) @workgroup_size(1)
   // fn f() {
   //   let x : mat2x2<f32> = s.m;
   // }
@@ -264,18 +264,18 @@
 
   auto* expect = R"(
 struct S {
-  [[size(8)]]
+  @size(8)
   padding : u32;
-  m : [[stride(32)]] array<vec2<f32>, 2u>;
+  m : @stride(32) array<vec2<f32>, 2u>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> s : S;
+@group(0) @binding(0) var<storage, read_write> s : S;
 
-fn arr_to_mat2x2_stride_32(arr : [[stride(32)]] array<vec2<f32>, 2u>) -> mat2x2<f32> {
+fn arr_to_mat2x2_stride_32(arr : @stride(32) array<vec2<f32>, 2u>) -> mat2x2<f32> {
   return mat2x2<f32>(arr[0u], arr[1u]);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let x : mat2x2<f32> = arr_to_mat2x2_stride_32(s.m);
 }
@@ -289,13 +289,13 @@
 
 TEST_F(DecomposeStridedMatrixTest, ReadStorageColumn) {
   // struct S {
-  //   [[offset(16), stride(32)]]
-  //   [[internal(ignore_stride_decoration)]]
+  //   @offset(16) @stride(32)
+  //   @internal(ignore_stride_decoration)
   //   m : mat2x2<f32>;
   // };
-  // [[group(0), binding(0)]] var<storage, read_write> s : S;
+  // @group(0) @binding(0) var<storage, read_write> s : S;
   //
-  // [[stage(compute), workgroup_size(1)]]
+  // @stage(compute) @workgroup_size(1)
   // fn f() {
   //   let x : vec2<f32> = s.m[1];
   // }
@@ -325,14 +325,14 @@
 
   auto* expect = R"(
 struct S {
-  [[size(16)]]
+  @size(16)
   padding : u32;
-  m : [[stride(32)]] array<vec2<f32>, 2u>;
+  m : @stride(32) array<vec2<f32>, 2u>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> s : S;
+@group(0) @binding(0) var<storage, read_write> s : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let x : vec2<f32> = s.m[1];
 }
@@ -346,13 +346,13 @@
 
 TEST_F(DecomposeStridedMatrixTest, WriteStorageMatrix) {
   // struct S {
-  //   [[offset(8), stride(32)]]
-  //   [[internal(ignore_stride_decoration)]]
+  //   @offset(8) @stride(32)
+  //   @internal(ignore_stride_decoration)
   //   m : mat2x2<f32>;
   // };
-  // [[group(0), binding(0)]] var<storage, read_write> s : S;
+  // @group(0) @binding(0) var<storage, read_write> s : S;
   //
-  // [[stage(compute), workgroup_size(1)]]
+  // @stage(compute) @workgroup_size(1)
   // fn f() {
   //   s.m = mat2x2<f32>(vec2<f32>(1.0, 2.0), vec2<f32>(3.0, 4.0));
   // }
@@ -383,18 +383,18 @@
 
   auto* expect = R"(
 struct S {
-  [[size(8)]]
+  @size(8)
   padding : u32;
-  m : [[stride(32)]] array<vec2<f32>, 2u>;
+  m : @stride(32) array<vec2<f32>, 2u>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> s : S;
+@group(0) @binding(0) var<storage, read_write> s : S;
 
-fn mat2x2_stride_32_to_arr(mat : mat2x2<f32>) -> [[stride(32)]] array<vec2<f32>, 2u> {
-  return [[stride(32)]] array<vec2<f32>, 2u>(mat[0u], mat[1u]);
+fn mat2x2_stride_32_to_arr(mat : mat2x2<f32>) -> @stride(32) array<vec2<f32>, 2u> {
+  return @stride(32) array<vec2<f32>, 2u>(mat[0u], mat[1u]);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   s.m = mat2x2_stride_32_to_arr(mat2x2<f32>(vec2<f32>(1.0, 2.0), vec2<f32>(3.0, 4.0)));
 }
@@ -408,13 +408,13 @@
 
 TEST_F(DecomposeStridedMatrixTest, WriteStorageColumn) {
   // struct S {
-  //   [[offset(8), stride(32)]]
-  //   [[internal(ignore_stride_decoration)]]
+  //   @offset(8) @stride(32)
+  //   @internal(ignore_stride_decoration)
   //   m : mat2x2<f32>;
   // };
-  // [[group(0), binding(0)]] var<storage, read_write> s : S;
+  // @group(0) @binding(0) var<storage, read_write> s : S;
   //
-  // [[stage(compute), workgroup_size(1)]]
+  // @stage(compute) @workgroup_size(1)
   // fn f() {
   //   s.m[1] = vec2<f32>(1.0, 2.0);
   // }
@@ -444,14 +444,14 @@
 
   auto* expect = R"(
 struct S {
-  [[size(8)]]
+  @size(8)
   padding : u32;
-  m : [[stride(32)]] array<vec2<f32>, 2u>;
+  m : @stride(32) array<vec2<f32>, 2u>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> s : S;
+@group(0) @binding(0) var<storage, read_write> s : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   s.m[1] = vec2<f32>(1.0, 2.0);
 }
@@ -465,13 +465,13 @@
 
 TEST_F(DecomposeStridedMatrixTest, ReadWriteViaPointerLets) {
   // struct S {
-  //   [[offset(8), stride(32)]]
-  //   [[internal(ignore_stride_decoration)]]
+  //   @offset(8) @stride(32)
+  //   @internal(ignore_stride_decoration)
   //   m : mat2x2<f32>;
   // };
-  // [[group(0), binding(0)]] var<storage, read_write> s : S;
+  // @group(0) @binding(0) var<storage, read_write> s : S;
   //
-  // [[stage(compute), workgroup_size(1)]]
+  // @stage(compute) @workgroup_size(1)
   // fn f() {
   //   let a = &s.m;
   //   let b = &*&*(a);
@@ -516,22 +516,22 @@
 
   auto* expect = R"(
 struct S {
-  [[size(8)]]
+  @size(8)
   padding : u32;
-  m : [[stride(32)]] array<vec2<f32>, 2u>;
+  m : @stride(32) array<vec2<f32>, 2u>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> s : S;
+@group(0) @binding(0) var<storage, read_write> s : S;
 
-fn arr_to_mat2x2_stride_32(arr : [[stride(32)]] array<vec2<f32>, 2u>) -> mat2x2<f32> {
+fn arr_to_mat2x2_stride_32(arr : @stride(32) array<vec2<f32>, 2u>) -> mat2x2<f32> {
   return mat2x2<f32>(arr[0u], arr[1u]);
 }
 
-fn mat2x2_stride_32_to_arr(mat : mat2x2<f32>) -> [[stride(32)]] array<vec2<f32>, 2u> {
-  return [[stride(32)]] array<vec2<f32>, 2u>(mat[0u], mat[1u]);
+fn mat2x2_stride_32_to_arr(mat : mat2x2<f32>) -> @stride(32) array<vec2<f32>, 2u> {
+  return @stride(32) array<vec2<f32>, 2u>(mat[0u], mat[1u]);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let x = arr_to_mat2x2_stride_32(s.m);
   let y = s.m[1];
@@ -549,13 +549,13 @@
 
 TEST_F(DecomposeStridedMatrixTest, ReadPrivateMatrix) {
   // struct S {
-  //   [[offset(8), stride(32)]]
-  //   [[internal(ignore_stride_decoration)]]
+  //   @offset(8) @stride(32)
+  //   @internal(ignore_stride_decoration)
   //   m : mat2x2<f32>;
   // };
   // var<private> s : S;
   //
-  // [[stage(compute), workgroup_size(1)]]
+  // @stage(compute) @workgroup_size(1)
   // fn f() {
   //   let x : mat2x2<f32> = s.m;
   // }
@@ -584,15 +584,15 @@
 
   auto* expect = R"(
 struct S {
-  [[size(8)]]
+  @size(8)
   padding : u32;
-  [[stride(32), internal(disable_validation__ignore_stride)]]
+  @stride(32) @internal(disable_validation__ignore_stride)
   m : mat2x2<f32>;
 }
 
 var<private> s : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let x : mat2x2<f32> = s.m;
 }
@@ -606,13 +606,13 @@
 
 TEST_F(DecomposeStridedMatrixTest, WritePrivateMatrix) {
   // struct S {
-  //   [[offset(8), stride(32)]]
-  //   [[internal(ignore_stride_decoration)]]
+  //   @offset(8) @stride(32)
+  //   @internal(ignore_stride_decoration)
   //   m : mat2x2<f32>;
   // };
   // var<private> s : S;
   //
-  // [[stage(compute), workgroup_size(1)]]
+  // @stage(compute) @workgroup_size(1)
   // fn f() {
   //   s.m = mat2x2<f32>(vec2<f32>(1.0, 2.0), vec2<f32>(3.0, 4.0));
   // }
@@ -642,15 +642,15 @@
 
   auto* expect = R"(
 struct S {
-  [[size(8)]]
+  @size(8)
   padding : u32;
-  [[stride(32), internal(disable_validation__ignore_stride)]]
+  @stride(32) @internal(disable_validation__ignore_stride)
   m : mat2x2<f32>;
 }
 
 var<private> s : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   s.m = mat2x2<f32>(vec2<f32>(1.0, 2.0), vec2<f32>(3.0, 4.0));
 }
diff --git a/src/transform/external_texture_transform_test.cc b/src/transform/external_texture_transform_test.cc
index d9fef8f..28baadf 100644
--- a/src/transform/external_texture_transform_test.cc
+++ b/src/transform/external_texture_transform_test.cc
@@ -24,23 +24,23 @@
 
 TEST_F(ExternalTextureTransformTest, SampleLevelSinglePlane) {
   auto* src = R"(
-[[group(0), binding(0)]] var s : sampler;
+@group(0) @binding(0) var s : sampler;
 
-[[group(0), binding(1)]] var t : texture_external;
+@group(0) @binding(1) var t : texture_external;
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] coord : vec4<f32>) -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
   return textureSampleLevel(t, s, (coord.xy / vec2<f32>(4.0, 4.0)));
 }
 )";
 
   auto* expect = R"(
-[[group(0), binding(0)]] var s : sampler;
+@group(0) @binding(0) var s : sampler;
 
-[[group(0), binding(1)]] var t : texture_2d<f32>;
+@group(0) @binding(1) var t : texture_2d<f32>;
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] coord : vec4<f32>) -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
   return textureSampleLevel(t, s, (coord.xy / vec2<f32>(4.0, 4.0)), 0.0);
 }
 )";
@@ -52,19 +52,19 @@
 
 TEST_F(ExternalTextureTransformTest, LoadSinglePlane) {
   auto* src = R"(
-[[group(0), binding(0)]] var t : texture_external;
+@group(0) @binding(0) var t : texture_external;
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] coord : vec4<f32>) -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
   return textureLoad(t, vec2<i32>(1, 1));
 }
 )";
 
   auto* expect = R"(
-[[group(0), binding(0)]] var t : texture_2d<f32>;
+@group(0) @binding(0) var t : texture_2d<f32>;
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] coord : vec4<f32>) -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
   return textureLoad(t, vec2<i32>(1, 1), 0);
 }
 )";
@@ -76,10 +76,10 @@
 
 TEST_F(ExternalTextureTransformTest, DimensionsSinglePlane) {
   auto* src = R"(
-[[group(0), binding(0)]] var t : texture_external;
+@group(0) @binding(0) var t : texture_external;
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] coord : vec4<f32>) -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
   var dim : vec2<i32>;
   dim = textureDimensions(t);
   return vec4<f32>(0.0, 0.0, 0.0, 0.0);
@@ -87,10 +87,10 @@
 )";
 
   auto* expect = R"(
-[[group(0), binding(0)]] var t : texture_2d<f32>;
+@group(0) @binding(0) var t : texture_2d<f32>;
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] coord : vec4<f32>) -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
   var dim : vec2<i32>;
   dim = textureDimensions(t);
   return vec4<f32>(0.0, 0.0, 0.0, 0.0);
diff --git a/src/transform/first_index_offset.h b/src/transform/first_index_offset.h
index ffbb138..a885581 100644
--- a/src/transform/first_index_offset.h
+++ b/src/transform/first_index_offset.h
@@ -35,24 +35,28 @@
 /// Therefore, these values must by passed to the shader.
 ///
 /// Before:
-///   [[builtin(vertex_index)]] var<in> vert_idx : u32;
+/// ```
+///   @builtin(vertex_index) var<in> vert_idx : u32;
 ///   fn func() -> u32 {
 ///     return vert_idx;
 ///   }
+/// ```
 ///
 /// After:
+/// ```
 ///   struct TintFirstIndexOffsetData {
 ///     tint_first_vertex_index : u32;
 ///     tint_first_instance_index : u32;
 ///   };
-///   [[builtin(vertex_index)]] var<in> tint_first_index_offset_vert_idx : u32;
-///   [[binding(N), group(M)]] var<uniform> tint_first_index_data :
+///   @builtin(vertex_index) var<in> tint_first_index_offset_vert_idx : u32;
+///   @binding(N) @group(M) var<uniform> tint_first_index_data :
 ///                                                    TintFirstIndexOffsetData;
 ///   fn func() -> u32 {
 ///     const vert_idx = (tint_first_index_offset_vert_idx +
 ///                       tint_first_index_data.tint_first_vertex_index);
 ///     return vert_idx;
 ///   }
+/// ```
 ///
 class FirstIndexOffset : public Castable<FirstIndexOffset, Transform> {
  public:
@@ -71,9 +75,9 @@
     /// Destructor
     ~BindingPoint() override;
 
-    /// [[binding()]] for the first vertex / first instance uniform buffer
+    /// `@binding()` for the first vertex / first instance uniform buffer
     uint32_t binding = 0;
-    /// [[group()]] for the first vertex / first instance uniform buffer
+    /// `@group()` for the first vertex / first instance uniform buffer
     uint32_t group = 0;
   };
 
diff --git a/src/transform/first_index_offset_test.cc b/src/transform/first_index_offset_test.cc
index 6368d29..c0c95f6 100644
--- a/src/transform/first_index_offset_test.cc
+++ b/src/transform/first_index_offset_test.cc
@@ -51,8 +51,8 @@
   return vert_idx;
 }
 
-[[stage(vertex)]]
-fn entry([[builtin(vertex_index)]] vert_idx : u32) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn entry(@builtin(vertex_index) vert_idx : u32) -> @builtin(position) vec4<f32> {
   test(vert_idx);
   return vec4<f32>();
 }
@@ -63,14 +63,14 @@
   first_vertex_index : u32;
 }
 
-[[binding(1), group(2)]] var<uniform> tint_symbol_1 : tint_symbol;
+@binding(1) @group(2) var<uniform> tint_symbol_1 : tint_symbol;
 
 fn test(vert_idx : u32) -> u32 {
   return vert_idx;
 }
 
-[[stage(vertex)]]
-fn entry([[builtin(vertex_index)]] vert_idx : u32) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn entry(@builtin(vertex_index) vert_idx : u32) -> @builtin(position) vec4<f32> {
   test((vert_idx + tint_symbol_1.first_vertex_index));
   return vec4<f32>();
 }
@@ -97,8 +97,8 @@
   return inst_idx;
 }
 
-[[stage(vertex)]]
-fn entry([[builtin(instance_index)]] inst_idx : u32) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn entry(@builtin(instance_index) inst_idx : u32) -> @builtin(position) vec4<f32> {
   test(inst_idx);
   return vec4<f32>();
 }
@@ -109,14 +109,14 @@
   first_instance_index : u32;
 }
 
-[[binding(1), group(7)]] var<uniform> tint_symbol_1 : tint_symbol;
+@binding(1) @group(7) var<uniform> tint_symbol_1 : tint_symbol;
 
 fn test(inst_idx : u32) -> u32 {
   return inst_idx;
 }
 
-[[stage(vertex)]]
-fn entry([[builtin(instance_index)]] inst_idx : u32) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn entry(@builtin(instance_index) inst_idx : u32) -> @builtin(position) vec4<f32> {
   test((inst_idx + tint_symbol_1.first_instance_index));
   return vec4<f32>();
 }
@@ -144,12 +144,12 @@
 }
 
 struct Inputs {
-  [[builtin(instance_index)]] instance_idx : u32;
-  [[builtin(vertex_index)]] vert_idx : u32;
+  @builtin(instance_index) instance_idx : u32;
+  @builtin(vertex_index) vert_idx : u32;
 };
 
-[[stage(vertex)]]
-fn entry(inputs : Inputs) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn entry(inputs : Inputs) -> @builtin(position) vec4<f32> {
   test(inputs.instance_idx, inputs.vert_idx);
   return vec4<f32>();
 }
@@ -161,21 +161,21 @@
   first_instance_index : u32;
 }
 
-[[binding(1), group(2)]] var<uniform> tint_symbol_1 : tint_symbol;
+@binding(1) @group(2) var<uniform> tint_symbol_1 : tint_symbol;
 
 fn test(instance_idx : u32, vert_idx : u32) -> u32 {
   return (instance_idx + vert_idx);
 }
 
 struct Inputs {
-  [[builtin(instance_index)]]
+  @builtin(instance_index)
   instance_idx : u32;
-  [[builtin(vertex_index)]]
+  @builtin(vertex_index)
   vert_idx : u32;
 }
 
-[[stage(vertex)]]
-fn entry(inputs : Inputs) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn entry(inputs : Inputs) -> @builtin(position) vec4<f32> {
   test((inputs.instance_idx + tint_symbol_1.first_instance_index), (inputs.vert_idx + tint_symbol_1.first_vertex_index));
   return vec4<f32>();
 }
@@ -206,8 +206,8 @@
   return func1(vert_idx);
 }
 
-[[stage(vertex)]]
-fn entry([[builtin(vertex_index)]] vert_idx : u32) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn entry(@builtin(vertex_index) vert_idx : u32) -> @builtin(position) vec4<f32> {
   func2(vert_idx);
   return vec4<f32>();
 }
@@ -218,7 +218,7 @@
   first_vertex_index : u32;
 }
 
-[[binding(1), group(2)]] var<uniform> tint_symbol_1 : tint_symbol;
+@binding(1) @group(2) var<uniform> tint_symbol_1 : tint_symbol;
 
 fn func1(vert_idx : u32) -> u32 {
   return vert_idx;
@@ -228,8 +228,8 @@
   return func1(vert_idx);
 }
 
-[[stage(vertex)]]
-fn entry([[builtin(vertex_index)]] vert_idx : u32) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn entry(@builtin(vertex_index) vert_idx : u32) -> @builtin(position) vec4<f32> {
   func2((vert_idx + tint_symbol_1.first_vertex_index));
   return vec4<f32>();
 }
@@ -256,20 +256,20 @@
   return i;
 }
 
-[[stage(vertex)]]
-fn entry_a([[builtin(vertex_index)]] vert_idx : u32) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn entry_a(@builtin(vertex_index) vert_idx : u32) -> @builtin(position) vec4<f32> {
   func(vert_idx);
   return vec4<f32>();
 }
 
-[[stage(vertex)]]
-fn entry_b([[builtin(vertex_index)]] vert_idx : u32, [[builtin(instance_index)]] inst_idx : u32) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn entry_b(@builtin(vertex_index) vert_idx : u32, @builtin(instance_index) inst_idx : u32) -> @builtin(position) vec4<f32> {
   func(vert_idx + inst_idx);
   return vec4<f32>();
 }
 
-[[stage(vertex)]]
-fn entry_c([[builtin(instance_index)]] inst_idx : u32) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn entry_c(@builtin(instance_index) inst_idx : u32) -> @builtin(position) vec4<f32> {
   func(inst_idx);
   return vec4<f32>();
 }
@@ -281,26 +281,26 @@
   first_instance_index : u32;
 }
 
-[[binding(1), group(2)]] var<uniform> tint_symbol_1 : tint_symbol;
+@binding(1) @group(2) var<uniform> tint_symbol_1 : tint_symbol;
 
 fn func(i : u32) -> u32 {
   return i;
 }
 
-[[stage(vertex)]]
-fn entry_a([[builtin(vertex_index)]] vert_idx : u32) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn entry_a(@builtin(vertex_index) vert_idx : u32) -> @builtin(position) vec4<f32> {
   func((vert_idx + tint_symbol_1.first_vertex_index));
   return vec4<f32>();
 }
 
-[[stage(vertex)]]
-fn entry_b([[builtin(vertex_index)]] vert_idx : u32, [[builtin(instance_index)]] inst_idx : u32) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn entry_b(@builtin(vertex_index) vert_idx : u32, @builtin(instance_index) inst_idx : u32) -> @builtin(position) vec4<f32> {
   func(((vert_idx + tint_symbol_1.first_vertex_index) + (inst_idx + tint_symbol_1.first_instance_index)));
   return vec4<f32>();
 }
 
-[[stage(vertex)]]
-fn entry_c([[builtin(instance_index)]] inst_idx : u32) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn entry_c(@builtin(instance_index) inst_idx : u32) -> @builtin(position) vec4<f32> {
   func((inst_idx + tint_symbol_1.first_instance_index));
   return vec4<f32>();
 }
diff --git a/src/transform/glsl_test.cc b/src/transform/glsl_test.cc
index b280e33..49b0dfd 100644
--- a/src/transform/glsl_test.cc
+++ b/src/transform/glsl_test.cc
@@ -26,7 +26,7 @@
   auto* src = R"()";
 
   auto* expect = R"(
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn unused_entry_point() {
 }
 )";
diff --git a/src/transform/localize_struct_array_assignment_test.cc b/src/transform/localize_struct_array_assignment_test.cc
index 2b3b0c9..878a89c 100644
--- a/src/transform/localize_struct_array_assignment_test.cc
+++ b/src/transform/localize_struct_array_assignment_test.cc
@@ -44,7 +44,7 @@
 
 TEST_F(LocalizeStructArrayAssignmentTest, StructArray) {
   auto* src = R"(
-[[block]] struct Uniforms {
+@block struct Uniforms {
   i : u32;
 };
 
@@ -56,9 +56,9 @@
   a1 : array<InnerS, 8>;
 };
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
@@ -67,7 +67,7 @@
 )";
 
   auto* expect = R"(
-[[block]]
+@block
 struct Uniforms {
   i : u32;
 }
@@ -80,9 +80,9 @@
   a1 : array<InnerS, 8>;
 }
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
@@ -102,7 +102,7 @@
 
 TEST_F(LocalizeStructArrayAssignmentTest, StructStructArray) {
   auto* src = R"(
-[[block]] struct Uniforms {
+@block struct Uniforms {
   i : u32;
 };
 
@@ -118,9 +118,9 @@
   s2 : S1;
 };
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
@@ -129,7 +129,7 @@
 )";
 
   auto* expect = R"(
-[[block]]
+@block
 struct Uniforms {
   i : u32;
 }
@@ -146,9 +146,9 @@
   s2 : S1;
 }
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
@@ -168,7 +168,7 @@
 
 TEST_F(LocalizeStructArrayAssignmentTest, StructArrayArray) {
   auto* src = R"(
-[[block]] struct Uniforms {
+@block struct Uniforms {
   i : u32;
   j : u32;
 };
@@ -181,9 +181,9 @@
   a1 : array<array<InnerS, 8>, 8>;
 };
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
@@ -192,7 +192,7 @@
 )";
 
   auto* expect = R"(
-[[block]]
+@block
 struct Uniforms {
   i : u32;
   j : u32;
@@ -206,9 +206,9 @@
   a1 : array<array<InnerS, 8>, 8>;
 }
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
@@ -228,7 +228,7 @@
 
 TEST_F(LocalizeStructArrayAssignmentTest, StructArrayStruct) {
   auto* src = R"(
-[[block]] struct Uniforms {
+@block struct Uniforms {
   i : u32;
 };
 
@@ -244,9 +244,9 @@
   a1 : array<S1, 8>;
 };
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
@@ -255,7 +255,7 @@
 )";
 
   auto* expect = R"(
-[[block]]
+@block
 struct Uniforms {
   i : u32;
 }
@@ -272,9 +272,9 @@
   a1 : array<S1, 8>;
 }
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
@@ -294,7 +294,7 @@
 
 TEST_F(LocalizeStructArrayAssignmentTest, StructArrayStructArray) {
   auto* src = R"(
-[[block]] struct Uniforms {
+@block struct Uniforms {
   i : u32;
   j : u32;
 };
@@ -311,9 +311,9 @@
   a1 : array<S1, 8>;
 };
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s : OuterS;
@@ -322,7 +322,7 @@
 )";
 
   auto* expect = R"(
-[[block]]
+@block
 struct Uniforms {
   i : u32;
   j : u32;
@@ -340,9 +340,9 @@
   a1 : array<S1, 8>;
 }
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s : OuterS;
@@ -365,7 +365,7 @@
 
 TEST_F(LocalizeStructArrayAssignmentTest, IndexingWithSideEffectFunc) {
   auto* src = R"(
-[[block]] struct Uniforms {
+@block struct Uniforms {
   i : u32;
   j : u32;
 };
@@ -388,9 +388,9 @@
   return nextIndex;
 }
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s : OuterS;
@@ -399,7 +399,7 @@
 )";
 
   auto* expect = R"(
-[[block]]
+@block
 struct Uniforms {
   i : u32;
   j : u32;
@@ -424,9 +424,9 @@
   return nextIndex;
 }
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s : OuterS;
@@ -449,7 +449,7 @@
 
 TEST_F(LocalizeStructArrayAssignmentTest, ViaPointerArg) {
   auto* src = R"(
-[[block]] struct Uniforms {
+@block struct Uniforms {
   i : u32;
 };
 struct InnerS {
@@ -458,14 +458,14 @@
 struct OuterS {
   a1 : array<InnerS, 8>;
 };
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
 fn f(p : ptr<function, OuterS>) {
   var v : InnerS;
   (*p).a1[uniforms.i] = v;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var s1 : OuterS;
   f(&s1);
@@ -473,7 +473,7 @@
 )";
 
   auto* expect = R"(
-[[block]]
+@block
 struct Uniforms {
   i : u32;
 }
@@ -486,7 +486,7 @@
   a1 : array<InnerS, 8>;
 }
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
 fn f(p : ptr<function, OuterS>) {
   var v : InnerS;
@@ -498,7 +498,7 @@
   }
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var s1 : OuterS;
   f(&(s1));
@@ -512,7 +512,7 @@
 
 TEST_F(LocalizeStructArrayAssignmentTest, ViaPointerVar) {
   auto* src = R"(
-[[block]]
+@block
 struct Uniforms {
   i : u32;
 };
@@ -525,13 +525,13 @@
   a1 : array<InnerS, 8>;
 };
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
 fn f(p : ptr<function, InnerS>, v : InnerS) {
   *(p) = v;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
@@ -541,7 +541,7 @@
 )";
 
   auto* expect = R"(
-[[block]]
+@block
 struct Uniforms {
   i : u32;
 }
@@ -554,13 +554,13 @@
   a1 : array<InnerS, 8>;
 }
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
 fn f(p : ptr<function, InnerS>, v : InnerS) {
   *(p) = v;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
@@ -581,23 +581,23 @@
 
 TEST_F(LocalizeStructArrayAssignmentTest, VectorAssignment) {
   auto* src = R"(
-[[block]]
+@block
 struct Uniforms {
   i : u32;
 }
 
-[[block]]
+@block
 struct OuterS {
   a1 : array<u32, 8>;
 }
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
 fn f(i : u32) -> u32 {
   return (i + 1u);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var s1 : OuterS;
   var v : vec3<f32>;
diff --git a/src/transform/module_scope_var_to_entry_point_param.h b/src/transform/module_scope_var_to_entry_point_param.h
index 34db3e6..29132c8 100644
--- a/src/transform/module_scope_var_to_entry_point_param.h
+++ b/src/transform/module_scope_var_to_entry_point_param.h
@@ -36,7 +36,7 @@
 /// struct S {
 ///   f : f32;
 /// };
-/// [[binding(0), group(0)]]
+/// @binding(0) @group(0)
 /// var<storage, read> s : S;
 /// var<private> p : f32 = 2.0;
 ///
@@ -44,7 +44,7 @@
 ///   p = p + f;
 /// }
 ///
-/// [[stage(compute), workgroup_size(1)]]
+/// @stage(compute) @workgroup_size(1)
 /// fn main() {
 ///   foo();
 /// }
@@ -56,7 +56,7 @@
 ///   *p = *p + (*sptr).f;
 /// }
 ///
-/// [[stage(compute), workgroup_size(1)]]
+/// @stage(compute) @workgroup_size(1)
 /// fn main(sptr : ptr<storage, S, read>) {
 ///   var<private> p : f32 = 2.0;
 ///   foo(&p, sptr);
diff --git a/src/transform/module_scope_var_to_entry_point_param_test.cc b/src/transform/module_scope_var_to_entry_point_param_test.cc
index ffbd635..d8b0f63 100644
--- a/src/transform/module_scope_var_to_entry_point_param_test.cc
+++ b/src/transform/module_scope_var_to_entry_point_param_test.cc
@@ -29,17 +29,17 @@
 var<private> p : f32;
 var<workgroup> w : f32;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   w = p;
 }
 )";
 
   auto* expect = R"(
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
-  [[internal(disable_validation__ignore_storage_class)]] var<workgroup> tint_symbol : f32;
-  [[internal(disable_validation__ignore_storage_class)]] var<private> tint_symbol_1 : f32;
+  @internal(disable_validation__ignore_storage_class) var<workgroup> tint_symbol : f32;
+  @internal(disable_validation__ignore_storage_class) var<private> tint_symbol_1 : f32;
   tint_symbol = tint_symbol_1;
 }
 )";
@@ -68,7 +68,7 @@
   no_uses();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   foo(1.0);
 }
@@ -78,21 +78,21 @@
 fn no_uses() {
 }
 
-fn bar(a : f32, b : f32, [[internal(disable_validation__ignore_storage_class), internal(disable_validation__ignore_invalid_pointer_argument)]] tint_symbol : ptr<private, f32>, [[internal(disable_validation__ignore_storage_class), internal(disable_validation__ignore_invalid_pointer_argument)]] tint_symbol_1 : ptr<workgroup, f32>) {
+fn bar(a : f32, b : f32, @internal(disable_validation__ignore_storage_class) @internal(disable_validation__ignore_invalid_pointer_argument) tint_symbol : ptr<private, f32>, @internal(disable_validation__ignore_storage_class) @internal(disable_validation__ignore_invalid_pointer_argument) tint_symbol_1 : ptr<workgroup, f32>) {
   *(tint_symbol) = a;
   *(tint_symbol_1) = b;
 }
 
-fn foo(a : f32, [[internal(disable_validation__ignore_storage_class), internal(disable_validation__ignore_invalid_pointer_argument)]] tint_symbol_2 : ptr<private, f32>, [[internal(disable_validation__ignore_storage_class), internal(disable_validation__ignore_invalid_pointer_argument)]] tint_symbol_3 : ptr<workgroup, f32>) {
+fn foo(a : f32, @internal(disable_validation__ignore_storage_class) @internal(disable_validation__ignore_invalid_pointer_argument) tint_symbol_2 : ptr<private, f32>, @internal(disable_validation__ignore_storage_class) @internal(disable_validation__ignore_invalid_pointer_argument) tint_symbol_3 : ptr<workgroup, f32>) {
   let b : f32 = 2.0;
   bar(a, b, tint_symbol_2, tint_symbol_3);
   no_uses();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
-  [[internal(disable_validation__ignore_storage_class)]] var<private> tint_symbol_4 : f32;
-  [[internal(disable_validation__ignore_storage_class)]] var<workgroup> tint_symbol_5 : f32;
+  @internal(disable_validation__ignore_storage_class) var<private> tint_symbol_4 : f32;
+  @internal(disable_validation__ignore_storage_class) var<workgroup> tint_symbol_5 : f32;
   foo(1.0, &(tint_symbol_4), &(tint_symbol_5));
 }
 )";
@@ -107,17 +107,17 @@
 var<private> a : f32 = 1.0;
 var<private> b : f32 = f32();
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let x : f32 = a + b;
 }
 )";
 
   auto* expect = R"(
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
-  [[internal(disable_validation__ignore_storage_class)]] var<private> tint_symbol : f32 = 1.0;
-  [[internal(disable_validation__ignore_storage_class)]] var<private> tint_symbol_1 : f32 = f32();
+  @internal(disable_validation__ignore_storage_class) var<private> tint_symbol : f32 = 1.0;
+  @internal(disable_validation__ignore_storage_class) var<private> tint_symbol_1 : f32 = f32();
   let x : f32 = (tint_symbol + tint_symbol_1);
 }
 )";
@@ -132,7 +132,7 @@
 var<private> p : f32;
 var<workgroup> w : f32;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let p_ptr : ptr<private, f32> = &p;
   let w_ptr : ptr<workgroup, f32> = &w;
@@ -142,10 +142,10 @@
 )";
 
   auto* expect = R"(
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
-  [[internal(disable_validation__ignore_storage_class)]] var<private> tint_symbol : f32;
-  [[internal(disable_validation__ignore_storage_class)]] var<workgroup> tint_symbol_1 : f32;
+  @internal(disable_validation__ignore_storage_class) var<private> tint_symbol : f32;
+  @internal(disable_validation__ignore_storage_class) var<workgroup> tint_symbol_1 : f32;
   let p_ptr : ptr<private, f32> = &(tint_symbol);
   let w_ptr : ptr<workgroup, f32> = &(tint_symbol_1);
   let x : f32 = (*(p_ptr) + *(w_ptr));
@@ -170,7 +170,7 @@
   bar(&v);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   foo();
 }
@@ -181,13 +181,13 @@
   *(p) = 0.0;
 }
 
-fn foo([[internal(disable_validation__ignore_storage_class), internal(disable_validation__ignore_invalid_pointer_argument)]] tint_symbol : ptr<private, f32>) {
+fn foo(@internal(disable_validation__ignore_storage_class) @internal(disable_validation__ignore_invalid_pointer_argument) tint_symbol : ptr<private, f32>) {
   bar(tint_symbol);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
-  [[internal(disable_validation__ignore_storage_class)]] var<private> tint_symbol_1 : f32;
+  @internal(disable_validation__ignore_storage_class) var<private> tint_symbol_1 : f32;
   foo(&(tint_symbol_1));
 }
 )";
@@ -203,12 +203,12 @@
   a : f32;
 };
 
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<uniform> u : S;
-[[group(0), binding(1)]]
+@group(0) @binding(1)
 var<storage> s : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = u;
   _ = s;
@@ -220,8 +220,8 @@
   a : f32;
 }
 
-[[stage(compute), workgroup_size(1)]]
-fn main([[group(0), binding(0), internal(disable_validation__entry_point_parameter), internal(disable_validation__ignore_storage_class)]] tint_symbol : ptr<uniform, S>, [[group(0), binding(1), internal(disable_validation__entry_point_parameter), internal(disable_validation__ignore_storage_class)]] tint_symbol_1 : ptr<storage, S>) {
+@stage(compute) @workgroup_size(1)
+fn main(@group(0) @binding(0) @internal(disable_validation__entry_point_parameter) @internal(disable_validation__ignore_storage_class) tint_symbol : ptr<uniform, S>, @group(0) @binding(1) @internal(disable_validation__entry_point_parameter) @internal(disable_validation__ignore_storage_class) tint_symbol_1 : ptr<storage, S>) {
   _ = *(tint_symbol);
   _ = *(tint_symbol_1);
 }
@@ -234,10 +234,10 @@
 
 TEST_F(ModuleScopeVarToEntryPointParamTest, Buffer_RuntimeArray) {
   auto* src = R"(
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<storage> buffer : array<f32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = buffer[0];
 }
@@ -248,8 +248,8 @@
   arr : array<f32>;
 }
 
-[[stage(compute), workgroup_size(1)]]
-fn main([[group(0), binding(0), internal(disable_validation__entry_point_parameter), internal(disable_validation__ignore_storage_class)]] tint_symbol : ptr<storage, tint_symbol_1>) {
+@stage(compute) @workgroup_size(1)
+fn main(@group(0) @binding(0) @internal(disable_validation__entry_point_parameter) @internal(disable_validation__ignore_storage_class) tint_symbol : ptr<storage, tint_symbol_1>) {
   _ = (*(tint_symbol)).arr[0];
 }
 )";
@@ -261,14 +261,14 @@
 
 TEST_F(ModuleScopeVarToEntryPointParamTest, Buffer_RuntimeArrayInsideFunction) {
   auto* src = R"(
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<storage> buffer : array<f32>;
 
 fn foo() {
   _ = buffer[0];
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   foo();
 }
@@ -279,12 +279,12 @@
   arr : array<f32>;
 }
 
-fn foo([[internal(disable_validation__ignore_storage_class), internal(disable_validation__ignore_invalid_pointer_argument)]] tint_symbol : ptr<storage, array<f32>>) {
+fn foo(@internal(disable_validation__ignore_storage_class) @internal(disable_validation__ignore_invalid_pointer_argument) tint_symbol : ptr<storage, array<f32>>) {
   _ = (*(tint_symbol))[0];
 }
 
-[[stage(compute), workgroup_size(1)]]
-fn main([[group(0), binding(0), internal(disable_validation__entry_point_parameter), internal(disable_validation__ignore_storage_class)]] tint_symbol_1 : ptr<storage, tint_symbol_2>) {
+@stage(compute) @workgroup_size(1)
+fn main(@group(0) @binding(0) @internal(disable_validation__entry_point_parameter) @internal(disable_validation__ignore_storage_class) tint_symbol_1 : ptr<storage, tint_symbol_2>) {
   foo(&((*(tint_symbol_1)).arr));
 }
 )";
@@ -298,10 +298,10 @@
   auto* src = R"(
 type myarray = array<f32>;
 
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<storage> buffer : myarray;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = buffer[0];
 }
@@ -314,8 +314,8 @@
 
 type myarray = array<f32>;
 
-[[stage(compute), workgroup_size(1)]]
-fn main([[group(0), binding(0), internal(disable_validation__entry_point_parameter), internal(disable_validation__ignore_storage_class)]] tint_symbol : ptr<storage, tint_symbol_1>) {
+@stage(compute) @workgroup_size(1)
+fn main(@group(0) @binding(0) @internal(disable_validation__entry_point_parameter) @internal(disable_validation__ignore_storage_class) tint_symbol : ptr<storage, tint_symbol_1>) {
   _ = (*(tint_symbol)).arr[0];
 }
 )";
@@ -331,10 +331,10 @@
   f : f32;
 };
 
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<storage> buffer : array<S>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = buffer[0];
 }
@@ -349,8 +349,8 @@
   arr : array<S>;
 }
 
-[[stage(compute), workgroup_size(1)]]
-fn main([[group(0), binding(0), internal(disable_validation__entry_point_parameter), internal(disable_validation__ignore_storage_class)]] tint_symbol : ptr<storage, tint_symbol_1>) {
+@stage(compute) @workgroup_size(1)
+fn main(@group(0) @binding(0) @internal(disable_validation__entry_point_parameter) @internal(disable_validation__ignore_storage_class) tint_symbol : ptr<storage, tint_symbol_1>) {
   _ = (*(tint_symbol)).arr[0];
 }
 )";
@@ -366,9 +366,9 @@
   a : f32;
 };
 
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<uniform> u : S;
-[[group(0), binding(1)]]
+@group(0) @binding(1)
 var<storage> s : S;
 
 fn no_uses() {
@@ -386,7 +386,7 @@
   no_uses();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   foo(1.0);
 }
@@ -400,20 +400,20 @@
 fn no_uses() {
 }
 
-fn bar(a : f32, b : f32, [[internal(disable_validation__ignore_storage_class), internal(disable_validation__ignore_invalid_pointer_argument)]] tint_symbol : ptr<uniform, S>, [[internal(disable_validation__ignore_storage_class), internal(disable_validation__ignore_invalid_pointer_argument)]] tint_symbol_1 : ptr<storage, S>) {
+fn bar(a : f32, b : f32, @internal(disable_validation__ignore_storage_class) @internal(disable_validation__ignore_invalid_pointer_argument) tint_symbol : ptr<uniform, S>, @internal(disable_validation__ignore_storage_class) @internal(disable_validation__ignore_invalid_pointer_argument) tint_symbol_1 : ptr<storage, S>) {
   _ = *(tint_symbol);
   _ = *(tint_symbol_1);
 }
 
-fn foo(a : f32, [[internal(disable_validation__ignore_storage_class), internal(disable_validation__ignore_invalid_pointer_argument)]] tint_symbol_2 : ptr<uniform, S>, [[internal(disable_validation__ignore_storage_class), internal(disable_validation__ignore_invalid_pointer_argument)]] tint_symbol_3 : ptr<storage, S>) {
+fn foo(a : f32, @internal(disable_validation__ignore_storage_class) @internal(disable_validation__ignore_invalid_pointer_argument) tint_symbol_2 : ptr<uniform, S>, @internal(disable_validation__ignore_storage_class) @internal(disable_validation__ignore_invalid_pointer_argument) tint_symbol_3 : ptr<storage, S>) {
   let b : f32 = 2.0;
   _ = *(tint_symbol_2);
   bar(a, b, tint_symbol_2, tint_symbol_3);
   no_uses();
 }
 
-[[stage(compute), workgroup_size(1)]]
-fn main([[group(0), binding(0), internal(disable_validation__entry_point_parameter), internal(disable_validation__ignore_storage_class)]] tint_symbol_4 : ptr<uniform, S>, [[group(0), binding(1), internal(disable_validation__entry_point_parameter), internal(disable_validation__ignore_storage_class)]] tint_symbol_5 : ptr<storage, S>) {
+@stage(compute) @workgroup_size(1)
+fn main(@group(0) @binding(0) @internal(disable_validation__entry_point_parameter) @internal(disable_validation__ignore_storage_class) tint_symbol_4 : ptr<uniform, S>, @group(0) @binding(1) @internal(disable_validation__entry_point_parameter) @internal(disable_validation__ignore_storage_class) tint_symbol_5 : ptr<storage, S>) {
   foo(1.0, tint_symbol_4, tint_symbol_5);
 }
 )";
@@ -425,10 +425,10 @@
 
 TEST_F(ModuleScopeVarToEntryPointParamTest, HandleTypes_Basic) {
   auto* src = R"(
-[[group(0), binding(0)]] var t : texture_2d<f32>;
-[[group(0), binding(1)]] var s : sampler;
+@group(0) @binding(0) var t : texture_2d<f32>;
+@group(0) @binding(1) var s : sampler;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = t;
   _ = s;
@@ -436,8 +436,8 @@
 )";
 
   auto* expect = R"(
-[[stage(compute), workgroup_size(1)]]
-fn main([[group(0), binding(0), internal(disable_validation__entry_point_parameter)]] tint_symbol : texture_2d<f32>, [[group(0), binding(1), internal(disable_validation__entry_point_parameter)]] tint_symbol_1 : sampler) {
+@stage(compute) @workgroup_size(1)
+fn main(@group(0) @binding(0) @internal(disable_validation__entry_point_parameter) tint_symbol : texture_2d<f32>, @group(0) @binding(1) @internal(disable_validation__entry_point_parameter) tint_symbol_1 : sampler) {
   _ = tint_symbol;
   _ = tint_symbol_1;
 }
@@ -450,8 +450,8 @@
 
 TEST_F(ModuleScopeVarToEntryPointParamTest, HandleTypes_FunctionCalls) {
   auto* src = R"(
-[[group(0), binding(0)]] var t : texture_2d<f32>;
-[[group(0), binding(1)]] var s : sampler;
+@group(0) @binding(0) var t : texture_2d<f32>;
+@group(0) @binding(1) var s : sampler;
 
 fn no_uses() {
 }
@@ -468,7 +468,7 @@
   no_uses();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   foo(1.0);
 }
@@ -490,8 +490,8 @@
   no_uses();
 }
 
-[[stage(compute), workgroup_size(1)]]
-fn main([[group(0), binding(0), internal(disable_validation__entry_point_parameter)]] tint_symbol_4 : texture_2d<f32>, [[group(0), binding(1), internal(disable_validation__entry_point_parameter)]] tint_symbol_5 : sampler) {
+@stage(compute) @workgroup_size(1)
+fn main(@group(0) @binding(0) @internal(disable_validation__entry_point_parameter) tint_symbol_4 : texture_2d<f32>, @group(0) @binding(1) @internal(disable_validation__entry_point_parameter) tint_symbol_5 : sampler) {
   foo(1.0, tint_symbol_4, tint_symbol_5);
 }
 )";
@@ -505,7 +505,7 @@
   auto* src = R"(
 var<workgroup> m : mat2x2<f32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let x = m;
 }
@@ -516,8 +516,8 @@
   m : mat2x2<f32>;
 }
 
-[[stage(compute), workgroup_size(1)]]
-fn main([[internal(disable_validation__entry_point_parameter)]] tint_symbol_1 : ptr<workgroup, tint_symbol_2>) {
+@stage(compute) @workgroup_size(1)
+fn main(@internal(disable_validation__entry_point_parameter) tint_symbol_1 : ptr<workgroup, tint_symbol_2>) {
   let tint_symbol : ptr<workgroup, mat2x2<f32>> = &((*(tint_symbol_1)).m);
   let x = *(tint_symbol);
 }
@@ -538,7 +538,7 @@
 };
 var<workgroup> m : array<S2, 4>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let x = m;
 }
@@ -557,8 +557,8 @@
   m : array<S2, 4u>;
 }
 
-[[stage(compute), workgroup_size(1)]]
-fn main([[internal(disable_validation__entry_point_parameter)]] tint_symbol_1 : ptr<workgroup, tint_symbol_2>) {
+@stage(compute) @workgroup_size(1)
+fn main(@internal(disable_validation__entry_point_parameter) tint_symbol_1 : ptr<workgroup, tint_symbol_2>) {
   let tint_symbol : ptr<workgroup, array<S2, 4u>> = &((*(tint_symbol_1)).m);
   let x = *(tint_symbol);
 }
@@ -581,7 +581,7 @@
 
 var<workgroup> b : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let x = a;
   let y = b;
@@ -598,8 +598,8 @@
   b : S;
 }
 
-[[stage(compute), workgroup_size(1)]]
-fn main([[internal(disable_validation__entry_point_parameter)]] tint_symbol_1 : ptr<workgroup, tint_symbol_3>) {
+@stage(compute) @workgroup_size(1)
+fn main(@internal(disable_validation__entry_point_parameter) tint_symbol_1 : ptr<workgroup, tint_symbol_3>) {
   let tint_symbol : ptr<workgroup, S> = &((*(tint_symbol_1)).a);
   let tint_symbol_2 : ptr<workgroup, S> = &((*(tint_symbol_1)).b);
   let x = *(tint_symbol);
@@ -621,15 +621,15 @@
 var<private> p : f32;
 var<workgroup> w : f32;
 
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<uniform> ub : S;
-[[group(0), binding(1)]]
+@group(0) @binding(1)
 var<storage> sb : S;
 
-[[group(0), binding(2)]] var t : texture_2d<f32>;
-[[group(0), binding(3)]] var s : sampler;
+@group(0) @binding(2) var t : texture_2d<f32>;
+@group(0) @binding(3) var s : sampler;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
 }
 )";
@@ -639,7 +639,7 @@
   a : f32;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
 }
 )";
diff --git a/src/transform/multiplanar_external_texture_test.cc b/src/transform/multiplanar_external_texture_test.cc
index e4c1d55..be8137a 100644
--- a/src/transform/multiplanar_external_texture_test.cc
+++ b/src/transform/multiplanar_external_texture_test.cc
@@ -25,11 +25,11 @@
 // result in an error.
 TEST_F(MultiplanarExternalTextureTest, ErrorNoPassedData) {
   auto* src = R"(
-[[group(0), binding(0)]] var s : sampler;
-[[group(0), binding(1)]] var ext_tex : texture_external;
+@group(0) @binding(0) var s : sampler;
+@group(0) @binding(1) var ext_tex : texture_external;
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] coord : vec4<f32>) -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
   return textureSampleLevel(ext_tex, s, coord.xy);
 }
 )";
@@ -43,11 +43,11 @@
 // Running the transform with incorrect binding data should result in an error.
 TEST_F(MultiplanarExternalTextureTest, ErrorIncorrectBindingPont) {
   auto* src = R"(
-[[group(0), binding(0)]] var s : sampler;
-[[group(0), binding(1)]] var ext_tex : texture_external;
+@group(0) @binding(0) var s : sampler;
+@group(0) @binding(1) var ext_tex : texture_external;
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] coord : vec4<f32>) -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
   return textureSampleLevel(ext_tex, s, coord.xy);
 }
 )";
@@ -67,10 +67,10 @@
 // Tests that the transform works with a textureDimensions call.
 TEST_F(MultiplanarExternalTextureTest, Dimensions) {
   auto* src = R"(
-[[group(0), binding(0)]] var ext_tex : texture_external;
+@group(0) @binding(0) var ext_tex : texture_external;
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] coord : vec4<f32>) -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
   var dim : vec2<i32>;
   dim = textureDimensions(ext_tex);
   return vec4<f32>(0.0, 0.0, 0.0, 0.0);
@@ -86,14 +86,14 @@
   ub : f32;
 }
 
-[[group(0), binding(1)]] var ext_tex_plane_1 : texture_2d<f32>;
+@group(0) @binding(1) var ext_tex_plane_1 : texture_2d<f32>;
 
-[[group(0), binding(2)]] var<uniform> ext_tex_params : ExternalTextureParams;
+@group(0) @binding(2) var<uniform> ext_tex_params : ExternalTextureParams;
 
-[[group(0), binding(0)]] var ext_tex : texture_2d<f32>;
+@group(0) @binding(0) var ext_tex : texture_2d<f32>;
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] coord : vec4<f32>) -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
   var dim : vec2<i32>;
   dim = textureDimensions(ext_tex);
   return vec4<f32>(0.0, 0.0, 0.0, 0.0);
@@ -110,17 +110,17 @@
 // Test that the transform works with a textureSampleLevel call.
 TEST_F(MultiplanarExternalTextureTest, BasicTextureSampleLevel) {
   auto* src = R"(
-[[group(0), binding(0)]] var s : sampler;
-[[group(0), binding(1)]] var ext_tex : texture_external;
+@group(0) @binding(0) var s : sampler;
+@group(0) @binding(1) var ext_tex : texture_external;
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] coord : vec4<f32>) -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
   return textureSampleLevel(ext_tex, s, coord.xy);
 }
 )";
 
   auto* expect = R"(
-[[group(0), binding(0)]] var s : sampler;
+@group(0) @binding(0) var s : sampler;
 
 struct ExternalTextureParams {
   numPlanes : u32;
@@ -130,11 +130,11 @@
   ub : f32;
 }
 
-[[group(0), binding(2)]] var ext_tex_plane_1 : texture_2d<f32>;
+@group(0) @binding(2) var ext_tex_plane_1 : texture_2d<f32>;
 
-[[group(0), binding(3)]] var<uniform> ext_tex_params : ExternalTextureParams;
+@group(0) @binding(3) var<uniform> ext_tex_params : ExternalTextureParams;
 
-[[group(0), binding(1)]] var ext_tex : texture_2d<f32>;
+@group(0) @binding(1) var ext_tex : texture_2d<f32>;
 
 fn textureSampleExternal(plane0 : texture_2d<f32>, plane1 : texture_2d<f32>, smp : sampler, coord : vec2<f32>, params : ExternalTextureParams) -> vec4<f32> {
   if ((params.numPlanes == 1u)) {
@@ -150,8 +150,8 @@
   return vec4<f32>(r, g, b, 1.0);
 }
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] coord : vec4<f32>) -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
   return textureSampleExternal(ext_tex, ext_tex_plane_1, s, coord.xy, ext_tex_params);
 }
 )";
@@ -166,10 +166,10 @@
 // Tests that the transform works with a textureLoad call.
 TEST_F(MultiplanarExternalTextureTest, BasicTextureLoad) {
   auto* src = R"(
-[[group(0), binding(0)]] var ext_tex : texture_external;
+@group(0) @binding(0) var ext_tex : texture_external;
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] coord : vec4<f32>) -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
   return textureLoad(ext_tex, vec2<i32>(1, 1));
 }
 )";
@@ -183,11 +183,11 @@
   ub : f32;
 }
 
-[[group(0), binding(1)]] var ext_tex_plane_1 : texture_2d<f32>;
+@group(0) @binding(1) var ext_tex_plane_1 : texture_2d<f32>;
 
-[[group(0), binding(2)]] var<uniform> ext_tex_params : ExternalTextureParams;
+@group(0) @binding(2) var<uniform> ext_tex_params : ExternalTextureParams;
 
-[[group(0), binding(0)]] var ext_tex : texture_2d<f32>;
+@group(0) @binding(0) var ext_tex : texture_2d<f32>;
 
 fn textureLoadExternal(plane0 : texture_2d<f32>, plane1 : texture_2d<f32>, coord : vec2<i32>, params : ExternalTextureParams) -> vec4<f32> {
   if ((params.numPlanes == 1u)) {
@@ -203,8 +203,8 @@
   return vec4<f32>(r, g, b, 1.0);
 }
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] coord : vec4<f32>) -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
   return textureLoadExternal(ext_tex, ext_tex_plane_1, vec2<i32>(1, 1), ext_tex_params);
 }
 )";
@@ -220,17 +220,17 @@
 // call.
 TEST_F(MultiplanarExternalTextureTest, TextureSampleAndTextureLoad) {
   auto* src = R"(
-[[group(0), binding(0)]] var s : sampler;
-[[group(0), binding(1)]] var ext_tex : texture_external;
+@group(0) @binding(0) var s : sampler;
+@group(0) @binding(1) var ext_tex : texture_external;
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] coord : vec4<f32>) -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
   return textureSampleLevel(ext_tex, s, coord.xy) + textureLoad(ext_tex, vec2<i32>(1, 1));
 }
 )";
 
   auto* expect = R"(
-[[group(0), binding(0)]] var s : sampler;
+@group(0) @binding(0) var s : sampler;
 
 struct ExternalTextureParams {
   numPlanes : u32;
@@ -240,11 +240,11 @@
   ub : f32;
 }
 
-[[group(0), binding(2)]] var ext_tex_plane_1 : texture_2d<f32>;
+@group(0) @binding(2) var ext_tex_plane_1 : texture_2d<f32>;
 
-[[group(0), binding(3)]] var<uniform> ext_tex_params : ExternalTextureParams;
+@group(0) @binding(3) var<uniform> ext_tex_params : ExternalTextureParams;
 
-[[group(0), binding(1)]] var ext_tex : texture_2d<f32>;
+@group(0) @binding(1) var ext_tex : texture_2d<f32>;
 
 fn textureSampleExternal(plane0 : texture_2d<f32>, plane1 : texture_2d<f32>, smp : sampler, coord : vec2<f32>, params : ExternalTextureParams) -> vec4<f32> {
   if ((params.numPlanes == 1u)) {
@@ -274,8 +274,8 @@
   return vec4<f32>(r, g, b, 1.0);
 }
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] coord : vec4<f32>) -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
   return (textureSampleExternal(ext_tex, ext_tex_plane_1, s, coord.xy, ext_tex_params) + textureLoadExternal(ext_tex, ext_tex_plane_1, vec2<i32>(1, 1), ext_tex_params));
 }
 )";
@@ -290,20 +290,20 @@
 // Tests that the transform works with many instances of texture_external.
 TEST_F(MultiplanarExternalTextureTest, ManyTextureSampleLevel) {
   auto* src = R"(
-[[group(0), binding(0)]] var s : sampler;
-[[group(0), binding(1)]] var ext_tex : texture_external;
-[[group(0), binding(2)]] var ext_tex_1 : texture_external;
-[[group(0), binding(3)]] var ext_tex_2 : texture_external;
-[[group(1), binding(0)]] var ext_tex_3 : texture_external;
+@group(0) @binding(0) var s : sampler;
+@group(0) @binding(1) var ext_tex : texture_external;
+@group(0) @binding(2) var ext_tex_1 : texture_external;
+@group(0) @binding(3) var ext_tex_2 : texture_external;
+@group(1) @binding(0) var ext_tex_3 : texture_external;
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] coord : vec4<f32>) -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
   return textureSampleLevel(ext_tex, s, coord.xy) + textureSampleLevel(ext_tex_1, s, coord.xy) + textureSampleLevel(ext_tex_2, s, coord.xy) + textureSampleLevel(ext_tex_3, s, coord.xy);
 }
 )";
 
   auto* expect = R"(
-[[group(0), binding(0)]] var s : sampler;
+@group(0) @binding(0) var s : sampler;
 
 struct ExternalTextureParams {
   numPlanes : u32;
@@ -313,29 +313,29 @@
   ub : f32;
 }
 
-[[group(0), binding(4)]] var ext_tex_plane_1 : texture_2d<f32>;
+@group(0) @binding(4) var ext_tex_plane_1 : texture_2d<f32>;
 
-[[group(0), binding(5)]] var<uniform> ext_tex_params : ExternalTextureParams;
+@group(0) @binding(5) var<uniform> ext_tex_params : ExternalTextureParams;
 
-[[group(0), binding(1)]] var ext_tex : texture_2d<f32>;
+@group(0) @binding(1) var ext_tex : texture_2d<f32>;
 
-[[group(0), binding(6)]] var ext_tex_plane_1_1 : texture_2d<f32>;
+@group(0) @binding(6) var ext_tex_plane_1_1 : texture_2d<f32>;
 
-[[group(0), binding(7)]] var<uniform> ext_tex_params_1 : ExternalTextureParams;
+@group(0) @binding(7) var<uniform> ext_tex_params_1 : ExternalTextureParams;
 
-[[group(0), binding(2)]] var ext_tex_1 : texture_2d<f32>;
+@group(0) @binding(2) var ext_tex_1 : texture_2d<f32>;
 
-[[group(0), binding(8)]] var ext_tex_plane_1_2 : texture_2d<f32>;
+@group(0) @binding(8) var ext_tex_plane_1_2 : texture_2d<f32>;
 
-[[group(0), binding(9)]] var<uniform> ext_tex_params_2 : ExternalTextureParams;
+@group(0) @binding(9) var<uniform> ext_tex_params_2 : ExternalTextureParams;
 
-[[group(0), binding(3)]] var ext_tex_2 : texture_2d<f32>;
+@group(0) @binding(3) var ext_tex_2 : texture_2d<f32>;
 
-[[group(1), binding(1)]] var ext_tex_plane_1_3 : texture_2d<f32>;
+@group(1) @binding(1) var ext_tex_plane_1_3 : texture_2d<f32>;
 
-[[group(1), binding(2)]] var<uniform> ext_tex_params_3 : ExternalTextureParams;
+@group(1) @binding(2) var<uniform> ext_tex_params_3 : ExternalTextureParams;
 
-[[group(1), binding(0)]] var ext_tex_3 : texture_2d<f32>;
+@group(1) @binding(0) var ext_tex_3 : texture_2d<f32>;
 
 fn textureSampleExternal(plane0 : texture_2d<f32>, plane1 : texture_2d<f32>, smp : sampler, coord : vec2<f32>, params : ExternalTextureParams) -> vec4<f32> {
   if ((params.numPlanes == 1u)) {
@@ -351,8 +351,8 @@
   return vec4<f32>(r, g, b, 1.0);
 }
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] coord : vec4<f32>) -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
   return (((textureSampleExternal(ext_tex, ext_tex_plane_1, s, coord.xy, ext_tex_params) + textureSampleExternal(ext_tex_1, ext_tex_plane_1_1, s, coord.xy, ext_tex_params_1)) + textureSampleExternal(ext_tex_2, ext_tex_plane_1_2, s, coord.xy, ext_tex_params_2)) + textureSampleExternal(ext_tex_3, ext_tex_plane_1_3, s, coord.xy, ext_tex_params_3));
 }
 )";
@@ -377,10 +377,10 @@
   textureSampleLevel(t, s, vec2<f32>(1.0, 2.0));
 }
 
-[[group(0), binding(0)]] var ext_tex : texture_external;
-[[group(0), binding(1)]] var smp : sampler;
+@group(0) @binding(0) var ext_tex : texture_external;
+@group(0) @binding(1) var smp : sampler;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   f(ext_tex, smp);
 }
@@ -413,15 +413,15 @@
   textureSampleExternal(t, ext_tex_plane_1, s, vec2<f32>(1.0, 2.0), ext_tex_params);
 }
 
-[[group(0), binding(2)]] var ext_tex_plane_1_1 : texture_2d<f32>;
+@group(0) @binding(2) var ext_tex_plane_1_1 : texture_2d<f32>;
 
-[[group(0), binding(3)]] var<uniform> ext_tex_params_1 : ExternalTextureParams;
+@group(0) @binding(3) var<uniform> ext_tex_params_1 : ExternalTextureParams;
 
-[[group(0), binding(0)]] var ext_tex : texture_2d<f32>;
+@group(0) @binding(0) var ext_tex : texture_2d<f32>;
 
-[[group(0), binding(1)]] var smp : sampler;
+@group(0) @binding(1) var smp : sampler;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   f(ext_tex, ext_tex_plane_1_1, ext_tex_params_1, smp);
 }
@@ -443,10 +443,10 @@
   textureSampleLevel(t, s, vec2<f32>(1.0, 2.0));
 }
 
-[[group(0), binding(0)]] var ext_tex : texture_external;
-[[group(0), binding(1)]] var smp : sampler;
+@group(0) @binding(0) var ext_tex : texture_external;
+@group(0) @binding(1) var smp : sampler;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   f(smp, ext_tex);
 }
@@ -479,15 +479,15 @@
   textureSampleExternal(t, ext_tex_plane_1, s, vec2<f32>(1.0, 2.0), ext_tex_params);
 }
 
-[[group(0), binding(2)]] var ext_tex_plane_1_1 : texture_2d<f32>;
+@group(0) @binding(2) var ext_tex_plane_1_1 : texture_2d<f32>;
 
-[[group(0), binding(3)]] var<uniform> ext_tex_params_1 : ExternalTextureParams;
+@group(0) @binding(3) var<uniform> ext_tex_params_1 : ExternalTextureParams;
 
-[[group(0), binding(0)]] var ext_tex : texture_2d<f32>;
+@group(0) @binding(0) var ext_tex : texture_2d<f32>;
 
-[[group(0), binding(1)]] var smp : sampler;
+@group(0) @binding(1) var smp : sampler;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   f(smp, ext_tex, ext_tex_plane_1_1, ext_tex_params_1);
 }
@@ -510,11 +510,11 @@
   textureSampleLevel(t2, s, vec2<f32>(1.0, 2.0));
 }
 
-[[group(0), binding(0)]] var ext_tex : texture_external;
-[[group(0), binding(1)]] var smp : sampler;
-[[group(0), binding(2)]] var ext_tex2 : texture_external;
+@group(0) @binding(0) var ext_tex : texture_external;
+@group(0) @binding(1) var smp : sampler;
+@group(0) @binding(2) var ext_tex2 : texture_external;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   f(ext_tex, smp, ext_tex2);
 }
@@ -548,21 +548,21 @@
   textureSampleExternal(t2, ext_tex_plane_1_1, s, vec2<f32>(1.0, 2.0), ext_tex_params_1);
 }
 
-[[group(0), binding(3)]] var ext_tex_plane_1_2 : texture_2d<f32>;
+@group(0) @binding(3) var ext_tex_plane_1_2 : texture_2d<f32>;
 
-[[group(0), binding(4)]] var<uniform> ext_tex_params_2 : ExternalTextureParams;
+@group(0) @binding(4) var<uniform> ext_tex_params_2 : ExternalTextureParams;
 
-[[group(0), binding(0)]] var ext_tex : texture_2d<f32>;
+@group(0) @binding(0) var ext_tex : texture_2d<f32>;
 
-[[group(0), binding(1)]] var smp : sampler;
+@group(0) @binding(1) var smp : sampler;
 
-[[group(0), binding(5)]] var ext_tex_plane_1_3 : texture_2d<f32>;
+@group(0) @binding(5) var ext_tex_plane_1_3 : texture_2d<f32>;
 
-[[group(0), binding(6)]] var<uniform> ext_tex_params_3 : ExternalTextureParams;
+@group(0) @binding(6) var<uniform> ext_tex_params_3 : ExternalTextureParams;
 
-[[group(0), binding(2)]] var ext_tex2 : texture_2d<f32>;
+@group(0) @binding(2) var ext_tex2 : texture_2d<f32>;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   f(ext_tex, ext_tex_plane_1_2, ext_tex_params_2, smp, ext_tex2, ext_tex_plane_1_3, ext_tex_params_3);
 }
@@ -589,10 +589,10 @@
   nested(t, s);
 }
 
-[[group(0), binding(0)]] var ext_tex : texture_external;
-[[group(0), binding(1)]] var smp : sampler;
+@group(0) @binding(0) var ext_tex : texture_external;
+@group(0) @binding(1) var smp : sampler;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   f(ext_tex, smp);
 }
@@ -629,15 +629,15 @@
   nested(t, ext_tex_plane_1_1, ext_tex_params_1, s);
 }
 
-[[group(0), binding(2)]] var ext_tex_plane_1_2 : texture_2d<f32>;
+@group(0) @binding(2) var ext_tex_plane_1_2 : texture_2d<f32>;
 
-[[group(0), binding(3)]] var<uniform> ext_tex_params_2 : ExternalTextureParams;
+@group(0) @binding(3) var<uniform> ext_tex_params_2 : ExternalTextureParams;
 
-[[group(0), binding(0)]] var ext_tex : texture_2d<f32>;
+@group(0) @binding(0) var ext_tex : texture_2d<f32>;
 
-[[group(0), binding(1)]] var smp : sampler;
+@group(0) @binding(1) var smp : sampler;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   f(ext_tex, ext_tex_plane_1_2, ext_tex_params_2, smp);
 }
diff --git a/src/transform/num_workgroups_from_uniform.h b/src/transform/num_workgroups_from_uniform.h
index af922c2..ab8daa6 100644
--- a/src/transform/num_workgroups_from_uniform.h
+++ b/src/transform/num_workgroups_from_uniform.h
@@ -34,7 +34,7 @@
 ///  num_workgroups : vec3<u32>;
 /// };
 ///
-/// [[group(0), binding(0)]]
+/// @group(0) @binding(0)
 /// var<uniform> num_workgroups_ubo : num_workgroups_struct;
 /// ```
 /// The binding group and number used for this uniform buffer is provided via
diff --git a/src/transform/num_workgroups_from_uniform_test.cc b/src/transform/num_workgroups_from_uniform_test.cc
index ecb221a..bea5222 100644
--- a/src/transform/num_workgroups_from_uniform_test.cc
+++ b/src/transform/num_workgroups_from_uniform_test.cc
@@ -57,8 +57,8 @@
 
 TEST_F(NumWorkgroupsFromUniformTest, Basic) {
   auto* src = R"(
-[[stage(compute), workgroup_size(1)]]
-fn main([[builtin(num_workgroups)]] num_wgs : vec3<u32>) {
+@stage(compute) @workgroup_size(1)
+fn main(@builtin(num_workgroups) num_wgs : vec3<u32>) {
   let groups_x = num_wgs.x;
   let groups_y = num_wgs.y;
   let groups_z = num_wgs.z;
@@ -70,7 +70,7 @@
   num_workgroups : vec3<u32>;
 }
 
-[[group(0), binding(30)]] var<uniform> tint_symbol_3 : tint_symbol_2;
+@group(0) @binding(30) var<uniform> tint_symbol_3 : tint_symbol_2;
 
 fn main_inner(num_wgs : vec3<u32>) {
   let groups_x = num_wgs.x;
@@ -78,7 +78,7 @@
   let groups_z = num_wgs.z;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   main_inner(tint_symbol_3.num_workgroups);
 }
@@ -96,10 +96,10 @@
 TEST_F(NumWorkgroupsFromUniformTest, StructOnlyMember) {
   auto* src = R"(
 struct Builtins {
-  [[builtin(num_workgroups)]] num_wgs : vec3<u32>;
+  @builtin(num_workgroups) num_wgs : vec3<u32>;
 };
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main(in : Builtins) {
   let groups_x = in.num_wgs.x;
   let groups_y = in.num_wgs.y;
@@ -112,7 +112,7 @@
   num_workgroups : vec3<u32>;
 }
 
-[[group(0), binding(30)]] var<uniform> tint_symbol_3 : tint_symbol_2;
+@group(0) @binding(30) var<uniform> tint_symbol_3 : tint_symbol_2;
 
 struct Builtins {
   num_wgs : vec3<u32>;
@@ -124,7 +124,7 @@
   let groups_z = in.num_wgs.z;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   main_inner(Builtins(tint_symbol_3.num_workgroups));
 }
@@ -142,12 +142,12 @@
 TEST_F(NumWorkgroupsFromUniformTest, StructMultipleMembers) {
   auto* src = R"(
 struct Builtins {
-  [[builtin(global_invocation_id)]] gid : vec3<u32>;
-  [[builtin(num_workgroups)]] num_wgs : vec3<u32>;
-  [[builtin(workgroup_id)]] wgid : vec3<u32>;
+  @builtin(global_invocation_id) gid : vec3<u32>;
+  @builtin(num_workgroups) num_wgs : vec3<u32>;
+  @builtin(workgroup_id) wgid : vec3<u32>;
 };
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main(in : Builtins) {
   let groups_x = in.num_wgs.x;
   let groups_y = in.num_wgs.y;
@@ -160,7 +160,7 @@
   num_workgroups : vec3<u32>;
 }
 
-[[group(0), binding(30)]] var<uniform> tint_symbol_3 : tint_symbol_2;
+@group(0) @binding(30) var<uniform> tint_symbol_3 : tint_symbol_2;
 
 struct Builtins {
   gid : vec3<u32>;
@@ -169,9 +169,9 @@
 }
 
 struct tint_symbol_1 {
-  [[builtin(global_invocation_id)]]
+  @builtin(global_invocation_id)
   gid : vec3<u32>;
-  [[builtin(workgroup_id)]]
+  @builtin(workgroup_id)
   wgid : vec3<u32>;
 }
 
@@ -181,7 +181,7 @@
   let groups_z = in.num_wgs.z;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main(tint_symbol : tint_symbol_1) {
   main_inner(Builtins(tint_symbol.gid, tint_symbol_3.num_workgroups, tint_symbol.wgid));
 }
@@ -199,31 +199,31 @@
 TEST_F(NumWorkgroupsFromUniformTest, MultipleEntryPoints) {
   auto* src = R"(
 struct Builtins1 {
-  [[builtin(num_workgroups)]] num_wgs : vec3<u32>;
+  @builtin(num_workgroups) num_wgs : vec3<u32>;
 };
 
 struct Builtins2 {
-  [[builtin(global_invocation_id)]] gid : vec3<u32>;
-  [[builtin(num_workgroups)]] num_wgs : vec3<u32>;
-  [[builtin(workgroup_id)]] wgid : vec3<u32>;
+  @builtin(global_invocation_id) gid : vec3<u32>;
+  @builtin(num_workgroups) num_wgs : vec3<u32>;
+  @builtin(workgroup_id) wgid : vec3<u32>;
 };
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main1(in : Builtins1) {
   let groups_x = in.num_wgs.x;
   let groups_y = in.num_wgs.y;
   let groups_z = in.num_wgs.z;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main2(in : Builtins2) {
   let groups_x = in.num_wgs.x;
   let groups_y = in.num_wgs.y;
   let groups_z = in.num_wgs.z;
 }
 
-[[stage(compute), workgroup_size(1)]]
-fn main3([[builtin(num_workgroups)]] num_wgs : vec3<u32>) {
+@stage(compute) @workgroup_size(1)
+fn main3(@builtin(num_workgroups) num_wgs : vec3<u32>) {
   let groups_x = num_wgs.x;
   let groups_y = num_wgs.y;
   let groups_z = num_wgs.z;
@@ -235,7 +235,7 @@
   num_workgroups : vec3<u32>;
 }
 
-[[group(0), binding(30)]] var<uniform> tint_symbol_7 : tint_symbol_6;
+@group(0) @binding(30) var<uniform> tint_symbol_7 : tint_symbol_6;
 
 struct Builtins1 {
   num_wgs : vec3<u32>;
@@ -253,15 +253,15 @@
   let groups_z = in.num_wgs.z;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main1() {
   main1_inner(Builtins1(tint_symbol_7.num_workgroups));
 }
 
 struct tint_symbol_3 {
-  [[builtin(global_invocation_id)]]
+  @builtin(global_invocation_id)
   gid : vec3<u32>;
-  [[builtin(workgroup_id)]]
+  @builtin(workgroup_id)
   wgid : vec3<u32>;
 }
 
@@ -271,7 +271,7 @@
   let groups_z = in.num_wgs.z;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main2(tint_symbol_2 : tint_symbol_3) {
   main2_inner(Builtins2(tint_symbol_2.gid, tint_symbol_7.num_workgroups, tint_symbol_2.wgid));
 }
@@ -282,7 +282,7 @@
   let groups_z = num_wgs.z;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main3() {
   main3_inner(tint_symbol_7.num_workgroups);
 }
@@ -300,11 +300,11 @@
 TEST_F(NumWorkgroupsFromUniformTest, NoUsages) {
   auto* src = R"(
 struct Builtins {
-  [[builtin(global_invocation_id)]] gid : vec3<u32>;
-  [[builtin(workgroup_id)]] wgid : vec3<u32>;
+  @builtin(global_invocation_id) gid : vec3<u32>;
+  @builtin(workgroup_id) wgid : vec3<u32>;
 };
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main(in : Builtins) {
 }
 )";
@@ -316,16 +316,16 @@
 }
 
 struct tint_symbol_1 {
-  [[builtin(global_invocation_id)]]
+  @builtin(global_invocation_id)
   gid : vec3<u32>;
-  [[builtin(workgroup_id)]]
+  @builtin(workgroup_id)
   wgid : vec3<u32>;
 }
 
 fn main_inner(in : Builtins) {
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main(tint_symbol : tint_symbol_1) {
   main_inner(Builtins(tint_symbol.gid, tint_symbol.wgid));
 }
diff --git a/src/transform/pad_array_elements_test.cc b/src/transform/pad_array_elements_test.cc
index 05ca2da..441eadc 100644
--- a/src/transform/pad_array_elements_test.cc
+++ b/src/transform/pad_array_elements_test.cc
@@ -46,11 +46,11 @@
 
 TEST_F(PadArrayElementsTest, ArrayAsGlobal) {
   auto* src = R"(
-var<private> arr : [[stride(8)]] array<i32, 4>;
+var<private> arr : @stride(8) array<i32, 4>;
 )";
   auto* expect = R"(
 struct tint_padded_array_element {
-  [[size(8)]]
+  @size(8)
   el : i32;
 }
 
@@ -65,12 +65,12 @@
 TEST_F(PadArrayElementsTest, RuntimeArray) {
   auto* src = R"(
 struct S {
-  rta : [[stride(8)]] array<i32>;
+  rta : @stride(8) array<i32>;
 };
 )";
   auto* expect = R"(
 struct tint_padded_array_element {
-  [[size(8)]]
+  @size(8)
   el : i32;
 }
 
@@ -87,15 +87,15 @@
 TEST_F(PadArrayElementsTest, ArrayFunctionVar) {
   auto* src = R"(
 fn f() {
-  var arr : [[stride(16)]] array<i32, 4>;
-  arr = [[stride(16)]] array<i32, 4>();
-  arr = [[stride(16)]] array<i32, 4>(1, 2, 3, 4);
+  var arr : @stride(16) array<i32, 4>;
+  arr = @stride(16) array<i32, 4>();
+  arr = @stride(16) array<i32, 4>(1, 2, 3, 4);
   let x = arr[3];
 }
 )";
   auto* expect = R"(
 struct tint_padded_array_element {
-  [[size(16)]]
+  @size(16)
   el : i32;
 }
 
@@ -114,13 +114,13 @@
 
 TEST_F(PadArrayElementsTest, ArrayAsParam) {
   auto* src = R"(
-fn f(a : [[stride(12)]] array<i32, 4>) -> i32 {
+fn f(a : @stride(12) array<i32, 4>) -> i32 {
   return a[2];
 }
 )";
   auto* expect = R"(
 struct tint_padded_array_element {
-  [[size(12)]]
+  @size(12)
   el : i32;
 }
 
@@ -137,14 +137,14 @@
 // TODO(crbug.com/tint/781): Cannot parse the stride on the return array type.
 TEST_F(PadArrayElementsTest, DISABLED_ArrayAsReturn) {
   auto* src = R"(
-fn f() -> [[stride(8)]] array<i32, 4> {
+fn f() -> @stride(8) array<i32, 4> {
   return array<i32, 4>(1, 2, 3, 4);
 }
 )";
   auto* expect = R"(
 struct tint_padded_array_element {
   el : i32;
-  [[size(4)]]
+  @size(4)
   padding : u32;
 };
 
@@ -160,7 +160,7 @@
 
 TEST_F(PadArrayElementsTest, ArrayAlias) {
   auto* src = R"(
-type Array = [[stride(16)]] array<i32, 4>;
+type Array = @stride(16) array<i32, 4>;
 
 fn f() {
   var arr : Array;
@@ -173,7 +173,7 @@
 )";
   auto* expect = R"(
 struct tint_padded_array_element {
-  [[size(16)]]
+  @size(16)
   el : i32;
 }
 
@@ -197,25 +197,25 @@
 TEST_F(PadArrayElementsTest, ArraysInStruct) {
   auto* src = R"(
 struct S {
-  a : [[stride(8)]] array<i32, 4>;
-  b : [[stride(8)]] array<i32, 8>;
-  c : [[stride(8)]] array<i32, 4>;
-  d : [[stride(12)]] array<i32, 8>;
+  a : @stride(8) array<i32, 4>;
+  b : @stride(8) array<i32, 8>;
+  c : @stride(8) array<i32, 4>;
+  d : @stride(12) array<i32, 8>;
 };
 )";
   auto* expect = R"(
 struct tint_padded_array_element {
-  [[size(8)]]
+  @size(8)
   el : i32;
 }
 
 struct tint_padded_array_element_1 {
-  [[size(8)]]
+  @size(8)
   el : i32;
 }
 
 struct tint_padded_array_element_2 {
-  [[size(12)]]
+  @size(12)
   el : i32;
 }
 
@@ -235,39 +235,39 @@
 TEST_F(PadArrayElementsTest, ArraysOfArraysInStruct) {
   auto* src = R"(
 struct S {
-  a : [[stride(512)]] array<i32, 4>;
-  b : [[stride(512)]] array<[[stride(32)]] array<i32, 4>, 4>;
-  c : [[stride(512)]] array<[[stride(64)]] array<[[stride(8)]] array<i32, 4>, 4>, 4>;
+  a : @stride(512) array<i32, 4>;
+  b : @stride(512) array<@stride(32) array<i32, 4>, 4>;
+  c : @stride(512) array<@stride(64) array<@stride(8) array<i32, 4>, 4>, 4>;
 };
 )";
   auto* expect = R"(
 struct tint_padded_array_element {
-  [[size(512)]]
+  @size(512)
   el : i32;
 }
 
 struct tint_padded_array_element_2 {
-  [[size(32)]]
+  @size(32)
   el : i32;
 }
 
 struct tint_padded_array_element_1 {
-  [[size(512)]]
+  @size(512)
   el : array<tint_padded_array_element_2, 4u>;
 }
 
 struct tint_padded_array_element_5 {
-  [[size(8)]]
+  @size(8)
   el : i32;
 }
 
 struct tint_padded_array_element_4 {
-  [[size(64)]]
+  @size(64)
   el : array<tint_padded_array_element_5, 4u>;
 }
 
 struct tint_padded_array_element_3 {
-  [[size(512)]]
+  @size(512)
   el : array<tint_padded_array_element_4, 4u>;
 }
 
@@ -286,9 +286,9 @@
 TEST_F(PadArrayElementsTest, AccessArraysOfArraysInStruct) {
   auto* src = R"(
 struct S {
-  a : [[stride(512)]] array<i32, 4>;
-  b : [[stride(512)]] array<[[stride(32)]] array<i32, 4>, 4>;
-  c : [[stride(512)]] array<[[stride(64)]] array<[[stride(8)]] array<i32, 4>, 4>, 4>;
+  a : @stride(512) array<i32, 4>;
+  b : @stride(512) array<@stride(32) array<i32, 4>, 4>;
+  c : @stride(512) array<@stride(64) array<@stride(8) array<i32, 4>, 4>, 4>;
 };
 
 fn f(s : S) -> i32 {
@@ -297,32 +297,32 @@
 )";
   auto* expect = R"(
 struct tint_padded_array_element {
-  [[size(512)]]
+  @size(512)
   el : i32;
 }
 
 struct tint_padded_array_element_2 {
-  [[size(32)]]
+  @size(32)
   el : i32;
 }
 
 struct tint_padded_array_element_1 {
-  [[size(512)]]
+  @size(512)
   el : array<tint_padded_array_element_2, 4u>;
 }
 
 struct tint_padded_array_element_5 {
-  [[size(8)]]
+  @size(8)
   el : i32;
 }
 
 struct tint_padded_array_element_4 {
-  [[size(64)]]
+  @size(64)
   el : array<tint_padded_array_element_5, 4u>;
 }
 
 struct tint_padded_array_element_3 {
-  [[size(512)]]
+  @size(512)
   el : array<tint_padded_array_element_4, 4u>;
 }
 
@@ -346,24 +346,24 @@
   auto* src = R"(
 type T0 = i32;
 
-type T1 = [[stride(8)]] array<i32, 1>;
+type T1 = @stride(8) array<i32, 1>;
 
 type T2 = i32;
 
-fn f1(a : [[stride(8)]] array<i32, 2>) {
+fn f1(a : @stride(8) array<i32, 2>) {
 }
 
 type T3 = i32;
 
 fn f2() {
-  var v : [[stride(8)]] array<i32, 3>;
+  var v : @stride(8) array<i32, 3>;
 }
 )";
   auto* expect = R"(
 type T0 = i32;
 
 struct tint_padded_array_element {
-  [[size(8)]]
+  @size(8)
   el : i32;
 }
 
@@ -372,7 +372,7 @@
 type T2 = i32;
 
 struct tint_padded_array_element_1 {
-  [[size(8)]]
+  @size(8)
   el : i32;
 }
 
@@ -382,7 +382,7 @@
 type T3 = i32;
 
 struct tint_padded_array_element_2 {
-  [[size(8)]]
+  @size(8)
   el : i32;
 }
 
diff --git a/src/transform/remove_phonies_test.cc b/src/transform/remove_phonies_test.cc
index 6d6c86d..6e8a1f1 100644
--- a/src/transform/remove_phonies_test.cc
+++ b/src/transform/remove_phonies_test.cc
@@ -37,7 +37,7 @@
 
 TEST_F(RemovePhoniesTest, NoSideEffects) {
   auto* src = R"(
-[[group(0), binding(0)]] var t : texture_2d<f32>;
+@group(0) @binding(0) var t : texture_2d<f32>;
 
 fn f() {
   var v : i32;
@@ -54,7 +54,7 @@
 )";
 
   auto* expect = R"(
-[[group(0), binding(0)]] var t : texture_2d<f32>;
+@group(0) @binding(0) var t : texture_2d<f32>;
 
 fn f() {
   var v : i32;
@@ -177,7 +177,7 @@
   arr : array<i32>;
 };
 
-[[group(0), binding(0)]] var<storage, read_write> s : S;
+@group(0) @binding(0) var<storage, read_write> s : S;
 
 fn x() -> i32 {
   return 0;
@@ -206,7 +206,7 @@
   arr : array<i32>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> s : S;
+@group(0) @binding(0) var<storage, read_write> s : S;
 
 fn x() -> i32 {
   return 0;
diff --git a/src/transform/renamer_test.cc b/src/transform/renamer_test.cc
index 7f83043..5ef8ee5 100644
--- a/src/transform/renamer_test.cc
+++ b/src/transform/renamer_test.cc
@@ -46,9 +46,9 @@
   return vert_idx;
 }
 
-[[stage(vertex)]]
-fn entry([[builtin(vertex_index)]] vert_idx : u32
-        ) -> [[builtin(position)]] vec4<f32>  {
+@stage(vertex)
+fn entry(@builtin(vertex_index) vert_idx : u32
+        ) -> @builtin(position) vec4<f32>  {
   ignore(test(vert_idx));
   return vec4<f32>();
 }
@@ -59,8 +59,8 @@
   return tint_symbol_1;
 }
 
-[[stage(vertex)]]
-fn tint_symbol_2([[builtin(vertex_index)]] tint_symbol_1 : u32) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn tint_symbol_2(@builtin(vertex_index) tint_symbol_1 : u32) -> @builtin(position) vec4<f32> {
   ignore(tint_symbol(tint_symbol_1));
   return vec4<f32>();
 }
@@ -83,8 +83,8 @@
 
 TEST_F(RenamerTest, PreserveSwizzles) {
   auto* src = R"(
-[[stage(vertex)]]
-fn entry() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn entry() -> @builtin(position) vec4<f32> {
   var v : vec4<f32>;
   var rgba : f32;
   var xyzw : f32;
@@ -93,8 +93,8 @@
 )";
 
   auto* expect = R"(
-[[stage(vertex)]]
-fn tint_symbol() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn tint_symbol() -> @builtin(position) vec4<f32> {
   var tint_symbol_1 : vec4<f32>;
   var tint_symbol_2 : f32;
   var tint_symbol_3 : f32;
@@ -120,16 +120,16 @@
 
 TEST_F(RenamerTest, PreserveIntrinsics) {
   auto* src = R"(
-[[stage(vertex)]]
-fn entry() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn entry() -> @builtin(position) vec4<f32> {
   var blah : vec4<f32>;
   return abs(blah);
 }
 )";
 
   auto* expect = R"(
-[[stage(vertex)]]
-fn tint_symbol() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn tint_symbol() -> @builtin(position) vec4<f32> {
   var tint_symbol_1 : vec4<f32>;
   return abs(tint_symbol_1);
 }
@@ -151,7 +151,7 @@
 
 TEST_F(RenamerTest, PreserveBuiltinTypes) {
   auto* src = R"(
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn entry() {
   var a = modf(1.0).whole;
   var b = modf(1.0).fract;
@@ -161,7 +161,7 @@
 )";
 
   auto* expect = R"(
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn tint_symbol() {
   var tint_symbol_1 = modf(1.0).whole;
   var tint_symbol_2 = modf(1.0).fract;
@@ -186,8 +186,8 @@
 
 TEST_F(RenamerTest, AttemptSymbolCollision) {
   auto* src = R"(
-[[stage(vertex)]]
-fn entry() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn entry() -> @builtin(position) vec4<f32> {
   var tint_symbol : vec4<f32>;
   var tint_symbol_2 : vec4<f32>;
   var tint_symbol_4 : vec4<f32>;
@@ -196,8 +196,8 @@
 )";
 
   auto* expect = R"(
-[[stage(vertex)]]
-fn tint_symbol() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn tint_symbol() -> @builtin(position) vec4<f32> {
   var tint_symbol_1 : vec4<f32>;
   var tint_symbol_2 : vec4<f32>;
   var tint_symbol_3 : vec4<f32>;
@@ -229,7 +229,7 @@
   auto keyword = GetParam();
 
   auto src = R"(
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main() {
   var )" + keyword +
              R"( : i32;
@@ -237,7 +237,7 @@
 )";
 
   auto* expect = R"(
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main() {
   var tint_symbol : i32;
 }
@@ -254,7 +254,7 @@
   auto keyword = GetParam();
 
   auto src = R"(
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main() {
   var )" + keyword +
              R"( : i32;
@@ -262,7 +262,7 @@
 )";
 
   auto* expect = R"(
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main() {
   var tint_symbol : i32;
 }
@@ -279,7 +279,7 @@
   auto keyword = GetParam();
 
   auto src = R"(
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main() {
   var )" + keyword +
              R"( : i32;
@@ -287,7 +287,7 @@
 )";
 
   auto* expect = R"(
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main() {
   var tint_symbol : i32;
 }
diff --git a/src/transform/robustness_test.cc b/src/transform/robustness_test.cc
index a471381..8af6cce 100644
--- a/src/transform/robustness_test.cc
+++ b/src/transform/robustness_test.cc
@@ -178,7 +178,7 @@
   a : array<f32, 0x7fffffff>;
   b : array<f32>;
 };
-[[group(0), binding(0)]] var<storage, read> s : S;
+@group(0) @binding(0) var<storage, read> s : S;
 
 fn f() {
   // Signed
@@ -217,7 +217,7 @@
   b : array<f32>;
 };
 
-[[group(0), binding(0)]] var<storage, read> s : S;
+@group(0) @binding(0) var<storage, read> s : S;
 
 fn f() {
   var i32_a1 : f32 = s.a[2147483646];
@@ -579,7 +579,7 @@
 
 // TODO(dsinclair): Implement when constant_id exists
 TEST_F(RobustnessTest, DISABLED_Vector_Constant_Id_Clamps) {
-  // [[override(1300)]] let idx : i32;
+  // @override(1300) let idx : i32;
   // var a : vec3<f32>
   // var b : f32 = a[idx]
   //
@@ -588,7 +588,7 @@
 
 // TODO(dsinclair): Implement when constant_id exists
 TEST_F(RobustnessTest, DISABLED_Array_Constant_Id_Clamps) {
-  // [[override(1300)]] let idx : i32;
+  // @override(1300) let idx : i32;
   // var a : array<f32, 4>
   // var b : f32 = a[idx]
   //
@@ -597,7 +597,7 @@
 
 // TODO(dsinclair): Implement when constant_id exists
 TEST_F(RobustnessTest, DISABLED_Matrix_Column_Constant_Id_Clamps) {
-  // [[override(1300)]] let idx : i32;
+  // @override(1300) let idx : i32;
   // var a : mat3x2<f32>
   // var b : f32 = a[idx][1]
   //
@@ -606,7 +606,7 @@
 
 // TODO(dsinclair): Implement when constant_id exists
 TEST_F(RobustnessTest, DISABLED_Matrix_Row_Constant_Id_Clamps) {
-  // [[override(1300)]] let idx : i32;
+  // @override(1300) let idx : i32;
   // var a : mat3x2<f32>
   // var b : f32 = a[1][idx]
   //
@@ -619,7 +619,7 @@
   a : f32;
   b : array<f32>;
 };
-[[group(0), binding(0)]] var<storage, read> s : S;
+@group(0) @binding(0) var<storage, read> s : S;
 
 fn f() {
   var d : f32 = s.b[25];
@@ -632,7 +632,7 @@
   b : array<f32>;
 }
 
-[[group(0), binding(0)]] var<storage, read> s : S;
+@group(0) @binding(0) var<storage, read> s : S;
 
 fn f() {
   var d : f32 = s.b[min(25u, (arrayLength(&(s.b)) - 1u))];
@@ -652,14 +652,14 @@
 // Clamp textureLoad() coord, array_index and level values
 TEST_F(RobustnessTest, TextureLoad_Clamp) {
   auto* src = R"(
-[[group(0), binding(0)]] var tex_1d : texture_1d<f32>;
-[[group(0), binding(0)]] var tex_2d : texture_2d<f32>;
-[[group(0), binding(0)]] var tex_2d_arr : texture_2d_array<f32>;
-[[group(0), binding(0)]] var tex_3d : texture_3d<f32>;
-[[group(0), binding(0)]] var tex_ms_2d : texture_multisampled_2d<f32>;
-[[group(0), binding(0)]] var tex_depth_2d : texture_depth_2d;
-[[group(0), binding(0)]] var tex_depth_2d_arr : texture_depth_2d_array;
-[[group(0), binding(0)]] var tex_external : texture_external;
+@group(0) @binding(0) var tex_1d : texture_1d<f32>;
+@group(0) @binding(0) var tex_2d : texture_2d<f32>;
+@group(0) @binding(0) var tex_2d_arr : texture_2d_array<f32>;
+@group(0) @binding(0) var tex_3d : texture_3d<f32>;
+@group(0) @binding(0) var tex_ms_2d : texture_multisampled_2d<f32>;
+@group(0) @binding(0) var tex_depth_2d : texture_depth_2d;
+@group(0) @binding(0) var tex_depth_2d_arr : texture_depth_2d_array;
+@group(0) @binding(0) var tex_external : texture_external;
 
 fn f() {
   var array_idx : i32;
@@ -679,21 +679,21 @@
 
   auto* expect =
       R"(
-[[group(0), binding(0)]] var tex_1d : texture_1d<f32>;
+@group(0) @binding(0) var tex_1d : texture_1d<f32>;
 
-[[group(0), binding(0)]] var tex_2d : texture_2d<f32>;
+@group(0) @binding(0) var tex_2d : texture_2d<f32>;
 
-[[group(0), binding(0)]] var tex_2d_arr : texture_2d_array<f32>;
+@group(0) @binding(0) var tex_2d_arr : texture_2d_array<f32>;
 
-[[group(0), binding(0)]] var tex_3d : texture_3d<f32>;
+@group(0) @binding(0) var tex_3d : texture_3d<f32>;
 
-[[group(0), binding(0)]] var tex_ms_2d : texture_multisampled_2d<f32>;
+@group(0) @binding(0) var tex_ms_2d : texture_multisampled_2d<f32>;
 
-[[group(0), binding(0)]] var tex_depth_2d : texture_depth_2d;
+@group(0) @binding(0) var tex_depth_2d : texture_depth_2d;
 
-[[group(0), binding(0)]] var tex_depth_2d_arr : texture_depth_2d_array;
+@group(0) @binding(0) var tex_depth_2d_arr : texture_depth_2d_array;
 
-[[group(0), binding(0)]] var tex_external : texture_external;
+@group(0) @binding(0) var tex_external : texture_external;
 
 fn f() {
   var array_idx : i32;
@@ -718,13 +718,13 @@
 // Clamp textureStore() coord, array_index and level values
 TEST_F(RobustnessTest, TextureStore_Clamp) {
   auto* src = R"(
-[[group(0), binding(0)]] var tex1d : texture_storage_1d<rgba8sint, write>;
+@group(0) @binding(0) var tex1d : texture_storage_1d<rgba8sint, write>;
 
-[[group(0), binding(1)]] var tex2d : texture_storage_2d<rgba8sint, write>;
+@group(0) @binding(1) var tex2d : texture_storage_2d<rgba8sint, write>;
 
-[[group(0), binding(2)]] var tex2d_arr : texture_storage_2d_array<rgba8sint, write>;
+@group(0) @binding(2) var tex2d_arr : texture_storage_2d_array<rgba8sint, write>;
 
-[[group(0), binding(3)]] var tex3d : texture_storage_3d<rgba8sint, write>;
+@group(0) @binding(3) var tex3d : texture_storage_3d<rgba8sint, write>;
 
 fn f() {
   textureStore(tex1d, 10, vec4<i32>());
@@ -735,13 +735,13 @@
 )";
 
   auto* expect = R"(
-[[group(0), binding(0)]] var tex1d : texture_storage_1d<rgba8sint, write>;
+@group(0) @binding(0) var tex1d : texture_storage_1d<rgba8sint, write>;
 
-[[group(0), binding(1)]] var tex2d : texture_storage_2d<rgba8sint, write>;
+@group(0) @binding(1) var tex2d : texture_storage_2d<rgba8sint, write>;
 
-[[group(0), binding(2)]] var tex2d_arr : texture_storage_2d_array<rgba8sint, write>;
+@group(0) @binding(2) var tex2d_arr : texture_storage_2d_array<rgba8sint, write>;
 
-[[group(0), binding(3)]] var tex3d : texture_storage_3d<rgba8sint, write>;
+@group(0) @binding(3) var tex3d : texture_storage_3d<rgba8sint, write>;
 
 fn f() {
   textureStore(tex1d, clamp(10, i32(), (textureDimensions(tex1d) - i32(1))), vec4<i32>());
@@ -779,7 +779,7 @@
   b : array<f32>;
 };
 
-[[group(0), binding(0)]] var<storage, read> s : S;
+@group(0) @binding(0) var<storage, read> s : S;
 
 let c : u32 = 1u;
 
@@ -796,7 +796,7 @@
   b : array<f32>;
 }
 
-[[group(0), binding(0)]] var<storage, read> s : S;
+@group(0) @binding(0) var<storage, read> s : S;
 
 let c : u32 = 1u;
 
@@ -817,13 +817,13 @@
   a : array<f32, 4>;
   b : array<f32>;
 };
-[[group(0), binding(0)]] var<storage, read> s : S;
+@group(0) @binding(0) var<storage, read> s : S;
 
-type UArr = [[stride(16)]] array<f32, 4>;
+type UArr = @stride(16) array<f32, 4>;
 struct U {
   a : UArr;
 };
-[[group(1), binding(0)]] var<uniform> u : U;
+@group(1) @binding(0) var<uniform> u : U;
 
 fn f() {
   // Signed
@@ -876,15 +876,15 @@
   b : array<f32>;
 }
 
-[[group(0), binding(0)]] var<storage, read> s : S;
+@group(0) @binding(0) var<storage, read> s : S;
 
-type UArr = [[stride(16)]] array<f32, 4>;
+type UArr = @stride(16) array<f32, 4>;
 
 struct U {
   a : UArr;
 }
 
-[[group(1), binding(0)]] var<uniform> u : U;
+@group(1) @binding(0) var<uniform> u : U;
 
 fn f() {
   var i32_sa1 : f32 = s.a[3];
@@ -939,15 +939,15 @@
   b : array<f32>;
 }
 
-[[group(0), binding(0)]] var<storage, read> s : S;
+@group(0) @binding(0) var<storage, read> s : S;
 
-type UArr = [[stride(16)]] array<f32, 4>;
+type UArr = @stride(16) array<f32, 4>;
 
 struct U {
   a : UArr;
 }
 
-[[group(1), binding(0)]] var<uniform> u : U;
+@group(1) @binding(0) var<uniform> u : U;
 
 fn f() {
   var i32_sa1 : f32 = s.a[4];
@@ -1004,15 +1004,15 @@
   b : array<f32>;
 }
 
-[[group(0), binding(0)]] var<storage, read> s : S;
+@group(0) @binding(0) var<storage, read> s : S;
 
-type UArr = [[stride(16)]] array<f32, 4>;
+type UArr = @stride(16) array<f32, 4>;
 
 struct U {
   a : UArr;
 }
 
-[[group(1), binding(0)]] var<uniform> u : U;
+@group(1) @binding(0) var<uniform> u : U;
 
 fn f() {
   var i32_sa1 : f32 = s.a[3];
@@ -1069,15 +1069,15 @@
   b : array<f32>;
 }
 
-[[group(0), binding(0)]] var<storage, read> s : S;
+@group(0) @binding(0) var<storage, read> s : S;
 
-type UArr = [[stride(16)]] array<f32, 4>;
+type UArr = @stride(16) array<f32, 4>;
 
 struct U {
   a : UArr;
 }
 
-[[group(1), binding(0)]] var<uniform> u : U;
+@group(1) @binding(0) var<uniform> u : U;
 
 fn f() {
   var i32_sa1 : f32 = s.a[4];
diff --git a/src/transform/simplify_pointers_test.cc b/src/transform/simplify_pointers_test.cc
index 6b55d32..a9cce89 100644
--- a/src/transform/simplify_pointers_test.cc
+++ b/src/transform/simplify_pointers_test.cc
@@ -249,7 +249,7 @@
   return 1;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   var arr = array<f32, 4>();
   for (let a = &arr[foo()]; ;) {
@@ -264,7 +264,7 @@
   return 1;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   var arr = array<f32, 4>();
   let a_save = foo();
@@ -350,7 +350,7 @@
   auto* src = R"(
 var<private> a : array<i32, 2>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let x = &a;
   var a : i32 = (*x)[0];
@@ -363,7 +363,7 @@
   auto* expect = R"(
 var<private> a : array<i32, 2>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var a_1 : i32 = a[0];
   {
diff --git a/src/transform/single_entry_point_test.cc b/src/transform/single_entry_point_test.cc
index b2193b1..6b950fe 100644
--- a/src/transform/single_entry_point_test.cc
+++ b/src/transform/single_entry_point_test.cc
@@ -49,8 +49,8 @@
 
 TEST_F(SingleEntryPointTest, Error_InvalidEntryPoint) {
   auto* src = R"(
-[[stage(vertex)]]
-fn main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main() -> @builtin(position) vec4<f32> {
   return vec4<f32>();
 }
 )";
@@ -70,7 +70,7 @@
   auto* src = R"(
 fn foo() {}
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {}
 )";
 
@@ -87,7 +87,7 @@
 
 TEST_F(SingleEntryPointTest, SingleEntryPoint) {
   auto* src = R"(
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
 }
 )";
@@ -103,26 +103,26 @@
 
 TEST_F(SingleEntryPointTest, MultipleEntryPoints) {
   auto* src = R"(
-[[stage(vertex)]]
-fn vert_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vert_main() -> @builtin(position) vec4<f32> {
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main() {
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn comp_main1() {
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn comp_main2() {
 }
 )";
 
   auto* expect = R"(
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn comp_main1() {
 }
 )";
@@ -146,23 +146,23 @@
 
 var<private> d : f32;
 
-[[stage(vertex)]]
-fn vert_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vert_main() -> @builtin(position) vec4<f32> {
   a = 0.0;
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main() {
   b = 0.0;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn comp_main1() {
   c = 0.0;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn comp_main2() {
   d = 0.0;
 }
@@ -171,7 +171,7 @@
   auto* expect = R"(
 var<private> c : f32;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn comp_main1() {
   c = 0.0;
 }
@@ -196,23 +196,23 @@
 
 let d : f32 = 1.0;
 
-[[stage(vertex)]]
-fn vert_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vert_main() -> @builtin(position) vec4<f32> {
   let local_a : f32 = a;
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main() {
   let local_b : f32 = b;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn comp_main1() {
   let local_c : f32 = c;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn comp_main2() {
   let local_d : f32 = d;
 }
@@ -221,7 +221,7 @@
   auto* expect = R"(
 let c : f32 = 1.0;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn comp_main1() {
   let local_c : f32 = c;
 }
@@ -240,7 +240,7 @@
   auto* src = R"(
 let size : i32 = 1;
 
-[[stage(compute), workgroup_size(size)]]
+@stage(compute) @workgroup_size(size)
 fn main() {
 }
 )";
@@ -258,32 +258,32 @@
 
 TEST_F(SingleEntryPointTest, OverridableConstants) {
   auto* src = R"(
-[[override(1001)]] let c1 : u32 = 1u;
+@override(1001) let c1 : u32 = 1u;
 [[override]] let c2 : u32 = 1u;
-[[override(0)]] let c3 : u32 = 1u;
-[[override(9999)]] let c4 : u32 = 1u;
+@override(0) let c3 : u32 = 1u;
+@override(9999) let c4 : u32 = 1u;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn comp_main1() {
     let local_d = c1;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn comp_main2() {
     let local_d = c2;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn comp_main3() {
     let local_d = c3;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn comp_main4() {
     let local_d = c4;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn comp_main5() {
     let local_d = 1u;
 }
@@ -292,9 +292,9 @@
   {
     SingleEntryPoint::Config cfg("comp_main1");
     auto* expect = R"(
-[[override(1001)]] let c1 : u32 = 1u;
+@override(1001) let c1 : u32 = 1u;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn comp_main1() {
   let local_d = c1;
 }
@@ -310,9 +310,9 @@
     // The decorator is replaced with the one with explicit id
     // And should not be affected by other constants stripped away
     auto* expect = R"(
-[[override(1)]] let c2 : u32 = 1u;
+@override(1) let c2 : u32 = 1u;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn comp_main2() {
   let local_d = c2;
 }
@@ -326,9 +326,9 @@
   {
     SingleEntryPoint::Config cfg("comp_main3");
     auto* expect = R"(
-[[override(0)]] let c3 : u32 = 1u;
+@override(0) let c3 : u32 = 1u;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn comp_main3() {
   let local_d = c3;
 }
@@ -342,9 +342,9 @@
   {
     SingleEntryPoint::Config cfg("comp_main4");
     auto* expect = R"(
-[[override(9999)]] let c4 : u32 = 1u;
+@override(9999) let c4 : u32 = 1u;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn comp_main4() {
   let local_d = c4;
 }
@@ -358,7 +358,7 @@
   {
     SingleEntryPoint::Config cfg("comp_main5");
     auto* expect = R"(
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn comp_main5() {
   let local_d = 1u;
 }
@@ -391,12 +391,12 @@
   inner_shared();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn comp_main1() {
   outer1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn comp_main2() {
   outer2();
 }
@@ -414,7 +414,7 @@
   inner_shared();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn comp_main1() {
   outer1();
 }
@@ -465,12 +465,12 @@
   outer2_var = 0.0;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn comp_main1() {
   outer1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn comp_main2() {
   outer2();
 }
@@ -497,7 +497,7 @@
   outer1_var = 0.0;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn comp_main1() {
   outer1();
 }
diff --git a/src/transform/vectorize_scalar_matrix_constructors_test.cc b/src/transform/vectorize_scalar_matrix_constructors_test.cc
index c603ee2..7e72e4c 100644
--- a/src/transform/vectorize_scalar_matrix_constructors_test.cc
+++ b/src/transform/vectorize_scalar_matrix_constructors_test.cc
@@ -54,7 +54,7 @@
   }
 
   std::string tmpl = R"(
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   let m = ${matrix}(${values});
 }
@@ -83,7 +83,7 @@
   }
 
   std::string tmpl = R"(
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   let m = ${matrix}(${columns});
 }
diff --git a/src/transform/vertex_pulling_test.cc b/src/transform/vertex_pulling_test.cc
index 10b8ee8..b2482af 100644
--- a/src/transform/vertex_pulling_test.cc
+++ b/src/transform/vertex_pulling_test.cc
@@ -38,8 +38,8 @@
 
 TEST_F(VertexPullingTest, Error_InvalidEntryPoint) {
   auto* src = R"(
-[[stage(vertex)]]
-fn main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main() -> @builtin(position) vec4<f32> {
   return vec4<f32>();
 }
 )";
@@ -58,7 +58,7 @@
 
 TEST_F(VertexPullingTest, Error_EntryPointWrongStage) {
   auto* src = R"(
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {}
 )";
 
@@ -76,8 +76,8 @@
 
 TEST_F(VertexPullingTest, Error_BadStride) {
   auto* src = R"(
-[[stage(vertex)]]
-fn main([[location(0)]] var_a : f32) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main(@location(0) var_a : f32) -> @builtin(position) vec4<f32> {
   return vec4<f32>(var_a, 0.0, 0.0, 1.0);
 }
 )";
@@ -100,19 +100,19 @@
 
 TEST_F(VertexPullingTest, BasicModule) {
   auto* src = R"(
-[[stage(vertex)]]
-fn main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main() -> @builtin(position) vec4<f32> {
   return vec4<f32>();
 }
 )";
 
   auto* expect = R"(
 struct TintVertexData {
-  tint_vertex_data : [[stride(4)]] array<u32>;
+  tint_vertex_data : @stride(4) array<u32>;
 }
 
-[[stage(vertex)]]
-fn main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main() -> @builtin(position) vec4<f32> {
   return vec4<f32>();
 }
 )";
@@ -129,21 +129,21 @@
 
 TEST_F(VertexPullingTest, OneAttribute) {
   auto* src = R"(
-[[stage(vertex)]]
-fn main([[location(0)]] var_a : f32) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main(@location(0) var_a : f32) -> @builtin(position) vec4<f32> {
   return vec4<f32>(var_a, 0.0, 0.0, 1.0);
 }
 )";
 
   auto* expect = R"(
 struct TintVertexData {
-  tint_vertex_data : [[stride(4)]] array<u32>;
+  tint_vertex_data : @stride(4) array<u32>;
 }
 
-[[binding(0), group(4)]] var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
+@binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
 
-[[stage(vertex)]]
-fn main([[builtin(vertex_index)]] tint_pulling_vertex_index : u32) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main(@builtin(vertex_index) tint_pulling_vertex_index : u32) -> @builtin(position) vec4<f32> {
   var var_a : f32;
   {
     let buffer_array_base_0 = tint_pulling_vertex_index;
@@ -167,21 +167,21 @@
 
 TEST_F(VertexPullingTest, OneInstancedAttribute) {
   auto* src = R"(
-[[stage(vertex)]]
-fn main([[location(0)]] var_a : f32) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main(@location(0) var_a : f32) -> @builtin(position) vec4<f32> {
   return vec4<f32>(var_a, 0.0, 0.0, 1.0);
 }
 )";
 
   auto* expect = R"(
 struct TintVertexData {
-  tint_vertex_data : [[stride(4)]] array<u32>;
+  tint_vertex_data : @stride(4) array<u32>;
 }
 
-[[binding(0), group(4)]] var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
+@binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
 
-[[stage(vertex)]]
-fn main([[builtin(instance_index)]] tint_pulling_instance_index : u32) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main(@builtin(instance_index) tint_pulling_instance_index : u32) -> @builtin(position) vec4<f32> {
   var var_a : f32;
   {
     let buffer_array_base_0 = tint_pulling_instance_index;
@@ -205,21 +205,21 @@
 
 TEST_F(VertexPullingTest, OneAttributeDifferentOutputSet) {
   auto* src = R"(
-[[stage(vertex)]]
-fn main([[location(0)]] var_a : f32) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main(@location(0) var_a : f32) -> @builtin(position) vec4<f32> {
   return vec4<f32>(var_a, 0.0, 0.0, 1.0);
 }
 )";
 
   auto* expect = R"(
 struct TintVertexData {
-  tint_vertex_data : [[stride(4)]] array<u32>;
+  tint_vertex_data : @stride(4) array<u32>;
 }
 
-[[binding(0), group(5)]] var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
+@binding(0) @group(5) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
 
-[[stage(vertex)]]
-fn main([[builtin(vertex_index)]] tint_pulling_vertex_index : u32) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main(@builtin(vertex_index) tint_pulling_vertex_index : u32) -> @builtin(position) vec4<f32> {
   var var_a : f32;
   {
     let buffer_array_base_0 = tint_pulling_vertex_index;
@@ -245,29 +245,29 @@
 TEST_F(VertexPullingTest, OneAttribute_Struct) {
   auto* src = R"(
 struct Inputs {
-  [[location(0)]] var_a : f32;
+  @location(0) var_a : f32;
 };
 
-[[stage(vertex)]]
-fn main(inputs : Inputs) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main(inputs : Inputs) -> @builtin(position) vec4<f32> {
   return vec4<f32>(inputs.var_a, 0.0, 0.0, 1.0);
 }
 )";
 
   auto* expect = R"(
 struct TintVertexData {
-  tint_vertex_data : [[stride(4)]] array<u32>;
+  tint_vertex_data : @stride(4) array<u32>;
 }
 
-[[binding(0), group(4)]] var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
+@binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
 
 struct Inputs {
-  [[location(0)]]
+  @location(0)
   var_a : f32;
 }
 
-[[stage(vertex)]]
-fn main([[builtin(vertex_index)]] tint_pulling_vertex_index : u32) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main(@builtin(vertex_index) tint_pulling_vertex_index : u32) -> @builtin(position) vec4<f32> {
   var inputs : Inputs;
   {
     let buffer_array_base_0 = tint_pulling_vertex_index;
@@ -292,27 +292,27 @@
 // We expect the transform to use an existing builtin variables if it finds them
 TEST_F(VertexPullingTest, ExistingVertexIndexAndInstanceIndex) {
   auto* src = R"(
-[[stage(vertex)]]
-fn main([[location(0)]] var_a : f32,
-        [[location(1)]] var_b : f32,
-        [[builtin(vertex_index)]] custom_vertex_index : u32,
-        [[builtin(instance_index)]] custom_instance_index : u32
-        ) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main(@location(0) var_a : f32,
+        @location(1) var_b : f32,
+        @builtin(vertex_index) custom_vertex_index : u32,
+        @builtin(instance_index) custom_instance_index : u32
+        ) -> @builtin(position) vec4<f32> {
   return vec4<f32>(var_a, var_b, 0.0, 1.0);
 }
 )";
 
   auto* expect = R"(
 struct TintVertexData {
-  tint_vertex_data : [[stride(4)]] array<u32>;
+  tint_vertex_data : @stride(4) array<u32>;
 }
 
-[[binding(0), group(4)]] var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
+@binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
 
-[[binding(1), group(4)]] var<storage, read> tint_pulling_vertex_buffer_1 : TintVertexData;
+@binding(1) @group(4) var<storage, read> tint_pulling_vertex_buffer_1 : TintVertexData;
 
-[[stage(vertex)]]
-fn main([[builtin(vertex_index)]] custom_vertex_index : u32, [[builtin(instance_index)]] custom_instance_index : u32) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main(@builtin(vertex_index) custom_vertex_index : u32, @builtin(instance_index) custom_instance_index : u32) -> @builtin(position) vec4<f32> {
   var var_a : f32;
   var var_b : f32;
   {
@@ -350,47 +350,47 @@
 TEST_F(VertexPullingTest, ExistingVertexIndexAndInstanceIndex_Struct) {
   auto* src = R"(
 struct Inputs {
-  [[location(0)]] var_a : f32;
-  [[location(1)]] var_b : f32;
-  [[builtin(vertex_index)]] custom_vertex_index : u32;
-  [[builtin(instance_index)]] custom_instance_index : u32;
+  @location(0) var_a : f32;
+  @location(1) var_b : f32;
+  @builtin(vertex_index) custom_vertex_index : u32;
+  @builtin(instance_index) custom_instance_index : u32;
 };
 
-[[stage(vertex)]]
-fn main(inputs : Inputs) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main(inputs : Inputs) -> @builtin(position) vec4<f32> {
   return vec4<f32>(inputs.var_a, inputs.var_b, 0.0, 1.0);
 }
 )";
 
   auto* expect = R"(
 struct TintVertexData {
-  tint_vertex_data : [[stride(4)]] array<u32>;
+  tint_vertex_data : @stride(4) array<u32>;
 }
 
-[[binding(0), group(4)]] var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
+@binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
 
-[[binding(1), group(4)]] var<storage, read> tint_pulling_vertex_buffer_1 : TintVertexData;
+@binding(1) @group(4) var<storage, read> tint_pulling_vertex_buffer_1 : TintVertexData;
 
 struct tint_symbol {
-  [[builtin(vertex_index)]]
+  @builtin(vertex_index)
   custom_vertex_index : u32;
-  [[builtin(instance_index)]]
+  @builtin(instance_index)
   custom_instance_index : u32;
 }
 
 struct Inputs {
-  [[location(0)]]
+  @location(0)
   var_a : f32;
-  [[location(1)]]
+  @location(1)
   var_b : f32;
-  [[builtin(vertex_index)]]
+  @builtin(vertex_index)
   custom_vertex_index : u32;
-  [[builtin(instance_index)]]
+  @builtin(instance_index)
   custom_instance_index : u32;
 }
 
-[[stage(vertex)]]
-fn main(tint_symbol_1 : tint_symbol) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main(tint_symbol_1 : tint_symbol) -> @builtin(position) vec4<f32> {
   var inputs : Inputs;
   inputs.custom_vertex_index = tint_symbol_1.custom_vertex_index;
   inputs.custom_instance_index = tint_symbol_1.custom_instance_index;
@@ -429,46 +429,46 @@
 TEST_F(VertexPullingTest, ExistingVertexIndexAndInstanceIndex_SeparateStruct) {
   auto* src = R"(
 struct Inputs {
-  [[location(0)]] var_a : f32;
-  [[location(1)]] var_b : f32;
+  @location(0) var_a : f32;
+  @location(1) var_b : f32;
 };
 
 struct Indices {
-  [[builtin(vertex_index)]] custom_vertex_index : u32;
-  [[builtin(instance_index)]] custom_instance_index : u32;
+  @builtin(vertex_index) custom_vertex_index : u32;
+  @builtin(instance_index) custom_instance_index : u32;
 };
 
-[[stage(vertex)]]
-fn main(inputs : Inputs, indices : Indices) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main(inputs : Inputs, indices : Indices) -> @builtin(position) vec4<f32> {
   return vec4<f32>(inputs.var_a, inputs.var_b, 0.0, 1.0);
 }
 )";
 
   auto* expect = R"(
 struct TintVertexData {
-  tint_vertex_data : [[stride(4)]] array<u32>;
+  tint_vertex_data : @stride(4) array<u32>;
 }
 
-[[binding(0), group(4)]] var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
+@binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
 
-[[binding(1), group(4)]] var<storage, read> tint_pulling_vertex_buffer_1 : TintVertexData;
+@binding(1) @group(4) var<storage, read> tint_pulling_vertex_buffer_1 : TintVertexData;
 
 struct Inputs {
-  [[location(0)]]
+  @location(0)
   var_a : f32;
-  [[location(1)]]
+  @location(1)
   var_b : f32;
 }
 
 struct Indices {
-  [[builtin(vertex_index)]]
+  @builtin(vertex_index)
   custom_vertex_index : u32;
-  [[builtin(instance_index)]]
+  @builtin(instance_index)
   custom_instance_index : u32;
 }
 
-[[stage(vertex)]]
-fn main(indices : Indices) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main(indices : Indices) -> @builtin(position) vec4<f32> {
   var inputs : Inputs;
   {
     let buffer_array_base_0 = indices.custom_vertex_index;
@@ -504,22 +504,22 @@
 
 TEST_F(VertexPullingTest, TwoAttributesSameBuffer) {
   auto* src = R"(
-[[stage(vertex)]]
-fn main([[location(0)]] var_a : f32,
-        [[location(1)]] var_b : vec4<f32>) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main(@location(0) var_a : f32,
+        @location(1) var_b : vec4<f32>) -> @builtin(position) vec4<f32> {
   return vec4<f32>();
 }
 )";
 
   auto* expect = R"(
 struct TintVertexData {
-  tint_vertex_data : [[stride(4)]] array<u32>;
+  tint_vertex_data : @stride(4) array<u32>;
 }
 
-[[binding(0), group(4)]] var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
+@binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
 
-[[stage(vertex)]]
-fn main([[builtin(vertex_index)]] tint_pulling_vertex_index : u32) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main(@builtin(vertex_index) tint_pulling_vertex_index : u32) -> @builtin(position) vec4<f32> {
   var var_a : f32;
   var var_b : vec4<f32>;
   {
@@ -547,28 +547,28 @@
 
 TEST_F(VertexPullingTest, FloatVectorAttributes) {
   auto* src = R"(
-[[stage(vertex)]]
-fn main([[location(0)]] var_a : vec2<f32>,
-        [[location(1)]] var_b : vec3<f32>,
-        [[location(2)]] var_c : vec4<f32>
-        ) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main(@location(0) var_a : vec2<f32>,
+        @location(1) var_b : vec3<f32>,
+        @location(2) var_c : vec4<f32>
+        ) -> @builtin(position) vec4<f32> {
   return vec4<f32>();
 }
 )";
 
   auto* expect = R"(
 struct TintVertexData {
-  tint_vertex_data : [[stride(4)]] array<u32>;
+  tint_vertex_data : @stride(4) array<u32>;
 }
 
-[[binding(0), group(4)]] var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
+@binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
 
-[[binding(1), group(4)]] var<storage, read> tint_pulling_vertex_buffer_1 : TintVertexData;
+@binding(1) @group(4) var<storage, read> tint_pulling_vertex_buffer_1 : TintVertexData;
 
-[[binding(2), group(4)]] var<storage, read> tint_pulling_vertex_buffer_2 : TintVertexData;
+@binding(2) @group(4) var<storage, read> tint_pulling_vertex_buffer_2 : TintVertexData;
 
-[[stage(vertex)]]
-fn main([[builtin(vertex_index)]] tint_pulling_vertex_index : u32) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main(@builtin(vertex_index) tint_pulling_vertex_index : u32) -> @builtin(position) vec4<f32> {
   var var_a : vec2<f32>;
   var var_b : vec3<f32>;
   var var_c : vec4<f32>;
@@ -601,9 +601,9 @@
 
 TEST_F(VertexPullingTest, AttemptSymbolCollision) {
   auto* src = R"(
-[[stage(vertex)]]
-fn main([[location(0)]] var_a : f32,
-        [[location(1)]] var_b : vec4<f32>) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main(@location(0) var_a : f32,
+        @location(1) var_b : vec4<f32>) -> @builtin(position) vec4<f32> {
   var tint_pulling_vertex_index : i32;
   var tint_pulling_vertex_buffer_0 : i32;
   var tint_vertex_data : i32;
@@ -614,13 +614,13 @@
 
   auto* expect = R"(
 struct TintVertexData {
-  tint_vertex_data_1 : [[stride(4)]] array<u32>;
+  tint_vertex_data_1 : @stride(4) array<u32>;
 }
 
-[[binding(0), group(4)]] var<storage, read> tint_pulling_vertex_buffer_0_1 : TintVertexData;
+@binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0_1 : TintVertexData;
 
-[[stage(vertex)]]
-fn main([[builtin(vertex_index)]] tint_pulling_vertex_index_1 : u32) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main(@builtin(vertex_index) tint_pulling_vertex_index_1 : u32) -> @builtin(position) vec4<f32> {
   var var_a : f32;
   var var_b : vec4<f32>;
   {
@@ -652,52 +652,52 @@
 
 TEST_F(VertexPullingTest, FormatsAligned) {
   auto* src = R"(
-[[stage(vertex)]]
+@stage(vertex)
 fn main(
-    [[location(0)]] uint8x2 : vec2<u32>,
-    [[location(1)]] uint8x4 : vec4<u32>,
-    [[location(2)]] sint8x2 : vec2<i32>,
-    [[location(3)]] sint8x4 : vec4<i32>,
-    [[location(4)]] unorm8x2 : vec2<f32>,
-    [[location(5)]] unorm8x4 : vec4<f32>,
-    [[location(6)]] snorm8x2 : vec2<f32>,
-    [[location(7)]] snorm8x4 : vec4<f32>,
-    [[location(8)]] uint16x2 : vec2<u32>,
-    [[location(9)]] uint16x4 : vec4<u32>,
-    [[location(10)]] sint16x2 : vec2<i32>,
-    [[location(11)]] sint16x4 : vec4<i32>,
-    [[location(12)]] unorm16x2 : vec2<f32>,
-    [[location(13)]] unorm16x4 : vec4<f32>,
-    [[location(14)]] snorm16x2 : vec2<f32>,
-    [[location(15)]] snorm16x4 : vec4<f32>,
-    [[location(16)]] float16x2 : vec2<f32>,
-    [[location(17)]] float16x4 : vec4<f32>,
-    [[location(18)]] float32 : f32,
-    [[location(19)]] float32x2 : vec2<f32>,
-    [[location(20)]] float32x3 : vec3<f32>,
-    [[location(21)]] float32x4 : vec4<f32>,
-    [[location(22)]] uint32 : u32,
-    [[location(23)]] uint32x2 : vec2<u32>,
-    [[location(24)]] uint32x3 : vec3<u32>,
-    [[location(25)]] uint32x4 : vec4<u32>,
-    [[location(26)]] sint32 : i32,
-    [[location(27)]] sint32x2 : vec2<i32>,
-    [[location(28)]] sint32x3 : vec3<i32>,
-    [[location(29)]] sint32x4 : vec4<i32>
-  ) -> [[builtin(position)]] vec4<f32> {
+    @location(0) uint8x2 : vec2<u32>,
+    @location(1) uint8x4 : vec4<u32>,
+    @location(2) sint8x2 : vec2<i32>,
+    @location(3) sint8x4 : vec4<i32>,
+    @location(4) unorm8x2 : vec2<f32>,
+    @location(5) unorm8x4 : vec4<f32>,
+    @location(6) snorm8x2 : vec2<f32>,
+    @location(7) snorm8x4 : vec4<f32>,
+    @location(8) uint16x2 : vec2<u32>,
+    @location(9) uint16x4 : vec4<u32>,
+    @location(10) sint16x2 : vec2<i32>,
+    @location(11) sint16x4 : vec4<i32>,
+    @location(12) unorm16x2 : vec2<f32>,
+    @location(13) unorm16x4 : vec4<f32>,
+    @location(14) snorm16x2 : vec2<f32>,
+    @location(15) snorm16x4 : vec4<f32>,
+    @location(16) float16x2 : vec2<f32>,
+    @location(17) float16x4 : vec4<f32>,
+    @location(18) float32 : f32,
+    @location(19) float32x2 : vec2<f32>,
+    @location(20) float32x3 : vec3<f32>,
+    @location(21) float32x4 : vec4<f32>,
+    @location(22) uint32 : u32,
+    @location(23) uint32x2 : vec2<u32>,
+    @location(24) uint32x3 : vec3<u32>,
+    @location(25) uint32x4 : vec4<u32>,
+    @location(26) sint32 : i32,
+    @location(27) sint32x2 : vec2<i32>,
+    @location(28) sint32x3 : vec3<i32>,
+    @location(29) sint32x4 : vec4<i32>
+  ) -> @builtin(position) vec4<f32> {
   return vec4<f32>(0.0, 0.0, 0.0, 1.0);
 }
 )";
 
   auto* expect = R"(
 struct TintVertexData {
-  tint_vertex_data : [[stride(4)]] array<u32>;
+  tint_vertex_data : @stride(4) array<u32>;
 }
 
-[[binding(0), group(4)]] var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
+@binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
 
-[[stage(vertex)]]
-fn main([[builtin(vertex_index)]] tint_pulling_vertex_index : u32) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main(@builtin(vertex_index) tint_pulling_vertex_index : u32) -> @builtin(position) vec4<f32> {
   var uint8x2 : vec2<u32>;
   var uint8x4 : vec4<u32>;
   var sint8x2 : vec2<i32>;
@@ -811,39 +811,39 @@
 
 TEST_F(VertexPullingTest, FormatsStrideUnaligned) {
   auto* src = R"(
-[[stage(vertex)]]
+@stage(vertex)
 fn main(
-    [[location(0)]] uint8x2 : vec2<u32>,
-    [[location(1)]] uint8x4 : vec4<u32>,
-    [[location(2)]] sint8x2 : vec2<i32>,
-    [[location(3)]] sint8x4 : vec4<i32>,
-    [[location(4)]] unorm8x2 : vec2<f32>,
-    [[location(5)]] unorm8x4 : vec4<f32>,
-    [[location(6)]] snorm8x2 : vec2<f32>,
-    [[location(7)]] snorm8x4 : vec4<f32>,
-    [[location(8)]] uint16x2 : vec2<u32>,
-    [[location(9)]] uint16x4 : vec4<u32>,
-    [[location(10)]] sint16x2 : vec2<i32>,
-    [[location(11)]] sint16x4 : vec4<i32>,
-    [[location(12)]] unorm16x2 : vec2<f32>,
-    [[location(13)]] unorm16x4 : vec4<f32>,
-    [[location(14)]] snorm16x2 : vec2<f32>,
-    [[location(15)]] snorm16x4 : vec4<f32>,
-    [[location(16)]] float16x2 : vec2<f32>,
-    [[location(17)]] float16x4 : vec4<f32>,
-    [[location(18)]] float32 : f32,
-    [[location(19)]] float32x2 : vec2<f32>,
-    [[location(20)]] float32x3 : vec3<f32>,
-    [[location(21)]] float32x4 : vec4<f32>,
-    [[location(22)]] uint32 : u32,
-    [[location(23)]] uint32x2 : vec2<u32>,
-    [[location(24)]] uint32x3 : vec3<u32>,
-    [[location(25)]] uint32x4 : vec4<u32>,
-    [[location(26)]] sint32 : i32,
-    [[location(27)]] sint32x2 : vec2<i32>,
-    [[location(28)]] sint32x3 : vec3<i32>,
-    [[location(29)]] sint32x4 : vec4<i32>
-  ) -> [[builtin(position)]] vec4<f32> {
+    @location(0) uint8x2 : vec2<u32>,
+    @location(1) uint8x4 : vec4<u32>,
+    @location(2) sint8x2 : vec2<i32>,
+    @location(3) sint8x4 : vec4<i32>,
+    @location(4) unorm8x2 : vec2<f32>,
+    @location(5) unorm8x4 : vec4<f32>,
+    @location(6) snorm8x2 : vec2<f32>,
+    @location(7) snorm8x4 : vec4<f32>,
+    @location(8) uint16x2 : vec2<u32>,
+    @location(9) uint16x4 : vec4<u32>,
+    @location(10) sint16x2 : vec2<i32>,
+    @location(11) sint16x4 : vec4<i32>,
+    @location(12) unorm16x2 : vec2<f32>,
+    @location(13) unorm16x4 : vec4<f32>,
+    @location(14) snorm16x2 : vec2<f32>,
+    @location(15) snorm16x4 : vec4<f32>,
+    @location(16) float16x2 : vec2<f32>,
+    @location(17) float16x4 : vec4<f32>,
+    @location(18) float32 : f32,
+    @location(19) float32x2 : vec2<f32>,
+    @location(20) float32x3 : vec3<f32>,
+    @location(21) float32x4 : vec4<f32>,
+    @location(22) uint32 : u32,
+    @location(23) uint32x2 : vec2<u32>,
+    @location(24) uint32x3 : vec3<u32>,
+    @location(25) uint32x4 : vec4<u32>,
+    @location(26) sint32 : i32,
+    @location(27) sint32x2 : vec2<i32>,
+    @location(28) sint32x3 : vec3<i32>,
+    @location(29) sint32x4 : vec4<i32>
+  ) -> @builtin(position) vec4<f32> {
   return vec4<f32>(0.0, 0.0, 0.0, 1.0);
 }
 )";
@@ -851,13 +851,13 @@
   auto* expect =
       R"(
 struct TintVertexData {
-  tint_vertex_data : [[stride(4)]] array<u32>;
+  tint_vertex_data : @stride(4) array<u32>;
 }
 
-[[binding(0), group(4)]] var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
+@binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
 
-[[stage(vertex)]]
-fn main([[builtin(vertex_index)]] tint_pulling_vertex_index : u32) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main(@builtin(vertex_index) tint_pulling_vertex_index : u32) -> @builtin(position) vec4<f32> {
   var uint8x2 : vec2<u32>;
   var uint8x4 : vec4<u32>;
   var sint8x2 : vec2<i32>;
@@ -971,52 +971,52 @@
 
 TEST_F(VertexPullingTest, FormatsWithVectorsResized) {
   auto* src = R"(
-[[stage(vertex)]]
+@stage(vertex)
 fn main(
-    [[location(0)]] uint8x2 : vec3<u32>,
-    [[location(1)]] uint8x4 : vec2<u32>,
-    [[location(2)]] sint8x2 : i32,
-    [[location(3)]] sint8x4 : vec2<i32>,
-    [[location(4)]] unorm8x2 : vec4<f32>,
-    [[location(5)]] unorm8x4 : f32,
-    [[location(6)]] snorm8x2 : vec3<f32>,
-    [[location(7)]] snorm8x4 : f32,
-    [[location(8)]] uint16x2 : vec3<u32>,
-    [[location(9)]] uint16x4 : vec2<u32>,
-    [[location(10)]] sint16x2 : vec4<i32>,
-    [[location(11)]] sint16x4 : i32,
-    [[location(12)]] unorm16x2 : vec3<f32>,
-    [[location(13)]] unorm16x4 : f32,
-    [[location(14)]] snorm16x2 : vec4<f32>,
-    [[location(15)]] snorm16x4 : vec3<f32>,
-    [[location(16)]] float16x2 : vec4<f32>,
-    [[location(17)]] float16x4 : f32,
-    [[location(18)]] float32 : vec4<f32>,
-    [[location(19)]] float32x2 : vec4<f32>,
-    [[location(20)]] float32x3 : vec2<f32>,
-    [[location(21)]] float32x4 : vec3<f32>,
-    [[location(22)]] uint32 : vec3<u32>,
-    [[location(23)]] uint32x2 : vec4<u32>,
-    [[location(24)]] uint32x3 : vec4<u32>,
-    [[location(25)]] uint32x4 : vec2<u32>,
-    [[location(26)]] sint32 : vec4<i32>,
-    [[location(27)]] sint32x2 : vec3<i32>,
-    [[location(28)]] sint32x3 : i32,
-    [[location(29)]] sint32x4 : vec2<i32>
-  ) -> [[builtin(position)]] vec4<f32> {
+    @location(0) uint8x2 : vec3<u32>,
+    @location(1) uint8x4 : vec2<u32>,
+    @location(2) sint8x2 : i32,
+    @location(3) sint8x4 : vec2<i32>,
+    @location(4) unorm8x2 : vec4<f32>,
+    @location(5) unorm8x4 : f32,
+    @location(6) snorm8x2 : vec3<f32>,
+    @location(7) snorm8x4 : f32,
+    @location(8) uint16x2 : vec3<u32>,
+    @location(9) uint16x4 : vec2<u32>,
+    @location(10) sint16x2 : vec4<i32>,
+    @location(11) sint16x4 : i32,
+    @location(12) unorm16x2 : vec3<f32>,
+    @location(13) unorm16x4 : f32,
+    @location(14) snorm16x2 : vec4<f32>,
+    @location(15) snorm16x4 : vec3<f32>,
+    @location(16) float16x2 : vec4<f32>,
+    @location(17) float16x4 : f32,
+    @location(18) float32 : vec4<f32>,
+    @location(19) float32x2 : vec4<f32>,
+    @location(20) float32x3 : vec2<f32>,
+    @location(21) float32x4 : vec3<f32>,
+    @location(22) uint32 : vec3<u32>,
+    @location(23) uint32x2 : vec4<u32>,
+    @location(24) uint32x3 : vec4<u32>,
+    @location(25) uint32x4 : vec2<u32>,
+    @location(26) sint32 : vec4<i32>,
+    @location(27) sint32x2 : vec3<i32>,
+    @location(28) sint32x3 : i32,
+    @location(29) sint32x4 : vec2<i32>
+  ) -> @builtin(position) vec4<f32> {
   return vec4<f32>(0.0, 0.0, 0.0, 1.0);
 }
 )";
 
   auto* expect = R"(
 struct TintVertexData {
-  tint_vertex_data : [[stride(4)]] array<u32>;
+  tint_vertex_data : @stride(4) array<u32>;
 }
 
-[[binding(0), group(4)]] var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
+@binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
 
-[[stage(vertex)]]
-fn main([[builtin(vertex_index)]] tint_pulling_vertex_index : u32) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main(@builtin(vertex_index) tint_pulling_vertex_index : u32) -> @builtin(position) vec4<f32> {
   var uint8x2 : vec3<u32>;
   var uint8x4 : vec2<u32>;
   var sint8x2 : i32;
diff --git a/src/transform/zero_init_workgroup_memory_test.cc b/src/transform/zero_init_workgroup_memory_test.cc
index 166036e..d23e0af 100644
--- a/src/transform/zero_init_workgroup_memory_test.cc
+++ b/src/transform/zero_init_workgroup_memory_test.cc
@@ -60,7 +60,7 @@
   b = c;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
 }
 )";
@@ -75,16 +75,16 @@
   auto* src = R"(
 var<workgroup> v : i32;
 
-[[stage(compute), workgroup_size(1)]]
-fn f([[builtin(local_invocation_index)]] local_idx : u32) {
+@stage(compute) @workgroup_size(1)
+fn f(@builtin(local_invocation_index) local_idx : u32) {
   ignore(v); // Initialization should be inserted above this statement
 }
 )";
   auto* expect = R"(
 var<workgroup> v : i32;
 
-[[stage(compute), workgroup_size(1)]]
-fn f([[builtin(local_invocation_index)]] local_idx : u32) {
+@stage(compute) @workgroup_size(1)
+fn f(@builtin(local_invocation_index) local_idx : u32) {
   {
     v = i32();
   }
@@ -104,10 +104,10 @@
 var<workgroup> v : i32;
 
 struct Params {
-  [[builtin(local_invocation_index)]] local_idx : u32;
+  @builtin(local_invocation_index) local_idx : u32;
 };
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f(params : Params) {
   ignore(v); // Initialization should be inserted above this statement
 }
@@ -116,11 +116,11 @@
 var<workgroup> v : i32;
 
 struct Params {
-  [[builtin(local_invocation_index)]]
+  @builtin(local_invocation_index)
   local_idx : u32;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f(params : Params) {
   {
     v = i32();
@@ -139,7 +139,7 @@
   auto* src = R"(
 var<workgroup> v : i32;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   ignore(v); // Initialization should be inserted above this statement
 }
@@ -147,8 +147,8 @@
   auto* expect = R"(
 var<workgroup> v : i32;
 
-[[stage(compute), workgroup_size(1)]]
-fn f([[builtin(local_invocation_index)]] local_invocation_index : u32) {
+@stage(compute) @workgroup_size(1)
+fn f(@builtin(local_invocation_index) local_invocation_index : u32) {
   {
     v = i32();
   }
@@ -176,8 +176,8 @@
 
 var<workgroup> c : array<S, 32>;
 
-[[stage(compute), workgroup_size(1)]]
-fn f([[builtin(local_invocation_index)]] local_idx : u32) {
+@stage(compute) @workgroup_size(1)
+fn f(@builtin(local_invocation_index) local_idx : u32) {
   ignore(a); // Initialization should be inserted above this statement
   ignore(b);
   ignore(c);
@@ -195,8 +195,8 @@
 
 var<workgroup> c : array<S, 32>;
 
-[[stage(compute), workgroup_size(1)]]
-fn f([[builtin(local_invocation_index)]] local_idx : u32) {
+@stage(compute) @workgroup_size(1)
+fn f(@builtin(local_invocation_index) local_idx : u32) {
   {
     a = i32();
     b.x = i32();
@@ -240,8 +240,8 @@
 
 var<workgroup> c : array<S, 32>;
 
-[[stage(compute), workgroup_size(2, 3)]]
-fn f([[builtin(local_invocation_index)]] local_idx : u32) {
+@stage(compute) @workgroup_size(2, 3)
+fn f(@builtin(local_invocation_index) local_idx : u32) {
   ignore(a); // Initialization should be inserted above this statement
   ignore(b);
   ignore(c);
@@ -259,8 +259,8 @@
 
 var<workgroup> c : array<S, 32>;
 
-[[stage(compute), workgroup_size(2, 3)]]
-fn f([[builtin(local_invocation_index)]] local_idx : u32) {
+@stage(compute) @workgroup_size(2, 3)
+fn f(@builtin(local_invocation_index) local_idx : u32) {
   if ((local_idx < 1u)) {
     a = i32();
     b.x = i32();
@@ -304,10 +304,10 @@
 
 var<workgroup> c : array<S, 32>;
 
-[[override(1)]] let X : i32;
+@override(1) let X : i32;
 
-[[stage(compute), workgroup_size(2, 3, X)]]
-fn f([[builtin(local_invocation_index)]] local_idx : u32) {
+@stage(compute) @workgroup_size(2, 3, X)
+fn f(@builtin(local_invocation_index) local_idx : u32) {
   ignore(a); // Initialization should be inserted above this statement
   ignore(b);
   ignore(c);
@@ -326,10 +326,10 @@
 
 var<workgroup> c : array<S, 32>;
 
-[[override(1)]] let X : i32;
+@override(1) let X : i32;
 
-[[stage(compute), workgroup_size(2, 3, X)]]
-fn f([[builtin(local_invocation_index)]] local_idx : u32) {
+@stage(compute) @workgroup_size(2, 3, X)
+fn f(@builtin(local_invocation_index) local_idx : u32) {
   for(var idx : u32 = local_idx; (idx < 1u); idx = (idx + (u32(X) * 6u))) {
     a = i32();
     b.x = i32();
@@ -374,10 +374,10 @@
 
 var<workgroup> c : array<S, 32>;
 
-[[override(1)]] let X : u32;
+@override(1) let X : u32;
 
-[[stage(compute), workgroup_size(5u, X, 10u)]]
-fn f([[builtin(local_invocation_index)]] local_idx : u32) {
+@stage(compute) @workgroup_size(5u, X, 10u)
+fn f(@builtin(local_invocation_index) local_idx : u32) {
   ignore(a); // Initialization should be inserted above this statement
   ignore(b);
   ignore(c);
@@ -397,10 +397,10 @@
 
 var<workgroup> c : array<S, 32>;
 
-[[override(1)]] let X : u32;
+@override(1) let X : u32;
 
-[[stage(compute), workgroup_size(5u, X, 10u)]]
-fn f([[builtin(local_invocation_index)]] local_idx : u32) {
+@stage(compute) @workgroup_size(5u, X, 10u)
+fn f(@builtin(local_invocation_index) local_idx : u32) {
   for(var idx : u32 = local_idx; (idx < 1u); idx = (idx + (X * 50u))) {
     a = i32();
   }
@@ -462,8 +462,8 @@
 
 var<workgroup> c : array<S, 32>;
 
-[[stage(compute), workgroup_size(1)]]
-fn f([[builtin(local_invocation_id)]] local_invocation_id : vec3<u32>) {
+@stage(compute) @workgroup_size(1)
+fn f(@builtin(local_invocation_id) local_invocation_id : vec3<u32>) {
   ignore(a); // Initialization should be inserted above this statement
   ignore(b);
   ignore(c);
@@ -481,8 +481,8 @@
 
 var<workgroup> c : array<S, 32>;
 
-[[stage(compute), workgroup_size(1)]]
-fn f([[builtin(local_invocation_id)]] local_invocation_id : vec3<u32>, [[builtin(local_invocation_index)]] local_invocation_index : u32) {
+@stage(compute) @workgroup_size(1)
+fn f(@builtin(local_invocation_id) local_invocation_id : vec3<u32>, @builtin(local_invocation_index) local_invocation_index : u32) {
   {
     a = i32();
     b.x = i32();
@@ -525,18 +525,18 @@
 
 var<workgroup> c : array<S, 32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f1() {
   ignore(a); // Initialization should be inserted above this statement
   ignore(c);
 }
 
-[[stage(compute), workgroup_size(1, 2, 3)]]
-fn f2([[builtin(local_invocation_id)]] local_invocation_id : vec3<u32>) {
+@stage(compute) @workgroup_size(1, 2, 3)
+fn f2(@builtin(local_invocation_id) local_invocation_id : vec3<u32>) {
   ignore(b); // Initialization should be inserted above this statement
 }
 
-[[stage(compute), workgroup_size(4, 5, 6)]]
+@stage(compute) @workgroup_size(4, 5, 6)
 fn f3() {
   ignore(c); // Initialization should be inserted above this statement
   ignore(a);
@@ -554,8 +554,8 @@
 
 var<workgroup> c : array<S, 32>;
 
-[[stage(compute), workgroup_size(1)]]
-fn f1([[builtin(local_invocation_index)]] local_invocation_index : u32) {
+@stage(compute) @workgroup_size(1)
+fn f1(@builtin(local_invocation_index) local_invocation_index : u32) {
   {
     a = i32();
   }
@@ -573,8 +573,8 @@
   ignore(c);
 }
 
-[[stage(compute), workgroup_size(1, 2, 3)]]
-fn f2([[builtin(local_invocation_id)]] local_invocation_id : vec3<u32>, [[builtin(local_invocation_index)]] local_invocation_index_1 : u32) {
+@stage(compute) @workgroup_size(1, 2, 3)
+fn f2(@builtin(local_invocation_id) local_invocation_id : vec3<u32>, @builtin(local_invocation_index) local_invocation_index_1 : u32) {
   if ((local_invocation_index_1 < 1u)) {
     b.x = i32();
   }
@@ -586,8 +586,8 @@
   ignore(b);
 }
 
-[[stage(compute), workgroup_size(4, 5, 6)]]
-fn f3([[builtin(local_invocation_index)]] local_invocation_index_2 : u32) {
+@stage(compute) @workgroup_size(4, 5, 6)
+fn f3(@builtin(local_invocation_index) local_invocation_index_2 : u32) {
   if ((local_invocation_index_2 < 1u)) {
     a = i32();
   }
@@ -623,8 +623,8 @@
   use_v();
 }
 
-[[stage(compute), workgroup_size(1)]]
-fn f([[builtin(local_invocation_index)]] local_idx : u32) {
+@stage(compute) @workgroup_size(1)
+fn f(@builtin(local_invocation_index) local_idx : u32) {
   call_use_v(); // Initialization should be inserted above this statement
 }
 )";
@@ -639,8 +639,8 @@
   use_v();
 }
 
-[[stage(compute), workgroup_size(1)]]
-fn f([[builtin(local_invocation_index)]] local_idx : u32) {
+@stage(compute) @workgroup_size(1)
+fn f(@builtin(local_invocation_index) local_idx : u32) {
   {
     v = i32();
   }
@@ -659,7 +659,7 @@
 var<workgroup> i : atomic<i32>;
 var<workgroup> u : atomic<u32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   ignore(i); // Initialization should be inserted above this statement
   ignore(u);
@@ -670,8 +670,8 @@
 
 var<workgroup> u : atomic<u32>;
 
-[[stage(compute), workgroup_size(1)]]
-fn f([[builtin(local_invocation_index)]] local_invocation_index : u32) {
+@stage(compute) @workgroup_size(1)
+fn f(@builtin(local_invocation_index) local_invocation_index : u32) {
   {
     atomicStore(&(i), i32());
     atomicStore(&(u), u32());
@@ -699,7 +699,7 @@
 
 var<workgroup> w : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   ignore(w); // Initialization should be inserted above this statement
 }
@@ -715,8 +715,8 @@
 
 var<workgroup> w : S;
 
-[[stage(compute), workgroup_size(1)]]
-fn f([[builtin(local_invocation_index)]] local_invocation_index : u32) {
+@stage(compute) @workgroup_size(1)
+fn f(@builtin(local_invocation_index) local_invocation_index : u32) {
   {
     w.a = i32();
     atomicStore(&(w.i), i32());
@@ -738,7 +738,7 @@
   auto* src = R"(
 var<workgroup> w : array<atomic<u32>, 4>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   ignore(w); // Initialization should be inserted above this statement
 }
@@ -746,8 +746,8 @@
   auto* expect = R"(
 var<workgroup> w : array<atomic<u32>, 4>;
 
-[[stage(compute), workgroup_size(1)]]
-fn f([[builtin(local_invocation_index)]] local_invocation_index : u32) {
+@stage(compute) @workgroup_size(1)
+fn f(@builtin(local_invocation_index) local_invocation_index : u32) {
   for(var idx : u32 = local_invocation_index; (idx < 4u); idx = (idx + 1u)) {
     let i : u32 = idx;
     atomicStore(&(w[i]), u32());
@@ -774,7 +774,7 @@
 
 var<workgroup> w : array<S, 4>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   ignore(w); // Initialization should be inserted above this statement
 }
@@ -790,8 +790,8 @@
 
 var<workgroup> w : array<S, 4>;
 
-[[stage(compute), workgroup_size(1)]]
-fn f([[builtin(local_invocation_index)]] local_invocation_index : u32) {
+@stage(compute) @workgroup_size(1)
+fn f(@builtin(local_invocation_index) local_invocation_index : u32) {
   for(var idx : u32 = local_invocation_index; (idx < 4u); idx = (idx + 1u)) {
     let i_1 : u32 = idx;
     w[i_1].a = i32();
diff --git a/src/writer/glsl/generator_impl_function_test.cc b/src/writer/glsl/generator_impl_function_test.cc
index 3d710f4..19aae88 100644
--- a/src/writer/glsl/generator_impl_function_test.cc
+++ b/src/writer/glsl/generator_impl_function_test.cc
@@ -127,7 +127,7 @@
 
 TEST_F(GlslGeneratorImplTest_Function,
        Emit_Decoration_EntryPoint_WithInOutVars) {
-  // fn frag_main([[location(0)]] foo : f32) -> [[location(1)]] f32 {
+  // fn frag_main(@location(0) foo : f32) -> @location(1) f32 {
   //   return foo;
   // }
   auto* foo_in = Param("foo", ty.f32(), {Location(0)});
@@ -173,7 +173,7 @@
 
 TEST_F(GlslGeneratorImplTest_Function,
        Emit_Decoration_EntryPoint_WithInOut_Builtins) {
-  // fn frag_main([[position(0)]] coord : vec4<f32>) -> [[frag_depth]] f32 {
+  // fn frag_main(@position(0) coord : vec4<f32>) -> @frag_depth f32 {
   //   return coord.x;
   // }
   auto* coord_in =
@@ -221,9 +221,9 @@
 TEST_F(GlslGeneratorImplTest_Function,
        Emit_Decoration_EntryPoint_SharedStruct_DifferentStages) {
   // struct Interface {
-  //   [[builtin(position)]] pos : vec4<f32>;
-  //   [[location(1)]] col1 : f32;
-  //   [[location(2)]] col2 : f32;
+  //   @builtin(position) pos : vec4<f32>;
+  //   @location(1) col1 : f32;
+  //   @location(2) col2 : f32;
   // };
   // fn vert_main() -> Interface {
   //   return Interface(vec4<f32>(), 0.4, 0.6);
@@ -332,7 +332,7 @@
 TEST_F(GlslGeneratorImplTest_Function,
        Emit_Decoration_EntryPoint_SharedStruct_HelperFunction) {
   // struct VertexOutput {
-  //   [[builtin(position)]] pos : vec4<f32>;
+  //   @builtin(position) pos : vec4<f32>;
   // };
   // fn foo(x : f32) -> VertexOutput {
   //   return VertexOutput(vec4<f32>(x, x, x, 1.0));
@@ -1032,15 +1032,15 @@
   // [[block]] struct Data {
   //   d : f32;
   // };
-  // [[binding(0), group(0)]] var<storage> data : Data;
+  // @binding(0) @group(0) var<storage> data : Data;
   //
-  // [[stage(compute), workgroup_size(1)]]
+  // @stage(compute) @workgroup_size(1)
   // fn a() {
   //   var v = data.d;
   //   return;
   // }
   //
-  // [[stage(compute), workgroup_size(1)]]
+  // @stage(compute) @workgroup_size(1)
   // fn b() {
   //   var v = data.d;
   //   return;
diff --git a/src/writer/glsl/generator_impl_member_accessor_test.cc b/src/writer/glsl/generator_impl_member_accessor_test.cc
index 36809b3..07eeaa4 100644
--- a/src/writer/glsl/generator_impl_member_accessor_test.cc
+++ b/src/writer/glsl/generator_impl_member_accessor_test.cc
@@ -372,7 +372,7 @@
 TEST_F(GlslGeneratorImplTest_MemberAccessor,
        EmitExpression_IndexAccessor_StorageBuffer_Load_Int_FromArray) {
   // struct Data {
-  //   a : [[stride(4)]] array<i32, 5>;
+  //   a : @stride(4) array<i32, 5>;
   // };
   // var<storage> data : Data;
   // data.a[2];
@@ -420,7 +420,7 @@
 TEST_F(GlslGeneratorImplTest_MemberAccessor,
        EmitExpression_IndexAccessor_StorageBuffer_Load_Int_FromArray_ExprIdx) {
   // struct Data {
-  //   a : [[stride(4)]] array<i32, 5>;
+  //   a : @stride(4) array<i32, 5>;
   // };
   // var<storage> data : Data;
   // data.a[(2 + 4) - 3];
@@ -468,7 +468,7 @@
 
 TEST_F(GlslGeneratorImplTest_MemberAccessor, StorageBuffer_Store_ToArray) {
   // struct Data {
-  //   a : [[stride(4)]] array<i32, 5>;
+  //   a : @stride(4) array<i32, 5>;
   // };
   // var<storage> data : Data;
   // data.a[2] = 2;
@@ -518,7 +518,7 @@
   //   b : vec3<f32>;
   // };
   // struct Data {
-  //   var c : [[stride(32)]] array<Inner, 4>;
+  //   var c : @stride(32) array<Inner, 4>;
   // };
   //
   // var<storage> data : Pre;
@@ -578,7 +578,7 @@
   //   b : vec3<f32>;
   // };
   // struct Data {
-  //   var c : [[stride(32)]] array<Inner, 4>;
+  //   var c : @stride(32) array<Inner, 4>;
   // };
   //
   // var<storage> data : Pre;
@@ -640,7 +640,7 @@
   //   b : vec3<f32>;
   // };
   // struct Data {
-  //   var c : [[stride(32)]] array<Inner, 4>;
+  //   var c : @stride(32) array<Inner, 4>;
   // };
   //
   // var<storage> data : Pre;
@@ -702,7 +702,7 @@
   //   b : vec3<f32>;
   // };
   // struct Data {
-  //   var c : [[stride(32)]] array<Inner, 4>;
+  //   var c : @stride(32) array<Inner, 4>;
   // };
   //
   // var<storage> data : Pre;
@@ -763,7 +763,7 @@
   //   b : vec3<f32>;
   // };
   // struct Data {
-  //   var c : [[stride(32)]] array<Inner, 4>;
+  //   var c : @stride(32) array<Inner, 4>;
   // };
   //
   // var<storage> data : Pre;
@@ -822,7 +822,7 @@
   //   b : vec3<f32>;
   // };
   // struct Data {
-  //   var c : [[stride(32)]] array<Inner, 4>;
+  //   var c : @stride(32) array<Inner, 4>;
   // };
   //
   // var<storage> data : Pre;
diff --git a/src/writer/hlsl/generator_impl_function_test.cc b/src/writer/hlsl/generator_impl_function_test.cc
index 3af0f4f..7688e85 100644
--- a/src/writer/hlsl/generator_impl_function_test.cc
+++ b/src/writer/hlsl/generator_impl_function_test.cc
@@ -113,7 +113,7 @@
 
 TEST_F(HlslGeneratorImplTest_Function,
        Emit_Decoration_EntryPoint_WithInOutVars) {
-  // fn frag_main([[location(0)]] foo : f32) -> [[location(1)]] f32 {
+  // fn frag_main(@location(0) foo : f32) -> @location(1) f32 {
   //   return foo;
   // }
   auto* foo_in = Param("foo", ty.f32(), {Location(0)});
@@ -145,7 +145,7 @@
 
 TEST_F(HlslGeneratorImplTest_Function,
        Emit_Decoration_EntryPoint_WithInOut_Builtins) {
-  // fn frag_main([[position(0)]] coord : vec4<f32>) -> [[frag_depth]] f32 {
+  // fn frag_main(@position(0) coord : vec4<f32>) -> @frag_depth f32 {
   //   return coord.x;
   // }
   auto* coord_in =
@@ -181,9 +181,9 @@
 TEST_F(HlslGeneratorImplTest_Function,
        Emit_Decoration_EntryPoint_SharedStruct_DifferentStages) {
   // struct Interface {
-  //   [[builtin(position)]] pos : vec4<f32>;
-  //   [[location(1)]] col1 : f32;
-  //   [[location(2)]] col2 : f32;
+  //   @builtin(position) pos : vec4<f32>;
+  //   @location(1) col1 : f32;
+  //   @location(2) col2 : f32;
   // };
   // fn vert_main() -> Interface {
   //   return Interface(vec4<f32>(), 0.4, 0.6);
@@ -265,7 +265,7 @@
 TEST_F(HlslGeneratorImplTest_Function,
        Emit_Decoration_EntryPoint_SharedStruct_HelperFunction) {
   // struct VertexOutput {
-  //   [[builtin(position)]] pos : vec4<f32>;
+  //   @builtin(position) pos : vec4<f32>;
   // };
   // fn foo(x : f32) -> VertexOutput {
   //   return VertexOutput(vec4<f32>(x, x, x, 1.0));
@@ -860,15 +860,15 @@
   // [[block]] struct Data {
   //   d : f32;
   // };
-  // [[binding(0), group(0)]] var<storage> data : Data;
+  // @binding(0) @group(0) var<storage> data : Data;
   //
-  // [[stage(compute), workgroup_size(1)]]
+  // @stage(compute) @workgroup_size(1)
   // fn a() {
   //   var v = data.d;
   //   return;
   // }
   //
-  // [[stage(compute), workgroup_size(1)]]
+  // @stage(compute) @workgroup_size(1)
   // fn b() {
   //   var v = data.d;
   //   return;
diff --git a/src/writer/hlsl/generator_impl_member_accessor_test.cc b/src/writer/hlsl/generator_impl_member_accessor_test.cc
index 195a160..03cf494 100644
--- a/src/writer/hlsl/generator_impl_member_accessor_test.cc
+++ b/src/writer/hlsl/generator_impl_member_accessor_test.cc
@@ -393,7 +393,7 @@
 TEST_F(HlslGeneratorImplTest_MemberAccessor,
        EmitExpression_IndexAccessor_StorageBuffer_Load_Int_FromArray) {
   // struct Data {
-  //   a : [[stride(4)]] array<i32, 5>;
+  //   a : @stride(4) array<i32, 5>;
   // };
   // var<storage> data : Data;
   // data.a[2];
@@ -425,7 +425,7 @@
 TEST_F(HlslGeneratorImplTest_MemberAccessor,
        EmitExpression_IndexAccessor_StorageBuffer_Load_Int_FromArray_ExprIdx) {
   // struct Data {
-  //   a : [[stride(4)]] array<i32, 5>;
+  //   a : @stride(4) array<i32, 5>;
   // };
   // var<storage> data : Data;
   // data.a[(2 + 4) - 3];
@@ -457,7 +457,7 @@
 
 TEST_F(HlslGeneratorImplTest_MemberAccessor, StorageBuffer_Store_ToArray) {
   // struct Data {
-  //   a : [[stride(4)]] array<i32, 5>;
+  //   a : @stride(4) array<i32, 5>;
   // };
   // var<storage> data : Data;
   // data.a[2] = 2;
@@ -491,7 +491,7 @@
   //   b : vec3<f32>;
   // };
   // struct Data {
-  //   var c : [[stride(32)]] array<Inner, 4>;
+  //   var c : @stride(32) array<Inner, 4>;
   // };
   //
   // var<storage> data : Pre;
@@ -533,7 +533,7 @@
   //   b : vec3<f32>;
   // };
   // struct Data {
-  //   var c : [[stride(32)]] array<Inner, 4>;
+  //   var c : @stride(32) array<Inner, 4>;
   // };
   //
   // var<storage> data : Pre;
@@ -577,7 +577,7 @@
   //   b : vec3<f32>;
   // };
   // struct Data {
-  //   var c : [[stride(32)]] array<Inner, 4>;
+  //   var c : @stride(32) array<Inner, 4>;
   // };
   //
   // var<storage> data : Pre;
@@ -621,7 +621,7 @@
   //   b : vec3<f32>;
   // };
   // struct Data {
-  //   var c : [[stride(32)]] array<Inner, 4>;
+  //   var c : @stride(32) array<Inner, 4>;
   // };
   //
   // var<storage> data : Pre;
@@ -664,7 +664,7 @@
   //   b : vec3<f32>;
   // };
   // struct Data {
-  //   var c : [[stride(32)]] array<Inner, 4>;
+  //   var c : @stride(32) array<Inner, 4>;
   // };
   //
   // var<storage> data : Pre;
@@ -705,7 +705,7 @@
   //   b : vec3<f32>;
   // };
   // struct Data {
-  //   var c : [[stride(32)]] array<Inner, 4>;
+  //   var c : @stride(32) array<Inner, 4>;
   // };
   //
   // var<storage> data : Pre;
diff --git a/src/writer/msl/generator_impl_function_test.cc b/src/writer/msl/generator_impl_function_test.cc
index 6ecef9a..7e0e576 100644
--- a/src/writer/msl/generator_impl_function_test.cc
+++ b/src/writer/msl/generator_impl_function_test.cc
@@ -91,7 +91,7 @@
 }
 
 TEST_F(MslGeneratorImplTest, Emit_Decoration_EntryPoint_WithInOutVars) {
-  // fn frag_main([[location(0)]] foo : f32) -> [[location(1)]] f32 {
+  // fn frag_main(@location(0) foo : f32) -> @location(1) f32 {
   //   return foo;
   // }
   auto* foo_in = Param("foo", ty.f32(), {Location(0)});
@@ -126,7 +126,7 @@
 }
 
 TEST_F(MslGeneratorImplTest, Emit_Decoration_EntryPoint_WithInOut_Builtins) {
-  // fn frag_main([[position(0)]] coord : vec4<f32>) -> [[frag_depth]] f32 {
+  // fn frag_main(@position(0) coord : vec4<f32>) -> @frag_depth f32 {
   //   return coord.x;
   // }
   auto* coord_in =
@@ -163,9 +163,9 @@
 TEST_F(MslGeneratorImplTest,
        Emit_Decoration_EntryPoint_SharedStruct_DifferentStages) {
   // struct Interface {
-  //   [[location(1)]] col1 : f32;
-  //   [[location(2)]] col2 : f32;
-  //   [[builtin(position)]] pos : vec4<f32>;
+  //   @location(1) col1 : f32;
+  //   @location(2) col2 : f32;
+  //   @builtin(position) pos : vec4<f32>;
   // };
   // fn vert_main() -> Interface {
   //   return Interface(0.4, 0.6, vec4<f32>());
@@ -248,7 +248,7 @@
 TEST_F(MslGeneratorImplTest,
        Emit_Decoration_EntryPoint_SharedStruct_HelperFunction) {
   // struct VertexOutput {
-  //   [[builtin(position)]] pos : vec4<f32>;
+  //   @builtin(position) pos : vec4<f32>;
   // };
   // fn foo(x : f32) -> VertexOutput {
   //   return VertexOutput(vec4<f32>(x, x, x, 1.0));
@@ -643,14 +643,14 @@
   // [[block]] struct Data {
   //   d : f32;
   // };
-  // [[binding(0), group(0)]] var<storage> data : Data;
+  // @binding(0) @group(0) var<storage> data : Data;
   //
-  // [[stage(compute), workgroup_size(1)]]
+  // @stage(compute) @workgroup_size(1)
   // fn a() {
   //   return;
   // }
   //
-  // [[stage(compute), workgroup_size(1)]]
+  // @stage(compute) @workgroup_size(1)
   // fn b() {
   //   return;
   // }
diff --git a/src/writer/spirv/builder_entry_point_test.cc b/src/writer/spirv/builder_entry_point_test.cc
index 57d4eae..46d6745 100644
--- a/src/writer/spirv/builder_entry_point_test.cc
+++ b/src/writer/spirv/builder_entry_point_test.cc
@@ -37,9 +37,9 @@
 using BuilderTest = TestHelper;
 
 TEST_F(BuilderTest, EntryPoint_Parameters) {
-  // [[stage(fragment)]]
-  // fn frag_main([[builtin(position)]] coord : vec4<f32>,
-  //              [[location(1)]] loc1 : f32) {
+  // @stage(fragment)
+  // fn frag_main(@builtin(position) coord : vec4<f32>,
+  //              @location(1) loc1 : f32) {
   //   var col : f32 = (coord.x * loc1);
   // }
   auto* coord =
@@ -106,8 +106,8 @@
 }
 
 TEST_F(BuilderTest, EntryPoint_ReturnValue) {
-  // [[stage(fragment)]]
-  // fn frag_main([[location(0)]] loc_in : u32) -> [[location(0)]] f32 {
+  // @stage(fragment)
+  // fn frag_main(@location(0) loc_in : u32) -> @location(0) f32 {
   //   if (loc_in > 10) {
   //     return 0.5;
   //   }
@@ -183,17 +183,17 @@
 
 TEST_F(BuilderTest, EntryPoint_SharedStruct) {
   // struct Interface {
-  //   [[location(1)]] value : f32;
-  //   [[builtin(position)]] pos : vec4<f32>;
+  //   @location(1) value : f32;
+  //   @builtin(position) pos : vec4<f32>;
   // };
   //
-  // [[stage(vertex)]]
+  // @stage(vertex)
   // fn vert_main() -> Interface {
   //   return Interface(42.0, vec4<f32>());
   // }
   //
-  // [[stage(fragment)]]
-  // fn frag_main(inputs : Interface) -> [[builtin(frag_depth)]] f32 {
+  // @stage(fragment)
+  // fn frag_main(inputs : Interface) -> @builtin(frag_depth) f32 {
   //   return inputs.value;
   // }
 
diff --git a/src/writer/spirv/builder_function_test.cc b/src/writer/spirv/builder_function_test.cc
index 8a9ff94..b86bb4b 100644
--- a/src/writer/spirv/builder_function_test.cc
+++ b/src/writer/spirv/builder_function_test.cc
@@ -189,14 +189,14 @@
   // [[block]] struct Data {
   //   d : f32;
   // };
-  // [[binding(0), group(0)]] var<storage> data : Data;
+  // @binding(0) @group(0) var<storage> data : Data;
   //
-  // [[stage(compute), workgroup_size(1)]]
+  // @stage(compute) @workgroup_size(1)
   // fn a() {
   //   return;
   // }
   //
-  // [[stage(compute), workgroup_size(1)]]
+  // @stage(compute) @workgroup_size(1)
   // fn b() {
   //   return;
   // }
diff --git a/src/writer/spirv/builder_intrinsic_test.cc b/src/writer/spirv/builder_intrinsic_test.cc
index e5da115..114885b 100644
--- a/src/writer/spirv/builder_intrinsic_test.cc
+++ b/src/writer/spirv/builder_intrinsic_test.cc
@@ -1846,9 +1846,9 @@
 
 TEST_F(IntrinsicBuilderTest, Call_ArrayLength_ViaLets_WithPtrNoise) {
   // [[block]] struct my_struct {
-  //   a : [[stride(4)]] array<f32>;
+  //   a : @stride(4) array<f32>;
   // };
-  // [[binding(1), group(2)]] var<storage, read> b : my_struct;
+  // @binding(1) @group(2) var<storage, read> b : my_struct;
   //
   // fn a_func() {
   //   let p = &*&b;
@@ -1913,7 +1913,7 @@
   //   i : atomic<i32>;
   // }
   //
-  // [[binding(1), group(2)]] var<storage, read_write> b : S;
+  // @binding(1) @group(2) var<storage, read_write> b : S;
   //
   // fn a_func() {
   //   let u : u32 = atomicLoad(&b.u);
@@ -1979,7 +1979,7 @@
   //   i : atomic<i32>;
   // }
   //
-  // [[binding(1), group(2)]] var<storage, read_write> b : S;
+  // @binding(1) @group(2) var<storage, read_write> b : S;
   //
   // fn a_func() {
   //   var u = 1u;
@@ -2059,7 +2059,7 @@
   //   v : atomic<i32>;
   // }
   //
-  // [[binding(1), group(2)]] var<storage, read_write> b : S;
+  // @binding(1) @group(2) var<storage, read_write> b : S;
   //
   // fn a_func() {
   //   var v = 10;
@@ -2137,7 +2137,7 @@
   //   v : atomic<u32>;
   // }
   //
-  // [[binding(1), group(2)]] var<storage, read_write> b : S;
+  // @binding(1) @group(2) var<storage, read_write> b : S;
   //
   // fn a_func() {
   //   var v = 10u;
@@ -2213,7 +2213,7 @@
   //   i : atomic<i32>;
   // }
   //
-  // [[binding(1), group(2)]] var<storage, read_write> b : S;
+  // @binding(1) @group(2) var<storage, read_write> b : S;
   //
   // fn a_func() {
   //   var u = 10u;
@@ -2295,7 +2295,7 @@
   //   i : atomic<i32>;
   // }
   //
-  // [[binding(1), group(2)]] var<storage, read_write> b : S;
+  // @binding(1) @group(2) var<storage, read_write> b : S;
   //
   // fn a_func() {
   //   let u : vec2<u32> = atomicCompareExchangeWeak(&b.u, 10u);
diff --git a/src/writer/wgsl/generator_impl.cc b/src/writer/wgsl/generator_impl.cc
index 1295c76..13fd561 100644
--- a/src/writer/wgsl/generator_impl.cc
+++ b/src/writer/wgsl/generator_impl.cc
@@ -369,7 +369,7 @@
   if (auto* ary = ty->As<ast::Array>()) {
     for (auto* deco : ary->decorations) {
       if (auto* stride = deco->As<ast::StrideDecoration>()) {
-        out << "[[stride(" << stride->stride << ")]] ";
+        out << "@stride(" << stride->stride << ") ";
       }
     }
 
@@ -526,7 +526,7 @@
   line() << "struct " << program_->Symbols().NameFor(str->name) << " {";
 
   auto add_padding = [&](uint32_t size) {
-    line() << "[[size(" << size << ")]]";
+    line() << "@size(" << size << ")";
 
     // Note: u32 is the smallest primitive we currently support. When WGSL
     // supports smaller types, this will need to be updated.
@@ -536,7 +536,7 @@
   increment_indent();
   uint32_t offset = 0;
   for (auto* mem : str->members) {
-    // TODO(crbug.com/tint/798) move the [[offset]] decoration handling to the
+    // TODO(crbug.com/tint/798) move the @offset decoration handling to the
     // transform::Wgsl sanitizer.
     if (auto* mem_sem = program_->Sem().Get(mem)) {
       offset = utils::RoundUp(mem_sem->Align(), offset);
@@ -625,14 +625,13 @@
 
 bool GeneratorImpl::EmitDecorations(std::ostream& out,
                                     const ast::DecorationList& decos) {
-  out << "[[";
   bool first = true;
   for (auto* deco : decos) {
     if (!first) {
-      out << ", ";
+      out << " ";
     }
     first = false;
-
+    out << "@";
     if (auto* workgroup = deco->As<ast::WorkgroupDecoration>()) {
       auto values = workgroup->Values();
       out << "workgroup_size(";
@@ -686,7 +685,6 @@
       return false;
     }
   }
-  out << "]]";
 
   return true;
 }
diff --git a/src/writer/wgsl/generator_impl_function_test.cc b/src/writer/wgsl/generator_impl_function_test.cc
index 3aebf94..d8843db 100644
--- a/src/writer/wgsl/generator_impl_function_test.cc
+++ b/src/writer/wgsl/generator_impl_function_test.cc
@@ -76,7 +76,7 @@
   gen.increment_indent();
 
   ASSERT_TRUE(gen.EmitFunction(func));
-  EXPECT_EQ(gen.result(), R"(  [[stage(compute), workgroup_size(2, 4, 6)]]
+  EXPECT_EQ(gen.result(), R"(  @stage(compute) @workgroup_size(2, 4, 6)
   fn my_func() {
     return;
   }
@@ -98,7 +98,7 @@
   gen.increment_indent();
 
   ASSERT_TRUE(gen.EmitFunction(func));
-  EXPECT_EQ(gen.result(), R"(  [[stage(compute), workgroup_size(2, height)]]
+  EXPECT_EQ(gen.result(), R"(  @stage(compute) @workgroup_size(2, height)
   fn my_func() {
     return;
   }
@@ -120,8 +120,8 @@
   gen.increment_indent();
 
   ASSERT_TRUE(gen.EmitFunction(func));
-  EXPECT_EQ(gen.result(), R"(  [[stage(fragment)]]
-  fn frag_main([[builtin(position)]] coord : vec4<f32>, [[location(1)]] loc1 : f32) {
+  EXPECT_EQ(gen.result(), R"(  @stage(fragment)
+  fn frag_main(@builtin(position) coord : vec4<f32>, @location(1) loc1 : f32) {
   }
 )");
 }
@@ -143,8 +143,8 @@
   gen.increment_indent();
 
   ASSERT_TRUE(gen.EmitFunction(func));
-  EXPECT_EQ(gen.result(), R"(  [[stage(fragment)]]
-  fn frag_main() -> [[location(1)]] f32 {
+  EXPECT_EQ(gen.result(), R"(  @stage(fragment)
+  fn frag_main() -> @location(1) f32 {
     return 1.0;
   }
 )");
@@ -156,14 +156,14 @@
   // [[block]] struct Data {
   //   d : f32;
   // };
-  // [[binding(0), group(0)]] var<storage> data : Data;
+  // @binding(0) @group(0) var<storage> data : Data;
   //
-  // [[stage(compute), workgroup_size(1)]]
+  // @stage(compute) @workgroup_size(1)
   // fn a() {
   //   return;
   // }
   //
-  // [[stage(compute), workgroup_size(1)]]
+  // @stage(compute) @workgroup_size(1)
   // fn b() {
   //   return;
   // }
@@ -210,20 +210,20 @@
   GeneratorImpl& gen = Build();
 
   ASSERT_TRUE(gen.Generate()) << gen.error();
-  EXPECT_EQ(gen.result(), R"([[block]]
+  EXPECT_EQ(gen.result(), R"(@block
 struct Data {
   d : f32;
 }
 
-[[binding(0), group(0)]] var<storage, read_write> data : Data;
+@binding(0) @group(0) var<storage, read_write> data : Data;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn a() {
   var v : f32 = data.d;
   return;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn b() {
   var v : f32 = data.d;
   return;
diff --git a/src/writer/wgsl/generator_impl_global_decl_test.cc b/src/writer/wgsl/generator_impl_global_decl_test.cc
index e22a75e..3664534 100644
--- a/src/writer/wgsl/generator_impl_global_decl_test.cc
+++ b/src/writer/wgsl/generator_impl_global_decl_test.cc
@@ -35,7 +35,7 @@
   gen.increment_indent();
 
   ASSERT_TRUE(gen.Generate()) << gen.error();
-  EXPECT_EQ(gen.result(), R"(  [[stage(compute), workgroup_size(1, 1, 1)]]
+  EXPECT_EQ(gen.result(), R"(  @stage(compute) @workgroup_size(1, 1, 1)
   fn test_function() {
     var a : f32;
   }
@@ -91,7 +91,7 @@
     a : i32;
   }
 
-  [[stage(compute), workgroup_size(1)]]
+  @stage(compute) @workgroup_size(1)
   fn main() {
     var s0 : S0;
     var s1 : S1;
@@ -112,7 +112,7 @@
   gen.increment_indent();
 
   ASSERT_TRUE(gen.Generate()) << gen.error();
-  EXPECT_EQ(gen.result(), "  [[group(0), binding(0)]] var s : sampler;\n");
+  EXPECT_EQ(gen.result(), "  @group(0) @binding(0) var s : sampler;\n");
 }
 
 TEST_F(WgslGeneratorImplTest, Emit_Global_Texture) {
@@ -128,8 +128,7 @@
   gen.increment_indent();
 
   ASSERT_TRUE(gen.Generate()) << gen.error();
-  EXPECT_EQ(gen.result(),
-            "  [[group(0), binding(0)]] var t : texture_1d<f32>;\n");
+  EXPECT_EQ(gen.result(), "  @group(0) @binding(0) var t : texture_1d<f32>;\n");
 }
 
 TEST_F(WgslGeneratorImplTest, Emit_OverridableConstants) {
@@ -141,9 +140,9 @@
   gen.increment_indent();
 
   ASSERT_TRUE(gen.Generate()) << gen.error();
-  EXPECT_EQ(gen.result(), R"(  [[override]] let a : f32;
+  EXPECT_EQ(gen.result(), R"(  @override let a : f32;
 
-  [[override(7)]] let b : f32;
+  @override(7) let b : f32;
 )");
 }
 
diff --git a/src/writer/wgsl/generator_impl_type_test.cc b/src/writer/wgsl/generator_impl_type_test.cc
index dd1355e..22dfc4b 100644
--- a/src/writer/wgsl/generator_impl_type_test.cc
+++ b/src/writer/wgsl/generator_impl_type_test.cc
@@ -56,7 +56,7 @@
 
   std::stringstream out;
   ASSERT_TRUE(gen.EmitType(out, a)) << gen.error();
-  EXPECT_EQ(out.str(), "[[stride(16)]] array<bool, 4>");
+  EXPECT_EQ(out.str(), "@stride(16) array<bool, 4>");
 }
 
 TEST_F(WgslGeneratorImplTest, EmitType_RuntimeArray) {
@@ -162,10 +162,10 @@
 
   ASSERT_TRUE(gen.EmitStructType(s)) << gen.error();
   EXPECT_EQ(gen.result(), R"(struct S {
-  [[size(8)]]
+  @size(8)
   padding : u32;
   a : i32;
-  [[size(4)]]
+  @size(4)
   padding_1 : u32;
   b : f32;
 }
@@ -183,10 +183,10 @@
 
   ASSERT_TRUE(gen.EmitStructType(s)) << gen.error();
   EXPECT_EQ(gen.result(), R"(struct S {
-  [[size(8)]]
+  @size(8)
   padding : u32;
   tint_0_padding : i32;
-  [[size(4)]]
+  @size(4)
   padding_1 : u32;
   tint_2_padding : f32;
 }
@@ -203,9 +203,9 @@
 
   ASSERT_TRUE(gen.EmitStructType(s)) << gen.error();
   EXPECT_EQ(gen.result(), R"(struct S {
-  [[align(8)]]
+  @align(8)
   a : i32;
-  [[align(16)]]
+  @align(16)
   b : f32;
 }
 )");
@@ -221,9 +221,9 @@
 
   ASSERT_TRUE(gen.EmitStructType(s)) << gen.error();
   EXPECT_EQ(gen.result(), R"(struct S {
-  [[size(16)]]
+  @size(16)
   a : i32;
-  [[size(32)]]
+  @size(32)
   b : f32;
 }
 )");
@@ -240,10 +240,10 @@
   GeneratorImpl& gen = Build();
 
   ASSERT_TRUE(gen.EmitStructType(s)) << gen.error();
-  EXPECT_EQ(gen.result(), R"([[block]]
+  EXPECT_EQ(gen.result(), R"(@block
 struct S {
   a : i32;
-  [[align(8)]]
+  @align(8)
   b : f32;
 }
 )");
@@ -263,11 +263,11 @@
   GeneratorImpl& gen = Build();
 
   ASSERT_TRUE(gen.EmitStructType(s)) << gen.error();
-  EXPECT_EQ(gen.result(), R"([[block]]
+  EXPECT_EQ(gen.result(), R"(@block
 struct S {
-  [[builtin(vertex_index)]]
+  @builtin(vertex_index)
   a : u32;
-  [[location(2)]]
+  @location(2)
   b : f32;
 }
 )");
diff --git a/src/writer/wgsl/generator_impl_variable_test.cc b/src/writer/wgsl/generator_impl_variable_test.cc
index 7e54432..6e073fa 100644
--- a/src/writer/wgsl/generator_impl_variable_test.cc
+++ b/src/writer/wgsl/generator_impl_variable_test.cc
@@ -57,7 +57,7 @@
 
   std::stringstream out;
   ASSERT_TRUE(gen.EmitVariable(out, v)) << gen.error();
-  EXPECT_EQ(out.str(), R"([[binding(0), group(0)]] var<storage, read> a : S;)");
+  EXPECT_EQ(out.str(), R"(@binding(0) @group(0) var<storage, read> a : S;)");
 }
 
 TEST_F(WgslGeneratorImplTest, EmitVariable_Access_Write) {
@@ -74,8 +74,7 @@
 
   std::stringstream out;
   ASSERT_TRUE(gen.EmitVariable(out, v)) << gen.error();
-  EXPECT_EQ(out.str(),
-            R"([[binding(0), group(0)]] var<storage, write> a : S;)");
+  EXPECT_EQ(out.str(), R"(@binding(0) @group(0) var<storage, write> a : S;)");
 }
 
 TEST_F(WgslGeneratorImplTest, EmitVariable_Access_ReadWrite) {
@@ -93,7 +92,7 @@
   std::stringstream out;
   ASSERT_TRUE(gen.EmitVariable(out, v)) << gen.error();
   EXPECT_EQ(out.str(),
-            R"([[binding(0), group(0)]] var<storage, read_write> a : S;)");
+            R"(@binding(0) @group(0) var<storage, read_write> a : S;)");
 }
 
 TEST_F(WgslGeneratorImplTest, EmitVariable_Decorated) {
@@ -108,7 +107,7 @@
 
   std::stringstream out;
   ASSERT_TRUE(gen.EmitVariable(out, v)) << gen.error();
-  EXPECT_EQ(out.str(), R"([[group(1), binding(2)]] var a : sampler;)");
+  EXPECT_EQ(out.str(), R"(@group(1) @binding(2) var a : sampler;)");
 }
 
 TEST_F(WgslGeneratorImplTest, EmitVariable_Constructor) {
diff --git a/test/access/let/matrix.spvasm.expected.wgsl b/test/access/let/matrix.spvasm.expected.wgsl
index e779e9f..b7b9fcf 100644
--- a/test/access/let/matrix.spvasm.expected.wgsl
+++ b/test/access/let/matrix.spvasm.expected.wgsl
@@ -3,7 +3,7 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   main_1();
 }
diff --git a/test/access/let/matrix.wgsl b/test/access/let/matrix.wgsl
index 12af9c2..b4c77cf 100644
--- a/test/access/let/matrix.wgsl
+++ b/test/access/let/matrix.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let m : mat3x3<f32> = mat3x3<f32>(vec3<f32>(1., 2., 3.), vec3<f32>(4., 5., 6.), vec3<f32>(7., 8., 9.));
   let v : vec3<f32> = m[1];
diff --git a/test/access/let/matrix.wgsl.expected.wgsl b/test/access/let/matrix.wgsl.expected.wgsl
index 546b0f3..f5dbdfb 100644
--- a/test/access/let/matrix.wgsl.expected.wgsl
+++ b/test/access/let/matrix.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let m : mat3x3<f32> = mat3x3<f32>(vec3<f32>(1.0, 2.0, 3.0), vec3<f32>(4.0, 5.0, 6.0), vec3<f32>(7.0, 8.0, 9.0));
   let v : vec3<f32> = m[1];
diff --git a/test/access/let/vector.spvasm.expected.wgsl b/test/access/let/vector.spvasm.expected.wgsl
index b341f30..77bc6a2 100644
--- a/test/access/let/vector.spvasm.expected.wgsl
+++ b/test/access/let/vector.spvasm.expected.wgsl
@@ -5,7 +5,7 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   main_1();
 }
diff --git a/test/access/let/vector.wgsl b/test/access/let/vector.wgsl
index c768952..3589c6b 100644
--- a/test/access/let/vector.wgsl
+++ b/test/access/let/vector.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let v : vec3<f32> = vec3<f32>(1., 2., 3.);
   let scalar : f32 = v.y;
diff --git a/test/access/let/vector.wgsl.expected.wgsl b/test/access/let/vector.wgsl.expected.wgsl
index b661cf4..d7d7a2d 100644
--- a/test/access/let/vector.wgsl.expected.wgsl
+++ b/test/access/let/vector.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let v : vec3<f32> = vec3<f32>(1.0, 2.0, 3.0);
   let scalar : f32 = v.y;
diff --git a/test/access/var/matrix.spvasm.expected.wgsl b/test/access/var/matrix.spvasm.expected.wgsl
index 527abf6..d415abd 100644
--- a/test/access/var/matrix.spvasm.expected.wgsl
+++ b/test/access/var/matrix.spvasm.expected.wgsl
@@ -5,7 +5,7 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   main_1();
 }
diff --git a/test/access/var/matrix.wgsl b/test/access/var/matrix.wgsl
index 0bd99dc..d511bd4 100644
--- a/test/access/var/matrix.wgsl
+++ b/test/access/var/matrix.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var m : mat3x3<f32>;
   let v : vec3<f32> = m[1];
diff --git a/test/access/var/matrix.wgsl.expected.wgsl b/test/access/var/matrix.wgsl.expected.wgsl
index 0bd99dc..d511bd4 100644
--- a/test/access/var/matrix.wgsl.expected.wgsl
+++ b/test/access/var/matrix.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var m : mat3x3<f32>;
   let v : vec3<f32> = m[1];
diff --git a/test/access/var/vector.spvasm.expected.wgsl b/test/access/var/vector.spvasm.expected.wgsl
index 3a3bfdf..310560a 100644
--- a/test/access/var/vector.spvasm.expected.wgsl
+++ b/test/access/var/vector.spvasm.expected.wgsl
@@ -8,7 +8,7 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   main_1();
 }
diff --git a/test/access/var/vector.wgsl b/test/access/var/vector.wgsl
index 8197419..078f82e 100644
--- a/test/access/var/vector.wgsl
+++ b/test/access/var/vector.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : vec3<f32>;
   let scalar : f32 = v.y;
diff --git a/test/access/var/vector.wgsl.expected.wgsl b/test/access/var/vector.wgsl.expected.wgsl
index 8197419..078f82e 100644
--- a/test/access/var/vector.wgsl.expected.wgsl
+++ b/test/access/var/vector.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : vec3<f32>;
   let scalar : f32 = v.y;
diff --git a/test/array/assign_to_function_var.wgsl b/test/array/assign_to_function_var.wgsl
index aeb1ab9..d5ccaa2 100644
--- a/test/array/assign_to_function_var.wgsl
+++ b/test/array/assign_to_function_var.wgsl
@@ -1,4 +1,4 @@
-type ArrayType = [[stride(16)]] array<i32, 4>;
+type ArrayType = @stride(16) array<i32, 4>;
 
 struct S {
   arr : ArrayType;
@@ -6,8 +6,8 @@
 
 var<private> src_private : ArrayType;
 var<workgroup> src_workgroup : ArrayType;
-[[group(0), binding(0)]] var<uniform> src_uniform : S;
-[[group(0), binding(1)]] var<storage, read_write> src_storage : S;
+@group(0) @binding(0) var<uniform> src_uniform : S;
+@group(0) @binding(1) var<storage, read_write> src_storage : S;
 
 fn ret_arr() -> ArrayType {
   return ArrayType();
diff --git a/test/array/assign_to_function_var.wgsl.expected.wgsl b/test/array/assign_to_function_var.wgsl.expected.wgsl
index 3951d85..0033bea 100644
--- a/test/array/assign_to_function_var.wgsl.expected.wgsl
+++ b/test/array/assign_to_function_var.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-type ArrayType = [[stride(16)]] array<i32, 4>;
+type ArrayType = @stride(16) array<i32, 4>;
 
 struct S {
   arr : ArrayType;
@@ -8,9 +8,9 @@
 
 var<workgroup> src_workgroup : ArrayType;
 
-[[group(0), binding(0)]] var<uniform> src_uniform : S;
+@group(0) @binding(0) var<uniform> src_uniform : S;
 
-[[group(0), binding(1)]] var<storage, read_write> src_storage : S;
+@group(0) @binding(1) var<storage, read_write> src_storage : S;
 
 fn ret_arr() -> ArrayType {
   return ArrayType();
diff --git a/test/array/assign_to_private_var.wgsl b/test/array/assign_to_private_var.wgsl
index b8b342c..510da19 100644
--- a/test/array/assign_to_private_var.wgsl
+++ b/test/array/assign_to_private_var.wgsl
@@ -1,4 +1,4 @@
-type ArrayType = [[stride(16)]] array<i32, 4>;
+type ArrayType = @stride(16) array<i32, 4>;
 
 struct S {
   arr : ArrayType;
@@ -6,8 +6,8 @@
 
 var<private> src_private : ArrayType;
 var<workgroup> src_workgroup : ArrayType;
-[[group(0), binding(0)]] var<uniform> src_uniform : S;
-[[group(0), binding(1)]] var<storage, read_write> src_storage : S;
+@group(0) @binding(0) var<uniform> src_uniform : S;
+@group(0) @binding(1) var<storage, read_write> src_storage : S;
 
 var<private> dst : ArrayType;
 var<private> dst_nested : array<array<array<i32, 2>, 3>, 4>;
diff --git a/test/array/assign_to_private_var.wgsl.expected.wgsl b/test/array/assign_to_private_var.wgsl.expected.wgsl
index 56f7ba5..fd2057b 100644
--- a/test/array/assign_to_private_var.wgsl.expected.wgsl
+++ b/test/array/assign_to_private_var.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-type ArrayType = [[stride(16)]] array<i32, 4>;
+type ArrayType = @stride(16) array<i32, 4>;
 
 struct S {
   arr : ArrayType;
@@ -8,9 +8,9 @@
 
 var<workgroup> src_workgroup : ArrayType;
 
-[[group(0), binding(0)]] var<uniform> src_uniform : S;
+@group(0) @binding(0) var<uniform> src_uniform : S;
 
-[[group(0), binding(1)]] var<storage, read_write> src_storage : S;
+@group(0) @binding(1) var<storage, read_write> src_storage : S;
 
 var<private> dst : ArrayType;
 
diff --git a/test/array/assign_to_storage_var.wgsl b/test/array/assign_to_storage_var.wgsl
index 9bc068a..6d001d8 100644
--- a/test/array/assign_to_storage_var.wgsl
+++ b/test/array/assign_to_storage_var.wgsl
@@ -1,4 +1,4 @@
-type ArrayType = [[stride(16)]] array<i32, 4>;
+type ArrayType = @stride(16) array<i32, 4>;
 
 struct S {
   arr : ArrayType;
@@ -10,11 +10,11 @@
 
 var<private> src_private : ArrayType;
 var<workgroup> src_workgroup : ArrayType;
-[[group(0), binding(0)]] var<uniform> src_uniform : S;
-[[group(0), binding(1)]] var<storage, read_write> src_storage : S;
+@group(0) @binding(0) var<uniform> src_uniform : S;
+@group(0) @binding(1) var<storage, read_write> src_storage : S;
 
-[[group(0), binding(2)]] var<storage, read_write> dst : S;
-[[group(0), binding(3)]] var<storage, read_write> dst_nested : S_nested;
+@group(0) @binding(2) var<storage, read_write> dst : S;
+@group(0) @binding(3) var<storage, read_write> dst_nested : S_nested;
 
 fn ret_arr() -> ArrayType {
   return ArrayType();
diff --git a/test/array/assign_to_storage_var.wgsl.expected.wgsl b/test/array/assign_to_storage_var.wgsl.expected.wgsl
index dce03ab..88902fa 100644
--- a/test/array/assign_to_storage_var.wgsl.expected.wgsl
+++ b/test/array/assign_to_storage_var.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-type ArrayType = [[stride(16)]] array<i32, 4>;
+type ArrayType = @stride(16) array<i32, 4>;
 
 struct S {
   arr : ArrayType;
@@ -12,13 +12,13 @@
 
 var<workgroup> src_workgroup : ArrayType;
 
-[[group(0), binding(0)]] var<uniform> src_uniform : S;
+@group(0) @binding(0) var<uniform> src_uniform : S;
 
-[[group(0), binding(1)]] var<storage, read_write> src_storage : S;
+@group(0) @binding(1) var<storage, read_write> src_storage : S;
 
-[[group(0), binding(2)]] var<storage, read_write> dst : S;
+@group(0) @binding(2) var<storage, read_write> dst : S;
 
-[[group(0), binding(3)]] var<storage, read_write> dst_nested : S_nested;
+@group(0) @binding(3) var<storage, read_write> dst_nested : S_nested;
 
 fn ret_arr() -> ArrayType {
   return ArrayType();
diff --git a/test/array/assign_to_workgroup_var.wgsl b/test/array/assign_to_workgroup_var.wgsl
index 225f2f2..9fb94eb 100644
--- a/test/array/assign_to_workgroup_var.wgsl
+++ b/test/array/assign_to_workgroup_var.wgsl
@@ -1,4 +1,4 @@
-type ArrayType = [[stride(16)]] array<i32, 4>;
+type ArrayType = @stride(16) array<i32, 4>;
 
 struct S {
   arr : ArrayType;
@@ -6,8 +6,8 @@
 
 var<private> src_private : ArrayType;
 var<workgroup> src_workgroup : ArrayType;
-[[group(0), binding(0)]] var<uniform> src_uniform : S;
-[[group(0), binding(1)]] var<storage, read_write> src_storage : S;
+@group(0) @binding(0) var<uniform> src_uniform : S;
+@group(0) @binding(1) var<storage, read_write> src_storage : S;
 
 var<workgroup> dst : ArrayType;
 var<workgroup> dst_nested : array<array<array<i32, 2>, 3>, 4>;
diff --git a/test/array/assign_to_workgroup_var.wgsl.expected.wgsl b/test/array/assign_to_workgroup_var.wgsl.expected.wgsl
index a5a27e3..4fecbc8 100644
--- a/test/array/assign_to_workgroup_var.wgsl.expected.wgsl
+++ b/test/array/assign_to_workgroup_var.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-type ArrayType = [[stride(16)]] array<i32, 4>;
+type ArrayType = @stride(16) array<i32, 4>;
 
 struct S {
   arr : ArrayType;
@@ -8,9 +8,9 @@
 
 var<workgroup> src_workgroup : ArrayType;
 
-[[group(0), binding(0)]] var<uniform> src_uniform : S;
+@group(0) @binding(0) var<uniform> src_uniform : S;
 
-[[group(0), binding(1)]] var<storage, read_write> src_storage : S;
+@group(0) @binding(1) var<storage, read_write> src_storage : S;
 
 var<workgroup> dst : ArrayType;
 
diff --git a/test/array/function_parameter.wgsl b/test/array/function_parameter.wgsl
index e50418b..23de855 100644
--- a/test/array/function_parameter.wgsl
+++ b/test/array/function_parameter.wgsl
@@ -10,7 +10,7 @@
   return a[1][2][3];
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let a1 : array<f32, 4> = array<f32, 4>();
   let a2 : array<array<f32, 4>, 3> = array<array<f32, 4>, 3>();
diff --git a/test/array/function_parameter.wgsl.expected.wgsl b/test/array/function_parameter.wgsl.expected.wgsl
index e50418b..23de855 100644
--- a/test/array/function_parameter.wgsl.expected.wgsl
+++ b/test/array/function_parameter.wgsl.expected.wgsl
@@ -10,7 +10,7 @@
   return a[1][2][3];
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let a1 : array<f32, 4> = array<f32, 4>();
   let a2 : array<array<f32, 4>, 3> = array<array<f32, 4>, 3>();
diff --git a/test/array/function_return_type.wgsl b/test/array/function_return_type.wgsl
index 407302f..7491245 100644
--- a/test/array/function_return_type.wgsl
+++ b/test/array/function_return_type.wgsl
@@ -10,7 +10,7 @@
   return array<array<array<f32, 4>, 3>, 2>(f2(), f2());
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let a1 : array<f32, 4> = f1();
   let a2 : array<array<f32, 4>, 3> = f2();
diff --git a/test/array/function_return_type.wgsl.expected.wgsl b/test/array/function_return_type.wgsl.expected.wgsl
index 407302f..7491245 100644
--- a/test/array/function_return_type.wgsl.expected.wgsl
+++ b/test/array/function_return_type.wgsl.expected.wgsl
@@ -10,7 +10,7 @@
   return array<array<array<f32, 4>, 3>, 2>(f2(), f2());
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let a1 : array<f32, 4> = f1();
   let a2 : array<array<f32, 4>, 3> = f2();
diff --git a/test/array/size.wgsl b/test/array/size.wgsl
index c5ebee4..60721db 100644
--- a/test/array/size.wgsl
+++ b/test/array/size.wgsl
@@ -1,7 +1,7 @@
 let slen = 4;
 let ulen = 4u;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   var signed_literal : array<f32, 4>;
   var unsigned_literal : array<f32, 4u>;
diff --git a/test/array/size.wgsl.expected.wgsl b/test/array/size.wgsl.expected.wgsl
index f0df1f0..0998407 100644
--- a/test/array/size.wgsl.expected.wgsl
+++ b/test/array/size.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 let ulen = 4u;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   var signed_literal : array<f32, 4>;
   var unsigned_literal : array<f32, 4u>;
diff --git a/test/array/type_constructor.wgsl b/test/array/type_constructor.wgsl
index 2870b12..8a07f39 100644
--- a/test/array/type_constructor.wgsl
+++ b/test/array/type_constructor.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let x : i32 = 42;
 
diff --git a/test/array/type_constructor.wgsl.expected.wgsl b/test/array/type_constructor.wgsl.expected.wgsl
index 39eaafd..4381ec8 100644
--- a/test/array/type_constructor.wgsl.expected.wgsl
+++ b/test/array/type_constructor.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let x : i32 = 42;
   let empty : array<i32, 4> = array<i32, 4>();
diff --git a/test/benchmark/particles.wgsl b/test/benchmark/particles.wgsl
index 4734a37..10bfb00 100644
--- a/test/benchmark/particles.wgsl
+++ b/test/benchmark/particles.wgsl
@@ -17,21 +17,21 @@
   right : vec3<f32>;
   up    : vec3<f32>;
 };
-[[binding(0), group(0)]] var<uniform> render_params : RenderParams;
+@binding(0) @group(0) var<uniform> render_params : RenderParams;
 
 struct VertexInput {
-  [[location(0)]] position : vec3<f32>;
-  [[location(1)]] color    : vec4<f32>;
-  [[location(2)]] quad_pos : vec2<f32>; // -1..+1
+  @location(0) position : vec3<f32>;
+  @location(1) color    : vec4<f32>;
+  @location(2) quad_pos : vec2<f32>; // -1..+1
 };
 
 struct VertexOutput {
-  [[builtin(position)]] position : vec4<f32>;
-  [[location(0)]]       color    : vec4<f32>;
-  [[location(1)]]       quad_pos : vec2<f32>; // -1..+1
+  @builtin(position) position : vec4<f32>;
+  @location(0)       color    : vec4<f32>;
+  @location(1)       quad_pos : vec2<f32>; // -1..+1
 };
 
-[[stage(vertex)]]
+@stage(vertex)
 fn vs_main(in : VertexInput) -> VertexOutput {
   var quad_pos = mat2x3<f32>(render_params.right, render_params.up) * in.quad_pos;
   var position = in.position + quad_pos * 0.01;
@@ -45,8 +45,8 @@
 ////////////////////////////////////////////////////////////////////////////////
 // Fragment shader
 ////////////////////////////////////////////////////////////////////////////////
-[[stage(fragment)]]
-fn fs_main(in : VertexOutput) -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
   var color = in.color;
   // Apply a circular particle alpha mask
   color.a = color.a * max(1.0 - length(in.quad_pos), 0.0);
@@ -72,12 +72,12 @@
   particles : array<Particle>;
 };
 
-[[binding(0), group(0)]] var<uniform> sim_params : SimulationParams;
-[[binding(1), group(0)]] var<storage, read_write> data : Particles;
-[[binding(2), group(0)]] var texture : texture_2d<f32>;
+@binding(0) @group(0) var<uniform> sim_params : SimulationParams;
+@binding(1) @group(0) var<storage, read_write> data : Particles;
+@binding(2) @group(0) var texture : texture_2d<f32>;
 
-[[stage(compute), workgroup_size(64)]]
-fn simulate([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
+@stage(compute) @workgroup_size(64)
+fn simulate(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
   rand_seed = (sim_params.seed.xy + vec2<f32>(GlobalInvocationID.xy)) * sim_params.seed.zw;
 
   let idx = GlobalInvocationID.x;
@@ -136,11 +136,11 @@
   weights : array<f32>;
 };
 
-[[binding(3), group(0)]] var<uniform> ubo : UBO;
-[[binding(4), group(0)]] var<storage, read> buf_in : Buffer;
-[[binding(5), group(0)]] var<storage, read_write> buf_out : Buffer;
-[[binding(6), group(0)]] var tex_in : texture_2d<f32>;
-[[binding(7), group(0)]] var tex_out : texture_storage_2d<rgba8unorm, write>;
+@binding(3) @group(0) var<uniform> ubo : UBO;
+@binding(4) @group(0) var<storage, read> buf_in : Buffer;
+@binding(5) @group(0) var<storage, read_write> buf_out : Buffer;
+@binding(6) @group(0) var tex_in : texture_2d<f32>;
+@binding(7) @group(0) var tex_out : texture_storage_2d<rgba8unorm, write>;
 
 ////////////////////////////////////////////////////////////////////////////////
 // import_level
@@ -148,8 +148,8 @@
 // Loads the alpha channel from a texel of the source image, and writes it to
 // the buf_out.weights.
 ////////////////////////////////////////////////////////////////////////////////
-[[stage(compute), workgroup_size(64)]]
-fn import_level([[builtin(global_invocation_id)]] coord : vec3<u32>) {
+@stage(compute) @workgroup_size(64)
+fn import_level(@builtin(global_invocation_id) coord : vec3<u32>) {
   _ = &buf_in;
   let offset = coord.x + coord.y * ubo.width;
   buf_out.weights[offset] = textureLoad(tex_in, vec2<i32>(coord.xy), 0).w;
@@ -163,8 +163,8 @@
 // mip level of tex_out. See simulate() in particle.wgsl to understand the
 // probability logic.
 ////////////////////////////////////////////////////////////////////////////////
-[[stage(compute), workgroup_size(64)]]
-fn export_level([[builtin(global_invocation_id)]] coord : vec3<u32>) {
+@stage(compute) @workgroup_size(64)
+fn export_level(@builtin(global_invocation_id) coord : vec3<u32>) {
   if (all(coord.xy < vec2<u32>(textureDimensions(tex_out)))) {
     let dst_offset = coord.x    + coord.y    * ubo.width;
     let src_offset = coord.x*2u + coord.y*2u * ubo.width;
diff --git a/test/benchmark/particles.wgsl.expected.wgsl b/test/benchmark/particles.wgsl.expected.wgsl
index 0ab3f50..ad07dc5 100644
--- a/test/benchmark/particles.wgsl.expected.wgsl
+++ b/test/benchmark/particles.wgsl.expected.wgsl
@@ -12,27 +12,27 @@
   up : vec3<f32>;
 }
 
-[[binding(0), group(0)]] var<uniform> render_params : RenderParams;
+@binding(0) @group(0) var<uniform> render_params : RenderParams;
 
 struct VertexInput {
-  [[location(0)]]
+  @location(0)
   position : vec3<f32>;
-  [[location(1)]]
+  @location(1)
   color : vec4<f32>;
-  [[location(2)]]
+  @location(2)
   quad_pos : vec2<f32>;
 }
 
 struct VertexOutput {
-  [[builtin(position)]]
+  @builtin(position)
   position : vec4<f32>;
-  [[location(0)]]
+  @location(0)
   color : vec4<f32>;
-  [[location(1)]]
+  @location(1)
   quad_pos : vec2<f32>;
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn vs_main(in : VertexInput) -> VertexOutput {
   var quad_pos = (mat2x3<f32>(render_params.right, render_params.up) * in.quad_pos);
   var position = (in.position + (quad_pos * 0.01));
@@ -43,8 +43,8 @@
   return out;
 }
 
-[[stage(fragment)]]
-fn fs_main(in : VertexOutput) -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
   var color = in.color;
   color.a = (color.a * max((1.0 - length(in.quad_pos)), 0.0));
   return color;
@@ -66,14 +66,14 @@
   particles : array<Particle>;
 }
 
-[[binding(0), group(0)]] var<uniform> sim_params : SimulationParams;
+@binding(0) @group(0) var<uniform> sim_params : SimulationParams;
 
-[[binding(1), group(0)]] var<storage, read_write> data : Particles;
+@binding(1) @group(0) var<storage, read_write> data : Particles;
 
-[[binding(2), group(0)]] var texture : texture_2d<f32>;
+@binding(2) @group(0) var texture : texture_2d<f32>;
 
-[[stage(compute), workgroup_size(64)]]
-fn simulate([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
+@stage(compute) @workgroup_size(64)
+fn simulate(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
   rand_seed = ((sim_params.seed.xy + vec2<f32>(GlobalInvocationID.xy)) * sim_params.seed.zw);
   let idx = GlobalInvocationID.x;
   var particle = data.particles[idx];
@@ -110,25 +110,25 @@
   weights : array<f32>;
 }
 
-[[binding(3), group(0)]] var<uniform> ubo : UBO;
+@binding(3) @group(0) var<uniform> ubo : UBO;
 
-[[binding(4), group(0)]] var<storage, read> buf_in : Buffer;
+@binding(4) @group(0) var<storage, read> buf_in : Buffer;
 
-[[binding(5), group(0)]] var<storage, read_write> buf_out : Buffer;
+@binding(5) @group(0) var<storage, read_write> buf_out : Buffer;
 
-[[binding(6), group(0)]] var tex_in : texture_2d<f32>;
+@binding(6) @group(0) var tex_in : texture_2d<f32>;
 
-[[binding(7), group(0)]] var tex_out : texture_storage_2d<rgba8unorm, write>;
+@binding(7) @group(0) var tex_out : texture_storage_2d<rgba8unorm, write>;
 
-[[stage(compute), workgroup_size(64)]]
-fn import_level([[builtin(global_invocation_id)]] coord : vec3<u32>) {
+@stage(compute) @workgroup_size(64)
+fn import_level(@builtin(global_invocation_id) coord : vec3<u32>) {
   _ = &(buf_in);
   let offset = (coord.x + (coord.y * ubo.width));
   buf_out.weights[offset] = textureLoad(tex_in, vec2<i32>(coord.xy), 0).w;
 }
 
-[[stage(compute), workgroup_size(64)]]
-fn export_level([[builtin(global_invocation_id)]] coord : vec3<u32>) {
+@stage(compute) @workgroup_size(64)
+fn export_level(@builtin(global_invocation_id) coord : vec3<u32>) {
   if (all((coord.xy < vec2<u32>(textureDimensions(tex_out))))) {
     let dst_offset = (coord.x + (coord.y * ubo.width));
     let src_offset = ((coord.x * 2u) + ((coord.y * 2u) * ubo.width));
diff --git a/test/benchmark/simple_compute.wgsl b/test/benchmark/simple_compute.wgsl
index f5b883a..605bfee 100644
--- a/test/benchmark/simple_compute.wgsl
+++ b/test/benchmark/simple_compute.wgsl
@@ -2,9 +2,9 @@
   data : array<i32>;
 };
 
-[[group(0), binding(0)]] var<storage, read_write> buffer : SB;
+@group(0) @binding(0) var<storage, read_write> buffer : SB;
 
-[[stage(compute), workgroup_size(1, 2, 3)]]
-fn main([[builtin(global_invocation_id)]] id : vec3<u32>) {
+@stage(compute) @workgroup_size(1, 2, 3)
+fn main(@builtin(global_invocation_id) id : vec3<u32>) {
   buffer.data[id.x] = buffer.data[id.x] + 1;
 }
diff --git a/test/benchmark/simple_compute.wgsl.expected.wgsl b/test/benchmark/simple_compute.wgsl.expected.wgsl
index a83b28f..458c08c 100644
--- a/test/benchmark/simple_compute.wgsl.expected.wgsl
+++ b/test/benchmark/simple_compute.wgsl.expected.wgsl
@@ -2,9 +2,9 @@
   data : array<i32>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> buffer : SB;
+@group(0) @binding(0) var<storage, read_write> buffer : SB;
 
-[[stage(compute), workgroup_size(1, 2, 3)]]
-fn main([[builtin(global_invocation_id)]] id : vec3<u32>) {
+@stage(compute) @workgroup_size(1, 2, 3)
+fn main(@builtin(global_invocation_id) id : vec3<u32>) {
   buffer.data[id.x] = (buffer.data[id.x] + 1);
 }
diff --git a/test/benchmark/simple_fragment.wgsl b/test/benchmark/simple_fragment.wgsl
index bb5ed94..3fe67bf 100644
--- a/test/benchmark/simple_fragment.wgsl
+++ b/test/benchmark/simple_fragment.wgsl
@@ -1,12 +1,12 @@
 struct Input {
-  [[location(0)]] color: vec4<f32>;
+  @location(0) color: vec4<f32>;
 };
 
 struct Output {
-  [[location(0)]] color: vec4<f32>;
+  @location(0) color: vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main(in : Input) -> Output {
   return Output(in.color);
 }
diff --git a/test/benchmark/simple_fragment.wgsl.expected.wgsl b/test/benchmark/simple_fragment.wgsl.expected.wgsl
index 7236de2..19b9e99 100644
--- a/test/benchmark/simple_fragment.wgsl.expected.wgsl
+++ b/test/benchmark/simple_fragment.wgsl.expected.wgsl
@@ -1,14 +1,14 @@
 struct Input {
-  [[location(0)]]
+  @location(0)
   color : vec4<f32>;
 }
 
 struct Output {
-  [[location(0)]]
+  @location(0)
   color : vec4<f32>;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main(in : Input) -> Output {
   return Output(in.color);
 }
diff --git a/test/benchmark/simple_vertex.wgsl b/test/benchmark/simple_vertex.wgsl
index 8f9a07b..fb13fe2 100644
--- a/test/benchmark/simple_vertex.wgsl
+++ b/test/benchmark/simple_vertex.wgsl
@@ -1,12 +1,12 @@
 struct Input {
-  [[location(0)]] position: vec4<f32>;
+  @location(0) position: vec4<f32>;
 };
 
 struct Output {
-  [[builtin(position)]] position : vec4<f32>;
+  @builtin(position) position : vec4<f32>;
 };
 
-[[stage(vertex)]]
+@stage(vertex)
 fn main(in : Input) -> Output {
   return Output(in.position);
 }
diff --git a/test/benchmark/simple_vertex.wgsl.expected.wgsl b/test/benchmark/simple_vertex.wgsl.expected.wgsl
index fdce23e..41368eb 100644
--- a/test/benchmark/simple_vertex.wgsl.expected.wgsl
+++ b/test/benchmark/simple_vertex.wgsl.expected.wgsl
@@ -1,14 +1,14 @@
 struct Input {
-  [[location(0)]]
+  @location(0)
   position : vec4<f32>;
 }
 
 struct Output {
-  [[builtin(position)]]
+  @builtin(position)
   position : vec4<f32>;
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn main(in : Input) -> Output {
   return Output(in.position);
 }
diff --git a/test/buffer/storage/dynamic_index/read.wgsl b/test/buffer/storage/dynamic_index/read.wgsl
index 633b1be..94c2c1f 100644
--- a/test/buffer/storage/dynamic_index/read.wgsl
+++ b/test/buffer/storage/dynamic_index/read.wgsl
@@ -7,17 +7,17 @@
     f : f32;
     g : mat2x3<f32>;
     h : mat3x2<f32>;
-    i : [[stride(16)]] array<vec4<i32>, 4>;
+    i : @stride(16) array<vec4<i32>, 4>;
 };
 
 struct S {
     arr : array<Inner>;
 };
 
-[[binding(0), group(0)]] var<storage, read> s : S;
+@binding(0) @group(0) var<storage, read> s : S;
 
-[[stage(compute), workgroup_size(1)]]
-fn main([[builtin(local_invocation_index)]] idx : u32) {
+@stage(compute) @workgroup_size(1)
+fn main(@builtin(local_invocation_index) idx : u32) {
     let a = s.arr[idx].a;
     let b = s.arr[idx].b;
     let c = s.arr[idx].c;
diff --git a/test/buffer/storage/dynamic_index/read.wgsl.expected.wgsl b/test/buffer/storage/dynamic_index/read.wgsl.expected.wgsl
index bd24ab0..fd0c451 100644
--- a/test/buffer/storage/dynamic_index/read.wgsl.expected.wgsl
+++ b/test/buffer/storage/dynamic_index/read.wgsl.expected.wgsl
@@ -7,17 +7,17 @@
   f : f32;
   g : mat2x3<f32>;
   h : mat3x2<f32>;
-  i : [[stride(16)]] array<vec4<i32>, 4>;
+  i : @stride(16) array<vec4<i32>, 4>;
 }
 
 struct S {
   arr : array<Inner>;
 }
 
-[[binding(0), group(0)]] var<storage, read> s : S;
+@binding(0) @group(0) var<storage, read> s : S;
 
-[[stage(compute), workgroup_size(1)]]
-fn main([[builtin(local_invocation_index)]] idx : u32) {
+@stage(compute) @workgroup_size(1)
+fn main(@builtin(local_invocation_index) idx : u32) {
   let a = s.arr[idx].a;
   let b = s.arr[idx].b;
   let c = s.arr[idx].c;
diff --git a/test/buffer/storage/dynamic_index/write.wgsl b/test/buffer/storage/dynamic_index/write.wgsl
index 836c018..3770015 100644
--- a/test/buffer/storage/dynamic_index/write.wgsl
+++ b/test/buffer/storage/dynamic_index/write.wgsl
@@ -7,17 +7,17 @@
     f : f32;
     g : mat2x3<f32>;
     h : mat3x2<f32>;
-    i : [[stride(16)]] array<vec4<i32>, 4>;
+    i : @stride(16) array<vec4<i32>, 4>;
 };
 
 struct S {
     arr : array<Inner>;
 };
 
-[[binding(0), group(0)]] var<storage, read_write> s : S;
+@binding(0) @group(0) var<storage, read_write> s : S;
 
-[[stage(compute), workgroup_size(1)]]
-fn main([[builtin(local_invocation_index)]] idx : u32) {
+@stage(compute) @workgroup_size(1)
+fn main(@builtin(local_invocation_index) idx : u32) {
     s.arr[idx].a = vec3<i32>();
     s.arr[idx].b = i32();
     s.arr[idx].c = vec3<u32>();
@@ -26,5 +26,5 @@
     s.arr[idx].f = f32();
     s.arr[idx].g = mat2x3<f32>();
     s.arr[idx].h = mat3x2<f32>();
-    s.arr[idx].i = [[stride(16)]] array<vec4<i32>, 4>();
+    s.arr[idx].i = @stride(16) array<vec4<i32>, 4>();
 }
diff --git a/test/buffer/storage/dynamic_index/write.wgsl.expected.wgsl b/test/buffer/storage/dynamic_index/write.wgsl.expected.wgsl
index b015519..d51db21 100644
--- a/test/buffer/storage/dynamic_index/write.wgsl.expected.wgsl
+++ b/test/buffer/storage/dynamic_index/write.wgsl.expected.wgsl
@@ -7,17 +7,17 @@
   f : f32;
   g : mat2x3<f32>;
   h : mat3x2<f32>;
-  i : [[stride(16)]] array<vec4<i32>, 4>;
+  i : @stride(16) array<vec4<i32>, 4>;
 }
 
 struct S {
   arr : array<Inner>;
 }
 
-[[binding(0), group(0)]] var<storage, read_write> s : S;
+@binding(0) @group(0) var<storage, read_write> s : S;
 
-[[stage(compute), workgroup_size(1)]]
-fn main([[builtin(local_invocation_index)]] idx : u32) {
+@stage(compute) @workgroup_size(1)
+fn main(@builtin(local_invocation_index) idx : u32) {
   s.arr[idx].a = vec3<i32>();
   s.arr[idx].b = i32();
   s.arr[idx].c = vec3<u32>();
@@ -26,5 +26,5 @@
   s.arr[idx].f = f32();
   s.arr[idx].g = mat2x3<f32>();
   s.arr[idx].h = mat3x2<f32>();
-  s.arr[idx].i = [[stride(16)]] array<vec4<i32>, 4>();
+  s.arr[idx].i = @stride(16) array<vec4<i32>, 4>();
 }
diff --git a/test/buffer/storage/static_index/read.wgsl b/test/buffer/storage/static_index/read.wgsl
index c0824b3..773fbbb 100644
--- a/test/buffer/storage/static_index/read.wgsl
+++ b/test/buffer/storage/static_index/read.wgsl
@@ -12,12 +12,12 @@
     g : mat2x3<f32>;
     h : mat3x2<f32>;
     i : Inner;
-    j : [[stride(16)]] array<Inner, 4>;
+    j : @stride(16) array<Inner, 4>;
 };
 
-[[binding(0), group(0)]] var<storage, read> s : S;
+@binding(0) @group(0) var<storage, read> s : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     let a = s.a;
     let b = s.b;
diff --git a/test/buffer/storage/static_index/read.wgsl.expected.wgsl b/test/buffer/storage/static_index/read.wgsl.expected.wgsl
index 56187c5..3413a96 100644
--- a/test/buffer/storage/static_index/read.wgsl.expected.wgsl
+++ b/test/buffer/storage/static_index/read.wgsl.expected.wgsl
@@ -12,12 +12,12 @@
   g : mat2x3<f32>;
   h : mat3x2<f32>;
   i : Inner;
-  j : [[stride(16)]] array<Inner, 4>;
+  j : @stride(16) array<Inner, 4>;
 }
 
-[[binding(0), group(0)]] var<storage, read> s : S;
+@binding(0) @group(0) var<storage, read> s : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let a = s.a;
   let b = s.b;
diff --git a/test/buffer/storage/static_index/write.wgsl b/test/buffer/storage/static_index/write.wgsl
index 7b4affb..ff18cbc 100644
--- a/test/buffer/storage/static_index/write.wgsl
+++ b/test/buffer/storage/static_index/write.wgsl
@@ -12,12 +12,12 @@
     g : mat2x3<f32>;
     h : mat3x2<f32>;
     i : Inner;
-    j : [[stride(16)]] array<Inner, 4>;
+    j : @stride(16) array<Inner, 4>;
 };
 
-[[binding(0), group(0)]] var<storage, write> s : S;
+@binding(0) @group(0) var<storage, write> s : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     s.a = vec3<i32>();
     s.b = i32();
@@ -28,5 +28,5 @@
     s.g = mat2x3<f32>();
     s.h = mat3x2<f32>();
     s.i = Inner();
-    s.j = [[stride(16)]] array<Inner, 4>();
+    s.j = @stride(16) array<Inner, 4>();
 }
diff --git a/test/buffer/storage/static_index/write.wgsl.expected.wgsl b/test/buffer/storage/static_index/write.wgsl.expected.wgsl
index 46cdde8..595efce 100644
--- a/test/buffer/storage/static_index/write.wgsl.expected.wgsl
+++ b/test/buffer/storage/static_index/write.wgsl.expected.wgsl
@@ -12,12 +12,12 @@
   g : mat2x3<f32>;
   h : mat3x2<f32>;
   i : Inner;
-  j : [[stride(16)]] array<Inner, 4>;
+  j : @stride(16) array<Inner, 4>;
 }
 
-[[binding(0), group(0)]] var<storage, write> s : S;
+@binding(0) @group(0) var<storage, write> s : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   s.a = vec3<i32>();
   s.b = i32();
@@ -28,5 +28,5 @@
   s.g = mat2x3<f32>();
   s.h = mat3x2<f32>();
   s.i = Inner();
-  s.j = [[stride(16)]] array<Inner, 4>();
+  s.j = @stride(16) array<Inner, 4>();
 }
diff --git a/test/buffer/storage/types/array.wgsl b/test/buffer/storage/types/array.wgsl
index 6105a26..ae79369 100644
--- a/test/buffer/storage/types/array.wgsl
+++ b/test/buffer/storage/types/array.wgsl
@@ -1,10 +1,10 @@
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<storage, read> in : array<f32, 4>;
 
-[[group(0), binding(1)]]
+@group(0) @binding(1)
 var<storage, read_write> out : array<f32, 4>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/buffer/storage/types/array.wgsl.expected.wgsl b/test/buffer/storage/types/array.wgsl.expected.wgsl
index 0aaacae..7cfa5a3 100644
--- a/test/buffer/storage/types/array.wgsl.expected.wgsl
+++ b/test/buffer/storage/types/array.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
-[[group(0), binding(0)]] var<storage, read> in : array<f32, 4>;
+@group(0) @binding(0) var<storage, read> in : array<f32, 4>;
 
-[[group(0), binding(1)]] var<storage, read_write> out : array<f32, 4>;
+@group(0) @binding(1) var<storage, read_write> out : array<f32, 4>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/buffer/storage/types/f32.wgsl b/test/buffer/storage/types/f32.wgsl
index d66cdb0..d8d60af 100644
--- a/test/buffer/storage/types/f32.wgsl
+++ b/test/buffer/storage/types/f32.wgsl
@@ -1,10 +1,10 @@
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<storage, read> in : f32;
 
-[[group(0), binding(1)]]
+@group(0) @binding(1)
 var<storage, read_write> out : f32;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/buffer/storage/types/f32.wgsl.expected.wgsl b/test/buffer/storage/types/f32.wgsl.expected.wgsl
index a385a75..fc61aa9 100644
--- a/test/buffer/storage/types/f32.wgsl.expected.wgsl
+++ b/test/buffer/storage/types/f32.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
-[[group(0), binding(0)]] var<storage, read> in : f32;
+@group(0) @binding(0) var<storage, read> in : f32;
 
-[[group(0), binding(1)]] var<storage, read_write> out : f32;
+@group(0) @binding(1) var<storage, read_write> out : f32;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/buffer/storage/types/i32.wgsl b/test/buffer/storage/types/i32.wgsl
index 2ffd35f..fa63f1d 100644
--- a/test/buffer/storage/types/i32.wgsl
+++ b/test/buffer/storage/types/i32.wgsl
@@ -1,10 +1,10 @@
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<storage, read> in : i32;
 
-[[group(0), binding(1)]]
+@group(0) @binding(1)
 var<storage, read_write> out : i32;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/buffer/storage/types/i32.wgsl.expected.wgsl b/test/buffer/storage/types/i32.wgsl.expected.wgsl
index 3424f2e..f4b6b78 100644
--- a/test/buffer/storage/types/i32.wgsl.expected.wgsl
+++ b/test/buffer/storage/types/i32.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
-[[group(0), binding(0)]] var<storage, read> in : i32;
+@group(0) @binding(0) var<storage, read> in : i32;
 
-[[group(0), binding(1)]] var<storage, read_write> out : i32;
+@group(0) @binding(1) var<storage, read_write> out : i32;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/buffer/storage/types/mat2x2.wgsl b/test/buffer/storage/types/mat2x2.wgsl
index 60ff548..0fece18 100644
--- a/test/buffer/storage/types/mat2x2.wgsl
+++ b/test/buffer/storage/types/mat2x2.wgsl
@@ -1,10 +1,10 @@
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<storage, read> in : mat2x2<f32>;
 
-[[group(0), binding(1)]]
+@group(0) @binding(1)
 var<storage, read_write> out : mat2x2<f32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/buffer/storage/types/mat2x2.wgsl.expected.wgsl b/test/buffer/storage/types/mat2x2.wgsl.expected.wgsl
index 8d2cbae..5d3e650 100644
--- a/test/buffer/storage/types/mat2x2.wgsl.expected.wgsl
+++ b/test/buffer/storage/types/mat2x2.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
-[[group(0), binding(0)]] var<storage, read> in : mat2x2<f32>;
+@group(0) @binding(0) var<storage, read> in : mat2x2<f32>;
 
-[[group(0), binding(1)]] var<storage, read_write> out : mat2x2<f32>;
+@group(0) @binding(1) var<storage, read_write> out : mat2x2<f32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/buffer/storage/types/mat2x3.wgsl b/test/buffer/storage/types/mat2x3.wgsl
index 151db83..7d64f7b 100644
--- a/test/buffer/storage/types/mat2x3.wgsl
+++ b/test/buffer/storage/types/mat2x3.wgsl
@@ -1,10 +1,10 @@
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<storage, read> in : mat2x3<f32>;
 
-[[group(0), binding(1)]]
+@group(0) @binding(1)
 var<storage, read_write> out : mat2x3<f32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/buffer/storage/types/mat2x3.wgsl.expected.wgsl b/test/buffer/storage/types/mat2x3.wgsl.expected.wgsl
index ab3a5fd..48eda48 100644
--- a/test/buffer/storage/types/mat2x3.wgsl.expected.wgsl
+++ b/test/buffer/storage/types/mat2x3.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
-[[group(0), binding(0)]] var<storage, read> in : mat2x3<f32>;
+@group(0) @binding(0) var<storage, read> in : mat2x3<f32>;
 
-[[group(0), binding(1)]] var<storage, read_write> out : mat2x3<f32>;
+@group(0) @binding(1) var<storage, read_write> out : mat2x3<f32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/buffer/storage/types/mat3x2.wgsl b/test/buffer/storage/types/mat3x2.wgsl
index d77ac81..e3f972f 100644
--- a/test/buffer/storage/types/mat3x2.wgsl
+++ b/test/buffer/storage/types/mat3x2.wgsl
@@ -1,10 +1,10 @@
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<storage, read> in : mat3x2<f32>;
 
-[[group(0), binding(1)]]
+@group(0) @binding(1)
 var<storage, read_write> out : mat3x2<f32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/buffer/storage/types/mat3x2.wgsl.expected.wgsl b/test/buffer/storage/types/mat3x2.wgsl.expected.wgsl
index 4c87f4a..d5db436 100644
--- a/test/buffer/storage/types/mat3x2.wgsl.expected.wgsl
+++ b/test/buffer/storage/types/mat3x2.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
-[[group(0), binding(0)]] var<storage, read> in : mat3x2<f32>;
+@group(0) @binding(0) var<storage, read> in : mat3x2<f32>;
 
-[[group(0), binding(1)]] var<storage, read_write> out : mat3x2<f32>;
+@group(0) @binding(1) var<storage, read_write> out : mat3x2<f32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/buffer/storage/types/mat4x4.wgsl b/test/buffer/storage/types/mat4x4.wgsl
index bf18a25..673d9d3 100644
--- a/test/buffer/storage/types/mat4x4.wgsl
+++ b/test/buffer/storage/types/mat4x4.wgsl
@@ -1,10 +1,10 @@
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<storage, read> in : mat4x4<f32>;
 
-[[group(0), binding(1)]]
+@group(0) @binding(1)
 var<storage, read_write> out : mat4x4<f32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/buffer/storage/types/mat4x4.wgsl.expected.wgsl b/test/buffer/storage/types/mat4x4.wgsl.expected.wgsl
index 7c1ebe9..402743f 100644
--- a/test/buffer/storage/types/mat4x4.wgsl.expected.wgsl
+++ b/test/buffer/storage/types/mat4x4.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
-[[group(0), binding(0)]] var<storage, read> in : mat4x4<f32>;
+@group(0) @binding(0) var<storage, read> in : mat4x4<f32>;
 
-[[group(0), binding(1)]] var<storage, read_write> out : mat4x4<f32>;
+@group(0) @binding(1) var<storage, read_write> out : mat4x4<f32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/buffer/storage/types/runtime_array.wgsl b/test/buffer/storage/types/runtime_array.wgsl
index f403fd3..083ea11 100644
--- a/test/buffer/storage/types/runtime_array.wgsl
+++ b/test/buffer/storage/types/runtime_array.wgsl
@@ -2,13 +2,13 @@
   f : f32;
 };
 
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<storage, read> in : array<S>;
 
-[[group(0), binding(1)]]
+@group(0) @binding(1)
 var<storage, read_write> out : array<S>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   out[0] = in[0];
 }
diff --git a/test/buffer/storage/types/runtime_array.wgsl.expected.wgsl b/test/buffer/storage/types/runtime_array.wgsl.expected.wgsl
index 2aca9cd..4b87ea6 100644
--- a/test/buffer/storage/types/runtime_array.wgsl.expected.wgsl
+++ b/test/buffer/storage/types/runtime_array.wgsl.expected.wgsl
@@ -2,11 +2,11 @@
   f : f32;
 }
 
-[[group(0), binding(0)]] var<storage, read> in : array<S>;
+@group(0) @binding(0) var<storage, read> in : array<S>;
 
-[[group(0), binding(1)]] var<storage, read_write> out : array<S>;
+@group(0) @binding(1) var<storage, read_write> out : array<S>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   out[0] = in[0];
 }
diff --git a/test/buffer/storage/types/struct.wgsl b/test/buffer/storage/types/struct.wgsl
index 42acfbc..993b052 100644
--- a/test/buffer/storage/types/struct.wgsl
+++ b/test/buffer/storage/types/struct.wgsl
@@ -5,13 +5,13 @@
   inner : Inner;
 };
 
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<storage, read> in : S;
 
-[[group(0), binding(1)]]
+@group(0) @binding(1)
 var<storage, read_write> out : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/buffer/storage/types/struct.wgsl.expected.wgsl b/test/buffer/storage/types/struct.wgsl.expected.wgsl
index dd840d4..59d3bc9 100644
--- a/test/buffer/storage/types/struct.wgsl.expected.wgsl
+++ b/test/buffer/storage/types/struct.wgsl.expected.wgsl
@@ -6,11 +6,11 @@
   inner : Inner;
 }
 
-[[group(0), binding(0)]] var<storage, read> in : S;
+@group(0) @binding(0) var<storage, read> in : S;
 
-[[group(0), binding(1)]] var<storage, read_write> out : S;
+@group(0) @binding(1) var<storage, read_write> out : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/buffer/storage/types/u32.wgsl b/test/buffer/storage/types/u32.wgsl
index 4664d29..0b87510 100644
--- a/test/buffer/storage/types/u32.wgsl
+++ b/test/buffer/storage/types/u32.wgsl
@@ -1,10 +1,10 @@
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<storage, read> in : u32;
 
-[[group(0), binding(1)]]
+@group(0) @binding(1)
 var<storage, read_write> out : u32;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/buffer/storage/types/u32.wgsl.expected.wgsl b/test/buffer/storage/types/u32.wgsl.expected.wgsl
index 46dc9d3..2cebf5e 100644
--- a/test/buffer/storage/types/u32.wgsl.expected.wgsl
+++ b/test/buffer/storage/types/u32.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
-[[group(0), binding(0)]] var<storage, read> in : u32;
+@group(0) @binding(0) var<storage, read> in : u32;
 
-[[group(0), binding(1)]] var<storage, read_write> out : u32;
+@group(0) @binding(1) var<storage, read_write> out : u32;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/buffer/storage/types/vec2.wgsl b/test/buffer/storage/types/vec2.wgsl
index 9841fd4..d1466d5 100644
--- a/test/buffer/storage/types/vec2.wgsl
+++ b/test/buffer/storage/types/vec2.wgsl
@@ -1,10 +1,10 @@
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<storage, read> in : vec2<i32>;
 
-[[group(0), binding(1)]]
+@group(0) @binding(1)
 var<storage, read_write> out : vec2<i32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/buffer/storage/types/vec2.wgsl.expected.wgsl b/test/buffer/storage/types/vec2.wgsl.expected.wgsl
index a945b32..806600b 100644
--- a/test/buffer/storage/types/vec2.wgsl.expected.wgsl
+++ b/test/buffer/storage/types/vec2.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
-[[group(0), binding(0)]] var<storage, read> in : vec2<i32>;
+@group(0) @binding(0) var<storage, read> in : vec2<i32>;
 
-[[group(0), binding(1)]] var<storage, read_write> out : vec2<i32>;
+@group(0) @binding(1) var<storage, read_write> out : vec2<i32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/buffer/storage/types/vec3.wgsl b/test/buffer/storage/types/vec3.wgsl
index 5335059..38e25d0 100644
--- a/test/buffer/storage/types/vec3.wgsl
+++ b/test/buffer/storage/types/vec3.wgsl
@@ -1,10 +1,10 @@
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<storage, read> in : vec3<u32>;
 
-[[group(0), binding(1)]]
+@group(0) @binding(1)
 var<storage, read_write> out : vec3<u32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/buffer/storage/types/vec3.wgsl.expected.wgsl b/test/buffer/storage/types/vec3.wgsl.expected.wgsl
index 71377b0..a3fcf3a 100644
--- a/test/buffer/storage/types/vec3.wgsl.expected.wgsl
+++ b/test/buffer/storage/types/vec3.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
-[[group(0), binding(0)]] var<storage, read> in : vec3<u32>;
+@group(0) @binding(0) var<storage, read> in : vec3<u32>;
 
-[[group(0), binding(1)]] var<storage, read_write> out : vec3<u32>;
+@group(0) @binding(1) var<storage, read_write> out : vec3<u32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/buffer/storage/types/vec4.wgsl b/test/buffer/storage/types/vec4.wgsl
index 494a89a..b9bf279 100644
--- a/test/buffer/storage/types/vec4.wgsl
+++ b/test/buffer/storage/types/vec4.wgsl
@@ -1,10 +1,10 @@
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<storage, read> in : vec4<f32>;
 
-[[group(0), binding(1)]]
+@group(0) @binding(1)
 var<storage, read_write> out : vec4<f32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/buffer/storage/types/vec4.wgsl.expected.wgsl b/test/buffer/storage/types/vec4.wgsl.expected.wgsl
index 7b278bd..22065c7 100644
--- a/test/buffer/storage/types/vec4.wgsl.expected.wgsl
+++ b/test/buffer/storage/types/vec4.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
-[[group(0), binding(0)]] var<storage, read> in : vec4<f32>;
+@group(0) @binding(0) var<storage, read> in : vec4<f32>;
 
-[[group(0), binding(1)]] var<storage, read_write> out : vec4<f32>;
+@group(0) @binding(1) var<storage, read_write> out : vec4<f32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/buffer/uniform/dynamic_index/read.wgsl b/test/buffer/uniform/dynamic_index/read.wgsl
index 2e79833..3e9142b 100644
--- a/test/buffer/uniform/dynamic_index/read.wgsl
+++ b/test/buffer/uniform/dynamic_index/read.wgsl
@@ -8,18 +8,18 @@
     g : vec2<i32>;
     h : vec2<i32>;
     i : mat2x3<f32>;
-    [[align(16)]] j : mat3x2<f32>;
-    [[align(16)]] k : [[stride(16)]] array<vec4<i32>, 4>;
+    @align(16) j : mat3x2<f32>;
+    @align(16) k : @stride(16) array<vec4<i32>, 4>;
 };
 
 struct S {
     arr : array<Inner, 8>;
 };
 
-[[binding(0), group(0)]] var<uniform> s : S;
+@binding(0) @group(0) var<uniform> s : S;
 
-[[stage(compute), workgroup_size(1)]]
-fn main([[builtin(local_invocation_index)]] idx : u32) {
+@stage(compute) @workgroup_size(1)
+fn main(@builtin(local_invocation_index) idx : u32) {
     let a = s.arr[idx].a;
     let b = s.arr[idx].b;
     let c = s.arr[idx].c;
diff --git a/test/buffer/uniform/dynamic_index/read.wgsl.expected.wgsl b/test/buffer/uniform/dynamic_index/read.wgsl.expected.wgsl
index 0dc8fdf..1bee626 100644
--- a/test/buffer/uniform/dynamic_index/read.wgsl.expected.wgsl
+++ b/test/buffer/uniform/dynamic_index/read.wgsl.expected.wgsl
@@ -8,20 +8,20 @@
   g : vec2<i32>;
   h : vec2<i32>;
   i : mat2x3<f32>;
-  [[align(16)]]
+  @align(16)
   j : mat3x2<f32>;
-  [[align(16)]]
-  k : [[stride(16)]] array<vec4<i32>, 4>;
+  @align(16)
+  k : @stride(16) array<vec4<i32>, 4>;
 }
 
 struct S {
   arr : array<Inner, 8>;
 }
 
-[[binding(0), group(0)]] var<uniform> s : S;
+@binding(0) @group(0) var<uniform> s : S;
 
-[[stage(compute), workgroup_size(1)]]
-fn main([[builtin(local_invocation_index)]] idx : u32) {
+@stage(compute) @workgroup_size(1)
+fn main(@builtin(local_invocation_index) idx : u32) {
   let a = s.arr[idx].a;
   let b = s.arr[idx].b;
   let c = s.arr[idx].c;
diff --git a/test/buffer/uniform/static_index/read.wgsl b/test/buffer/uniform/static_index/read.wgsl
index a735ccf..e1d10e8 100644
--- a/test/buffer/uniform/static_index/read.wgsl
+++ b/test/buffer/uniform/static_index/read.wgsl
@@ -13,13 +13,13 @@
     h : vec2<i32>;
     i : mat2x3<f32>;
     j : mat3x2<f32>;
-    [[align(16)]] k : Inner;
-    [[align(16)]] l : [[stride(16)]] array<Inner, 4>;
+    @align(16) k : Inner;
+    @align(16) l : @stride(16) array<Inner, 4>;
 };
 
-[[binding(0), group(0)]] var<uniform> s : S;
+@binding(0) @group(0) var<uniform> s : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     let a = s.a;
     let b = s.b;
diff --git a/test/buffer/uniform/static_index/read.wgsl.expected.wgsl b/test/buffer/uniform/static_index/read.wgsl.expected.wgsl
index f43ae3b..b790c19 100644
--- a/test/buffer/uniform/static_index/read.wgsl.expected.wgsl
+++ b/test/buffer/uniform/static_index/read.wgsl.expected.wgsl
@@ -13,15 +13,15 @@
   h : vec2<i32>;
   i : mat2x3<f32>;
   j : mat3x2<f32>;
-  [[align(16)]]
+  @align(16)
   k : Inner;
-  [[align(16)]]
-  l : [[stride(16)]] array<Inner, 4>;
+  @align(16)
+  l : @stride(16) array<Inner, 4>;
 }
 
-[[binding(0), group(0)]] var<uniform> s : S;
+@binding(0) @group(0) var<uniform> s : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let a = s.a;
   let b = s.b;
diff --git a/test/buffer/uniform/types/array.wgsl b/test/buffer/uniform/types/array.wgsl
index 7151b53..01a7138 100644
--- a/test/buffer/uniform/types/array.wgsl
+++ b/test/buffer/uniform/types/array.wgsl
@@ -1,7 +1,7 @@
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<uniform> u : array<vec4<f32>, 4>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/buffer/uniform/types/array.wgsl.expected.wgsl b/test/buffer/uniform/types/array.wgsl.expected.wgsl
index 3cfa21e..43d91c8 100644
--- a/test/buffer/uniform/types/array.wgsl.expected.wgsl
+++ b/test/buffer/uniform/types/array.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[group(0), binding(0)]] var<uniform> u : array<vec4<f32>, 4>;
+@group(0) @binding(0) var<uniform> u : array<vec4<f32>, 4>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/buffer/uniform/types/f32.wgsl b/test/buffer/uniform/types/f32.wgsl
index 1f3fbfa..bd785bb 100644
--- a/test/buffer/uniform/types/f32.wgsl
+++ b/test/buffer/uniform/types/f32.wgsl
@@ -1,7 +1,7 @@
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<uniform> u : f32;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/buffer/uniform/types/f32.wgsl.expected.wgsl b/test/buffer/uniform/types/f32.wgsl.expected.wgsl
index 6bd2751..ef2fa27 100644
--- a/test/buffer/uniform/types/f32.wgsl.expected.wgsl
+++ b/test/buffer/uniform/types/f32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[group(0), binding(0)]] var<uniform> u : f32;
+@group(0) @binding(0) var<uniform> u : f32;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/buffer/uniform/types/i32.wgsl b/test/buffer/uniform/types/i32.wgsl
index ca165b4..9d6e5d4 100644
--- a/test/buffer/uniform/types/i32.wgsl
+++ b/test/buffer/uniform/types/i32.wgsl
@@ -1,7 +1,7 @@
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<uniform> u : i32;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/buffer/uniform/types/i32.wgsl.expected.wgsl b/test/buffer/uniform/types/i32.wgsl.expected.wgsl
index 0cf7b04..794f018 100644
--- a/test/buffer/uniform/types/i32.wgsl.expected.wgsl
+++ b/test/buffer/uniform/types/i32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[group(0), binding(0)]] var<uniform> u : i32;
+@group(0) @binding(0) var<uniform> u : i32;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/buffer/uniform/types/mat2x2.wgsl b/test/buffer/uniform/types/mat2x2.wgsl
index d1cc3d3..5522acc 100644
--- a/test/buffer/uniform/types/mat2x2.wgsl
+++ b/test/buffer/uniform/types/mat2x2.wgsl
@@ -1,7 +1,7 @@
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<uniform> u : mat2x2<f32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/buffer/uniform/types/mat2x2.wgsl.expected.wgsl b/test/buffer/uniform/types/mat2x2.wgsl.expected.wgsl
index 8c42684..49ce708 100644
--- a/test/buffer/uniform/types/mat2x2.wgsl.expected.wgsl
+++ b/test/buffer/uniform/types/mat2x2.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[group(0), binding(0)]] var<uniform> u : mat2x2<f32>;
+@group(0) @binding(0) var<uniform> u : mat2x2<f32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/buffer/uniform/types/mat2x3.wgsl b/test/buffer/uniform/types/mat2x3.wgsl
index 0fb978d..5179d28 100644
--- a/test/buffer/uniform/types/mat2x3.wgsl
+++ b/test/buffer/uniform/types/mat2x3.wgsl
@@ -1,7 +1,7 @@
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<uniform> u : mat2x3<f32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/buffer/uniform/types/mat2x3.wgsl.expected.wgsl b/test/buffer/uniform/types/mat2x3.wgsl.expected.wgsl
index 5a74e94..e7f0073 100644
--- a/test/buffer/uniform/types/mat2x3.wgsl.expected.wgsl
+++ b/test/buffer/uniform/types/mat2x3.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[group(0), binding(0)]] var<uniform> u : mat2x3<f32>;
+@group(0) @binding(0) var<uniform> u : mat2x3<f32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/buffer/uniform/types/mat3x2.wgsl b/test/buffer/uniform/types/mat3x2.wgsl
index 59b1b80..0a308b4 100644
--- a/test/buffer/uniform/types/mat3x2.wgsl
+++ b/test/buffer/uniform/types/mat3x2.wgsl
@@ -1,7 +1,7 @@
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<uniform> u : mat3x2<f32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/buffer/uniform/types/mat3x2.wgsl.expected.wgsl b/test/buffer/uniform/types/mat3x2.wgsl.expected.wgsl
index 5f16f76..874cf97 100644
--- a/test/buffer/uniform/types/mat3x2.wgsl.expected.wgsl
+++ b/test/buffer/uniform/types/mat3x2.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[group(0), binding(0)]] var<uniform> u : mat3x2<f32>;
+@group(0) @binding(0) var<uniform> u : mat3x2<f32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/buffer/uniform/types/mat4x4.wgsl b/test/buffer/uniform/types/mat4x4.wgsl
index 7d2a57b..a9bf3ca 100644
--- a/test/buffer/uniform/types/mat4x4.wgsl
+++ b/test/buffer/uniform/types/mat4x4.wgsl
@@ -1,7 +1,7 @@
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<uniform> u : mat4x4<f32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/buffer/uniform/types/mat4x4.wgsl.expected.wgsl b/test/buffer/uniform/types/mat4x4.wgsl.expected.wgsl
index a1188d4..aa2f714 100644
--- a/test/buffer/uniform/types/mat4x4.wgsl.expected.wgsl
+++ b/test/buffer/uniform/types/mat4x4.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[group(0), binding(0)]] var<uniform> u : mat4x4<f32>;
+@group(0) @binding(0) var<uniform> u : mat4x4<f32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/buffer/uniform/types/struct.wgsl b/test/buffer/uniform/types/struct.wgsl
index 135bcab..2c6547c 100644
--- a/test/buffer/uniform/types/struct.wgsl
+++ b/test/buffer/uniform/types/struct.wgsl
@@ -5,10 +5,10 @@
   inner : Inner;
 };
 
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<uniform> u : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/buffer/uniform/types/struct.wgsl.expected.wgsl b/test/buffer/uniform/types/struct.wgsl.expected.wgsl
index 0e74bf8..f564832 100644
--- a/test/buffer/uniform/types/struct.wgsl.expected.wgsl
+++ b/test/buffer/uniform/types/struct.wgsl.expected.wgsl
@@ -6,9 +6,9 @@
   inner : Inner;
 }
 
-[[group(0), binding(0)]] var<uniform> u : S;
+@group(0) @binding(0) var<uniform> u : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/buffer/uniform/types/u32.wgsl b/test/buffer/uniform/types/u32.wgsl
index a1c80a3..3afc920 100644
--- a/test/buffer/uniform/types/u32.wgsl
+++ b/test/buffer/uniform/types/u32.wgsl
@@ -1,7 +1,7 @@
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<uniform> u : u32;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/buffer/uniform/types/u32.wgsl.expected.wgsl b/test/buffer/uniform/types/u32.wgsl.expected.wgsl
index 6751a05..d5d7e7f 100644
--- a/test/buffer/uniform/types/u32.wgsl.expected.wgsl
+++ b/test/buffer/uniform/types/u32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[group(0), binding(0)]] var<uniform> u : u32;
+@group(0) @binding(0) var<uniform> u : u32;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/buffer/uniform/types/vec2.wgsl b/test/buffer/uniform/types/vec2.wgsl
index 8f2debe..89e8889 100644
--- a/test/buffer/uniform/types/vec2.wgsl
+++ b/test/buffer/uniform/types/vec2.wgsl
@@ -1,7 +1,7 @@
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<uniform> u : vec2<i32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/buffer/uniform/types/vec2.wgsl.expected.wgsl b/test/buffer/uniform/types/vec2.wgsl.expected.wgsl
index 61695c1..44de55f 100644
--- a/test/buffer/uniform/types/vec2.wgsl.expected.wgsl
+++ b/test/buffer/uniform/types/vec2.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[group(0), binding(0)]] var<uniform> u : vec2<i32>;
+@group(0) @binding(0) var<uniform> u : vec2<i32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/buffer/uniform/types/vec3.wgsl b/test/buffer/uniform/types/vec3.wgsl
index 012d269..e571c47 100644
--- a/test/buffer/uniform/types/vec3.wgsl
+++ b/test/buffer/uniform/types/vec3.wgsl
@@ -1,7 +1,7 @@
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<uniform> u : vec3<u32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/buffer/uniform/types/vec3.wgsl.expected.wgsl b/test/buffer/uniform/types/vec3.wgsl.expected.wgsl
index d8d99e8..be459f7 100644
--- a/test/buffer/uniform/types/vec3.wgsl.expected.wgsl
+++ b/test/buffer/uniform/types/vec3.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[group(0), binding(0)]] var<uniform> u : vec3<u32>;
+@group(0) @binding(0) var<uniform> u : vec3<u32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/buffer/uniform/types/vec4.wgsl b/test/buffer/uniform/types/vec4.wgsl
index 24d63f0..f15e971 100644
--- a/test/buffer/uniform/types/vec4.wgsl
+++ b/test/buffer/uniform/types/vec4.wgsl
@@ -1,7 +1,7 @@
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<uniform> u : vec4<f32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/buffer/uniform/types/vec4.wgsl.expected.wgsl b/test/buffer/uniform/types/vec4.wgsl.expected.wgsl
index fe83de0..41a4f37 100644
--- a/test/buffer/uniform/types/vec4.wgsl.expected.wgsl
+++ b/test/buffer/uniform/types/vec4.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[group(0), binding(0)]] var<uniform> u : vec4<f32>;
+@group(0) @binding(0) var<uniform> u : vec4<f32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/bug/chromium/1251009.wgsl b/test/bug/chromium/1251009.wgsl
index 4abe77e..7a057c0 100644
--- a/test/bug/chromium/1251009.wgsl
+++ b/test/bug/chromium/1251009.wgsl
@@ -1,19 +1,19 @@
 struct VertexInputs0 {
-  [[builtin(vertex_index)]] vertex_index : u32;
-  [[location(0)]] loc0 : i32;
+  @builtin(vertex_index) vertex_index : u32;
+  @location(0) loc0 : i32;
 };
 struct VertexInputs1 {
-  [[location(2)]] loc1 : u32;
-  [[location(3)]] loc3 : vec4<f32>;
+  @location(2) loc1 : u32;
+  @location(3) loc3 : vec4<f32>;
 };
 
-[[stage(vertex)]]
+@stage(vertex)
 fn main(
   inputs0 : VertexInputs0,
-  [[location(1)]] loc1 : u32,
-  [[builtin(instance_index)]] instance_index : u32,
+  @location(1) loc1 : u32,
+  @builtin(instance_index) instance_index : u32,
   inputs1 : VertexInputs1,
-) -> [[builtin(position)]] vec4<f32> {
+) -> @builtin(position) vec4<f32> {
   let foo : u32 = inputs0.vertex_index + instance_index;
   return vec4<f32>();
 }
diff --git a/test/bug/chromium/1251009.wgsl.expected.wgsl b/test/bug/chromium/1251009.wgsl.expected.wgsl
index c82715d..f761f69 100644
--- a/test/bug/chromium/1251009.wgsl.expected.wgsl
+++ b/test/bug/chromium/1251009.wgsl.expected.wgsl
@@ -1,19 +1,19 @@
 struct VertexInputs0 {
-  [[builtin(vertex_index)]]
+  @builtin(vertex_index)
   vertex_index : u32;
-  [[location(0)]]
+  @location(0)
   loc0 : i32;
 }
 
 struct VertexInputs1 {
-  [[location(2)]]
+  @location(2)
   loc1 : u32;
-  [[location(3)]]
+  @location(3)
   loc3 : vec4<f32>;
 }
 
-[[stage(vertex)]]
-fn main(inputs0 : VertexInputs0, [[location(1)]] loc1 : u32, [[builtin(instance_index)]] instance_index : u32, inputs1 : VertexInputs1) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main(inputs0 : VertexInputs0, @location(1) loc1 : u32, @builtin(instance_index) instance_index : u32, inputs1 : VertexInputs1) -> @builtin(position) vec4<f32> {
   let foo : u32 = (inputs0.vertex_index + instance_index);
   return vec4<f32>();
 }
diff --git a/test/bug/chromium/1273230.wgsl b/test/bug/chromium/1273230.wgsl
index a2152ff..90ed840 100644
--- a/test/bug/chromium/1273230.wgsl
+++ b/test/bug/chromium/1273230.wgsl
@@ -1,6 +1,6 @@
 // /fallthroUgh]
 fn marg8uintin() {
-    _ = (0 );  
+    _ = (0 );
   _ = isNormal(4.);
 _ =   (vec4<f32>( 2.));
 
@@ -37,36 +37,36 @@
 };
 
 struct F32s {
-  values : [[stride(4)]] array<f32>;
+  values : @stride(4) array<f32>;
 };
 
 struct U32s {
-  values : [[stride(4)]] array<u32>;
+  values : @stride(4) array<u32>;
 };
 
 struct I32s {
-  values : [[stride(4)]] array<i32>;
+  values : @stride(4) array<i32>;
 };
 
 struct AU32s {
-  values : [[stride(4)]] array<atomic<u32>>;
+  values : @stride(4) array<atomic<u32>>;
 };
 
 struct AI32s {
-  values : [[stride(4)]] array<atomic<i32>>;
+  values : @stride(4) array<atomic<i32>>;
 };
 
-[[binding(0), group(0)]] var<uniform> uniforms : Uniforms;
+@binding(0) @group(0) var<uniform> uniforms : Uniforms;
 
-[[binding(10), group(0)]] var<storage, read_write> indices : U32s;
+@binding(10) @group(0) var<storage, read_write> indices : U32s;
 
-[[binding(11), group(0)]] var<storage, read_write> positions : F32s;
+@binding(11) @group(0) var<storage, read_write> positions : F32s;
 
-[[binding(20), group(0)]] var<storage, read_write> counters : AU32s;
+@binding(20) @group(0) var<storage, read_write> counters : AU32s;
 
-[[binding(21), group(0)]] var<storage, read_write> LUT : AI32s;
+@binding(21) @group(0) var<storage, read_write> LUT : AI32s;
 
-[[binding(50), group(0)]] var<storage, read_write> dbg : Dbg;
+@binding(50) @group(0) var<storage, read_write> dbg : Dbg;
 
 fn toVoxelPos(position : vec3<f32>) -> vec3<f32> {
   var bbMin = vec3<f32>(uniforms.bbMin.x, uniforms.bbMin.y, uniforms.bbMin.z);
@@ -106,8 +106,8 @@
   var g55 = atomicLoad(&(LUT.values[0]));
 }
 
-[[stage(compute), workgroup_size(128)]]
-fn main_count([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
+@stage(compute) @workgroup_size(128)
+fn main_count(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
   var triangleIndex = GlobalInvocationID.x;
   if ((triangleIndex >= uniforms.numTriangles)) {
     return;
diff --git a/test/bug/chromium/1273230.wgsl.expected.wgsl b/test/bug/chromium/1273230.wgsl.expected.wgsl
index 4708e0b..3cdfc2b 100644
--- a/test/bug/chromium/1273230.wgsl.expected.wgsl
+++ b/test/bug/chromium/1273230.wgsl.expected.wgsl
@@ -54,36 +54,36 @@
 }
 
 struct F32s {
-  values : [[stride(4)]] array<f32>;
+  values : @stride(4) array<f32>;
 }
 
 struct U32s {
-  values : [[stride(4)]] array<u32>;
+  values : @stride(4) array<u32>;
 }
 
 struct I32s {
-  values : [[stride(4)]] array<i32>;
+  values : @stride(4) array<i32>;
 }
 
 struct AU32s {
-  values : [[stride(4)]] array<atomic<u32>>;
+  values : @stride(4) array<atomic<u32>>;
 }
 
 struct AI32s {
-  values : [[stride(4)]] array<atomic<i32>>;
+  values : @stride(4) array<atomic<i32>>;
 }
 
-[[binding(0), group(0)]] var<uniform> uniforms : Uniforms;
+@binding(0) @group(0) var<uniform> uniforms : Uniforms;
 
-[[binding(10), group(0)]] var<storage, read_write> indices : U32s;
+@binding(10) @group(0) var<storage, read_write> indices : U32s;
 
-[[binding(11), group(0)]] var<storage, read_write> positions : F32s;
+@binding(11) @group(0) var<storage, read_write> positions : F32s;
 
-[[binding(20), group(0)]] var<storage, read_write> counters : AU32s;
+@binding(20) @group(0) var<storage, read_write> counters : AU32s;
 
-[[binding(21), group(0)]] var<storage, read_write> LUT : AI32s;
+@binding(21) @group(0) var<storage, read_write> LUT : AI32s;
 
-[[binding(50), group(0)]] var<storage, read_write> dbg : Dbg;
+@binding(50) @group(0) var<storage, read_write> dbg : Dbg;
 
 fn toVoxelPos(position : vec3<f32>) -> vec3<f32> {
   var bbMin = vec3<f32>(uniforms.bbMin.x, uniforms.bbMin.y, uniforms.bbMin.z);
@@ -123,8 +123,8 @@
   var g55 = atomicLoad(&(LUT.values[0]));
 }
 
-[[stage(compute), workgroup_size(128)]]
-fn main_count([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
+@stage(compute) @workgroup_size(128)
+fn main_count(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
   var triangleIndex = GlobalInvocationID.x;
   if ((triangleIndex >= uniforms.numTriangles)) {
     return;
diff --git a/test/bug/dawn/947.wgsl b/test/bug/dawn/947.wgsl
index 008d88a..fe12948 100644
--- a/test/bug/dawn/947.wgsl
+++ b/test/bug/dawn/947.wgsl
@@ -2,15 +2,15 @@
     u_scale : vec2<f32>;
     u_offset : vec2<f32>;
 };
-[[binding(0), group(0)]] var<uniform> uniforms : Uniforms;
+@binding(0) @group(0) var<uniform> uniforms : Uniforms;
 
 struct VertexOutputs {
-    [[location(0)]] texcoords : vec2<f32>;
-    [[builtin(position)]] position : vec4<f32>;
+    @location(0) texcoords : vec2<f32>;
+    @builtin(position) position : vec4<f32>;
 };
 
-[[stage(vertex)]] fn vs_main(
-    [[builtin(vertex_index)]] VertexIndex : u32
+@stage(vertex) fn vs_main(
+    @builtin(vertex_index) VertexIndex : u32
 ) -> VertexOutputs {
     var texcoord = array<vec2<f32>, 3>(
         vec2<f32>(-0.5, 0.0),
@@ -43,12 +43,12 @@
     return output;
 }
 
-[[binding(1), group(0)]] var mySampler: sampler;
-[[binding(2), group(0)]] var myTexture: texture_2d<f32>;
+@binding(1) @group(0) var mySampler: sampler;
+@binding(2) @group(0) var myTexture: texture_2d<f32>;
 
-[[stage(fragment)]] fn fs_main(
-    [[location(0)]] texcoord : vec2<f32>
-) -> [[location(0)]] vec4<f32> {
+@stage(fragment) fn fs_main(
+    @location(0) texcoord : vec2<f32>
+) -> @location(0) vec4<f32> {
     // Clamp the texcoord and discard the out-of-bound pixels.
     var clampedTexcoord =
         clamp(texcoord, vec2<f32>(0.0, 0.0), vec2<f32>(1.0, 1.0));
diff --git a/test/bug/dawn/947.wgsl.expected.wgsl b/test/bug/dawn/947.wgsl.expected.wgsl
index a7e4f69..ff78e61 100644
--- a/test/bug/dawn/947.wgsl.expected.wgsl
+++ b/test/bug/dawn/947.wgsl.expected.wgsl
@@ -3,17 +3,17 @@
   u_offset : vec2<f32>;
 }
 
-[[binding(0), group(0)]] var<uniform> uniforms : Uniforms;
+@binding(0) @group(0) var<uniform> uniforms : Uniforms;
 
 struct VertexOutputs {
-  [[location(0)]]
+  @location(0)
   texcoords : vec2<f32>;
-  [[builtin(position)]]
+  @builtin(position)
   position : vec4<f32>;
 }
 
-[[stage(vertex)]]
-fn vs_main([[builtin(vertex_index)]] VertexIndex : u32) -> VertexOutputs {
+@stage(vertex)
+fn vs_main(@builtin(vertex_index) VertexIndex : u32) -> VertexOutputs {
   var texcoord = array<vec2<f32>, 3>(vec2<f32>(-0.5, 0.0), vec2<f32>(1.5, 0.0), vec2<f32>(0.5, 2.0));
   var output : VertexOutputs;
   output.position = vec4<f32>(((texcoord[VertexIndex] * 2.0) - vec2<f32>(1.0, 1.0)), 0.0, 1.0);
@@ -26,12 +26,12 @@
   return output;
 }
 
-[[binding(1), group(0)]] var mySampler : sampler;
+@binding(1) @group(0) var mySampler : sampler;
 
-[[binding(2), group(0)]] var myTexture : texture_2d<f32>;
+@binding(2) @group(0) var myTexture : texture_2d<f32>;
 
-[[stage(fragment)]]
-fn fs_main([[location(0)]] texcoord : vec2<f32>) -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn fs_main(@location(0) texcoord : vec2<f32>) -> @location(0) vec4<f32> {
   var clampedTexcoord = clamp(texcoord, vec2<f32>(0.0, 0.0), vec2<f32>(1.0, 1.0));
   if (!(all((clampedTexcoord == texcoord)))) {
     discard;
diff --git a/test/bug/fxc/dyn_array_idx/read/function.wgsl b/test/bug/fxc/dyn_array_idx/read/function.wgsl
index 5af0065..55ce8a2 100644
--- a/test/bug/fxc/dyn_array_idx/read/function.wgsl
+++ b/test/bug/fxc/dyn_array_idx/read/function.wgsl
@@ -1,16 +1,16 @@
 struct UBO {
   dynamic_idx: i32;
 };
-[[group(0), binding(0)]] var<uniform> ubo: UBO;
+@group(0) @binding(0) var<uniform> ubo: UBO;
 struct S {
   data: array<i32, 64>;
 };
 struct Result {
   out: i32;
 };
-[[group(0), binding(1)]] var<storage, read_write> result: Result;
+@group(0) @binding(1) var<storage, read_write> result: Result;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var s : S;
   result.out = s.data[ubo.dynamic_idx];
diff --git a/test/bug/fxc/dyn_array_idx/read/function.wgsl.expected.wgsl b/test/bug/fxc/dyn_array_idx/read/function.wgsl.expected.wgsl
index 9487d56..bd5d8d7 100644
--- a/test/bug/fxc/dyn_array_idx/read/function.wgsl.expected.wgsl
+++ b/test/bug/fxc/dyn_array_idx/read/function.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   dynamic_idx : i32;
 }
 
-[[group(0), binding(0)]] var<uniform> ubo : UBO;
+@group(0) @binding(0) var<uniform> ubo : UBO;
 
 struct S {
   data : array<i32, 64>;
@@ -12,9 +12,9 @@
   out : i32;
 }
 
-[[group(0), binding(1)]] var<storage, read_write> result : Result;
+@group(0) @binding(1) var<storage, read_write> result : Result;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var s : S;
   result.out = s.data[ubo.dynamic_idx];
diff --git a/test/bug/fxc/dyn_array_idx/read/private.wgsl b/test/bug/fxc/dyn_array_idx/read/private.wgsl
index c7c0b7a..2d7729b 100644
--- a/test/bug/fxc/dyn_array_idx/read/private.wgsl
+++ b/test/bug/fxc/dyn_array_idx/read/private.wgsl
@@ -1,18 +1,18 @@
 struct UBO {
   dynamic_idx: i32;
 };
-[[group(0), binding(0)]] var<uniform> ubo: UBO;
+@group(0) @binding(0) var<uniform> ubo: UBO;
 struct S {
   data: array<i32, 64>;
 };
 struct Result {
   out: i32;
 };
-[[group(0), binding(1)]] var<storage, read_write> result: Result;
+@group(0) @binding(1) var<storage, read_write> result: Result;
 
 var<private> s : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   result.out = s.data[ubo.dynamic_idx];
 }
diff --git a/test/bug/fxc/dyn_array_idx/read/private.wgsl.expected.wgsl b/test/bug/fxc/dyn_array_idx/read/private.wgsl.expected.wgsl
index 352b5e2..fd84a46 100644
--- a/test/bug/fxc/dyn_array_idx/read/private.wgsl.expected.wgsl
+++ b/test/bug/fxc/dyn_array_idx/read/private.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   dynamic_idx : i32;
 }
 
-[[group(0), binding(0)]] var<uniform> ubo : UBO;
+@group(0) @binding(0) var<uniform> ubo : UBO;
 
 struct S {
   data : array<i32, 64>;
@@ -12,11 +12,11 @@
   out : i32;
 }
 
-[[group(0), binding(1)]] var<storage, read_write> result : Result;
+@group(0) @binding(1) var<storage, read_write> result : Result;
 
 var<private> s : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   result.out = s.data[ubo.dynamic_idx];
 }
diff --git a/test/bug/fxc/dyn_array_idx/read/storage.wgsl b/test/bug/fxc/dyn_array_idx/read/storage.wgsl
index 62908a2..432c59c 100644
--- a/test/bug/fxc/dyn_array_idx/read/storage.wgsl
+++ b/test/bug/fxc/dyn_array_idx/read/storage.wgsl
@@ -1,18 +1,18 @@
 struct UBO {
   dynamic_idx: i32;
 };
-[[group(0), binding(0)]] var<uniform> ubo: UBO;
+@group(0) @binding(0) var<uniform> ubo: UBO;
 struct Result {
   out: i32;
 };
-[[group(0), binding(2)]] var<storage, read_write> result: Result;
+@group(0) @binding(2) var<storage, read_write> result: Result;
 
 struct SSBO {
   data: array<i32, 4>;
 };
-[[group(0), binding(1)]] var<storage, read_write> ssbo: SSBO;
+@group(0) @binding(1) var<storage, read_write> ssbo: SSBO;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   result.out = ssbo.data[ubo.dynamic_idx];
 }
diff --git a/test/bug/fxc/dyn_array_idx/read/storage.wgsl.expected.wgsl b/test/bug/fxc/dyn_array_idx/read/storage.wgsl.expected.wgsl
index 5445952..9fdea5f 100644
--- a/test/bug/fxc/dyn_array_idx/read/storage.wgsl.expected.wgsl
+++ b/test/bug/fxc/dyn_array_idx/read/storage.wgsl.expected.wgsl
@@ -2,21 +2,21 @@
   dynamic_idx : i32;
 }
 
-[[group(0), binding(0)]] var<uniform> ubo : UBO;
+@group(0) @binding(0) var<uniform> ubo : UBO;
 
 struct Result {
   out : i32;
 }
 
-[[group(0), binding(2)]] var<storage, read_write> result : Result;
+@group(0) @binding(2) var<storage, read_write> result : Result;
 
 struct SSBO {
   data : array<i32, 4>;
 }
 
-[[group(0), binding(1)]] var<storage, read_write> ssbo : SSBO;
+@group(0) @binding(1) var<storage, read_write> ssbo : SSBO;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   result.out = ssbo.data[ubo.dynamic_idx];
 }
diff --git a/test/bug/fxc/dyn_array_idx/read/uniform.wgsl b/test/bug/fxc/dyn_array_idx/read/uniform.wgsl
index 22d1133..be26146 100644
--- a/test/bug/fxc/dyn_array_idx/read/uniform.wgsl
+++ b/test/bug/fxc/dyn_array_idx/read/uniform.wgsl
@@ -1,14 +1,14 @@
 struct UBO {
-  data: [[stride(16)]] array<i32, 4>;
+  data: @stride(16) array<i32, 4>;
   dynamic_idx: i32;
 };
-[[group(0), binding(0)]] var<uniform> ubo: UBO;
+@group(0) @binding(0) var<uniform> ubo: UBO;
 struct Result {
   out: i32;
 };
-[[group(0), binding(2)]] var<storage, read_write> result: Result;
+@group(0) @binding(2) var<storage, read_write> result: Result;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   result.out = ubo.data[ubo.dynamic_idx];
 }
diff --git a/test/bug/fxc/dyn_array_idx/read/uniform.wgsl.expected.wgsl b/test/bug/fxc/dyn_array_idx/read/uniform.wgsl.expected.wgsl
index d0f1e72..7f3ca0b 100644
--- a/test/bug/fxc/dyn_array_idx/read/uniform.wgsl.expected.wgsl
+++ b/test/bug/fxc/dyn_array_idx/read/uniform.wgsl.expected.wgsl
@@ -1,17 +1,17 @@
 struct UBO {
-  data : [[stride(16)]] array<i32, 4>;
+  data : @stride(16) array<i32, 4>;
   dynamic_idx : i32;
 }
 
-[[group(0), binding(0)]] var<uniform> ubo : UBO;
+@group(0) @binding(0) var<uniform> ubo : UBO;
 
 struct Result {
   out : i32;
 }
 
-[[group(0), binding(2)]] var<storage, read_write> result : Result;
+@group(0) @binding(2) var<storage, read_write> result : Result;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   result.out = ubo.data[ubo.dynamic_idx];
 }
diff --git a/test/bug/fxc/dyn_array_idx/read/workgroup.wgsl b/test/bug/fxc/dyn_array_idx/read/workgroup.wgsl
index 66450c2..024506f 100644
--- a/test/bug/fxc/dyn_array_idx/read/workgroup.wgsl
+++ b/test/bug/fxc/dyn_array_idx/read/workgroup.wgsl
@@ -1,18 +1,18 @@
 struct UBO {
   dynamic_idx: i32;
 };
-[[group(0), binding(0)]] var<uniform> ubo: UBO;
+@group(0) @binding(0) var<uniform> ubo: UBO;
 struct S {
   data: array<i32, 64>;
 };
 struct Result {
   out: i32;
 };
-[[group(0), binding(1)]] var<storage, read_write> result: Result;
+@group(0) @binding(1) var<storage, read_write> result: Result;
 
 var<workgroup> s : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   result.out = s.data[ubo.dynamic_idx];
 }
diff --git a/test/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.wgsl b/test/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.wgsl
index 80a812d..9427391 100644
--- a/test/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.wgsl
+++ b/test/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   dynamic_idx : i32;
 }
 
-[[group(0), binding(0)]] var<uniform> ubo : UBO;
+@group(0) @binding(0) var<uniform> ubo : UBO;
 
 struct S {
   data : array<i32, 64>;
@@ -12,11 +12,11 @@
   out : i32;
 }
 
-[[group(0), binding(1)]] var<storage, read_write> result : Result;
+@group(0) @binding(1) var<storage, read_write> result : Result;
 
 var<workgroup> s : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   result.out = s.data[ubo.dynamic_idx];
 }
diff --git a/test/bug/fxc/dyn_array_idx/write/function.wgsl b/test/bug/fxc/dyn_array_idx/write/function.wgsl
index 3dea9fa..b183971 100644
--- a/test/bug/fxc/dyn_array_idx/write/function.wgsl
+++ b/test/bug/fxc/dyn_array_idx/write/function.wgsl
@@ -1,16 +1,16 @@
 struct UBO {
   dynamic_idx: i32;
 };
-[[group(0), binding(0)]] var<uniform> ubo: UBO;
+@group(0) @binding(0) var<uniform> ubo: UBO;
 struct S {
   data: array<i32, 64>;
 };
 struct Result {
   out: i32;
 };
-[[group(0), binding(1)]] var<storage, read_write> result: Result;
+@group(0) @binding(1) var<storage, read_write> result: Result;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var s : S;
   s.data[ubo.dynamic_idx] = 1;
diff --git a/test/bug/fxc/dyn_array_idx/write/function.wgsl.expected.wgsl b/test/bug/fxc/dyn_array_idx/write/function.wgsl.expected.wgsl
index 18b069c..1504f92 100644
--- a/test/bug/fxc/dyn_array_idx/write/function.wgsl.expected.wgsl
+++ b/test/bug/fxc/dyn_array_idx/write/function.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   dynamic_idx : i32;
 }
 
-[[group(0), binding(0)]] var<uniform> ubo : UBO;
+@group(0) @binding(0) var<uniform> ubo : UBO;
 
 struct S {
   data : array<i32, 64>;
@@ -12,9 +12,9 @@
   out : i32;
 }
 
-[[group(0), binding(1)]] var<storage, read_write> result : Result;
+@group(0) @binding(1) var<storage, read_write> result : Result;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var s : S;
   s.data[ubo.dynamic_idx] = 1;
diff --git a/test/bug/fxc/dyn_array_idx/write/function_via_param.wgsl b/test/bug/fxc/dyn_array_idx/write/function_via_param.wgsl
index bf46f99..4a5bc5f 100644
--- a/test/bug/fxc/dyn_array_idx/write/function_via_param.wgsl
+++ b/test/bug/fxc/dyn_array_idx/write/function_via_param.wgsl
@@ -1,20 +1,20 @@
 struct UBO {
   dynamic_idx: i32;
 };
-[[group(0), binding(0)]] var<uniform> ubo: UBO;
+@group(0) @binding(0) var<uniform> ubo: UBO;
 struct S {
   data: array<i32, 64>;
 };
 struct Result {
   out: i32;
 };
-[[group(0), binding(1)]] var<storage, read_write> result: Result;
+@group(0) @binding(1) var<storage, read_write> result: Result;
 
 fn x(p : ptr<function, S>) {
   (*p).data[ubo.dynamic_idx] = 1;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var s : S;
   x(&s);
diff --git a/test/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.wgsl b/test/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.wgsl
index 57c8a26..52bbcc4 100644
--- a/test/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.wgsl
+++ b/test/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   dynamic_idx : i32;
 }
 
-[[group(0), binding(0)]] var<uniform> ubo : UBO;
+@group(0) @binding(0) var<uniform> ubo : UBO;
 
 struct S {
   data : array<i32, 64>;
@@ -12,13 +12,13 @@
   out : i32;
 }
 
-[[group(0), binding(1)]] var<storage, read_write> result : Result;
+@group(0) @binding(1) var<storage, read_write> result : Result;
 
 fn x(p : ptr<function, S>) {
   (*(p)).data[ubo.dynamic_idx] = 1;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var s : S;
   x(&(s));
diff --git a/test/bug/fxc/dyn_array_idx/write/private.wgsl b/test/bug/fxc/dyn_array_idx/write/private.wgsl
index c8fade0..2720426 100644
--- a/test/bug/fxc/dyn_array_idx/write/private.wgsl
+++ b/test/bug/fxc/dyn_array_idx/write/private.wgsl
@@ -1,18 +1,18 @@
 struct UBO {
   dynamic_idx: i32;
 };
-[[group(0), binding(0)]] var<uniform> ubo: UBO;
+@group(0) @binding(0) var<uniform> ubo: UBO;
 struct S {
   data: array<i32, 64>;
 };
 struct Result {
   out: i32;
 };
-[[group(0), binding(1)]] var<storage, read_write> result: Result;
+@group(0) @binding(1) var<storage, read_write> result: Result;
 
 var<private> s : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   s.data[ubo.dynamic_idx] = 1;
   result.out = s.data[3];
diff --git a/test/bug/fxc/dyn_array_idx/write/private.wgsl.expected.wgsl b/test/bug/fxc/dyn_array_idx/write/private.wgsl.expected.wgsl
index 7544006..d4c7b0e 100644
--- a/test/bug/fxc/dyn_array_idx/write/private.wgsl.expected.wgsl
+++ b/test/bug/fxc/dyn_array_idx/write/private.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   dynamic_idx : i32;
 }
 
-[[group(0), binding(0)]] var<uniform> ubo : UBO;
+@group(0) @binding(0) var<uniform> ubo : UBO;
 
 struct S {
   data : array<i32, 64>;
@@ -12,11 +12,11 @@
   out : i32;
 }
 
-[[group(0), binding(1)]] var<storage, read_write> result : Result;
+@group(0) @binding(1) var<storage, read_write> result : Result;
 
 var<private> s : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   s.data[ubo.dynamic_idx] = 1;
   result.out = s.data[3];
diff --git a/test/bug/fxc/dyn_array_idx/write/private_via_param.wgsl b/test/bug/fxc/dyn_array_idx/write/private_via_param.wgsl
index 3c7cf56..c123fe7 100644
--- a/test/bug/fxc/dyn_array_idx/write/private_via_param.wgsl
+++ b/test/bug/fxc/dyn_array_idx/write/private_via_param.wgsl
@@ -1,14 +1,14 @@
 struct UBO {
   dynamic_idx: i32;
 };
-[[group(0), binding(0)]] var<uniform> ubo: UBO;
+@group(0) @binding(0) var<uniform> ubo: UBO;
 struct S {
   data: array<i32, 64>;
 };
 struct Result {
   out: i32;
 };
-[[group(0), binding(1)]] var<storage, read_write> result: Result;
+@group(0) @binding(1) var<storage, read_write> result: Result;
 
 var<private> s : S;
 
@@ -16,7 +16,7 @@
   (*p).data[ubo.dynamic_idx] = 1;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   x(&s);
   result.out = s.data[3];
diff --git a/test/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.wgsl b/test/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.wgsl
index fd99ff2..d4d329f 100644
--- a/test/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.wgsl
+++ b/test/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   dynamic_idx : i32;
 }
 
-[[group(0), binding(0)]] var<uniform> ubo : UBO;
+@group(0) @binding(0) var<uniform> ubo : UBO;
 
 struct S {
   data : array<i32, 64>;
@@ -12,7 +12,7 @@
   out : i32;
 }
 
-[[group(0), binding(1)]] var<storage, read_write> result : Result;
+@group(0) @binding(1) var<storage, read_write> result : Result;
 
 var<private> s : S;
 
@@ -20,7 +20,7 @@
   (*(p)).data[ubo.dynamic_idx] = 1;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   x(&(s));
   result.out = s.data[3];
diff --git a/test/bug/fxc/dyn_array_idx/write/storage.wgsl b/test/bug/fxc/dyn_array_idx/write/storage.wgsl
index 0ced96e..9e4babe 100644
--- a/test/bug/fxc/dyn_array_idx/write/storage.wgsl
+++ b/test/bug/fxc/dyn_array_idx/write/storage.wgsl
@@ -1,18 +1,18 @@
 struct UBO {
   dynamic_idx: i32;
 };
-[[group(0), binding(0)]] var<uniform> ubo: UBO;
+@group(0) @binding(0) var<uniform> ubo: UBO;
 struct Result {
   out: i32;
 };
-[[group(0), binding(2)]] var<storage, read_write> result: Result;
+@group(0) @binding(2) var<storage, read_write> result: Result;
 
 struct SSBO {
   data: array<i32, 4>;
 };
-[[group(0), binding(1)]] var<storage, read_write> ssbo: SSBO;
+@group(0) @binding(1) var<storage, read_write> ssbo: SSBO;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   ssbo.data[ubo.dynamic_idx] = 1;
   result.out = ssbo.data[3];
diff --git a/test/bug/fxc/dyn_array_idx/write/storage.wgsl.expected.wgsl b/test/bug/fxc/dyn_array_idx/write/storage.wgsl.expected.wgsl
index b3d0217..2f5ce76 100644
--- a/test/bug/fxc/dyn_array_idx/write/storage.wgsl.expected.wgsl
+++ b/test/bug/fxc/dyn_array_idx/write/storage.wgsl.expected.wgsl
@@ -2,21 +2,21 @@
   dynamic_idx : i32;
 }
 
-[[group(0), binding(0)]] var<uniform> ubo : UBO;
+@group(0) @binding(0) var<uniform> ubo : UBO;
 
 struct Result {
   out : i32;
 }
 
-[[group(0), binding(2)]] var<storage, read_write> result : Result;
+@group(0) @binding(2) var<storage, read_write> result : Result;
 
 struct SSBO {
   data : array<i32, 4>;
 }
 
-[[group(0), binding(1)]] var<storage, read_write> ssbo : SSBO;
+@group(0) @binding(1) var<storage, read_write> ssbo : SSBO;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   ssbo.data[ubo.dynamic_idx] = 1;
   result.out = ssbo.data[3];
diff --git a/test/bug/fxc/dyn_array_idx/write/workgroup.wgsl b/test/bug/fxc/dyn_array_idx/write/workgroup.wgsl
index 8f7e84b..961f020 100644
--- a/test/bug/fxc/dyn_array_idx/write/workgroup.wgsl
+++ b/test/bug/fxc/dyn_array_idx/write/workgroup.wgsl
@@ -1,18 +1,18 @@
 struct UBO {
   dynamic_idx: i32;
 };
-[[group(0), binding(0)]] var<uniform> ubo: UBO;
+@group(0) @binding(0) var<uniform> ubo: UBO;
 struct S {
   data: array<i32, 64>;
 };
 struct Result {
   out: i32;
 };
-[[group(0), binding(1)]] var<storage, read_write> result: Result;
+@group(0) @binding(1) var<storage, read_write> result: Result;
 
 var<workgroup> s : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   s.data[ubo.dynamic_idx] = 1;
   result.out = s.data[3];
diff --git a/test/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.wgsl b/test/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.wgsl
index 7c122d1..f0026f9 100644
--- a/test/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.wgsl
+++ b/test/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   dynamic_idx : i32;
 }
 
-[[group(0), binding(0)]] var<uniform> ubo : UBO;
+@group(0) @binding(0) var<uniform> ubo : UBO;
 
 struct S {
   data : array<i32, 64>;
@@ -12,11 +12,11 @@
   out : i32;
 }
 
-[[group(0), binding(1)]] var<storage, read_write> result : Result;
+@group(0) @binding(1) var<storage, read_write> result : Result;
 
 var<workgroup> s : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   s.data[ubo.dynamic_idx] = 1;
   result.out = s.data[3];
diff --git a/test/bug/fxc/gradient_in_varying_loop/1112.wgsl b/test/bug/fxc/gradient_in_varying_loop/1112.wgsl
index b4dff54..bc9a36c 100644
--- a/test/bug/fxc/gradient_in_varying_loop/1112.wgsl
+++ b/test/bug/fxc/gradient_in_varying_loop/1112.wgsl
@@ -1,10 +1,10 @@
 // 1112.wgsl
-[[group(0), binding(0)]] var Sampler: sampler;
-[[group(0), binding(1)]] var randomTexture: texture_2d<f32>;
-[[group(0), binding(2)]] var depthTexture: texture_2d<f32>;
+@group(0) @binding(0) var Sampler: sampler;
+@group(0) @binding(1) var randomTexture: texture_2d<f32>;
+@group(0) @binding(2) var depthTexture: texture_2d<f32>;
 
-[[stage(fragment)]]
-fn main([[location(0)]] vUV : vec2<f32>) -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn main(@location(0) vUV : vec2<f32>) -> @location(0) vec4<f32> {
     let random: vec3<f32> = textureSample(randomTexture, Sampler, vUV).rgb;
 
     var i = 0;
diff --git a/test/bug/fxc/gradient_in_varying_loop/1112.wgsl.expected.wgsl b/test/bug/fxc/gradient_in_varying_loop/1112.wgsl.expected.wgsl
index 6728e4e..0998c72 100644
--- a/test/bug/fxc/gradient_in_varying_loop/1112.wgsl.expected.wgsl
+++ b/test/bug/fxc/gradient_in_varying_loop/1112.wgsl.expected.wgsl
@@ -1,11 +1,11 @@
-[[group(0), binding(0)]] var Sampler : sampler;
+@group(0) @binding(0) var Sampler : sampler;
 
-[[group(0), binding(1)]] var randomTexture : texture_2d<f32>;
+@group(0) @binding(1) var randomTexture : texture_2d<f32>;
 
-[[group(0), binding(2)]] var depthTexture : texture_2d<f32>;
+@group(0) @binding(2) var depthTexture : texture_2d<f32>;
 
-[[stage(fragment)]]
-fn main([[location(0)]] vUV : vec2<f32>) -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn main(@location(0) vUV : vec2<f32>) -> @location(0) vec4<f32> {
   let random : vec3<f32> = textureSample(randomTexture, Sampler, vUV).rgb;
   var i = 0;
   loop {
diff --git a/test/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl b/test/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl
index df48e4c..773dd61 100644
--- a/test/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl
+++ b/test/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl
@@ -13,10 +13,10 @@
   p : array<Particle>;
 };
 
-[[group(1), binding(3)]] var<storage, read> particles : Particles;
-[[group(1), binding(4)]] var<uniform> sim : Simulation;
+@group(1) @binding(3) var<storage, read> particles : Particles;
+@group(1) @binding(4) var<uniform> sim : Simulation;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var particle = particles.p[0];
   particle.position[sim.i] = particle.position[sim.i];
diff --git a/test/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl.expected.wgsl b/test/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl.expected.wgsl
index 818e3b4..df8979b 100644
--- a/test/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl.expected.wgsl
+++ b/test/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl.expected.wgsl
@@ -13,11 +13,11 @@
   p : array<Particle>;
 }
 
-[[group(1), binding(3)]] var<storage, read> particles : Particles;
+@group(1) @binding(3) var<storage, read> particles : Particles;
 
-[[group(1), binding(4)]] var<uniform> sim : Simulation;
+@group(1) @binding(4) var<uniform> sim : Simulation;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var particle = particles.p[0];
   particle.position[sim.i] = particle.position[sim.i];
diff --git a/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl b/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl
index ea01de2..30627d8 100644
--- a/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl
+++ b/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl
@@ -3,9 +3,9 @@
   j : u32;
 };
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var m1 : mat2x4<f32>;
   m1[uniforms.i][0] = 1.0;
diff --git a/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.wgsl b/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.wgsl
index 3b201de..9f79724 100644
--- a/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.wgsl
+++ b/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.wgsl
@@ -3,9 +3,9 @@
   j : u32;
 }
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var m1 : mat2x4<f32>;
   m1[uniforms.i][0] = 1.0;
diff --git a/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl b/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl
index aab333e..e72acfe 100644
--- a/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl
+++ b/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl
@@ -3,9 +3,9 @@
   j : u32;
 };
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var m1 : mat2x4<f32>;
   m1[uniforms.i][uniforms.j] = 1.0;
diff --git a/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl.expected.wgsl b/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl.expected.wgsl
index 8b37003..9847626 100644
--- a/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl.expected.wgsl
+++ b/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl.expected.wgsl
@@ -3,9 +3,9 @@
   j : u32;
 }
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var m1 : mat2x4<f32>;
   m1[uniforms.i][uniforms.j] = 1.0;
diff --git a/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl b/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl
index f893f32..87d95ad 100644
--- a/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl
+++ b/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl
@@ -3,11 +3,11 @@
   j : u32;
 };
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
 var<private> m1 : mat2x4<f32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   m1[0][uniforms.j] = 1.0;
 }
diff --git a/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl.expected.wgsl b/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl.expected.wgsl
index 031f689..0bf7965 100644
--- a/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl.expected.wgsl
+++ b/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl.expected.wgsl
@@ -3,11 +3,11 @@
   j : u32;
 }
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
 var<private> m1 : mat2x4<f32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   m1[0][uniforms.j] = 1.0;
 }
diff --git a/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl b/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl
index e5ccc3d..8db52b8 100644
--- a/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl
+++ b/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl
@@ -3,9 +3,9 @@
   j : u32;
 };
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var m1 : mat2x4<f32>;
   m1[uniforms.i] = vec4<f32>(1.0);
diff --git a/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl.expected.wgsl b/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl.expected.wgsl
index 4dc3783..87cf58c 100644
--- a/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl.expected.wgsl
+++ b/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl.expected.wgsl
@@ -3,9 +3,9 @@
   j : u32;
 }
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var m1 : mat2x4<f32>;
   m1[uniforms.i] = vec4<f32>(1.0);
diff --git a/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl b/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl
index d12c19c..ed33805 100644
--- a/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl
+++ b/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl
@@ -3,11 +3,11 @@
   j : u32;
 };
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
 var<private> m1 : mat2x4<f32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   m1[uniforms.i][0] = 1.0;
 }
diff --git a/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.wgsl b/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.wgsl
index bc312b2..8f5c87a 100644
--- a/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.wgsl
+++ b/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.wgsl
@@ -3,11 +3,11 @@
   j : u32;
 }
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
 var<private> m1 : mat2x4<f32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   m1[uniforms.i][0] = 1.0;
 }
diff --git a/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl b/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl
index 40b2bbb..c7e750e 100644
--- a/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl
+++ b/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl
@@ -3,11 +3,11 @@
   j : u32;
 };
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
 var<private> m1 : mat2x4<f32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   m1[uniforms.i][uniforms.j] = 1.0;
 }
diff --git a/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl.expected.wgsl b/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl.expected.wgsl
index f706b60..6419eb2 100644
--- a/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl.expected.wgsl
+++ b/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl.expected.wgsl
@@ -3,11 +3,11 @@
   j : u32;
 }
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
 var<private> m1 : mat2x4<f32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   m1[uniforms.i][uniforms.j] = 1.0;
 }
diff --git a/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl b/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl
index f893f32..87d95ad 100644
--- a/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl
+++ b/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl
@@ -3,11 +3,11 @@
   j : u32;
 };
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
 var<private> m1 : mat2x4<f32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   m1[0][uniforms.j] = 1.0;
 }
diff --git a/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl.expected.wgsl b/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl.expected.wgsl
index 031f689..0bf7965 100644
--- a/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl.expected.wgsl
+++ b/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl.expected.wgsl
@@ -3,11 +3,11 @@
   j : u32;
 }
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
 var<private> m1 : mat2x4<f32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   m1[0][uniforms.j] = 1.0;
 }
diff --git a/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl b/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl
index de3bcaa..88338a5 100644
--- a/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl
+++ b/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl
@@ -3,11 +3,11 @@
   j : u32;
 };
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
 var<private> m1 : mat2x4<f32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   m1[uniforms.i] = vec4<f32>(1.0);
 }
diff --git a/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl.expected.wgsl b/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl.expected.wgsl
index b1c7255..3642ca8 100644
--- a/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl.expected.wgsl
+++ b/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl.expected.wgsl
@@ -3,11 +3,11 @@
   j : u32;
 }
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
 var<private> m1 : mat2x4<f32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   m1[uniforms.i] = vec4<f32>(1.0);
 }
diff --git a/test/bug/fxc/vector_assignment_in_loop/loop_call_with_loop.wgsl b/test/bug/fxc/vector_assignment_in_loop/loop_call_with_loop.wgsl
index a684c56..82fdac2 100644
--- a/test/bug/fxc/vector_assignment_in_loop/loop_call_with_loop.wgsl
+++ b/test/bug/fxc/vector_assignment_in_loop/loop_call_with_loop.wgsl
@@ -12,7 +12,7 @@
   }
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
 
   for (var i : i32 = 0; i < 2; i = i + 1) {
diff --git a/test/bug/fxc/vector_assignment_in_loop/loop_call_with_loop.wgsl.expected.wgsl b/test/bug/fxc/vector_assignment_in_loop/loop_call_with_loop.wgsl.expected.wgsl
index def10cb..be75b18 100644
--- a/test/bug/fxc/vector_assignment_in_loop/loop_call_with_loop.wgsl.expected.wgsl
+++ b/test/bug/fxc/vector_assignment_in_loop/loop_call_with_loop.wgsl.expected.wgsl
@@ -15,7 +15,7 @@
   }
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   for(var i : i32 = 0; (i < 2); i = (i + 1)) {
     foo();
diff --git a/test/bug/fxc/vector_assignment_in_loop/loop_call_with_no_loop.wgsl b/test/bug/fxc/vector_assignment_in_loop/loop_call_with_no_loop.wgsl
index c85e301..f7d64cd 100644
--- a/test/bug/fxc/vector_assignment_in_loop/loop_call_with_no_loop.wgsl
+++ b/test/bug/fxc/vector_assignment_in_loop/loop_call_with_no_loop.wgsl
@@ -11,7 +11,7 @@
   v2b[i] = true;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
 
   for (var i : i32 = 0; i < 2; i = i + 1) {
diff --git a/test/bug/fxc/vector_assignment_in_loop/loop_call_with_no_loop.wgsl.expected.wgsl b/test/bug/fxc/vector_assignment_in_loop/loop_call_with_no_loop.wgsl.expected.wgsl
index 21db9dd..8b055f2 100644
--- a/test/bug/fxc/vector_assignment_in_loop/loop_call_with_no_loop.wgsl.expected.wgsl
+++ b/test/bug/fxc/vector_assignment_in_loop/loop_call_with_no_loop.wgsl.expected.wgsl
@@ -14,7 +14,7 @@
   v2b[i] = true;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   for(var i : i32 = 0; (i < 2); i = (i + 1)) {
     foo();
diff --git a/test/bug/fxc/vector_assignment_in_loop/loop_types_all.wgsl b/test/bug/fxc/vector_assignment_in_loop/loop_types_all.wgsl
index 5d42838..51460eb 100644
--- a/test/bug/fxc/vector_assignment_in_loop/loop_types_all.wgsl
+++ b/test/bug/fxc/vector_assignment_in_loop/loop_types_all.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   var v2f : vec2<f32>;
   var v3f : vec3<f32>;
diff --git a/test/bug/fxc/vector_assignment_in_loop/loop_types_all.wgsl.expected.wgsl b/test/bug/fxc/vector_assignment_in_loop/loop_types_all.wgsl.expected.wgsl
index 9f8f2e0..45acb5d 100644
--- a/test/bug/fxc/vector_assignment_in_loop/loop_types_all.wgsl.expected.wgsl
+++ b/test/bug/fxc/vector_assignment_in_loop/loop_types_all.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   var v2f : vec2<f32>;
   var v3f : vec3<f32>;
diff --git a/test/bug/fxc/vector_assignment_in_loop/loop_types_repeated.wgsl b/test/bug/fxc/vector_assignment_in_loop/loop_types_repeated.wgsl
index 7b91e48..beeaa2c 100644
--- a/test/bug/fxc/vector_assignment_in_loop/loop_types_repeated.wgsl
+++ b/test/bug/fxc/vector_assignment_in_loop/loop_types_repeated.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   var v2f : vec2<f32>;
   var v2f_2 : vec2<f32>;
diff --git a/test/bug/fxc/vector_assignment_in_loop/loop_types_repeated.wgsl.expected.wgsl b/test/bug/fxc/vector_assignment_in_loop/loop_types_repeated.wgsl.expected.wgsl
index 74950ca..659db49 100644
--- a/test/bug/fxc/vector_assignment_in_loop/loop_types_repeated.wgsl.expected.wgsl
+++ b/test/bug/fxc/vector_assignment_in_loop/loop_types_repeated.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   var v2f : vec2<f32>;
   var v2f_2 : vec2<f32>;
diff --git a/test/bug/fxc/vector_assignment_in_loop/loop_types_some.wgsl b/test/bug/fxc/vector_assignment_in_loop/loop_types_some.wgsl
index d255bcc..c48c1a8 100644
--- a/test/bug/fxc/vector_assignment_in_loop/loop_types_some.wgsl
+++ b/test/bug/fxc/vector_assignment_in_loop/loop_types_some.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   var v2f : vec2<f32>;
   var v3f : vec3<f32>;
diff --git a/test/bug/fxc/vector_assignment_in_loop/loop_types_some.wgsl.expected.wgsl b/test/bug/fxc/vector_assignment_in_loop/loop_types_some.wgsl.expected.wgsl
index 1fada75..01115a6 100644
--- a/test/bug/fxc/vector_assignment_in_loop/loop_types_some.wgsl.expected.wgsl
+++ b/test/bug/fxc/vector_assignment_in_loop/loop_types_some.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   var v2f : vec2<f32>;
   var v3f : vec3<f32>;
diff --git a/test/bug/fxc/vector_assignment_in_loop/no_loop.wgsl b/test/bug/fxc/vector_assignment_in_loop/no_loop.wgsl
index 276355c..2ff69eb 100644
--- a/test/bug/fxc/vector_assignment_in_loop/no_loop.wgsl
+++ b/test/bug/fxc/vector_assignment_in_loop/no_loop.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   var v2f : vec2<f32>;
   var v3f : vec3<f32>;
diff --git a/test/bug/fxc/vector_assignment_in_loop/no_loop.wgsl.expected.wgsl b/test/bug/fxc/vector_assignment_in_loop/no_loop.wgsl.expected.wgsl
index 2d26774..72a4494 100644
--- a/test/bug/fxc/vector_assignment_in_loop/no_loop.wgsl.expected.wgsl
+++ b/test/bug/fxc/vector_assignment_in_loop/no_loop.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   var v2f : vec2<f32>;
   var v3f : vec3<f32>;
diff --git a/test/bug/tint/1046.wgsl b/test/bug/tint/1046.wgsl
index 8fdfe17..a294edf 100644
--- a/test/bug/tint/1046.wgsl
+++ b/test/bug/tint/1046.wgsl
@@ -4,7 +4,7 @@
 };
 
  struct PointLights {
-    values : [[stride(16)]] array<PointLight>;
+    values : @stride(16) array<PointLight>;
 };
 
  struct Uniforms {
@@ -15,21 +15,21 @@
     color : vec4<f32>;
 };
 
-[[binding(0), group(0)]] var<uniform> uniforms : Uniforms;
-[[binding(1), group(0)]] var<storage_buffer, read> pointLights : PointLights;
-[[binding(2), group(0)]] var mySampler: sampler;
-[[binding(3), group(0)]] var myTexture: texture_2d<f32>;
+@binding(0) @group(0) var<uniform> uniforms : Uniforms;
+@binding(1) @group(0) var<storage_buffer, read> pointLights : PointLights;
+@binding(2) @group(0) var mySampler: sampler;
+@binding(3) @group(0) var myTexture: texture_2d<f32>;
 
 struct FragmentInput {
-    [[builtin(position)]] position  : vec4<f32>;
-    [[location(0)]] view_position   : vec4<f32>;
-    [[location(1)]] normal          : vec4<f32>;
-    [[location(2)]] uv              : vec2<f32>;
-    [[location(3)]] color           : vec4<f32>;
+    @builtin(position) position  : vec4<f32>;
+    @location(0) view_position   : vec4<f32>;
+    @location(1) normal          : vec4<f32>;
+    @location(2) uv              : vec2<f32>;
+    @location(3) color           : vec4<f32>;
 };
 
 struct FragmentOutput {
-    [[location(0)]] color : vec4<f32>;
+    @location(0) color : vec4<f32>;
 };
 
 fn getColor(fragment : FragmentInput) -> vec4<f32>{
@@ -63,7 +63,7 @@
     return color;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main(fragment : FragmentInput) -> FragmentOutput {
 
     var output : FragmentOutput;
diff --git a/test/bug/tint/1046.wgsl.expected.wgsl b/test/bug/tint/1046.wgsl.expected.wgsl
index d67947b..b7000e6 100644
--- a/test/bug/tint/1046.wgsl.expected.wgsl
+++ b/test/bug/tint/1046.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
 }
 
 struct PointLights {
-  values : [[stride(16)]] array<PointLight>;
+  values : @stride(16) array<PointLight>;
 }
 
 struct Uniforms {
@@ -14,29 +14,29 @@
   color : vec4<f32>;
 }
 
-[[binding(0), group(0)]] var<uniform> uniforms : Uniforms;
+@binding(0) @group(0) var<uniform> uniforms : Uniforms;
 
-[[binding(1), group(0)]] var<storage, read> pointLights : PointLights;
+@binding(1) @group(0) var<storage, read> pointLights : PointLights;
 
-[[binding(2), group(0)]] var mySampler : sampler;
+@binding(2) @group(0) var mySampler : sampler;
 
-[[binding(3), group(0)]] var myTexture : texture_2d<f32>;
+@binding(3) @group(0) var myTexture : texture_2d<f32>;
 
 struct FragmentInput {
-  [[builtin(position)]]
+  @builtin(position)
   position : vec4<f32>;
-  [[location(0)]]
+  @location(0)
   view_position : vec4<f32>;
-  [[location(1)]]
+  @location(1)
   normal : vec4<f32>;
-  [[location(2)]]
+  @location(2)
   uv : vec2<f32>;
-  [[location(3)]]
+  @location(3)
   color : vec4<f32>;
 }
 
 struct FragmentOutput {
-  [[location(0)]]
+  @location(0)
   color : vec4<f32>;
 }
 
@@ -55,7 +55,7 @@
   return color;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main(fragment : FragmentInput) -> FragmentOutput {
   var output : FragmentOutput;
   output.color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
diff --git a/test/bug/tint/1064.wgsl b/test/bug/tint/1064.wgsl
index 782a564..4ab5117 100644
--- a/test/bug/tint/1064.wgsl
+++ b/test/bug/tint/1064.wgsl
@@ -1,4 +1,4 @@
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   loop {
     if (false) {
diff --git a/test/bug/tint/1064.wgsl.expected.wgsl b/test/bug/tint/1064.wgsl.expected.wgsl
index 27842dc..581cb90 100644
--- a/test/bug/tint/1064.wgsl.expected.wgsl
+++ b/test/bug/tint/1064.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   loop {
     if (false) {
diff --git a/test/bug/tint/1076.wgsl b/test/bug/tint/1076.wgsl
index b854b18..efa85b8 100644
--- a/test/bug/tint/1076.wgsl
+++ b/test/bug/tint/1076.wgsl
@@ -1,10 +1,10 @@
 struct FragIn {
-  [[location(0)]] a : f32;
-  [[builtin(sample_mask)]] mask : u32;
+  @location(0) a : f32;
+  @builtin(sample_mask) mask : u32;
 };
 
-[[stage(fragment)]]
-fn main(in : FragIn, [[location(1)]] b : f32) -> FragIn {
+@stage(fragment)
+fn main(in : FragIn, @location(1) b : f32) -> FragIn {
   if (in.mask == 0u) {
     return in;
   }
diff --git a/test/bug/tint/1076.wgsl.expected.wgsl b/test/bug/tint/1076.wgsl.expected.wgsl
index 8a91c08..4be185f 100644
--- a/test/bug/tint/1076.wgsl.expected.wgsl
+++ b/test/bug/tint/1076.wgsl.expected.wgsl
@@ -1,12 +1,12 @@
 struct FragIn {
-  [[location(0)]]
+  @location(0)
   a : f32;
-  [[builtin(sample_mask)]]
+  @builtin(sample_mask)
   mask : u32;
 }
 
-[[stage(fragment)]]
-fn main(in : FragIn, [[location(1)]] b : f32) -> FragIn {
+@stage(fragment)
+fn main(in : FragIn, @location(1) b : f32) -> FragIn {
   if ((in.mask == 0u)) {
     return in;
   }
diff --git a/test/bug/tint/1081.wgsl b/test/bug/tint/1081.wgsl
index 7350e4c..591fb04 100644
--- a/test/bug/tint/1081.wgsl
+++ b/test/bug/tint/1081.wgsl
@@ -5,8 +5,8 @@
   return x;
 }
 
-[[stage(fragment)]]
-fn main([[location(1)]] x: vec3<i32>) -> [[location(2)]] i32 {
+@stage(fragment)
+fn main(@location(1) x: vec3<i32>) -> @location(2) i32 {
   var y = x.x;
   loop {
     let r = f(y);
diff --git a/test/bug/tint/1081.wgsl.expected.glsl b/test/bug/tint/1081.wgsl.expected.glsl
index f86361a..dda1d6b 100644
--- a/test/bug/tint/1081.wgsl.expected.glsl
+++ b/test/bug/tint/1081.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 SKIP: FAILED
 
 bug/tint/1081.wgsl:9:25 warning: integral user-defined fragment inputs must have a flat interpolation attribute
-fn main([[location(1)]] x: vec3<i32>) -> [[location(2)]] i32 {
+fn main(@location(1) x: vec3<i32>) -> @location(2) i32 {
                         ^
 
 #version 310 es
@@ -51,7 +51,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:35: 'int' : must be qualified as flat in
-ERROR: 0:35: '' : compilation terminated 
+ERROR: 0:35: '' : compilation terminated
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/bug/tint/1081.wgsl.expected.hlsl b/test/bug/tint/1081.wgsl.expected.hlsl
index 1aba907..73e2830 100644
--- a/test/bug/tint/1081.wgsl.expected.hlsl
+++ b/test/bug/tint/1081.wgsl.expected.hlsl
@@ -1,6 +1,6 @@
-bug/tint/1081.wgsl:9:25 warning: integral user-defined fragment inputs must have a flat interpolation attribute
-fn main([[location(1)]] x: vec3<i32>) -> [[location(2)]] i32 {
-                        ^
+bug/tint/1081.wgsl:9:22 warning: integral user-defined fragment inputs must have a flat interpolation attribute
+fn main(@location(1) x: vec3<i32>) -> @location(2) i32 {
+                     ^
 
 int f(int x) {
   if (true) {
diff --git a/test/bug/tint/1081.wgsl.expected.msl b/test/bug/tint/1081.wgsl.expected.msl
index 0d57311..478e1a5 100644
--- a/test/bug/tint/1081.wgsl.expected.msl
+++ b/test/bug/tint/1081.wgsl.expected.msl
@@ -1,6 +1,6 @@
-bug/tint/1081.wgsl:9:25 warning: integral user-defined fragment inputs must have a flat interpolation attribute
-fn main([[location(1)]] x: vec3<i32>) -> [[location(2)]] i32 {
-                        ^
+bug/tint/1081.wgsl:9:22 warning: integral user-defined fragment inputs must have a flat interpolation attribute
+fn main(@location(1) x: vec3<i32>) -> @location(2) i32 {
+                     ^
 
 #include <metal_stdlib>
 
diff --git a/test/bug/tint/1081.wgsl.expected.spvasm b/test/bug/tint/1081.wgsl.expected.spvasm
index 58810de..b17a7e6 100644
--- a/test/bug/tint/1081.wgsl.expected.spvasm
+++ b/test/bug/tint/1081.wgsl.expected.spvasm
@@ -1,6 +1,6 @@
-bug/tint/1081.wgsl:9:25 warning: integral user-defined fragment inputs must have a flat interpolation attribute
-fn main([[location(1)]] x: vec3<i32>) -> [[location(2)]] i32 {
-                        ^
+bug/tint/1081.wgsl:9:22 warning: integral user-defined fragment inputs must have a flat interpolation attribute
+fn main(@location(1) x: vec3<i32>) -> @location(2) i32 {
+                     ^
 
 ; SPIR-V
 ; Version: 1.3
diff --git a/test/bug/tint/1081.wgsl.expected.wgsl b/test/bug/tint/1081.wgsl.expected.wgsl
index ab2a38d..34d78e1 100644
--- a/test/bug/tint/1081.wgsl.expected.wgsl
+++ b/test/bug/tint/1081.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-bug/tint/1081.wgsl:9:25 warning: integral user-defined fragment inputs must have a flat interpolation attribute
-fn main([[location(1)]] x: vec3<i32>) -> [[location(2)]] i32 {
-                        ^
+bug/tint/1081.wgsl:9:22 warning: integral user-defined fragment inputs must have a flat interpolation attribute
+fn main(@location(1) x: vec3<i32>) -> @location(2) i32 {
+                     ^
 
 fn f(x : i32) -> i32 {
   if ((x == 10)) {
@@ -9,8 +9,8 @@
   return x;
 }
 
-[[stage(fragment)]]
-fn main([[location(1)]] x : vec3<i32>) -> [[location(2)]] i32 {
+@stage(fragment)
+fn main(@location(1) x : vec3<i32>) -> @location(2) i32 {
   var y = x.x;
   loop {
     let r = f(y);
diff --git a/test/bug/tint/1083.wgsl b/test/bug/tint/1083.wgsl
index 3dc8fb2..12e985f 100644
--- a/test/bug/tint/1083.wgsl
+++ b/test/bug/tint/1083.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 1;
     let b = 0;
diff --git a/test/bug/tint/1083.wgsl.expected.wgsl b/test/bug/tint/1083.wgsl.expected.wgsl
index 57303cb..4d2024c 100644
--- a/test/bug/tint/1083.wgsl.expected.wgsl
+++ b/test/bug/tint/1083.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 1;
   let b = 0;
diff --git a/test/bug/tint/1086.wgsl b/test/bug/tint/1086.wgsl
index 6273135..a5c2982 100644
--- a/test/bug/tint/1086.wgsl
+++ b/test/bug/tint/1086.wgsl
@@ -8,7 +8,7 @@
   x(&v);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn f() {
   g();
 }
diff --git a/test/bug/tint/1086.wgsl.expected.wgsl b/test/bug/tint/1086.wgsl.expected.wgsl
index dbc74be..9c7a8fc 100644
--- a/test/bug/tint/1086.wgsl.expected.wgsl
+++ b/test/bug/tint/1086.wgsl.expected.wgsl
@@ -8,7 +8,7 @@
   x(&(v));
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn f() {
   g();
 }
diff --git a/test/bug/tint/1088.spvasm.expected.wgsl b/test/bug/tint/1088.spvasm.expected.wgsl
index d31ca16..c67da67 100644
--- a/test/bug/tint/1088.spvasm.expected.wgsl
+++ b/test/bug/tint/1088.spvasm.expected.wgsl
@@ -1,11 +1,11 @@
-type Arr = [[stride(64)]] array<mat4x4<f32>, 2u>;
+type Arr = @stride(64) array<mat4x4<f32>, 2u>;
 
-type Arr_1 = [[stride(16)]] array<f32, 4u>;
+type Arr_1 = @stride(16) array<f32, 4u>;
 
 struct LeftOver {
   worldViewProjection : mat4x4<f32>;
   time : f32;
-  [[size(12)]]
+  @size(12)
   padding : u32;
   test2 : Arr;
   test : Arr_1;
@@ -13,7 +13,7 @@
 
 var<private> position : vec3<f32>;
 
-[[group(2), binding(2)]] var<uniform> x_14 : LeftOver;
+@group(2) @binding(2) var<uniform> x_14 : LeftOver;
 
 var<private> vUV : vec2<f32>;
 
@@ -49,14 +49,14 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
-  [[location(0)]]
+  @location(0)
   vUV_1 : vec2<f32>;
 }
 
-[[stage(vertex)]]
-fn main([[location(0)]] position_param : vec3<f32>, [[location(2)]] uv_param : vec2<f32>, [[location(1)]] normal_param : vec3<f32>) -> main_out {
+@stage(vertex)
+fn main(@location(0) position_param : vec3<f32>, @location(2) uv_param : vec2<f32>, @location(1) normal_param : vec3<f32>) -> main_out {
   position = position_param;
   uv = uv_param;
   normal = normal_param;
diff --git a/test/bug/tint/1113.wgsl b/test/bug/tint/1113.wgsl
index 0e7874d..f3a080a 100644
--- a/test/bug/tint/1113.wgsl
+++ b/test/bug/tint/1113.wgsl
@@ -23,23 +23,23 @@
     value_f32_3 : f32;
 };
 
- struct F32s { values : [[stride(4)]] array<f32>; };
- struct U32s { values : [[stride(4)]] array<u32>; };
- struct I32s { values : [[stride(4)]] array<i32>; };
- struct AU32s { values : [[stride(4)]] array<atomic<u32>>; };
- struct AI32s { values : [[stride(4)]] array<atomic<i32>>; };
+ struct F32s { values : @stride(4) array<f32>; };
+ struct U32s { values : @stride(4) array<u32>; };
+ struct I32s { values : @stride(4) array<i32>; };
+ struct AU32s { values : @stride(4) array<atomic<u32>>; };
+ struct AI32s { values : @stride(4) array<atomic<i32>>; };
 
 // IN
-[[binding(0), group(0)]] var<uniform> uniforms : Uniforms;
-[[binding(10), group(0)]] var<storage, read_write> indices : U32s;
-[[binding(11), group(0)]] var<storage, read_write> positions : F32s;
+@binding(0) @group(0) var<uniform> uniforms : Uniforms;
+@binding(10) @group(0) var<storage, read_write> indices : U32s;
+@binding(11) @group(0) var<storage, read_write> positions : F32s;
 
 // OUT
-[[binding(20), group(0)]] var<storage, read_write> counters : AU32s;
-[[binding(21), group(0)]] var<storage, read_write> LUT : AI32s;
+@binding(20) @group(0) var<storage, read_write> counters : AU32s;
+@binding(21) @group(0) var<storage, read_write> LUT : AI32s;
 
 // DEBUG
-[[binding(50), group(0)]] var<storage, read_write> dbg : Dbg;
+@binding(50) @group(0) var<storage, read_write> dbg : Dbg;
 
 fn toVoxelPos(position : vec3<f32>) -> vec3<f32>{
 
@@ -95,8 +95,8 @@
 
 }
 
-[[stage(compute), workgroup_size(128)]]
-fn main_count([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
+@stage(compute) @workgroup_size(128)
+fn main_count(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
 
     var triangleIndex = GlobalInvocationID.x;
 
@@ -132,8 +132,8 @@
 
 }
 
-[[stage(compute), workgroup_size(128)]]
-fn main_create_lut([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
+@stage(compute) @workgroup_size(128)
+fn main_create_lut(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
 
     var voxelIndex = GlobalInvocationID.x;
 
@@ -155,8 +155,8 @@
 
 }
 
-[[stage(compute), workgroup_size(128)]]
-fn main_sort_triangles([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
+@stage(compute) @workgroup_size(128)
+fn main_sort_triangles(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
 
     var triangleIndex = GlobalInvocationID.x;
 
diff --git a/test/bug/tint/1113.wgsl.expected.wgsl b/test/bug/tint/1113.wgsl.expected.wgsl
index ce45595..9eeb16c 100644
--- a/test/bug/tint/1113.wgsl.expected.wgsl
+++ b/test/bug/tint/1113.wgsl.expected.wgsl
@@ -23,36 +23,36 @@
 }
 
 struct F32s {
-  values : [[stride(4)]] array<f32>;
+  values : @stride(4) array<f32>;
 }
 
 struct U32s {
-  values : [[stride(4)]] array<u32>;
+  values : @stride(4) array<u32>;
 }
 
 struct I32s {
-  values : [[stride(4)]] array<i32>;
+  values : @stride(4) array<i32>;
 }
 
 struct AU32s {
-  values : [[stride(4)]] array<atomic<u32>>;
+  values : @stride(4) array<atomic<u32>>;
 }
 
 struct AI32s {
-  values : [[stride(4)]] array<atomic<i32>>;
+  values : @stride(4) array<atomic<i32>>;
 }
 
-[[binding(0), group(0)]] var<uniform> uniforms : Uniforms;
+@binding(0) @group(0) var<uniform> uniforms : Uniforms;
 
-[[binding(10), group(0)]] var<storage, read_write> indices : U32s;
+@binding(10) @group(0) var<storage, read_write> indices : U32s;
 
-[[binding(11), group(0)]] var<storage, read_write> positions : F32s;
+@binding(11) @group(0) var<storage, read_write> positions : F32s;
 
-[[binding(20), group(0)]] var<storage, read_write> counters : AU32s;
+@binding(20) @group(0) var<storage, read_write> counters : AU32s;
 
-[[binding(21), group(0)]] var<storage, read_write> LUT : AI32s;
+@binding(21) @group(0) var<storage, read_write> LUT : AI32s;
 
-[[binding(50), group(0)]] var<storage, read_write> dbg : Dbg;
+@binding(50) @group(0) var<storage, read_write> dbg : Dbg;
 
 fn toVoxelPos(position : vec3<f32>) -> vec3<f32> {
   var bbMin = vec3<f32>(uniforms.bbMin.x, uniforms.bbMin.y, uniforms.bbMin.z);
@@ -92,8 +92,8 @@
   var g55 = atomicLoad(&(LUT.values[0]));
 }
 
-[[stage(compute), workgroup_size(128)]]
-fn main_count([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
+@stage(compute) @workgroup_size(128)
+fn main_count(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
   var triangleIndex = GlobalInvocationID.x;
   if ((triangleIndex >= uniforms.numTriangles)) {
     return;
@@ -117,8 +117,8 @@
   }
 }
 
-[[stage(compute), workgroup_size(128)]]
-fn main_create_lut([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
+@stage(compute) @workgroup_size(128)
+fn main_create_lut(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
   var voxelIndex = GlobalInvocationID.x;
   doIgnore();
   var maxVoxels = ((uniforms.gridSize * uniforms.gridSize) * uniforms.gridSize);
@@ -133,8 +133,8 @@
   atomicStore(&(LUT.values[voxelIndex]), offset);
 }
 
-[[stage(compute), workgroup_size(128)]]
-fn main_sort_triangles([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
+@stage(compute) @workgroup_size(128)
+fn main_sort_triangles(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
   var triangleIndex = GlobalInvocationID.x;
   doIgnore();
   if ((triangleIndex >= uniforms.numTriangles)) {
diff --git a/test/bug/tint/1121.wgsl b/test/bug/tint/1121.wgsl
index c7fba35..24a125b 100644
--- a/test/bug/tint/1121.wgsl
+++ b/test/bug/tint/1121.wgsl
@@ -15,7 +15,7 @@
  struct LightsBuffer {
     lights: array<LightData>;
 };
-[[group(0), binding(0)]] var<storage, read_write> lightsBuffer: LightsBuffer;
+@group(0) @binding(0) var<storage, read_write> lightsBuffer: LightsBuffer;
 struct TileLightIdData {
     count: atomic<u32>;
     lightId: array<u32, 64>;
@@ -23,8 +23,8 @@
  struct Tiles {
     data: array<TileLightIdData, 4>;
 };
-[[group(1), binding(0)]] var<storage, read_write> tileLightId: Tiles;
-  
+@group(1) @binding(0) var<storage, read_write> tileLightId: Tiles;
+
  struct Config {
     numLights : u32;
     numTiles : u32;
@@ -33,7 +33,7 @@
     numTileLightSlot : u32;
     tileSize : u32;
 };
-[[group(2), binding(0)]] var<uniform> config: Config;
+@group(2) @binding(0) var<uniform> config: Config;
  struct Uniforms {
     min : vec4<f32>;
     max : vec4<f32>;
@@ -43,16 +43,16 @@
     // Tile info
     fullScreenSize : vec4<f32>;    // width, height
 };
-[[group(3), binding(0)]] var<uniform> uniforms: Uniforms;
-[[stage(compute), workgroup_size(64, 1, 1)]]
-fn main([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
+@group(3) @binding(0) var<uniform> uniforms: Uniforms;
+@stage(compute) @workgroup_size(64, 1, 1)
+fn main(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
     var index = GlobalInvocationID.x;
     if (index >= config.numLights) {
         return;
     }
     // Light position updating
     lightsBuffer.lights[index].position.y = lightsBuffer.lights[index].position.y - 0.1 + 0.001 * (f32(index) - 64.0 * floor(f32(index) / 64.0));
-  
+
     if (lightsBuffer.lights[index].position.y < uniforms.min.y) {
         lightsBuffer.lights[index].position.y = uniforms.max.y;
     }
diff --git a/test/bug/tint/1121.wgsl.expected.wgsl b/test/bug/tint/1121.wgsl.expected.wgsl
index 2620967..61d81e5 100644
--- a/test/bug/tint/1121.wgsl.expected.wgsl
+++ b/test/bug/tint/1121.wgsl.expected.wgsl
@@ -8,7 +8,7 @@
   lights : array<LightData>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> lightsBuffer : LightsBuffer;
+@group(0) @binding(0) var<storage, read_write> lightsBuffer : LightsBuffer;
 
 struct TileLightIdData {
   count : atomic<u32>;
@@ -19,7 +19,7 @@
   data : array<TileLightIdData, 4>;
 }
 
-[[group(1), binding(0)]] var<storage, read_write> tileLightId : Tiles;
+@group(1) @binding(0) var<storage, read_write> tileLightId : Tiles;
 
 struct Config {
   numLights : u32;
@@ -30,7 +30,7 @@
   tileSize : u32;
 }
 
-[[group(2), binding(0)]] var<uniform> config : Config;
+@group(2) @binding(0) var<uniform> config : Config;
 
 struct Uniforms {
   min : vec4<f32>;
@@ -40,10 +40,10 @@
   fullScreenSize : vec4<f32>;
 }
 
-[[group(3), binding(0)]] var<uniform> uniforms : Uniforms;
+@group(3) @binding(0) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(64, 1, 1)]]
-fn main([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
+@stage(compute) @workgroup_size(64, 1, 1)
+fn main(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
   var index = GlobalInvocationID.x;
   if ((index >= config.numLights)) {
     return;
diff --git a/test/bug/tint/1136.wgsl b/test/bug/tint/1136.wgsl
index ee73478..2fd739e 100644
--- a/test/bug/tint/1136.wgsl
+++ b/test/bug/tint/1136.wgsl
@@ -1,3 +1,3 @@
  struct Buffer { data: u32; };
-[[group(0), binding(0)]] var<storage, read_write> buffer: Buffer;
+@group(0) @binding(0) var<storage, read_write> buffer: Buffer;
 fn main() { buffer.data = buffer.data + 1u;  }
diff --git a/test/bug/tint/1136.wgsl.expected.wgsl b/test/bug/tint/1136.wgsl.expected.wgsl
index 7bf2195..d17771a 100644
--- a/test/bug/tint/1136.wgsl.expected.wgsl
+++ b/test/bug/tint/1136.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   data : u32;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> buffer : Buffer;
+@group(0) @binding(0) var<storage, read_write> buffer : Buffer;
 
 fn main() {
   buffer.data = (buffer.data + 1u);
diff --git a/test/bug/tint/1321.wgsl b/test/bug/tint/1321.wgsl
index 0c2d7ec..1ab9e23 100644
--- a/test/bug/tint/1321.wgsl
+++ b/test/bug/tint/1321.wgsl
@@ -2,7 +2,7 @@
   return 1;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   var arr = array<f32, 4>();
   for (let a = &arr[foo()]; ;) {
diff --git a/test/bug/tint/1321.wgsl.expected.wgsl b/test/bug/tint/1321.wgsl.expected.wgsl
index 8f7d2f7..2117393 100644
--- a/test/bug/tint/1321.wgsl.expected.wgsl
+++ b/test/bug/tint/1321.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   return 1;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   var arr = array<f32, 4>();
   for(let a = &(arr[foo()]); ; ) {
diff --git a/test/bug/tint/1369.wgsl b/test/bug/tint/1369.wgsl
index 434bb2b..b90b8e3 100644
--- a/test/bug/tint/1369.wgsl
+++ b/test/bug/tint/1369.wgsl
@@ -3,7 +3,7 @@
   return true;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn f() {
     var v = call_discard();
     var also_unreachable : bool;
diff --git a/test/bug/tint/1369.wgsl.expected.wgsl b/test/bug/tint/1369.wgsl.expected.wgsl
index eb44227..2da3171 100644
--- a/test/bug/tint/1369.wgsl.expected.wgsl
+++ b/test/bug/tint/1369.wgsl.expected.wgsl
@@ -11,7 +11,7 @@
   return true;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn f() {
   var v = call_discard();
   var also_unreachable : bool;
diff --git a/test/bug/tint/1385.wgsl b/test/bug/tint/1385.wgsl
index 6b4154a..78f402e 100644
--- a/test/bug/tint/1385.wgsl
+++ b/test/bug/tint/1385.wgsl
@@ -1,11 +1,11 @@
-[[group(0), binding(1)]]
+@group(0) @binding(1)
 var<storage, read> data : array<i32>;
 
 fn foo() -> i32 {
   return data[0];
 }
 
-[[stage(compute), workgroup_size(16, 16, 1)]]
+@stage(compute) @workgroup_size(16, 16, 1)
 fn main() {
   foo();
 }
diff --git a/test/bug/tint/1385.wgsl.expected.wgsl b/test/bug/tint/1385.wgsl.expected.wgsl
index 98c9e90..3e522fd 100644
--- a/test/bug/tint/1385.wgsl.expected.wgsl
+++ b/test/bug/tint/1385.wgsl.expected.wgsl
@@ -1,10 +1,10 @@
-[[group(0), binding(1)]] var<storage, read> data : array<i32>;
+@group(0) @binding(1) var<storage, read> data : array<i32>;
 
 fn foo() -> i32 {
   return data[0];
 }
 
-[[stage(compute), workgroup_size(16, 16, 1)]]
+@stage(compute) @workgroup_size(16, 16, 1)
 fn main() {
   foo();
 }
diff --git a/test/bug/tint/219.spvasm.expected.wgsl b/test/bug/tint/219.spvasm.expected.wgsl
index 0932553..3bc5263 100644
--- a/test/bug/tint/219.spvasm.expected.wgsl
+++ b/test/bug/tint/219.spvasm.expected.wgsl
@@ -9,7 +9,7 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   main_1();
 }
diff --git a/test/bug/tint/221.wgsl b/test/bug/tint/221.wgsl
index 9c6a70f..e38a666 100644
--- a/test/bug/tint/221.wgsl
+++ b/test/bug/tint/221.wgsl
@@ -5,9 +5,9 @@
   data : Arr;
 };
 
-[[group(0), binding (0)]] var<storage, read_write> b : Buf;
+@group(0) @binding(0) var<storage, read_write> b : Buf;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var i : u32 = 0u;
   loop {
diff --git a/test/bug/tint/221.wgsl.expected.wgsl b/test/bug/tint/221.wgsl.expected.wgsl
index 6173b61..a0e5251 100644
--- a/test/bug/tint/221.wgsl.expected.wgsl
+++ b/test/bug/tint/221.wgsl.expected.wgsl
@@ -5,9 +5,9 @@
   data : Arr;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> b : Buf;
+@group(0) @binding(0) var<storage, read_write> b : Buf;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var i : u32 = 0u;
   loop {
diff --git a/test/bug/tint/292.wgsl b/test/bug/tint/292.wgsl
index 78f469c..daebb4f 100644
--- a/test/bug/tint/292.wgsl
+++ b/test/bug/tint/292.wgsl
@@ -1,5 +1,5 @@
-[[stage(vertex)]]
-fn main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main() -> @builtin(position) vec4<f32> {
   var light : vec3<f32> = vec3<f32>(1.2, 1., 2.);
   var negative_light : vec3<f32> = -light;
   return vec4<f32>();
diff --git a/test/bug/tint/292.wgsl.expected.wgsl b/test/bug/tint/292.wgsl.expected.wgsl
index 08967d9..071b9da 100644
--- a/test/bug/tint/292.wgsl.expected.wgsl
+++ b/test/bug/tint/292.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
-[[stage(vertex)]]
-fn main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main() -> @builtin(position) vec4<f32> {
   var light : vec3<f32> = vec3<f32>(1.200000048, 1.0, 2.0);
   var negative_light : vec3<f32> = -(light);
   return vec4<f32>();
diff --git a/test/bug/tint/294.wgsl b/test/bug/tint/294.wgsl
index 83831c7..4917c47 100644
--- a/test/bug/tint/294.wgsl
+++ b/test/bug/tint/294.wgsl
@@ -3,6 +3,6 @@
   colour : vec3<f32>;
 };
  struct Lights {
-  light : [[stride(32)]] array<Light>;
+  light : @stride(32) array<Light>;
 };
-[[group(0), binding(1)]] var<storage, read> lights : Lights;
+@group(0) @binding(1) var<storage, read> lights : Lights;
diff --git a/test/bug/tint/294.wgsl.expected.wgsl b/test/bug/tint/294.wgsl.expected.wgsl
index f4c1358..87f08de 100644
--- a/test/bug/tint/294.wgsl.expected.wgsl
+++ b/test/bug/tint/294.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
 }
 
 struct Lights {
-  light : [[stride(32)]] array<Light>;
+  light : @stride(32) array<Light>;
 }
 
-[[group(0), binding(1)]] var<storage, read> lights : Lights;
+@group(0) @binding(1) var<storage, read> lights : Lights;
diff --git a/test/bug/tint/369.wgsl b/test/bug/tint/369.wgsl
index 05386cb..00383ab 100644
--- a/test/bug/tint/369.wgsl
+++ b/test/bug/tint/369.wgsl
@@ -2,5 +2,5 @@
     m : mat2x2<f32>;
 };
 
-[[group(0), binding(0)]] var<storage> SSBO : S;
-[[group(0), binding(0)]] var<uniform> UBO : S;
+@group(0) @binding(0) var<storage> SSBO : S;
+@group(0) @binding(0) var<uniform> UBO : S;
diff --git a/test/bug/tint/369.wgsl.expected.wgsl b/test/bug/tint/369.wgsl.expected.wgsl
index f4192a7..b361b1f 100644
--- a/test/bug/tint/369.wgsl.expected.wgsl
+++ b/test/bug/tint/369.wgsl.expected.wgsl
@@ -2,6 +2,6 @@
   m : mat2x2<f32>;
 }
 
-[[group(0), binding(0)]] var<storage> SSBO : S;
+@group(0) @binding(0) var<storage> SSBO : S;
 
-[[group(0), binding(0)]] var<uniform> UBO : S;
+@group(0) @binding(0) var<uniform> UBO : S;
diff --git a/test/bug/tint/403.wgsl b/test/bug/tint/403.wgsl
index 011fbf0..82d5e91 100644
--- a/test/bug/tint/403.wgsl
+++ b/test/bug/tint/403.wgsl
@@ -6,12 +6,12 @@
   transform2 : mat2x2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_20 : vertexUniformBuffer1;
-[[group(1), binding(0)]] var<uniform> x_26 : vertexUniformBuffer2;
+@group(0) @binding(0) var<uniform> x_20 : vertexUniformBuffer1;
+@group(1) @binding(0) var<uniform> x_26 : vertexUniformBuffer2;
 
 
-[[stage(vertex)]]
-fn main([[builtin(vertex_index)]] gl_VertexIndex : u32) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main(@builtin(vertex_index) gl_VertexIndex : u32) -> @builtin(position) vec4<f32> {
   var indexable : array<vec2<f32>, 3>;
   let x_23 : mat2x2<f32> = x_20.transform1;
   let x_28 : mat2x2<f32> = x_26.transform2;
diff --git a/test/bug/tint/403.wgsl.expected.wgsl b/test/bug/tint/403.wgsl.expected.wgsl
index 2fa1f18..025e4a5 100644
--- a/test/bug/tint/403.wgsl.expected.wgsl
+++ b/test/bug/tint/403.wgsl.expected.wgsl
@@ -6,12 +6,12 @@
   transform2 : mat2x2<f32>;
 }
 
-[[group(0), binding(0)]] var<uniform> x_20 : vertexUniformBuffer1;
+@group(0) @binding(0) var<uniform> x_20 : vertexUniformBuffer1;
 
-[[group(1), binding(0)]] var<uniform> x_26 : vertexUniformBuffer2;
+@group(1) @binding(0) var<uniform> x_26 : vertexUniformBuffer2;
 
-[[stage(vertex)]]
-fn main([[builtin(vertex_index)]] gl_VertexIndex : u32) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main(@builtin(vertex_index) gl_VertexIndex : u32) -> @builtin(position) vec4<f32> {
   var indexable : array<vec2<f32>, 3>;
   let x_23 : mat2x2<f32> = x_20.transform1;
   let x_28 : mat2x2<f32> = x_26.transform2;
diff --git a/test/bug/tint/413.spvasm.expected.wgsl b/test/bug/tint/413.spvasm.expected.wgsl
index 6ca1a05..a9318dc 100644
--- a/test/bug/tint/413.spvasm.expected.wgsl
+++ b/test/bug/tint/413.spvasm.expected.wgsl
@@ -1,6 +1,6 @@
-[[group(0), binding(0)]] var Src : texture_2d<u32>;
+@group(0) @binding(0) var Src : texture_2d<u32>;
 
-[[group(0), binding(1)]] var Dst : texture_storage_2d<r32uint, write>;
+@group(0) @binding(1) var Dst : texture_storage_2d<r32uint, write>;
 
 fn main_1() {
   var srcValue : vec4<u32>;
@@ -13,7 +13,7 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   main_1();
 }
diff --git a/test/bug/tint/453.wgsl b/test/bug/tint/453.wgsl
index 588e7c2..99e53b4 100644
--- a/test/bug/tint/453.wgsl
+++ b/test/bug/tint/453.wgsl
@@ -1,7 +1,7 @@
-[[group(0), binding(0)]] var Src : texture_2d<u32>;
-[[group(0), binding(1)]] var Dst : texture_storage_2d<r32uint, write>;
+@group(0) @binding(0) var Src : texture_2d<u32>;
+@group(0) @binding(1) var Dst : texture_storage_2d<r32uint, write>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var srcValue : vec4<u32>;
   let x_22 : vec4<u32> = textureLoad(Src, vec2<i32>(0, 0), 0);
diff --git a/test/bug/tint/453.wgsl.expected.wgsl b/test/bug/tint/453.wgsl.expected.wgsl
index 92c30e7..8fe5795 100644
--- a/test/bug/tint/453.wgsl.expected.wgsl
+++ b/test/bug/tint/453.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
-[[group(0), binding(0)]] var Src : texture_2d<u32>;
+@group(0) @binding(0) var Src : texture_2d<u32>;
 
-[[group(0), binding(1)]] var Dst : texture_storage_2d<r32uint, write>;
+@group(0) @binding(1) var Dst : texture_storage_2d<r32uint, write>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var srcValue : vec4<u32>;
   let x_22 : vec4<u32> = textureLoad(Src, vec2<i32>(0, 0), 0);
diff --git a/test/bug/tint/492.wgsl b/test/bug/tint/492.wgsl
index bbba0aa..48ae3df 100644
--- a/test/bug/tint/492.wgsl
+++ b/test/bug/tint/492.wgsl
@@ -1,7 +1,7 @@
  struct S { a : i32; };
-[[group(0), binding(0)]] var<storage, read_write> buf : S;
+@group(0) @binding(0) var<storage, read_write> buf : S;
 
-[[stage(compute), workgroup_size(1)]] fn main() {
+@stage(compute) @workgroup_size(1) fn main() {
   let p : ptr<storage, i32, read_write> = &buf.a;
   *p = 12;
 }
diff --git a/test/bug/tint/492.wgsl.expected.wgsl b/test/bug/tint/492.wgsl.expected.wgsl
index 6563f70..181e7e6 100644
--- a/test/bug/tint/492.wgsl.expected.wgsl
+++ b/test/bug/tint/492.wgsl.expected.wgsl
@@ -2,9 +2,9 @@
   a : i32;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> buf : S;
+@group(0) @binding(0) var<storage, read_write> buf : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let p : ptr<storage, i32, read_write> = &(buf.a);
   *(p) = 12;
diff --git a/test/bug/tint/534.wgsl b/test/bug/tint/534.wgsl
index 1aaf535..782f193 100644
--- a/test/bug/tint/534.wgsl
+++ b/test/bug/tint/534.wgsl
@@ -5,21 +5,21 @@
     channelCount : u32;
 };
  struct OutputBuf {
-    result : [[stride(4)]] array<u32>;
+    result : @stride(4) array<u32>;
 };
-[[group(0), binding(0)]] var src : texture_2d<f32>;
-[[group(0), binding(1)]] var dst : texture_2d<f32>;
-[[group(0), binding(2)]] var<storage_buffer, read_write> output : OutputBuf;
-[[group(0), binding(3)]] var<uniform> uniforms : Uniforms;
-//[[builtin(global_invocation_id)]] var<in> GlobalInvocationID : vec3<u32>;
+@group(0) @binding(0) var src : texture_2d<f32>;
+@group(0) @binding(1) var dst : texture_2d<f32>;
+@group(0) @binding(2) var<storage_buffer, read_write> output : OutputBuf;
+@group(0) @binding(3) var<uniform> uniforms : Uniforms;
+//@builtin(global_invocation_id) var<in> GlobalInvocationID : vec3<u32>;
 // Fp16 logic
 // Infinity and NaN won't happen in this test case.
 fn ConvertToFp16FloatValue(fp32 : f32) -> u32 {
     return 1u;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
-fn main([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
+@stage(compute) @workgroup_size(1, 1, 1)
+fn main(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
     var size : vec2<i32> = textureDimensions(src);
     var dstTexCoord : vec2<i32> = vec2<i32>(GlobalInvocationID.xy);
     var srcTexCoord : vec2<i32> = dstTexCoord;
diff --git a/test/bug/tint/534.wgsl.expected.wgsl b/test/bug/tint/534.wgsl.expected.wgsl
index bc45f8a..dfd0f17 100644
--- a/test/bug/tint/534.wgsl.expected.wgsl
+++ b/test/bug/tint/534.wgsl.expected.wgsl
@@ -6,23 +6,23 @@
 }
 
 struct OutputBuf {
-  result : [[stride(4)]] array<u32>;
+  result : @stride(4) array<u32>;
 }
 
-[[group(0), binding(0)]] var src : texture_2d<f32>;
+@group(0) @binding(0) var src : texture_2d<f32>;
 
-[[group(0), binding(1)]] var dst : texture_2d<f32>;
+@group(0) @binding(1) var dst : texture_2d<f32>;
 
-[[group(0), binding(2)]] var<storage, read_write> output : OutputBuf;
+@group(0) @binding(2) var<storage, read_write> output : OutputBuf;
 
-[[group(0), binding(3)]] var<uniform> uniforms : Uniforms;
+@group(0) @binding(3) var<uniform> uniforms : Uniforms;
 
 fn ConvertToFp16FloatValue(fp32 : f32) -> u32 {
   return 1u;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
-fn main([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
+@stage(compute) @workgroup_size(1, 1, 1)
+fn main(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
   var size : vec2<i32> = textureDimensions(src);
   var dstTexCoord : vec2<i32> = vec2<i32>(GlobalInvocationID.xy);
   var srcTexCoord : vec2<i32> = dstTexCoord;
diff --git a/test/bug/tint/744.wgsl b/test/bug/tint/744.wgsl
index c8c8cd2..31daa13 100644
--- a/test/bug/tint/744.wgsl
+++ b/test/bug/tint/744.wgsl
@@ -7,13 +7,13 @@
     numbers: array<u32>;
 };
 
-[[group(0), binding(0)]] var<storage, read> firstMatrix : Matrix;
-[[group(0), binding(1)]] var<storage, read> secondMatrix : Matrix;
-[[group(0), binding(2)]] var<storage, write> resultMatrix : Matrix;
-[[group(0), binding(3)]] var<uniform> uniforms : Uniforms;
+@group(0) @binding(0) var<storage, read> firstMatrix : Matrix;
+@group(0) @binding(1) var<storage, read> secondMatrix : Matrix;
+@group(0) @binding(2) var<storage, write> resultMatrix : Matrix;
+@group(0) @binding(3) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(2,2,1)]]
-fn main([[builtin(global_invocation_id)]] global_id  : vec3<u32>) {
+@stage(compute) @workgroup_size(2,2,1)
+fn main(@builtin(global_invocation_id) global_id  : vec3<u32>) {
     let resultCell : vec2<u32> = vec2<u32>(global_id.y, global_id.x);
     let dimInner : u32 = uniforms.aShape.y;
     let dimOutter: u32 = uniforms.outShape.y;
diff --git a/test/bug/tint/744.wgsl.expected.wgsl b/test/bug/tint/744.wgsl.expected.wgsl
index 001dd88..e670d80 100644
--- a/test/bug/tint/744.wgsl.expected.wgsl
+++ b/test/bug/tint/744.wgsl.expected.wgsl
@@ -8,16 +8,16 @@
   numbers : array<u32>;
 }
 
-[[group(0), binding(0)]] var<storage, read> firstMatrix : Matrix;
+@group(0) @binding(0) var<storage, read> firstMatrix : Matrix;
 
-[[group(0), binding(1)]] var<storage, read> secondMatrix : Matrix;
+@group(0) @binding(1) var<storage, read> secondMatrix : Matrix;
 
-[[group(0), binding(2)]] var<storage, write> resultMatrix : Matrix;
+@group(0) @binding(2) var<storage, write> resultMatrix : Matrix;
 
-[[group(0), binding(3)]] var<uniform> uniforms : Uniforms;
+@group(0) @binding(3) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(2, 2, 1)]]
-fn main([[builtin(global_invocation_id)]] global_id : vec3<u32>) {
+@stage(compute) @workgroup_size(2, 2, 1)
+fn main(@builtin(global_invocation_id) global_id : vec3<u32>) {
   let resultCell : vec2<u32> = vec2<u32>(global_id.y, global_id.x);
   let dimInner : u32 = uniforms.aShape.y;
   let dimOutter : u32 = uniforms.outShape.y;
diff --git a/test/bug/tint/749.spvasm.expected.wgsl b/test/bug/tint/749.spvasm.expected.wgsl
index 59e1920..f23b495 100644
--- a/test/bug/tint/749.spvasm.expected.wgsl
+++ b/test/bug/tint/749.spvasm.expected.wgsl
@@ -10,7 +10,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_188 : buf0;
+@group(0) @binding(0) var<uniform> x_188 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -1474,12 +1474,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 }
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/bug/tint/757.wgsl b/test/bug/tint/757.wgsl
index c5aca24..b2a05de 100644
--- a/test/bug/tint/757.wgsl
+++ b/test/bug/tint/757.wgsl
@@ -3,16 +3,16 @@
   level : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> constants : Constants;
-[[group(0), binding(1)]] var myTexture : texture_2d_array<f32>;
+@group(0) @binding(0) var<uniform> constants : Constants;
+@group(0) @binding(1) var myTexture : texture_2d_array<f32>;
 
  struct Result {
-  values : [[stride(4)]] array<f32>;
+  values : @stride(4) array<f32>;
 };
-[[group(0), binding(3)]] var<storage, read_write> result : Result;
+@group(0) @binding(3) var<storage, read_write> result : Result;
 
-[[stage(compute), workgroup_size(1)]]
-fn main([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
+@stage(compute) @workgroup_size(1)
+fn main(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
   var flatIndex : u32 =
     2u * 2u * GlobalInvocationID.z +
     2u * GlobalInvocationID.y +
diff --git a/test/bug/tint/757.wgsl.expected.wgsl b/test/bug/tint/757.wgsl.expected.wgsl
index b19bb0c..b237cd5 100644
--- a/test/bug/tint/757.wgsl.expected.wgsl
+++ b/test/bug/tint/757.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   level : i32;
 }
 
-[[group(0), binding(0)]] var<uniform> constants : Constants;
+@group(0) @binding(0) var<uniform> constants : Constants;
 
-[[group(0), binding(1)]] var myTexture : texture_2d_array<f32>;
+@group(0) @binding(1) var myTexture : texture_2d_array<f32>;
 
 struct Result {
-  values : [[stride(4)]] array<f32>;
+  values : @stride(4) array<f32>;
 }
 
-[[group(0), binding(3)]] var<storage, read_write> result : Result;
+@group(0) @binding(3) var<storage, read_write> result : Result;
 
-[[stage(compute), workgroup_size(1)]]
-fn main([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
+@stage(compute) @workgroup_size(1)
+fn main(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
   var flatIndex : u32 = ((((2u * 2u) * GlobalInvocationID.z) + (2u * GlobalInvocationID.y)) + GlobalInvocationID.x);
   flatIndex = (flatIndex * 1u);
   var texel : vec4<f32> = textureLoad(myTexture, vec2<i32>(GlobalInvocationID.xy), 0, 0);
diff --git a/test/bug/tint/782.wgsl b/test/bug/tint/782.wgsl
index dbfcb00..3fe1f23 100644
--- a/test/bug/tint/782.wgsl
+++ b/test/bug/tint/782.wgsl
@@ -1,4 +1,4 @@
-type ArrayExplicitStride = [[stride(4)]] array<i32, 2>;
+type ArrayExplicitStride = @stride(4) array<i32, 2>;
 type ArrayImplicitStride =               array<i32, 2>;
 
 fn foo() {
diff --git a/test/bug/tint/782.wgsl.expected.wgsl b/test/bug/tint/782.wgsl.expected.wgsl
index 2719237..a4f37bc 100644
--- a/test/bug/tint/782.wgsl.expected.wgsl
+++ b/test/bug/tint/782.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-type ArrayExplicitStride = [[stride(4)]] array<i32, 2>;
+type ArrayExplicitStride = @stride(4) array<i32, 2>;
 
 type ArrayImplicitStride = array<i32, 2>;
 
diff --git a/test/bug/tint/804.spv.expected.glsl b/test/bug/tint/804.spv.expected.glsl
index f94b4a6..85b35ec 100644
--- a/test/bug/tint/804.spv.expected.glsl
+++ b/test/bug/tint/804.spv.expected.glsl
@@ -10,7 +10,7 @@
   field1 : u32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_75 : buf0;
+@group(0) @binding(0) var<uniform> x_75 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
diff --git a/test/bug/tint/804.spv.expected.hlsl b/test/bug/tint/804.spv.expected.hlsl
index f94b4a6..85b35ec 100644
--- a/test/bug/tint/804.spv.expected.hlsl
+++ b/test/bug/tint/804.spv.expected.hlsl
@@ -10,7 +10,7 @@
   field1 : u32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_75 : buf0;
+@group(0) @binding(0) var<uniform> x_75 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
diff --git a/test/bug/tint/824.wgsl b/test/bug/tint/824.wgsl
index ed907e3..68a7b66 100644
--- a/test/bug/tint/824.wgsl
+++ b/test/bug/tint/824.wgsl
@@ -1,10 +1,10 @@
 struct Output {
-    [[builtin(position)]] Position : vec4<f32>;
-    [[location(0)]] color : vec4<f32>;
+    @builtin(position) Position : vec4<f32>;
+    @location(0) color : vec4<f32>;
 };
-[[stage(vertex)]] fn main(
-    [[builtin(vertex_index)]] VertexIndex : u32,
-    [[builtin(instance_index)]] InstanceIndex : u32) -> Output {
+@stage(vertex) fn main(
+    @builtin(vertex_index) VertexIndex : u32,
+    @builtin(instance_index) InstanceIndex : u32) -> Output {
     // TODO: remove workaround for Tint unary array access broke
     let zv : array<vec2<f32>, 4> = array<vec2<f32>, 4>(
         vec2<f32>(0.2, 0.2),
diff --git a/test/bug/tint/824.wgsl.expected.wgsl b/test/bug/tint/824.wgsl.expected.wgsl
index 2c795fe..cb77758 100644
--- a/test/bug/tint/824.wgsl.expected.wgsl
+++ b/test/bug/tint/824.wgsl.expected.wgsl
@@ -1,12 +1,12 @@
 struct Output {
-  [[builtin(position)]]
+  @builtin(position)
   Position : vec4<f32>;
-  [[location(0)]]
+  @location(0)
   color : vec4<f32>;
 }
 
-[[stage(vertex)]]
-fn main([[builtin(vertex_index)]] VertexIndex : u32, [[builtin(instance_index)]] InstanceIndex : u32) -> Output {
+@stage(vertex)
+fn main(@builtin(vertex_index) VertexIndex : u32, @builtin(instance_index) InstanceIndex : u32) -> Output {
   let zv : array<vec2<f32>, 4> = array<vec2<f32>, 4>(vec2<f32>(0.200000003, 0.200000003), vec2<f32>(0.300000012, 0.300000012), vec2<f32>(-0.100000001, -0.100000001), vec2<f32>(1.100000024, 1.100000024));
   let z : f32 = zv[InstanceIndex].x;
   var output : Output;
diff --git a/test/bug/tint/827.wgsl b/test/bug/tint/827.wgsl
index 35fa8db..8a1bbe8 100644
--- a/test/bug/tint/827.wgsl
+++ b/test/bug/tint/827.wgsl
@@ -4,11 +4,11 @@
 
 let width : u32 = 128u;
 
-[[group(0), binding(0)]] var tex : texture_depth_2d;
-[[group(0), binding(1)]] var<storage, read_write> result : Result;
+@group(0) @binding(0) var tex : texture_depth_2d;
+@group(0) @binding(1) var<storage, read_write> result : Result;
 
-[[stage(compute), workgroup_size(1)]] fn main(
-    [[builtin(global_invocation_id)]] GlobalInvocationId : vec3<u32>
+@stage(compute) @workgroup_size(1) fn main(
+    @builtin(global_invocation_id) GlobalInvocationId : vec3<u32>
 ) {
     result.values[GlobalInvocationId.y * width + GlobalInvocationId.x] = textureLoad(
         tex, vec2<i32>(i32(GlobalInvocationId.x), i32(GlobalInvocationId.y)), 0);
diff --git a/test/bug/tint/827.wgsl.expected.wgsl b/test/bug/tint/827.wgsl.expected.wgsl
index af06757..2f7d250 100644
--- a/test/bug/tint/827.wgsl.expected.wgsl
+++ b/test/bug/tint/827.wgsl.expected.wgsl
@@ -4,11 +4,11 @@
 
 let width : u32 = 128u;
 
-[[group(0), binding(0)]] var tex : texture_depth_2d;
+@group(0) @binding(0) var tex : texture_depth_2d;
 
-[[group(0), binding(1)]] var<storage, read_write> result : Result;
+@group(0) @binding(1) var<storage, read_write> result : Result;
 
-[[stage(compute), workgroup_size(1)]]
-fn main([[builtin(global_invocation_id)]] GlobalInvocationId : vec3<u32>) {
+@stage(compute) @workgroup_size(1)
+fn main(@builtin(global_invocation_id) GlobalInvocationId : vec3<u32>) {
   result.values[((GlobalInvocationId.y * width) + GlobalInvocationId.x)] = textureLoad(tex, vec2<i32>(i32(GlobalInvocationId.x), i32(GlobalInvocationId.y)), 0);
 }
diff --git a/test/bug/tint/870.spvasm.expected.wgsl b/test/bug/tint/870.spvasm.expected.wgsl
index 73a04d4..4af74ac 100644
--- a/test/bug/tint/870.spvasm.expected.wgsl
+++ b/test/bug/tint/870.spvasm.expected.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(4)]] array<i32, 6u>;
+type Arr = @stride(4) array<i32, 6u>;
 
 struct sspp962805860buildInformationS {
   footprint : vec4<f32>;
@@ -11,7 +11,7 @@
   passthru : sspp962805860buildInformationS;
 }
 
-[[group(0), binding(2)]] var<storage, read> sspp962805860buildInformation : x_B4_BuildInformation;
+@group(0) @binding(2) var<storage, read> sspp962805860buildInformation : x_B4_BuildInformation;
 
 fn main_1() {
   var orientation : array<i32, 6u>;
@@ -25,7 +25,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/bug/tint/913.wgsl b/test/bug/tint/913.wgsl
index 2df489f..8a49ced 100644
--- a/test/bug/tint/913.wgsl
+++ b/test/bug/tint/913.wgsl
@@ -8,16 +8,16 @@
  struct OutputBuf {
     result : array<u32>;
 };
-[[group(0), binding(0)]] var src : texture_2d<f32>;
-[[group(0), binding(1)]] var dst : texture_2d<f32>;
-[[group(0), binding(2)]] var<storage, read_write> output : OutputBuf;
-[[group(0), binding(3)]] var<uniform> uniforms : Uniforms;
+@group(0) @binding(0) var src : texture_2d<f32>;
+@group(0) @binding(1) var dst : texture_2d<f32>;
+@group(0) @binding(2) var<storage, read_write> output : OutputBuf;
+@group(0) @binding(3) var<uniform> uniforms : Uniforms;
 fn aboutEqual(value : f32, expect : f32) -> bool {
     // The value diff should be smaller than the hard coded tolerance.
     return abs(value - expect) < 0.001;
 }
-[[stage(compute), workgroup_size(1, 1, 1)]]
-fn main([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
+@stage(compute) @workgroup_size(1, 1, 1)
+fn main(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
     let srcSize : vec2<i32> = textureDimensions(src);
     let dstSize : vec2<i32> = textureDimensions(dst);
     let dstTexCoord : vec2<u32> = vec2<u32>(GlobalInvocationID.xy);
@@ -67,4 +67,4 @@
     } else {
         output.result[outputIndex] = 0u;
     }
-}
\ No newline at end of file
+}
diff --git a/test/bug/tint/913.wgsl.expected.wgsl b/test/bug/tint/913.wgsl.expected.wgsl
index 322d0b1..9c30250 100644
--- a/test/bug/tint/913.wgsl.expected.wgsl
+++ b/test/bug/tint/913.wgsl.expected.wgsl
@@ -10,20 +10,20 @@
   result : array<u32>;
 }
 
-[[group(0), binding(0)]] var src : texture_2d<f32>;
+@group(0) @binding(0) var src : texture_2d<f32>;
 
-[[group(0), binding(1)]] var dst : texture_2d<f32>;
+@group(0) @binding(1) var dst : texture_2d<f32>;
 
-[[group(0), binding(2)]] var<storage, read_write> output : OutputBuf;
+@group(0) @binding(2) var<storage, read_write> output : OutputBuf;
 
-[[group(0), binding(3)]] var<uniform> uniforms : Uniforms;
+@group(0) @binding(3) var<uniform> uniforms : Uniforms;
 
 fn aboutEqual(value : f32, expect : f32) -> bool {
   return (abs((value - expect)) < 0.001);
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
-fn main([[builtin(global_invocation_id)]] GlobalInvocationID : vec3<u32>) {
+@stage(compute) @workgroup_size(1, 1, 1)
+fn main(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
   let srcSize : vec2<i32> = textureDimensions(src);
   let dstSize : vec2<i32> = textureDimensions(dst);
   let dstTexCoord : vec2<u32> = vec2<u32>(GlobalInvocationID.xy);
diff --git a/test/bug/tint/914.wgsl b/test/bug/tint/914.wgsl
index 372e0d1..655c3ab 100644
--- a/test/bug/tint/914.wgsl
+++ b/test/bug/tint/914.wgsl
@@ -7,10 +7,10 @@
     numbers: array<f32>;
 };
 
-[[group(0), binding(0)]] var<storage, read> firstMatrix : Matrix;
-[[group(0), binding(1)]] var<storage, read> secondMatrix : Matrix;
-[[group(0), binding(2)]] var<storage, write> resultMatrix : Matrix;
-[[group(0), binding(3)]] var<uniform> uniforms : Uniforms;
+@group(0) @binding(0) var<storage, read> firstMatrix : Matrix;
+@group(0) @binding(1) var<storage, read> secondMatrix : Matrix;
+@group(0) @binding(2) var<storage, write> resultMatrix : Matrix;
+@group(0) @binding(3) var<uniform> uniforms : Uniforms;
 
 fn mm_readA(row : u32, col : u32) -> f32  {
     if (row < uniforms.dimAOuter && col < uniforms.dimInner)
@@ -45,9 +45,9 @@
 let TileInner : u32 = 64u;
 var<workgroup> mm_Asub : array<array<f32, 64>, 64>;
 var<workgroup> mm_Bsub : array<array<f32, 64>, 64>;
-[[stage(compute), workgroup_size(16, 16, 1)]]
-fn main([[builtin(local_invocation_id)]] local_id : vec3<u32>,
-        [[builtin(global_invocation_id)]] global_id  : vec3<u32>) {
+@stage(compute) @workgroup_size(16, 16, 1)
+fn main(@builtin(local_invocation_id) local_id : vec3<u32>,
+        @builtin(global_invocation_id) global_id  : vec3<u32>) {
     let tileRow : u32 = local_id.y * RowPerThread;
     let tileCol : u32 = local_id.x * ColPerThread;
 
@@ -120,4 +120,4 @@
                     acc[index]);
     }
     }
-}
\ No newline at end of file
+}
diff --git a/test/bug/tint/914.wgsl.expected.wgsl b/test/bug/tint/914.wgsl.expected.wgsl
index bfa7c61..7d88d77 100644
--- a/test/bug/tint/914.wgsl.expected.wgsl
+++ b/test/bug/tint/914.wgsl.expected.wgsl
@@ -8,13 +8,13 @@
   numbers : array<f32>;
 }
 
-[[group(0), binding(0)]] var<storage, read> firstMatrix : Matrix;
+@group(0) @binding(0) var<storage, read> firstMatrix : Matrix;
 
-[[group(0), binding(1)]] var<storage, read> secondMatrix : Matrix;
+@group(0) @binding(1) var<storage, read> secondMatrix : Matrix;
 
-[[group(0), binding(2)]] var<storage, write> resultMatrix : Matrix;
+@group(0) @binding(2) var<storage, write> resultMatrix : Matrix;
 
-[[group(0), binding(3)]] var<uniform> uniforms : Uniforms;
+@group(0) @binding(3) var<uniform> uniforms : Uniforms;
 
 fn mm_readA(row : u32, col : u32) -> f32 {
   if (((row < uniforms.dimAOuter) && (col < uniforms.dimInner))) {
@@ -53,8 +53,8 @@
 
 var<workgroup> mm_Bsub : array<array<f32, 64>, 64>;
 
-[[stage(compute), workgroup_size(16, 16, 1)]]
-fn main([[builtin(local_invocation_id)]] local_id : vec3<u32>, [[builtin(global_invocation_id)]] global_id : vec3<u32>) {
+@stage(compute) @workgroup_size(16, 16, 1)
+fn main(@builtin(local_invocation_id) local_id : vec3<u32>, @builtin(global_invocation_id) global_id : vec3<u32>) {
   let tileRow : u32 = (local_id.y * RowPerThread);
   let tileCol : u32 = (local_id.x * ColPerThread);
   let globalRow : u32 = (global_id.y * RowPerThread);
diff --git a/test/bug/tint/922.wgsl b/test/bug/tint/922.wgsl
index 0d334f2..450aba1 100644
--- a/test/bug/tint/922.wgsl
+++ b/test/bug/tint/922.wgsl
@@ -21,25 +21,25 @@
 };
 
 struct ub_MaterialParams {
-    u_TexMtx: [[stride(32)]] array<Mat4x2_,1>;
+    u_TexMtx: @stride(32) array<Mat4x2_,1>;
     u_Misc0_: vec4<f32>;
 };
 
 struct ub_PacketParams {
-    u_PosMtx: [[stride(48)]] array<Mat4x3_,32>;
+    u_PosMtx: @stride(48) array<Mat4x3_,32>;
 };
 
 struct VertexOutput {
-    [[location(0)]] v_Color: vec4<f32>;
-    [[location(1)]] v_TexCoord: vec2<f32>;
-    [[builtin(position)]] member: vec4<f32>;
+    @location(0) v_Color: vec4<f32>;
+    @location(1) v_TexCoord: vec2<f32>;
+    @builtin(position) member: vec4<f32>;
 };
 
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<uniform> global: ub_SceneParams;
-[[group(0), binding(1)]]
+@group(0) @binding(1)
 var<uniform> global1: ub_MaterialParams;
-[[group(0), binding(2)]]
+@group(0) @binding(2)
 var<uniform> global2: ub_PacketParams;
 var<private> a_Position1: vec3<f32>;
 var<private> a_UV1: vec2<f32>;
@@ -283,8 +283,8 @@
     }
 }
 
-[[stage(vertex)]]
-fn main([[location(0)]] a_Position: vec3<f32>, [[location(1)]] a_UV: vec2<f32>, [[location(2)]] a_Color: vec4<f32>, [[location(3)]] a_Normal: vec3<f32>, [[location(4)]] a_PosMtxIdx: f32) -> VertexOutput {
+@stage(vertex)
+fn main(@location(0) a_Position: vec3<f32>, @location(1) a_UV: vec2<f32>, @location(2) a_Color: vec4<f32>, @location(3) a_Normal: vec3<f32>, @location(4) a_PosMtxIdx: f32) -> VertexOutput {
     a_Position1 = a_Position;
     a_UV1 = a_UV;
     a_Color1 = a_Color;
diff --git a/test/bug/tint/922.wgsl.expected.wgsl b/test/bug/tint/922.wgsl.expected.wgsl
index 82929da..ac8b48c 100644
--- a/test/bug/tint/922.wgsl.expected.wgsl
+++ b/test/bug/tint/922.wgsl.expected.wgsl
@@ -21,28 +21,28 @@
 }
 
 struct ub_MaterialParams {
-  u_TexMtx : [[stride(32)]] array<Mat4x2_, 1>;
+  u_TexMtx : @stride(32) array<Mat4x2_, 1>;
   u_Misc0_ : vec4<f32>;
 }
 
 struct ub_PacketParams {
-  u_PosMtx : [[stride(48)]] array<Mat4x3_, 32>;
+  u_PosMtx : @stride(48) array<Mat4x3_, 32>;
 }
 
 struct VertexOutput {
-  [[location(0)]]
+  @location(0)
   v_Color : vec4<f32>;
-  [[location(1)]]
+  @location(1)
   v_TexCoord : vec2<f32>;
-  [[builtin(position)]]
+  @builtin(position)
   member : vec4<f32>;
 }
 
-[[group(0), binding(0)]] var<uniform> global : ub_SceneParams;
+@group(0) @binding(0) var<uniform> global : ub_SceneParams;
 
-[[group(0), binding(1)]] var<uniform> global1 : ub_MaterialParams;
+@group(0) @binding(1) var<uniform> global1 : ub_MaterialParams;
 
-[[group(0), binding(2)]] var<uniform> global2 : ub_PacketParams;
+@group(0) @binding(2) var<uniform> global2 : ub_PacketParams;
 
 var<private> a_Position1 : vec3<f32>;
 
@@ -279,8 +279,8 @@
   }
 }
 
-[[stage(vertex)]]
-fn main([[location(0)]] a_Position : vec3<f32>, [[location(1)]] a_UV : vec2<f32>, [[location(2)]] a_Color : vec4<f32>, [[location(3)]] a_Normal : vec3<f32>, [[location(4)]] a_PosMtxIdx : f32) -> VertexOutput {
+@stage(vertex)
+fn main(@location(0) a_Position : vec3<f32>, @location(1) a_UV : vec2<f32>, @location(2) a_Color : vec4<f32>, @location(3) a_Normal : vec3<f32>, @location(4) a_PosMtxIdx : f32) -> VertexOutput {
   a_Position1 = a_Position;
   a_UV1 = a_UV;
   a_Color1 = a_Color;
diff --git a/test/bug/tint/926.wgsl b/test/bug/tint/926.wgsl
index b308f5a..652d196 100644
--- a/test/bug/tint/926.wgsl
+++ b/test/bug/tint/926.wgsl
@@ -1,12 +1,12 @@
  struct DrawIndirectArgs {
   vertexCount : atomic<u32>;
 };
-[[group(0), binding(5)]] var<storage, read_write> drawOut : DrawIndirectArgs;
+@group(0) @binding(5) var<storage, read_write> drawOut : DrawIndirectArgs;
 
 var<private> cubeVerts : u32 = 0u;
 
-[[stage(compute), workgroup_size(1)]]
-fn computeMain([[builtin(global_invocation_id)]] global_id : vec3<u32>) {
+@stage(compute) @workgroup_size(1)
+fn computeMain(@builtin(global_invocation_id) global_id : vec3<u32>) {
   // Increment cubeVerts based on some criteria...
 
   // This fails SPIR-V validation
diff --git a/test/bug/tint/926.wgsl.expected.wgsl b/test/bug/tint/926.wgsl.expected.wgsl
index 978979b..6af7afb 100644
--- a/test/bug/tint/926.wgsl.expected.wgsl
+++ b/test/bug/tint/926.wgsl.expected.wgsl
@@ -2,11 +2,11 @@
   vertexCount : atomic<u32>;
 }
 
-[[group(0), binding(5)]] var<storage, read_write> drawOut : DrawIndirectArgs;
+@group(0) @binding(5) var<storage, read_write> drawOut : DrawIndirectArgs;
 
 var<private> cubeVerts : u32 = 0u;
 
-[[stage(compute), workgroup_size(1)]]
-fn computeMain([[builtin(global_invocation_id)]] global_id : vec3<u32>) {
+@stage(compute) @workgroup_size(1)
+fn computeMain(@builtin(global_invocation_id) global_id : vec3<u32>) {
   let firstVertex : u32 = atomicAdd(&(drawOut.vertexCount), cubeVerts);
 }
diff --git a/test/bug/tint/942.wgsl b/test/bug/tint/942.wgsl
index eb2ae53..273dc53 100644
--- a/test/bug/tint/942.wgsl
+++ b/test/bug/tint/942.wgsl
@@ -3,15 +3,15 @@
   blockDim : u32;
 };
 
-[[group(0), binding(0)]] var samp : sampler;
-[[group(0), binding(1)]] var<uniform> params : Params;
-[[group(1), binding(1)]] var inputTex : texture_2d<f32>;
-[[group(1), binding(2)]] var outputTex : texture_storage_2d<rgba8unorm, write>;
+@group(0) @binding(0) var samp : sampler;
+@group(0) @binding(1) var<uniform> params : Params;
+@group(1) @binding(1) var inputTex : texture_2d<f32>;
+@group(1) @binding(2) var outputTex : texture_storage_2d<rgba8unorm, write>;
 
  struct Flip {
   value : u32;
 };
-[[group(1), binding(3)]] var<uniform> flip : Flip;
+@group(1) @binding(3) var<uniform> flip : Flip;
 
 // This shader blurs the input texture in one direction, depending on whether
 // |flip.value| is 0 or 1.
@@ -29,10 +29,10 @@
 
 var<workgroup> tile : array<array<vec3<f32>, 256>, 4>;
 
-[[stage(compute), workgroup_size(64, 1, 1)]]
+@stage(compute) @workgroup_size(64, 1, 1)
 fn main(
-  [[builtin(workgroup_id)]] WorkGroupID : vec3<u32>,
-  [[builtin(local_invocation_id)]] LocalInvocationID : vec3<u32>
+  @builtin(workgroup_id) WorkGroupID : vec3<u32>,
+  @builtin(local_invocation_id) LocalInvocationID : vec3<u32>
 ) {
   let filterOffset : u32 = (params.filterDim - 1u) / 2u;
   let dims : vec2<i32> = textureDimensions(inputTex, 0);
diff --git a/test/bug/tint/942.wgsl.expected.wgsl b/test/bug/tint/942.wgsl.expected.wgsl
index 827326f..5fb7d1b 100644
--- a/test/bug/tint/942.wgsl.expected.wgsl
+++ b/test/bug/tint/942.wgsl.expected.wgsl
@@ -3,24 +3,24 @@
   blockDim : u32;
 }
 
-[[group(0), binding(0)]] var samp : sampler;
+@group(0) @binding(0) var samp : sampler;
 
-[[group(0), binding(1)]] var<uniform> params : Params;
+@group(0) @binding(1) var<uniform> params : Params;
 
-[[group(1), binding(1)]] var inputTex : texture_2d<f32>;
+@group(1) @binding(1) var inputTex : texture_2d<f32>;
 
-[[group(1), binding(2)]] var outputTex : texture_storage_2d<rgba8unorm, write>;
+@group(1) @binding(2) var outputTex : texture_storage_2d<rgba8unorm, write>;
 
 struct Flip {
   value : u32;
 }
 
-[[group(1), binding(3)]] var<uniform> flip : Flip;
+@group(1) @binding(3) var<uniform> flip : Flip;
 
 var<workgroup> tile : array<array<vec3<f32>, 256>, 4>;
 
-[[stage(compute), workgroup_size(64, 1, 1)]]
-fn main([[builtin(workgroup_id)]] WorkGroupID : vec3<u32>, [[builtin(local_invocation_id)]] LocalInvocationID : vec3<u32>) {
+@stage(compute) @workgroup_size(64, 1, 1)
+fn main(@builtin(workgroup_id) WorkGroupID : vec3<u32>, @builtin(local_invocation_id) LocalInvocationID : vec3<u32>) {
   let filterOffset : u32 = ((params.filterDim - 1u) / 2u);
   let dims : vec2<i32> = textureDimensions(inputTex, 0);
   let baseIndex = (vec2<i32>(((WorkGroupID.xy * vec2<u32>(params.blockDim, 4u)) + (LocalInvocationID.xy * vec2<u32>(4u, 1u)))) - vec2<i32>(i32(filterOffset), 0));
diff --git a/test/bug/tint/943.spvasm.expected.wgsl b/test/bug/tint/943.spvasm.expected.wgsl
index 04699dd..ea2d6ad 100644
--- a/test/bug/tint/943.spvasm.expected.wgsl
+++ b/test/bug/tint/943.spvasm.expected.wgsl
@@ -1,28 +1,28 @@
 struct Uniforms {
   NAN : f32;
-  [[size(12)]]
+  @size(12)
   padding : u32;
   aShape : vec3<i32>;
-  [[size(4)]]
+  @size(4)
   padding_1 : u32;
   bShape : vec3<i32>;
-  [[size(4)]]
+  @size(4)
   padding_2 : u32;
   outShape : vec3<i32>;
-  [[size(4)]]
+  @size(4)
   padding_3 : u32;
   outShapeStrides : vec2<i32>;
 }
 
-type RTArr = [[stride(4)]] array<f32>;
+type RTArr = @stride(4) array<f32>;
 
-type RTArr_1 = [[stride(4)]] array<f32>;
+type RTArr_1 = @stride(4) array<f32>;
 
 struct ssbOut {
   result : RTArr_1;
 }
 
-type RTArr_2 = [[stride(4)]] array<f32>;
+type RTArr_2 = @stride(4) array<f32>;
 
 struct ssbA {
   A : RTArr_1;
@@ -34,13 +34,13 @@
 
 var<private> dimAOuter_1 : i32;
 
-[[group(0), binding(3)]] var<uniform> x_48 : Uniforms;
+@group(0) @binding(3) var<uniform> x_48 : Uniforms;
 
 var<private> dimInner_1 : i32;
 
 var<private> dimBOuter_1 : i32;
 
-[[group(0), binding(0)]] var<storage, read_write> x_54 : ssbOut;
+@group(0) @binding(0) var<storage, read_write> x_54 : ssbOut;
 
 var<private> gl_LocalInvocationID : vec3<u32>;
 
@@ -50,11 +50,11 @@
 
 var<workgroup> mm_Bsub : array<array<f32, 1u>, 64u>;
 
-[[group(0), binding(1)]] var<storage, read> x_165 : ssbA;
+@group(0) @binding(1) var<storage, read> x_165 : ssbA;
 
 var<private> batch : i32;
 
-[[group(0), binding(2)]] var<storage, read> x_185 : ssbB;
+@group(0) @binding(2) var<storage, read> x_185 : ssbB;
 
 fn coordsInBounds_vi2_vi2_(coord : ptr<function, vec2<i32>>, shape : ptr<function, vec2<i32>>) -> bool {
   var x_87 : bool;
@@ -514,8 +514,8 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 64, 1)]]
-fn main([[builtin(local_invocation_id)]] gl_LocalInvocationID_param : vec3<u32>, [[builtin(global_invocation_id)]] gl_GlobalInvocationID_param : vec3<u32>) {
+@stage(compute) @workgroup_size(1, 64, 1)
+fn main(@builtin(local_invocation_id) gl_LocalInvocationID_param : vec3<u32>, @builtin(global_invocation_id) gl_GlobalInvocationID_param : vec3<u32>) {
   gl_LocalInvocationID = gl_LocalInvocationID_param;
   gl_GlobalInvocationID = gl_GlobalInvocationID_param;
   main_1();
diff --git a/test/bug/tint/948.wgsl b/test/bug/tint/948.wgsl
index 99056b4..e07fab9 100644
--- a/test/bug/tint/948.wgsl
+++ b/test/bug/tint/948.wgsl
@@ -1,6 +1,6 @@
 struct LeftOver {
   time : f32;
-  [[size(12)]]
+  @size(12)
   padding : u32;
   worldViewProjection : mat4x4<f32>;
   outputSize : vec2<f32>;
@@ -11,29 +11,29 @@
   colorMul : vec3<f32>;
 };
 
-[[group(2), binding(9)]] var<uniform> x_20 : LeftOver;
+@group(2) @binding(9) var<uniform> x_20 : LeftOver;
 
-[[group(2), binding(3)]] var frameMapTexture : texture_2d<f32>;
+@group(2) @binding(3) var frameMapTexture : texture_2d<f32>;
 
-[[group(2), binding(2)]] var frameMapSampler : sampler;
+@group(2) @binding(2) var frameMapSampler : sampler;
 
 var<private> tUV : vec2<f32>;
 
-[[group(2), binding(5)]] var tileMapsTexture0 : texture_2d<f32>;
+@group(2) @binding(5) var tileMapsTexture0 : texture_2d<f32>;
 
-[[group(2), binding(4)]] var tileMapsSampler : sampler;
+@group(2) @binding(4) var tileMapsSampler : sampler;
 
-[[group(2), binding(6)]] var tileMapsTexture1 : texture_2d<f32>;
+@group(2) @binding(6) var tileMapsTexture1 : texture_2d<f32>;
 
-[[group(2), binding(8)]] var animationMapTexture : texture_2d<f32>;
+@group(2) @binding(8) var animationMapTexture : texture_2d<f32>;
 
-[[group(2), binding(7)]] var animationMapSampler : sampler;
+@group(2) @binding(7) var animationMapSampler : sampler;
 
 var<private> mt : f32;
 
-[[group(2), binding(1)]] var spriteSheetTexture : texture_2d<f32>;
+@group(2) @binding(1) var spriteSheetTexture : texture_2d<f32>;
 
-[[group(2), binding(0)]] var spriteSheetSampler : sampler;
+@group(2) @binding(0) var spriteSheetSampler : sampler;
 
 var<private> glFragColor : vec4<f32>;
 
@@ -211,12 +211,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   glFragColor_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[location(2)]] tUV_param : vec2<f32>, [[location(5)]] tileID_1_param : vec2<f32>, [[location(4)]] levelUnits_param : vec2<f32>, [[location(3)]] stageUnits_1_param : vec2<f32>, [[location(0)]] vPosition_param : vec3<f32>, [[location(1)]] vUV_param : vec2<f32>) -> main_out {
+@stage(fragment)
+fn main(@location(2) tUV_param : vec2<f32>, @location(5) tileID_1_param : vec2<f32>, @location(4) levelUnits_param : vec2<f32>, @location(3) stageUnits_1_param : vec2<f32>, @location(0) vPosition_param : vec3<f32>, @location(1) vUV_param : vec2<f32>) -> main_out {
   tUV = tUV_param;
   tileID_1 = tileID_1_param;
   levelUnits = levelUnits_param;
@@ -225,4 +225,4 @@
   vUV = vUV_param;
   main_1();
   return main_out(glFragColor);
-}
\ No newline at end of file
+}
diff --git a/test/bug/tint/948.wgsl.expected.wgsl b/test/bug/tint/948.wgsl.expected.wgsl
index d6a66db..8a4fc7e 100644
--- a/test/bug/tint/948.wgsl.expected.wgsl
+++ b/test/bug/tint/948.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 struct LeftOver {
   time : f32;
-  [[size(12)]]
+  @size(12)
   padding : u32;
   worldViewProjection : mat4x4<f32>;
   outputSize : vec2<f32>;
@@ -11,29 +11,29 @@
   colorMul : vec3<f32>;
 }
 
-[[group(2), binding(9)]] var<uniform> x_20 : LeftOver;
+@group(2) @binding(9) var<uniform> x_20 : LeftOver;
 
-[[group(2), binding(3)]] var frameMapTexture : texture_2d<f32>;
+@group(2) @binding(3) var frameMapTexture : texture_2d<f32>;
 
-[[group(2), binding(2)]] var frameMapSampler : sampler;
+@group(2) @binding(2) var frameMapSampler : sampler;
 
 var<private> tUV : vec2<f32>;
 
-[[group(2), binding(5)]] var tileMapsTexture0 : texture_2d<f32>;
+@group(2) @binding(5) var tileMapsTexture0 : texture_2d<f32>;
 
-[[group(2), binding(4)]] var tileMapsSampler : sampler;
+@group(2) @binding(4) var tileMapsSampler : sampler;
 
-[[group(2), binding(6)]] var tileMapsTexture1 : texture_2d<f32>;
+@group(2) @binding(6) var tileMapsTexture1 : texture_2d<f32>;
 
-[[group(2), binding(8)]] var animationMapTexture : texture_2d<f32>;
+@group(2) @binding(8) var animationMapTexture : texture_2d<f32>;
 
-[[group(2), binding(7)]] var animationMapSampler : sampler;
+@group(2) @binding(7) var animationMapSampler : sampler;
 
 var<private> mt : f32;
 
-[[group(2), binding(1)]] var spriteSheetTexture : texture_2d<f32>;
+@group(2) @binding(1) var spriteSheetTexture : texture_2d<f32>;
 
-[[group(2), binding(0)]] var spriteSheetSampler : sampler;
+@group(2) @binding(0) var spriteSheetSampler : sampler;
 
 var<private> glFragColor : vec4<f32>;
 
@@ -211,12 +211,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   glFragColor_1 : vec4<f32>;
 }
 
-[[stage(fragment)]]
-fn main([[location(2)]] tUV_param : vec2<f32>, [[location(5)]] tileID_1_param : vec2<f32>, [[location(4)]] levelUnits_param : vec2<f32>, [[location(3)]] stageUnits_1_param : vec2<f32>, [[location(0)]] vPosition_param : vec3<f32>, [[location(1)]] vUV_param : vec2<f32>) -> main_out {
+@stage(fragment)
+fn main(@location(2) tUV_param : vec2<f32>, @location(5) tileID_1_param : vec2<f32>, @location(4) levelUnits_param : vec2<f32>, @location(3) stageUnits_1_param : vec2<f32>, @location(0) vPosition_param : vec3<f32>, @location(1) vUV_param : vec2<f32>) -> main_out {
   tUV = tUV_param;
   tileID_1 = tileID_1_param;
   levelUnits = levelUnits_param;
diff --git a/test/bug/tint/949.wgsl b/test/bug/tint/949.wgsl
index 2d52b91..86ca7fc 100644
--- a/test/bug/tint/949.wgsl
+++ b/test/bug/tint/949.wgsl
@@ -8,12 +8,12 @@
   u_World : mat4x4<f32>;
   u_ViewProjection : mat4x4<f32>;
   u_bumpStrength : f32;
-  [[size(12)]]
+  @size(12)
   padding : u32;
   u_cameraPosition : vec3<f32>;
   u_parallaxScale : f32;
   textureInfoName : f32;
-  [[size(4)]]
+  @size(4)
   padding_1 : u32;
   tangentSpaceParameter0 : vec2<f32>;
 };
@@ -23,7 +23,7 @@
   vLightDiffuse : vec4<f32>;
   vLightSpecular : vec4<f32>;
   vLightGround : vec3<f32>;
-  [[size(4)]]
+  @size(4)
   padding_2 : u32;
   shadowsInfo : vec4<f32>;
   depthValues : vec2<f32>;
@@ -33,13 +33,13 @@
 
 var<private> u_Color : vec3<f32>;
 
-[[group(2), binding(1)]] var TextureSamplerTexture : texture_2d<f32>;
+@group(2) @binding(1) var TextureSamplerTexture : texture_2d<f32>;
 
-[[group(2), binding(0)]] var TextureSamplerSampler : sampler;
+@group(2) @binding(0) var TextureSamplerSampler : sampler;
 
 var<private> vMainuv : vec2<f32>;
 
-[[group(2), binding(6)]] var<uniform> x_269 : LeftOver;
+@group(2) @binding(6) var<uniform> x_269 : LeftOver;
 
 var<private> v_output1 : vec4<f32>;
 
@@ -49,17 +49,17 @@
 
 var<private> v_output2 : vec4<f32>;
 
-[[group(2), binding(3)]] var TextureSampler1Texture : texture_2d<f32>;
+@group(2) @binding(3) var TextureSampler1Texture : texture_2d<f32>;
 
-[[group(2), binding(2)]] var TextureSampler1Sampler : sampler;
+@group(2) @binding(2) var TextureSampler1Sampler : sampler;
 
-[[group(0), binding(5)]] var<uniform> light0 : Light0;
+@group(0) @binding(5) var<uniform> light0 : Light0;
 
 var<private> glFragColor : vec4<f32>;
 
-[[group(2), binding(4)]] var bumpSamplerSampler : sampler;
+@group(2) @binding(4) var bumpSamplerSampler : sampler;
 
-[[group(2), binding(5)]] var bumpSamplerTexture : texture_2d<f32>;
+@group(2) @binding(5) var bumpSamplerTexture : texture_2d<f32>;
 
 fn cotangent_frame_vf3_vf3_vf2_vf2_(normal_1 : ptr<function, vec3<f32>>, p : ptr<function, vec3<f32>>, uv : ptr<function, vec2<f32>>, tangentSpaceParams : ptr<function, vec2<f32>>) -> mat3x3<f32> {
   var dp1 : vec3<f32>;
@@ -437,12 +437,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   glFragColor_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[location(1)]] vMainuv_param : vec2<f32>, [[location(0)]] v_output1_param : vec4<f32>, [[builtin(front_facing)]] gl_FrontFacing_param : bool, [[location(3)]] v_uv_param : vec2<f32>, [[location(2)]] v_output2_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@location(1) vMainuv_param : vec2<f32>, @location(0) v_output1_param : vec4<f32>, @builtin(front_facing) gl_FrontFacing_param : bool, @location(3) v_uv_param : vec2<f32>, @location(2) v_output2_param : vec4<f32>) -> main_out {
   vMainuv = vMainuv_param;
   v_output1 = v_output1_param;
   gl_FrontFacing = gl_FrontFacing_param;
@@ -450,4 +450,4 @@
   v_output2 = v_output2_param;
   main_1();
   return main_out(glFragColor);
-}
\ No newline at end of file
+}
diff --git a/test/bug/tint/949.wgsl.expected.wgsl b/test/bug/tint/949.wgsl.expected.wgsl
index 8bbc807..e374119 100644
--- a/test/bug/tint/949.wgsl.expected.wgsl
+++ b/test/bug/tint/949.wgsl.expected.wgsl
@@ -7,12 +7,12 @@
   u_World : mat4x4<f32>;
   u_ViewProjection : mat4x4<f32>;
   u_bumpStrength : f32;
-  [[size(12)]]
+  @size(12)
   padding : u32;
   u_cameraPosition : vec3<f32>;
   u_parallaxScale : f32;
   textureInfoName : f32;
-  [[size(4)]]
+  @size(4)
   padding_1 : u32;
   tangentSpaceParameter0 : vec2<f32>;
 }
@@ -22,7 +22,7 @@
   vLightDiffuse : vec4<f32>;
   vLightSpecular : vec4<f32>;
   vLightGround : vec3<f32>;
-  [[size(4)]]
+  @size(4)
   padding_2 : u32;
   shadowsInfo : vec4<f32>;
   depthValues : vec2<f32>;
@@ -32,13 +32,13 @@
 
 var<private> u_Color : vec3<f32>;
 
-[[group(2), binding(1)]] var TextureSamplerTexture : texture_2d<f32>;
+@group(2) @binding(1) var TextureSamplerTexture : texture_2d<f32>;
 
-[[group(2), binding(0)]] var TextureSamplerSampler : sampler;
+@group(2) @binding(0) var TextureSamplerSampler : sampler;
 
 var<private> vMainuv : vec2<f32>;
 
-[[group(2), binding(6)]] var<uniform> x_269 : LeftOver;
+@group(2) @binding(6) var<uniform> x_269 : LeftOver;
 
 var<private> v_output1 : vec4<f32>;
 
@@ -48,17 +48,17 @@
 
 var<private> v_output2 : vec4<f32>;
 
-[[group(2), binding(3)]] var TextureSampler1Texture : texture_2d<f32>;
+@group(2) @binding(3) var TextureSampler1Texture : texture_2d<f32>;
 
-[[group(2), binding(2)]] var TextureSampler1Sampler : sampler;
+@group(2) @binding(2) var TextureSampler1Sampler : sampler;
 
-[[group(0), binding(5)]] var<uniform> light0 : Light0;
+@group(0) @binding(5) var<uniform> light0 : Light0;
 
 var<private> glFragColor : vec4<f32>;
 
-[[group(2), binding(4)]] var bumpSamplerSampler : sampler;
+@group(2) @binding(4) var bumpSamplerSampler : sampler;
 
-[[group(2), binding(5)]] var bumpSamplerTexture : texture_2d<f32>;
+@group(2) @binding(5) var bumpSamplerTexture : texture_2d<f32>;
 
 fn cotangent_frame_vf3_vf3_vf2_vf2_(normal_1 : ptr<function, vec3<f32>>, p : ptr<function, vec3<f32>>, uv : ptr<function, vec2<f32>>, tangentSpaceParams : ptr<function, vec2<f32>>) -> mat3x3<f32> {
   var dp1 : vec3<f32>;
@@ -436,12 +436,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   glFragColor_1 : vec4<f32>;
 }
 
-[[stage(fragment)]]
-fn main([[location(1)]] vMainuv_param : vec2<f32>, [[location(0)]] v_output1_param : vec4<f32>, [[builtin(front_facing)]] gl_FrontFacing_param : bool, [[location(3)]] v_uv_param : vec2<f32>, [[location(2)]] v_output2_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@location(1) vMainuv_param : vec2<f32>, @location(0) v_output1_param : vec4<f32>, @builtin(front_facing) gl_FrontFacing_param : bool, @location(3) v_uv_param : vec2<f32>, @location(2) v_output2_param : vec4<f32>) -> main_out {
   vMainuv = vMainuv_param;
   v_output1 = v_output1_param;
   gl_FrontFacing = gl_FrontFacing_param;
diff --git a/test/bug/tint/951.spvasm.expected.wgsl b/test/bug/tint/951.spvasm.expected.wgsl
index f80adea..63fd79e 100644
--- a/test/bug/tint/951.spvasm.expected.wgsl
+++ b/test/bug/tint/951.spvasm.expected.wgsl
@@ -1,6 +1,6 @@
-type RTArr = [[stride(4)]] array<f32>;
+type RTArr = @stride(4) array<f32>;
 
-type RTArr_1 = [[stride(4)]] array<f32>;
+type RTArr_1 = @stride(4) array<f32>;
 
 struct ssbOut {
   result : RTArr_1;
@@ -18,13 +18,13 @@
   size : i32;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> x_16 : ssbOut;
+@group(0) @binding(0) var<storage, read_write> x_16 : ssbOut;
 
-[[group(0), binding(1)]] var<storage, read> x_20 : ssbA;
+@group(0) @binding(1) var<storage, read> x_20 : ssbA;
 
 var<private> gl_GlobalInvocationID : vec3<u32>;
 
-[[group(0), binding(2)]] var<uniform> x_24 : Uniforms;
+@group(0) @binding(2) var<uniform> x_24 : Uniforms;
 
 fn getAAtOutCoords_() -> f32 {
   let x_42 : u32 = gl_GlobalInvocationID.x;
@@ -72,8 +72,8 @@
   return;
 }
 
-[[stage(compute), workgroup_size(128, 1, 1)]]
-fn main([[builtin(global_invocation_id)]] gl_GlobalInvocationID_param : vec3<u32>) {
+@stage(compute) @workgroup_size(128, 1, 1)
+fn main(@builtin(global_invocation_id) gl_GlobalInvocationID_param : vec3<u32>) {
   gl_GlobalInvocationID = gl_GlobalInvocationID_param;
   main_1();
 }
diff --git a/test/bug/tint/959.wgsl b/test/bug/tint/959.wgsl
index f8feea2..244775a 100644
--- a/test/bug/tint/959.wgsl
+++ b/test/bug/tint/959.wgsl
@@ -7,58 +7,58 @@
   a : f32;
 };
 
-[[group(0),  binding(0)]] var<storage> b0  : S;
-[[group(1),  binding(0)]] var<storage> b1  : S;
-[[group(2),  binding(0)]] var<storage> b2  : S;
-[[group(3),  binding(0)]] var<storage> b3  : S;
-[[group(4),  binding(0)]] var<storage> b4  : S;
-[[group(5),  binding(0)]] var<storage> b5  : S;
-[[group(6),  binding(0)]] var<storage> b6  : S;
-[[group(7),  binding(0)]] var<storage> b7  : S;
-[[group(9),  binding(1)]] var<uniform> b8  : S;
-[[group(8),  binding(1)]] var<uniform> b9  : S;
-[[group(10), binding(1)]] var<uniform> b10 : S;
-[[group(11), binding(1)]] var<uniform> b11 : S;
-[[group(12), binding(1)]] var<uniform> b12 : S;
-[[group(13), binding(1)]] var<uniform> b13 : S;
-[[group(14), binding(1)]] var<uniform> b14 : S;
-[[group(15), binding(1)]] var<uniform> b15 : S;
+@group(0)  @binding(0) var<storage> b0  : S;
+@group(1)  @binding(0) var<storage> b1  : S;
+@group(2)  @binding(0) var<storage> b2  : S;
+@group(3)  @binding(0) var<storage> b3  : S;
+@group(4)  @binding(0) var<storage> b4  : S;
+@group(5)  @binding(0) var<storage> b5  : S;
+@group(6)  @binding(0) var<storage> b6  : S;
+@group(7)  @binding(0) var<storage> b7  : S;
+@group(9)  @binding(1) var<uniform> b8  : S;
+@group(8)  @binding(1) var<uniform> b9  : S;
+@group(10) @binding(1) var<uniform> b10 : S;
+@group(11) @binding(1) var<uniform> b11 : S;
+@group(12) @binding(1) var<uniform> b12 : S;
+@group(13) @binding(1) var<uniform> b13 : S;
+@group(14) @binding(1) var<uniform> b14 : S;
+@group(15) @binding(1) var<uniform> b15 : S;
 
-[[group(0),  binding(1)]] var t0  : texture_2d<f32>;
-[[group(1),  binding(1)]] var t1  : texture_2d<f32>;
-[[group(2),  binding(1)]] var t2  : texture_2d<f32>;
-[[group(3),  binding(1)]] var t3  : texture_2d<f32>;
-[[group(4),  binding(1)]] var t4  : texture_2d<f32>;
-[[group(5),  binding(1)]] var t5  : texture_2d<f32>;
-[[group(6),  binding(1)]] var t6  : texture_2d<f32>;
-[[group(7),  binding(1)]] var t7  : texture_2d<f32>;
-[[group(8),  binding(200)]] var t8  : texture_depth_2d;
-[[group(9),  binding(200)]] var t9  : texture_depth_2d;
-[[group(10), binding(200)]] var t10 : texture_depth_2d;
-[[group(11), binding(200)]] var t11 : texture_depth_2d;
-[[group(12), binding(200)]] var t12 : texture_depth_2d;
-[[group(13), binding(200)]] var t13 : texture_depth_2d;
-[[group(14), binding(200)]] var t14 : texture_depth_2d;
-[[group(15), binding(200)]] var t15 : texture_depth_2d;
+@group(0)  @binding(1) var t0  : texture_2d<f32>;
+@group(1)  @binding(1) var t1  : texture_2d<f32>;
+@group(2)  @binding(1) var t2  : texture_2d<f32>;
+@group(3)  @binding(1) var t3  : texture_2d<f32>;
+@group(4)  @binding(1) var t4  : texture_2d<f32>;
+@group(5)  @binding(1) var t5  : texture_2d<f32>;
+@group(6)  @binding(1) var t6  : texture_2d<f32>;
+@group(7)  @binding(1) var t7  : texture_2d<f32>;
+@group(8)  @binding(200) var t8  : texture_depth_2d;
+@group(9)  @binding(200) var t9  : texture_depth_2d;
+@group(10) @binding(200) var t10 : texture_depth_2d;
+@group(11) @binding(200) var t11 : texture_depth_2d;
+@group(12) @binding(200) var t12 : texture_depth_2d;
+@group(13) @binding(200) var t13 : texture_depth_2d;
+@group(14) @binding(200) var t14 : texture_depth_2d;
+@group(15) @binding(200) var t15 : texture_depth_2d;
 
-[[group(0),  binding(200)]] var s0 : sampler;
-[[group(1),  binding(200)]] var s1 : sampler;
-[[group(2),  binding(200)]] var s2 : sampler;
-[[group(3),  binding(200)]] var s3 : sampler;
-[[group(4),  binding(200)]] var s4 : sampler;
-[[group(5),  binding(200)]] var s5 : sampler;
-[[group(6),  binding(200)]] var s6 : sampler;
-[[group(7),  binding(200)]] var s7 : sampler;
-[[group(8),  binding(300)]] var s8 : sampler_comparison;
-[[group(9),  binding(300)]] var s9 : sampler_comparison;
-[[group(10), binding(300)]] var s10 : sampler_comparison;
-[[group(11), binding(300)]] var s11 : sampler_comparison;
-[[group(12), binding(300)]] var s12 : sampler_comparison;
-[[group(13), binding(300)]] var s13 : sampler_comparison;
-[[group(14), binding(300)]] var s14 : sampler_comparison;
-[[group(15), binding(300)]] var s15 : sampler_comparison;
+@group(0)  @binding(200) var s0 : sampler;
+@group(1)  @binding(200) var s1 : sampler;
+@group(2)  @binding(200) var s2 : sampler;
+@group(3)  @binding(200) var s3 : sampler;
+@group(4)  @binding(200) var s4 : sampler;
+@group(5)  @binding(200) var s5 : sampler;
+@group(6)  @binding(200) var s6 : sampler;
+@group(7)  @binding(200) var s7 : sampler;
+@group(8)  @binding(300) var s8 : sampler_comparison;
+@group(9)  @binding(300) var s9 : sampler_comparison;
+@group(10) @binding(300) var s10 : sampler_comparison;
+@group(11) @binding(300) var s11 : sampler_comparison;
+@group(12) @binding(300) var s12 : sampler_comparison;
+@group(13) @binding(300) var s13 : sampler_comparison;
+@group(14) @binding(300) var s14 : sampler_comparison;
+@group(15) @binding(300) var s15 : sampler_comparison;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   _ = b0;
   _ = b1;
diff --git a/test/bug/tint/959.wgsl.expected.wgsl b/test/bug/tint/959.wgsl.expected.wgsl
index 4e4ecf0..7ccfbb9 100644
--- a/test/bug/tint/959.wgsl.expected.wgsl
+++ b/test/bug/tint/959.wgsl.expected.wgsl
@@ -2,103 +2,103 @@
   a : f32;
 }
 
-[[group(0), binding(0)]] var<storage> b0 : S;
+@group(0) @binding(0) var<storage> b0 : S;
 
-[[group(1), binding(0)]] var<storage> b1 : S;
+@group(1) @binding(0) var<storage> b1 : S;
 
-[[group(2), binding(0)]] var<storage> b2 : S;
+@group(2) @binding(0) var<storage> b2 : S;
 
-[[group(3), binding(0)]] var<storage> b3 : S;
+@group(3) @binding(0) var<storage> b3 : S;
 
-[[group(4), binding(0)]] var<storage> b4 : S;
+@group(4) @binding(0) var<storage> b4 : S;
 
-[[group(5), binding(0)]] var<storage> b5 : S;
+@group(5) @binding(0) var<storage> b5 : S;
 
-[[group(6), binding(0)]] var<storage> b6 : S;
+@group(6) @binding(0) var<storage> b6 : S;
 
-[[group(7), binding(0)]] var<storage> b7 : S;
+@group(7) @binding(0) var<storage> b7 : S;
 
-[[group(9), binding(1)]] var<uniform> b8 : S;
+@group(9) @binding(1) var<uniform> b8 : S;
 
-[[group(8), binding(1)]] var<uniform> b9 : S;
+@group(8) @binding(1) var<uniform> b9 : S;
 
-[[group(10), binding(1)]] var<uniform> b10 : S;
+@group(10) @binding(1) var<uniform> b10 : S;
 
-[[group(11), binding(1)]] var<uniform> b11 : S;
+@group(11) @binding(1) var<uniform> b11 : S;
 
-[[group(12), binding(1)]] var<uniform> b12 : S;
+@group(12) @binding(1) var<uniform> b12 : S;
 
-[[group(13), binding(1)]] var<uniform> b13 : S;
+@group(13) @binding(1) var<uniform> b13 : S;
 
-[[group(14), binding(1)]] var<uniform> b14 : S;
+@group(14) @binding(1) var<uniform> b14 : S;
 
-[[group(15), binding(1)]] var<uniform> b15 : S;
+@group(15) @binding(1) var<uniform> b15 : S;
 
-[[group(0), binding(1)]] var t0 : texture_2d<f32>;
+@group(0) @binding(1) var t0 : texture_2d<f32>;
 
-[[group(1), binding(1)]] var t1 : texture_2d<f32>;
+@group(1) @binding(1) var t1 : texture_2d<f32>;
 
-[[group(2), binding(1)]] var t2 : texture_2d<f32>;
+@group(2) @binding(1) var t2 : texture_2d<f32>;
 
-[[group(3), binding(1)]] var t3 : texture_2d<f32>;
+@group(3) @binding(1) var t3 : texture_2d<f32>;
 
-[[group(4), binding(1)]] var t4 : texture_2d<f32>;
+@group(4) @binding(1) var t4 : texture_2d<f32>;
 
-[[group(5), binding(1)]] var t5 : texture_2d<f32>;
+@group(5) @binding(1) var t5 : texture_2d<f32>;
 
-[[group(6), binding(1)]] var t6 : texture_2d<f32>;
+@group(6) @binding(1) var t6 : texture_2d<f32>;
 
-[[group(7), binding(1)]] var t7 : texture_2d<f32>;
+@group(7) @binding(1) var t7 : texture_2d<f32>;
 
-[[group(8), binding(200)]] var t8 : texture_depth_2d;
+@group(8) @binding(200) var t8 : texture_depth_2d;
 
-[[group(9), binding(200)]] var t9 : texture_depth_2d;
+@group(9) @binding(200) var t9 : texture_depth_2d;
 
-[[group(10), binding(200)]] var t10 : texture_depth_2d;
+@group(10) @binding(200) var t10 : texture_depth_2d;
 
-[[group(11), binding(200)]] var t11 : texture_depth_2d;
+@group(11) @binding(200) var t11 : texture_depth_2d;
 
-[[group(12), binding(200)]] var t12 : texture_depth_2d;
+@group(12) @binding(200) var t12 : texture_depth_2d;
 
-[[group(13), binding(200)]] var t13 : texture_depth_2d;
+@group(13) @binding(200) var t13 : texture_depth_2d;
 
-[[group(14), binding(200)]] var t14 : texture_depth_2d;
+@group(14) @binding(200) var t14 : texture_depth_2d;
 
-[[group(15), binding(200)]] var t15 : texture_depth_2d;
+@group(15) @binding(200) var t15 : texture_depth_2d;
 
-[[group(0), binding(200)]] var s0 : sampler;
+@group(0) @binding(200) var s0 : sampler;
 
-[[group(1), binding(200)]] var s1 : sampler;
+@group(1) @binding(200) var s1 : sampler;
 
-[[group(2), binding(200)]] var s2 : sampler;
+@group(2) @binding(200) var s2 : sampler;
 
-[[group(3), binding(200)]] var s3 : sampler;
+@group(3) @binding(200) var s3 : sampler;
 
-[[group(4), binding(200)]] var s4 : sampler;
+@group(4) @binding(200) var s4 : sampler;
 
-[[group(5), binding(200)]] var s5 : sampler;
+@group(5) @binding(200) var s5 : sampler;
 
-[[group(6), binding(200)]] var s6 : sampler;
+@group(6) @binding(200) var s6 : sampler;
 
-[[group(7), binding(200)]] var s7 : sampler;
+@group(7) @binding(200) var s7 : sampler;
 
-[[group(8), binding(300)]] var s8 : sampler_comparison;
+@group(8) @binding(300) var s8 : sampler_comparison;
 
-[[group(9), binding(300)]] var s9 : sampler_comparison;
+@group(9) @binding(300) var s9 : sampler_comparison;
 
-[[group(10), binding(300)]] var s10 : sampler_comparison;
+@group(10) @binding(300) var s10 : sampler_comparison;
 
-[[group(11), binding(300)]] var s11 : sampler_comparison;
+@group(11) @binding(300) var s11 : sampler_comparison;
 
-[[group(12), binding(300)]] var s12 : sampler_comparison;
+@group(12) @binding(300) var s12 : sampler_comparison;
 
-[[group(13), binding(300)]] var s13 : sampler_comparison;
+@group(13) @binding(300) var s13 : sampler_comparison;
 
-[[group(14), binding(300)]] var s14 : sampler_comparison;
+@group(14) @binding(300) var s14 : sampler_comparison;
 
-[[group(15), binding(300)]] var s15 : sampler_comparison;
+@group(15) @binding(300) var s15 : sampler_comparison;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   _ = b0;
   _ = b1;
diff --git a/test/bug/tint/977.spvasm.expected.wgsl b/test/bug/tint/977.spvasm.expected.wgsl
index 69bc7aa..8b5ad53 100644
--- a/test/bug/tint/977.spvasm.expected.wgsl
+++ b/test/bug/tint/977.spvasm.expected.wgsl
@@ -1,12 +1,12 @@
-type RTArr = [[stride(4)]] array<f32>;
+type RTArr = @stride(4) array<f32>;
 
-type RTArr_1 = [[stride(4)]] array<f32>;
+type RTArr_1 = @stride(4) array<f32>;
 
 struct ResultMatrix {
   numbers : RTArr_1;
 }
 
-type RTArr_2 = [[stride(4)]] array<f32>;
+type RTArr_2 = @stride(4) array<f32>;
 
 struct FirstMatrix {
   numbers : RTArr_1;
@@ -24,13 +24,13 @@
 
 var<private> gl_GlobalInvocationID : vec3<u32>;
 
-[[group(0), binding(2)]] var<storage, read_write> resultMatrix : ResultMatrix;
+@group(0) @binding(2) var<storage, read_write> resultMatrix : ResultMatrix;
 
-[[group(0), binding(0)]] var<storage, read> firstMatrix : FirstMatrix;
+@group(0) @binding(0) var<storage, read> firstMatrix : FirstMatrix;
 
-[[group(0), binding(1)]] var<storage, read> secondMatrix : SecondMatrix;
+@group(0) @binding(1) var<storage, read> secondMatrix : SecondMatrix;
 
-[[group(0), binding(3)]] var<uniform> x_46 : Uniforms;
+@group(0) @binding(3) var<uniform> x_46 : Uniforms;
 
 fn binaryOperation_f1_f1_(a : ptr<function, f32>, b : ptr<function, f32>) -> f32 {
   var x_26 : f32;
@@ -69,8 +69,8 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
-fn main([[builtin(global_invocation_id)]] gl_GlobalInvocationID_param : vec3<u32>) {
+@stage(compute) @workgroup_size(1, 1, 1)
+fn main(@builtin(global_invocation_id) gl_GlobalInvocationID_param : vec3<u32>) {
   gl_GlobalInvocationID = gl_GlobalInvocationID_param;
   main_1();
 }
diff --git a/test/bug/tint/978.wgsl b/test/bug/tint/978.wgsl
index 278655e..c4b25a1 100644
--- a/test/bug/tint/978.wgsl
+++ b/test/bug/tint/978.wgsl
@@ -1,20 +1,20 @@
 
 struct FragmentInput
 {
-	[[ location( 2 ) ]] vUv : vec2<f32>;
+	@location(2) vUv : vec2<f32>;
 };
 
 struct FragmentOutput
 {
-	[[ location( 0 ) ]] color : vec4<f32>;
+	@location(0) color : vec4<f32>;
 };
 
-[[ binding( 5 ), group( 1 ) ]] var depthMap : texture_depth_2d;
+@binding(5) @group(1) var depthMap : texture_depth_2d;
 
-[[ binding( 3 ), group( 1 ) ]] var texSampler : sampler;
+@binding(3) @group(1) var texSampler : sampler;
 
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main( fIn : FragmentInput ) -> FragmentOutput
 {
     let sample : f32 = textureSample( depthMap , texSampler, fIn.vUv );
diff --git a/test/bug/tint/978.wgsl.expected.wgsl b/test/bug/tint/978.wgsl.expected.wgsl
index b73a26e..8588fe7 100644
--- a/test/bug/tint/978.wgsl.expected.wgsl
+++ b/test/bug/tint/978.wgsl.expected.wgsl
@@ -1,18 +1,18 @@
 struct FragmentInput {
-  [[location(2)]]
+  @location(2)
   vUv : vec2<f32>;
 }
 
 struct FragmentOutput {
-  [[location(0)]]
+  @location(0)
   color : vec4<f32>;
 }
 
-[[binding(5), group(1)]] var depthMap : texture_depth_2d;
+@binding(5) @group(1) var depthMap : texture_depth_2d;
 
-[[binding(3), group(1)]] var texSampler : sampler;
+@binding(3) @group(1) var texSampler : sampler;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main(fIn : FragmentInput) -> FragmentOutput {
   let sample : f32 = textureSample(depthMap, texSampler, fIn.vUv);
   let color : vec3<f32> = vec3<f32>(sample, sample, sample);
diff --git a/test/bug/tint/980.wgsl b/test/bug/tint/980.wgsl
index bd82785..3f399b0 100644
--- a/test/bug/tint/980.wgsl
+++ b/test/bug/tint/980.wgsl
@@ -6,8 +6,8 @@
 }
 
  struct S { v : vec3<f32>; i : u32; };
-[[binding(0), group(0)]] var<storage, read_write> io : S;
-[[stage(compute), workgroup_size(1)]]
-fn main([[builtin(local_invocation_index)]] idx : u32) {
+@binding(0) @group(0) var<storage, read_write> io : S;
+@stage(compute) @workgroup_size(1)
+fn main(@builtin(local_invocation_index) idx : u32) {
     io.v = Bad(io.i, io.v);
 }
diff --git a/test/bug/tint/980.wgsl.expected.wgsl b/test/bug/tint/980.wgsl.expected.wgsl
index b74a7cb..ef89fd0 100644
--- a/test/bug/tint/980.wgsl.expected.wgsl
+++ b/test/bug/tint/980.wgsl.expected.wgsl
@@ -9,9 +9,9 @@
   i : u32;
 }
 
-[[binding(0), group(0)]] var<storage, read_write> io : S;
+@binding(0) @group(0) var<storage, read_write> io : S;
 
-[[stage(compute), workgroup_size(1)]]
-fn main([[builtin(local_invocation_index)]] idx : u32) {
+@stage(compute) @workgroup_size(1)
+fn main(@builtin(local_invocation_index) idx : u32) {
   io.v = Bad(io.i, io.v);
 }
diff --git a/test/bug/tint/992.wgsl b/test/bug/tint/992.wgsl
index e60c597..461e17c 100644
--- a/test/bug/tint/992.wgsl
+++ b/test/bug/tint/992.wgsl
@@ -1,5 +1,5 @@
-[[stage(fragment)]]
-fn frag_main() -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn frag_main() -> @location(0) vec4<f32> {
     var b: f32 = 0.0;
     var v: vec3<f32> = vec3<f32>(b);
     return vec4<f32>(v, 1.0);
diff --git a/test/bug/tint/992.wgsl.expected.wgsl b/test/bug/tint/992.wgsl.expected.wgsl
index 7354604..1742838 100644
--- a/test/bug/tint/992.wgsl.expected.wgsl
+++ b/test/bug/tint/992.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
-[[stage(fragment)]]
-fn frag_main() -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn frag_main() -> @location(0) vec4<f32> {
   var b : f32 = 0.0;
   var v : vec3<f32> = vec3<f32>(b);
   return vec4<f32>(v, 1.0);
diff --git a/test/bug/tint/993.wgsl b/test/bug/tint/993.wgsl
index cf774f7..b5ebe30 100644
--- a/test/bug/tint/993.wgsl
+++ b/test/bug/tint/993.wgsl
@@ -2,23 +2,23 @@
  struct Constants {
   zero: u32;
 };
-[[group(1), binding(0)]] var<uniform> constants: Constants;
+@group(1) @binding(0) var<uniform> constants: Constants;
 
  struct Result {
   value: u32;
 };
-[[group(1), binding(1)]] var<storage, write> result: Result;
+@group(1) @binding(1) var<storage, write> result: Result;
 
  struct TestData {
   data: array<atomic<i32>,3>;
 };
-[[group(0), binding(0)]] var<storage, read_write> s: TestData;
+@group(0) @binding(0) var<storage, read_write> s: TestData;
 
 fn runTest() -> i32 {
   return atomicLoad(&s.data[(0u) + u32(constants.zero)]);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   result.value = u32(runTest());
-}
\ No newline at end of file
+}
diff --git a/test/bug/tint/993.wgsl.expected.wgsl b/test/bug/tint/993.wgsl.expected.wgsl
index 12eb2ae..5d0863d 100644
--- a/test/bug/tint/993.wgsl.expected.wgsl
+++ b/test/bug/tint/993.wgsl.expected.wgsl
@@ -2,25 +2,25 @@
   zero : u32;
 }
 
-[[group(1), binding(0)]] var<uniform> constants : Constants;
+@group(1) @binding(0) var<uniform> constants : Constants;
 
 struct Result {
   value : u32;
 }
 
-[[group(1), binding(1)]] var<storage, write> result : Result;
+@group(1) @binding(1) var<storage, write> result : Result;
 
 struct TestData {
   data : array<atomic<i32>, 3>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> s : TestData;
+@group(0) @binding(0) var<storage, read_write> s : TestData;
 
 fn runTest() -> i32 {
   return atomicLoad(&(s.data[(0u + u32(constants.zero))]));
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   result.value = u32(runTest());
 }
diff --git a/test/bug/tint/998.wgsl b/test/bug/tint/998.wgsl
index 39357d6..3186b30 100644
--- a/test/bug/tint/998.wgsl
+++ b/test/bug/tint/998.wgsl
@@ -1,19 +1,19 @@
  struct Constants {
   zero: u32;
 };
-[[group(1), binding(0)]] var<uniform> constants: Constants;
+@group(1) @binding(0) var<uniform> constants: Constants;
 
  struct Result {
   value: u32;
 };
-[[group(1), binding(1)]] var<storage, write> result: Result;
+@group(1) @binding(1) var<storage, write> result: Result;
 
 struct S {
   data: array<u32, 3>;
 };
 var<private> s: S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   s.data[constants.zero] = 0u;
-}
\ No newline at end of file
+}
diff --git a/test/bug/tint/998.wgsl.expected.wgsl b/test/bug/tint/998.wgsl.expected.wgsl
index e7abd6d..35ed13f 100644
--- a/test/bug/tint/998.wgsl.expected.wgsl
+++ b/test/bug/tint/998.wgsl.expected.wgsl
@@ -2,13 +2,13 @@
   zero : u32;
 }
 
-[[group(1), binding(0)]] var<uniform> constants : Constants;
+@group(1) @binding(0) var<uniform> constants : Constants;
 
 struct Result {
   value : u32;
 }
 
-[[group(1), binding(1)]] var<storage, write> result : Result;
+@group(1) @binding(1) var<storage, write> result : Result;
 
 struct S {
   data : array<u32, 3>;
@@ -16,7 +16,7 @@
 
 var<private> s : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   s.data[constants.zero] = 0u;
 }
diff --git a/test/expressions/binary/add/mat3x3-mat3x3/f32.wgsl b/test/expressions/binary/add/mat3x3-mat3x3/f32.wgsl
index 403b87f..eac9ef6 100644
--- a/test/expressions/binary/add/mat3x3-mat3x3/f32.wgsl
+++ b/test/expressions/binary/add/mat3x3-mat3x3/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = mat3x3<f32>(vec3<f32>( 1.,  2.,  3.), vec3<f32>( 4.,  5.,  6.), vec3<f32>( 7.,  8.,  9.));
     let b = mat3x3<f32>(vec3<f32>(-1., -2., -3.), vec3<f32>(-4., -5., -6.), vec3<f32>(-7., -8., -9.));
diff --git a/test/expressions/binary/add/mat3x3-mat3x3/f32.wgsl.expected.wgsl b/test/expressions/binary/add/mat3x3-mat3x3/f32.wgsl.expected.wgsl
index 9113851..2dfb7c8 100644
--- a/test/expressions/binary/add/mat3x3-mat3x3/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/add/mat3x3-mat3x3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = mat3x3<f32>(vec3<f32>(1.0, 2.0, 3.0), vec3<f32>(4.0, 5.0, 6.0), vec3<f32>(7.0, 8.0, 9.0));
   let b = mat3x3<f32>(vec3<f32>(-1.0, -2.0, -3.0), vec3<f32>(-4.0, -5.0, -6.0), vec3<f32>(-7.0, -8.0, -9.0));
diff --git a/test/expressions/binary/add/scalar-scalar/f32.wgsl b/test/expressions/binary/add/scalar-scalar/f32.wgsl
index 25bf677..6dcc653 100644
--- a/test/expressions/binary/add/scalar-scalar/f32.wgsl
+++ b/test/expressions/binary/add/scalar-scalar/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 1.;
     let b = 2.;
diff --git a/test/expressions/binary/add/scalar-scalar/f32.wgsl.expected.wgsl b/test/expressions/binary/add/scalar-scalar/f32.wgsl.expected.wgsl
index 3db4790..0997a1a 100644
--- a/test/expressions/binary/add/scalar-scalar/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/add/scalar-scalar/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 1.0;
   let b = 2.0;
diff --git a/test/expressions/binary/add/scalar-scalar/i32.wgsl b/test/expressions/binary/add/scalar-scalar/i32.wgsl
index bb39f2e..93e8a35 100644
--- a/test/expressions/binary/add/scalar-scalar/i32.wgsl
+++ b/test/expressions/binary/add/scalar-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 1;
     let b = 2;
diff --git a/test/expressions/binary/add/scalar-scalar/i32.wgsl.expected.wgsl b/test/expressions/binary/add/scalar-scalar/i32.wgsl.expected.wgsl
index 7022af1..46fe066 100644
--- a/test/expressions/binary/add/scalar-scalar/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/add/scalar-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 1;
   let b = 2;
diff --git a/test/expressions/binary/add/scalar-scalar/u32.wgsl b/test/expressions/binary/add/scalar-scalar/u32.wgsl
index 9f5be35..cf3c56d 100644
--- a/test/expressions/binary/add/scalar-scalar/u32.wgsl
+++ b/test/expressions/binary/add/scalar-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 1u;
     let b = 2u;
diff --git a/test/expressions/binary/add/scalar-scalar/u32.wgsl.expected.wgsl b/test/expressions/binary/add/scalar-scalar/u32.wgsl.expected.wgsl
index fc83a3e..c052925 100644
--- a/test/expressions/binary/add/scalar-scalar/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/add/scalar-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 1u;
   let b = 2u;
diff --git a/test/expressions/binary/add/scalar-vec3/f32.wgsl b/test/expressions/binary/add/scalar-vec3/f32.wgsl
index 8adb291..8467ba6 100644
--- a/test/expressions/binary/add/scalar-vec3/f32.wgsl
+++ b/test/expressions/binary/add/scalar-vec3/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 4.;
     let b = vec3<f32>(1., 2., 3.);
diff --git a/test/expressions/binary/add/scalar-vec3/f32.wgsl.expected.wgsl b/test/expressions/binary/add/scalar-vec3/f32.wgsl.expected.wgsl
index f113f0e..95a584b 100644
--- a/test/expressions/binary/add/scalar-vec3/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/add/scalar-vec3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 4.0;
   let b = vec3<f32>(1.0, 2.0, 3.0);
diff --git a/test/expressions/binary/add/scalar-vec3/i32.wgsl b/test/expressions/binary/add/scalar-vec3/i32.wgsl
index 327473e..a61cd74 100644
--- a/test/expressions/binary/add/scalar-vec3/i32.wgsl
+++ b/test/expressions/binary/add/scalar-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 4;
     let b = vec3<i32>(1, 2, 3);
diff --git a/test/expressions/binary/add/scalar-vec3/i32.wgsl.expected.wgsl b/test/expressions/binary/add/scalar-vec3/i32.wgsl.expected.wgsl
index 6123ca1..c1193c6 100644
--- a/test/expressions/binary/add/scalar-vec3/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/add/scalar-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 4;
   let b = vec3<i32>(1, 2, 3);
diff --git a/test/expressions/binary/add/scalar-vec3/u32.wgsl b/test/expressions/binary/add/scalar-vec3/u32.wgsl
index e36d881..0fb18d4 100644
--- a/test/expressions/binary/add/scalar-vec3/u32.wgsl
+++ b/test/expressions/binary/add/scalar-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 4u;
     let b = vec3<u32>(1u, 2u, 3u);
diff --git a/test/expressions/binary/add/scalar-vec3/u32.wgsl.expected.wgsl b/test/expressions/binary/add/scalar-vec3/u32.wgsl.expected.wgsl
index 457841e..2ec0595 100644
--- a/test/expressions/binary/add/scalar-vec3/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/add/scalar-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 4u;
   let b = vec3<u32>(1u, 2u, 3u);
diff --git a/test/expressions/binary/add/vec3-scalar/f32.wgsl b/test/expressions/binary/add/vec3-scalar/f32.wgsl
index dd38642..38320af 100644
--- a/test/expressions/binary/add/vec3-scalar/f32.wgsl
+++ b/test/expressions/binary/add/vec3-scalar/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<f32>(1., 2., 3.);
     let b = 4.;
diff --git a/test/expressions/binary/add/vec3-scalar/f32.wgsl.expected.wgsl b/test/expressions/binary/add/vec3-scalar/f32.wgsl.expected.wgsl
index 62aa160..86904e5 100644
--- a/test/expressions/binary/add/vec3-scalar/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/add/vec3-scalar/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<f32>(1.0, 2.0, 3.0);
   let b = 4.0;
diff --git a/test/expressions/binary/add/vec3-scalar/i32.wgsl b/test/expressions/binary/add/vec3-scalar/i32.wgsl
index 1e4324a..eacbc3b 100644
--- a/test/expressions/binary/add/vec3-scalar/i32.wgsl
+++ b/test/expressions/binary/add/vec3-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<i32>(1, 2, 3);
     let b = 4;
diff --git a/test/expressions/binary/add/vec3-scalar/i32.wgsl.expected.wgsl b/test/expressions/binary/add/vec3-scalar/i32.wgsl.expected.wgsl
index 378b1d2..e4775e1 100644
--- a/test/expressions/binary/add/vec3-scalar/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/add/vec3-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<i32>(1, 2, 3);
   let b = 4;
diff --git a/test/expressions/binary/add/vec3-scalar/u32.wgsl b/test/expressions/binary/add/vec3-scalar/u32.wgsl
index cfff6f1..50ceead 100644
--- a/test/expressions/binary/add/vec3-scalar/u32.wgsl
+++ b/test/expressions/binary/add/vec3-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<u32>(1u, 2u, 3u);
     let b = 4u;
diff --git a/test/expressions/binary/add/vec3-scalar/u32.wgsl.expected.wgsl b/test/expressions/binary/add/vec3-scalar/u32.wgsl.expected.wgsl
index df0f990..8f0116a 100644
--- a/test/expressions/binary/add/vec3-scalar/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/add/vec3-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<u32>(1u, 2u, 3u);
   let b = 4u;
diff --git a/test/expressions/binary/add/vec3-vec3/f32.wgsl b/test/expressions/binary/add/vec3-vec3/f32.wgsl
index 4f71797..5658e4e 100644
--- a/test/expressions/binary/add/vec3-vec3/f32.wgsl
+++ b/test/expressions/binary/add/vec3-vec3/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<f32>(1., 2., 3.);
     let b = vec3<f32>(4., 5., 6.);
diff --git a/test/expressions/binary/add/vec3-vec3/f32.wgsl.expected.wgsl b/test/expressions/binary/add/vec3-vec3/f32.wgsl.expected.wgsl
index 54d52b1..b18ded4 100644
--- a/test/expressions/binary/add/vec3-vec3/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/add/vec3-vec3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<f32>(1.0, 2.0, 3.0);
   let b = vec3<f32>(4.0, 5.0, 6.0);
diff --git a/test/expressions/binary/add/vec3-vec3/i32.wgsl b/test/expressions/binary/add/vec3-vec3/i32.wgsl
index dd170f5..98ca5c2 100644
--- a/test/expressions/binary/add/vec3-vec3/i32.wgsl
+++ b/test/expressions/binary/add/vec3-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<i32>(1, 2, 3);
     let b = vec3<i32>(4, 5, 6);
diff --git a/test/expressions/binary/add/vec3-vec3/i32.wgsl.expected.wgsl b/test/expressions/binary/add/vec3-vec3/i32.wgsl.expected.wgsl
index 5f1226d..58712ea 100644
--- a/test/expressions/binary/add/vec3-vec3/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/add/vec3-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<i32>(1, 2, 3);
   let b = vec3<i32>(4, 5, 6);
diff --git a/test/expressions/binary/add/vec3-vec3/u32.wgsl b/test/expressions/binary/add/vec3-vec3/u32.wgsl
index 433e52d..f6d72ce 100644
--- a/test/expressions/binary/add/vec3-vec3/u32.wgsl
+++ b/test/expressions/binary/add/vec3-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<u32>(1u, 2u, 3u);
     let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/expressions/binary/add/vec3-vec3/u32.wgsl.expected.wgsl b/test/expressions/binary/add/vec3-vec3/u32.wgsl.expected.wgsl
index 85dad76..db61dda 100644
--- a/test/expressions/binary/add/vec3-vec3/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/add/vec3-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<u32>(1u, 2u, 3u);
   let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/expressions/binary/bit-and/scalar-scalar/i32.wgsl b/test/expressions/binary/bit-and/scalar-scalar/i32.wgsl
index 9ad0a83..e4d1a86 100644
--- a/test/expressions/binary/bit-and/scalar-scalar/i32.wgsl
+++ b/test/expressions/binary/bit-and/scalar-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 1;
     let b = 2;
diff --git a/test/expressions/binary/bit-and/scalar-scalar/i32.wgsl.expected.wgsl b/test/expressions/binary/bit-and/scalar-scalar/i32.wgsl.expected.wgsl
index ce96c2d..24bab02 100644
--- a/test/expressions/binary/bit-and/scalar-scalar/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/bit-and/scalar-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 1;
   let b = 2;
diff --git a/test/expressions/binary/bit-and/scalar-scalar/u32.wgsl b/test/expressions/binary/bit-and/scalar-scalar/u32.wgsl
index ee0fb0a..c297f9d 100644
--- a/test/expressions/binary/bit-and/scalar-scalar/u32.wgsl
+++ b/test/expressions/binary/bit-and/scalar-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 1u;
     let b = 2u;
diff --git a/test/expressions/binary/bit-and/scalar-scalar/u32.wgsl.expected.wgsl b/test/expressions/binary/bit-and/scalar-scalar/u32.wgsl.expected.wgsl
index e5c60f1..a158e4c 100644
--- a/test/expressions/binary/bit-and/scalar-scalar/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/bit-and/scalar-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 1u;
   let b = 2u;
diff --git a/test/expressions/binary/bit-and/vec3-vec3/i32.wgsl b/test/expressions/binary/bit-and/vec3-vec3/i32.wgsl
index 5dc71ef..c2be41d 100644
--- a/test/expressions/binary/bit-and/vec3-vec3/i32.wgsl
+++ b/test/expressions/binary/bit-and/vec3-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<i32>(1, 2, 3);
     let b = vec3<i32>(4, 5, 6);
diff --git a/test/expressions/binary/bit-and/vec3-vec3/i32.wgsl.expected.wgsl b/test/expressions/binary/bit-and/vec3-vec3/i32.wgsl.expected.wgsl
index a30b1f5..334474a 100644
--- a/test/expressions/binary/bit-and/vec3-vec3/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/bit-and/vec3-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<i32>(1, 2, 3);
   let b = vec3<i32>(4, 5, 6);
diff --git a/test/expressions/binary/bit-and/vec3-vec3/u32.wgsl b/test/expressions/binary/bit-and/vec3-vec3/u32.wgsl
index c520bc3..8383a86 100644
--- a/test/expressions/binary/bit-and/vec3-vec3/u32.wgsl
+++ b/test/expressions/binary/bit-and/vec3-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<u32>(1u, 2u, 3u);
     let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/expressions/binary/bit-and/vec3-vec3/u32.wgsl.expected.wgsl b/test/expressions/binary/bit-and/vec3-vec3/u32.wgsl.expected.wgsl
index b9c2d80..7a95503 100644
--- a/test/expressions/binary/bit-and/vec3-vec3/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/bit-and/vec3-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<u32>(1u, 2u, 3u);
   let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/expressions/binary/bit-or/scalar-scalar/i32.wgsl b/test/expressions/binary/bit-or/scalar-scalar/i32.wgsl
index 9e2d99c..e0c227d 100644
--- a/test/expressions/binary/bit-or/scalar-scalar/i32.wgsl
+++ b/test/expressions/binary/bit-or/scalar-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 1;
     let b = 2;
diff --git a/test/expressions/binary/bit-or/scalar-scalar/i32.wgsl.expected.wgsl b/test/expressions/binary/bit-or/scalar-scalar/i32.wgsl.expected.wgsl
index 3a13163..65617cb 100644
--- a/test/expressions/binary/bit-or/scalar-scalar/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/bit-or/scalar-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 1;
   let b = 2;
diff --git a/test/expressions/binary/bit-or/scalar-scalar/u32.wgsl b/test/expressions/binary/bit-or/scalar-scalar/u32.wgsl
index edf8a70..c8d4257 100644
--- a/test/expressions/binary/bit-or/scalar-scalar/u32.wgsl
+++ b/test/expressions/binary/bit-or/scalar-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 1u;
     let b = 2u;
diff --git a/test/expressions/binary/bit-or/scalar-scalar/u32.wgsl.expected.wgsl b/test/expressions/binary/bit-or/scalar-scalar/u32.wgsl.expected.wgsl
index 231ecb5..3c9bed3 100644
--- a/test/expressions/binary/bit-or/scalar-scalar/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/bit-or/scalar-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 1u;
   let b = 2u;
diff --git a/test/expressions/binary/bit-or/vec3-vec3/i32.wgsl b/test/expressions/binary/bit-or/vec3-vec3/i32.wgsl
index dc5ed1c..d5f6036 100644
--- a/test/expressions/binary/bit-or/vec3-vec3/i32.wgsl
+++ b/test/expressions/binary/bit-or/vec3-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<i32>(1, 2, 3);
     let b = vec3<i32>(4, 5, 6);
diff --git a/test/expressions/binary/bit-or/vec3-vec3/i32.wgsl.expected.wgsl b/test/expressions/binary/bit-or/vec3-vec3/i32.wgsl.expected.wgsl
index 8941e04..ffc87a0 100644
--- a/test/expressions/binary/bit-or/vec3-vec3/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/bit-or/vec3-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<i32>(1, 2, 3);
   let b = vec3<i32>(4, 5, 6);
diff --git a/test/expressions/binary/bit-or/vec3-vec3/u32.wgsl b/test/expressions/binary/bit-or/vec3-vec3/u32.wgsl
index e1adda8..cac160f 100644
--- a/test/expressions/binary/bit-or/vec3-vec3/u32.wgsl
+++ b/test/expressions/binary/bit-or/vec3-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<u32>(1u, 2u, 3u);
     let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/expressions/binary/bit-or/vec3-vec3/u32.wgsl.expected.wgsl b/test/expressions/binary/bit-or/vec3-vec3/u32.wgsl.expected.wgsl
index 800d5d0..580a328 100644
--- a/test/expressions/binary/bit-or/vec3-vec3/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/bit-or/vec3-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<u32>(1u, 2u, 3u);
   let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/expressions/binary/bit-xor/scalar-scalar/i32.wgsl b/test/expressions/binary/bit-xor/scalar-scalar/i32.wgsl
index c0112a3..9844c80 100644
--- a/test/expressions/binary/bit-xor/scalar-scalar/i32.wgsl
+++ b/test/expressions/binary/bit-xor/scalar-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 1;
     let b = 2;
diff --git a/test/expressions/binary/bit-xor/scalar-scalar/i32.wgsl.expected.wgsl b/test/expressions/binary/bit-xor/scalar-scalar/i32.wgsl.expected.wgsl
index 860a11d..dc73ec6 100644
--- a/test/expressions/binary/bit-xor/scalar-scalar/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/bit-xor/scalar-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 1;
   let b = 2;
diff --git a/test/expressions/binary/bit-xor/scalar-scalar/u32.wgsl b/test/expressions/binary/bit-xor/scalar-scalar/u32.wgsl
index 32d3b95..f0f7a54 100644
--- a/test/expressions/binary/bit-xor/scalar-scalar/u32.wgsl
+++ b/test/expressions/binary/bit-xor/scalar-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 1u;
     let b = 2u;
diff --git a/test/expressions/binary/bit-xor/scalar-scalar/u32.wgsl.expected.wgsl b/test/expressions/binary/bit-xor/scalar-scalar/u32.wgsl.expected.wgsl
index 26dda45..930b21f 100644
--- a/test/expressions/binary/bit-xor/scalar-scalar/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/bit-xor/scalar-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 1u;
   let b = 2u;
diff --git a/test/expressions/binary/bit-xor/vec3-vec3/i32.wgsl b/test/expressions/binary/bit-xor/vec3-vec3/i32.wgsl
index c4972f7..0a5f1c2 100644
--- a/test/expressions/binary/bit-xor/vec3-vec3/i32.wgsl
+++ b/test/expressions/binary/bit-xor/vec3-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<i32>(1, 2, 3);
     let b = vec3<i32>(4, 5, 6);
diff --git a/test/expressions/binary/bit-xor/vec3-vec3/i32.wgsl.expected.wgsl b/test/expressions/binary/bit-xor/vec3-vec3/i32.wgsl.expected.wgsl
index 2811f15..de62f80 100644
--- a/test/expressions/binary/bit-xor/vec3-vec3/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/bit-xor/vec3-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<i32>(1, 2, 3);
   let b = vec3<i32>(4, 5, 6);
diff --git a/test/expressions/binary/bit-xor/vec3-vec3/u32.wgsl b/test/expressions/binary/bit-xor/vec3-vec3/u32.wgsl
index 2e62570..ce705f6 100644
--- a/test/expressions/binary/bit-xor/vec3-vec3/u32.wgsl
+++ b/test/expressions/binary/bit-xor/vec3-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<u32>(1u, 2u, 3u);
     let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/expressions/binary/bit-xor/vec3-vec3/u32.wgsl.expected.wgsl b/test/expressions/binary/bit-xor/vec3-vec3/u32.wgsl.expected.wgsl
index 4ba52c5..044e138 100644
--- a/test/expressions/binary/bit-xor/vec3-vec3/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/bit-xor/vec3-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<u32>(1u, 2u, 3u);
   let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/expressions/binary/div/scalar-scalar/f32.wgsl b/test/expressions/binary/div/scalar-scalar/f32.wgsl
index 50cabd0..025664d 100644
--- a/test/expressions/binary/div/scalar-scalar/f32.wgsl
+++ b/test/expressions/binary/div/scalar-scalar/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 1.;
     let b = 2.;
diff --git a/test/expressions/binary/div/scalar-scalar/f32.wgsl.expected.wgsl b/test/expressions/binary/div/scalar-scalar/f32.wgsl.expected.wgsl
index 5bc760d..4f2fc18 100644
--- a/test/expressions/binary/div/scalar-scalar/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div/scalar-scalar/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 1.0;
   let b = 2.0;
diff --git a/test/expressions/binary/div/scalar-scalar/i32.wgsl b/test/expressions/binary/div/scalar-scalar/i32.wgsl
index 1192d80..cba5901 100644
--- a/test/expressions/binary/div/scalar-scalar/i32.wgsl
+++ b/test/expressions/binary/div/scalar-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 1;
     let b = 2;
diff --git a/test/expressions/binary/div/scalar-scalar/i32.wgsl.expected.wgsl b/test/expressions/binary/div/scalar-scalar/i32.wgsl.expected.wgsl
index 6ecb865..8f7e574 100644
--- a/test/expressions/binary/div/scalar-scalar/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div/scalar-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 1;
   let b = 2;
diff --git a/test/expressions/binary/div/scalar-scalar/u32.wgsl b/test/expressions/binary/div/scalar-scalar/u32.wgsl
index 6e18ad7..441f376 100644
--- a/test/expressions/binary/div/scalar-scalar/u32.wgsl
+++ b/test/expressions/binary/div/scalar-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 1u;
     let b = 2u;
diff --git a/test/expressions/binary/div/scalar-scalar/u32.wgsl.expected.wgsl b/test/expressions/binary/div/scalar-scalar/u32.wgsl.expected.wgsl
index b5d2f7e..cff0385 100644
--- a/test/expressions/binary/div/scalar-scalar/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div/scalar-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 1u;
   let b = 2u;
diff --git a/test/expressions/binary/div/scalar-vec3/f32.wgsl b/test/expressions/binary/div/scalar-vec3/f32.wgsl
index a9cab92..f43e97c 100644
--- a/test/expressions/binary/div/scalar-vec3/f32.wgsl
+++ b/test/expressions/binary/div/scalar-vec3/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 4.;
     let b = vec3<f32>(1., 2., 3.);
diff --git a/test/expressions/binary/div/scalar-vec3/f32.wgsl.expected.wgsl b/test/expressions/binary/div/scalar-vec3/f32.wgsl.expected.wgsl
index bd9de59..b8f74f4 100644
--- a/test/expressions/binary/div/scalar-vec3/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div/scalar-vec3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 4.0;
   let b = vec3<f32>(1.0, 2.0, 3.0);
diff --git a/test/expressions/binary/div/scalar-vec3/i32.wgsl b/test/expressions/binary/div/scalar-vec3/i32.wgsl
index ae9daea..071efcf 100644
--- a/test/expressions/binary/div/scalar-vec3/i32.wgsl
+++ b/test/expressions/binary/div/scalar-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 4;
     let b = vec3<i32>(1, 2, 3);
diff --git a/test/expressions/binary/div/scalar-vec3/i32.wgsl.expected.wgsl b/test/expressions/binary/div/scalar-vec3/i32.wgsl.expected.wgsl
index 6d7e7a4..1a8cb05 100644
--- a/test/expressions/binary/div/scalar-vec3/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div/scalar-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 4;
   let b = vec3<i32>(1, 2, 3);
diff --git a/test/expressions/binary/div/scalar-vec3/u32.wgsl b/test/expressions/binary/div/scalar-vec3/u32.wgsl
index 0923fb2..5ad53ee 100644
--- a/test/expressions/binary/div/scalar-vec3/u32.wgsl
+++ b/test/expressions/binary/div/scalar-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 4u;
     let b = vec3<u32>(1u, 2u, 3u);
diff --git a/test/expressions/binary/div/scalar-vec3/u32.wgsl.expected.wgsl b/test/expressions/binary/div/scalar-vec3/u32.wgsl.expected.wgsl
index 5c678e8..ffe6412 100644
--- a/test/expressions/binary/div/scalar-vec3/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div/scalar-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 4u;
   let b = vec3<u32>(1u, 2u, 3u);
diff --git a/test/expressions/binary/div/vec3-scalar/f32.wgsl b/test/expressions/binary/div/vec3-scalar/f32.wgsl
index 247abdf..087c0d3 100644
--- a/test/expressions/binary/div/vec3-scalar/f32.wgsl
+++ b/test/expressions/binary/div/vec3-scalar/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<f32>(1., 2., 3.);
     let b = 4.;
diff --git a/test/expressions/binary/div/vec3-scalar/f32.wgsl.expected.wgsl b/test/expressions/binary/div/vec3-scalar/f32.wgsl.expected.wgsl
index df8a3df..70432db 100644
--- a/test/expressions/binary/div/vec3-scalar/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div/vec3-scalar/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<f32>(1.0, 2.0, 3.0);
   let b = 4.0;
diff --git a/test/expressions/binary/div/vec3-scalar/i32.wgsl b/test/expressions/binary/div/vec3-scalar/i32.wgsl
index 7e730df..890b125 100644
--- a/test/expressions/binary/div/vec3-scalar/i32.wgsl
+++ b/test/expressions/binary/div/vec3-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<i32>(1, 2, 3);
     let b = 4;
diff --git a/test/expressions/binary/div/vec3-scalar/i32.wgsl.expected.wgsl b/test/expressions/binary/div/vec3-scalar/i32.wgsl.expected.wgsl
index fa76ca6..f3a1164 100644
--- a/test/expressions/binary/div/vec3-scalar/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div/vec3-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<i32>(1, 2, 3);
   let b = 4;
diff --git a/test/expressions/binary/div/vec3-scalar/u32.wgsl b/test/expressions/binary/div/vec3-scalar/u32.wgsl
index 5eadf33..7ab6dd5 100644
--- a/test/expressions/binary/div/vec3-scalar/u32.wgsl
+++ b/test/expressions/binary/div/vec3-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<u32>(1u, 2u, 3u);
     let b = 4u;
diff --git a/test/expressions/binary/div/vec3-scalar/u32.wgsl.expected.wgsl b/test/expressions/binary/div/vec3-scalar/u32.wgsl.expected.wgsl
index 8e60c28..2f64dd9 100644
--- a/test/expressions/binary/div/vec3-scalar/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div/vec3-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<u32>(1u, 2u, 3u);
   let b = 4u;
diff --git a/test/expressions/binary/div/vec3-vec3/f32.wgsl b/test/expressions/binary/div/vec3-vec3/f32.wgsl
index f779554..1f253ea 100644
--- a/test/expressions/binary/div/vec3-vec3/f32.wgsl
+++ b/test/expressions/binary/div/vec3-vec3/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<f32>(1., 2., 3.);
     let b = vec3<f32>(4., 5., 6.);
diff --git a/test/expressions/binary/div/vec3-vec3/f32.wgsl.expected.wgsl b/test/expressions/binary/div/vec3-vec3/f32.wgsl.expected.wgsl
index e824aa5..c3129a9 100644
--- a/test/expressions/binary/div/vec3-vec3/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div/vec3-vec3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<f32>(1.0, 2.0, 3.0);
   let b = vec3<f32>(4.0, 5.0, 6.0);
diff --git a/test/expressions/binary/div/vec3-vec3/i32.wgsl b/test/expressions/binary/div/vec3-vec3/i32.wgsl
index 40e6d7a..68d844f 100644
--- a/test/expressions/binary/div/vec3-vec3/i32.wgsl
+++ b/test/expressions/binary/div/vec3-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<i32>(1, 2, 3);
     let b = vec3<i32>(4, 5, 6);
diff --git a/test/expressions/binary/div/vec3-vec3/i32.wgsl.expected.wgsl b/test/expressions/binary/div/vec3-vec3/i32.wgsl.expected.wgsl
index 940e6d9..a601fa0 100644
--- a/test/expressions/binary/div/vec3-vec3/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div/vec3-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<i32>(1, 2, 3);
   let b = vec3<i32>(4, 5, 6);
diff --git a/test/expressions/binary/div/vec3-vec3/u32.wgsl b/test/expressions/binary/div/vec3-vec3/u32.wgsl
index 39fdc1d..9215590 100644
--- a/test/expressions/binary/div/vec3-vec3/u32.wgsl
+++ b/test/expressions/binary/div/vec3-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<u32>(1u, 2u, 3u);
     let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/expressions/binary/div/vec3-vec3/u32.wgsl.expected.wgsl b/test/expressions/binary/div/vec3-vec3/u32.wgsl.expected.wgsl
index cbf76b7..66261d5 100644
--- a/test/expressions/binary/div/vec3-vec3/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div/vec3-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<u32>(1u, 2u, 3u);
   let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/expressions/binary/div_by_zero/by_constant/scalar-scalar/f32.wgsl b/test/expressions/binary/div_by_zero/by_constant/scalar-scalar/f32.wgsl
index 7ce4276..9503e44 100644
--- a/test/expressions/binary/div_by_zero/by_constant/scalar-scalar/f32.wgsl
+++ b/test/expressions/binary/div_by_zero/by_constant/scalar-scalar/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 1.;
     let b = 0.;
diff --git a/test/expressions/binary/div_by_zero/by_constant/scalar-scalar/f32.wgsl.expected.wgsl b/test/expressions/binary/div_by_zero/by_constant/scalar-scalar/f32.wgsl.expected.wgsl
index da2c352..8036fce 100644
--- a/test/expressions/binary/div_by_zero/by_constant/scalar-scalar/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div_by_zero/by_constant/scalar-scalar/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 1.0;
   let b = 0.0;
diff --git a/test/expressions/binary/div_by_zero/by_constant/scalar-scalar/i32.wgsl b/test/expressions/binary/div_by_zero/by_constant/scalar-scalar/i32.wgsl
index 7c980aa..73f03b7 100644
--- a/test/expressions/binary/div_by_zero/by_constant/scalar-scalar/i32.wgsl
+++ b/test/expressions/binary/div_by_zero/by_constant/scalar-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 1;
     let b = 0;
diff --git a/test/expressions/binary/div_by_zero/by_constant/scalar-scalar/i32.wgsl.expected.wgsl b/test/expressions/binary/div_by_zero/by_constant/scalar-scalar/i32.wgsl.expected.wgsl
index 63bdb5a..5284d7d 100644
--- a/test/expressions/binary/div_by_zero/by_constant/scalar-scalar/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div_by_zero/by_constant/scalar-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 1;
   let b = 0;
diff --git a/test/expressions/binary/div_by_zero/by_constant/scalar-scalar/u32.wgsl b/test/expressions/binary/div_by_zero/by_constant/scalar-scalar/u32.wgsl
index e31e484..38b3d24 100644
--- a/test/expressions/binary/div_by_zero/by_constant/scalar-scalar/u32.wgsl
+++ b/test/expressions/binary/div_by_zero/by_constant/scalar-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 1u;
     let b = 0u;
diff --git a/test/expressions/binary/div_by_zero/by_constant/scalar-scalar/u32.wgsl.expected.wgsl b/test/expressions/binary/div_by_zero/by_constant/scalar-scalar/u32.wgsl.expected.wgsl
index 3b06f40..8c8f7ae 100644
--- a/test/expressions/binary/div_by_zero/by_constant/scalar-scalar/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div_by_zero/by_constant/scalar-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 1u;
   let b = 0u;
diff --git a/test/expressions/binary/div_by_zero/by_constant/scalar-vec3/f32.wgsl b/test/expressions/binary/div_by_zero/by_constant/scalar-vec3/f32.wgsl
index 83e438c..0db5465 100644
--- a/test/expressions/binary/div_by_zero/by_constant/scalar-vec3/f32.wgsl
+++ b/test/expressions/binary/div_by_zero/by_constant/scalar-vec3/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 4.;
     let b = vec3<f32>(0., 2., 0.);
diff --git a/test/expressions/binary/div_by_zero/by_constant/scalar-vec3/f32.wgsl.expected.wgsl b/test/expressions/binary/div_by_zero/by_constant/scalar-vec3/f32.wgsl.expected.wgsl
index 040875e..24d6132 100644
--- a/test/expressions/binary/div_by_zero/by_constant/scalar-vec3/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div_by_zero/by_constant/scalar-vec3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 4.0;
   let b = vec3<f32>(0.0, 2.0, 0.0);
diff --git a/test/expressions/binary/div_by_zero/by_constant/scalar-vec3/i32.wgsl b/test/expressions/binary/div_by_zero/by_constant/scalar-vec3/i32.wgsl
index b981e35..2b6ef48 100644
--- a/test/expressions/binary/div_by_zero/by_constant/scalar-vec3/i32.wgsl
+++ b/test/expressions/binary/div_by_zero/by_constant/scalar-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 4;
     let b = vec3<i32>(0, 2, 0);
diff --git a/test/expressions/binary/div_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.wgsl b/test/expressions/binary/div_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.wgsl
index 34804c3..58c1887 100644
--- a/test/expressions/binary/div_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 4;
   let b = vec3<i32>(0, 2, 0);
diff --git a/test/expressions/binary/div_by_zero/by_constant/scalar-vec3/u32.wgsl b/test/expressions/binary/div_by_zero/by_constant/scalar-vec3/u32.wgsl
index ae85d37..a0a8fe6 100644
--- a/test/expressions/binary/div_by_zero/by_constant/scalar-vec3/u32.wgsl
+++ b/test/expressions/binary/div_by_zero/by_constant/scalar-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 4u;
     let b = vec3<u32>(0u, 2u, 0u);
diff --git a/test/expressions/binary/div_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.wgsl b/test/expressions/binary/div_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.wgsl
index a20cb6a..bb436e1 100644
--- a/test/expressions/binary/div_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 4u;
   let b = vec3<u32>(0u, 2u, 0u);
diff --git a/test/expressions/binary/div_by_zero/by_constant/vec3-scalar/f32.wgsl b/test/expressions/binary/div_by_zero/by_constant/vec3-scalar/f32.wgsl
index 0a15e5b..b83333f 100644
--- a/test/expressions/binary/div_by_zero/by_constant/vec3-scalar/f32.wgsl
+++ b/test/expressions/binary/div_by_zero/by_constant/vec3-scalar/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<f32>(1., 2., 3.);
     let b = 0.;
diff --git a/test/expressions/binary/div_by_zero/by_constant/vec3-scalar/f32.wgsl.expected.wgsl b/test/expressions/binary/div_by_zero/by_constant/vec3-scalar/f32.wgsl.expected.wgsl
index 7396529..f48af63 100644
--- a/test/expressions/binary/div_by_zero/by_constant/vec3-scalar/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div_by_zero/by_constant/vec3-scalar/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<f32>(1.0, 2.0, 3.0);
   let b = 0.0;
diff --git a/test/expressions/binary/div_by_zero/by_constant/vec3-scalar/i32.wgsl b/test/expressions/binary/div_by_zero/by_constant/vec3-scalar/i32.wgsl
index 93243bc..f9291d5 100644
--- a/test/expressions/binary/div_by_zero/by_constant/vec3-scalar/i32.wgsl
+++ b/test/expressions/binary/div_by_zero/by_constant/vec3-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<i32>(1, 2, 3);
     let b = 0;
diff --git a/test/expressions/binary/div_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.wgsl b/test/expressions/binary/div_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.wgsl
index c15fc0d..c7f11a1 100644
--- a/test/expressions/binary/div_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<i32>(1, 2, 3);
   let b = 0;
diff --git a/test/expressions/binary/div_by_zero/by_constant/vec3-scalar/u32.wgsl b/test/expressions/binary/div_by_zero/by_constant/vec3-scalar/u32.wgsl
index e4cc9f0..5446b2a 100644
--- a/test/expressions/binary/div_by_zero/by_constant/vec3-scalar/u32.wgsl
+++ b/test/expressions/binary/div_by_zero/by_constant/vec3-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<u32>(1u, 2u, 3u);
     let b = 0u;
diff --git a/test/expressions/binary/div_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.wgsl b/test/expressions/binary/div_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.wgsl
index a7aaf27..5ead983 100644
--- a/test/expressions/binary/div_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<u32>(1u, 2u, 3u);
   let b = 0u;
diff --git a/test/expressions/binary/div_by_zero/by_constant/vec3-vec3/f32.wgsl b/test/expressions/binary/div_by_zero/by_constant/vec3-vec3/f32.wgsl
index 3800a7b..6db41a4 100644
--- a/test/expressions/binary/div_by_zero/by_constant/vec3-vec3/f32.wgsl
+++ b/test/expressions/binary/div_by_zero/by_constant/vec3-vec3/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<f32>(1., 2., 3.);
     let b = vec3<f32>(0., 5., 0.);
diff --git a/test/expressions/binary/div_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.wgsl b/test/expressions/binary/div_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.wgsl
index b7be414..6f4aa8c 100644
--- a/test/expressions/binary/div_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<f32>(1.0, 2.0, 3.0);
   let b = vec3<f32>(0.0, 5.0, 0.0);
diff --git a/test/expressions/binary/div_by_zero/by_constant/vec3-vec3/i32.wgsl b/test/expressions/binary/div_by_zero/by_constant/vec3-vec3/i32.wgsl
index 6f5bac7..5d583e6 100644
--- a/test/expressions/binary/div_by_zero/by_constant/vec3-vec3/i32.wgsl
+++ b/test/expressions/binary/div_by_zero/by_constant/vec3-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<i32>(1, 2, 3);
     let b = vec3<i32>(0, 5, 0);
diff --git a/test/expressions/binary/div_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.wgsl b/test/expressions/binary/div_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.wgsl
index 72c4004..76bf812 100644
--- a/test/expressions/binary/div_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<i32>(1, 2, 3);
   let b = vec3<i32>(0, 5, 0);
diff --git a/test/expressions/binary/div_by_zero/by_constant/vec3-vec3/u32.wgsl b/test/expressions/binary/div_by_zero/by_constant/vec3-vec3/u32.wgsl
index 4d73587..16a0dd0 100644
--- a/test/expressions/binary/div_by_zero/by_constant/vec3-vec3/u32.wgsl
+++ b/test/expressions/binary/div_by_zero/by_constant/vec3-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<u32>(1u, 2u, 3u);
     let b = vec3<u32>(0u, 5u, 0u);
diff --git a/test/expressions/binary/div_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.wgsl b/test/expressions/binary/div_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.wgsl
index 03c8910..eb849bd 100644
--- a/test/expressions/binary/div_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<u32>(1u, 2u, 3u);
   let b = vec3<u32>(0u, 5u, 0u);
diff --git a/test/expressions/binary/div_by_zero/by_expression/scalar-scalar/f32.wgsl b/test/expressions/binary/div_by_zero/by_expression/scalar-scalar/f32.wgsl
index 12f1a15..55c73c5 100644
--- a/test/expressions/binary/div_by_zero/by_expression/scalar-scalar/f32.wgsl
+++ b/test/expressions/binary/div_by_zero/by_expression/scalar-scalar/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = 1.;
     var b = 0.;
diff --git a/test/expressions/binary/div_by_zero/by_expression/scalar-scalar/f32.wgsl.expected.wgsl b/test/expressions/binary/div_by_zero/by_expression/scalar-scalar/f32.wgsl.expected.wgsl
index 6c35a6e..8b3d931 100644
--- a/test/expressions/binary/div_by_zero/by_expression/scalar-scalar/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div_by_zero/by_expression/scalar-scalar/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = 1.0;
   var b = 0.0;
diff --git a/test/expressions/binary/div_by_zero/by_expression/scalar-scalar/i32.wgsl b/test/expressions/binary/div_by_zero/by_expression/scalar-scalar/i32.wgsl
index 35b4427..016e7a8 100644
--- a/test/expressions/binary/div_by_zero/by_expression/scalar-scalar/i32.wgsl
+++ b/test/expressions/binary/div_by_zero/by_expression/scalar-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = 1;
     var b = 0;
diff --git a/test/expressions/binary/div_by_zero/by_expression/scalar-scalar/i32.wgsl.expected.wgsl b/test/expressions/binary/div_by_zero/by_expression/scalar-scalar/i32.wgsl.expected.wgsl
index 6680c0b..c762d02 100644
--- a/test/expressions/binary/div_by_zero/by_expression/scalar-scalar/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div_by_zero/by_expression/scalar-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = 1;
   var b = 0;
diff --git a/test/expressions/binary/div_by_zero/by_expression/scalar-scalar/u32.wgsl b/test/expressions/binary/div_by_zero/by_expression/scalar-scalar/u32.wgsl
index 1add65a..a265dd0 100644
--- a/test/expressions/binary/div_by_zero/by_expression/scalar-scalar/u32.wgsl
+++ b/test/expressions/binary/div_by_zero/by_expression/scalar-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = 1u;
     var b = 0u;
diff --git a/test/expressions/binary/div_by_zero/by_expression/scalar-scalar/u32.wgsl.expected.wgsl b/test/expressions/binary/div_by_zero/by_expression/scalar-scalar/u32.wgsl.expected.wgsl
index ef947c3..ad82462 100644
--- a/test/expressions/binary/div_by_zero/by_expression/scalar-scalar/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div_by_zero/by_expression/scalar-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = 1u;
   var b = 0u;
diff --git a/test/expressions/binary/div_by_zero/by_expression/scalar-vec3/f32.wgsl b/test/expressions/binary/div_by_zero/by_expression/scalar-vec3/f32.wgsl
index bc06d3b..ba92b62 100644
--- a/test/expressions/binary/div_by_zero/by_expression/scalar-vec3/f32.wgsl
+++ b/test/expressions/binary/div_by_zero/by_expression/scalar-vec3/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = 4.;
     var b = vec3<f32>(0., 2., 0.);
diff --git a/test/expressions/binary/div_by_zero/by_expression/scalar-vec3/f32.wgsl.expected.wgsl b/test/expressions/binary/div_by_zero/by_expression/scalar-vec3/f32.wgsl.expected.wgsl
index 6c0a259..c7a6ac1 100644
--- a/test/expressions/binary/div_by_zero/by_expression/scalar-vec3/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div_by_zero/by_expression/scalar-vec3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = 4.0;
   var b = vec3<f32>(0.0, 2.0, 0.0);
diff --git a/test/expressions/binary/div_by_zero/by_expression/scalar-vec3/i32.wgsl b/test/expressions/binary/div_by_zero/by_expression/scalar-vec3/i32.wgsl
index 7625e4c..9dc07d5 100644
--- a/test/expressions/binary/div_by_zero/by_expression/scalar-vec3/i32.wgsl
+++ b/test/expressions/binary/div_by_zero/by_expression/scalar-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = 4;
     var b = vec3<i32>(0, 2, 0);
diff --git a/test/expressions/binary/div_by_zero/by_expression/scalar-vec3/i32.wgsl.expected.wgsl b/test/expressions/binary/div_by_zero/by_expression/scalar-vec3/i32.wgsl.expected.wgsl
index 58c7456..e4dd4b4 100644
--- a/test/expressions/binary/div_by_zero/by_expression/scalar-vec3/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div_by_zero/by_expression/scalar-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = 4;
   var b = vec3<i32>(0, 2, 0);
diff --git a/test/expressions/binary/div_by_zero/by_expression/scalar-vec3/u32.wgsl b/test/expressions/binary/div_by_zero/by_expression/scalar-vec3/u32.wgsl
index 86989de..0547691 100644
--- a/test/expressions/binary/div_by_zero/by_expression/scalar-vec3/u32.wgsl
+++ b/test/expressions/binary/div_by_zero/by_expression/scalar-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = 4u;
     var b = vec3<u32>(0u, 2u, 0u);
diff --git a/test/expressions/binary/div_by_zero/by_expression/scalar-vec3/u32.wgsl.expected.wgsl b/test/expressions/binary/div_by_zero/by_expression/scalar-vec3/u32.wgsl.expected.wgsl
index 563beef..9f103fb 100644
--- a/test/expressions/binary/div_by_zero/by_expression/scalar-vec3/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div_by_zero/by_expression/scalar-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = 4u;
   var b = vec3<u32>(0u, 2u, 0u);
diff --git a/test/expressions/binary/div_by_zero/by_expression/vec3-scalar/f32.wgsl b/test/expressions/binary/div_by_zero/by_expression/vec3-scalar/f32.wgsl
index 6e95ded..98ff5f0 100644
--- a/test/expressions/binary/div_by_zero/by_expression/vec3-scalar/f32.wgsl
+++ b/test/expressions/binary/div_by_zero/by_expression/vec3-scalar/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = vec3<f32>(1., 2., 3.);
     var b = 0.;
diff --git a/test/expressions/binary/div_by_zero/by_expression/vec3-scalar/f32.wgsl.expected.wgsl b/test/expressions/binary/div_by_zero/by_expression/vec3-scalar/f32.wgsl.expected.wgsl
index 27f709e..f0df1be 100644
--- a/test/expressions/binary/div_by_zero/by_expression/vec3-scalar/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div_by_zero/by_expression/vec3-scalar/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = vec3<f32>(1.0, 2.0, 3.0);
   var b = 0.0;
diff --git a/test/expressions/binary/div_by_zero/by_expression/vec3-scalar/i32.wgsl b/test/expressions/binary/div_by_zero/by_expression/vec3-scalar/i32.wgsl
index c04ada0..b792c3a 100644
--- a/test/expressions/binary/div_by_zero/by_expression/vec3-scalar/i32.wgsl
+++ b/test/expressions/binary/div_by_zero/by_expression/vec3-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = vec3<i32>(1, 2, 3);
     var b = 0;
diff --git a/test/expressions/binary/div_by_zero/by_expression/vec3-scalar/i32.wgsl.expected.wgsl b/test/expressions/binary/div_by_zero/by_expression/vec3-scalar/i32.wgsl.expected.wgsl
index 6bd3b6d..6bbc51b 100644
--- a/test/expressions/binary/div_by_zero/by_expression/vec3-scalar/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div_by_zero/by_expression/vec3-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = vec3<i32>(1, 2, 3);
   var b = 0;
diff --git a/test/expressions/binary/div_by_zero/by_expression/vec3-scalar/u32.wgsl b/test/expressions/binary/div_by_zero/by_expression/vec3-scalar/u32.wgsl
index eef2625..4e4eacb 100644
--- a/test/expressions/binary/div_by_zero/by_expression/vec3-scalar/u32.wgsl
+++ b/test/expressions/binary/div_by_zero/by_expression/vec3-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = vec3<u32>(1u, 2u, 3u);
     var b = 0u;
diff --git a/test/expressions/binary/div_by_zero/by_expression/vec3-scalar/u32.wgsl.expected.wgsl b/test/expressions/binary/div_by_zero/by_expression/vec3-scalar/u32.wgsl.expected.wgsl
index 31867ef..2387364 100644
--- a/test/expressions/binary/div_by_zero/by_expression/vec3-scalar/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div_by_zero/by_expression/vec3-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = vec3<u32>(1u, 2u, 3u);
   var b = 0u;
diff --git a/test/expressions/binary/div_by_zero/by_expression/vec3-vec3/f32.wgsl b/test/expressions/binary/div_by_zero/by_expression/vec3-vec3/f32.wgsl
index 351527d..69761db 100644
--- a/test/expressions/binary/div_by_zero/by_expression/vec3-vec3/f32.wgsl
+++ b/test/expressions/binary/div_by_zero/by_expression/vec3-vec3/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = vec3<f32>(1., 2., 3.);
     var b = vec3<f32>(0., 5., 0.);
diff --git a/test/expressions/binary/div_by_zero/by_expression/vec3-vec3/f32.wgsl.expected.wgsl b/test/expressions/binary/div_by_zero/by_expression/vec3-vec3/f32.wgsl.expected.wgsl
index f3eb992..2e518af 100644
--- a/test/expressions/binary/div_by_zero/by_expression/vec3-vec3/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div_by_zero/by_expression/vec3-vec3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = vec3<f32>(1.0, 2.0, 3.0);
   var b = vec3<f32>(0.0, 5.0, 0.0);
diff --git a/test/expressions/binary/div_by_zero/by_expression/vec3-vec3/i32.wgsl b/test/expressions/binary/div_by_zero/by_expression/vec3-vec3/i32.wgsl
index ab6ecd4..65e13dc 100644
--- a/test/expressions/binary/div_by_zero/by_expression/vec3-vec3/i32.wgsl
+++ b/test/expressions/binary/div_by_zero/by_expression/vec3-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = vec3<i32>(1, 2, 3);
     var b = vec3<i32>(0, 5, 0);
diff --git a/test/expressions/binary/div_by_zero/by_expression/vec3-vec3/i32.wgsl.expected.wgsl b/test/expressions/binary/div_by_zero/by_expression/vec3-vec3/i32.wgsl.expected.wgsl
index 0e81db7..3700b57 100644
--- a/test/expressions/binary/div_by_zero/by_expression/vec3-vec3/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div_by_zero/by_expression/vec3-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = vec3<i32>(1, 2, 3);
   var b = vec3<i32>(0, 5, 0);
diff --git a/test/expressions/binary/div_by_zero/by_expression/vec3-vec3/u32.wgsl b/test/expressions/binary/div_by_zero/by_expression/vec3-vec3/u32.wgsl
index f55edd5..d2e0417 100644
--- a/test/expressions/binary/div_by_zero/by_expression/vec3-vec3/u32.wgsl
+++ b/test/expressions/binary/div_by_zero/by_expression/vec3-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = vec3<u32>(1u, 2u, 3u);
     var b = vec3<u32>(0u, 5u, 0u);
diff --git a/test/expressions/binary/div_by_zero/by_expression/vec3-vec3/u32.wgsl.expected.wgsl b/test/expressions/binary/div_by_zero/by_expression/vec3-vec3/u32.wgsl.expected.wgsl
index 1d60a13..ab03350 100644
--- a/test/expressions/binary/div_by_zero/by_expression/vec3-vec3/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div_by_zero/by_expression/vec3-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = vec3<u32>(1u, 2u, 3u);
   var b = vec3<u32>(0u, 5u, 0u);
diff --git a/test/expressions/binary/div_by_zero/by_identifier/scalar-scalar/f32.wgsl b/test/expressions/binary/div_by_zero/by_identifier/scalar-scalar/f32.wgsl
index 2dff3b7..2084ec5 100644
--- a/test/expressions/binary/div_by_zero/by_identifier/scalar-scalar/f32.wgsl
+++ b/test/expressions/binary/div_by_zero/by_identifier/scalar-scalar/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = 1.;
     var b = 0.;
diff --git a/test/expressions/binary/div_by_zero/by_identifier/scalar-scalar/f32.wgsl.expected.wgsl b/test/expressions/binary/div_by_zero/by_identifier/scalar-scalar/f32.wgsl.expected.wgsl
index 332c2b7..d616f9b 100644
--- a/test/expressions/binary/div_by_zero/by_identifier/scalar-scalar/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div_by_zero/by_identifier/scalar-scalar/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = 1.0;
   var b = 0.0;
diff --git a/test/expressions/binary/div_by_zero/by_identifier/scalar-scalar/i32.wgsl b/test/expressions/binary/div_by_zero/by_identifier/scalar-scalar/i32.wgsl
index 375c773..b693c7c 100644
--- a/test/expressions/binary/div_by_zero/by_identifier/scalar-scalar/i32.wgsl
+++ b/test/expressions/binary/div_by_zero/by_identifier/scalar-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = 1;
     var b = 0;
diff --git a/test/expressions/binary/div_by_zero/by_identifier/scalar-scalar/i32.wgsl.expected.wgsl b/test/expressions/binary/div_by_zero/by_identifier/scalar-scalar/i32.wgsl.expected.wgsl
index 90d99f4..da1a3c4 100644
--- a/test/expressions/binary/div_by_zero/by_identifier/scalar-scalar/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div_by_zero/by_identifier/scalar-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = 1;
   var b = 0;
diff --git a/test/expressions/binary/div_by_zero/by_identifier/scalar-scalar/u32.wgsl b/test/expressions/binary/div_by_zero/by_identifier/scalar-scalar/u32.wgsl
index b555e24..7cab8cf 100644
--- a/test/expressions/binary/div_by_zero/by_identifier/scalar-scalar/u32.wgsl
+++ b/test/expressions/binary/div_by_zero/by_identifier/scalar-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = 1u;
     var b = 0u;
diff --git a/test/expressions/binary/div_by_zero/by_identifier/scalar-scalar/u32.wgsl.expected.wgsl b/test/expressions/binary/div_by_zero/by_identifier/scalar-scalar/u32.wgsl.expected.wgsl
index 478767e..7ac2a45 100644
--- a/test/expressions/binary/div_by_zero/by_identifier/scalar-scalar/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div_by_zero/by_identifier/scalar-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = 1u;
   var b = 0u;
diff --git a/test/expressions/binary/div_by_zero/by_identifier/scalar-vec3/f32.wgsl b/test/expressions/binary/div_by_zero/by_identifier/scalar-vec3/f32.wgsl
index 16588a9..62267d4 100644
--- a/test/expressions/binary/div_by_zero/by_identifier/scalar-vec3/f32.wgsl
+++ b/test/expressions/binary/div_by_zero/by_identifier/scalar-vec3/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = 4.;
     var b = vec3<f32>(0., 2., 0.);
diff --git a/test/expressions/binary/div_by_zero/by_identifier/scalar-vec3/f32.wgsl.expected.wgsl b/test/expressions/binary/div_by_zero/by_identifier/scalar-vec3/f32.wgsl.expected.wgsl
index 0d44b76..538b208 100644
--- a/test/expressions/binary/div_by_zero/by_identifier/scalar-vec3/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div_by_zero/by_identifier/scalar-vec3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = 4.0;
   var b = vec3<f32>(0.0, 2.0, 0.0);
diff --git a/test/expressions/binary/div_by_zero/by_identifier/scalar-vec3/i32.wgsl b/test/expressions/binary/div_by_zero/by_identifier/scalar-vec3/i32.wgsl
index 8d25a71..c2e1627 100644
--- a/test/expressions/binary/div_by_zero/by_identifier/scalar-vec3/i32.wgsl
+++ b/test/expressions/binary/div_by_zero/by_identifier/scalar-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = 4;
     var b = vec3<i32>(0, 2, 0);
diff --git a/test/expressions/binary/div_by_zero/by_identifier/scalar-vec3/i32.wgsl.expected.wgsl b/test/expressions/binary/div_by_zero/by_identifier/scalar-vec3/i32.wgsl.expected.wgsl
index 2bc4678..c29283e 100644
--- a/test/expressions/binary/div_by_zero/by_identifier/scalar-vec3/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div_by_zero/by_identifier/scalar-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = 4;
   var b = vec3<i32>(0, 2, 0);
diff --git a/test/expressions/binary/div_by_zero/by_identifier/scalar-vec3/u32.wgsl b/test/expressions/binary/div_by_zero/by_identifier/scalar-vec3/u32.wgsl
index f417803..6810e9a 100644
--- a/test/expressions/binary/div_by_zero/by_identifier/scalar-vec3/u32.wgsl
+++ b/test/expressions/binary/div_by_zero/by_identifier/scalar-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = 4u;
     var b = vec3<u32>(0u, 2u, 0u);
diff --git a/test/expressions/binary/div_by_zero/by_identifier/scalar-vec3/u32.wgsl.expected.wgsl b/test/expressions/binary/div_by_zero/by_identifier/scalar-vec3/u32.wgsl.expected.wgsl
index 147f4d2..286538a 100644
--- a/test/expressions/binary/div_by_zero/by_identifier/scalar-vec3/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div_by_zero/by_identifier/scalar-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = 4u;
   var b = vec3<u32>(0u, 2u, 0u);
diff --git a/test/expressions/binary/div_by_zero/by_identifier/vec3-scalar/f32.wgsl b/test/expressions/binary/div_by_zero/by_identifier/vec3-scalar/f32.wgsl
index 2f23ba4..71b7474 100644
--- a/test/expressions/binary/div_by_zero/by_identifier/vec3-scalar/f32.wgsl
+++ b/test/expressions/binary/div_by_zero/by_identifier/vec3-scalar/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = vec3<f32>(1., 2., 3.);
     var b = 0.;
diff --git a/test/expressions/binary/div_by_zero/by_identifier/vec3-scalar/f32.wgsl.expected.wgsl b/test/expressions/binary/div_by_zero/by_identifier/vec3-scalar/f32.wgsl.expected.wgsl
index fed430a..8caf79e 100644
--- a/test/expressions/binary/div_by_zero/by_identifier/vec3-scalar/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div_by_zero/by_identifier/vec3-scalar/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = vec3<f32>(1.0, 2.0, 3.0);
   var b = 0.0;
diff --git a/test/expressions/binary/div_by_zero/by_identifier/vec3-scalar/i32.wgsl b/test/expressions/binary/div_by_zero/by_identifier/vec3-scalar/i32.wgsl
index 55aa4bc..27fea32 100644
--- a/test/expressions/binary/div_by_zero/by_identifier/vec3-scalar/i32.wgsl
+++ b/test/expressions/binary/div_by_zero/by_identifier/vec3-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = vec3<i32>(1, 2, 3);
     var b = 0;
diff --git a/test/expressions/binary/div_by_zero/by_identifier/vec3-scalar/i32.wgsl.expected.wgsl b/test/expressions/binary/div_by_zero/by_identifier/vec3-scalar/i32.wgsl.expected.wgsl
index 56d8e9d..f11c30e 100644
--- a/test/expressions/binary/div_by_zero/by_identifier/vec3-scalar/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div_by_zero/by_identifier/vec3-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = vec3<i32>(1, 2, 3);
   var b = 0;
diff --git a/test/expressions/binary/div_by_zero/by_identifier/vec3-scalar/u32.wgsl b/test/expressions/binary/div_by_zero/by_identifier/vec3-scalar/u32.wgsl
index 4076d88..ea02f5c 100644
--- a/test/expressions/binary/div_by_zero/by_identifier/vec3-scalar/u32.wgsl
+++ b/test/expressions/binary/div_by_zero/by_identifier/vec3-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = vec3<u32>(1u, 2u, 3u);
     var b = 0u;
diff --git a/test/expressions/binary/div_by_zero/by_identifier/vec3-scalar/u32.wgsl.expected.wgsl b/test/expressions/binary/div_by_zero/by_identifier/vec3-scalar/u32.wgsl.expected.wgsl
index e55b987..0154b03 100644
--- a/test/expressions/binary/div_by_zero/by_identifier/vec3-scalar/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div_by_zero/by_identifier/vec3-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = vec3<u32>(1u, 2u, 3u);
   var b = 0u;
diff --git a/test/expressions/binary/div_by_zero/by_identifier/vec3-vec3/f32.wgsl b/test/expressions/binary/div_by_zero/by_identifier/vec3-vec3/f32.wgsl
index f5092ad..fdcbb74 100644
--- a/test/expressions/binary/div_by_zero/by_identifier/vec3-vec3/f32.wgsl
+++ b/test/expressions/binary/div_by_zero/by_identifier/vec3-vec3/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = vec3<f32>(1., 2., 3.);
     var b = vec3<f32>(0., 5., 0.);
diff --git a/test/expressions/binary/div_by_zero/by_identifier/vec3-vec3/f32.wgsl.expected.wgsl b/test/expressions/binary/div_by_zero/by_identifier/vec3-vec3/f32.wgsl.expected.wgsl
index 534f264..d37119a 100644
--- a/test/expressions/binary/div_by_zero/by_identifier/vec3-vec3/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div_by_zero/by_identifier/vec3-vec3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = vec3<f32>(1.0, 2.0, 3.0);
   var b = vec3<f32>(0.0, 5.0, 0.0);
diff --git a/test/expressions/binary/div_by_zero/by_identifier/vec3-vec3/i32.wgsl b/test/expressions/binary/div_by_zero/by_identifier/vec3-vec3/i32.wgsl
index 07d8e62..bb4bda3 100644
--- a/test/expressions/binary/div_by_zero/by_identifier/vec3-vec3/i32.wgsl
+++ b/test/expressions/binary/div_by_zero/by_identifier/vec3-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = vec3<i32>(1, 2, 3);
     var b = vec3<i32>(0, 5, 0);
diff --git a/test/expressions/binary/div_by_zero/by_identifier/vec3-vec3/i32.wgsl.expected.wgsl b/test/expressions/binary/div_by_zero/by_identifier/vec3-vec3/i32.wgsl.expected.wgsl
index 5ce7a80..17e72b3 100644
--- a/test/expressions/binary/div_by_zero/by_identifier/vec3-vec3/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div_by_zero/by_identifier/vec3-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = vec3<i32>(1, 2, 3);
   var b = vec3<i32>(0, 5, 0);
diff --git a/test/expressions/binary/div_by_zero/by_identifier/vec3-vec3/u32.wgsl b/test/expressions/binary/div_by_zero/by_identifier/vec3-vec3/u32.wgsl
index 218e516..26097c9 100644
--- a/test/expressions/binary/div_by_zero/by_identifier/vec3-vec3/u32.wgsl
+++ b/test/expressions/binary/div_by_zero/by_identifier/vec3-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = vec3<u32>(1u, 2u, 3u);
     var b = vec3<u32>(0u, 5u, 0u);
diff --git a/test/expressions/binary/div_by_zero/by_identifier/vec3-vec3/u32.wgsl.expected.wgsl b/test/expressions/binary/div_by_zero/by_identifier/vec3-vec3/u32.wgsl.expected.wgsl
index 35b85a1..f2206ee 100644
--- a/test/expressions/binary/div_by_zero/by_identifier/vec3-vec3/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/div_by_zero/by_identifier/vec3-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = vec3<u32>(1u, 2u, 3u);
   var b = vec3<u32>(0u, 5u, 0u);
diff --git a/test/expressions/binary/left-shift/scalar-scalar/i32.wgsl b/test/expressions/binary/left-shift/scalar-scalar/i32.wgsl
index 641f5bf..1779cb0 100644
--- a/test/expressions/binary/left-shift/scalar-scalar/i32.wgsl
+++ b/test/expressions/binary/left-shift/scalar-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 1;
     let b = 2u;
diff --git a/test/expressions/binary/left-shift/scalar-scalar/i32.wgsl.expected.wgsl b/test/expressions/binary/left-shift/scalar-scalar/i32.wgsl.expected.wgsl
index df07fda..69143dd 100644
--- a/test/expressions/binary/left-shift/scalar-scalar/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/left-shift/scalar-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 1;
   let b = 2u;
diff --git a/test/expressions/binary/left-shift/scalar-scalar/u32.wgsl b/test/expressions/binary/left-shift/scalar-scalar/u32.wgsl
index a1a39b6..9638b83 100644
--- a/test/expressions/binary/left-shift/scalar-scalar/u32.wgsl
+++ b/test/expressions/binary/left-shift/scalar-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 1u;
     let b = 2u;
diff --git a/test/expressions/binary/left-shift/scalar-scalar/u32.wgsl.expected.wgsl b/test/expressions/binary/left-shift/scalar-scalar/u32.wgsl.expected.wgsl
index 1aee254..39595c9 100644
--- a/test/expressions/binary/left-shift/scalar-scalar/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/left-shift/scalar-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 1u;
   let b = 2u;
diff --git a/test/expressions/binary/left-shift/vector-vector/i32.wgsl b/test/expressions/binary/left-shift/vector-vector/i32.wgsl
index 78156b2..fd21fb4 100644
--- a/test/expressions/binary/left-shift/vector-vector/i32.wgsl
+++ b/test/expressions/binary/left-shift/vector-vector/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<i32>(1, 2, 3);
     let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/expressions/binary/left-shift/vector-vector/i32.wgsl.expected.wgsl b/test/expressions/binary/left-shift/vector-vector/i32.wgsl.expected.wgsl
index 3a752fa..43d4d00 100644
--- a/test/expressions/binary/left-shift/vector-vector/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/left-shift/vector-vector/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<i32>(1, 2, 3);
   let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/expressions/binary/left-shift/vector-vector/u32.wgsl b/test/expressions/binary/left-shift/vector-vector/u32.wgsl
index c85d91e..7e0db01 100644
--- a/test/expressions/binary/left-shift/vector-vector/u32.wgsl
+++ b/test/expressions/binary/left-shift/vector-vector/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<u32>(1u, 2u, 3u);
     let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/expressions/binary/left-shift/vector-vector/u32.wgsl.expected.wgsl b/test/expressions/binary/left-shift/vector-vector/u32.wgsl.expected.wgsl
index 987e680..12a5cde 100644
--- a/test/expressions/binary/left-shift/vector-vector/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/left-shift/vector-vector/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<u32>(1u, 2u, 3u);
   let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/expressions/binary/mod/scalar-scalar/f32.wgsl b/test/expressions/binary/mod/scalar-scalar/f32.wgsl
index 4ab4923..20513e7 100644
--- a/test/expressions/binary/mod/scalar-scalar/f32.wgsl
+++ b/test/expressions/binary/mod/scalar-scalar/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 1.;
     let b = 2.;
diff --git a/test/expressions/binary/mod/scalar-scalar/f32.wgsl.expected.wgsl b/test/expressions/binary/mod/scalar-scalar/f32.wgsl.expected.wgsl
index 66c2041..eebb252 100644
--- a/test/expressions/binary/mod/scalar-scalar/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mod/scalar-scalar/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 1.0;
   let b = 2.0;
diff --git a/test/expressions/binary/mod/scalar-scalar/i32.wgsl b/test/expressions/binary/mod/scalar-scalar/i32.wgsl
index f186706..12a7c72 100644
--- a/test/expressions/binary/mod/scalar-scalar/i32.wgsl
+++ b/test/expressions/binary/mod/scalar-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 1;
     let b = 2;
diff --git a/test/expressions/binary/mod/scalar-scalar/i32.wgsl.expected.wgsl b/test/expressions/binary/mod/scalar-scalar/i32.wgsl.expected.wgsl
index f692f9e..549140e 100644
--- a/test/expressions/binary/mod/scalar-scalar/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mod/scalar-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 1;
   let b = 2;
diff --git a/test/expressions/binary/mod/scalar-scalar/u32.wgsl b/test/expressions/binary/mod/scalar-scalar/u32.wgsl
index d1b56f7..96042bd 100644
--- a/test/expressions/binary/mod/scalar-scalar/u32.wgsl
+++ b/test/expressions/binary/mod/scalar-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 1u;
     let b = 2u;
diff --git a/test/expressions/binary/mod/scalar-scalar/u32.wgsl.expected.wgsl b/test/expressions/binary/mod/scalar-scalar/u32.wgsl.expected.wgsl
index e3da2c7..d3835ed 100644
--- a/test/expressions/binary/mod/scalar-scalar/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mod/scalar-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 1u;
   let b = 2u;
diff --git a/test/expressions/binary/mod/vec3-vec3/f32.wgsl b/test/expressions/binary/mod/vec3-vec3/f32.wgsl
index d7cebb2..815fb66 100644
--- a/test/expressions/binary/mod/vec3-vec3/f32.wgsl
+++ b/test/expressions/binary/mod/vec3-vec3/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<f32>(1., 2., 3.);
     let b = vec3<f32>(4., 5., 6.);
diff --git a/test/expressions/binary/mod/vec3-vec3/f32.wgsl.expected.wgsl b/test/expressions/binary/mod/vec3-vec3/f32.wgsl.expected.wgsl
index d0ef8c9..d37c9d9 100644
--- a/test/expressions/binary/mod/vec3-vec3/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mod/vec3-vec3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<f32>(1.0, 2.0, 3.0);
   let b = vec3<f32>(4.0, 5.0, 6.0);
diff --git a/test/expressions/binary/mod/vec3-vec3/i32.wgsl b/test/expressions/binary/mod/vec3-vec3/i32.wgsl
index b26013f..55bfa49 100644
--- a/test/expressions/binary/mod/vec3-vec3/i32.wgsl
+++ b/test/expressions/binary/mod/vec3-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<i32>(1, 2, 3);
     let b = vec3<i32>(4, 5, 6);
diff --git a/test/expressions/binary/mod/vec3-vec3/i32.wgsl.expected.wgsl b/test/expressions/binary/mod/vec3-vec3/i32.wgsl.expected.wgsl
index 553af2b..1769386 100644
--- a/test/expressions/binary/mod/vec3-vec3/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mod/vec3-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<i32>(1, 2, 3);
   let b = vec3<i32>(4, 5, 6);
diff --git a/test/expressions/binary/mod/vec3-vec3/u32.wgsl b/test/expressions/binary/mod/vec3-vec3/u32.wgsl
index 2ad96bc..02f1eea 100644
--- a/test/expressions/binary/mod/vec3-vec3/u32.wgsl
+++ b/test/expressions/binary/mod/vec3-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<u32>(1u, 2u, 3u);
     let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/expressions/binary/mod/vec3-vec3/u32.wgsl.expected.wgsl b/test/expressions/binary/mod/vec3-vec3/u32.wgsl.expected.wgsl
index ca63195..36fa71e 100644
--- a/test/expressions/binary/mod/vec3-vec3/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mod/vec3-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<u32>(1u, 2u, 3u);
   let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/expressions/binary/mod_by_zero/by_constant/scalar-scalar/f32.wgsl b/test/expressions/binary/mod_by_zero/by_constant/scalar-scalar/f32.wgsl
index b34099c..6d014b8 100644
--- a/test/expressions/binary/mod_by_zero/by_constant/scalar-scalar/f32.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_constant/scalar-scalar/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 1.;
     let b = 0.;
diff --git a/test/expressions/binary/mod_by_zero/by_constant/scalar-scalar/f32.wgsl.expected.wgsl b/test/expressions/binary/mod_by_zero/by_constant/scalar-scalar/f32.wgsl.expected.wgsl
index 235be93..542a2e7 100644
--- a/test/expressions/binary/mod_by_zero/by_constant/scalar-scalar/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_constant/scalar-scalar/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 1.0;
   let b = 0.0;
diff --git a/test/expressions/binary/mod_by_zero/by_constant/scalar-scalar/i32.wgsl b/test/expressions/binary/mod_by_zero/by_constant/scalar-scalar/i32.wgsl
index 9900e05..4c05b0e 100644
--- a/test/expressions/binary/mod_by_zero/by_constant/scalar-scalar/i32.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_constant/scalar-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 1;
     let b = 0;
diff --git a/test/expressions/binary/mod_by_zero/by_constant/scalar-scalar/i32.wgsl.expected.wgsl b/test/expressions/binary/mod_by_zero/by_constant/scalar-scalar/i32.wgsl.expected.wgsl
index 4c6fdf9..e63b37d 100644
--- a/test/expressions/binary/mod_by_zero/by_constant/scalar-scalar/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_constant/scalar-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 1;
   let b = 0;
diff --git a/test/expressions/binary/mod_by_zero/by_constant/scalar-scalar/u32.wgsl b/test/expressions/binary/mod_by_zero/by_constant/scalar-scalar/u32.wgsl
index 4fb0f9f..a63ca8f 100644
--- a/test/expressions/binary/mod_by_zero/by_constant/scalar-scalar/u32.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_constant/scalar-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 1u;
     let b = 0u;
diff --git a/test/expressions/binary/mod_by_zero/by_constant/scalar-scalar/u32.wgsl.expected.wgsl b/test/expressions/binary/mod_by_zero/by_constant/scalar-scalar/u32.wgsl.expected.wgsl
index 62a525b..02a078b 100644
--- a/test/expressions/binary/mod_by_zero/by_constant/scalar-scalar/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_constant/scalar-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 1u;
   let b = 0u;
diff --git a/test/expressions/binary/mod_by_zero/by_constant/scalar-vec3/i32.wgsl b/test/expressions/binary/mod_by_zero/by_constant/scalar-vec3/i32.wgsl
index 9b27df2..b319205 100644
--- a/test/expressions/binary/mod_by_zero/by_constant/scalar-vec3/i32.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_constant/scalar-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 4;
     let b = vec3<i32>(0, 2, 0);
diff --git a/test/expressions/binary/mod_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.wgsl b/test/expressions/binary/mod_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.wgsl
index dca7442..5b99aea 100644
--- a/test/expressions/binary/mod_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 4;
   let b = vec3<i32>(0, 2, 0);
diff --git a/test/expressions/binary/mod_by_zero/by_constant/scalar-vec3/u32.wgsl b/test/expressions/binary/mod_by_zero/by_constant/scalar-vec3/u32.wgsl
index 494a712..94494c3 100644
--- a/test/expressions/binary/mod_by_zero/by_constant/scalar-vec3/u32.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_constant/scalar-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 4u;
     let b = vec3<u32>(0u, 2u, 0u);
diff --git a/test/expressions/binary/mod_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.wgsl b/test/expressions/binary/mod_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.wgsl
index c061d41..0aca8c0 100644
--- a/test/expressions/binary/mod_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 4u;
   let b = vec3<u32>(0u, 2u, 0u);
diff --git a/test/expressions/binary/mod_by_zero/by_constant/vec3-scalar/i32.wgsl b/test/expressions/binary/mod_by_zero/by_constant/vec3-scalar/i32.wgsl
index 2fe5f2d..0a0f4d4 100644
--- a/test/expressions/binary/mod_by_zero/by_constant/vec3-scalar/i32.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_constant/vec3-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<i32>(1, 2, 3);
     let b = 0;
diff --git a/test/expressions/binary/mod_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.wgsl b/test/expressions/binary/mod_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.wgsl
index 0aac1fa..8cc8abe 100644
--- a/test/expressions/binary/mod_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<i32>(1, 2, 3);
   let b = 0;
diff --git a/test/expressions/binary/mod_by_zero/by_constant/vec3-scalar/u32.wgsl b/test/expressions/binary/mod_by_zero/by_constant/vec3-scalar/u32.wgsl
index 25b884f..796e15f 100644
--- a/test/expressions/binary/mod_by_zero/by_constant/vec3-scalar/u32.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_constant/vec3-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<u32>(1u, 2u, 3u);
     let b = 0u;
diff --git a/test/expressions/binary/mod_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.wgsl b/test/expressions/binary/mod_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.wgsl
index 7665b70..98c4523 100644
--- a/test/expressions/binary/mod_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<u32>(1u, 2u, 3u);
   let b = 0u;
diff --git a/test/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f32.wgsl b/test/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f32.wgsl
index 61df86d..64fc4d5 100644
--- a/test/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f32.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<f32>(1., 2., 3.);
     let b = vec3<f32>(0., 5., 0.);
diff --git a/test/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.wgsl b/test/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.wgsl
index 180e7d9..227a070 100644
--- a/test/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<f32>(1.0, 2.0, 3.0);
   let b = vec3<f32>(0.0, 5.0, 0.0);
diff --git a/test/expressions/binary/mod_by_zero/by_constant/vec3-vec3/i32.wgsl b/test/expressions/binary/mod_by_zero/by_constant/vec3-vec3/i32.wgsl
index 23aa96c..9e64d49 100644
--- a/test/expressions/binary/mod_by_zero/by_constant/vec3-vec3/i32.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_constant/vec3-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<i32>(1, 2, 3);
     let b = vec3<i32>(0, 5, 0);
diff --git a/test/expressions/binary/mod_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.wgsl b/test/expressions/binary/mod_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.wgsl
index 259840d..b6fc8c0 100644
--- a/test/expressions/binary/mod_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<i32>(1, 2, 3);
   let b = vec3<i32>(0, 5, 0);
diff --git a/test/expressions/binary/mod_by_zero/by_constant/vec3-vec3/u32.wgsl b/test/expressions/binary/mod_by_zero/by_constant/vec3-vec3/u32.wgsl
index ee9eecc..6724d92 100644
--- a/test/expressions/binary/mod_by_zero/by_constant/vec3-vec3/u32.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_constant/vec3-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<u32>(1u, 2u, 3u);
     let b = vec3<u32>(0u, 5u, 0u);
diff --git a/test/expressions/binary/mod_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.wgsl b/test/expressions/binary/mod_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.wgsl
index 08943bb..24d48be 100644
--- a/test/expressions/binary/mod_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<u32>(1u, 2u, 3u);
   let b = vec3<u32>(0u, 5u, 0u);
diff --git a/test/expressions/binary/mod_by_zero/by_expression/scalar-scalar/f32.wgsl b/test/expressions/binary/mod_by_zero/by_expression/scalar-scalar/f32.wgsl
index a4e2202..820231b 100644
--- a/test/expressions/binary/mod_by_zero/by_expression/scalar-scalar/f32.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_expression/scalar-scalar/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = 1.;
     var b = 0.;
diff --git a/test/expressions/binary/mod_by_zero/by_expression/scalar-scalar/f32.wgsl.expected.wgsl b/test/expressions/binary/mod_by_zero/by_expression/scalar-scalar/f32.wgsl.expected.wgsl
index b6c7b67..019d543 100644
--- a/test/expressions/binary/mod_by_zero/by_expression/scalar-scalar/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_expression/scalar-scalar/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = 1.0;
   var b = 0.0;
diff --git a/test/expressions/binary/mod_by_zero/by_expression/scalar-scalar/i32.wgsl b/test/expressions/binary/mod_by_zero/by_expression/scalar-scalar/i32.wgsl
index 7f8d8d0..949d0fe 100644
--- a/test/expressions/binary/mod_by_zero/by_expression/scalar-scalar/i32.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_expression/scalar-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = 1;
     var b = 0;
diff --git a/test/expressions/binary/mod_by_zero/by_expression/scalar-scalar/i32.wgsl.expected.wgsl b/test/expressions/binary/mod_by_zero/by_expression/scalar-scalar/i32.wgsl.expected.wgsl
index 581f6df..74888f2 100644
--- a/test/expressions/binary/mod_by_zero/by_expression/scalar-scalar/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_expression/scalar-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = 1;
   var b = 0;
diff --git a/test/expressions/binary/mod_by_zero/by_expression/scalar-scalar/u32.wgsl b/test/expressions/binary/mod_by_zero/by_expression/scalar-scalar/u32.wgsl
index edd134b..caf8b51 100644
--- a/test/expressions/binary/mod_by_zero/by_expression/scalar-scalar/u32.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_expression/scalar-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = 1u;
     var b = 0u;
diff --git a/test/expressions/binary/mod_by_zero/by_expression/scalar-scalar/u32.wgsl.expected.wgsl b/test/expressions/binary/mod_by_zero/by_expression/scalar-scalar/u32.wgsl.expected.wgsl
index f894e6d..a75275d 100644
--- a/test/expressions/binary/mod_by_zero/by_expression/scalar-scalar/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_expression/scalar-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = 1u;
   var b = 0u;
diff --git a/test/expressions/binary/mod_by_zero/by_expression/scalar-vec3/i32.wgsl b/test/expressions/binary/mod_by_zero/by_expression/scalar-vec3/i32.wgsl
index b90a404..d341588 100644
--- a/test/expressions/binary/mod_by_zero/by_expression/scalar-vec3/i32.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_expression/scalar-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = 4;
     var b = vec3<i32>(0, 2, 0);
diff --git a/test/expressions/binary/mod_by_zero/by_expression/scalar-vec3/i32.wgsl.expected.wgsl b/test/expressions/binary/mod_by_zero/by_expression/scalar-vec3/i32.wgsl.expected.wgsl
index 724d89b..1cff64c 100644
--- a/test/expressions/binary/mod_by_zero/by_expression/scalar-vec3/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_expression/scalar-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = 4;
   var b = vec3<i32>(0, 2, 0);
diff --git a/test/expressions/binary/mod_by_zero/by_expression/scalar-vec3/u32.wgsl b/test/expressions/binary/mod_by_zero/by_expression/scalar-vec3/u32.wgsl
index e6626f1..bbe0ada 100644
--- a/test/expressions/binary/mod_by_zero/by_expression/scalar-vec3/u32.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_expression/scalar-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = 4u;
     var b = vec3<u32>(0u, 2u, 0u);
diff --git a/test/expressions/binary/mod_by_zero/by_expression/scalar-vec3/u32.wgsl.expected.wgsl b/test/expressions/binary/mod_by_zero/by_expression/scalar-vec3/u32.wgsl.expected.wgsl
index d820f98..c292b7b 100644
--- a/test/expressions/binary/mod_by_zero/by_expression/scalar-vec3/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_expression/scalar-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = 4u;
   var b = vec3<u32>(0u, 2u, 0u);
diff --git a/test/expressions/binary/mod_by_zero/by_expression/vec3-scalar/i32.wgsl b/test/expressions/binary/mod_by_zero/by_expression/vec3-scalar/i32.wgsl
index e5dd983..732dff4 100644
--- a/test/expressions/binary/mod_by_zero/by_expression/vec3-scalar/i32.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_expression/vec3-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = vec3<i32>(1, 2, 3);
     var b = 0;
diff --git a/test/expressions/binary/mod_by_zero/by_expression/vec3-scalar/i32.wgsl.expected.wgsl b/test/expressions/binary/mod_by_zero/by_expression/vec3-scalar/i32.wgsl.expected.wgsl
index c924762..0aaa1a2 100644
--- a/test/expressions/binary/mod_by_zero/by_expression/vec3-scalar/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_expression/vec3-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = vec3<i32>(1, 2, 3);
   var b = 0;
diff --git a/test/expressions/binary/mod_by_zero/by_expression/vec3-scalar/u32.wgsl b/test/expressions/binary/mod_by_zero/by_expression/vec3-scalar/u32.wgsl
index b775a66..87c0466 100644
--- a/test/expressions/binary/mod_by_zero/by_expression/vec3-scalar/u32.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_expression/vec3-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = vec3<u32>(1u, 2u, 3u);
     var b = 0u;
diff --git a/test/expressions/binary/mod_by_zero/by_expression/vec3-scalar/u32.wgsl.expected.wgsl b/test/expressions/binary/mod_by_zero/by_expression/vec3-scalar/u32.wgsl.expected.wgsl
index d73c1a9..9433a5a 100644
--- a/test/expressions/binary/mod_by_zero/by_expression/vec3-scalar/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_expression/vec3-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = vec3<u32>(1u, 2u, 3u);
   var b = 0u;
diff --git a/test/expressions/binary/mod_by_zero/by_expression/vec3-vec3/f32.wgsl b/test/expressions/binary/mod_by_zero/by_expression/vec3-vec3/f32.wgsl
index 92e19cf..6a67f54 100644
--- a/test/expressions/binary/mod_by_zero/by_expression/vec3-vec3/f32.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_expression/vec3-vec3/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = vec3<f32>(1., 2., 3.);
     var b = vec3<f32>(0., 5., 0.);
diff --git a/test/expressions/binary/mod_by_zero/by_expression/vec3-vec3/f32.wgsl.expected.wgsl b/test/expressions/binary/mod_by_zero/by_expression/vec3-vec3/f32.wgsl.expected.wgsl
index 06e70ae..965767f 100644
--- a/test/expressions/binary/mod_by_zero/by_expression/vec3-vec3/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_expression/vec3-vec3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = vec3<f32>(1.0, 2.0, 3.0);
   var b = vec3<f32>(0.0, 5.0, 0.0);
diff --git a/test/expressions/binary/mod_by_zero/by_expression/vec3-vec3/i32.wgsl b/test/expressions/binary/mod_by_zero/by_expression/vec3-vec3/i32.wgsl
index e843464..6996804 100644
--- a/test/expressions/binary/mod_by_zero/by_expression/vec3-vec3/i32.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_expression/vec3-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = vec3<i32>(1, 2, 3);
     var b = vec3<i32>(0, 5, 0);
diff --git a/test/expressions/binary/mod_by_zero/by_expression/vec3-vec3/i32.wgsl.expected.wgsl b/test/expressions/binary/mod_by_zero/by_expression/vec3-vec3/i32.wgsl.expected.wgsl
index 78f7040..b327a60 100644
--- a/test/expressions/binary/mod_by_zero/by_expression/vec3-vec3/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_expression/vec3-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = vec3<i32>(1, 2, 3);
   var b = vec3<i32>(0, 5, 0);
diff --git a/test/expressions/binary/mod_by_zero/by_expression/vec3-vec3/u32.wgsl b/test/expressions/binary/mod_by_zero/by_expression/vec3-vec3/u32.wgsl
index ad50323..769ce16 100644
--- a/test/expressions/binary/mod_by_zero/by_expression/vec3-vec3/u32.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_expression/vec3-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = vec3<u32>(1u, 2u, 3u);
     var b = vec3<u32>(0u, 5u, 0u);
diff --git a/test/expressions/binary/mod_by_zero/by_expression/vec3-vec3/u32.wgsl.expected.wgsl b/test/expressions/binary/mod_by_zero/by_expression/vec3-vec3/u32.wgsl.expected.wgsl
index e7f2ce8..cdc7848 100644
--- a/test/expressions/binary/mod_by_zero/by_expression/vec3-vec3/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_expression/vec3-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = vec3<u32>(1u, 2u, 3u);
   var b = vec3<u32>(0u, 5u, 0u);
diff --git a/test/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/f32.wgsl b/test/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/f32.wgsl
index b80c201..ec5cc7d 100644
--- a/test/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/f32.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = 1.;
     var b = 0.;
diff --git a/test/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/f32.wgsl.expected.wgsl b/test/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/f32.wgsl.expected.wgsl
index 1b3af01..37faeaa 100644
--- a/test/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = 1.0;
   var b = 0.0;
diff --git a/test/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/i32.wgsl b/test/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/i32.wgsl
index 38874c4..3f673f9 100644
--- a/test/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/i32.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = 1;
     var b = 0;
diff --git a/test/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/i32.wgsl.expected.wgsl b/test/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/i32.wgsl.expected.wgsl
index 1b19397..241e4c3 100644
--- a/test/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = 1;
   var b = 0;
diff --git a/test/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/u32.wgsl b/test/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/u32.wgsl
index a8b6555..19f6c04 100644
--- a/test/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/u32.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = 1u;
     var b = 0u;
diff --git a/test/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/u32.wgsl.expected.wgsl b/test/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/u32.wgsl.expected.wgsl
index 1a5f726..8d6291b 100644
--- a/test/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = 1u;
   var b = 0u;
diff --git a/test/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/i32.wgsl b/test/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/i32.wgsl
index 0f9c970..ac029c5 100644
--- a/test/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/i32.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = 4;
     var b = vec3<i32>(0, 2, 0);
diff --git a/test/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/i32.wgsl.expected.wgsl b/test/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/i32.wgsl.expected.wgsl
index 30f19f4..30bdb80 100644
--- a/test/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = 4;
   var b = vec3<i32>(0, 2, 0);
diff --git a/test/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/u32.wgsl b/test/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/u32.wgsl
index 9afcb3c..74885a7 100644
--- a/test/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/u32.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = 4u;
     var b = vec3<u32>(0u, 2u, 0u);
diff --git a/test/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/u32.wgsl.expected.wgsl b/test/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/u32.wgsl.expected.wgsl
index 0e406f7..0abb9dc 100644
--- a/test/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = 4u;
   var b = vec3<u32>(0u, 2u, 0u);
diff --git a/test/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/i32.wgsl b/test/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/i32.wgsl
index 41f8c7c..8ceeb13 100644
--- a/test/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/i32.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = vec3<i32>(1, 2, 3);
     var b = 0;
diff --git a/test/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/i32.wgsl.expected.wgsl b/test/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/i32.wgsl.expected.wgsl
index dcb6939..b9f853c 100644
--- a/test/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = vec3<i32>(1, 2, 3);
   var b = 0;
diff --git a/test/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/u32.wgsl b/test/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/u32.wgsl
index 5ddae5b..aa6b581 100644
--- a/test/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/u32.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = vec3<u32>(1u, 2u, 3u);
     var b = 0u;
diff --git a/test/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/u32.wgsl.expected.wgsl b/test/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/u32.wgsl.expected.wgsl
index eabfbcd..d79da42 100644
--- a/test/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = vec3<u32>(1u, 2u, 3u);
   var b = 0u;
diff --git a/test/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/f32.wgsl b/test/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/f32.wgsl
index 7a91bd0..f5d27d5 100644
--- a/test/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/f32.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = vec3<f32>(1., 2., 3.);
     var b = vec3<f32>(0., 5., 0.);
diff --git a/test/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/f32.wgsl.expected.wgsl b/test/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/f32.wgsl.expected.wgsl
index 6d96f89..c178fab 100644
--- a/test/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = vec3<f32>(1.0, 2.0, 3.0);
   var b = vec3<f32>(0.0, 5.0, 0.0);
diff --git a/test/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/i32.wgsl b/test/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/i32.wgsl
index e9364db..129d4b0 100644
--- a/test/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/i32.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = vec3<i32>(1, 2, 3);
     var b = vec3<i32>(0, 5, 0);
diff --git a/test/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/i32.wgsl.expected.wgsl b/test/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/i32.wgsl.expected.wgsl
index ebd6b91..96c95e9 100644
--- a/test/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = vec3<i32>(1, 2, 3);
   var b = vec3<i32>(0, 5, 0);
diff --git a/test/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/u32.wgsl b/test/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/u32.wgsl
index cf77b25..b6be872 100644
--- a/test/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/u32.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var a = vec3<u32>(1u, 2u, 3u);
     var b = vec3<u32>(0u, 5u, 0u);
diff --git a/test/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/u32.wgsl.expected.wgsl b/test/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/u32.wgsl.expected.wgsl
index 615b56c..de150e4 100644
--- a/test/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var a = vec3<u32>(1u, 2u, 3u);
   var b = vec3<u32>(0u, 5u, 0u);
diff --git a/test/expressions/binary/mul/mat2x4-mat4x2/f32.wgsl b/test/expressions/binary/mul/mat2x4-mat4x2/f32.wgsl
index ade50cb..d9e4331 100644
--- a/test/expressions/binary/mul/mat2x4-mat4x2/f32.wgsl
+++ b/test/expressions/binary/mul/mat2x4-mat4x2/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = mat2x4<f32>(vec4<f32>(1., 2., 3., 4.), vec4<f32>(5., 6., 7., 8.));
     let b = mat4x2<f32>(vec2<f32>(-1., -2.), vec2<f32>(-3., -4.), vec2<f32>(-5., -6.), vec2<f32>(-7., -8.));
diff --git a/test/expressions/binary/mul/mat2x4-mat4x2/f32.wgsl.expected.wgsl b/test/expressions/binary/mul/mat2x4-mat4x2/f32.wgsl.expected.wgsl
index 794ec9b..2bdcf99 100644
--- a/test/expressions/binary/mul/mat2x4-mat4x2/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mul/mat2x4-mat4x2/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = mat2x4<f32>(vec4<f32>(1.0, 2.0, 3.0, 4.0), vec4<f32>(5.0, 6.0, 7.0, 8.0));
   let b = mat4x2<f32>(vec2<f32>(-1.0, -2.0), vec2<f32>(-3.0, -4.0), vec2<f32>(-5.0, -6.0), vec2<f32>(-7.0, -8.0));
diff --git a/test/expressions/binary/mul/mat3x2-vec3/f32.wgsl b/test/expressions/binary/mul/mat3x2-vec3/f32.wgsl
index 711e0c8..4a407bd 100644
--- a/test/expressions/binary/mul/mat3x2-vec3/f32.wgsl
+++ b/test/expressions/binary/mul/mat3x2-vec3/f32.wgsl
@@ -2,9 +2,9 @@
     matrix : mat3x2<f32>;
     vector : vec3<f32>;
 };
-[[group(0), binding(0)]] var<uniform> data: S;
+@group(0) @binding(0) var<uniform> data: S;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   let x = data.matrix * data.vector;
 }
diff --git a/test/expressions/binary/mul/mat3x2-vec3/f32.wgsl.expected.wgsl b/test/expressions/binary/mul/mat3x2-vec3/f32.wgsl.expected.wgsl
index adb8e74..4f6b25c 100644
--- a/test/expressions/binary/mul/mat3x2-vec3/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mul/mat3x2-vec3/f32.wgsl.expected.wgsl
@@ -3,9 +3,9 @@
   vector : vec3<f32>;
 }
 
-[[group(0), binding(0)]] var<uniform> data : S;
+@group(0) @binding(0) var<uniform> data : S;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   let x = (data.matrix * data.vector);
 }
diff --git a/test/expressions/binary/mul/mat3x3-mat3x3/f32.wgsl b/test/expressions/binary/mul/mat3x3-mat3x3/f32.wgsl
index 06744d7..693b097 100644
--- a/test/expressions/binary/mul/mat3x3-mat3x3/f32.wgsl
+++ b/test/expressions/binary/mul/mat3x3-mat3x3/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = mat3x3<f32>(vec3<f32>( 1.,  2.,  3.), vec3<f32>( 4.,  5.,  6.), vec3<f32>( 7.,  8.,  9.));
     let b = mat3x3<f32>(vec3<f32>(-1., -2., -3.), vec3<f32>(-4., -5., -6.), vec3<f32>(-7., -8., -9.));
diff --git a/test/expressions/binary/mul/mat3x3-mat3x3/f32.wgsl.expected.wgsl b/test/expressions/binary/mul/mat3x3-mat3x3/f32.wgsl.expected.wgsl
index 2dd4a96..872ec3d 100644
--- a/test/expressions/binary/mul/mat3x3-mat3x3/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mul/mat3x3-mat3x3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = mat3x3<f32>(vec3<f32>(1.0, 2.0, 3.0), vec3<f32>(4.0, 5.0, 6.0), vec3<f32>(7.0, 8.0, 9.0));
   let b = mat3x3<f32>(vec3<f32>(-1.0, -2.0, -3.0), vec3<f32>(-4.0, -5.0, -6.0), vec3<f32>(-7.0, -8.0, -9.0));
diff --git a/test/expressions/binary/mul/mat3x3-vec3/f32.wgsl b/test/expressions/binary/mul/mat3x3-vec3/f32.wgsl
index 1101f92..f915862 100644
--- a/test/expressions/binary/mul/mat3x3-vec3/f32.wgsl
+++ b/test/expressions/binary/mul/mat3x3-vec3/f32.wgsl
@@ -2,9 +2,9 @@
     matrix : mat3x3<f32>;
     vector : vec3<f32>;
 };
-[[group(0), binding(0)]] var<uniform> data: S;
+@group(0) @binding(0) var<uniform> data: S;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   let x = data.matrix * data.vector;
 }
diff --git a/test/expressions/binary/mul/mat3x3-vec3/f32.wgsl.expected.wgsl b/test/expressions/binary/mul/mat3x3-vec3/f32.wgsl.expected.wgsl
index 461d0c7..2c12345 100644
--- a/test/expressions/binary/mul/mat3x3-vec3/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mul/mat3x3-vec3/f32.wgsl.expected.wgsl
@@ -3,9 +3,9 @@
   vector : vec3<f32>;
 }
 
-[[group(0), binding(0)]] var<uniform> data : S;
+@group(0) @binding(0) var<uniform> data : S;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   let x = (data.matrix * data.vector);
 }
diff --git a/test/expressions/binary/mul/mat4x2-mat2x4/f32.wgsl b/test/expressions/binary/mul/mat4x2-mat2x4/f32.wgsl
index 236146e..76e4db2 100644
--- a/test/expressions/binary/mul/mat4x2-mat2x4/f32.wgsl
+++ b/test/expressions/binary/mul/mat4x2-mat2x4/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = mat4x2<f32>(vec2<f32>(-1., -2.), vec2<f32>(-3., -4.), vec2<f32>(-5., -6.), vec2<f32>(-7., -8.));
     let b = mat2x4<f32>(vec4<f32>(1., 2., 3., 4.), vec4<f32>(5., 6., 7., 8.));
diff --git a/test/expressions/binary/mul/mat4x2-mat2x4/f32.wgsl.expected.wgsl b/test/expressions/binary/mul/mat4x2-mat2x4/f32.wgsl.expected.wgsl
index b4803d4..cc6bf09 100644
--- a/test/expressions/binary/mul/mat4x2-mat2x4/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mul/mat4x2-mat2x4/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = mat4x2<f32>(vec2<f32>(-1.0, -2.0), vec2<f32>(-3.0, -4.0), vec2<f32>(-5.0, -6.0), vec2<f32>(-7.0, -8.0));
   let b = mat2x4<f32>(vec4<f32>(1.0, 2.0, 3.0, 4.0), vec4<f32>(5.0, 6.0, 7.0, 8.0));
diff --git a/test/expressions/binary/mul/scalar-scalar/f32.wgsl b/test/expressions/binary/mul/scalar-scalar/f32.wgsl
index 23d7371..7c3a494 100644
--- a/test/expressions/binary/mul/scalar-scalar/f32.wgsl
+++ b/test/expressions/binary/mul/scalar-scalar/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 1.;
     let b = 2.;
diff --git a/test/expressions/binary/mul/scalar-scalar/f32.wgsl.expected.wgsl b/test/expressions/binary/mul/scalar-scalar/f32.wgsl.expected.wgsl
index 6f87493..1308e5a 100644
--- a/test/expressions/binary/mul/scalar-scalar/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mul/scalar-scalar/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 1.0;
   let b = 2.0;
diff --git a/test/expressions/binary/mul/scalar-scalar/i32.wgsl b/test/expressions/binary/mul/scalar-scalar/i32.wgsl
index ea58328..841429e 100644
--- a/test/expressions/binary/mul/scalar-scalar/i32.wgsl
+++ b/test/expressions/binary/mul/scalar-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 1;
     let b = 2;
diff --git a/test/expressions/binary/mul/scalar-scalar/i32.wgsl.expected.wgsl b/test/expressions/binary/mul/scalar-scalar/i32.wgsl.expected.wgsl
index 5f53be8..e0189a5 100644
--- a/test/expressions/binary/mul/scalar-scalar/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mul/scalar-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 1;
   let b = 2;
diff --git a/test/expressions/binary/mul/scalar-scalar/u32.wgsl b/test/expressions/binary/mul/scalar-scalar/u32.wgsl
index ec6a61d..4998346 100644
--- a/test/expressions/binary/mul/scalar-scalar/u32.wgsl
+++ b/test/expressions/binary/mul/scalar-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 1u;
     let b = 2u;
diff --git a/test/expressions/binary/mul/scalar-scalar/u32.wgsl.expected.wgsl b/test/expressions/binary/mul/scalar-scalar/u32.wgsl.expected.wgsl
index 92cffef..3dda0e0 100644
--- a/test/expressions/binary/mul/scalar-scalar/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mul/scalar-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 1u;
   let b = 2u;
diff --git a/test/expressions/binary/mul/scalar-vec3/f32.wgsl b/test/expressions/binary/mul/scalar-vec3/f32.wgsl
index cd19d3b..62560cb 100644
--- a/test/expressions/binary/mul/scalar-vec3/f32.wgsl
+++ b/test/expressions/binary/mul/scalar-vec3/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 4.;
     let b = vec3<f32>(1., 2., 3.);
diff --git a/test/expressions/binary/mul/scalar-vec3/f32.wgsl.expected.wgsl b/test/expressions/binary/mul/scalar-vec3/f32.wgsl.expected.wgsl
index 65ac8cc..f2cf6c4 100644
--- a/test/expressions/binary/mul/scalar-vec3/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mul/scalar-vec3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 4.0;
   let b = vec3<f32>(1.0, 2.0, 3.0);
diff --git a/test/expressions/binary/mul/scalar-vec3/i32.wgsl b/test/expressions/binary/mul/scalar-vec3/i32.wgsl
index 8d1bf3f..8f8d3e4 100644
--- a/test/expressions/binary/mul/scalar-vec3/i32.wgsl
+++ b/test/expressions/binary/mul/scalar-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 4;
     let b = vec3<i32>(1, 2, 3);
diff --git a/test/expressions/binary/mul/scalar-vec3/i32.wgsl.expected.wgsl b/test/expressions/binary/mul/scalar-vec3/i32.wgsl.expected.wgsl
index c5744b7..85f39b5 100644
--- a/test/expressions/binary/mul/scalar-vec3/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mul/scalar-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 4;
   let b = vec3<i32>(1, 2, 3);
diff --git a/test/expressions/binary/mul/scalar-vec3/u32.wgsl b/test/expressions/binary/mul/scalar-vec3/u32.wgsl
index d5f432e..5c9260f 100644
--- a/test/expressions/binary/mul/scalar-vec3/u32.wgsl
+++ b/test/expressions/binary/mul/scalar-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 4u;
     let b = vec3<u32>(1u, 2u, 3u);
diff --git a/test/expressions/binary/mul/scalar-vec3/u32.wgsl.expected.wgsl b/test/expressions/binary/mul/scalar-vec3/u32.wgsl.expected.wgsl
index 60505a4..9fc3bff 100644
--- a/test/expressions/binary/mul/scalar-vec3/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mul/scalar-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 4u;
   let b = vec3<u32>(1u, 2u, 3u);
diff --git a/test/expressions/binary/mul/vec3-mat3x3/f32.wgsl b/test/expressions/binary/mul/vec3-mat3x3/f32.wgsl
index 8cfd8e1..5606f65 100644
--- a/test/expressions/binary/mul/vec3-mat3x3/f32.wgsl
+++ b/test/expressions/binary/mul/vec3-mat3x3/f32.wgsl
@@ -2,9 +2,9 @@
     matrix : mat3x3<f32>;
     vector : vec3<f32>;
 };
-[[group(0), binding(0)]] var<uniform> data: S;
+@group(0) @binding(0) var<uniform> data: S;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   let x = data.vector * data.matrix;
 }
diff --git a/test/expressions/binary/mul/vec3-mat3x3/f32.wgsl.expected.wgsl b/test/expressions/binary/mul/vec3-mat3x3/f32.wgsl.expected.wgsl
index 10e087f..aca7bee 100644
--- a/test/expressions/binary/mul/vec3-mat3x3/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mul/vec3-mat3x3/f32.wgsl.expected.wgsl
@@ -3,9 +3,9 @@
   vector : vec3<f32>;
 }
 
-[[group(0), binding(0)]] var<uniform> data : S;
+@group(0) @binding(0) var<uniform> data : S;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   let x = (data.vector * data.matrix);
 }
diff --git a/test/expressions/binary/mul/vec3-mat4x3/f32.wgsl b/test/expressions/binary/mul/vec3-mat4x3/f32.wgsl
index 48b2709..5cceccb 100644
--- a/test/expressions/binary/mul/vec3-mat4x3/f32.wgsl
+++ b/test/expressions/binary/mul/vec3-mat4x3/f32.wgsl
@@ -2,9 +2,9 @@
     matrix : mat4x3<f32>;
     vector : vec3<f32>;
 };
-[[group(0), binding(0)]] var<uniform> data: S;
+@group(0) @binding(0) var<uniform> data: S;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   let x = data.vector * data.matrix;
 }
diff --git a/test/expressions/binary/mul/vec3-mat4x3/f32.wgsl.expected.wgsl b/test/expressions/binary/mul/vec3-mat4x3/f32.wgsl.expected.wgsl
index 223240f..a3bfccc 100644
--- a/test/expressions/binary/mul/vec3-mat4x3/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mul/vec3-mat4x3/f32.wgsl.expected.wgsl
@@ -3,9 +3,9 @@
   vector : vec3<f32>;
 }
 
-[[group(0), binding(0)]] var<uniform> data : S;
+@group(0) @binding(0) var<uniform> data : S;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   let x = (data.vector * data.matrix);
 }
diff --git a/test/expressions/binary/mul/vec3-scalar/f32.wgsl b/test/expressions/binary/mul/vec3-scalar/f32.wgsl
index 34a7b70..10f72ae 100644
--- a/test/expressions/binary/mul/vec3-scalar/f32.wgsl
+++ b/test/expressions/binary/mul/vec3-scalar/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<f32>(1., 2., 3.);
     let b = 4.;
diff --git a/test/expressions/binary/mul/vec3-scalar/f32.wgsl.expected.wgsl b/test/expressions/binary/mul/vec3-scalar/f32.wgsl.expected.wgsl
index 712df51..b3acece 100644
--- a/test/expressions/binary/mul/vec3-scalar/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mul/vec3-scalar/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<f32>(1.0, 2.0, 3.0);
   let b = 4.0;
diff --git a/test/expressions/binary/mul/vec3-scalar/i32.wgsl b/test/expressions/binary/mul/vec3-scalar/i32.wgsl
index a8f8d1e..d4d0678 100644
--- a/test/expressions/binary/mul/vec3-scalar/i32.wgsl
+++ b/test/expressions/binary/mul/vec3-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<i32>(1, 2, 3);
     let b = 4;
diff --git a/test/expressions/binary/mul/vec3-scalar/i32.wgsl.expected.wgsl b/test/expressions/binary/mul/vec3-scalar/i32.wgsl.expected.wgsl
index d8f7e63..a727294 100644
--- a/test/expressions/binary/mul/vec3-scalar/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mul/vec3-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<i32>(1, 2, 3);
   let b = 4;
diff --git a/test/expressions/binary/mul/vec3-scalar/u32.wgsl b/test/expressions/binary/mul/vec3-scalar/u32.wgsl
index a63cb22..03a79ac 100644
--- a/test/expressions/binary/mul/vec3-scalar/u32.wgsl
+++ b/test/expressions/binary/mul/vec3-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<u32>(1u, 2u, 3u);
     let b = 4u;
diff --git a/test/expressions/binary/mul/vec3-scalar/u32.wgsl.expected.wgsl b/test/expressions/binary/mul/vec3-scalar/u32.wgsl.expected.wgsl
index 995a6a3..fc7e60d 100644
--- a/test/expressions/binary/mul/vec3-scalar/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mul/vec3-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<u32>(1u, 2u, 3u);
   let b = 4u;
diff --git a/test/expressions/binary/mul/vec3-vec3/f32.wgsl b/test/expressions/binary/mul/vec3-vec3/f32.wgsl
index 184a9fb..6d0e211 100644
--- a/test/expressions/binary/mul/vec3-vec3/f32.wgsl
+++ b/test/expressions/binary/mul/vec3-vec3/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<f32>(1., 2., 3.);
     let b = vec3<f32>(4., 5., 6.);
diff --git a/test/expressions/binary/mul/vec3-vec3/f32.wgsl.expected.wgsl b/test/expressions/binary/mul/vec3-vec3/f32.wgsl.expected.wgsl
index fff2a26..a0dd1f7 100644
--- a/test/expressions/binary/mul/vec3-vec3/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mul/vec3-vec3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<f32>(1.0, 2.0, 3.0);
   let b = vec3<f32>(4.0, 5.0, 6.0);
diff --git a/test/expressions/binary/mul/vec3-vec3/i32.wgsl b/test/expressions/binary/mul/vec3-vec3/i32.wgsl
index dc812d8..32ae83f 100644
--- a/test/expressions/binary/mul/vec3-vec3/i32.wgsl
+++ b/test/expressions/binary/mul/vec3-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<i32>(1, 2, 3);
     let b = vec3<i32>(4, 5, 6);
diff --git a/test/expressions/binary/mul/vec3-vec3/i32.wgsl.expected.wgsl b/test/expressions/binary/mul/vec3-vec3/i32.wgsl.expected.wgsl
index 3ca04ae..20121b5 100644
--- a/test/expressions/binary/mul/vec3-vec3/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mul/vec3-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<i32>(1, 2, 3);
   let b = vec3<i32>(4, 5, 6);
diff --git a/test/expressions/binary/mul/vec3-vec3/u32.wgsl b/test/expressions/binary/mul/vec3-vec3/u32.wgsl
index d1e2219..39e1db4 100644
--- a/test/expressions/binary/mul/vec3-vec3/u32.wgsl
+++ b/test/expressions/binary/mul/vec3-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<u32>(1u, 2u, 3u);
     let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/expressions/binary/mul/vec3-vec3/u32.wgsl.expected.wgsl b/test/expressions/binary/mul/vec3-vec3/u32.wgsl.expected.wgsl
index 4392855..a910c86 100644
--- a/test/expressions/binary/mul/vec3-vec3/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/mul/vec3-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<u32>(1u, 2u, 3u);
   let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/expressions/binary/right-shift/scalar-scalar/i32.wgsl b/test/expressions/binary/right-shift/scalar-scalar/i32.wgsl
index ef2e9f9..54eda6d 100644
--- a/test/expressions/binary/right-shift/scalar-scalar/i32.wgsl
+++ b/test/expressions/binary/right-shift/scalar-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 1;
     let b = 2u;
diff --git a/test/expressions/binary/right-shift/scalar-scalar/i32.wgsl.expected.wgsl b/test/expressions/binary/right-shift/scalar-scalar/i32.wgsl.expected.wgsl
index 9953bcc..57f33c8 100644
--- a/test/expressions/binary/right-shift/scalar-scalar/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/right-shift/scalar-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 1;
   let b = 2u;
diff --git a/test/expressions/binary/right-shift/scalar-scalar/u32.wgsl b/test/expressions/binary/right-shift/scalar-scalar/u32.wgsl
index ecfbc1b..4cf2a84 100644
--- a/test/expressions/binary/right-shift/scalar-scalar/u32.wgsl
+++ b/test/expressions/binary/right-shift/scalar-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 1u;
     let b = 2u;
diff --git a/test/expressions/binary/right-shift/scalar-scalar/u32.wgsl.expected.wgsl b/test/expressions/binary/right-shift/scalar-scalar/u32.wgsl.expected.wgsl
index 3757438..827e23f 100644
--- a/test/expressions/binary/right-shift/scalar-scalar/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/right-shift/scalar-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 1u;
   let b = 2u;
diff --git a/test/expressions/binary/right-shift/vector-vector/i32.wgsl b/test/expressions/binary/right-shift/vector-vector/i32.wgsl
index ffae0c1..366c8c4 100644
--- a/test/expressions/binary/right-shift/vector-vector/i32.wgsl
+++ b/test/expressions/binary/right-shift/vector-vector/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<i32>(1, 2, 3);
     let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/expressions/binary/right-shift/vector-vector/i32.wgsl.expected.wgsl b/test/expressions/binary/right-shift/vector-vector/i32.wgsl.expected.wgsl
index 765b4b1..96e088f 100644
--- a/test/expressions/binary/right-shift/vector-vector/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/right-shift/vector-vector/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<i32>(1, 2, 3);
   let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/expressions/binary/right-shift/vector-vector/u32.wgsl b/test/expressions/binary/right-shift/vector-vector/u32.wgsl
index 35da873..a70095d 100644
--- a/test/expressions/binary/right-shift/vector-vector/u32.wgsl
+++ b/test/expressions/binary/right-shift/vector-vector/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<u32>(1u, 2u, 3u);
     let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/expressions/binary/right-shift/vector-vector/u32.wgsl.expected.wgsl b/test/expressions/binary/right-shift/vector-vector/u32.wgsl.expected.wgsl
index 7368058..4b44e73 100644
--- a/test/expressions/binary/right-shift/vector-vector/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/right-shift/vector-vector/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<u32>(1u, 2u, 3u);
   let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/expressions/binary/sub/mat3x3-mat3x3/f32.wgsl b/test/expressions/binary/sub/mat3x3-mat3x3/f32.wgsl
index 4dec34d..1d90779 100644
--- a/test/expressions/binary/sub/mat3x3-mat3x3/f32.wgsl
+++ b/test/expressions/binary/sub/mat3x3-mat3x3/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = mat3x3<f32>(vec3<f32>( 1.,  2.,  3.), vec3<f32>( 4.,  5.,  6.), vec3<f32>( 7.,  8.,  9.));
     let b = mat3x3<f32>(vec3<f32>(-1., -2., -3.), vec3<f32>(-4., -5., -6.), vec3<f32>(-7., -8., -9.));
diff --git a/test/expressions/binary/sub/mat3x3-mat3x3/f32.wgsl.expected.wgsl b/test/expressions/binary/sub/mat3x3-mat3x3/f32.wgsl.expected.wgsl
index 5003fea..d54c2dc 100644
--- a/test/expressions/binary/sub/mat3x3-mat3x3/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/sub/mat3x3-mat3x3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = mat3x3<f32>(vec3<f32>(1.0, 2.0, 3.0), vec3<f32>(4.0, 5.0, 6.0), vec3<f32>(7.0, 8.0, 9.0));
   let b = mat3x3<f32>(vec3<f32>(-1.0, -2.0, -3.0), vec3<f32>(-4.0, -5.0, -6.0), vec3<f32>(-7.0, -8.0, -9.0));
diff --git a/test/expressions/binary/sub/scalar-scalar/f32.wgsl b/test/expressions/binary/sub/scalar-scalar/f32.wgsl
index b0e6359..7aec1fe 100644
--- a/test/expressions/binary/sub/scalar-scalar/f32.wgsl
+++ b/test/expressions/binary/sub/scalar-scalar/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 1.;
     let b = 2.;
diff --git a/test/expressions/binary/sub/scalar-scalar/f32.wgsl.expected.wgsl b/test/expressions/binary/sub/scalar-scalar/f32.wgsl.expected.wgsl
index ffc19e2..7639858 100644
--- a/test/expressions/binary/sub/scalar-scalar/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/sub/scalar-scalar/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 1.0;
   let b = 2.0;
diff --git a/test/expressions/binary/sub/scalar-scalar/i32.wgsl b/test/expressions/binary/sub/scalar-scalar/i32.wgsl
index 7d396dc..93fb7e0 100644
--- a/test/expressions/binary/sub/scalar-scalar/i32.wgsl
+++ b/test/expressions/binary/sub/scalar-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 1;
     let b = 2;
diff --git a/test/expressions/binary/sub/scalar-scalar/i32.wgsl.expected.wgsl b/test/expressions/binary/sub/scalar-scalar/i32.wgsl.expected.wgsl
index d881d44..9aa9bf3 100644
--- a/test/expressions/binary/sub/scalar-scalar/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/sub/scalar-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 1;
   let b = 2;
diff --git a/test/expressions/binary/sub/scalar-scalar/u32.wgsl b/test/expressions/binary/sub/scalar-scalar/u32.wgsl
index 5f210c2..fa75c67 100644
--- a/test/expressions/binary/sub/scalar-scalar/u32.wgsl
+++ b/test/expressions/binary/sub/scalar-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 1u;
     let b = 2u;
diff --git a/test/expressions/binary/sub/scalar-scalar/u32.wgsl.expected.wgsl b/test/expressions/binary/sub/scalar-scalar/u32.wgsl.expected.wgsl
index 932d0b7..81cbedd 100644
--- a/test/expressions/binary/sub/scalar-scalar/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/sub/scalar-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 1u;
   let b = 2u;
diff --git a/test/expressions/binary/sub/scalar-vec3/f32.wgsl b/test/expressions/binary/sub/scalar-vec3/f32.wgsl
index 1b23e49..8a4a112 100644
--- a/test/expressions/binary/sub/scalar-vec3/f32.wgsl
+++ b/test/expressions/binary/sub/scalar-vec3/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 4.;
     let b = vec3<f32>(1., 2., 3.);
diff --git a/test/expressions/binary/sub/scalar-vec3/f32.wgsl.expected.wgsl b/test/expressions/binary/sub/scalar-vec3/f32.wgsl.expected.wgsl
index 69ff882..1404695 100644
--- a/test/expressions/binary/sub/scalar-vec3/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/sub/scalar-vec3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 4.0;
   let b = vec3<f32>(1.0, 2.0, 3.0);
diff --git a/test/expressions/binary/sub/scalar-vec3/i32.wgsl b/test/expressions/binary/sub/scalar-vec3/i32.wgsl
index 1e024c5..8b31299 100644
--- a/test/expressions/binary/sub/scalar-vec3/i32.wgsl
+++ b/test/expressions/binary/sub/scalar-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 4;
     let b = vec3<i32>(1, 2, 3);
diff --git a/test/expressions/binary/sub/scalar-vec3/i32.wgsl.expected.wgsl b/test/expressions/binary/sub/scalar-vec3/i32.wgsl.expected.wgsl
index 0efb533..bec3a19 100644
--- a/test/expressions/binary/sub/scalar-vec3/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/sub/scalar-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 4;
   let b = vec3<i32>(1, 2, 3);
diff --git a/test/expressions/binary/sub/scalar-vec3/u32.wgsl b/test/expressions/binary/sub/scalar-vec3/u32.wgsl
index 0042cc2..562719f 100644
--- a/test/expressions/binary/sub/scalar-vec3/u32.wgsl
+++ b/test/expressions/binary/sub/scalar-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = 4u;
     let b = vec3<u32>(1u, 2u, 3u);
diff --git a/test/expressions/binary/sub/scalar-vec3/u32.wgsl.expected.wgsl b/test/expressions/binary/sub/scalar-vec3/u32.wgsl.expected.wgsl
index b78efa7..4e1bca9 100644
--- a/test/expressions/binary/sub/scalar-vec3/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/sub/scalar-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = 4u;
   let b = vec3<u32>(1u, 2u, 3u);
diff --git a/test/expressions/binary/sub/vec3-scalar/f32.wgsl b/test/expressions/binary/sub/vec3-scalar/f32.wgsl
index 0bdf89e..4b4aced 100644
--- a/test/expressions/binary/sub/vec3-scalar/f32.wgsl
+++ b/test/expressions/binary/sub/vec3-scalar/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<f32>(1., 2., 3.);
     let b = 4.;
diff --git a/test/expressions/binary/sub/vec3-scalar/f32.wgsl.expected.wgsl b/test/expressions/binary/sub/vec3-scalar/f32.wgsl.expected.wgsl
index de0d72d..169e9db 100644
--- a/test/expressions/binary/sub/vec3-scalar/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/sub/vec3-scalar/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<f32>(1.0, 2.0, 3.0);
   let b = 4.0;
diff --git a/test/expressions/binary/sub/vec3-scalar/i32.wgsl b/test/expressions/binary/sub/vec3-scalar/i32.wgsl
index 0fab83f..e12a2ba 100644
--- a/test/expressions/binary/sub/vec3-scalar/i32.wgsl
+++ b/test/expressions/binary/sub/vec3-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<i32>(1, 2, 3);
     let b = 4;
diff --git a/test/expressions/binary/sub/vec3-scalar/i32.wgsl.expected.wgsl b/test/expressions/binary/sub/vec3-scalar/i32.wgsl.expected.wgsl
index ea16bd4..003acfa 100644
--- a/test/expressions/binary/sub/vec3-scalar/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/sub/vec3-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<i32>(1, 2, 3);
   let b = 4;
diff --git a/test/expressions/binary/sub/vec3-scalar/u32.wgsl b/test/expressions/binary/sub/vec3-scalar/u32.wgsl
index 0ec4317..f5e4e5a 100644
--- a/test/expressions/binary/sub/vec3-scalar/u32.wgsl
+++ b/test/expressions/binary/sub/vec3-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<u32>(1u, 2u, 3u);
     let b = 4u;
diff --git a/test/expressions/binary/sub/vec3-scalar/u32.wgsl.expected.wgsl b/test/expressions/binary/sub/vec3-scalar/u32.wgsl.expected.wgsl
index 2052d8b..9b9c0de 100644
--- a/test/expressions/binary/sub/vec3-scalar/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/sub/vec3-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<u32>(1u, 2u, 3u);
   let b = 4u;
diff --git a/test/expressions/binary/sub/vec3-vec3/f32.wgsl b/test/expressions/binary/sub/vec3-vec3/f32.wgsl
index 3bb31cf..cea0bb7 100644
--- a/test/expressions/binary/sub/vec3-vec3/f32.wgsl
+++ b/test/expressions/binary/sub/vec3-vec3/f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<f32>(1., 2., 3.);
     let b = vec3<f32>(4., 5., 6.);
diff --git a/test/expressions/binary/sub/vec3-vec3/f32.wgsl.expected.wgsl b/test/expressions/binary/sub/vec3-vec3/f32.wgsl.expected.wgsl
index 8beb881..6075405 100644
--- a/test/expressions/binary/sub/vec3-vec3/f32.wgsl.expected.wgsl
+++ b/test/expressions/binary/sub/vec3-vec3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<f32>(1.0, 2.0, 3.0);
   let b = vec3<f32>(4.0, 5.0, 6.0);
diff --git a/test/expressions/binary/sub/vec3-vec3/i32.wgsl b/test/expressions/binary/sub/vec3-vec3/i32.wgsl
index 7ecdc45..2ab7275 100644
--- a/test/expressions/binary/sub/vec3-vec3/i32.wgsl
+++ b/test/expressions/binary/sub/vec3-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<i32>(1, 2, 3);
     let b = vec3<i32>(4, 5, 6);
diff --git a/test/expressions/binary/sub/vec3-vec3/i32.wgsl.expected.wgsl b/test/expressions/binary/sub/vec3-vec3/i32.wgsl.expected.wgsl
index 00ff109..a5b306b 100644
--- a/test/expressions/binary/sub/vec3-vec3/i32.wgsl.expected.wgsl
+++ b/test/expressions/binary/sub/vec3-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<i32>(1, 2, 3);
   let b = vec3<i32>(4, 5, 6);
diff --git a/test/expressions/binary/sub/vec3-vec3/u32.wgsl b/test/expressions/binary/sub/vec3-vec3/u32.wgsl
index 547383e..cb59c1f 100644
--- a/test/expressions/binary/sub/vec3-vec3/u32.wgsl
+++ b/test/expressions/binary/sub/vec3-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a = vec3<u32>(1u, 2u, 3u);
     let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/expressions/binary/sub/vec3-vec3/u32.wgsl.expected.wgsl b/test/expressions/binary/sub/vec3-vec3/u32.wgsl.expected.wgsl
index 7559a1b..dea4cfe 100644
--- a/test/expressions/binary/sub/vec3-vec3/u32.wgsl.expected.wgsl
+++ b/test/expressions/binary/sub/vec3-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a = vec3<u32>(1u, 2u, 3u);
   let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/expressions/bitcast/scalar/f32-f32.wgsl b/test/expressions/bitcast/scalar/f32-f32.wgsl
index a91bec0..0e7b8ba 100644
--- a/test/expressions/bitcast/scalar/f32-f32.wgsl
+++ b/test/expressions/bitcast/scalar/f32-f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a : f32 = 1.;
     let b : f32 = bitcast<f32>(a);
diff --git a/test/expressions/bitcast/scalar/f32-f32.wgsl.expected.wgsl b/test/expressions/bitcast/scalar/f32-f32.wgsl.expected.wgsl
index 1d57da4..ac6a874 100644
--- a/test/expressions/bitcast/scalar/f32-f32.wgsl.expected.wgsl
+++ b/test/expressions/bitcast/scalar/f32-f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a : f32 = 1.0;
   let b : f32 = bitcast<f32>(a);
diff --git a/test/expressions/bitcast/scalar/f32-i32.wgsl b/test/expressions/bitcast/scalar/f32-i32.wgsl
index c54ab72..91c3d8f 100644
--- a/test/expressions/bitcast/scalar/f32-i32.wgsl
+++ b/test/expressions/bitcast/scalar/f32-i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a : f32 = 1.;
     let b : i32 = bitcast<i32>(a);
diff --git a/test/expressions/bitcast/scalar/f32-i32.wgsl.expected.wgsl b/test/expressions/bitcast/scalar/f32-i32.wgsl.expected.wgsl
index 331cca2..81e6fa6 100644
--- a/test/expressions/bitcast/scalar/f32-i32.wgsl.expected.wgsl
+++ b/test/expressions/bitcast/scalar/f32-i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a : f32 = 1.0;
   let b : i32 = bitcast<i32>(a);
diff --git a/test/expressions/bitcast/scalar/f32-u32.wgsl b/test/expressions/bitcast/scalar/f32-u32.wgsl
index 0d79999..6f33d5a 100644
--- a/test/expressions/bitcast/scalar/f32-u32.wgsl
+++ b/test/expressions/bitcast/scalar/f32-u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a : f32 = 1.;
     let b : u32 = bitcast<u32>(a);
diff --git a/test/expressions/bitcast/scalar/f32-u32.wgsl.expected.wgsl b/test/expressions/bitcast/scalar/f32-u32.wgsl.expected.wgsl
index e52e25e..c230fb8 100644
--- a/test/expressions/bitcast/scalar/f32-u32.wgsl.expected.wgsl
+++ b/test/expressions/bitcast/scalar/f32-u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a : f32 = 1.0;
   let b : u32 = bitcast<u32>(a);
diff --git a/test/expressions/bitcast/scalar/i32-f32.wgsl b/test/expressions/bitcast/scalar/i32-f32.wgsl
index f398e96..00a8099 100644
--- a/test/expressions/bitcast/scalar/i32-f32.wgsl
+++ b/test/expressions/bitcast/scalar/i32-f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a : i32 = 1;
     let b : f32 = bitcast<f32>(a);
diff --git a/test/expressions/bitcast/scalar/i32-f32.wgsl.expected.wgsl b/test/expressions/bitcast/scalar/i32-f32.wgsl.expected.wgsl
index 9471a56..1aae69a 100644
--- a/test/expressions/bitcast/scalar/i32-f32.wgsl.expected.wgsl
+++ b/test/expressions/bitcast/scalar/i32-f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a : i32 = 1;
   let b : f32 = bitcast<f32>(a);
diff --git a/test/expressions/bitcast/scalar/i32-i32.wgsl b/test/expressions/bitcast/scalar/i32-i32.wgsl
index eaacdd1..282e218 100644
--- a/test/expressions/bitcast/scalar/i32-i32.wgsl
+++ b/test/expressions/bitcast/scalar/i32-i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a : i32 = 1;
     let b : i32 = bitcast<i32>(a);
diff --git a/test/expressions/bitcast/scalar/i32-i32.wgsl.expected.wgsl b/test/expressions/bitcast/scalar/i32-i32.wgsl.expected.wgsl
index ed26420..9ecbee50 100644
--- a/test/expressions/bitcast/scalar/i32-i32.wgsl.expected.wgsl
+++ b/test/expressions/bitcast/scalar/i32-i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a : i32 = 1;
   let b : i32 = bitcast<i32>(a);
diff --git a/test/expressions/bitcast/scalar/i32-u32.wgsl b/test/expressions/bitcast/scalar/i32-u32.wgsl
index f11e65d..ebb81b4 100644
--- a/test/expressions/bitcast/scalar/i32-u32.wgsl
+++ b/test/expressions/bitcast/scalar/i32-u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a : i32 = 1;
     let b : u32 = bitcast<u32>(a);
diff --git a/test/expressions/bitcast/scalar/i32-u32.wgsl.expected.wgsl b/test/expressions/bitcast/scalar/i32-u32.wgsl.expected.wgsl
index 6c7b9f9..cb8e316 100644
--- a/test/expressions/bitcast/scalar/i32-u32.wgsl.expected.wgsl
+++ b/test/expressions/bitcast/scalar/i32-u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a : i32 = 1;
   let b : u32 = bitcast<u32>(a);
diff --git a/test/expressions/bitcast/scalar/i32min-u32.wgsl b/test/expressions/bitcast/scalar/i32min-u32.wgsl
index 9812c83..de57788 100644
--- a/test/expressions/bitcast/scalar/i32min-u32.wgsl
+++ b/test/expressions/bitcast/scalar/i32min-u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let b : u32 = bitcast<u32>(-2147483648);
 }
diff --git a/test/expressions/bitcast/scalar/i32min-u32.wgsl.expected.wgsl b/test/expressions/bitcast/scalar/i32min-u32.wgsl.expected.wgsl
index 9812c83..de57788 100644
--- a/test/expressions/bitcast/scalar/i32min-u32.wgsl.expected.wgsl
+++ b/test/expressions/bitcast/scalar/i32min-u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let b : u32 = bitcast<u32>(-2147483648);
 }
diff --git a/test/expressions/bitcast/scalar/u32-f32.wgsl b/test/expressions/bitcast/scalar/u32-f32.wgsl
index 82c62b7..c196d83 100644
--- a/test/expressions/bitcast/scalar/u32-f32.wgsl
+++ b/test/expressions/bitcast/scalar/u32-f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a : u32 = 1u;
     let b : f32 = bitcast<f32>(a);
diff --git a/test/expressions/bitcast/scalar/u32-f32.wgsl.expected.wgsl b/test/expressions/bitcast/scalar/u32-f32.wgsl.expected.wgsl
index 9efbcfd..7c0cb22 100644
--- a/test/expressions/bitcast/scalar/u32-f32.wgsl.expected.wgsl
+++ b/test/expressions/bitcast/scalar/u32-f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a : u32 = 1u;
   let b : f32 = bitcast<f32>(a);
diff --git a/test/expressions/bitcast/scalar/u32-i32.wgsl b/test/expressions/bitcast/scalar/u32-i32.wgsl
index 91b4230..9d6785a 100644
--- a/test/expressions/bitcast/scalar/u32-i32.wgsl
+++ b/test/expressions/bitcast/scalar/u32-i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a : u32 = 1u;
     let b : i32 = bitcast<i32>(a);
diff --git a/test/expressions/bitcast/scalar/u32-i32.wgsl.expected.wgsl b/test/expressions/bitcast/scalar/u32-i32.wgsl.expected.wgsl
index 9ac119d..4d8f585 100644
--- a/test/expressions/bitcast/scalar/u32-i32.wgsl.expected.wgsl
+++ b/test/expressions/bitcast/scalar/u32-i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a : u32 = 1u;
   let b : i32 = bitcast<i32>(a);
diff --git a/test/expressions/bitcast/scalar/u32-u32.wgsl b/test/expressions/bitcast/scalar/u32-u32.wgsl
index ceddfa2..35f0a23 100644
--- a/test/expressions/bitcast/scalar/u32-u32.wgsl
+++ b/test/expressions/bitcast/scalar/u32-u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a : u32 = 1u;
     let b : u32 = bitcast<u32>(a);
diff --git a/test/expressions/bitcast/scalar/u32-u32.wgsl.expected.wgsl b/test/expressions/bitcast/scalar/u32-u32.wgsl.expected.wgsl
index 4fde963..45c6de7 100644
--- a/test/expressions/bitcast/scalar/u32-u32.wgsl.expected.wgsl
+++ b/test/expressions/bitcast/scalar/u32-u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a : u32 = 1u;
   let b : u32 = bitcast<u32>(a);
diff --git a/test/expressions/bitcast/vector/f32-f32.wgsl b/test/expressions/bitcast/vector/f32-f32.wgsl
index 2e863d3..8842275 100644
--- a/test/expressions/bitcast/vector/f32-f32.wgsl
+++ b/test/expressions/bitcast/vector/f32-f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a : vec3<f32> = vec3<f32>(1., 2., 3.);
     let b : vec3<f32> = bitcast<vec3<f32>>(a);
diff --git a/test/expressions/bitcast/vector/f32-f32.wgsl.expected.wgsl b/test/expressions/bitcast/vector/f32-f32.wgsl.expected.wgsl
index 5ed2541..1af19c7 100644
--- a/test/expressions/bitcast/vector/f32-f32.wgsl.expected.wgsl
+++ b/test/expressions/bitcast/vector/f32-f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a : vec3<f32> = vec3<f32>(1.0, 2.0, 3.0);
   let b : vec3<f32> = bitcast<vec3<f32>>(a);
diff --git a/test/expressions/bitcast/vector/f32-i32.wgsl b/test/expressions/bitcast/vector/f32-i32.wgsl
index 493dddd..69a8ee6 100644
--- a/test/expressions/bitcast/vector/f32-i32.wgsl
+++ b/test/expressions/bitcast/vector/f32-i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a : vec3<f32> = vec3<f32>(1., 2., 3.);
     let b : vec3<i32> = bitcast<vec3<i32>>(a);
diff --git a/test/expressions/bitcast/vector/f32-i32.wgsl.expected.wgsl b/test/expressions/bitcast/vector/f32-i32.wgsl.expected.wgsl
index e4363c8..6f7c20e 100644
--- a/test/expressions/bitcast/vector/f32-i32.wgsl.expected.wgsl
+++ b/test/expressions/bitcast/vector/f32-i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a : vec3<f32> = vec3<f32>(1.0, 2.0, 3.0);
   let b : vec3<i32> = bitcast<vec3<i32>>(a);
diff --git a/test/expressions/bitcast/vector/f32-u32.wgsl b/test/expressions/bitcast/vector/f32-u32.wgsl
index 7daf410..c478dc8 100644
--- a/test/expressions/bitcast/vector/f32-u32.wgsl
+++ b/test/expressions/bitcast/vector/f32-u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a : vec3<f32> = vec3<f32>(1., 2., 3.);
     let b : vec3<u32> = bitcast<vec3<u32>>(a);
diff --git a/test/expressions/bitcast/vector/f32-u32.wgsl.expected.wgsl b/test/expressions/bitcast/vector/f32-u32.wgsl.expected.wgsl
index 6cd21fa..d47bade 100644
--- a/test/expressions/bitcast/vector/f32-u32.wgsl.expected.wgsl
+++ b/test/expressions/bitcast/vector/f32-u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a : vec3<f32> = vec3<f32>(1.0, 2.0, 3.0);
   let b : vec3<u32> = bitcast<vec3<u32>>(a);
diff --git a/test/expressions/bitcast/vector/i32-f32.wgsl b/test/expressions/bitcast/vector/i32-f32.wgsl
index e3bc280..7fa9e52 100644
--- a/test/expressions/bitcast/vector/i32-f32.wgsl
+++ b/test/expressions/bitcast/vector/i32-f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a : vec3<i32> = vec3<i32>(1, 2, 3);
     let b : vec3<f32> = bitcast<vec3<f32>>(a);
diff --git a/test/expressions/bitcast/vector/i32-f32.wgsl.expected.wgsl b/test/expressions/bitcast/vector/i32-f32.wgsl.expected.wgsl
index a7a19ea..424988d 100644
--- a/test/expressions/bitcast/vector/i32-f32.wgsl.expected.wgsl
+++ b/test/expressions/bitcast/vector/i32-f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a : vec3<i32> = vec3<i32>(1, 2, 3);
   let b : vec3<f32> = bitcast<vec3<f32>>(a);
diff --git a/test/expressions/bitcast/vector/i32-i32.wgsl b/test/expressions/bitcast/vector/i32-i32.wgsl
index 3149395..1b332c6 100644
--- a/test/expressions/bitcast/vector/i32-i32.wgsl
+++ b/test/expressions/bitcast/vector/i32-i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a : vec3<i32> = vec3<i32>(1, 2, 3);
     let b : vec3<i32> = bitcast<vec3<i32>>(a);
diff --git a/test/expressions/bitcast/vector/i32-i32.wgsl.expected.wgsl b/test/expressions/bitcast/vector/i32-i32.wgsl.expected.wgsl
index 94f3acd..b77a8bf 100644
--- a/test/expressions/bitcast/vector/i32-i32.wgsl.expected.wgsl
+++ b/test/expressions/bitcast/vector/i32-i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a : vec3<i32> = vec3<i32>(1, 2, 3);
   let b : vec3<i32> = bitcast<vec3<i32>>(a);
diff --git a/test/expressions/bitcast/vector/i32-u32.wgsl b/test/expressions/bitcast/vector/i32-u32.wgsl
index e3cf1fa..f60a904 100644
--- a/test/expressions/bitcast/vector/i32-u32.wgsl
+++ b/test/expressions/bitcast/vector/i32-u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a : vec3<i32> = vec3<i32>(1, 2, 3);
     let b : vec3<u32> = bitcast<vec3<u32>>(a);
diff --git a/test/expressions/bitcast/vector/i32-u32.wgsl.expected.wgsl b/test/expressions/bitcast/vector/i32-u32.wgsl.expected.wgsl
index 64dd507..a0d6f73 100644
--- a/test/expressions/bitcast/vector/i32-u32.wgsl.expected.wgsl
+++ b/test/expressions/bitcast/vector/i32-u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a : vec3<i32> = vec3<i32>(1, 2, 3);
   let b : vec3<u32> = bitcast<vec3<u32>>(a);
diff --git a/test/expressions/bitcast/vector/u32-f32.wgsl b/test/expressions/bitcast/vector/u32-f32.wgsl
index 4323361..76adfdd 100644
--- a/test/expressions/bitcast/vector/u32-f32.wgsl
+++ b/test/expressions/bitcast/vector/u32-f32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a : vec3<u32> = vec3<u32>(1u, 2u, 3u);
     let b : vec3<f32> = bitcast<vec3<f32>>(a);
diff --git a/test/expressions/bitcast/vector/u32-f32.wgsl.expected.wgsl b/test/expressions/bitcast/vector/u32-f32.wgsl.expected.wgsl
index e74cdd3..dd4b3a3 100644
--- a/test/expressions/bitcast/vector/u32-f32.wgsl.expected.wgsl
+++ b/test/expressions/bitcast/vector/u32-f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a : vec3<u32> = vec3<u32>(1u, 2u, 3u);
   let b : vec3<f32> = bitcast<vec3<f32>>(a);
diff --git a/test/expressions/bitcast/vector/u32-i32.wgsl b/test/expressions/bitcast/vector/u32-i32.wgsl
index 6efefc3..9ae5c29 100644
--- a/test/expressions/bitcast/vector/u32-i32.wgsl
+++ b/test/expressions/bitcast/vector/u32-i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a : vec3<u32> = vec3<u32>(1u, 2u, 3u);
     let b : vec3<i32> = bitcast<vec3<i32>>(a);
diff --git a/test/expressions/bitcast/vector/u32-i32.wgsl.expected.wgsl b/test/expressions/bitcast/vector/u32-i32.wgsl.expected.wgsl
index db1bd62..7291ade 100644
--- a/test/expressions/bitcast/vector/u32-i32.wgsl.expected.wgsl
+++ b/test/expressions/bitcast/vector/u32-i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a : vec3<u32> = vec3<u32>(1u, 2u, 3u);
   let b : vec3<i32> = bitcast<vec3<i32>>(a);
diff --git a/test/expressions/bitcast/vector/u32-u32.wgsl b/test/expressions/bitcast/vector/u32-u32.wgsl
index 99d2211..277597d 100644
--- a/test/expressions/bitcast/vector/u32-u32.wgsl
+++ b/test/expressions/bitcast/vector/u32-u32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let a : vec3<u32> = vec3<u32>(1u, 2u, 3u);
     let b : vec3<u32> = bitcast<vec3<u32>>(a);
diff --git a/test/expressions/bitcast/vector/u32-u32.wgsl.expected.wgsl b/test/expressions/bitcast/vector/u32-u32.wgsl.expected.wgsl
index 6bad22d..86d9265 100644
--- a/test/expressions/bitcast/vector/u32-u32.wgsl.expected.wgsl
+++ b/test/expressions/bitcast/vector/u32-u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let a : vec3<u32> = vec3<u32>(1u, 2u, 3u);
   let b : vec3<u32> = bitcast<vec3<u32>>(a);
diff --git a/test/expressions/literals/-inf.spvasm.expected.wgsl b/test/expressions/literals/-inf.spvasm.expected.wgsl
index 60e7281..738effc 100644
--- a/test/expressions/literals/-inf.spvasm.expected.wgsl
+++ b/test/expressions/literals/-inf.spvasm.expected.wgsl
@@ -6,11 +6,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   out_var_SV_TARGET_1 : vec4<f32>;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(out_var_SV_TARGET);
diff --git a/test/expressions/literals/inf.spvasm.expected.wgsl b/test/expressions/literals/inf.spvasm.expected.wgsl
index 0389b98..9fc866d 100644
--- a/test/expressions/literals/inf.spvasm.expected.wgsl
+++ b/test/expressions/literals/inf.spvasm.expected.wgsl
@@ -6,11 +6,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   out_var_SV_TARGET_1 : vec4<f32>;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(out_var_SV_TARGET);
diff --git a/test/expressions/literals/nan.spvasm.expected.wgsl b/test/expressions/literals/nan.spvasm.expected.wgsl
index 816c89e..a53b01d 100644
--- a/test/expressions/literals/nan.spvasm.expected.wgsl
+++ b/test/expressions/literals/nan.spvasm.expected.wgsl
@@ -6,11 +6,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   out_var_SV_TARGET_1 : vec4<f32>;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(out_var_SV_TARGET);
diff --git a/test/expressions/swizzle/read/packed_vec3/f32.wgsl b/test/expressions/swizzle/read/packed_vec3/f32.wgsl
index dd4826a..cb779ee 100644
--- a/test/expressions/swizzle/read/packed_vec3/f32.wgsl
+++ b/test/expressions/swizzle/read/packed_vec3/f32.wgsl
@@ -2,7 +2,7 @@
     v: vec3<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> U : S;
+@group(0) @binding(0) var<uniform> U : S;
 
 fn f() {
     var    v = U.v;
diff --git a/test/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.wgsl b/test/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.wgsl
index 727788b..1f87362 100644
--- a/test/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.wgsl
+++ b/test/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   v : vec3<f32>;
 }
 
-[[group(0), binding(0)]] var<uniform> U : S;
+@group(0) @binding(0) var<uniform> U : S;
 
 fn f() {
   var v = U.v;
diff --git a/test/expressions/swizzle/read/packed_vec3/i32.wgsl b/test/expressions/swizzle/read/packed_vec3/i32.wgsl
index b81d0dd..6780f9f 100644
--- a/test/expressions/swizzle/read/packed_vec3/i32.wgsl
+++ b/test/expressions/swizzle/read/packed_vec3/i32.wgsl
@@ -2,7 +2,7 @@
     v: vec3<i32>;
 };
 
-[[group(0), binding(0)]] var<uniform> U : S;
+@group(0) @binding(0) var<uniform> U : S;
 
 fn f() {
     var    v = U.v;
diff --git a/test/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.wgsl b/test/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.wgsl
index dffd20c..a79daa4 100644
--- a/test/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.wgsl
+++ b/test/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   v : vec3<i32>;
 }
 
-[[group(0), binding(0)]] var<uniform> U : S;
+@group(0) @binding(0) var<uniform> U : S;
 
 fn f() {
   var v = U.v;
diff --git a/test/expressions/swizzle/read/packed_vec3/u32.wgsl b/test/expressions/swizzle/read/packed_vec3/u32.wgsl
index d0497a6..afd1fa5 100644
--- a/test/expressions/swizzle/read/packed_vec3/u32.wgsl
+++ b/test/expressions/swizzle/read/packed_vec3/u32.wgsl
@@ -2,7 +2,7 @@
     v: vec3<u32>;
 };
 
-[[group(0), binding(0)]] var<uniform> U : S;
+@group(0) @binding(0) var<uniform> U : S;
 
 fn f() {
     var    v = U.v;
diff --git a/test/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.wgsl b/test/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.wgsl
index 36bf160..836c617 100644
--- a/test/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.wgsl
+++ b/test/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   v : vec3<u32>;
 }
 
-[[group(0), binding(0)]] var<uniform> U : S;
+@group(0) @binding(0) var<uniform> U : S;
 
 fn f() {
   var v = U.v;
diff --git a/test/expressions/swizzle/write/packed_vec3/f32.wgsl b/test/expressions/swizzle/write/packed_vec3/f32.wgsl
index 9a194ea..623d785 100644
--- a/test/expressions/swizzle/write/packed_vec3/f32.wgsl
+++ b/test/expressions/swizzle/write/packed_vec3/f32.wgsl
@@ -2,7 +2,7 @@
     v: vec3<f32>;
 };
 
-[[group(0), binding(0)]] var<storage, read_write> U : S;
+@group(0) @binding(0) var<storage, read_write> U : S;
 
 fn f() {
     U.v = vec3<f32>(1.0, 2.0, 3.0);
diff --git a/test/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.wgsl b/test/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.wgsl
index 84f2ef9..b5f5abc 100644
--- a/test/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.wgsl
+++ b/test/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   v : vec3<f32>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> U : S;
+@group(0) @binding(0) var<storage, read_write> U : S;
 
 fn f() {
   U.v = vec3<f32>(1.0, 2.0, 3.0);
diff --git a/test/expressions/swizzle/write/packed_vec3/i32.wgsl b/test/expressions/swizzle/write/packed_vec3/i32.wgsl
index 2880622..5441f0a 100644
--- a/test/expressions/swizzle/write/packed_vec3/i32.wgsl
+++ b/test/expressions/swizzle/write/packed_vec3/i32.wgsl
@@ -2,7 +2,7 @@
     v: vec3<i32>;
 };
 
-[[group(0), binding(0)]] var<storage, read_write> U : S;
+@group(0) @binding(0) var<storage, read_write> U : S;
 
 fn f() {
     U.v = vec3<i32>(1, 2, 3);
diff --git a/test/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.wgsl b/test/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.wgsl
index a017589..762409a 100644
--- a/test/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.wgsl
+++ b/test/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   v : vec3<i32>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> U : S;
+@group(0) @binding(0) var<storage, read_write> U : S;
 
 fn f() {
   U.v = vec3<i32>(1, 2, 3);
diff --git a/test/expressions/swizzle/write/packed_vec3/u32.wgsl b/test/expressions/swizzle/write/packed_vec3/u32.wgsl
index 4dd1bfd..0a3ee66 100644
--- a/test/expressions/swizzle/write/packed_vec3/u32.wgsl
+++ b/test/expressions/swizzle/write/packed_vec3/u32.wgsl
@@ -2,7 +2,7 @@
     v: vec3<u32>;
 };
 
-[[group(0), binding(0)]] var<storage, read_write> U : S;
+@group(0) @binding(0) var<storage, read_write> U : S;
 
 fn f() {
     U.v = vec3<u32>(1u, 2u, 3u);
diff --git a/test/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.wgsl b/test/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.wgsl
index b9c4866..e87b551 100644
--- a/test/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.wgsl
+++ b/test/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   v : vec3<u32>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> U : S;
+@group(0) @binding(0) var<storage, read_write> U : S;
 
 fn f() {
   U.v = vec3<u32>(1u, 2u, 3u);
diff --git a/test/intrinsics/arrayLength/complex_via_let.wgsl b/test/intrinsics/arrayLength/complex_via_let.wgsl
index 4b3a76d..76dd5a2 100644
--- a/test/intrinsics/arrayLength/complex_via_let.wgsl
+++ b/test/intrinsics/arrayLength/complex_via_let.wgsl
@@ -2,9 +2,9 @@
     a : array<i32>;
 };
 
-[[group(0), binding(0)]] var<storage, read> G : S;
+@group(0) @binding(0) var<storage, read> G : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     let p = &G;
     let p2 = &((*p).a);
diff --git a/test/intrinsics/arrayLength/complex_via_let.wgsl.expected.wgsl b/test/intrinsics/arrayLength/complex_via_let.wgsl.expected.wgsl
index 1dcc7b1..3701b01 100644
--- a/test/intrinsics/arrayLength/complex_via_let.wgsl.expected.wgsl
+++ b/test/intrinsics/arrayLength/complex_via_let.wgsl.expected.wgsl
@@ -2,9 +2,9 @@
   a : array<i32>;
 }
 
-[[group(0), binding(0)]] var<storage, read> G : S;
+@group(0) @binding(0) var<storage, read> G : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let p = &(G);
   let p2 = &((*(p)).a);
diff --git a/test/intrinsics/arrayLength/complex_via_let_no_struct.wgsl b/test/intrinsics/arrayLength/complex_via_let_no_struct.wgsl
index 2e2966d..8626dee 100644
--- a/test/intrinsics/arrayLength/complex_via_let_no_struct.wgsl
+++ b/test/intrinsics/arrayLength/complex_via_let_no_struct.wgsl
@@ -1,6 +1,6 @@
-[[group(0), binding(0)]] var<storage, read> G : array<i32>;
+@group(0) @binding(0) var<storage, read> G : array<i32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     let p = &G;
     let p2 = &(*p);
diff --git a/test/intrinsics/arrayLength/complex_via_let_no_struct.wgsl.expected.wgsl b/test/intrinsics/arrayLength/complex_via_let_no_struct.wgsl.expected.wgsl
index 56b0e0a..2d06902 100644
--- a/test/intrinsics/arrayLength/complex_via_let_no_struct.wgsl.expected.wgsl
+++ b/test/intrinsics/arrayLength/complex_via_let_no_struct.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[group(0), binding(0)]] var<storage, read> G : array<i32>;
+@group(0) @binding(0) var<storage, read> G : array<i32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let p = &(G);
   let p2 = &(*(p));
diff --git a/test/intrinsics/arrayLength/deprecated.wgsl b/test/intrinsics/arrayLength/deprecated.wgsl
index c3381aa..ce9d77c 100644
--- a/test/intrinsics/arrayLength/deprecated.wgsl
+++ b/test/intrinsics/arrayLength/deprecated.wgsl
@@ -2,9 +2,9 @@
     a : array<i32>;
 };
 
-[[group(0), binding(0)]] var<storage, read> G : S;
+@group(0) @binding(0) var<storage, read> G : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     let l1 : u32 = arrayLength(&G.a);
 
diff --git a/test/intrinsics/arrayLength/deprecated.wgsl.expected.wgsl b/test/intrinsics/arrayLength/deprecated.wgsl.expected.wgsl
index 5489c10..2cc825e 100644
--- a/test/intrinsics/arrayLength/deprecated.wgsl.expected.wgsl
+++ b/test/intrinsics/arrayLength/deprecated.wgsl.expected.wgsl
@@ -2,9 +2,9 @@
   a : array<i32>;
 }
 
-[[group(0), binding(0)]] var<storage, read> G : S;
+@group(0) @binding(0) var<storage, read> G : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let l1 : u32 = arrayLength(&(G.a));
   let p = &(G.a);
diff --git a/test/intrinsics/arrayLength/simple.wgsl b/test/intrinsics/arrayLength/simple.wgsl
index d3cba2a..95037fe 100644
--- a/test/intrinsics/arrayLength/simple.wgsl
+++ b/test/intrinsics/arrayLength/simple.wgsl
@@ -2,9 +2,9 @@
     a : array<i32>;
 };
 
-[[group(0), binding(0)]] var<storage, read> G : S;
+@group(0) @binding(0) var<storage, read> G : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     let l1 : u32 = arrayLength(&G.a);
 }
diff --git a/test/intrinsics/arrayLength/simple.wgsl.expected.wgsl b/test/intrinsics/arrayLength/simple.wgsl.expected.wgsl
index 9b7d049..f9fdd91 100644
--- a/test/intrinsics/arrayLength/simple.wgsl.expected.wgsl
+++ b/test/intrinsics/arrayLength/simple.wgsl.expected.wgsl
@@ -2,9 +2,9 @@
   a : array<i32>;
 }
 
-[[group(0), binding(0)]] var<storage, read> G : S;
+@group(0) @binding(0) var<storage, read> G : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let l1 : u32 = arrayLength(&(G.a));
 }
diff --git a/test/intrinsics/arrayLength/simple_no_struct.wgsl b/test/intrinsics/arrayLength/simple_no_struct.wgsl
index 0fcbfbe..985c87e 100644
--- a/test/intrinsics/arrayLength/simple_no_struct.wgsl
+++ b/test/intrinsics/arrayLength/simple_no_struct.wgsl
@@ -1,6 +1,6 @@
-[[group(0), binding(0)]] var<storage, read> G : array<i32>;
+@group(0) @binding(0) var<storage, read> G : array<i32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     let l1 : u32 = arrayLength(&G);
 }
diff --git a/test/intrinsics/arrayLength/simple_no_struct.wgsl.expected.wgsl b/test/intrinsics/arrayLength/simple_no_struct.wgsl.expected.wgsl
index cbe8d72..b45cd36 100644
--- a/test/intrinsics/arrayLength/simple_no_struct.wgsl.expected.wgsl
+++ b/test/intrinsics/arrayLength/simple_no_struct.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[group(0), binding(0)]] var<storage, read> G : array<i32>;
+@group(0) @binding(0) var<storage, read> G : array<i32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let l1 : u32 = arrayLength(&(G));
 }
diff --git a/test/intrinsics/arrayLength/via_let.wgsl b/test/intrinsics/arrayLength/via_let.wgsl
index d9d71f5..53e45ba 100644
--- a/test/intrinsics/arrayLength/via_let.wgsl
+++ b/test/intrinsics/arrayLength/via_let.wgsl
@@ -2,9 +2,9 @@
     a : array<i32>;
 };
 
-[[group(0), binding(0)]] var<storage, read> G : S;
+@group(0) @binding(0) var<storage, read> G : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     let p = &G.a;
     let p2 = p;
diff --git a/test/intrinsics/arrayLength/via_let.wgsl.expected.wgsl b/test/intrinsics/arrayLength/via_let.wgsl.expected.wgsl
index 13663f0..25ab694 100644
--- a/test/intrinsics/arrayLength/via_let.wgsl.expected.wgsl
+++ b/test/intrinsics/arrayLength/via_let.wgsl.expected.wgsl
@@ -2,9 +2,9 @@
   a : array<i32>;
 }
 
-[[group(0), binding(0)]] var<storage, read> G : S;
+@group(0) @binding(0) var<storage, read> G : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let p = &(G.a);
   let p2 = p;
diff --git a/test/intrinsics/arrayLength/via_let_complex.wgsl b/test/intrinsics/arrayLength/via_let_complex.wgsl
index 98cfdd4..bd99c11 100644
--- a/test/intrinsics/arrayLength/via_let_complex.wgsl
+++ b/test/intrinsics/arrayLength/via_let_complex.wgsl
@@ -2,9 +2,9 @@
     a : array<i32>;
 };
 
-[[group(0), binding(0)]] var<storage, read> G : S;
+@group(0) @binding(0) var<storage, read> G : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let p = &*&G;
   let p2 = &*p;
diff --git a/test/intrinsics/arrayLength/via_let_complex.wgsl.expected.wgsl b/test/intrinsics/arrayLength/via_let_complex.wgsl.expected.wgsl
index 7b07952..30f059a 100644
--- a/test/intrinsics/arrayLength/via_let_complex.wgsl.expected.wgsl
+++ b/test/intrinsics/arrayLength/via_let_complex.wgsl.expected.wgsl
@@ -2,9 +2,9 @@
   a : array<i32>;
 }
 
-[[group(0), binding(0)]] var<storage, read> G : S;
+@group(0) @binding(0) var<storage, read> G : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let p = &(*(&(G)));
   let p2 = &(*(p));
diff --git a/test/intrinsics/arrayLength/via_let_complex_no_struct.wgsl b/test/intrinsics/arrayLength/via_let_complex_no_struct.wgsl
index 4e8a6c5..dd8beb6 100644
--- a/test/intrinsics/arrayLength/via_let_complex_no_struct.wgsl
+++ b/test/intrinsics/arrayLength/via_let_complex_no_struct.wgsl
@@ -1,6 +1,6 @@
-[[group(0), binding(0)]] var<storage, read> G : array<i32>;
+@group(0) @binding(0) var<storage, read> G : array<i32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let p = &*&G;
   let p2 = &*p;
diff --git a/test/intrinsics/arrayLength/via_let_complex_no_struct.wgsl.expected.wgsl b/test/intrinsics/arrayLength/via_let_complex_no_struct.wgsl.expected.wgsl
index 97964a4..a92b9be 100644
--- a/test/intrinsics/arrayLength/via_let_complex_no_struct.wgsl.expected.wgsl
+++ b/test/intrinsics/arrayLength/via_let_complex_no_struct.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[group(0), binding(0)]] var<storage, read> G : array<i32>;
+@group(0) @binding(0) var<storage, read> G : array<i32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let p = &(*(&(G)));
   let p2 = &(*(p));
diff --git a/test/intrinsics/arrayLength/via_let_no_struct.wgsl b/test/intrinsics/arrayLength/via_let_no_struct.wgsl
index 83ab810..203f0e0 100644
--- a/test/intrinsics/arrayLength/via_let_no_struct.wgsl
+++ b/test/intrinsics/arrayLength/via_let_no_struct.wgsl
@@ -1,6 +1,6 @@
-[[group(0), binding(0)]] var<storage, read> G : array<i32>;
+@group(0) @binding(0) var<storage, read> G : array<i32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     let p = &G;
     let p2 = p;
diff --git a/test/intrinsics/arrayLength/via_let_no_struct.wgsl.expected.wgsl b/test/intrinsics/arrayLength/via_let_no_struct.wgsl.expected.wgsl
index 731ba0c..3e07603 100644
--- a/test/intrinsics/arrayLength/via_let_no_struct.wgsl.expected.wgsl
+++ b/test/intrinsics/arrayLength/via_let_no_struct.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[group(0), binding(0)]] var<storage, read> G : array<i32>;
+@group(0) @binding(0) var<storage, read> G : array<i32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let p = &(G);
   let p2 = p;
diff --git a/test/intrinsics/degrees.spvasm.expected.wgsl b/test/intrinsics/degrees.spvasm.expected.wgsl
index a46678b..be5b765 100644
--- a/test/intrinsics/degrees.spvasm.expected.wgsl
+++ b/test/intrinsics/degrees.spvasm.expected.wgsl
@@ -7,7 +7,7 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   main_1();
 }
diff --git a/test/intrinsics/frexp.wgsl b/test/intrinsics/frexp.wgsl
index fed55e5..f4c30d4 100644
--- a/test/intrinsics/frexp.wgsl
+++ b/test/intrinsics/frexp.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     let res = frexp(1.23);
     let exp : i32 = res.exp;
diff --git a/test/intrinsics/frexp.wgsl.expected.wgsl b/test/intrinsics/frexp.wgsl.expected.wgsl
index 519ffb6..50cbd40 100644
--- a/test/intrinsics/frexp.wgsl.expected.wgsl
+++ b/test/intrinsics/frexp.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let res = frexp(1.230000019);
   let exp : i32 = res.exp;
diff --git a/test/intrinsics/gen/abs/002533.wgsl b/test/intrinsics/gen/abs/002533.wgsl
index ca44323..1a7c3f8 100644
--- a/test/intrinsics/gen/abs/002533.wgsl
+++ b/test/intrinsics/gen/abs/002533.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = abs(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_002533();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   abs_002533();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   abs_002533();
 }
diff --git a/test/intrinsics/gen/abs/002533.wgsl.expected.wgsl b/test/intrinsics/gen/abs/002533.wgsl.expected.wgsl
index e9cb96a..8edc059 100644
--- a/test/intrinsics/gen/abs/002533.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/abs/002533.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = abs(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_002533();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   abs_002533();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   abs_002533();
 }
diff --git a/test/intrinsics/gen/abs/005174.wgsl b/test/intrinsics/gen/abs/005174.wgsl
index 4e96bdf..ecbf409 100644
--- a/test/intrinsics/gen/abs/005174.wgsl
+++ b/test/intrinsics/gen/abs/005174.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = abs(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_005174();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   abs_005174();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   abs_005174();
 }
diff --git a/test/intrinsics/gen/abs/005174.wgsl.expected.wgsl b/test/intrinsics/gen/abs/005174.wgsl.expected.wgsl
index 091464d..0675fff 100644
--- a/test/intrinsics/gen/abs/005174.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/abs/005174.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = abs(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_005174();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   abs_005174();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   abs_005174();
 }
diff --git a/test/intrinsics/gen/abs/1ce782.wgsl b/test/intrinsics/gen/abs/1ce782.wgsl
index 8d23e13..7a7666e 100644
--- a/test/intrinsics/gen/abs/1ce782.wgsl
+++ b/test/intrinsics/gen/abs/1ce782.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<u32> = abs(vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_1ce782();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   abs_1ce782();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   abs_1ce782();
 }
diff --git a/test/intrinsics/gen/abs/1ce782.wgsl.expected.wgsl b/test/intrinsics/gen/abs/1ce782.wgsl.expected.wgsl
index dfba5c2..02c1c23 100644
--- a/test/intrinsics/gen/abs/1ce782.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/abs/1ce782.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<u32> = abs(vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_1ce782();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   abs_1ce782();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   abs_1ce782();
 }
diff --git a/test/intrinsics/gen/abs/1e9d53.wgsl b/test/intrinsics/gen/abs/1e9d53.wgsl
index f3c08ae..45cac6d 100644
--- a/test/intrinsics/gen/abs/1e9d53.wgsl
+++ b/test/intrinsics/gen/abs/1e9d53.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = abs(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_1e9d53();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   abs_1e9d53();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   abs_1e9d53();
 }
diff --git a/test/intrinsics/gen/abs/1e9d53.wgsl.expected.wgsl b/test/intrinsics/gen/abs/1e9d53.wgsl.expected.wgsl
index 50413db..ba2ae4b 100644
--- a/test/intrinsics/gen/abs/1e9d53.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/abs/1e9d53.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = abs(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_1e9d53();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   abs_1e9d53();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   abs_1e9d53();
 }
diff --git a/test/intrinsics/gen/abs/467cd1.wgsl b/test/intrinsics/gen/abs/467cd1.wgsl
index 266e0b7..99b46e2 100644
--- a/test/intrinsics/gen/abs/467cd1.wgsl
+++ b/test/intrinsics/gen/abs/467cd1.wgsl
@@ -28,18 +28,18 @@
   var res: u32 = abs(1u);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_467cd1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   abs_467cd1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   abs_467cd1();
 }
diff --git a/test/intrinsics/gen/abs/467cd1.wgsl.expected.wgsl b/test/intrinsics/gen/abs/467cd1.wgsl.expected.wgsl
index c84d397..0af4141 100644
--- a/test/intrinsics/gen/abs/467cd1.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/abs/467cd1.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : u32 = abs(1u);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_467cd1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   abs_467cd1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   abs_467cd1();
 }
diff --git a/test/intrinsics/gen/abs/4ad288.wgsl b/test/intrinsics/gen/abs/4ad288.wgsl
index 38f639b..b342fa7 100644
--- a/test/intrinsics/gen/abs/4ad288.wgsl
+++ b/test/intrinsics/gen/abs/4ad288.wgsl
@@ -28,18 +28,18 @@
   var res: i32 = abs(1);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_4ad288();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   abs_4ad288();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   abs_4ad288();
 }
diff --git a/test/intrinsics/gen/abs/4ad288.wgsl.expected.wgsl b/test/intrinsics/gen/abs/4ad288.wgsl.expected.wgsl
index 4d60d16..e96f644 100644
--- a/test/intrinsics/gen/abs/4ad288.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/abs/4ad288.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : i32 = abs(1);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_4ad288();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   abs_4ad288();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   abs_4ad288();
 }
diff --git a/test/intrinsics/gen/abs/5ad50a.wgsl b/test/intrinsics/gen/abs/5ad50a.wgsl
index 1e6c034..8cd6725 100644
--- a/test/intrinsics/gen/abs/5ad50a.wgsl
+++ b/test/intrinsics/gen/abs/5ad50a.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<i32> = abs(vec3<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_5ad50a();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   abs_5ad50a();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   abs_5ad50a();
 }
diff --git a/test/intrinsics/gen/abs/5ad50a.wgsl.expected.wgsl b/test/intrinsics/gen/abs/5ad50a.wgsl.expected.wgsl
index 067b739..d1cf47f 100644
--- a/test/intrinsics/gen/abs/5ad50a.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/abs/5ad50a.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<i32> = abs(vec3<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_5ad50a();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   abs_5ad50a();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   abs_5ad50a();
 }
diff --git a/test/intrinsics/gen/abs/7326de.wgsl b/test/intrinsics/gen/abs/7326de.wgsl
index e7e8563..ce2be53 100644
--- a/test/intrinsics/gen/abs/7326de.wgsl
+++ b/test/intrinsics/gen/abs/7326de.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<u32> = abs(vec3<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_7326de();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   abs_7326de();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   abs_7326de();
 }
diff --git a/test/intrinsics/gen/abs/7326de.wgsl.expected.wgsl b/test/intrinsics/gen/abs/7326de.wgsl.expected.wgsl
index 0303cc6..4d07d26 100644
--- a/test/intrinsics/gen/abs/7326de.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/abs/7326de.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<u32> = abs(vec3<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_7326de();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   abs_7326de();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   abs_7326de();
 }
diff --git a/test/intrinsics/gen/abs/7f28e6.wgsl b/test/intrinsics/gen/abs/7f28e6.wgsl
index 0af90f4..cbdeef0 100644
--- a/test/intrinsics/gen/abs/7f28e6.wgsl
+++ b/test/intrinsics/gen/abs/7f28e6.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<u32> = abs(vec2<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_7f28e6();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   abs_7f28e6();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   abs_7f28e6();
 }
diff --git a/test/intrinsics/gen/abs/7f28e6.wgsl.expected.wgsl b/test/intrinsics/gen/abs/7f28e6.wgsl.expected.wgsl
index 698a0fb..8f83b40 100644
--- a/test/intrinsics/gen/abs/7f28e6.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/abs/7f28e6.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<u32> = abs(vec2<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_7f28e6();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   abs_7f28e6();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   abs_7f28e6();
 }
diff --git a/test/intrinsics/gen/abs/7faa9e.wgsl b/test/intrinsics/gen/abs/7faa9e.wgsl
index bdc81c0..8b250ee 100644
--- a/test/intrinsics/gen/abs/7faa9e.wgsl
+++ b/test/intrinsics/gen/abs/7faa9e.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<i32> = abs(vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_7faa9e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   abs_7faa9e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   abs_7faa9e();
 }
diff --git a/test/intrinsics/gen/abs/7faa9e.wgsl.expected.wgsl b/test/intrinsics/gen/abs/7faa9e.wgsl.expected.wgsl
index 9929c78..c8e0001 100644
--- a/test/intrinsics/gen/abs/7faa9e.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/abs/7faa9e.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<i32> = abs(vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_7faa9e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   abs_7faa9e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   abs_7faa9e();
 }
diff --git a/test/intrinsics/gen/abs/9c80a6.wgsl b/test/intrinsics/gen/abs/9c80a6.wgsl
index ba87252..71ef852 100644
--- a/test/intrinsics/gen/abs/9c80a6.wgsl
+++ b/test/intrinsics/gen/abs/9c80a6.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<i32> = abs(vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_9c80a6();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   abs_9c80a6();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   abs_9c80a6();
 }
diff --git a/test/intrinsics/gen/abs/9c80a6.wgsl.expected.wgsl b/test/intrinsics/gen/abs/9c80a6.wgsl.expected.wgsl
index c3190a5..6e3519d 100644
--- a/test/intrinsics/gen/abs/9c80a6.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/abs/9c80a6.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<i32> = abs(vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_9c80a6();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   abs_9c80a6();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   abs_9c80a6();
 }
diff --git a/test/intrinsics/gen/abs/b96037.wgsl b/test/intrinsics/gen/abs/b96037.wgsl
index 5112a85..dddc75e 100644
--- a/test/intrinsics/gen/abs/b96037.wgsl
+++ b/test/intrinsics/gen/abs/b96037.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = abs(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_b96037();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   abs_b96037();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   abs_b96037();
 }
diff --git a/test/intrinsics/gen/abs/b96037.wgsl.expected.wgsl b/test/intrinsics/gen/abs/b96037.wgsl.expected.wgsl
index d5b6041..22c47c2 100644
--- a/test/intrinsics/gen/abs/b96037.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/abs/b96037.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = abs(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_b96037();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   abs_b96037();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   abs_b96037();
 }
diff --git a/test/intrinsics/gen/acos/489247.wgsl b/test/intrinsics/gen/acos/489247.wgsl
index c8251f8..d2f227a 100644
--- a/test/intrinsics/gen/acos/489247.wgsl
+++ b/test/intrinsics/gen/acos/489247.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = acos(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   acos_489247();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   acos_489247();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   acos_489247();
 }
diff --git a/test/intrinsics/gen/acos/489247.wgsl.expected.wgsl b/test/intrinsics/gen/acos/489247.wgsl.expected.wgsl
index a67ffde..d8570fb 100644
--- a/test/intrinsics/gen/acos/489247.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/acos/489247.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = acos(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   acos_489247();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   acos_489247();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   acos_489247();
 }
diff --git a/test/intrinsics/gen/acos/8e2acf.wgsl b/test/intrinsics/gen/acos/8e2acf.wgsl
index 17d366e..e085fae 100644
--- a/test/intrinsics/gen/acos/8e2acf.wgsl
+++ b/test/intrinsics/gen/acos/8e2acf.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = acos(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   acos_8e2acf();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   acos_8e2acf();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   acos_8e2acf();
 }
diff --git a/test/intrinsics/gen/acos/8e2acf.wgsl.expected.wgsl b/test/intrinsics/gen/acos/8e2acf.wgsl.expected.wgsl
index 756d867..c03ab26 100644
--- a/test/intrinsics/gen/acos/8e2acf.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/acos/8e2acf.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = acos(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   acos_8e2acf();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   acos_8e2acf();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   acos_8e2acf();
 }
diff --git a/test/intrinsics/gen/acos/a610c4.wgsl b/test/intrinsics/gen/acos/a610c4.wgsl
index 9d4a273..7f7be34 100644
--- a/test/intrinsics/gen/acos/a610c4.wgsl
+++ b/test/intrinsics/gen/acos/a610c4.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = acos(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   acos_a610c4();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   acos_a610c4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   acos_a610c4();
 }
diff --git a/test/intrinsics/gen/acos/a610c4.wgsl.expected.wgsl b/test/intrinsics/gen/acos/a610c4.wgsl.expected.wgsl
index 818b4ba..24807be 100644
--- a/test/intrinsics/gen/acos/a610c4.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/acos/a610c4.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = acos(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   acos_a610c4();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   acos_a610c4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   acos_a610c4();
 }
diff --git a/test/intrinsics/gen/acos/dfc915.wgsl b/test/intrinsics/gen/acos/dfc915.wgsl
index 1b65a6c..5e27bf8 100644
--- a/test/intrinsics/gen/acos/dfc915.wgsl
+++ b/test/intrinsics/gen/acos/dfc915.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = acos(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   acos_dfc915();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   acos_dfc915();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   acos_dfc915();
 }
diff --git a/test/intrinsics/gen/acos/dfc915.wgsl.expected.wgsl b/test/intrinsics/gen/acos/dfc915.wgsl.expected.wgsl
index 631502c..e16d1ea 100644
--- a/test/intrinsics/gen/acos/dfc915.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/acos/dfc915.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = acos(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   acos_dfc915();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   acos_dfc915();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   acos_dfc915();
 }
diff --git a/test/intrinsics/gen/all/353d6a.wgsl b/test/intrinsics/gen/all/353d6a.wgsl
index cfaab0b..fbfe933 100644
--- a/test/intrinsics/gen/all/353d6a.wgsl
+++ b/test/intrinsics/gen/all/353d6a.wgsl
@@ -28,18 +28,18 @@
   var res: bool = all(bool());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   all_353d6a();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   all_353d6a();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   all_353d6a();
 }
diff --git a/test/intrinsics/gen/all/353d6a.wgsl.expected.wgsl b/test/intrinsics/gen/all/353d6a.wgsl.expected.wgsl
index c1da74d..b1ae87d 100644
--- a/test/intrinsics/gen/all/353d6a.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/all/353d6a.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : bool = all(bool());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   all_353d6a();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   all_353d6a();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   all_353d6a();
 }
diff --git a/test/intrinsics/gen/all/986c7b.wgsl b/test/intrinsics/gen/all/986c7b.wgsl
index 9f60484..515f3a3 100644
--- a/test/intrinsics/gen/all/986c7b.wgsl
+++ b/test/intrinsics/gen/all/986c7b.wgsl
@@ -28,18 +28,18 @@
   var res: bool = all(vec4<bool>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   all_986c7b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   all_986c7b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   all_986c7b();
 }
diff --git a/test/intrinsics/gen/all/986c7b.wgsl.expected.wgsl b/test/intrinsics/gen/all/986c7b.wgsl.expected.wgsl
index e1242e8..9195321 100644
--- a/test/intrinsics/gen/all/986c7b.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/all/986c7b.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : bool = all(vec4<bool>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   all_986c7b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   all_986c7b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   all_986c7b();
 }
diff --git a/test/intrinsics/gen/all/bd2dba.wgsl b/test/intrinsics/gen/all/bd2dba.wgsl
index d098c18..657678f 100644
--- a/test/intrinsics/gen/all/bd2dba.wgsl
+++ b/test/intrinsics/gen/all/bd2dba.wgsl
@@ -28,18 +28,18 @@
   var res: bool = all(vec3<bool>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   all_bd2dba();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   all_bd2dba();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   all_bd2dba();
 }
diff --git a/test/intrinsics/gen/all/bd2dba.wgsl.expected.wgsl b/test/intrinsics/gen/all/bd2dba.wgsl.expected.wgsl
index b527c6b..9ec977d 100644
--- a/test/intrinsics/gen/all/bd2dba.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/all/bd2dba.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : bool = all(vec3<bool>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   all_bd2dba();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   all_bd2dba();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   all_bd2dba();
 }
diff --git a/test/intrinsics/gen/all/f46790.wgsl b/test/intrinsics/gen/all/f46790.wgsl
index c744d5d..875da79 100644
--- a/test/intrinsics/gen/all/f46790.wgsl
+++ b/test/intrinsics/gen/all/f46790.wgsl
@@ -28,18 +28,18 @@
   var res: bool = all(vec2<bool>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   all_f46790();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   all_f46790();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   all_f46790();
 }
diff --git a/test/intrinsics/gen/all/f46790.wgsl.expected.wgsl b/test/intrinsics/gen/all/f46790.wgsl.expected.wgsl
index 3dbfa28..a222bb5 100644
--- a/test/intrinsics/gen/all/f46790.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/all/f46790.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : bool = all(vec2<bool>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   all_f46790();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   all_f46790();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   all_f46790();
 }
diff --git a/test/intrinsics/gen/any/083428.wgsl b/test/intrinsics/gen/any/083428.wgsl
index df698b1..8aecc0f 100644
--- a/test/intrinsics/gen/any/083428.wgsl
+++ b/test/intrinsics/gen/any/083428.wgsl
@@ -28,18 +28,18 @@
   var res: bool = any(vec4<bool>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   any_083428();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   any_083428();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   any_083428();
 }
diff --git a/test/intrinsics/gen/any/083428.wgsl.expected.wgsl b/test/intrinsics/gen/any/083428.wgsl.expected.wgsl
index 12391bd..acd23c8 100644
--- a/test/intrinsics/gen/any/083428.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/any/083428.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : bool = any(vec4<bool>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   any_083428();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   any_083428();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   any_083428();
 }
diff --git a/test/intrinsics/gen/any/0e3e58.wgsl b/test/intrinsics/gen/any/0e3e58.wgsl
index 08998fc..71bda25 100644
--- a/test/intrinsics/gen/any/0e3e58.wgsl
+++ b/test/intrinsics/gen/any/0e3e58.wgsl
@@ -28,18 +28,18 @@
   var res: bool = any(vec2<bool>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   any_0e3e58();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   any_0e3e58();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   any_0e3e58();
 }
diff --git a/test/intrinsics/gen/any/0e3e58.wgsl.expected.wgsl b/test/intrinsics/gen/any/0e3e58.wgsl.expected.wgsl
index d8c6a41..c94d9a1 100644
--- a/test/intrinsics/gen/any/0e3e58.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/any/0e3e58.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : bool = any(vec2<bool>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   any_0e3e58();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   any_0e3e58();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   any_0e3e58();
 }
diff --git a/test/intrinsics/gen/any/2ab91a.wgsl b/test/intrinsics/gen/any/2ab91a.wgsl
index 6eac503..6b6b067 100644
--- a/test/intrinsics/gen/any/2ab91a.wgsl
+++ b/test/intrinsics/gen/any/2ab91a.wgsl
@@ -28,18 +28,18 @@
   var res: bool = any(bool());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   any_2ab91a();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   any_2ab91a();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   any_2ab91a();
 }
diff --git a/test/intrinsics/gen/any/2ab91a.wgsl.expected.wgsl b/test/intrinsics/gen/any/2ab91a.wgsl.expected.wgsl
index a672f82..283ab5a 100644
--- a/test/intrinsics/gen/any/2ab91a.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/any/2ab91a.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : bool = any(bool());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   any_2ab91a();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   any_2ab91a();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   any_2ab91a();
 }
diff --git a/test/intrinsics/gen/any/e755c1.wgsl b/test/intrinsics/gen/any/e755c1.wgsl
index 4104c37..b27d31a 100644
--- a/test/intrinsics/gen/any/e755c1.wgsl
+++ b/test/intrinsics/gen/any/e755c1.wgsl
@@ -28,18 +28,18 @@
   var res: bool = any(vec3<bool>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   any_e755c1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   any_e755c1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   any_e755c1();
 }
diff --git a/test/intrinsics/gen/any/e755c1.wgsl.expected.wgsl b/test/intrinsics/gen/any/e755c1.wgsl.expected.wgsl
index b8da397..bf47826 100644
--- a/test/intrinsics/gen/any/e755c1.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/any/e755c1.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : bool = any(vec3<bool>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   any_e755c1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   any_e755c1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   any_e755c1();
 }
diff --git a/test/intrinsics/gen/arrayLength/1588cd.wgsl b/test/intrinsics/gen/arrayLength/1588cd.wgsl
index f4a4123..727e8bd 100644
--- a/test/intrinsics/gen/arrayLength/1588cd.wgsl
+++ b/test/intrinsics/gen/arrayLength/1588cd.wgsl
@@ -25,25 +25,25 @@
 struct SB_RO {
   arg_0: array<i32>;
 };
-[[group(0), binding(1)]] var<storage, read> sb_ro : SB_RO;
+@group(0) @binding(1) var<storage, read> sb_ro : SB_RO;
 
 // fn arrayLength(ptr<storage, array<i32>, read>) -> u32
 fn arrayLength_1588cd() {
   var res: u32 = arrayLength(&sb_ro.arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   arrayLength_1588cd();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   arrayLength_1588cd();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   arrayLength_1588cd();
 }
diff --git a/test/intrinsics/gen/arrayLength/1588cd.wgsl.expected.wgsl b/test/intrinsics/gen/arrayLength/1588cd.wgsl.expected.wgsl
index 645da49..bbf5a36 100644
--- a/test/intrinsics/gen/arrayLength/1588cd.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/arrayLength/1588cd.wgsl.expected.wgsl
@@ -2,24 +2,24 @@
   arg_0 : array<i32>;
 }
 
-[[group(0), binding(1)]] var<storage, read> sb_ro : SB_RO;
+@group(0) @binding(1) var<storage, read> sb_ro : SB_RO;
 
 fn arrayLength_1588cd() {
   var res : u32 = arrayLength(&(sb_ro.arg_0));
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   arrayLength_1588cd();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   arrayLength_1588cd();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   arrayLength_1588cd();
 }
diff --git a/test/intrinsics/gen/arrayLength/61b1c7.wgsl b/test/intrinsics/gen/arrayLength/61b1c7.wgsl
index 8716a4e..02b7f3d 100644
--- a/test/intrinsics/gen/arrayLength/61b1c7.wgsl
+++ b/test/intrinsics/gen/arrayLength/61b1c7.wgsl
@@ -25,25 +25,25 @@
 struct SB_RW {
   arg_0: array<i32>;
 };
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 // fn arrayLength(ptr<storage, array<i32>, read_write>) -> u32
 fn arrayLength_61b1c7() {
   var res: u32 = arrayLength(&sb_rw.arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   arrayLength_61b1c7();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   arrayLength_61b1c7();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   arrayLength_61b1c7();
 }
diff --git a/test/intrinsics/gen/arrayLength/61b1c7.wgsl.expected.wgsl b/test/intrinsics/gen/arrayLength/61b1c7.wgsl.expected.wgsl
index f1d33c2..fdd6856 100644
--- a/test/intrinsics/gen/arrayLength/61b1c7.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/arrayLength/61b1c7.wgsl.expected.wgsl
@@ -2,24 +2,24 @@
   arg_0 : array<i32>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 fn arrayLength_61b1c7() {
   var res : u32 = arrayLength(&(sb_rw.arg_0));
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   arrayLength_61b1c7();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   arrayLength_61b1c7();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   arrayLength_61b1c7();
 }
diff --git a/test/intrinsics/gen/arrayLength/a0f5ca.wgsl b/test/intrinsics/gen/arrayLength/a0f5ca.wgsl
index c367b4d..192d288 100644
--- a/test/intrinsics/gen/arrayLength/a0f5ca.wgsl
+++ b/test/intrinsics/gen/arrayLength/a0f5ca.wgsl
@@ -25,25 +25,25 @@
 struct SB_RO {
   arg_0: array<f32>;
 };
-[[group(0), binding(1)]] var<storage, read> sb_ro : SB_RO;
+@group(0) @binding(1) var<storage, read> sb_ro : SB_RO;
 
 // fn arrayLength(ptr<storage, array<f32>, read>) -> u32
 fn arrayLength_a0f5ca() {
   var res: u32 = arrayLength(&sb_ro.arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   arrayLength_a0f5ca();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   arrayLength_a0f5ca();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   arrayLength_a0f5ca();
 }
diff --git a/test/intrinsics/gen/arrayLength/a0f5ca.wgsl.expected.wgsl b/test/intrinsics/gen/arrayLength/a0f5ca.wgsl.expected.wgsl
index 85468b4..d26abde 100644
--- a/test/intrinsics/gen/arrayLength/a0f5ca.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/arrayLength/a0f5ca.wgsl.expected.wgsl
@@ -2,24 +2,24 @@
   arg_0 : array<f32>;
 }
 
-[[group(0), binding(1)]] var<storage, read> sb_ro : SB_RO;
+@group(0) @binding(1) var<storage, read> sb_ro : SB_RO;
 
 fn arrayLength_a0f5ca() {
   var res : u32 = arrayLength(&(sb_ro.arg_0));
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   arrayLength_a0f5ca();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   arrayLength_a0f5ca();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   arrayLength_a0f5ca();
 }
diff --git a/test/intrinsics/gen/arrayLength/cdd123.wgsl b/test/intrinsics/gen/arrayLength/cdd123.wgsl
index cd4b56a..03948a9 100644
--- a/test/intrinsics/gen/arrayLength/cdd123.wgsl
+++ b/test/intrinsics/gen/arrayLength/cdd123.wgsl
@@ -25,25 +25,25 @@
 struct SB_RW {
   arg_0: array<f32>;
 };
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 // fn arrayLength(ptr<storage, array<f32>, read_write>) -> u32
 fn arrayLength_cdd123() {
   var res: u32 = arrayLength(&sb_rw.arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   arrayLength_cdd123();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   arrayLength_cdd123();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   arrayLength_cdd123();
 }
diff --git a/test/intrinsics/gen/arrayLength/cdd123.wgsl.expected.wgsl b/test/intrinsics/gen/arrayLength/cdd123.wgsl.expected.wgsl
index 65a2077..382f356 100644
--- a/test/intrinsics/gen/arrayLength/cdd123.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/arrayLength/cdd123.wgsl.expected.wgsl
@@ -2,24 +2,24 @@
   arg_0 : array<f32>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 fn arrayLength_cdd123() {
   var res : u32 = arrayLength(&(sb_rw.arg_0));
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   arrayLength_cdd123();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   arrayLength_cdd123();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   arrayLength_cdd123();
 }
diff --git a/test/intrinsics/gen/arrayLength/cfca0a.wgsl b/test/intrinsics/gen/arrayLength/cfca0a.wgsl
index c89fb1d..e3f72dd 100644
--- a/test/intrinsics/gen/arrayLength/cfca0a.wgsl
+++ b/test/intrinsics/gen/arrayLength/cfca0a.wgsl
@@ -25,25 +25,25 @@
 struct SB_RO {
   arg_0: array<u32>;
 };
-[[group(0), binding(1)]] var<storage, read> sb_ro : SB_RO;
+@group(0) @binding(1) var<storage, read> sb_ro : SB_RO;
 
 // fn arrayLength(ptr<storage, array<u32>, read>) -> u32
 fn arrayLength_cfca0a() {
   var res: u32 = arrayLength(&sb_ro.arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   arrayLength_cfca0a();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   arrayLength_cfca0a();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   arrayLength_cfca0a();
 }
diff --git a/test/intrinsics/gen/arrayLength/cfca0a.wgsl.expected.wgsl b/test/intrinsics/gen/arrayLength/cfca0a.wgsl.expected.wgsl
index 8930be0..5780c79 100644
--- a/test/intrinsics/gen/arrayLength/cfca0a.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/arrayLength/cfca0a.wgsl.expected.wgsl
@@ -2,24 +2,24 @@
   arg_0 : array<u32>;
 }
 
-[[group(0), binding(1)]] var<storage, read> sb_ro : SB_RO;
+@group(0) @binding(1) var<storage, read> sb_ro : SB_RO;
 
 fn arrayLength_cfca0a() {
   var res : u32 = arrayLength(&(sb_ro.arg_0));
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   arrayLength_cfca0a();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   arrayLength_cfca0a();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   arrayLength_cfca0a();
 }
diff --git a/test/intrinsics/gen/arrayLength/eb510f.wgsl b/test/intrinsics/gen/arrayLength/eb510f.wgsl
index 0f7df32..86133e5 100644
--- a/test/intrinsics/gen/arrayLength/eb510f.wgsl
+++ b/test/intrinsics/gen/arrayLength/eb510f.wgsl
@@ -25,25 +25,25 @@
 struct SB_RW {
   arg_0: array<u32>;
 };
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 // fn arrayLength(ptr<storage, array<u32>, read_write>) -> u32
 fn arrayLength_eb510f() {
   var res: u32 = arrayLength(&sb_rw.arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   arrayLength_eb510f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   arrayLength_eb510f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   arrayLength_eb510f();
 }
diff --git a/test/intrinsics/gen/arrayLength/eb510f.wgsl.expected.wgsl b/test/intrinsics/gen/arrayLength/eb510f.wgsl.expected.wgsl
index 5b85130..fb67885 100644
--- a/test/intrinsics/gen/arrayLength/eb510f.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/arrayLength/eb510f.wgsl.expected.wgsl
@@ -2,24 +2,24 @@
   arg_0 : array<u32>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 fn arrayLength_eb510f() {
   var res : u32 = arrayLength(&(sb_rw.arg_0));
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   arrayLength_eb510f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   arrayLength_eb510f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   arrayLength_eb510f();
 }
diff --git a/test/intrinsics/gen/asin/064953.wgsl b/test/intrinsics/gen/asin/064953.wgsl
index 26e49e7..f72a8c5 100644
--- a/test/intrinsics/gen/asin/064953.wgsl
+++ b/test/intrinsics/gen/asin/064953.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = asin(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   asin_064953();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   asin_064953();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   asin_064953();
 }
diff --git a/test/intrinsics/gen/asin/064953.wgsl.expected.wgsl b/test/intrinsics/gen/asin/064953.wgsl.expected.wgsl
index 4c3bf70..ed58d99 100644
--- a/test/intrinsics/gen/asin/064953.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/asin/064953.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = asin(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   asin_064953();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   asin_064953();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   asin_064953();
 }
diff --git a/test/intrinsics/gen/asin/7b6a44.wgsl b/test/intrinsics/gen/asin/7b6a44.wgsl
index cee069c..6369852 100644
--- a/test/intrinsics/gen/asin/7b6a44.wgsl
+++ b/test/intrinsics/gen/asin/7b6a44.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = asin(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   asin_7b6a44();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   asin_7b6a44();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   asin_7b6a44();
 }
diff --git a/test/intrinsics/gen/asin/7b6a44.wgsl.expected.wgsl b/test/intrinsics/gen/asin/7b6a44.wgsl.expected.wgsl
index 44df59b..d70e952 100644
--- a/test/intrinsics/gen/asin/7b6a44.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/asin/7b6a44.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = asin(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   asin_7b6a44();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   asin_7b6a44();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   asin_7b6a44();
 }
diff --git a/test/intrinsics/gen/asin/8cd9c9.wgsl b/test/intrinsics/gen/asin/8cd9c9.wgsl
index 2f6a3e2..0f7abb0 100644
--- a/test/intrinsics/gen/asin/8cd9c9.wgsl
+++ b/test/intrinsics/gen/asin/8cd9c9.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = asin(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   asin_8cd9c9();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   asin_8cd9c9();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   asin_8cd9c9();
 }
diff --git a/test/intrinsics/gen/asin/8cd9c9.wgsl.expected.wgsl b/test/intrinsics/gen/asin/8cd9c9.wgsl.expected.wgsl
index 04131b7..2f4ea23 100644
--- a/test/intrinsics/gen/asin/8cd9c9.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/asin/8cd9c9.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = asin(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   asin_8cd9c9();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   asin_8cd9c9();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   asin_8cd9c9();
 }
diff --git a/test/intrinsics/gen/asin/c0c272.wgsl b/test/intrinsics/gen/asin/c0c272.wgsl
index 290798a..b673fe3 100644
--- a/test/intrinsics/gen/asin/c0c272.wgsl
+++ b/test/intrinsics/gen/asin/c0c272.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = asin(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   asin_c0c272();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   asin_c0c272();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   asin_c0c272();
 }
diff --git a/test/intrinsics/gen/asin/c0c272.wgsl.expected.wgsl b/test/intrinsics/gen/asin/c0c272.wgsl.expected.wgsl
index 08eb0ce..d3a8d05 100644
--- a/test/intrinsics/gen/asin/c0c272.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/asin/c0c272.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = asin(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   asin_c0c272();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   asin_c0c272();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   asin_c0c272();
 }
diff --git a/test/intrinsics/gen/atan/02979a.wgsl b/test/intrinsics/gen/atan/02979a.wgsl
index cf0d1be..fb9d082 100644
--- a/test/intrinsics/gen/atan/02979a.wgsl
+++ b/test/intrinsics/gen/atan/02979a.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = atan(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   atan_02979a();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atan_02979a();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atan_02979a();
 }
diff --git a/test/intrinsics/gen/atan/02979a.wgsl.expected.wgsl b/test/intrinsics/gen/atan/02979a.wgsl.expected.wgsl
index 9730fb2..75af743 100644
--- a/test/intrinsics/gen/atan/02979a.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atan/02979a.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = atan(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   atan_02979a();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atan_02979a();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atan_02979a();
 }
diff --git a/test/intrinsics/gen/atan/331e6d.wgsl b/test/intrinsics/gen/atan/331e6d.wgsl
index 23d5f42..e090a63 100644
--- a/test/intrinsics/gen/atan/331e6d.wgsl
+++ b/test/intrinsics/gen/atan/331e6d.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = atan(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   atan_331e6d();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atan_331e6d();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atan_331e6d();
 }
diff --git a/test/intrinsics/gen/atan/331e6d.wgsl.expected.wgsl b/test/intrinsics/gen/atan/331e6d.wgsl.expected.wgsl
index 0b9de68..7bc7982 100644
--- a/test/intrinsics/gen/atan/331e6d.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atan/331e6d.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = atan(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   atan_331e6d();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atan_331e6d();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atan_331e6d();
 }
diff --git a/test/intrinsics/gen/atan/a8b696.wgsl b/test/intrinsics/gen/atan/a8b696.wgsl
index f73df4c..8b1c3cf 100644
--- a/test/intrinsics/gen/atan/a8b696.wgsl
+++ b/test/intrinsics/gen/atan/a8b696.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = atan(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   atan_a8b696();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atan_a8b696();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atan_a8b696();
 }
diff --git a/test/intrinsics/gen/atan/a8b696.wgsl.expected.wgsl b/test/intrinsics/gen/atan/a8b696.wgsl.expected.wgsl
index 004b7ae..70b4684 100644
--- a/test/intrinsics/gen/atan/a8b696.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atan/a8b696.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = atan(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   atan_a8b696();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atan_a8b696();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atan_a8b696();
 }
diff --git a/test/intrinsics/gen/atan/ad96e4.wgsl b/test/intrinsics/gen/atan/ad96e4.wgsl
index 7995257..b334a9e 100644
--- a/test/intrinsics/gen/atan/ad96e4.wgsl
+++ b/test/intrinsics/gen/atan/ad96e4.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = atan(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   atan_ad96e4();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atan_ad96e4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atan_ad96e4();
 }
diff --git a/test/intrinsics/gen/atan/ad96e4.wgsl.expected.wgsl b/test/intrinsics/gen/atan/ad96e4.wgsl.expected.wgsl
index 07ff1f5..dcf775a 100644
--- a/test/intrinsics/gen/atan/ad96e4.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atan/ad96e4.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = atan(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   atan_ad96e4();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atan_ad96e4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atan_ad96e4();
 }
diff --git a/test/intrinsics/gen/atan2/57fb13.wgsl b/test/intrinsics/gen/atan2/57fb13.wgsl
index c9d3028..c18536f 100644
--- a/test/intrinsics/gen/atan2/57fb13.wgsl
+++ b/test/intrinsics/gen/atan2/57fb13.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = atan2(vec2<f32>(), vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   atan2_57fb13();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atan2_57fb13();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atan2_57fb13();
 }
diff --git a/test/intrinsics/gen/atan2/57fb13.wgsl.expected.wgsl b/test/intrinsics/gen/atan2/57fb13.wgsl.expected.wgsl
index 09034a8..ec7ff3a 100644
--- a/test/intrinsics/gen/atan2/57fb13.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atan2/57fb13.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = atan2(vec2<f32>(), vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   atan2_57fb13();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atan2_57fb13();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atan2_57fb13();
 }
diff --git a/test/intrinsics/gen/atan2/96057c.wgsl b/test/intrinsics/gen/atan2/96057c.wgsl
index 293ac6f..0955766 100644
--- a/test/intrinsics/gen/atan2/96057c.wgsl
+++ b/test/intrinsics/gen/atan2/96057c.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = atan2(1.0, 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   atan2_96057c();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atan2_96057c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atan2_96057c();
 }
diff --git a/test/intrinsics/gen/atan2/96057c.wgsl.expected.wgsl b/test/intrinsics/gen/atan2/96057c.wgsl.expected.wgsl
index a60ced6..78abdd4 100644
--- a/test/intrinsics/gen/atan2/96057c.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atan2/96057c.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = atan2(1.0, 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   atan2_96057c();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atan2_96057c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atan2_96057c();
 }
diff --git a/test/intrinsics/gen/atan2/a70d0d.wgsl b/test/intrinsics/gen/atan2/a70d0d.wgsl
index a12f308..87a3c7a 100644
--- a/test/intrinsics/gen/atan2/a70d0d.wgsl
+++ b/test/intrinsics/gen/atan2/a70d0d.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = atan2(vec3<f32>(), vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   atan2_a70d0d();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atan2_a70d0d();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atan2_a70d0d();
 }
diff --git a/test/intrinsics/gen/atan2/a70d0d.wgsl.expected.wgsl b/test/intrinsics/gen/atan2/a70d0d.wgsl.expected.wgsl
index a20e681..9b32967 100644
--- a/test/intrinsics/gen/atan2/a70d0d.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atan2/a70d0d.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = atan2(vec3<f32>(), vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   atan2_a70d0d();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atan2_a70d0d();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atan2_a70d0d();
 }
diff --git a/test/intrinsics/gen/atan2/ae713e.wgsl b/test/intrinsics/gen/atan2/ae713e.wgsl
index 9098c1d..381ca2a 100644
--- a/test/intrinsics/gen/atan2/ae713e.wgsl
+++ b/test/intrinsics/gen/atan2/ae713e.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = atan2(vec4<f32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   atan2_ae713e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atan2_ae713e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atan2_ae713e();
 }
diff --git a/test/intrinsics/gen/atan2/ae713e.wgsl.expected.wgsl b/test/intrinsics/gen/atan2/ae713e.wgsl.expected.wgsl
index 875e4df..d765ab4 100644
--- a/test/intrinsics/gen/atan2/ae713e.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atan2/ae713e.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = atan2(vec4<f32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   atan2_ae713e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atan2_ae713e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atan2_ae713e();
 }
diff --git a/test/intrinsics/gen/atomicAdd/794055.wgsl b/test/intrinsics/gen/atomicAdd/794055.wgsl
index 25241b2..5963b4f 100644
--- a/test/intrinsics/gen/atomicAdd/794055.wgsl
+++ b/test/intrinsics/gen/atomicAdd/794055.wgsl
@@ -29,7 +29,7 @@
   var res: i32 = atomicAdd(&arg_0, 1);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicAdd_794055();
 }
diff --git a/test/intrinsics/gen/atomicAdd/794055.wgsl.expected.wgsl b/test/intrinsics/gen/atomicAdd/794055.wgsl.expected.wgsl
index 833160d..57290be 100644
--- a/test/intrinsics/gen/atomicAdd/794055.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicAdd/794055.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res : i32 = atomicAdd(&(arg_0), 1);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicAdd_794055();
 }
diff --git a/test/intrinsics/gen/atomicAdd/8a199a.wgsl b/test/intrinsics/gen/atomicAdd/8a199a.wgsl
index 0b728d5..aae79c2 100644
--- a/test/intrinsics/gen/atomicAdd/8a199a.wgsl
+++ b/test/intrinsics/gen/atomicAdd/8a199a.wgsl
@@ -25,19 +25,19 @@
 struct SB_RW {
   arg_0: atomic<u32>;
 };
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 // fn atomicAdd(ptr<storage, atomic<u32>, read_write>, u32) -> u32
 fn atomicAdd_8a199a() {
   var res: u32 = atomicAdd(&sb_rw.arg_0, 1u);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicAdd_8a199a();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicAdd_8a199a();
 }
diff --git a/test/intrinsics/gen/atomicAdd/8a199a.wgsl.expected.wgsl b/test/intrinsics/gen/atomicAdd/8a199a.wgsl.expected.wgsl
index 432caa9..096bd43 100644
--- a/test/intrinsics/gen/atomicAdd/8a199a.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicAdd/8a199a.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   arg_0 : atomic<u32>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 fn atomicAdd_8a199a() {
   var res : u32 = atomicAdd(&(sb_rw.arg_0), 1u);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicAdd_8a199a();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicAdd_8a199a();
 }
diff --git a/test/intrinsics/gen/atomicAdd/d32fe4.wgsl b/test/intrinsics/gen/atomicAdd/d32fe4.wgsl
index 88fd8f6..4cf4eb6 100644
--- a/test/intrinsics/gen/atomicAdd/d32fe4.wgsl
+++ b/test/intrinsics/gen/atomicAdd/d32fe4.wgsl
@@ -25,19 +25,19 @@
 struct SB_RW {
   arg_0: atomic<i32>;
 };
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 // fn atomicAdd(ptr<storage, atomic<i32>, read_write>, i32) -> i32
 fn atomicAdd_d32fe4() {
   var res: i32 = atomicAdd(&sb_rw.arg_0, 1);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicAdd_d32fe4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicAdd_d32fe4();
 }
diff --git a/test/intrinsics/gen/atomicAdd/d32fe4.wgsl.expected.wgsl b/test/intrinsics/gen/atomicAdd/d32fe4.wgsl.expected.wgsl
index 5bc41ca..6666896 100644
--- a/test/intrinsics/gen/atomicAdd/d32fe4.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicAdd/d32fe4.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   arg_0 : atomic<i32>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 fn atomicAdd_d32fe4() {
   var res : i32 = atomicAdd(&(sb_rw.arg_0), 1);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicAdd_d32fe4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicAdd_d32fe4();
 }
diff --git a/test/intrinsics/gen/atomicAdd/d5db1d.wgsl b/test/intrinsics/gen/atomicAdd/d5db1d.wgsl
index 2508e9f..55329bc 100644
--- a/test/intrinsics/gen/atomicAdd/d5db1d.wgsl
+++ b/test/intrinsics/gen/atomicAdd/d5db1d.wgsl
@@ -29,7 +29,7 @@
   var res: u32 = atomicAdd(&arg_0, 1u);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicAdd_d5db1d();
 }
diff --git a/test/intrinsics/gen/atomicAdd/d5db1d.wgsl.expected.wgsl b/test/intrinsics/gen/atomicAdd/d5db1d.wgsl.expected.wgsl
index 116ecfe..e7381bb 100644
--- a/test/intrinsics/gen/atomicAdd/d5db1d.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicAdd/d5db1d.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res : u32 = atomicAdd(&(arg_0), 1u);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicAdd_d5db1d();
 }
diff --git a/test/intrinsics/gen/atomicAnd/152966.wgsl b/test/intrinsics/gen/atomicAnd/152966.wgsl
index deb1160..b99ab19 100644
--- a/test/intrinsics/gen/atomicAnd/152966.wgsl
+++ b/test/intrinsics/gen/atomicAnd/152966.wgsl
@@ -25,19 +25,19 @@
 struct SB_RW {
   arg_0: atomic<i32>;
 };
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 // fn atomicAnd(ptr<storage, atomic<i32>, read_write>, i32) -> i32
 fn atomicAnd_152966() {
   var res: i32 = atomicAnd(&sb_rw.arg_0, 1);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicAnd_152966();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicAnd_152966();
 }
diff --git a/test/intrinsics/gen/atomicAnd/152966.wgsl.expected.wgsl b/test/intrinsics/gen/atomicAnd/152966.wgsl.expected.wgsl
index c0be5bc..5da1a1d 100644
--- a/test/intrinsics/gen/atomicAnd/152966.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicAnd/152966.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   arg_0 : atomic<i32>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 fn atomicAnd_152966() {
   var res : i32 = atomicAnd(&(sb_rw.arg_0), 1);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicAnd_152966();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicAnd_152966();
 }
diff --git a/test/intrinsics/gen/atomicAnd/34edd3.wgsl b/test/intrinsics/gen/atomicAnd/34edd3.wgsl
index b380519..567863d 100644
--- a/test/intrinsics/gen/atomicAnd/34edd3.wgsl
+++ b/test/intrinsics/gen/atomicAnd/34edd3.wgsl
@@ -29,7 +29,7 @@
   var res: u32 = atomicAnd(&arg_0, 1u);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicAnd_34edd3();
 }
diff --git a/test/intrinsics/gen/atomicAnd/34edd3.wgsl.expected.wgsl b/test/intrinsics/gen/atomicAnd/34edd3.wgsl.expected.wgsl
index ba6645d..89cec48 100644
--- a/test/intrinsics/gen/atomicAnd/34edd3.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicAnd/34edd3.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res : u32 = atomicAnd(&(arg_0), 1u);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicAnd_34edd3();
 }
diff --git a/test/intrinsics/gen/atomicAnd/45a819.wgsl b/test/intrinsics/gen/atomicAnd/45a819.wgsl
index 76e9305..9eef5c3 100644
--- a/test/intrinsics/gen/atomicAnd/45a819.wgsl
+++ b/test/intrinsics/gen/atomicAnd/45a819.wgsl
@@ -29,7 +29,7 @@
   var res: i32 = atomicAnd(&arg_0, 1);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicAnd_45a819();
 }
diff --git a/test/intrinsics/gen/atomicAnd/45a819.wgsl.expected.wgsl b/test/intrinsics/gen/atomicAnd/45a819.wgsl.expected.wgsl
index 1b59ff6..c022cee 100644
--- a/test/intrinsics/gen/atomicAnd/45a819.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicAnd/45a819.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res : i32 = atomicAnd(&(arg_0), 1);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicAnd_45a819();
 }
diff --git a/test/intrinsics/gen/atomicAnd/85a8d9.wgsl b/test/intrinsics/gen/atomicAnd/85a8d9.wgsl
index 414f521..042cba6 100644
--- a/test/intrinsics/gen/atomicAnd/85a8d9.wgsl
+++ b/test/intrinsics/gen/atomicAnd/85a8d9.wgsl
@@ -25,19 +25,19 @@
 struct SB_RW {
   arg_0: atomic<u32>;
 };
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 // fn atomicAnd(ptr<storage, atomic<u32>, read_write>, u32) -> u32
 fn atomicAnd_85a8d9() {
   var res: u32 = atomicAnd(&sb_rw.arg_0, 1u);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicAnd_85a8d9();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicAnd_85a8d9();
 }
diff --git a/test/intrinsics/gen/atomicAnd/85a8d9.wgsl.expected.wgsl b/test/intrinsics/gen/atomicAnd/85a8d9.wgsl.expected.wgsl
index c63138b..61780ce 100644
--- a/test/intrinsics/gen/atomicAnd/85a8d9.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicAnd/85a8d9.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   arg_0 : atomic<u32>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 fn atomicAnd_85a8d9() {
   var res : u32 = atomicAnd(&(sb_rw.arg_0), 1u);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicAnd_85a8d9();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicAnd_85a8d9();
 }
diff --git a/test/intrinsics/gen/atomicCompareExchangeWeak/12871c.wgsl b/test/intrinsics/gen/atomicCompareExchangeWeak/12871c.wgsl
index ebbe26f..3735ad4 100644
--- a/test/intrinsics/gen/atomicCompareExchangeWeak/12871c.wgsl
+++ b/test/intrinsics/gen/atomicCompareExchangeWeak/12871c.wgsl
@@ -25,19 +25,19 @@
 struct SB_RW {
   arg_0: atomic<i32>;
 };
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 // fn atomicCompareExchangeWeak(ptr<storage, atomic<i32>, read_write>, i32, i32) -> vec2<i32>
 fn atomicCompareExchangeWeak_12871c() {
   var res: vec2<i32> = atomicCompareExchangeWeak(&sb_rw.arg_0, 1, 1);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicCompareExchangeWeak_12871c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicCompareExchangeWeak_12871c();
 }
diff --git a/test/intrinsics/gen/atomicCompareExchangeWeak/12871c.wgsl.expected.wgsl b/test/intrinsics/gen/atomicCompareExchangeWeak/12871c.wgsl.expected.wgsl
index eed9b1f..aa49ba9 100644
--- a/test/intrinsics/gen/atomicCompareExchangeWeak/12871c.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicCompareExchangeWeak/12871c.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   arg_0 : atomic<i32>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 fn atomicCompareExchangeWeak_12871c() {
   var res : vec2<i32> = atomicCompareExchangeWeak(&(sb_rw.arg_0), 1, 1);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicCompareExchangeWeak_12871c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicCompareExchangeWeak_12871c();
 }
diff --git a/test/intrinsics/gen/atomicCompareExchangeWeak/6673da.wgsl b/test/intrinsics/gen/atomicCompareExchangeWeak/6673da.wgsl
index ac2e91d..be43eb0 100644
--- a/test/intrinsics/gen/atomicCompareExchangeWeak/6673da.wgsl
+++ b/test/intrinsics/gen/atomicCompareExchangeWeak/6673da.wgsl
@@ -25,19 +25,19 @@
 struct SB_RW {
   arg_0: atomic<u32>;
 };
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 // fn atomicCompareExchangeWeak(ptr<storage, atomic<u32>, read_write>, u32, u32) -> vec2<u32>
 fn atomicCompareExchangeWeak_6673da() {
   var res: vec2<u32> = atomicCompareExchangeWeak(&sb_rw.arg_0, 1u, 1u);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicCompareExchangeWeak_6673da();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicCompareExchangeWeak_6673da();
 }
diff --git a/test/intrinsics/gen/atomicCompareExchangeWeak/6673da.wgsl.expected.wgsl b/test/intrinsics/gen/atomicCompareExchangeWeak/6673da.wgsl.expected.wgsl
index ea4899a..3970296 100644
--- a/test/intrinsics/gen/atomicCompareExchangeWeak/6673da.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicCompareExchangeWeak/6673da.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   arg_0 : atomic<u32>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 fn atomicCompareExchangeWeak_6673da() {
   var res : vec2<u32> = atomicCompareExchangeWeak(&(sb_rw.arg_0), 1u, 1u);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicCompareExchangeWeak_6673da();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicCompareExchangeWeak_6673da();
 }
diff --git a/test/intrinsics/gen/atomicCompareExchangeWeak/89ea3b.wgsl b/test/intrinsics/gen/atomicCompareExchangeWeak/89ea3b.wgsl
index 78a5bd0..58bf4b5 100644
--- a/test/intrinsics/gen/atomicCompareExchangeWeak/89ea3b.wgsl
+++ b/test/intrinsics/gen/atomicCompareExchangeWeak/89ea3b.wgsl
@@ -29,7 +29,7 @@
   var res: vec2<i32> = atomicCompareExchangeWeak(&arg_0, 1, 1);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicCompareExchangeWeak_89ea3b();
 }
diff --git a/test/intrinsics/gen/atomicCompareExchangeWeak/89ea3b.wgsl.expected.wgsl b/test/intrinsics/gen/atomicCompareExchangeWeak/89ea3b.wgsl.expected.wgsl
index 152f1cd..4357511 100644
--- a/test/intrinsics/gen/atomicCompareExchangeWeak/89ea3b.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicCompareExchangeWeak/89ea3b.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res : vec2<i32> = atomicCompareExchangeWeak(&(arg_0), 1, 1);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicCompareExchangeWeak_89ea3b();
 }
diff --git a/test/intrinsics/gen/atomicCompareExchangeWeak/b2ab2c.wgsl b/test/intrinsics/gen/atomicCompareExchangeWeak/b2ab2c.wgsl
index a73436f..38cf645 100644
--- a/test/intrinsics/gen/atomicCompareExchangeWeak/b2ab2c.wgsl
+++ b/test/intrinsics/gen/atomicCompareExchangeWeak/b2ab2c.wgsl
@@ -29,7 +29,7 @@
   var res: vec2<u32> = atomicCompareExchangeWeak(&arg_0, 1u, 1u);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicCompareExchangeWeak_b2ab2c();
 }
diff --git a/test/intrinsics/gen/atomicCompareExchangeWeak/b2ab2c.wgsl.expected.wgsl b/test/intrinsics/gen/atomicCompareExchangeWeak/b2ab2c.wgsl.expected.wgsl
index f920acf..d53e099 100644
--- a/test/intrinsics/gen/atomicCompareExchangeWeak/b2ab2c.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicCompareExchangeWeak/b2ab2c.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res : vec2<u32> = atomicCompareExchangeWeak(&(arg_0), 1u, 1u);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicCompareExchangeWeak_b2ab2c();
 }
diff --git a/test/intrinsics/gen/atomicExchange/0a5dca.wgsl b/test/intrinsics/gen/atomicExchange/0a5dca.wgsl
index 4e79f0d..44ac264 100644
--- a/test/intrinsics/gen/atomicExchange/0a5dca.wgsl
+++ b/test/intrinsics/gen/atomicExchange/0a5dca.wgsl
@@ -29,7 +29,7 @@
   var res: u32 = atomicExchange(&arg_0, 1u);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicExchange_0a5dca();
 }
diff --git a/test/intrinsics/gen/atomicExchange/0a5dca.wgsl.expected.wgsl b/test/intrinsics/gen/atomicExchange/0a5dca.wgsl.expected.wgsl
index aba05aa..a7acabd 100644
--- a/test/intrinsics/gen/atomicExchange/0a5dca.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicExchange/0a5dca.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res : u32 = atomicExchange(&(arg_0), 1u);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicExchange_0a5dca();
 }
diff --git a/test/intrinsics/gen/atomicExchange/d59712.wgsl b/test/intrinsics/gen/atomicExchange/d59712.wgsl
index 6a5c6f2..fc014ee 100644
--- a/test/intrinsics/gen/atomicExchange/d59712.wgsl
+++ b/test/intrinsics/gen/atomicExchange/d59712.wgsl
@@ -25,19 +25,19 @@
 struct SB_RW {
   arg_0: atomic<u32>;
 };
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 // fn atomicExchange(ptr<storage, atomic<u32>, read_write>, u32) -> u32
 fn atomicExchange_d59712() {
   var res: u32 = atomicExchange(&sb_rw.arg_0, 1u);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicExchange_d59712();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicExchange_d59712();
 }
diff --git a/test/intrinsics/gen/atomicExchange/d59712.wgsl.expected.wgsl b/test/intrinsics/gen/atomicExchange/d59712.wgsl.expected.wgsl
index 9970c9b..0930bd7 100644
--- a/test/intrinsics/gen/atomicExchange/d59712.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicExchange/d59712.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   arg_0 : atomic<u32>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 fn atomicExchange_d59712() {
   var res : u32 = atomicExchange(&(sb_rw.arg_0), 1u);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicExchange_d59712();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicExchange_d59712();
 }
diff --git a/test/intrinsics/gen/atomicExchange/e114ba.wgsl b/test/intrinsics/gen/atomicExchange/e114ba.wgsl
index 8f2acd0..f52534a 100644
--- a/test/intrinsics/gen/atomicExchange/e114ba.wgsl
+++ b/test/intrinsics/gen/atomicExchange/e114ba.wgsl
@@ -29,7 +29,7 @@
   var res: i32 = atomicExchange(&arg_0, 1);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicExchange_e114ba();
 }
diff --git a/test/intrinsics/gen/atomicExchange/e114ba.wgsl.expected.wgsl b/test/intrinsics/gen/atomicExchange/e114ba.wgsl.expected.wgsl
index 0384fca..9735838 100644
--- a/test/intrinsics/gen/atomicExchange/e114ba.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicExchange/e114ba.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res : i32 = atomicExchange(&(arg_0), 1);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicExchange_e114ba();
 }
diff --git a/test/intrinsics/gen/atomicExchange/f2e22f.wgsl b/test/intrinsics/gen/atomicExchange/f2e22f.wgsl
index 990cfb4..be22ff9 100644
--- a/test/intrinsics/gen/atomicExchange/f2e22f.wgsl
+++ b/test/intrinsics/gen/atomicExchange/f2e22f.wgsl
@@ -25,19 +25,19 @@
 struct SB_RW {
   arg_0: atomic<i32>;
 };
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 // fn atomicExchange(ptr<storage, atomic<i32>, read_write>, i32) -> i32
 fn atomicExchange_f2e22f() {
   var res: i32 = atomicExchange(&sb_rw.arg_0, 1);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicExchange_f2e22f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicExchange_f2e22f();
 }
diff --git a/test/intrinsics/gen/atomicExchange/f2e22f.wgsl.expected.wgsl b/test/intrinsics/gen/atomicExchange/f2e22f.wgsl.expected.wgsl
index 511c02b..79704e4 100644
--- a/test/intrinsics/gen/atomicExchange/f2e22f.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicExchange/f2e22f.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   arg_0 : atomic<i32>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 fn atomicExchange_f2e22f() {
   var res : i32 = atomicExchange(&(sb_rw.arg_0), 1);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicExchange_f2e22f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicExchange_f2e22f();
 }
diff --git a/test/intrinsics/gen/atomicLoad/0806ad.wgsl b/test/intrinsics/gen/atomicLoad/0806ad.wgsl
index 98dd4f5..0981e05 100644
--- a/test/intrinsics/gen/atomicLoad/0806ad.wgsl
+++ b/test/intrinsics/gen/atomicLoad/0806ad.wgsl
@@ -25,19 +25,19 @@
 struct SB_RW {
   arg_0: atomic<i32>;
 };
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 // fn atomicLoad(ptr<storage, atomic<i32>, read_write>) -> i32
 fn atomicLoad_0806ad() {
   var res: i32 = atomicLoad(&sb_rw.arg_0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicLoad_0806ad();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicLoad_0806ad();
 }
diff --git a/test/intrinsics/gen/atomicLoad/0806ad.wgsl.expected.wgsl b/test/intrinsics/gen/atomicLoad/0806ad.wgsl.expected.wgsl
index b0f3f7d..7396ee2 100644
--- a/test/intrinsics/gen/atomicLoad/0806ad.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicLoad/0806ad.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   arg_0 : atomic<i32>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 fn atomicLoad_0806ad() {
   var res : i32 = atomicLoad(&(sb_rw.arg_0));
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicLoad_0806ad();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicLoad_0806ad();
 }
diff --git a/test/intrinsics/gen/atomicLoad/361bf1.wgsl b/test/intrinsics/gen/atomicLoad/361bf1.wgsl
index 622c033..3c51abc 100644
--- a/test/intrinsics/gen/atomicLoad/361bf1.wgsl
+++ b/test/intrinsics/gen/atomicLoad/361bf1.wgsl
@@ -29,7 +29,7 @@
   var res: u32 = atomicLoad(&arg_0);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicLoad_361bf1();
 }
diff --git a/test/intrinsics/gen/atomicLoad/361bf1.wgsl.expected.wgsl b/test/intrinsics/gen/atomicLoad/361bf1.wgsl.expected.wgsl
index ff710c7..1040bf2 100644
--- a/test/intrinsics/gen/atomicLoad/361bf1.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicLoad/361bf1.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res : u32 = atomicLoad(&(arg_0));
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicLoad_361bf1();
 }
diff --git a/test/intrinsics/gen/atomicLoad/afcc03.wgsl b/test/intrinsics/gen/atomicLoad/afcc03.wgsl
index c24843d..7585c6f 100644
--- a/test/intrinsics/gen/atomicLoad/afcc03.wgsl
+++ b/test/intrinsics/gen/atomicLoad/afcc03.wgsl
@@ -29,7 +29,7 @@
   var res: i32 = atomicLoad(&arg_0);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicLoad_afcc03();
 }
diff --git a/test/intrinsics/gen/atomicLoad/afcc03.wgsl.expected.wgsl b/test/intrinsics/gen/atomicLoad/afcc03.wgsl.expected.wgsl
index 72d9325..e39317d 100644
--- a/test/intrinsics/gen/atomicLoad/afcc03.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicLoad/afcc03.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res : i32 = atomicLoad(&(arg_0));
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicLoad_afcc03();
 }
diff --git a/test/intrinsics/gen/atomicLoad/fe6cc3.wgsl b/test/intrinsics/gen/atomicLoad/fe6cc3.wgsl
index 3c8ea5e..d337a1e 100644
--- a/test/intrinsics/gen/atomicLoad/fe6cc3.wgsl
+++ b/test/intrinsics/gen/atomicLoad/fe6cc3.wgsl
@@ -25,19 +25,19 @@
 struct SB_RW {
   arg_0: atomic<u32>;
 };
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 // fn atomicLoad(ptr<storage, atomic<u32>, read_write>) -> u32
 fn atomicLoad_fe6cc3() {
   var res: u32 = atomicLoad(&sb_rw.arg_0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicLoad_fe6cc3();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicLoad_fe6cc3();
 }
diff --git a/test/intrinsics/gen/atomicLoad/fe6cc3.wgsl.expected.wgsl b/test/intrinsics/gen/atomicLoad/fe6cc3.wgsl.expected.wgsl
index a4b878b..28eca60 100644
--- a/test/intrinsics/gen/atomicLoad/fe6cc3.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicLoad/fe6cc3.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   arg_0 : atomic<u32>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 fn atomicLoad_fe6cc3() {
   var res : u32 = atomicLoad(&(sb_rw.arg_0));
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicLoad_fe6cc3();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicLoad_fe6cc3();
 }
diff --git a/test/intrinsics/gen/atomicMax/51b9be.wgsl b/test/intrinsics/gen/atomicMax/51b9be.wgsl
index 8c53dfa..7f2e69c 100644
--- a/test/intrinsics/gen/atomicMax/51b9be.wgsl
+++ b/test/intrinsics/gen/atomicMax/51b9be.wgsl
@@ -25,19 +25,19 @@
 struct SB_RW {
   arg_0: atomic<u32>;
 };
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 // fn atomicMax(ptr<storage, atomic<u32>, read_write>, u32) -> u32
 fn atomicMax_51b9be() {
   var res: u32 = atomicMax(&sb_rw.arg_0, 1u);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicMax_51b9be();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicMax_51b9be();
 }
diff --git a/test/intrinsics/gen/atomicMax/51b9be.wgsl.expected.wgsl b/test/intrinsics/gen/atomicMax/51b9be.wgsl.expected.wgsl
index 3f36fbc..985c763 100644
--- a/test/intrinsics/gen/atomicMax/51b9be.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicMax/51b9be.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   arg_0 : atomic<u32>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 fn atomicMax_51b9be() {
   var res : u32 = atomicMax(&(sb_rw.arg_0), 1u);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicMax_51b9be();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicMax_51b9be();
 }
diff --git a/test/intrinsics/gen/atomicMax/92aa72.wgsl b/test/intrinsics/gen/atomicMax/92aa72.wgsl
index 74431a7..603ea33 100644
--- a/test/intrinsics/gen/atomicMax/92aa72.wgsl
+++ b/test/intrinsics/gen/atomicMax/92aa72.wgsl
@@ -25,19 +25,19 @@
 struct SB_RW {
   arg_0: atomic<i32>;
 };
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 // fn atomicMax(ptr<storage, atomic<i32>, read_write>, i32) -> i32
 fn atomicMax_92aa72() {
   var res: i32 = atomicMax(&sb_rw.arg_0, 1);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicMax_92aa72();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicMax_92aa72();
 }
diff --git a/test/intrinsics/gen/atomicMax/92aa72.wgsl.expected.wgsl b/test/intrinsics/gen/atomicMax/92aa72.wgsl.expected.wgsl
index d1c9bea..050d266 100644
--- a/test/intrinsics/gen/atomicMax/92aa72.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicMax/92aa72.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   arg_0 : atomic<i32>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 fn atomicMax_92aa72() {
   var res : i32 = atomicMax(&(sb_rw.arg_0), 1);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicMax_92aa72();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicMax_92aa72();
 }
diff --git a/test/intrinsics/gen/atomicMax/a89cc3.wgsl b/test/intrinsics/gen/atomicMax/a89cc3.wgsl
index f3e4ef9..f6c65cf 100644
--- a/test/intrinsics/gen/atomicMax/a89cc3.wgsl
+++ b/test/intrinsics/gen/atomicMax/a89cc3.wgsl
@@ -29,7 +29,7 @@
   var res: i32 = atomicMax(&arg_0, 1);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicMax_a89cc3();
 }
diff --git a/test/intrinsics/gen/atomicMax/a89cc3.wgsl.expected.wgsl b/test/intrinsics/gen/atomicMax/a89cc3.wgsl.expected.wgsl
index a383c70..d36703e 100644
--- a/test/intrinsics/gen/atomicMax/a89cc3.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicMax/a89cc3.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res : i32 = atomicMax(&(arg_0), 1);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicMax_a89cc3();
 }
diff --git a/test/intrinsics/gen/atomicMax/beccfc.wgsl b/test/intrinsics/gen/atomicMax/beccfc.wgsl
index a5ed85b..c6c4b60 100644
--- a/test/intrinsics/gen/atomicMax/beccfc.wgsl
+++ b/test/intrinsics/gen/atomicMax/beccfc.wgsl
@@ -29,7 +29,7 @@
   var res: u32 = atomicMax(&arg_0, 1u);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicMax_beccfc();
 }
diff --git a/test/intrinsics/gen/atomicMax/beccfc.wgsl.expected.wgsl b/test/intrinsics/gen/atomicMax/beccfc.wgsl.expected.wgsl
index d468d95..f14f91a 100644
--- a/test/intrinsics/gen/atomicMax/beccfc.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicMax/beccfc.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res : u32 = atomicMax(&(arg_0), 1u);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicMax_beccfc();
 }
diff --git a/test/intrinsics/gen/atomicMin/278235.wgsl b/test/intrinsics/gen/atomicMin/278235.wgsl
index c5f1816..2a0cf13 100644
--- a/test/intrinsics/gen/atomicMin/278235.wgsl
+++ b/test/intrinsics/gen/atomicMin/278235.wgsl
@@ -29,7 +29,7 @@
   var res: i32 = atomicMin(&arg_0, 1);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicMin_278235();
 }
diff --git a/test/intrinsics/gen/atomicMin/278235.wgsl.expected.wgsl b/test/intrinsics/gen/atomicMin/278235.wgsl.expected.wgsl
index c3b237c..981a7b3 100644
--- a/test/intrinsics/gen/atomicMin/278235.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicMin/278235.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res : i32 = atomicMin(&(arg_0), 1);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicMin_278235();
 }
diff --git a/test/intrinsics/gen/atomicMin/69d383.wgsl b/test/intrinsics/gen/atomicMin/69d383.wgsl
index 79c5cae..41b6284 100644
--- a/test/intrinsics/gen/atomicMin/69d383.wgsl
+++ b/test/intrinsics/gen/atomicMin/69d383.wgsl
@@ -29,7 +29,7 @@
   var res: u32 = atomicMin(&arg_0, 1u);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicMin_69d383();
 }
diff --git a/test/intrinsics/gen/atomicMin/69d383.wgsl.expected.wgsl b/test/intrinsics/gen/atomicMin/69d383.wgsl.expected.wgsl
index baff1a6..034d1af 100644
--- a/test/intrinsics/gen/atomicMin/69d383.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicMin/69d383.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res : u32 = atomicMin(&(arg_0), 1u);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicMin_69d383();
 }
diff --git a/test/intrinsics/gen/atomicMin/8e38dc.wgsl b/test/intrinsics/gen/atomicMin/8e38dc.wgsl
index 8f50406..9512528 100644
--- a/test/intrinsics/gen/atomicMin/8e38dc.wgsl
+++ b/test/intrinsics/gen/atomicMin/8e38dc.wgsl
@@ -25,19 +25,19 @@
 struct SB_RW {
   arg_0: atomic<i32>;
 };
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 // fn atomicMin(ptr<storage, atomic<i32>, read_write>, i32) -> i32
 fn atomicMin_8e38dc() {
   var res: i32 = atomicMin(&sb_rw.arg_0, 1);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicMin_8e38dc();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicMin_8e38dc();
 }
diff --git a/test/intrinsics/gen/atomicMin/8e38dc.wgsl.expected.wgsl b/test/intrinsics/gen/atomicMin/8e38dc.wgsl.expected.wgsl
index ef74988..445c42c 100644
--- a/test/intrinsics/gen/atomicMin/8e38dc.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicMin/8e38dc.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   arg_0 : atomic<i32>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 fn atomicMin_8e38dc() {
   var res : i32 = atomicMin(&(sb_rw.arg_0), 1);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicMin_8e38dc();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicMin_8e38dc();
 }
diff --git a/test/intrinsics/gen/atomicMin/c67a74.wgsl b/test/intrinsics/gen/atomicMin/c67a74.wgsl
index afcf5d3..fe5bb45 100644
--- a/test/intrinsics/gen/atomicMin/c67a74.wgsl
+++ b/test/intrinsics/gen/atomicMin/c67a74.wgsl
@@ -25,19 +25,19 @@
 struct SB_RW {
   arg_0: atomic<u32>;
 };
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 // fn atomicMin(ptr<storage, atomic<u32>, read_write>, u32) -> u32
 fn atomicMin_c67a74() {
   var res: u32 = atomicMin(&sb_rw.arg_0, 1u);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicMin_c67a74();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicMin_c67a74();
 }
diff --git a/test/intrinsics/gen/atomicMin/c67a74.wgsl.expected.wgsl b/test/intrinsics/gen/atomicMin/c67a74.wgsl.expected.wgsl
index 1e1fb28..85296e7 100644
--- a/test/intrinsics/gen/atomicMin/c67a74.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicMin/c67a74.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   arg_0 : atomic<u32>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 fn atomicMin_c67a74() {
   var res : u32 = atomicMin(&(sb_rw.arg_0), 1u);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicMin_c67a74();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicMin_c67a74();
 }
diff --git a/test/intrinsics/gen/atomicOr/5e3d61.wgsl b/test/intrinsics/gen/atomicOr/5e3d61.wgsl
index 0a2f8c6..be6bc51 100644
--- a/test/intrinsics/gen/atomicOr/5e3d61.wgsl
+++ b/test/intrinsics/gen/atomicOr/5e3d61.wgsl
@@ -29,7 +29,7 @@
   var res: u32 = atomicOr(&arg_0, 1u);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicOr_5e3d61();
 }
diff --git a/test/intrinsics/gen/atomicOr/5e3d61.wgsl.expected.wgsl b/test/intrinsics/gen/atomicOr/5e3d61.wgsl.expected.wgsl
index a06bab1..00f3e66 100644
--- a/test/intrinsics/gen/atomicOr/5e3d61.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicOr/5e3d61.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res : u32 = atomicOr(&(arg_0), 1u);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicOr_5e3d61();
 }
diff --git a/test/intrinsics/gen/atomicOr/5e95d4.wgsl b/test/intrinsics/gen/atomicOr/5e95d4.wgsl
index c90026e..356f0d0 100644
--- a/test/intrinsics/gen/atomicOr/5e95d4.wgsl
+++ b/test/intrinsics/gen/atomicOr/5e95d4.wgsl
@@ -25,19 +25,19 @@
 struct SB_RW {
   arg_0: atomic<u32>;
 };
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 // fn atomicOr(ptr<storage, atomic<u32>, read_write>, u32) -> u32
 fn atomicOr_5e95d4() {
   var res: u32 = atomicOr(&sb_rw.arg_0, 1u);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicOr_5e95d4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicOr_5e95d4();
 }
diff --git a/test/intrinsics/gen/atomicOr/5e95d4.wgsl.expected.wgsl b/test/intrinsics/gen/atomicOr/5e95d4.wgsl.expected.wgsl
index a483962..78414eb 100644
--- a/test/intrinsics/gen/atomicOr/5e95d4.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicOr/5e95d4.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   arg_0 : atomic<u32>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 fn atomicOr_5e95d4() {
   var res : u32 = atomicOr(&(sb_rw.arg_0), 1u);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicOr_5e95d4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicOr_5e95d4();
 }
diff --git a/test/intrinsics/gen/atomicOr/8d96a0.wgsl b/test/intrinsics/gen/atomicOr/8d96a0.wgsl
index 7102b0c..c686a28 100644
--- a/test/intrinsics/gen/atomicOr/8d96a0.wgsl
+++ b/test/intrinsics/gen/atomicOr/8d96a0.wgsl
@@ -25,19 +25,19 @@
 struct SB_RW {
   arg_0: atomic<i32>;
 };
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 // fn atomicOr(ptr<storage, atomic<i32>, read_write>, i32) -> i32
 fn atomicOr_8d96a0() {
   var res: i32 = atomicOr(&sb_rw.arg_0, 1);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicOr_8d96a0();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicOr_8d96a0();
 }
diff --git a/test/intrinsics/gen/atomicOr/8d96a0.wgsl.expected.wgsl b/test/intrinsics/gen/atomicOr/8d96a0.wgsl.expected.wgsl
index 57de392..9ce6bd6 100644
--- a/test/intrinsics/gen/atomicOr/8d96a0.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicOr/8d96a0.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   arg_0 : atomic<i32>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 fn atomicOr_8d96a0() {
   var res : i32 = atomicOr(&(sb_rw.arg_0), 1);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicOr_8d96a0();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicOr_8d96a0();
 }
diff --git a/test/intrinsics/gen/atomicOr/d09248.wgsl b/test/intrinsics/gen/atomicOr/d09248.wgsl
index b9280ec..ead0c34 100644
--- a/test/intrinsics/gen/atomicOr/d09248.wgsl
+++ b/test/intrinsics/gen/atomicOr/d09248.wgsl
@@ -29,7 +29,7 @@
   var res: i32 = atomicOr(&arg_0, 1);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicOr_d09248();
 }
diff --git a/test/intrinsics/gen/atomicOr/d09248.wgsl.expected.wgsl b/test/intrinsics/gen/atomicOr/d09248.wgsl.expected.wgsl
index d517bab..c28f1c7 100644
--- a/test/intrinsics/gen/atomicOr/d09248.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicOr/d09248.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res : i32 = atomicOr(&(arg_0), 1);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicOr_d09248();
 }
diff --git a/test/intrinsics/gen/atomicStore/726882.wgsl b/test/intrinsics/gen/atomicStore/726882.wgsl
index f6066f2..3994efb 100644
--- a/test/intrinsics/gen/atomicStore/726882.wgsl
+++ b/test/intrinsics/gen/atomicStore/726882.wgsl
@@ -29,7 +29,7 @@
   atomicStore(&arg_0, 1u);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicStore_726882();
 }
diff --git a/test/intrinsics/gen/atomicStore/726882.wgsl.expected.wgsl b/test/intrinsics/gen/atomicStore/726882.wgsl.expected.wgsl
index e275dcf..d81b71e 100644
--- a/test/intrinsics/gen/atomicStore/726882.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicStore/726882.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   atomicStore(&(arg_0), 1u);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicStore_726882();
 }
diff --git a/test/intrinsics/gen/atomicStore/8bea94.wgsl b/test/intrinsics/gen/atomicStore/8bea94.wgsl
index 8906c61..3ce1a43 100644
--- a/test/intrinsics/gen/atomicStore/8bea94.wgsl
+++ b/test/intrinsics/gen/atomicStore/8bea94.wgsl
@@ -29,7 +29,7 @@
   atomicStore(&arg_0, 1);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicStore_8bea94();
 }
diff --git a/test/intrinsics/gen/atomicStore/8bea94.wgsl.expected.wgsl b/test/intrinsics/gen/atomicStore/8bea94.wgsl.expected.wgsl
index 22cd2b0..2616d87 100644
--- a/test/intrinsics/gen/atomicStore/8bea94.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicStore/8bea94.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   atomicStore(&(arg_0), 1);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicStore_8bea94();
 }
diff --git a/test/intrinsics/gen/atomicStore/cdc29e.wgsl b/test/intrinsics/gen/atomicStore/cdc29e.wgsl
index 5961171..b9cb390 100644
--- a/test/intrinsics/gen/atomicStore/cdc29e.wgsl
+++ b/test/intrinsics/gen/atomicStore/cdc29e.wgsl
@@ -25,19 +25,19 @@
 struct SB_RW {
   arg_0: atomic<u32>;
 };
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 // fn atomicStore(ptr<storage, atomic<u32>, read_write>, u32)
 fn atomicStore_cdc29e() {
   atomicStore(&sb_rw.arg_0, 1u);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicStore_cdc29e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicStore_cdc29e();
 }
diff --git a/test/intrinsics/gen/atomicStore/cdc29e.wgsl.expected.wgsl b/test/intrinsics/gen/atomicStore/cdc29e.wgsl.expected.wgsl
index 9f19d43..d0b2386 100644
--- a/test/intrinsics/gen/atomicStore/cdc29e.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicStore/cdc29e.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   arg_0 : atomic<u32>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 fn atomicStore_cdc29e() {
   atomicStore(&(sb_rw.arg_0), 1u);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicStore_cdc29e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicStore_cdc29e();
 }
diff --git a/test/intrinsics/gen/atomicStore/d1e9a6.wgsl b/test/intrinsics/gen/atomicStore/d1e9a6.wgsl
index cbbec6e..a4ff095 100644
--- a/test/intrinsics/gen/atomicStore/d1e9a6.wgsl
+++ b/test/intrinsics/gen/atomicStore/d1e9a6.wgsl
@@ -25,19 +25,19 @@
 struct SB_RW {
   arg_0: atomic<i32>;
 };
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 // fn atomicStore(ptr<storage, atomic<i32>, read_write>, i32)
 fn atomicStore_d1e9a6() {
   atomicStore(&sb_rw.arg_0, 1);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicStore_d1e9a6();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicStore_d1e9a6();
 }
diff --git a/test/intrinsics/gen/atomicStore/d1e9a6.wgsl.expected.wgsl b/test/intrinsics/gen/atomicStore/d1e9a6.wgsl.expected.wgsl
index 803cb0d..5518552 100644
--- a/test/intrinsics/gen/atomicStore/d1e9a6.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicStore/d1e9a6.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   arg_0 : atomic<i32>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 fn atomicStore_d1e9a6() {
   atomicStore(&(sb_rw.arg_0), 1);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicStore_d1e9a6();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicStore_d1e9a6();
 }
diff --git a/test/intrinsics/gen/atomicSub/051100.wgsl b/test/intrinsics/gen/atomicSub/051100.wgsl
index d8083ad..698b794 100644
--- a/test/intrinsics/gen/atomicSub/051100.wgsl
+++ b/test/intrinsics/gen/atomicSub/051100.wgsl
@@ -25,19 +25,19 @@
 struct SB_RW {
   arg_0: atomic<i32>;
 };
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 // fn atomicSub(ptr<storage, atomic<i32>, read_write>, i32) -> i32
 fn atomicSub_051100() {
   var res: i32 = atomicSub(&sb_rw.arg_0, 1);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicSub_051100();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicSub_051100();
 }
diff --git a/test/intrinsics/gen/atomicSub/051100.wgsl.expected.wgsl b/test/intrinsics/gen/atomicSub/051100.wgsl.expected.wgsl
index 1059294..27b8857 100644
--- a/test/intrinsics/gen/atomicSub/051100.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicSub/051100.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   arg_0 : atomic<i32>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 fn atomicSub_051100() {
   var res : i32 = atomicSub(&(sb_rw.arg_0), 1);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicSub_051100();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicSub_051100();
 }
diff --git a/test/intrinsics/gen/atomicSub/0d26c2.wgsl b/test/intrinsics/gen/atomicSub/0d26c2.wgsl
index 0aab47d..84cfa43 100644
--- a/test/intrinsics/gen/atomicSub/0d26c2.wgsl
+++ b/test/intrinsics/gen/atomicSub/0d26c2.wgsl
@@ -29,7 +29,7 @@
   var res: u32 = atomicSub(&arg_0, 1u);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicSub_0d26c2();
 }
diff --git a/test/intrinsics/gen/atomicSub/0d26c2.wgsl.expected.wgsl b/test/intrinsics/gen/atomicSub/0d26c2.wgsl.expected.wgsl
index c5c104b..6b75ecb 100644
--- a/test/intrinsics/gen/atomicSub/0d26c2.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicSub/0d26c2.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res : u32 = atomicSub(&(arg_0), 1u);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicSub_0d26c2();
 }
diff --git a/test/intrinsics/gen/atomicSub/15bfc9.wgsl b/test/intrinsics/gen/atomicSub/15bfc9.wgsl
index a8ad318..e46889e 100644
--- a/test/intrinsics/gen/atomicSub/15bfc9.wgsl
+++ b/test/intrinsics/gen/atomicSub/15bfc9.wgsl
@@ -25,19 +25,19 @@
 struct SB_RW {
   arg_0: atomic<u32>;
 };
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 // fn atomicSub(ptr<storage, atomic<u32>, read_write>, u32) -> u32
 fn atomicSub_15bfc9() {
   var res: u32 = atomicSub(&sb_rw.arg_0, 1u);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicSub_15bfc9();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicSub_15bfc9();
 }
diff --git a/test/intrinsics/gen/atomicSub/15bfc9.wgsl.expected.wgsl b/test/intrinsics/gen/atomicSub/15bfc9.wgsl.expected.wgsl
index 26c3cbe..537edd1 100644
--- a/test/intrinsics/gen/atomicSub/15bfc9.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicSub/15bfc9.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   arg_0 : atomic<u32>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 fn atomicSub_15bfc9() {
   var res : u32 = atomicSub(&(sb_rw.arg_0), 1u);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicSub_15bfc9();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicSub_15bfc9();
 }
diff --git a/test/intrinsics/gen/atomicSub/77883a.wgsl b/test/intrinsics/gen/atomicSub/77883a.wgsl
index 8243dad..fc8fa76 100644
--- a/test/intrinsics/gen/atomicSub/77883a.wgsl
+++ b/test/intrinsics/gen/atomicSub/77883a.wgsl
@@ -29,7 +29,7 @@
   var res: i32 = atomicSub(&arg_0, 1);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicSub_77883a();
 }
diff --git a/test/intrinsics/gen/atomicSub/77883a.wgsl.expected.wgsl b/test/intrinsics/gen/atomicSub/77883a.wgsl.expected.wgsl
index b6452a3..4a49222 100644
--- a/test/intrinsics/gen/atomicSub/77883a.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicSub/77883a.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res : i32 = atomicSub(&(arg_0), 1);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicSub_77883a();
 }
diff --git a/test/intrinsics/gen/atomicXor/54510e.wgsl b/test/intrinsics/gen/atomicXor/54510e.wgsl
index b7c85f0..6928f87 100644
--- a/test/intrinsics/gen/atomicXor/54510e.wgsl
+++ b/test/intrinsics/gen/atomicXor/54510e.wgsl
@@ -25,19 +25,19 @@
 struct SB_RW {
   arg_0: atomic<u32>;
 };
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 // fn atomicXor(ptr<storage, atomic<u32>, read_write>, u32) -> u32
 fn atomicXor_54510e() {
   var res: u32 = atomicXor(&sb_rw.arg_0, 1u);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicXor_54510e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicXor_54510e();
 }
diff --git a/test/intrinsics/gen/atomicXor/54510e.wgsl.expected.wgsl b/test/intrinsics/gen/atomicXor/54510e.wgsl.expected.wgsl
index e0ef7e7..bc674c9 100644
--- a/test/intrinsics/gen/atomicXor/54510e.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicXor/54510e.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   arg_0 : atomic<u32>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 fn atomicXor_54510e() {
   var res : u32 = atomicXor(&(sb_rw.arg_0), 1u);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicXor_54510e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicXor_54510e();
 }
diff --git a/test/intrinsics/gen/atomicXor/75dc95.wgsl b/test/intrinsics/gen/atomicXor/75dc95.wgsl
index 9874eb7..061d653 100644
--- a/test/intrinsics/gen/atomicXor/75dc95.wgsl
+++ b/test/intrinsics/gen/atomicXor/75dc95.wgsl
@@ -29,7 +29,7 @@
   var res: i32 = atomicXor(&arg_0, 1);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicXor_75dc95();
 }
diff --git a/test/intrinsics/gen/atomicXor/75dc95.wgsl.expected.wgsl b/test/intrinsics/gen/atomicXor/75dc95.wgsl.expected.wgsl
index 6dd0569..cae6c21 100644
--- a/test/intrinsics/gen/atomicXor/75dc95.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicXor/75dc95.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res : i32 = atomicXor(&(arg_0), 1);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicXor_75dc95();
 }
diff --git a/test/intrinsics/gen/atomicXor/c1b78c.wgsl b/test/intrinsics/gen/atomicXor/c1b78c.wgsl
index eb665b4..5bbc251 100644
--- a/test/intrinsics/gen/atomicXor/c1b78c.wgsl
+++ b/test/intrinsics/gen/atomicXor/c1b78c.wgsl
@@ -25,19 +25,19 @@
 struct SB_RW {
   arg_0: atomic<i32>;
 };
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 // fn atomicXor(ptr<storage, atomic<i32>, read_write>, i32) -> i32
 fn atomicXor_c1b78c() {
   var res: i32 = atomicXor(&sb_rw.arg_0, 1);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicXor_c1b78c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicXor_c1b78c();
 }
diff --git a/test/intrinsics/gen/atomicXor/c1b78c.wgsl.expected.wgsl b/test/intrinsics/gen/atomicXor/c1b78c.wgsl.expected.wgsl
index 6840482..0d49f18 100644
--- a/test/intrinsics/gen/atomicXor/c1b78c.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicXor/c1b78c.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   arg_0 : atomic<i32>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 
 fn atomicXor_c1b78c() {
   var res : i32 = atomicXor(&(sb_rw.arg_0), 1);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   atomicXor_c1b78c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicXor_c1b78c();
 }
diff --git a/test/intrinsics/gen/atomicXor/c8e6be.wgsl b/test/intrinsics/gen/atomicXor/c8e6be.wgsl
index 0dbadf1..ce24118 100644
--- a/test/intrinsics/gen/atomicXor/c8e6be.wgsl
+++ b/test/intrinsics/gen/atomicXor/c8e6be.wgsl
@@ -29,7 +29,7 @@
   var res: u32 = atomicXor(&arg_0, 1u);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicXor_c8e6be();
 }
diff --git a/test/intrinsics/gen/atomicXor/c8e6be.wgsl.expected.wgsl b/test/intrinsics/gen/atomicXor/c8e6be.wgsl.expected.wgsl
index 938ed3d..d422ea0 100644
--- a/test/intrinsics/gen/atomicXor/c8e6be.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/atomicXor/c8e6be.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res : u32 = atomicXor(&(arg_0), 1u);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   atomicXor_c8e6be();
 }
diff --git a/test/intrinsics/gen/ceil/34064b.wgsl b/test/intrinsics/gen/ceil/34064b.wgsl
index 3be3ad0..3d79d91 100644
--- a/test/intrinsics/gen/ceil/34064b.wgsl
+++ b/test/intrinsics/gen/ceil/34064b.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = ceil(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   ceil_34064b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   ceil_34064b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   ceil_34064b();
 }
diff --git a/test/intrinsics/gen/ceil/34064b.wgsl.expected.wgsl b/test/intrinsics/gen/ceil/34064b.wgsl.expected.wgsl
index d67b150..a72e184 100644
--- a/test/intrinsics/gen/ceil/34064b.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/ceil/34064b.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = ceil(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   ceil_34064b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   ceil_34064b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   ceil_34064b();
 }
diff --git a/test/intrinsics/gen/ceil/678655.wgsl b/test/intrinsics/gen/ceil/678655.wgsl
index 0ba06bd..0a49b58 100644
--- a/test/intrinsics/gen/ceil/678655.wgsl
+++ b/test/intrinsics/gen/ceil/678655.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = ceil(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   ceil_678655();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   ceil_678655();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   ceil_678655();
 }
diff --git a/test/intrinsics/gen/ceil/678655.wgsl.expected.wgsl b/test/intrinsics/gen/ceil/678655.wgsl.expected.wgsl
index 139e6de..bb57a0a 100644
--- a/test/intrinsics/gen/ceil/678655.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/ceil/678655.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = ceil(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   ceil_678655();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   ceil_678655();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   ceil_678655();
 }
diff --git a/test/intrinsics/gen/ceil/96f597.wgsl b/test/intrinsics/gen/ceil/96f597.wgsl
index 63d6e1a..84647b9 100644
--- a/test/intrinsics/gen/ceil/96f597.wgsl
+++ b/test/intrinsics/gen/ceil/96f597.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = ceil(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   ceil_96f597();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   ceil_96f597();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   ceil_96f597();
 }
diff --git a/test/intrinsics/gen/ceil/96f597.wgsl.expected.wgsl b/test/intrinsics/gen/ceil/96f597.wgsl.expected.wgsl
index 65004c4..bf6d138 100644
--- a/test/intrinsics/gen/ceil/96f597.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/ceil/96f597.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = ceil(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   ceil_96f597();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   ceil_96f597();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   ceil_96f597();
 }
diff --git a/test/intrinsics/gen/ceil/b74c16.wgsl b/test/intrinsics/gen/ceil/b74c16.wgsl
index e5ca670..46a48b4 100644
--- a/test/intrinsics/gen/ceil/b74c16.wgsl
+++ b/test/intrinsics/gen/ceil/b74c16.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = ceil(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   ceil_b74c16();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   ceil_b74c16();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   ceil_b74c16();
 }
diff --git a/test/intrinsics/gen/ceil/b74c16.wgsl.expected.wgsl b/test/intrinsics/gen/ceil/b74c16.wgsl.expected.wgsl
index 492a415..c019db4 100644
--- a/test/intrinsics/gen/ceil/b74c16.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/ceil/b74c16.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = ceil(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   ceil_b74c16();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   ceil_b74c16();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   ceil_b74c16();
 }
diff --git a/test/intrinsics/gen/clamp/0acf8f.wgsl b/test/intrinsics/gen/clamp/0acf8f.wgsl
index 8ef1355..a55d7dc 100644
--- a/test/intrinsics/gen/clamp/0acf8f.wgsl
+++ b/test/intrinsics/gen/clamp/0acf8f.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = clamp(vec2<f32>(), vec2<f32>(), vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_0acf8f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   clamp_0acf8f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   clamp_0acf8f();
 }
diff --git a/test/intrinsics/gen/clamp/0acf8f.wgsl.expected.wgsl b/test/intrinsics/gen/clamp/0acf8f.wgsl.expected.wgsl
index 08f126c..a6f58e5 100644
--- a/test/intrinsics/gen/clamp/0acf8f.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/clamp/0acf8f.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = clamp(vec2<f32>(), vec2<f32>(), vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_0acf8f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   clamp_0acf8f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   clamp_0acf8f();
 }
diff --git a/test/intrinsics/gen/clamp/1a32e3.wgsl b/test/intrinsics/gen/clamp/1a32e3.wgsl
index a52ae96..723c134 100644
--- a/test/intrinsics/gen/clamp/1a32e3.wgsl
+++ b/test/intrinsics/gen/clamp/1a32e3.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<i32> = clamp(vec4<i32>(), vec4<i32>(), vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_1a32e3();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   clamp_1a32e3();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   clamp_1a32e3();
 }
diff --git a/test/intrinsics/gen/clamp/1a32e3.wgsl.expected.wgsl b/test/intrinsics/gen/clamp/1a32e3.wgsl.expected.wgsl
index 59887fc..4ca8d1e 100644
--- a/test/intrinsics/gen/clamp/1a32e3.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/clamp/1a32e3.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<i32> = clamp(vec4<i32>(), vec4<i32>(), vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_1a32e3();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   clamp_1a32e3();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   clamp_1a32e3();
 }
diff --git a/test/intrinsics/gen/clamp/2bd567.wgsl b/test/intrinsics/gen/clamp/2bd567.wgsl
index 6e280b5..e8d2ed2 100644
--- a/test/intrinsics/gen/clamp/2bd567.wgsl
+++ b/test/intrinsics/gen/clamp/2bd567.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = clamp(1.0, 1.0, 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_2bd567();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   clamp_2bd567();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   clamp_2bd567();
 }
diff --git a/test/intrinsics/gen/clamp/2bd567.wgsl.expected.wgsl b/test/intrinsics/gen/clamp/2bd567.wgsl.expected.wgsl
index 5e338a5..fdd1c3c 100644
--- a/test/intrinsics/gen/clamp/2bd567.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/clamp/2bd567.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = clamp(1.0, 1.0, 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_2bd567();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   clamp_2bd567();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   clamp_2bd567();
 }
diff --git a/test/intrinsics/gen/clamp/2bde41.wgsl b/test/intrinsics/gen/clamp/2bde41.wgsl
index 7a46d6a..582549c 100644
--- a/test/intrinsics/gen/clamp/2bde41.wgsl
+++ b/test/intrinsics/gen/clamp/2bde41.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = clamp(vec4<f32>(), vec4<f32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_2bde41();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   clamp_2bde41();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   clamp_2bde41();
 }
diff --git a/test/intrinsics/gen/clamp/2bde41.wgsl.expected.wgsl b/test/intrinsics/gen/clamp/2bde41.wgsl.expected.wgsl
index 091e04c..21f3a2d 100644
--- a/test/intrinsics/gen/clamp/2bde41.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/clamp/2bde41.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = clamp(vec4<f32>(), vec4<f32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_2bde41();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   clamp_2bde41();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   clamp_2bde41();
 }
diff --git a/test/intrinsics/gen/clamp/548fc7.wgsl b/test/intrinsics/gen/clamp/548fc7.wgsl
index 696b661..8863032 100644
--- a/test/intrinsics/gen/clamp/548fc7.wgsl
+++ b/test/intrinsics/gen/clamp/548fc7.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<u32> = clamp(vec3<u32>(), vec3<u32>(), vec3<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_548fc7();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   clamp_548fc7();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   clamp_548fc7();
 }
diff --git a/test/intrinsics/gen/clamp/548fc7.wgsl.expected.wgsl b/test/intrinsics/gen/clamp/548fc7.wgsl.expected.wgsl
index 67ef881..05f4d9e 100644
--- a/test/intrinsics/gen/clamp/548fc7.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/clamp/548fc7.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<u32> = clamp(vec3<u32>(), vec3<u32>(), vec3<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_548fc7();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   clamp_548fc7();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   clamp_548fc7();
 }
diff --git a/test/intrinsics/gen/clamp/5f0819.wgsl b/test/intrinsics/gen/clamp/5f0819.wgsl
index 2dd85e2..c128db4 100644
--- a/test/intrinsics/gen/clamp/5f0819.wgsl
+++ b/test/intrinsics/gen/clamp/5f0819.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<i32> = clamp(vec3<i32>(), vec3<i32>(), vec3<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_5f0819();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   clamp_5f0819();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   clamp_5f0819();
 }
diff --git a/test/intrinsics/gen/clamp/5f0819.wgsl.expected.wgsl b/test/intrinsics/gen/clamp/5f0819.wgsl.expected.wgsl
index 3a47502..6265d72 100644
--- a/test/intrinsics/gen/clamp/5f0819.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/clamp/5f0819.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<i32> = clamp(vec3<i32>(), vec3<i32>(), vec3<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_5f0819();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   clamp_5f0819();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   clamp_5f0819();
 }
diff --git a/test/intrinsics/gen/clamp/6c1749.wgsl b/test/intrinsics/gen/clamp/6c1749.wgsl
index 30eae79..3592939 100644
--- a/test/intrinsics/gen/clamp/6c1749.wgsl
+++ b/test/intrinsics/gen/clamp/6c1749.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<i32> = clamp(vec2<i32>(), vec2<i32>(), vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_6c1749();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   clamp_6c1749();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   clamp_6c1749();
 }
diff --git a/test/intrinsics/gen/clamp/6c1749.wgsl.expected.wgsl b/test/intrinsics/gen/clamp/6c1749.wgsl.expected.wgsl
index 7047f4d..58ea370 100644
--- a/test/intrinsics/gen/clamp/6c1749.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/clamp/6c1749.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<i32> = clamp(vec2<i32>(), vec2<i32>(), vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_6c1749();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   clamp_6c1749();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   clamp_6c1749();
 }
diff --git a/test/intrinsics/gen/clamp/7706d7.wgsl b/test/intrinsics/gen/clamp/7706d7.wgsl
index 88badad..5e648fe 100644
--- a/test/intrinsics/gen/clamp/7706d7.wgsl
+++ b/test/intrinsics/gen/clamp/7706d7.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<u32> = clamp(vec2<u32>(), vec2<u32>(), vec2<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_7706d7();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   clamp_7706d7();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   clamp_7706d7();
 }
diff --git a/test/intrinsics/gen/clamp/7706d7.wgsl.expected.wgsl b/test/intrinsics/gen/clamp/7706d7.wgsl.expected.wgsl
index 0d83014..b21343c 100644
--- a/test/intrinsics/gen/clamp/7706d7.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/clamp/7706d7.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<u32> = clamp(vec2<u32>(), vec2<u32>(), vec2<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_7706d7();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   clamp_7706d7();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   clamp_7706d7();
 }
diff --git a/test/intrinsics/gen/clamp/867397.wgsl b/test/intrinsics/gen/clamp/867397.wgsl
index fdcf1f3..96596d0 100644
--- a/test/intrinsics/gen/clamp/867397.wgsl
+++ b/test/intrinsics/gen/clamp/867397.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = clamp(vec3<f32>(), vec3<f32>(), vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_867397();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   clamp_867397();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   clamp_867397();
 }
diff --git a/test/intrinsics/gen/clamp/867397.wgsl.expected.wgsl b/test/intrinsics/gen/clamp/867397.wgsl.expected.wgsl
index 38fde0a..0c74877 100644
--- a/test/intrinsics/gen/clamp/867397.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/clamp/867397.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = clamp(vec3<f32>(), vec3<f32>(), vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_867397();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   clamp_867397();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   clamp_867397();
 }
diff --git a/test/intrinsics/gen/clamp/a2de25.wgsl b/test/intrinsics/gen/clamp/a2de25.wgsl
index e0c41c7..403c5bf 100644
--- a/test/intrinsics/gen/clamp/a2de25.wgsl
+++ b/test/intrinsics/gen/clamp/a2de25.wgsl
@@ -28,18 +28,18 @@
   var res: u32 = clamp(1u, 1u, 1u);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_a2de25();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   clamp_a2de25();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   clamp_a2de25();
 }
diff --git a/test/intrinsics/gen/clamp/a2de25.wgsl.expected.wgsl b/test/intrinsics/gen/clamp/a2de25.wgsl.expected.wgsl
index 70dc29b..28aa330 100644
--- a/test/intrinsics/gen/clamp/a2de25.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/clamp/a2de25.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : u32 = clamp(1u, 1u, 1u);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_a2de25();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   clamp_a2de25();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   clamp_a2de25();
 }
diff --git a/test/intrinsics/gen/clamp/b07c65.wgsl b/test/intrinsics/gen/clamp/b07c65.wgsl
index d285b90..1d18709 100644
--- a/test/intrinsics/gen/clamp/b07c65.wgsl
+++ b/test/intrinsics/gen/clamp/b07c65.wgsl
@@ -28,18 +28,18 @@
   var res: i32 = clamp(1, 1, 1);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_b07c65();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   clamp_b07c65();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   clamp_b07c65();
 }
diff --git a/test/intrinsics/gen/clamp/b07c65.wgsl.expected.wgsl b/test/intrinsics/gen/clamp/b07c65.wgsl.expected.wgsl
index ddab54b..3ed77bc 100644
--- a/test/intrinsics/gen/clamp/b07c65.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/clamp/b07c65.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : i32 = clamp(1, 1, 1);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_b07c65();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   clamp_b07c65();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   clamp_b07c65();
 }
diff --git a/test/intrinsics/gen/clamp/bd43ce.wgsl b/test/intrinsics/gen/clamp/bd43ce.wgsl
index 16a43fb..45085ef 100644
--- a/test/intrinsics/gen/clamp/bd43ce.wgsl
+++ b/test/intrinsics/gen/clamp/bd43ce.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<u32> = clamp(vec4<u32>(), vec4<u32>(), vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_bd43ce();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   clamp_bd43ce();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   clamp_bd43ce();
 }
diff --git a/test/intrinsics/gen/clamp/bd43ce.wgsl.expected.wgsl b/test/intrinsics/gen/clamp/bd43ce.wgsl.expected.wgsl
index 00f69c5..51f94ba 100644
--- a/test/intrinsics/gen/clamp/bd43ce.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/clamp/bd43ce.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<u32> = clamp(vec4<u32>(), vec4<u32>(), vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_bd43ce();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   clamp_bd43ce();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   clamp_bd43ce();
 }
diff --git a/test/intrinsics/gen/cos/16dc15.wgsl b/test/intrinsics/gen/cos/16dc15.wgsl
index 9ca499a..9f92844 100644
--- a/test/intrinsics/gen/cos/16dc15.wgsl
+++ b/test/intrinsics/gen/cos/16dc15.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = cos(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   cos_16dc15();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   cos_16dc15();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   cos_16dc15();
 }
diff --git a/test/intrinsics/gen/cos/16dc15.wgsl.expected.wgsl b/test/intrinsics/gen/cos/16dc15.wgsl.expected.wgsl
index bd4f752..fb24d34 100644
--- a/test/intrinsics/gen/cos/16dc15.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/cos/16dc15.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = cos(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   cos_16dc15();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   cos_16dc15();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   cos_16dc15();
 }
diff --git a/test/intrinsics/gen/cos/29d66d.wgsl b/test/intrinsics/gen/cos/29d66d.wgsl
index bd16f34..d0082a4 100644
--- a/test/intrinsics/gen/cos/29d66d.wgsl
+++ b/test/intrinsics/gen/cos/29d66d.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = cos(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   cos_29d66d();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   cos_29d66d();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   cos_29d66d();
 }
diff --git a/test/intrinsics/gen/cos/29d66d.wgsl.expected.wgsl b/test/intrinsics/gen/cos/29d66d.wgsl.expected.wgsl
index 466a4db..7bd0947 100644
--- a/test/intrinsics/gen/cos/29d66d.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/cos/29d66d.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = cos(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   cos_29d66d();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   cos_29d66d();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   cos_29d66d();
 }
diff --git a/test/intrinsics/gen/cos/c3b486.wgsl b/test/intrinsics/gen/cos/c3b486.wgsl
index afc2d9d..58bf973 100644
--- a/test/intrinsics/gen/cos/c3b486.wgsl
+++ b/test/intrinsics/gen/cos/c3b486.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = cos(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   cos_c3b486();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   cos_c3b486();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   cos_c3b486();
 }
diff --git a/test/intrinsics/gen/cos/c3b486.wgsl.expected.wgsl b/test/intrinsics/gen/cos/c3b486.wgsl.expected.wgsl
index b6ebf94..3dfb7da 100644
--- a/test/intrinsics/gen/cos/c3b486.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/cos/c3b486.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = cos(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   cos_c3b486();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   cos_c3b486();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   cos_c3b486();
 }
diff --git a/test/intrinsics/gen/cos/c5c28e.wgsl b/test/intrinsics/gen/cos/c5c28e.wgsl
index 7d8990d..249a587 100644
--- a/test/intrinsics/gen/cos/c5c28e.wgsl
+++ b/test/intrinsics/gen/cos/c5c28e.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = cos(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   cos_c5c28e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   cos_c5c28e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   cos_c5c28e();
 }
diff --git a/test/intrinsics/gen/cos/c5c28e.wgsl.expected.wgsl b/test/intrinsics/gen/cos/c5c28e.wgsl.expected.wgsl
index f3a7337..e298621 100644
--- a/test/intrinsics/gen/cos/c5c28e.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/cos/c5c28e.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = cos(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   cos_c5c28e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   cos_c5c28e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   cos_c5c28e();
 }
diff --git a/test/intrinsics/gen/cosh/377652.wgsl b/test/intrinsics/gen/cosh/377652.wgsl
index b7dc4f1..b528307 100644
--- a/test/intrinsics/gen/cosh/377652.wgsl
+++ b/test/intrinsics/gen/cosh/377652.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = cosh(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   cosh_377652();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   cosh_377652();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   cosh_377652();
 }
diff --git a/test/intrinsics/gen/cosh/377652.wgsl.expected.wgsl b/test/intrinsics/gen/cosh/377652.wgsl.expected.wgsl
index cce3776..bfcc51a 100644
--- a/test/intrinsics/gen/cosh/377652.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/cosh/377652.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = cosh(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   cosh_377652();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   cosh_377652();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   cosh_377652();
 }
diff --git a/test/intrinsics/gen/cosh/c13756.wgsl b/test/intrinsics/gen/cosh/c13756.wgsl
index 635c6da..fa11315 100644
--- a/test/intrinsics/gen/cosh/c13756.wgsl
+++ b/test/intrinsics/gen/cosh/c13756.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = cosh(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   cosh_c13756();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   cosh_c13756();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   cosh_c13756();
 }
diff --git a/test/intrinsics/gen/cosh/c13756.wgsl.expected.wgsl b/test/intrinsics/gen/cosh/c13756.wgsl.expected.wgsl
index b949555..3940b8e 100644
--- a/test/intrinsics/gen/cosh/c13756.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/cosh/c13756.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = cosh(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   cosh_c13756();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   cosh_c13756();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   cosh_c13756();
 }
diff --git a/test/intrinsics/gen/cosh/da92dd.wgsl b/test/intrinsics/gen/cosh/da92dd.wgsl
index fd939da..59eb8df 100644
--- a/test/intrinsics/gen/cosh/da92dd.wgsl
+++ b/test/intrinsics/gen/cosh/da92dd.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = cosh(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   cosh_da92dd();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   cosh_da92dd();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   cosh_da92dd();
 }
diff --git a/test/intrinsics/gen/cosh/da92dd.wgsl.expected.wgsl b/test/intrinsics/gen/cosh/da92dd.wgsl.expected.wgsl
index f79c746..e653a5c 100644
--- a/test/intrinsics/gen/cosh/da92dd.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/cosh/da92dd.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = cosh(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   cosh_da92dd();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   cosh_da92dd();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   cosh_da92dd();
 }
diff --git a/test/intrinsics/gen/cosh/e0c1de.wgsl b/test/intrinsics/gen/cosh/e0c1de.wgsl
index f6e958c..961d55f 100644
--- a/test/intrinsics/gen/cosh/e0c1de.wgsl
+++ b/test/intrinsics/gen/cosh/e0c1de.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = cosh(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   cosh_e0c1de();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   cosh_e0c1de();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   cosh_e0c1de();
 }
diff --git a/test/intrinsics/gen/cosh/e0c1de.wgsl.expected.wgsl b/test/intrinsics/gen/cosh/e0c1de.wgsl.expected.wgsl
index 1a86db7..64b0a08 100644
--- a/test/intrinsics/gen/cosh/e0c1de.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/cosh/e0c1de.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = cosh(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   cosh_e0c1de();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   cosh_e0c1de();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   cosh_e0c1de();
 }
diff --git a/test/intrinsics/gen/countOneBits/0d0e46.wgsl b/test/intrinsics/gen/countOneBits/0d0e46.wgsl
index ca8afcb..dc6b49e 100644
--- a/test/intrinsics/gen/countOneBits/0d0e46.wgsl
+++ b/test/intrinsics/gen/countOneBits/0d0e46.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<u32> = countOneBits(vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_0d0e46();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   countOneBits_0d0e46();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   countOneBits_0d0e46();
 }
diff --git a/test/intrinsics/gen/countOneBits/0d0e46.wgsl.expected.wgsl b/test/intrinsics/gen/countOneBits/0d0e46.wgsl.expected.wgsl
index f0d484a..271af00 100644
--- a/test/intrinsics/gen/countOneBits/0d0e46.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/countOneBits/0d0e46.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<u32> = countOneBits(vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_0d0e46();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   countOneBits_0d0e46();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   countOneBits_0d0e46();
 }
diff --git a/test/intrinsics/gen/countOneBits/0f7980.wgsl b/test/intrinsics/gen/countOneBits/0f7980.wgsl
index 569a857..cf4b27b 100644
--- a/test/intrinsics/gen/countOneBits/0f7980.wgsl
+++ b/test/intrinsics/gen/countOneBits/0f7980.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<i32> = countOneBits(vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_0f7980();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   countOneBits_0f7980();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   countOneBits_0f7980();
 }
diff --git a/test/intrinsics/gen/countOneBits/0f7980.wgsl.expected.wgsl b/test/intrinsics/gen/countOneBits/0f7980.wgsl.expected.wgsl
index e2529f4..1291aa3 100644
--- a/test/intrinsics/gen/countOneBits/0f7980.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/countOneBits/0f7980.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<i32> = countOneBits(vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_0f7980();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   countOneBits_0f7980();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   countOneBits_0f7980();
 }
diff --git a/test/intrinsics/gen/countOneBits/65d2ae.wgsl b/test/intrinsics/gen/countOneBits/65d2ae.wgsl
index 625620c..ba29117 100644
--- a/test/intrinsics/gen/countOneBits/65d2ae.wgsl
+++ b/test/intrinsics/gen/countOneBits/65d2ae.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<i32> = countOneBits(vec3<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_65d2ae();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   countOneBits_65d2ae();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   countOneBits_65d2ae();
 }
diff --git a/test/intrinsics/gen/countOneBits/65d2ae.wgsl.expected.wgsl b/test/intrinsics/gen/countOneBits/65d2ae.wgsl.expected.wgsl
index 4afc66d..e142860 100644
--- a/test/intrinsics/gen/countOneBits/65d2ae.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/countOneBits/65d2ae.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<i32> = countOneBits(vec3<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_65d2ae();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   countOneBits_65d2ae();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   countOneBits_65d2ae();
 }
diff --git a/test/intrinsics/gen/countOneBits/690cfc.wgsl b/test/intrinsics/gen/countOneBits/690cfc.wgsl
index 555889d..77ce9c4 100644
--- a/test/intrinsics/gen/countOneBits/690cfc.wgsl
+++ b/test/intrinsics/gen/countOneBits/690cfc.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<u32> = countOneBits(vec3<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_690cfc();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   countOneBits_690cfc();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   countOneBits_690cfc();
 }
diff --git a/test/intrinsics/gen/countOneBits/690cfc.wgsl.expected.wgsl b/test/intrinsics/gen/countOneBits/690cfc.wgsl.expected.wgsl
index 7ca3c8e..b74eb79 100644
--- a/test/intrinsics/gen/countOneBits/690cfc.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/countOneBits/690cfc.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<u32> = countOneBits(vec3<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_690cfc();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   countOneBits_690cfc();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   countOneBits_690cfc();
 }
diff --git a/test/intrinsics/gen/countOneBits/94fd81.wgsl b/test/intrinsics/gen/countOneBits/94fd81.wgsl
index e39137e..ec7f081 100644
--- a/test/intrinsics/gen/countOneBits/94fd81.wgsl
+++ b/test/intrinsics/gen/countOneBits/94fd81.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<u32> = countOneBits(vec2<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_94fd81();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   countOneBits_94fd81();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   countOneBits_94fd81();
 }
diff --git a/test/intrinsics/gen/countOneBits/94fd81.wgsl.expected.wgsl b/test/intrinsics/gen/countOneBits/94fd81.wgsl.expected.wgsl
index a5711ac..e713f92 100644
--- a/test/intrinsics/gen/countOneBits/94fd81.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/countOneBits/94fd81.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<u32> = countOneBits(vec2<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_94fd81();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   countOneBits_94fd81();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   countOneBits_94fd81();
 }
diff --git a/test/intrinsics/gen/countOneBits/ae44f9.wgsl b/test/intrinsics/gen/countOneBits/ae44f9.wgsl
index 2c31ae7..db56395 100644
--- a/test/intrinsics/gen/countOneBits/ae44f9.wgsl
+++ b/test/intrinsics/gen/countOneBits/ae44f9.wgsl
@@ -28,18 +28,18 @@
   var res: u32 = countOneBits(1u);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_ae44f9();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   countOneBits_ae44f9();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   countOneBits_ae44f9();
 }
diff --git a/test/intrinsics/gen/countOneBits/ae44f9.wgsl.expected.wgsl b/test/intrinsics/gen/countOneBits/ae44f9.wgsl.expected.wgsl
index 0591a40..3a54993 100644
--- a/test/intrinsics/gen/countOneBits/ae44f9.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/countOneBits/ae44f9.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : u32 = countOneBits(1u);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_ae44f9();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   countOneBits_ae44f9();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   countOneBits_ae44f9();
 }
diff --git a/test/intrinsics/gen/countOneBits/af90e2.wgsl b/test/intrinsics/gen/countOneBits/af90e2.wgsl
index 4cf6b08..f57048c 100644
--- a/test/intrinsics/gen/countOneBits/af90e2.wgsl
+++ b/test/intrinsics/gen/countOneBits/af90e2.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<i32> = countOneBits(vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_af90e2();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   countOneBits_af90e2();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   countOneBits_af90e2();
 }
diff --git a/test/intrinsics/gen/countOneBits/af90e2.wgsl.expected.wgsl b/test/intrinsics/gen/countOneBits/af90e2.wgsl.expected.wgsl
index 5a6fdaa..c2d693a 100644
--- a/test/intrinsics/gen/countOneBits/af90e2.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/countOneBits/af90e2.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<i32> = countOneBits(vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_af90e2();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   countOneBits_af90e2();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   countOneBits_af90e2();
 }
diff --git a/test/intrinsics/gen/countOneBits/fd88b2.wgsl b/test/intrinsics/gen/countOneBits/fd88b2.wgsl
index 5213267..f95dcc2 100644
--- a/test/intrinsics/gen/countOneBits/fd88b2.wgsl
+++ b/test/intrinsics/gen/countOneBits/fd88b2.wgsl
@@ -28,18 +28,18 @@
   var res: i32 = countOneBits(1);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_fd88b2();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   countOneBits_fd88b2();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   countOneBits_fd88b2();
 }
diff --git a/test/intrinsics/gen/countOneBits/fd88b2.wgsl.expected.wgsl b/test/intrinsics/gen/countOneBits/fd88b2.wgsl.expected.wgsl
index e1b4ef2..c9e437b 100644
--- a/test/intrinsics/gen/countOneBits/fd88b2.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/countOneBits/fd88b2.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : i32 = countOneBits(1);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_fd88b2();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   countOneBits_fd88b2();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   countOneBits_fd88b2();
 }
diff --git a/test/intrinsics/gen/cross/041cb0.wgsl b/test/intrinsics/gen/cross/041cb0.wgsl
index 38427b6..50f8539 100644
--- a/test/intrinsics/gen/cross/041cb0.wgsl
+++ b/test/intrinsics/gen/cross/041cb0.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = cross(vec3<f32>(), vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   cross_041cb0();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   cross_041cb0();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   cross_041cb0();
 }
diff --git a/test/intrinsics/gen/cross/041cb0.wgsl.expected.wgsl b/test/intrinsics/gen/cross/041cb0.wgsl.expected.wgsl
index b650bd4..c3548ce 100644
--- a/test/intrinsics/gen/cross/041cb0.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/cross/041cb0.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = cross(vec3<f32>(), vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   cross_041cb0();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   cross_041cb0();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   cross_041cb0();
 }
diff --git a/test/intrinsics/gen/degrees/0d170c.wgsl b/test/intrinsics/gen/degrees/0d170c.wgsl
index c1bb01e..b2ee663 100644
--- a/test/intrinsics/gen/degrees/0d170c.wgsl
+++ b/test/intrinsics/gen/degrees/0d170c.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = degrees(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   degrees_0d170c();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   degrees_0d170c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   degrees_0d170c();
 }
diff --git a/test/intrinsics/gen/degrees/0d170c.wgsl.expected.wgsl b/test/intrinsics/gen/degrees/0d170c.wgsl.expected.wgsl
index fa7bd7c..6c62108 100644
--- a/test/intrinsics/gen/degrees/0d170c.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/degrees/0d170c.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = degrees(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   degrees_0d170c();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   degrees_0d170c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   degrees_0d170c();
 }
diff --git a/test/intrinsics/gen/degrees/1ad5df.wgsl b/test/intrinsics/gen/degrees/1ad5df.wgsl
index ce4a3cb..b4c46db 100644
--- a/test/intrinsics/gen/degrees/1ad5df.wgsl
+++ b/test/intrinsics/gen/degrees/1ad5df.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = degrees(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   degrees_1ad5df();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   degrees_1ad5df();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   degrees_1ad5df();
 }
diff --git a/test/intrinsics/gen/degrees/1ad5df.wgsl.expected.wgsl b/test/intrinsics/gen/degrees/1ad5df.wgsl.expected.wgsl
index 09968ce..db91a65 100644
--- a/test/intrinsics/gen/degrees/1ad5df.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/degrees/1ad5df.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = degrees(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   degrees_1ad5df();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   degrees_1ad5df();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   degrees_1ad5df();
 }
diff --git a/test/intrinsics/gen/degrees/2af623.wgsl b/test/intrinsics/gen/degrees/2af623.wgsl
index bf8e6cb..22772dd 100644
--- a/test/intrinsics/gen/degrees/2af623.wgsl
+++ b/test/intrinsics/gen/degrees/2af623.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = degrees(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   degrees_2af623();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   degrees_2af623();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   degrees_2af623();
 }
diff --git a/test/intrinsics/gen/degrees/2af623.wgsl.expected.wgsl b/test/intrinsics/gen/degrees/2af623.wgsl.expected.wgsl
index fc42984..d3af418 100644
--- a/test/intrinsics/gen/degrees/2af623.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/degrees/2af623.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = degrees(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   degrees_2af623();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   degrees_2af623();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   degrees_2af623();
 }
diff --git a/test/intrinsics/gen/degrees/51f705.wgsl b/test/intrinsics/gen/degrees/51f705.wgsl
index 2bbd952..71c2e93 100644
--- a/test/intrinsics/gen/degrees/51f705.wgsl
+++ b/test/intrinsics/gen/degrees/51f705.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = degrees(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   degrees_51f705();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   degrees_51f705();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   degrees_51f705();
 }
diff --git a/test/intrinsics/gen/degrees/51f705.wgsl.expected.wgsl b/test/intrinsics/gen/degrees/51f705.wgsl.expected.wgsl
index 6524f5b..5ec8b91 100644
--- a/test/intrinsics/gen/degrees/51f705.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/degrees/51f705.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = degrees(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   degrees_51f705();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   degrees_51f705();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   degrees_51f705();
 }
diff --git a/test/intrinsics/gen/determinant/2b62ba.wgsl b/test/intrinsics/gen/determinant/2b62ba.wgsl
index 2b24d16..10fd4e4 100644
--- a/test/intrinsics/gen/determinant/2b62ba.wgsl
+++ b/test/intrinsics/gen/determinant/2b62ba.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = determinant(mat3x3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   determinant_2b62ba();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   determinant_2b62ba();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   determinant_2b62ba();
 }
diff --git a/test/intrinsics/gen/determinant/2b62ba.wgsl.expected.wgsl b/test/intrinsics/gen/determinant/2b62ba.wgsl.expected.wgsl
index a2ee672..b9c8bcd 100644
--- a/test/intrinsics/gen/determinant/2b62ba.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/determinant/2b62ba.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = determinant(mat3x3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   determinant_2b62ba();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   determinant_2b62ba();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   determinant_2b62ba();
 }
diff --git a/test/intrinsics/gen/determinant/a0a87c.wgsl b/test/intrinsics/gen/determinant/a0a87c.wgsl
index 9ce49d9..b7720f5 100644
--- a/test/intrinsics/gen/determinant/a0a87c.wgsl
+++ b/test/intrinsics/gen/determinant/a0a87c.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = determinant(mat4x4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   determinant_a0a87c();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   determinant_a0a87c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   determinant_a0a87c();
 }
diff --git a/test/intrinsics/gen/determinant/a0a87c.wgsl.expected.wgsl b/test/intrinsics/gen/determinant/a0a87c.wgsl.expected.wgsl
index 948c1dc..1352baf 100644
--- a/test/intrinsics/gen/determinant/a0a87c.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/determinant/a0a87c.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = determinant(mat4x4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   determinant_a0a87c();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   determinant_a0a87c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   determinant_a0a87c();
 }
diff --git a/test/intrinsics/gen/determinant/e19305.wgsl b/test/intrinsics/gen/determinant/e19305.wgsl
index f930316..1406a13 100644
--- a/test/intrinsics/gen/determinant/e19305.wgsl
+++ b/test/intrinsics/gen/determinant/e19305.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = determinant(mat2x2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   determinant_e19305();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   determinant_e19305();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   determinant_e19305();
 }
diff --git a/test/intrinsics/gen/determinant/e19305.wgsl.expected.wgsl b/test/intrinsics/gen/determinant/e19305.wgsl.expected.wgsl
index 418bbd7..67724c6 100644
--- a/test/intrinsics/gen/determinant/e19305.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/determinant/e19305.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = determinant(mat2x2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   determinant_e19305();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   determinant_e19305();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   determinant_e19305();
 }
diff --git a/test/intrinsics/gen/distance/0657d4.wgsl b/test/intrinsics/gen/distance/0657d4.wgsl
index bb646dd..2c57d82 100644
--- a/test/intrinsics/gen/distance/0657d4.wgsl
+++ b/test/intrinsics/gen/distance/0657d4.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = distance(vec3<f32>(), vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   distance_0657d4();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   distance_0657d4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   distance_0657d4();
 }
diff --git a/test/intrinsics/gen/distance/0657d4.wgsl.expected.wgsl b/test/intrinsics/gen/distance/0657d4.wgsl.expected.wgsl
index 49a4c4f..1945bbb 100644
--- a/test/intrinsics/gen/distance/0657d4.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/distance/0657d4.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = distance(vec3<f32>(), vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   distance_0657d4();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   distance_0657d4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   distance_0657d4();
 }
diff --git a/test/intrinsics/gen/distance/9646ea.wgsl b/test/intrinsics/gen/distance/9646ea.wgsl
index f41be54..009877c 100644
--- a/test/intrinsics/gen/distance/9646ea.wgsl
+++ b/test/intrinsics/gen/distance/9646ea.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = distance(vec4<f32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   distance_9646ea();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   distance_9646ea();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   distance_9646ea();
 }
diff --git a/test/intrinsics/gen/distance/9646ea.wgsl.expected.wgsl b/test/intrinsics/gen/distance/9646ea.wgsl.expected.wgsl
index 81a8e1a..0e02dff 100644
--- a/test/intrinsics/gen/distance/9646ea.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/distance/9646ea.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = distance(vec4<f32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   distance_9646ea();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   distance_9646ea();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   distance_9646ea();
 }
diff --git a/test/intrinsics/gen/distance/aa4055.wgsl b/test/intrinsics/gen/distance/aa4055.wgsl
index ae403c7..0094477 100644
--- a/test/intrinsics/gen/distance/aa4055.wgsl
+++ b/test/intrinsics/gen/distance/aa4055.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = distance(vec2<f32>(), vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   distance_aa4055();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   distance_aa4055();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   distance_aa4055();
 }
diff --git a/test/intrinsics/gen/distance/aa4055.wgsl.expected.wgsl b/test/intrinsics/gen/distance/aa4055.wgsl.expected.wgsl
index 5043729..307399d 100644
--- a/test/intrinsics/gen/distance/aa4055.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/distance/aa4055.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = distance(vec2<f32>(), vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   distance_aa4055();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   distance_aa4055();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   distance_aa4055();
 }
diff --git a/test/intrinsics/gen/distance/cfed73.wgsl b/test/intrinsics/gen/distance/cfed73.wgsl
index a14dc1b..c40408d 100644
--- a/test/intrinsics/gen/distance/cfed73.wgsl
+++ b/test/intrinsics/gen/distance/cfed73.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = distance(1.0, 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   distance_cfed73();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   distance_cfed73();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   distance_cfed73();
 }
diff --git a/test/intrinsics/gen/distance/cfed73.wgsl.expected.wgsl b/test/intrinsics/gen/distance/cfed73.wgsl.expected.wgsl
index 86ed9e5..db5bc7d 100644
--- a/test/intrinsics/gen/distance/cfed73.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/distance/cfed73.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = distance(1.0, 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   distance_cfed73();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   distance_cfed73();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   distance_cfed73();
 }
diff --git a/test/intrinsics/gen/dot/0c577b.wgsl b/test/intrinsics/gen/dot/0c577b.wgsl
index 304528f..745f4c4 100644
--- a/test/intrinsics/gen/dot/0c577b.wgsl
+++ b/test/intrinsics/gen/dot/0c577b.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = dot(vec4<f32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_0c577b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dot_0c577b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   dot_0c577b();
 }
diff --git a/test/intrinsics/gen/dot/0c577b.wgsl.expected.wgsl b/test/intrinsics/gen/dot/0c577b.wgsl.expected.wgsl
index 8c624bb..22411b9 100644
--- a/test/intrinsics/gen/dot/0c577b.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/dot/0c577b.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = dot(vec4<f32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_0c577b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dot_0c577b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   dot_0c577b();
 }
diff --git a/test/intrinsics/gen/dot/7548a0.wgsl b/test/intrinsics/gen/dot/7548a0.wgsl
index 62d39d6..4ee9011 100644
--- a/test/intrinsics/gen/dot/7548a0.wgsl
+++ b/test/intrinsics/gen/dot/7548a0.wgsl
@@ -28,18 +28,18 @@
   var res: u32 = dot(vec3<u32>(), vec3<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_7548a0();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dot_7548a0();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   dot_7548a0();
 }
diff --git a/test/intrinsics/gen/dot/7548a0.wgsl.expected.wgsl b/test/intrinsics/gen/dot/7548a0.wgsl.expected.wgsl
index 27b8265..c8b9017 100644
--- a/test/intrinsics/gen/dot/7548a0.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/dot/7548a0.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : u32 = dot(vec3<u32>(), vec3<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_7548a0();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dot_7548a0();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   dot_7548a0();
 }
diff --git a/test/intrinsics/gen/dot/883f0e.wgsl b/test/intrinsics/gen/dot/883f0e.wgsl
index 4d73292..3a42f8c 100644
--- a/test/intrinsics/gen/dot/883f0e.wgsl
+++ b/test/intrinsics/gen/dot/883f0e.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = dot(vec2<f32>(), vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_883f0e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dot_883f0e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   dot_883f0e();
 }
diff --git a/test/intrinsics/gen/dot/883f0e.wgsl.expected.wgsl b/test/intrinsics/gen/dot/883f0e.wgsl.expected.wgsl
index c27252a..4be39c5 100644
--- a/test/intrinsics/gen/dot/883f0e.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/dot/883f0e.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = dot(vec2<f32>(), vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_883f0e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dot_883f0e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   dot_883f0e();
 }
diff --git a/test/intrinsics/gen/dot/97c7ee.wgsl b/test/intrinsics/gen/dot/97c7ee.wgsl
index d2e7e5d..c8f9459 100644
--- a/test/intrinsics/gen/dot/97c7ee.wgsl
+++ b/test/intrinsics/gen/dot/97c7ee.wgsl
@@ -28,18 +28,18 @@
   var res: u32 = dot(vec2<u32>(), vec2<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_97c7ee();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dot_97c7ee();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   dot_97c7ee();
 }
diff --git a/test/intrinsics/gen/dot/97c7ee.wgsl.expected.wgsl b/test/intrinsics/gen/dot/97c7ee.wgsl.expected.wgsl
index 7741f7d..488052d 100644
--- a/test/intrinsics/gen/dot/97c7ee.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/dot/97c7ee.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : u32 = dot(vec2<u32>(), vec2<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_97c7ee();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dot_97c7ee();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   dot_97c7ee();
 }
diff --git a/test/intrinsics/gen/dot/ba4246.wgsl b/test/intrinsics/gen/dot/ba4246.wgsl
index b64f32b..fbeb139 100644
--- a/test/intrinsics/gen/dot/ba4246.wgsl
+++ b/test/intrinsics/gen/dot/ba4246.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = dot(vec3<f32>(), vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_ba4246();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dot_ba4246();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   dot_ba4246();
 }
diff --git a/test/intrinsics/gen/dot/ba4246.wgsl.expected.wgsl b/test/intrinsics/gen/dot/ba4246.wgsl.expected.wgsl
index 52ca2da..7ddc8d1 100644
--- a/test/intrinsics/gen/dot/ba4246.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/dot/ba4246.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = dot(vec3<f32>(), vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_ba4246();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dot_ba4246();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   dot_ba4246();
 }
diff --git a/test/intrinsics/gen/dot/e994c7.wgsl b/test/intrinsics/gen/dot/e994c7.wgsl
index 8ffe117..b78cbc4 100644
--- a/test/intrinsics/gen/dot/e994c7.wgsl
+++ b/test/intrinsics/gen/dot/e994c7.wgsl
@@ -28,18 +28,18 @@
   var res: u32 = dot(vec4<u32>(), vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_e994c7();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dot_e994c7();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   dot_e994c7();
 }
diff --git a/test/intrinsics/gen/dot/e994c7.wgsl.expected.wgsl b/test/intrinsics/gen/dot/e994c7.wgsl.expected.wgsl
index 365e0ce..2b54959 100644
--- a/test/intrinsics/gen/dot/e994c7.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/dot/e994c7.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : u32 = dot(vec4<u32>(), vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_e994c7();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dot_e994c7();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   dot_e994c7();
 }
diff --git a/test/intrinsics/gen/dot/ef6b1d.wgsl b/test/intrinsics/gen/dot/ef6b1d.wgsl
index b6e5eac..2e01ee2 100644
--- a/test/intrinsics/gen/dot/ef6b1d.wgsl
+++ b/test/intrinsics/gen/dot/ef6b1d.wgsl
@@ -28,18 +28,18 @@
   var res: i32 = dot(vec4<i32>(), vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_ef6b1d();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dot_ef6b1d();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   dot_ef6b1d();
 }
diff --git a/test/intrinsics/gen/dot/ef6b1d.wgsl.expected.wgsl b/test/intrinsics/gen/dot/ef6b1d.wgsl.expected.wgsl
index 4c35395..075cfcd 100644
--- a/test/intrinsics/gen/dot/ef6b1d.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/dot/ef6b1d.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : i32 = dot(vec4<i32>(), vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_ef6b1d();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dot_ef6b1d();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   dot_ef6b1d();
 }
diff --git a/test/intrinsics/gen/dot/f1312c.wgsl b/test/intrinsics/gen/dot/f1312c.wgsl
index f08b6f2..6bb0876 100644
--- a/test/intrinsics/gen/dot/f1312c.wgsl
+++ b/test/intrinsics/gen/dot/f1312c.wgsl
@@ -28,18 +28,18 @@
   var res: i32 = dot(vec3<i32>(), vec3<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_f1312c();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dot_f1312c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   dot_f1312c();
 }
diff --git a/test/intrinsics/gen/dot/f1312c.wgsl.expected.wgsl b/test/intrinsics/gen/dot/f1312c.wgsl.expected.wgsl
index 1e9ffe1..7440cf9 100644
--- a/test/intrinsics/gen/dot/f1312c.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/dot/f1312c.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : i32 = dot(vec3<i32>(), vec3<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_f1312c();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dot_f1312c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   dot_f1312c();
 }
diff --git a/test/intrinsics/gen/dot/fc5f7c.wgsl b/test/intrinsics/gen/dot/fc5f7c.wgsl
index 7b0ae29..bbadae8 100644
--- a/test/intrinsics/gen/dot/fc5f7c.wgsl
+++ b/test/intrinsics/gen/dot/fc5f7c.wgsl
@@ -28,18 +28,18 @@
   var res: i32 = dot(vec2<i32>(), vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_fc5f7c();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dot_fc5f7c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   dot_fc5f7c();
 }
diff --git a/test/intrinsics/gen/dot/fc5f7c.wgsl.expected.wgsl b/test/intrinsics/gen/dot/fc5f7c.wgsl.expected.wgsl
index 4aaabfc..6d30122 100644
--- a/test/intrinsics/gen/dot/fc5f7c.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/dot/fc5f7c.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : i32 = dot(vec2<i32>(), vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_fc5f7c();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dot_fc5f7c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   dot_fc5f7c();
 }
diff --git a/test/intrinsics/gen/dpdx/0763f7.wgsl b/test/intrinsics/gen/dpdx/0763f7.wgsl
index fc6a536..cbfc41a 100644
--- a/test/intrinsics/gen/dpdx/0763f7.wgsl
+++ b/test/intrinsics/gen/dpdx/0763f7.wgsl
@@ -28,7 +28,7 @@
   var res: vec3<f32> = dpdx(vec3<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdx_0763f7();
 }
diff --git a/test/intrinsics/gen/dpdx/0763f7.wgsl.expected.wgsl b/test/intrinsics/gen/dpdx/0763f7.wgsl.expected.wgsl
index be5f4e0..15235d6 100644
--- a/test/intrinsics/gen/dpdx/0763f7.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/dpdx/0763f7.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec3<f32> = dpdx(vec3<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdx_0763f7();
 }
diff --git a/test/intrinsics/gen/dpdx/99edb1.wgsl b/test/intrinsics/gen/dpdx/99edb1.wgsl
index 1ca0b06..84f5126 100644
--- a/test/intrinsics/gen/dpdx/99edb1.wgsl
+++ b/test/intrinsics/gen/dpdx/99edb1.wgsl
@@ -28,7 +28,7 @@
   var res: vec2<f32> = dpdx(vec2<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdx_99edb1();
 }
diff --git a/test/intrinsics/gen/dpdx/99edb1.wgsl.expected.wgsl b/test/intrinsics/gen/dpdx/99edb1.wgsl.expected.wgsl
index aafee00..7405f0f 100644
--- a/test/intrinsics/gen/dpdx/99edb1.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/dpdx/99edb1.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec2<f32> = dpdx(vec2<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdx_99edb1();
 }
diff --git a/test/intrinsics/gen/dpdx/c487fa.wgsl b/test/intrinsics/gen/dpdx/c487fa.wgsl
index ed27ff0..7b477fb 100644
--- a/test/intrinsics/gen/dpdx/c487fa.wgsl
+++ b/test/intrinsics/gen/dpdx/c487fa.wgsl
@@ -28,7 +28,7 @@
   var res: vec4<f32> = dpdx(vec4<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdx_c487fa();
 }
diff --git a/test/intrinsics/gen/dpdx/c487fa.wgsl.expected.wgsl b/test/intrinsics/gen/dpdx/c487fa.wgsl.expected.wgsl
index 350f0c2..f2ebe8e 100644
--- a/test/intrinsics/gen/dpdx/c487fa.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/dpdx/c487fa.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec4<f32> = dpdx(vec4<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdx_c487fa();
 }
diff --git a/test/intrinsics/gen/dpdx/e263de.wgsl b/test/intrinsics/gen/dpdx/e263de.wgsl
index 58fdd1f..60498a7 100644
--- a/test/intrinsics/gen/dpdx/e263de.wgsl
+++ b/test/intrinsics/gen/dpdx/e263de.wgsl
@@ -28,7 +28,7 @@
   var res: f32 = dpdx(1.0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdx_e263de();
 }
diff --git a/test/intrinsics/gen/dpdx/e263de.wgsl.expected.wgsl b/test/intrinsics/gen/dpdx/e263de.wgsl.expected.wgsl
index 03939a6..ac653d8 100644
--- a/test/intrinsics/gen/dpdx/e263de.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/dpdx/e263de.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : f32 = dpdx(1.0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdx_e263de();
 }
diff --git a/test/intrinsics/gen/dpdxCoarse/029152.wgsl b/test/intrinsics/gen/dpdxCoarse/029152.wgsl
index e6d8ea6..1a7cc1d 100644
--- a/test/intrinsics/gen/dpdxCoarse/029152.wgsl
+++ b/test/intrinsics/gen/dpdxCoarse/029152.wgsl
@@ -28,7 +28,7 @@
   var res: f32 = dpdxCoarse(1.0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdxCoarse_029152();
 }
diff --git a/test/intrinsics/gen/dpdxCoarse/029152.wgsl.expected.wgsl b/test/intrinsics/gen/dpdxCoarse/029152.wgsl.expected.wgsl
index 9f2d250..38fe60c 100644
--- a/test/intrinsics/gen/dpdxCoarse/029152.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/dpdxCoarse/029152.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : f32 = dpdxCoarse(1.0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdxCoarse_029152();
 }
diff --git a/test/intrinsics/gen/dpdxCoarse/9581cf.wgsl b/test/intrinsics/gen/dpdxCoarse/9581cf.wgsl
index 3e5bfe5..5ccf411 100644
--- a/test/intrinsics/gen/dpdxCoarse/9581cf.wgsl
+++ b/test/intrinsics/gen/dpdxCoarse/9581cf.wgsl
@@ -28,7 +28,7 @@
   var res: vec2<f32> = dpdxCoarse(vec2<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdxCoarse_9581cf();
 }
diff --git a/test/intrinsics/gen/dpdxCoarse/9581cf.wgsl.expected.wgsl b/test/intrinsics/gen/dpdxCoarse/9581cf.wgsl.expected.wgsl
index a341150..51ac0a5 100644
--- a/test/intrinsics/gen/dpdxCoarse/9581cf.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/dpdxCoarse/9581cf.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec2<f32> = dpdxCoarse(vec2<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdxCoarse_9581cf();
 }
diff --git a/test/intrinsics/gen/dpdxCoarse/c28641.wgsl b/test/intrinsics/gen/dpdxCoarse/c28641.wgsl
index a2b5d79..8777156 100644
--- a/test/intrinsics/gen/dpdxCoarse/c28641.wgsl
+++ b/test/intrinsics/gen/dpdxCoarse/c28641.wgsl
@@ -28,7 +28,7 @@
   var res: vec4<f32> = dpdxCoarse(vec4<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdxCoarse_c28641();
 }
diff --git a/test/intrinsics/gen/dpdxCoarse/c28641.wgsl.expected.wgsl b/test/intrinsics/gen/dpdxCoarse/c28641.wgsl.expected.wgsl
index 17c714b..51fa7dc 100644
--- a/test/intrinsics/gen/dpdxCoarse/c28641.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/dpdxCoarse/c28641.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec4<f32> = dpdxCoarse(vec4<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdxCoarse_c28641();
 }
diff --git a/test/intrinsics/gen/dpdxCoarse/f64d7b.wgsl b/test/intrinsics/gen/dpdxCoarse/f64d7b.wgsl
index d3843af..40b501c 100644
--- a/test/intrinsics/gen/dpdxCoarse/f64d7b.wgsl
+++ b/test/intrinsics/gen/dpdxCoarse/f64d7b.wgsl
@@ -28,7 +28,7 @@
   var res: vec3<f32> = dpdxCoarse(vec3<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdxCoarse_f64d7b();
 }
diff --git a/test/intrinsics/gen/dpdxCoarse/f64d7b.wgsl.expected.wgsl b/test/intrinsics/gen/dpdxCoarse/f64d7b.wgsl.expected.wgsl
index 6182abe..f5a9d29 100644
--- a/test/intrinsics/gen/dpdxCoarse/f64d7b.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/dpdxCoarse/f64d7b.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec3<f32> = dpdxCoarse(vec3<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdxCoarse_f64d7b();
 }
diff --git a/test/intrinsics/gen/dpdxFine/8c5069.wgsl b/test/intrinsics/gen/dpdxFine/8c5069.wgsl
index 58bf252..b1db7e3 100644
--- a/test/intrinsics/gen/dpdxFine/8c5069.wgsl
+++ b/test/intrinsics/gen/dpdxFine/8c5069.wgsl
@@ -28,7 +28,7 @@
   var res: vec4<f32> = dpdxFine(vec4<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdxFine_8c5069();
 }
diff --git a/test/intrinsics/gen/dpdxFine/8c5069.wgsl.expected.wgsl b/test/intrinsics/gen/dpdxFine/8c5069.wgsl.expected.wgsl
index a83e763..6de1a1c 100644
--- a/test/intrinsics/gen/dpdxFine/8c5069.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/dpdxFine/8c5069.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec4<f32> = dpdxFine(vec4<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdxFine_8c5069();
 }
diff --git a/test/intrinsics/gen/dpdxFine/9631de.wgsl b/test/intrinsics/gen/dpdxFine/9631de.wgsl
index 2ca05c3..f29dffb 100644
--- a/test/intrinsics/gen/dpdxFine/9631de.wgsl
+++ b/test/intrinsics/gen/dpdxFine/9631de.wgsl
@@ -28,7 +28,7 @@
   var res: vec2<f32> = dpdxFine(vec2<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdxFine_9631de();
 }
diff --git a/test/intrinsics/gen/dpdxFine/9631de.wgsl.expected.wgsl b/test/intrinsics/gen/dpdxFine/9631de.wgsl.expected.wgsl
index 002e44e..a56d3c4 100644
--- a/test/intrinsics/gen/dpdxFine/9631de.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/dpdxFine/9631de.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec2<f32> = dpdxFine(vec2<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdxFine_9631de();
 }
diff --git a/test/intrinsics/gen/dpdxFine/f401a2.wgsl b/test/intrinsics/gen/dpdxFine/f401a2.wgsl
index a723328..405291f 100644
--- a/test/intrinsics/gen/dpdxFine/f401a2.wgsl
+++ b/test/intrinsics/gen/dpdxFine/f401a2.wgsl
@@ -28,7 +28,7 @@
   var res: f32 = dpdxFine(1.0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdxFine_f401a2();
 }
diff --git a/test/intrinsics/gen/dpdxFine/f401a2.wgsl.expected.wgsl b/test/intrinsics/gen/dpdxFine/f401a2.wgsl.expected.wgsl
index 2790d8d..3f5c836 100644
--- a/test/intrinsics/gen/dpdxFine/f401a2.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/dpdxFine/f401a2.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : f32 = dpdxFine(1.0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdxFine_f401a2();
 }
diff --git a/test/intrinsics/gen/dpdxFine/f92fb6.wgsl b/test/intrinsics/gen/dpdxFine/f92fb6.wgsl
index 97ceac3..8a3b66d 100644
--- a/test/intrinsics/gen/dpdxFine/f92fb6.wgsl
+++ b/test/intrinsics/gen/dpdxFine/f92fb6.wgsl
@@ -28,7 +28,7 @@
   var res: vec3<f32> = dpdxFine(vec3<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdxFine_f92fb6();
 }
diff --git a/test/intrinsics/gen/dpdxFine/f92fb6.wgsl.expected.wgsl b/test/intrinsics/gen/dpdxFine/f92fb6.wgsl.expected.wgsl
index a40c3fb..5189c7f 100644
--- a/test/intrinsics/gen/dpdxFine/f92fb6.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/dpdxFine/f92fb6.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec3<f32> = dpdxFine(vec3<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdxFine_f92fb6();
 }
diff --git a/test/intrinsics/gen/dpdy/699a05.wgsl b/test/intrinsics/gen/dpdy/699a05.wgsl
index 3ae6234..dc14668 100644
--- a/test/intrinsics/gen/dpdy/699a05.wgsl
+++ b/test/intrinsics/gen/dpdy/699a05.wgsl
@@ -28,7 +28,7 @@
   var res: vec4<f32> = dpdy(vec4<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdy_699a05();
 }
diff --git a/test/intrinsics/gen/dpdy/699a05.wgsl.expected.wgsl b/test/intrinsics/gen/dpdy/699a05.wgsl.expected.wgsl
index 5be383d..9aa244c 100644
--- a/test/intrinsics/gen/dpdy/699a05.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/dpdy/699a05.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec4<f32> = dpdy(vec4<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdy_699a05();
 }
diff --git a/test/intrinsics/gen/dpdy/7f8d84.wgsl b/test/intrinsics/gen/dpdy/7f8d84.wgsl
index d712959..c468777 100644
--- a/test/intrinsics/gen/dpdy/7f8d84.wgsl
+++ b/test/intrinsics/gen/dpdy/7f8d84.wgsl
@@ -28,7 +28,7 @@
   var res: f32 = dpdy(1.0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdy_7f8d84();
 }
diff --git a/test/intrinsics/gen/dpdy/7f8d84.wgsl.expected.wgsl b/test/intrinsics/gen/dpdy/7f8d84.wgsl.expected.wgsl
index 9d96009..732458e 100644
--- a/test/intrinsics/gen/dpdy/7f8d84.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/dpdy/7f8d84.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : f32 = dpdy(1.0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdy_7f8d84();
 }
diff --git a/test/intrinsics/gen/dpdy/a8b56e.wgsl b/test/intrinsics/gen/dpdy/a8b56e.wgsl
index 011d813..e79bff9 100644
--- a/test/intrinsics/gen/dpdy/a8b56e.wgsl
+++ b/test/intrinsics/gen/dpdy/a8b56e.wgsl
@@ -28,7 +28,7 @@
   var res: vec2<f32> = dpdy(vec2<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdy_a8b56e();
 }
diff --git a/test/intrinsics/gen/dpdy/a8b56e.wgsl.expected.wgsl b/test/intrinsics/gen/dpdy/a8b56e.wgsl.expected.wgsl
index bfe028f..3493de8 100644
--- a/test/intrinsics/gen/dpdy/a8b56e.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/dpdy/a8b56e.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec2<f32> = dpdy(vec2<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdy_a8b56e();
 }
diff --git a/test/intrinsics/gen/dpdy/feb40f.wgsl b/test/intrinsics/gen/dpdy/feb40f.wgsl
index 31ce8bc..f3afdc2 100644
--- a/test/intrinsics/gen/dpdy/feb40f.wgsl
+++ b/test/intrinsics/gen/dpdy/feb40f.wgsl
@@ -28,7 +28,7 @@
   var res: vec3<f32> = dpdy(vec3<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdy_feb40f();
 }
diff --git a/test/intrinsics/gen/dpdy/feb40f.wgsl.expected.wgsl b/test/intrinsics/gen/dpdy/feb40f.wgsl.expected.wgsl
index f75381c..bdcb51d 100644
--- a/test/intrinsics/gen/dpdy/feb40f.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/dpdy/feb40f.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec3<f32> = dpdy(vec3<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdy_feb40f();
 }
diff --git a/test/intrinsics/gen/dpdyCoarse/3e1ab4.wgsl b/test/intrinsics/gen/dpdyCoarse/3e1ab4.wgsl
index 073440f..15007a3 100644
--- a/test/intrinsics/gen/dpdyCoarse/3e1ab4.wgsl
+++ b/test/intrinsics/gen/dpdyCoarse/3e1ab4.wgsl
@@ -28,7 +28,7 @@
   var res: vec2<f32> = dpdyCoarse(vec2<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdyCoarse_3e1ab4();
 }
diff --git a/test/intrinsics/gen/dpdyCoarse/3e1ab4.wgsl.expected.wgsl b/test/intrinsics/gen/dpdyCoarse/3e1ab4.wgsl.expected.wgsl
index d109629..347ad73 100644
--- a/test/intrinsics/gen/dpdyCoarse/3e1ab4.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/dpdyCoarse/3e1ab4.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec2<f32> = dpdyCoarse(vec2<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdyCoarse_3e1ab4();
 }
diff --git a/test/intrinsics/gen/dpdyCoarse/445d24.wgsl b/test/intrinsics/gen/dpdyCoarse/445d24.wgsl
index eeed8c9..b397d4e 100644
--- a/test/intrinsics/gen/dpdyCoarse/445d24.wgsl
+++ b/test/intrinsics/gen/dpdyCoarse/445d24.wgsl
@@ -28,7 +28,7 @@
   var res: vec4<f32> = dpdyCoarse(vec4<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdyCoarse_445d24();
 }
diff --git a/test/intrinsics/gen/dpdyCoarse/445d24.wgsl.expected.wgsl b/test/intrinsics/gen/dpdyCoarse/445d24.wgsl.expected.wgsl
index c5659f6..db347c4 100644
--- a/test/intrinsics/gen/dpdyCoarse/445d24.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/dpdyCoarse/445d24.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec4<f32> = dpdyCoarse(vec4<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdyCoarse_445d24();
 }
diff --git a/test/intrinsics/gen/dpdyCoarse/870a7e.wgsl b/test/intrinsics/gen/dpdyCoarse/870a7e.wgsl
index a2414d7..7fc7907 100644
--- a/test/intrinsics/gen/dpdyCoarse/870a7e.wgsl
+++ b/test/intrinsics/gen/dpdyCoarse/870a7e.wgsl
@@ -28,7 +28,7 @@
   var res: f32 = dpdyCoarse(1.0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdyCoarse_870a7e();
 }
diff --git a/test/intrinsics/gen/dpdyCoarse/870a7e.wgsl.expected.wgsl b/test/intrinsics/gen/dpdyCoarse/870a7e.wgsl.expected.wgsl
index 1bf505f..b3d7586 100644
--- a/test/intrinsics/gen/dpdyCoarse/870a7e.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/dpdyCoarse/870a7e.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : f32 = dpdyCoarse(1.0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdyCoarse_870a7e();
 }
diff --git a/test/intrinsics/gen/dpdyCoarse/ae1873.wgsl b/test/intrinsics/gen/dpdyCoarse/ae1873.wgsl
index 36cfd7b..b1f32ef 100644
--- a/test/intrinsics/gen/dpdyCoarse/ae1873.wgsl
+++ b/test/intrinsics/gen/dpdyCoarse/ae1873.wgsl
@@ -28,7 +28,7 @@
   var res: vec3<f32> = dpdyCoarse(vec3<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdyCoarse_ae1873();
 }
diff --git a/test/intrinsics/gen/dpdyCoarse/ae1873.wgsl.expected.wgsl b/test/intrinsics/gen/dpdyCoarse/ae1873.wgsl.expected.wgsl
index e625403..c116a9e 100644
--- a/test/intrinsics/gen/dpdyCoarse/ae1873.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/dpdyCoarse/ae1873.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec3<f32> = dpdyCoarse(vec3<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdyCoarse_ae1873();
 }
diff --git a/test/intrinsics/gen/dpdyFine/1fb7ab.wgsl b/test/intrinsics/gen/dpdyFine/1fb7ab.wgsl
index 352890b..3a28460 100644
--- a/test/intrinsics/gen/dpdyFine/1fb7ab.wgsl
+++ b/test/intrinsics/gen/dpdyFine/1fb7ab.wgsl
@@ -28,7 +28,7 @@
   var res: vec3<f32> = dpdyFine(vec3<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdyFine_1fb7ab();
 }
diff --git a/test/intrinsics/gen/dpdyFine/1fb7ab.wgsl.expected.wgsl b/test/intrinsics/gen/dpdyFine/1fb7ab.wgsl.expected.wgsl
index 852459c..96fd518 100644
--- a/test/intrinsics/gen/dpdyFine/1fb7ab.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/dpdyFine/1fb7ab.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec3<f32> = dpdyFine(vec3<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdyFine_1fb7ab();
 }
diff --git a/test/intrinsics/gen/dpdyFine/6eb673.wgsl b/test/intrinsics/gen/dpdyFine/6eb673.wgsl
index d2bb96c..9469533 100644
--- a/test/intrinsics/gen/dpdyFine/6eb673.wgsl
+++ b/test/intrinsics/gen/dpdyFine/6eb673.wgsl
@@ -28,7 +28,7 @@
   var res: f32 = dpdyFine(1.0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdyFine_6eb673();
 }
diff --git a/test/intrinsics/gen/dpdyFine/6eb673.wgsl.expected.wgsl b/test/intrinsics/gen/dpdyFine/6eb673.wgsl.expected.wgsl
index 60caecd..8fbc820 100644
--- a/test/intrinsics/gen/dpdyFine/6eb673.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/dpdyFine/6eb673.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : f32 = dpdyFine(1.0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdyFine_6eb673();
 }
diff --git a/test/intrinsics/gen/dpdyFine/d0a648.wgsl b/test/intrinsics/gen/dpdyFine/d0a648.wgsl
index 57e48fe..436f5a1 100644
--- a/test/intrinsics/gen/dpdyFine/d0a648.wgsl
+++ b/test/intrinsics/gen/dpdyFine/d0a648.wgsl
@@ -28,7 +28,7 @@
   var res: vec4<f32> = dpdyFine(vec4<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdyFine_d0a648();
 }
diff --git a/test/intrinsics/gen/dpdyFine/d0a648.wgsl.expected.wgsl b/test/intrinsics/gen/dpdyFine/d0a648.wgsl.expected.wgsl
index 160b27b..5d4fc7d 100644
--- a/test/intrinsics/gen/dpdyFine/d0a648.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/dpdyFine/d0a648.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec4<f32> = dpdyFine(vec4<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdyFine_d0a648();
 }
diff --git a/test/intrinsics/gen/dpdyFine/df33aa.wgsl b/test/intrinsics/gen/dpdyFine/df33aa.wgsl
index 4d84817..fdfc9c8 100644
--- a/test/intrinsics/gen/dpdyFine/df33aa.wgsl
+++ b/test/intrinsics/gen/dpdyFine/df33aa.wgsl
@@ -28,7 +28,7 @@
   var res: vec2<f32> = dpdyFine(vec2<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdyFine_df33aa();
 }
diff --git a/test/intrinsics/gen/dpdyFine/df33aa.wgsl.expected.wgsl b/test/intrinsics/gen/dpdyFine/df33aa.wgsl.expected.wgsl
index b541ecf..876948a 100644
--- a/test/intrinsics/gen/dpdyFine/df33aa.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/dpdyFine/df33aa.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec2<f32> = dpdyFine(vec2<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   dpdyFine_df33aa();
 }
diff --git a/test/intrinsics/gen/exp/0f70eb.wgsl b/test/intrinsics/gen/exp/0f70eb.wgsl
index a641b6c..e65faa4 100644
--- a/test/intrinsics/gen/exp/0f70eb.wgsl
+++ b/test/intrinsics/gen/exp/0f70eb.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = exp(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   exp_0f70eb();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   exp_0f70eb();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   exp_0f70eb();
 }
diff --git a/test/intrinsics/gen/exp/0f70eb.wgsl.expected.wgsl b/test/intrinsics/gen/exp/0f70eb.wgsl.expected.wgsl
index 56d1828..bdcd32b 100644
--- a/test/intrinsics/gen/exp/0f70eb.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/exp/0f70eb.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = exp(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   exp_0f70eb();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   exp_0f70eb();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   exp_0f70eb();
 }
diff --git a/test/intrinsics/gen/exp/1951e7.wgsl b/test/intrinsics/gen/exp/1951e7.wgsl
index e8a0ecc..6e006f3 100644
--- a/test/intrinsics/gen/exp/1951e7.wgsl
+++ b/test/intrinsics/gen/exp/1951e7.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = exp(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   exp_1951e7();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   exp_1951e7();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   exp_1951e7();
 }
diff --git a/test/intrinsics/gen/exp/1951e7.wgsl.expected.wgsl b/test/intrinsics/gen/exp/1951e7.wgsl.expected.wgsl
index 81e9694..f3dd502 100644
--- a/test/intrinsics/gen/exp/1951e7.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/exp/1951e7.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = exp(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   exp_1951e7();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   exp_1951e7();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   exp_1951e7();
 }
diff --git a/test/intrinsics/gen/exp/771fd2.wgsl b/test/intrinsics/gen/exp/771fd2.wgsl
index e44b635..a1cb3cd 100644
--- a/test/intrinsics/gen/exp/771fd2.wgsl
+++ b/test/intrinsics/gen/exp/771fd2.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = exp(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   exp_771fd2();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   exp_771fd2();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   exp_771fd2();
 }
diff --git a/test/intrinsics/gen/exp/771fd2.wgsl.expected.wgsl b/test/intrinsics/gen/exp/771fd2.wgsl.expected.wgsl
index 4fdeb25..31bfd18 100644
--- a/test/intrinsics/gen/exp/771fd2.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/exp/771fd2.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = exp(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   exp_771fd2();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   exp_771fd2();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   exp_771fd2();
 }
diff --git a/test/intrinsics/gen/exp/d98450.wgsl b/test/intrinsics/gen/exp/d98450.wgsl
index c74af04..2404a17 100644
--- a/test/intrinsics/gen/exp/d98450.wgsl
+++ b/test/intrinsics/gen/exp/d98450.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = exp(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   exp_d98450();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   exp_d98450();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   exp_d98450();
 }
diff --git a/test/intrinsics/gen/exp/d98450.wgsl.expected.wgsl b/test/intrinsics/gen/exp/d98450.wgsl.expected.wgsl
index 06ffea3..168c3c2 100644
--- a/test/intrinsics/gen/exp/d98450.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/exp/d98450.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = exp(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   exp_d98450();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   exp_d98450();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   exp_d98450();
 }
diff --git a/test/intrinsics/gen/exp2/1f8680.wgsl b/test/intrinsics/gen/exp2/1f8680.wgsl
index 40852d4..0fdaeba 100644
--- a/test/intrinsics/gen/exp2/1f8680.wgsl
+++ b/test/intrinsics/gen/exp2/1f8680.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = exp2(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   exp2_1f8680();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   exp2_1f8680();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   exp2_1f8680();
 }
diff --git a/test/intrinsics/gen/exp2/1f8680.wgsl.expected.wgsl b/test/intrinsics/gen/exp2/1f8680.wgsl.expected.wgsl
index be2ee95..a4cba82 100644
--- a/test/intrinsics/gen/exp2/1f8680.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/exp2/1f8680.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = exp2(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   exp2_1f8680();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   exp2_1f8680();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   exp2_1f8680();
 }
diff --git a/test/intrinsics/gen/exp2/a9d0a7.wgsl b/test/intrinsics/gen/exp2/a9d0a7.wgsl
index ac64102..46e47f7 100644
--- a/test/intrinsics/gen/exp2/a9d0a7.wgsl
+++ b/test/intrinsics/gen/exp2/a9d0a7.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = exp2(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   exp2_a9d0a7();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   exp2_a9d0a7();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   exp2_a9d0a7();
 }
diff --git a/test/intrinsics/gen/exp2/a9d0a7.wgsl.expected.wgsl b/test/intrinsics/gen/exp2/a9d0a7.wgsl.expected.wgsl
index ebdaf6d..6a9160b 100644
--- a/test/intrinsics/gen/exp2/a9d0a7.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/exp2/a9d0a7.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = exp2(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   exp2_a9d0a7();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   exp2_a9d0a7();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   exp2_a9d0a7();
 }
diff --git a/test/intrinsics/gen/exp2/d6777c.wgsl b/test/intrinsics/gen/exp2/d6777c.wgsl
index 7206fe6..42933c0 100644
--- a/test/intrinsics/gen/exp2/d6777c.wgsl
+++ b/test/intrinsics/gen/exp2/d6777c.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = exp2(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   exp2_d6777c();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   exp2_d6777c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   exp2_d6777c();
 }
diff --git a/test/intrinsics/gen/exp2/d6777c.wgsl.expected.wgsl b/test/intrinsics/gen/exp2/d6777c.wgsl.expected.wgsl
index 3a6b02b..7c84e15 100644
--- a/test/intrinsics/gen/exp2/d6777c.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/exp2/d6777c.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = exp2(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   exp2_d6777c();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   exp2_d6777c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   exp2_d6777c();
 }
diff --git a/test/intrinsics/gen/exp2/dea523.wgsl b/test/intrinsics/gen/exp2/dea523.wgsl
index 1ca1f3d..26e836a 100644
--- a/test/intrinsics/gen/exp2/dea523.wgsl
+++ b/test/intrinsics/gen/exp2/dea523.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = exp2(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   exp2_dea523();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   exp2_dea523();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   exp2_dea523();
 }
diff --git a/test/intrinsics/gen/exp2/dea523.wgsl.expected.wgsl b/test/intrinsics/gen/exp2/dea523.wgsl.expected.wgsl
index 548eaea..92ea06d 100644
--- a/test/intrinsics/gen/exp2/dea523.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/exp2/dea523.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = exp2(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   exp2_dea523();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   exp2_dea523();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   exp2_dea523();
 }
diff --git a/test/intrinsics/gen/faceForward/5afbd5.wgsl b/test/intrinsics/gen/faceForward/5afbd5.wgsl
index 70d32a9..3e036f3 100644
--- a/test/intrinsics/gen/faceForward/5afbd5.wgsl
+++ b/test/intrinsics/gen/faceForward/5afbd5.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = faceForward(vec3<f32>(), vec3<f32>(), vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   faceForward_5afbd5();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   faceForward_5afbd5();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   faceForward_5afbd5();
 }
diff --git a/test/intrinsics/gen/faceForward/5afbd5.wgsl.expected.wgsl b/test/intrinsics/gen/faceForward/5afbd5.wgsl.expected.wgsl
index 60f43f7..65e8800 100644
--- a/test/intrinsics/gen/faceForward/5afbd5.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/faceForward/5afbd5.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = faceForward(vec3<f32>(), vec3<f32>(), vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   faceForward_5afbd5();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   faceForward_5afbd5();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   faceForward_5afbd5();
 }
diff --git a/test/intrinsics/gen/faceForward/b316e5.wgsl b/test/intrinsics/gen/faceForward/b316e5.wgsl
index bccaf38..2e31ca6 100644
--- a/test/intrinsics/gen/faceForward/b316e5.wgsl
+++ b/test/intrinsics/gen/faceForward/b316e5.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = faceForward(vec4<f32>(), vec4<f32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   faceForward_b316e5();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   faceForward_b316e5();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   faceForward_b316e5();
 }
diff --git a/test/intrinsics/gen/faceForward/b316e5.wgsl.expected.wgsl b/test/intrinsics/gen/faceForward/b316e5.wgsl.expected.wgsl
index accacf2..e3cc002 100644
--- a/test/intrinsics/gen/faceForward/b316e5.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/faceForward/b316e5.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = faceForward(vec4<f32>(), vec4<f32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   faceForward_b316e5();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   faceForward_b316e5();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   faceForward_b316e5();
 }
diff --git a/test/intrinsics/gen/faceForward/e6908b.wgsl b/test/intrinsics/gen/faceForward/e6908b.wgsl
index 626e2ab..4c9a2be 100644
--- a/test/intrinsics/gen/faceForward/e6908b.wgsl
+++ b/test/intrinsics/gen/faceForward/e6908b.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = faceForward(vec2<f32>(), vec2<f32>(), vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   faceForward_e6908b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   faceForward_e6908b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   faceForward_e6908b();
 }
diff --git a/test/intrinsics/gen/faceForward/e6908b.wgsl.expected.wgsl b/test/intrinsics/gen/faceForward/e6908b.wgsl.expected.wgsl
index c5a1a40..96c2c87 100644
--- a/test/intrinsics/gen/faceForward/e6908b.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/faceForward/e6908b.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = faceForward(vec2<f32>(), vec2<f32>(), vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   faceForward_e6908b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   faceForward_e6908b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   faceForward_e6908b();
 }
diff --git a/test/intrinsics/gen/floor/3bccc4.wgsl b/test/intrinsics/gen/floor/3bccc4.wgsl
index 21c16ee..3d27b57 100644
--- a/test/intrinsics/gen/floor/3bccc4.wgsl
+++ b/test/intrinsics/gen/floor/3bccc4.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = floor(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   floor_3bccc4();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   floor_3bccc4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   floor_3bccc4();
 }
diff --git a/test/intrinsics/gen/floor/3bccc4.wgsl.expected.wgsl b/test/intrinsics/gen/floor/3bccc4.wgsl.expected.wgsl
index a9a17da..878e104 100644
--- a/test/intrinsics/gen/floor/3bccc4.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/floor/3bccc4.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = floor(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   floor_3bccc4();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   floor_3bccc4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   floor_3bccc4();
 }
diff --git a/test/intrinsics/gen/floor/5fc9ac.wgsl b/test/intrinsics/gen/floor/5fc9ac.wgsl
index 8b9bb2c..49afc11 100644
--- a/test/intrinsics/gen/floor/5fc9ac.wgsl
+++ b/test/intrinsics/gen/floor/5fc9ac.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = floor(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   floor_5fc9ac();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   floor_5fc9ac();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   floor_5fc9ac();
 }
diff --git a/test/intrinsics/gen/floor/5fc9ac.wgsl.expected.wgsl b/test/intrinsics/gen/floor/5fc9ac.wgsl.expected.wgsl
index 5ab196a..1b6fadd 100644
--- a/test/intrinsics/gen/floor/5fc9ac.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/floor/5fc9ac.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = floor(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   floor_5fc9ac();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   floor_5fc9ac();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   floor_5fc9ac();
 }
diff --git a/test/intrinsics/gen/floor/60d7ea.wgsl b/test/intrinsics/gen/floor/60d7ea.wgsl
index 90c0a3b..6e4c944 100644
--- a/test/intrinsics/gen/floor/60d7ea.wgsl
+++ b/test/intrinsics/gen/floor/60d7ea.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = floor(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   floor_60d7ea();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   floor_60d7ea();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   floor_60d7ea();
 }
diff --git a/test/intrinsics/gen/floor/60d7ea.wgsl.expected.wgsl b/test/intrinsics/gen/floor/60d7ea.wgsl.expected.wgsl
index 62b956f..bfc5a83 100644
--- a/test/intrinsics/gen/floor/60d7ea.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/floor/60d7ea.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = floor(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   floor_60d7ea();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   floor_60d7ea();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   floor_60d7ea();
 }
diff --git a/test/intrinsics/gen/floor/66f154.wgsl b/test/intrinsics/gen/floor/66f154.wgsl
index afec159..8020bf6 100644
--- a/test/intrinsics/gen/floor/66f154.wgsl
+++ b/test/intrinsics/gen/floor/66f154.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = floor(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   floor_66f154();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   floor_66f154();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   floor_66f154();
 }
diff --git a/test/intrinsics/gen/floor/66f154.wgsl.expected.wgsl b/test/intrinsics/gen/floor/66f154.wgsl.expected.wgsl
index 45144a4..11de386 100644
--- a/test/intrinsics/gen/floor/66f154.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/floor/66f154.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = floor(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   floor_66f154();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   floor_66f154();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   floor_66f154();
 }
diff --git a/test/intrinsics/gen/fma/26a7a9.wgsl b/test/intrinsics/gen/fma/26a7a9.wgsl
index 314493b..bb6f1c0 100644
--- a/test/intrinsics/gen/fma/26a7a9.wgsl
+++ b/test/intrinsics/gen/fma/26a7a9.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = fma(vec2<f32>(), vec2<f32>(), vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   fma_26a7a9();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fma_26a7a9();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   fma_26a7a9();
 }
diff --git a/test/intrinsics/gen/fma/26a7a9.wgsl.expected.wgsl b/test/intrinsics/gen/fma/26a7a9.wgsl.expected.wgsl
index fb9bdef..f1edf4e 100644
--- a/test/intrinsics/gen/fma/26a7a9.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/fma/26a7a9.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = fma(vec2<f32>(), vec2<f32>(), vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   fma_26a7a9();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fma_26a7a9();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   fma_26a7a9();
 }
diff --git a/test/intrinsics/gen/fma/6a3283.wgsl b/test/intrinsics/gen/fma/6a3283.wgsl
index e722ec9..2074905 100644
--- a/test/intrinsics/gen/fma/6a3283.wgsl
+++ b/test/intrinsics/gen/fma/6a3283.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = fma(vec4<f32>(), vec4<f32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   fma_6a3283();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fma_6a3283();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   fma_6a3283();
 }
diff --git a/test/intrinsics/gen/fma/6a3283.wgsl.expected.wgsl b/test/intrinsics/gen/fma/6a3283.wgsl.expected.wgsl
index 5040b3b..267c2b1 100644
--- a/test/intrinsics/gen/fma/6a3283.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/fma/6a3283.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = fma(vec4<f32>(), vec4<f32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   fma_6a3283();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fma_6a3283();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   fma_6a3283();
 }
diff --git a/test/intrinsics/gen/fma/c10ba3.wgsl b/test/intrinsics/gen/fma/c10ba3.wgsl
index 39b6af3..9bd4277 100644
--- a/test/intrinsics/gen/fma/c10ba3.wgsl
+++ b/test/intrinsics/gen/fma/c10ba3.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = fma(1.0, 1.0, 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   fma_c10ba3();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fma_c10ba3();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   fma_c10ba3();
 }
diff --git a/test/intrinsics/gen/fma/c10ba3.wgsl.expected.wgsl b/test/intrinsics/gen/fma/c10ba3.wgsl.expected.wgsl
index f43de8f..baec69d 100644
--- a/test/intrinsics/gen/fma/c10ba3.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/fma/c10ba3.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = fma(1.0, 1.0, 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   fma_c10ba3();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fma_c10ba3();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   fma_c10ba3();
 }
diff --git a/test/intrinsics/gen/fma/e17c5c.wgsl b/test/intrinsics/gen/fma/e17c5c.wgsl
index 6fa8a4f..a9adbb0 100644
--- a/test/intrinsics/gen/fma/e17c5c.wgsl
+++ b/test/intrinsics/gen/fma/e17c5c.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = fma(vec3<f32>(), vec3<f32>(), vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   fma_e17c5c();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fma_e17c5c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   fma_e17c5c();
 }
diff --git a/test/intrinsics/gen/fma/e17c5c.wgsl.expected.wgsl b/test/intrinsics/gen/fma/e17c5c.wgsl.expected.wgsl
index 35874f4..adc6a88 100644
--- a/test/intrinsics/gen/fma/e17c5c.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/fma/e17c5c.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = fma(vec3<f32>(), vec3<f32>(), vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   fma_e17c5c();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fma_e17c5c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   fma_e17c5c();
 }
diff --git a/test/intrinsics/gen/fract/8bc1e9.wgsl b/test/intrinsics/gen/fract/8bc1e9.wgsl
index 79c9611..d064af2 100644
--- a/test/intrinsics/gen/fract/8bc1e9.wgsl
+++ b/test/intrinsics/gen/fract/8bc1e9.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = fract(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   fract_8bc1e9();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fract_8bc1e9();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   fract_8bc1e9();
 }
diff --git a/test/intrinsics/gen/fract/8bc1e9.wgsl.expected.wgsl b/test/intrinsics/gen/fract/8bc1e9.wgsl.expected.wgsl
index 77b2630..6476408 100644
--- a/test/intrinsics/gen/fract/8bc1e9.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/fract/8bc1e9.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = fract(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   fract_8bc1e9();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fract_8bc1e9();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   fract_8bc1e9();
 }
diff --git a/test/intrinsics/gen/fract/943cb1.wgsl b/test/intrinsics/gen/fract/943cb1.wgsl
index 9c9552a..50d0038 100644
--- a/test/intrinsics/gen/fract/943cb1.wgsl
+++ b/test/intrinsics/gen/fract/943cb1.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = fract(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   fract_943cb1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fract_943cb1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   fract_943cb1();
 }
diff --git a/test/intrinsics/gen/fract/943cb1.wgsl.expected.wgsl b/test/intrinsics/gen/fract/943cb1.wgsl.expected.wgsl
index 26a6f25..977e3f9 100644
--- a/test/intrinsics/gen/fract/943cb1.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/fract/943cb1.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = fract(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   fract_943cb1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fract_943cb1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   fract_943cb1();
 }
diff --git a/test/intrinsics/gen/fract/a49758.wgsl b/test/intrinsics/gen/fract/a49758.wgsl
index 9617954..567a336 100644
--- a/test/intrinsics/gen/fract/a49758.wgsl
+++ b/test/intrinsics/gen/fract/a49758.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = fract(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   fract_a49758();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fract_a49758();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   fract_a49758();
 }
diff --git a/test/intrinsics/gen/fract/a49758.wgsl.expected.wgsl b/test/intrinsics/gen/fract/a49758.wgsl.expected.wgsl
index 8adc33c..7ab47df 100644
--- a/test/intrinsics/gen/fract/a49758.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/fract/a49758.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = fract(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   fract_a49758();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fract_a49758();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   fract_a49758();
 }
diff --git a/test/intrinsics/gen/fract/fa5c71.wgsl b/test/intrinsics/gen/fract/fa5c71.wgsl
index b6eaefe..35a24e1 100644
--- a/test/intrinsics/gen/fract/fa5c71.wgsl
+++ b/test/intrinsics/gen/fract/fa5c71.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = fract(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   fract_fa5c71();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fract_fa5c71();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   fract_fa5c71();
 }
diff --git a/test/intrinsics/gen/fract/fa5c71.wgsl.expected.wgsl b/test/intrinsics/gen/fract/fa5c71.wgsl.expected.wgsl
index 292a7bf..3599c79 100644
--- a/test/intrinsics/gen/fract/fa5c71.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/fract/fa5c71.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = fract(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   fract_fa5c71();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fract_fa5c71();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   fract_fa5c71();
 }
diff --git a/test/intrinsics/gen/frexp/368997.wgsl b/test/intrinsics/gen/frexp/368997.wgsl
index af00ee5..f7d9a71 100644
--- a/test/intrinsics/gen/frexp/368997.wgsl
+++ b/test/intrinsics/gen/frexp/368997.wgsl
@@ -28,18 +28,18 @@
   var res = frexp(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   frexp_368997();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   frexp_368997();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   frexp_368997();
 }
diff --git a/test/intrinsics/gen/frexp/368997.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/368997.wgsl.expected.wgsl
index d0f86b4..914f1d5 100644
--- a/test/intrinsics/gen/frexp/368997.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/368997.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res = frexp(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   frexp_368997();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   frexp_368997();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   frexp_368997();
 }
diff --git a/test/intrinsics/gen/frexp/3c4f48.wgsl b/test/intrinsics/gen/frexp/3c4f48.wgsl
index ce58325..2dd0849 100644
--- a/test/intrinsics/gen/frexp/3c4f48.wgsl
+++ b/test/intrinsics/gen/frexp/3c4f48.wgsl
@@ -28,18 +28,18 @@
   var res = frexp(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   frexp_3c4f48();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   frexp_3c4f48();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   frexp_3c4f48();
 }
diff --git a/test/intrinsics/gen/frexp/3c4f48.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/3c4f48.wgsl.expected.wgsl
index 07b50b6..2129fb6 100644
--- a/test/intrinsics/gen/frexp/3c4f48.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/3c4f48.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res = frexp(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   frexp_3c4f48();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   frexp_3c4f48();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   frexp_3c4f48();
 }
diff --git a/test/intrinsics/gen/frexp/4bdfc7.wgsl b/test/intrinsics/gen/frexp/4bdfc7.wgsl
index 4b48ab8..eff4518 100644
--- a/test/intrinsics/gen/frexp/4bdfc7.wgsl
+++ b/test/intrinsics/gen/frexp/4bdfc7.wgsl
@@ -28,18 +28,18 @@
   var res = frexp(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   frexp_4bdfc7();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   frexp_4bdfc7();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   frexp_4bdfc7();
 }
diff --git a/test/intrinsics/gen/frexp/4bdfc7.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/4bdfc7.wgsl.expected.wgsl
index 6473fd5..8dfe70c 100644
--- a/test/intrinsics/gen/frexp/4bdfc7.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/4bdfc7.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res = frexp(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   frexp_4bdfc7();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   frexp_4bdfc7();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   frexp_4bdfc7();
 }
diff --git a/test/intrinsics/gen/frexp/eabd40.wgsl b/test/intrinsics/gen/frexp/eabd40.wgsl
index a2f580f..3f2f00d 100644
--- a/test/intrinsics/gen/frexp/eabd40.wgsl
+++ b/test/intrinsics/gen/frexp/eabd40.wgsl
@@ -28,18 +28,18 @@
   var res = frexp(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   frexp_eabd40();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   frexp_eabd40();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   frexp_eabd40();
 }
diff --git a/test/intrinsics/gen/frexp/eabd40.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/eabd40.wgsl.expected.wgsl
index 8dd5d1c..3bcd2b6 100644
--- a/test/intrinsics/gen/frexp/eabd40.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/eabd40.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res = frexp(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   frexp_eabd40();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   frexp_eabd40();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   frexp_eabd40();
 }
diff --git a/test/intrinsics/gen/fwidth/5d1b39.wgsl b/test/intrinsics/gen/fwidth/5d1b39.wgsl
index f323aca..8400934 100644
--- a/test/intrinsics/gen/fwidth/5d1b39.wgsl
+++ b/test/intrinsics/gen/fwidth/5d1b39.wgsl
@@ -28,7 +28,7 @@
   var res: vec3<f32> = fwidth(vec3<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fwidth_5d1b39();
 }
diff --git a/test/intrinsics/gen/fwidth/5d1b39.wgsl.expected.wgsl b/test/intrinsics/gen/fwidth/5d1b39.wgsl.expected.wgsl
index b2f0692..f3c53fa 100644
--- a/test/intrinsics/gen/fwidth/5d1b39.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/fwidth/5d1b39.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec3<f32> = fwidth(vec3<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fwidth_5d1b39();
 }
diff --git a/test/intrinsics/gen/fwidth/b83ebb.wgsl b/test/intrinsics/gen/fwidth/b83ebb.wgsl
index e528240..36592fd 100644
--- a/test/intrinsics/gen/fwidth/b83ebb.wgsl
+++ b/test/intrinsics/gen/fwidth/b83ebb.wgsl
@@ -28,7 +28,7 @@
   var res: vec2<f32> = fwidth(vec2<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fwidth_b83ebb();
 }
diff --git a/test/intrinsics/gen/fwidth/b83ebb.wgsl.expected.wgsl b/test/intrinsics/gen/fwidth/b83ebb.wgsl.expected.wgsl
index a858363..aa9e984 100644
--- a/test/intrinsics/gen/fwidth/b83ebb.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/fwidth/b83ebb.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec2<f32> = fwidth(vec2<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fwidth_b83ebb();
 }
diff --git a/test/intrinsics/gen/fwidth/d2ab9a.wgsl b/test/intrinsics/gen/fwidth/d2ab9a.wgsl
index 615e251..49c41ea 100644
--- a/test/intrinsics/gen/fwidth/d2ab9a.wgsl
+++ b/test/intrinsics/gen/fwidth/d2ab9a.wgsl
@@ -28,7 +28,7 @@
   var res: vec4<f32> = fwidth(vec4<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fwidth_d2ab9a();
 }
diff --git a/test/intrinsics/gen/fwidth/d2ab9a.wgsl.expected.wgsl b/test/intrinsics/gen/fwidth/d2ab9a.wgsl.expected.wgsl
index ee3c551..d5ba206 100644
--- a/test/intrinsics/gen/fwidth/d2ab9a.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/fwidth/d2ab9a.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec4<f32> = fwidth(vec4<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fwidth_d2ab9a();
 }
diff --git a/test/intrinsics/gen/fwidth/df38ef.wgsl b/test/intrinsics/gen/fwidth/df38ef.wgsl
index 5cd698d..9388812 100644
--- a/test/intrinsics/gen/fwidth/df38ef.wgsl
+++ b/test/intrinsics/gen/fwidth/df38ef.wgsl
@@ -28,7 +28,7 @@
   var res: f32 = fwidth(1.0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fwidth_df38ef();
 }
diff --git a/test/intrinsics/gen/fwidth/df38ef.wgsl.expected.wgsl b/test/intrinsics/gen/fwidth/df38ef.wgsl.expected.wgsl
index a0fcaec..b98137e 100644
--- a/test/intrinsics/gen/fwidth/df38ef.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/fwidth/df38ef.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : f32 = fwidth(1.0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fwidth_df38ef();
 }
diff --git a/test/intrinsics/gen/fwidthCoarse/159c8a.wgsl b/test/intrinsics/gen/fwidthCoarse/159c8a.wgsl
index 35df109..a7c4cd3 100644
--- a/test/intrinsics/gen/fwidthCoarse/159c8a.wgsl
+++ b/test/intrinsics/gen/fwidthCoarse/159c8a.wgsl
@@ -28,7 +28,7 @@
   var res: f32 = fwidthCoarse(1.0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fwidthCoarse_159c8a();
 }
diff --git a/test/intrinsics/gen/fwidthCoarse/159c8a.wgsl.expected.wgsl b/test/intrinsics/gen/fwidthCoarse/159c8a.wgsl.expected.wgsl
index f4c9169..1e592ef 100644
--- a/test/intrinsics/gen/fwidthCoarse/159c8a.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/fwidthCoarse/159c8a.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : f32 = fwidthCoarse(1.0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fwidthCoarse_159c8a();
 }
diff --git a/test/intrinsics/gen/fwidthCoarse/1e59d9.wgsl b/test/intrinsics/gen/fwidthCoarse/1e59d9.wgsl
index c1c41e1..044c582 100644
--- a/test/intrinsics/gen/fwidthCoarse/1e59d9.wgsl
+++ b/test/intrinsics/gen/fwidthCoarse/1e59d9.wgsl
@@ -28,7 +28,7 @@
   var res: vec3<f32> = fwidthCoarse(vec3<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fwidthCoarse_1e59d9();
 }
diff --git a/test/intrinsics/gen/fwidthCoarse/1e59d9.wgsl.expected.wgsl b/test/intrinsics/gen/fwidthCoarse/1e59d9.wgsl.expected.wgsl
index 838c5e0..1352bf6 100644
--- a/test/intrinsics/gen/fwidthCoarse/1e59d9.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/fwidthCoarse/1e59d9.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec3<f32> = fwidthCoarse(vec3<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fwidthCoarse_1e59d9();
 }
diff --git a/test/intrinsics/gen/fwidthCoarse/4e4fc4.wgsl b/test/intrinsics/gen/fwidthCoarse/4e4fc4.wgsl
index 1d7272e..da66152 100644
--- a/test/intrinsics/gen/fwidthCoarse/4e4fc4.wgsl
+++ b/test/intrinsics/gen/fwidthCoarse/4e4fc4.wgsl
@@ -28,7 +28,7 @@
   var res: vec4<f32> = fwidthCoarse(vec4<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fwidthCoarse_4e4fc4();
 }
diff --git a/test/intrinsics/gen/fwidthCoarse/4e4fc4.wgsl.expected.wgsl b/test/intrinsics/gen/fwidthCoarse/4e4fc4.wgsl.expected.wgsl
index 01eae21..3fea38a 100644
--- a/test/intrinsics/gen/fwidthCoarse/4e4fc4.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/fwidthCoarse/4e4fc4.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec4<f32> = fwidthCoarse(vec4<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fwidthCoarse_4e4fc4();
 }
diff --git a/test/intrinsics/gen/fwidthCoarse/e653f7.wgsl b/test/intrinsics/gen/fwidthCoarse/e653f7.wgsl
index b27d20d..bfd46bb 100644
--- a/test/intrinsics/gen/fwidthCoarse/e653f7.wgsl
+++ b/test/intrinsics/gen/fwidthCoarse/e653f7.wgsl
@@ -28,7 +28,7 @@
   var res: vec2<f32> = fwidthCoarse(vec2<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fwidthCoarse_e653f7();
 }
diff --git a/test/intrinsics/gen/fwidthCoarse/e653f7.wgsl.expected.wgsl b/test/intrinsics/gen/fwidthCoarse/e653f7.wgsl.expected.wgsl
index 2bed1c7..9e5a1da 100644
--- a/test/intrinsics/gen/fwidthCoarse/e653f7.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/fwidthCoarse/e653f7.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec2<f32> = fwidthCoarse(vec2<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fwidthCoarse_e653f7();
 }
diff --git a/test/intrinsics/gen/fwidthFine/523fdc.wgsl b/test/intrinsics/gen/fwidthFine/523fdc.wgsl
index a882b5c..d02b674 100644
--- a/test/intrinsics/gen/fwidthFine/523fdc.wgsl
+++ b/test/intrinsics/gen/fwidthFine/523fdc.wgsl
@@ -28,7 +28,7 @@
   var res: vec3<f32> = fwidthFine(vec3<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fwidthFine_523fdc();
 }
diff --git a/test/intrinsics/gen/fwidthFine/523fdc.wgsl.expected.wgsl b/test/intrinsics/gen/fwidthFine/523fdc.wgsl.expected.wgsl
index d0fff42..41cb66c 100644
--- a/test/intrinsics/gen/fwidthFine/523fdc.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/fwidthFine/523fdc.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec3<f32> = fwidthFine(vec3<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fwidthFine_523fdc();
 }
diff --git a/test/intrinsics/gen/fwidthFine/68f4ef.wgsl b/test/intrinsics/gen/fwidthFine/68f4ef.wgsl
index f3fce3b..cd641a0 100644
--- a/test/intrinsics/gen/fwidthFine/68f4ef.wgsl
+++ b/test/intrinsics/gen/fwidthFine/68f4ef.wgsl
@@ -28,7 +28,7 @@
   var res: vec4<f32> = fwidthFine(vec4<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fwidthFine_68f4ef();
 }
diff --git a/test/intrinsics/gen/fwidthFine/68f4ef.wgsl.expected.wgsl b/test/intrinsics/gen/fwidthFine/68f4ef.wgsl.expected.wgsl
index 19389eb..97f1033 100644
--- a/test/intrinsics/gen/fwidthFine/68f4ef.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/fwidthFine/68f4ef.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec4<f32> = fwidthFine(vec4<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fwidthFine_68f4ef();
 }
diff --git a/test/intrinsics/gen/fwidthFine/f1742d.wgsl b/test/intrinsics/gen/fwidthFine/f1742d.wgsl
index 8d6c71c..c78f9b0 100644
--- a/test/intrinsics/gen/fwidthFine/f1742d.wgsl
+++ b/test/intrinsics/gen/fwidthFine/f1742d.wgsl
@@ -28,7 +28,7 @@
   var res: f32 = fwidthFine(1.0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fwidthFine_f1742d();
 }
diff --git a/test/intrinsics/gen/fwidthFine/f1742d.wgsl.expected.wgsl b/test/intrinsics/gen/fwidthFine/f1742d.wgsl.expected.wgsl
index 6985860..4a764a5 100644
--- a/test/intrinsics/gen/fwidthFine/f1742d.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/fwidthFine/f1742d.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : f32 = fwidthFine(1.0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fwidthFine_f1742d();
 }
diff --git a/test/intrinsics/gen/fwidthFine/ff6aa0.wgsl b/test/intrinsics/gen/fwidthFine/ff6aa0.wgsl
index ba6726e..4176ec2 100644
--- a/test/intrinsics/gen/fwidthFine/ff6aa0.wgsl
+++ b/test/intrinsics/gen/fwidthFine/ff6aa0.wgsl
@@ -28,7 +28,7 @@
   var res: vec2<f32> = fwidthFine(vec2<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fwidthFine_ff6aa0();
 }
diff --git a/test/intrinsics/gen/fwidthFine/ff6aa0.wgsl.expected.wgsl b/test/intrinsics/gen/fwidthFine/ff6aa0.wgsl.expected.wgsl
index c9b1e24..7ca7637 100644
--- a/test/intrinsics/gen/fwidthFine/ff6aa0.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/fwidthFine/ff6aa0.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec2<f32> = fwidthFine(vec2<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fwidthFine_ff6aa0();
 }
diff --git a/test/intrinsics/gen/ignore/2a6ac2.wgsl b/test/intrinsics/gen/ignore/2a6ac2.wgsl
index a7bb0c6..b754307 100644
--- a/test/intrinsics/gen/ignore/2a6ac2.wgsl
+++ b/test/intrinsics/gen/ignore/2a6ac2.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_multisampled_2d;
+@group(1) @binding(0) var arg_0: texture_depth_multisampled_2d;
 
 // fn ignore(texture_depth_multisampled_2d)
 fn ignore_2a6ac2() {
   ignore(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   ignore_2a6ac2();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   ignore_2a6ac2();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   ignore_2a6ac2();
 }
diff --git a/test/intrinsics/gen/ignore/2a6ac2.wgsl.expected.wgsl b/test/intrinsics/gen/ignore/2a6ac2.wgsl.expected.wgsl
index c035b52..c6a2145 100644
--- a/test/intrinsics/gen/ignore/2a6ac2.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/ignore/2a6ac2.wgsl.expected.wgsl
@@ -2,24 +2,24 @@
   ignore(arg_0);
   ^^^^^^
 
-[[group(1), binding(0)]] var arg_0 : texture_depth_multisampled_2d;
+@group(1) @binding(0) var arg_0 : texture_depth_multisampled_2d;
 
 fn ignore_2a6ac2() {
   ignore(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   ignore_2a6ac2();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   ignore_2a6ac2();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   ignore_2a6ac2();
 }
diff --git a/test/intrinsics/gen/ignore/5016e5.wgsl b/test/intrinsics/gen/ignore/5016e5.wgsl
index 8628618..0e49fb6 100644
--- a/test/intrinsics/gen/ignore/5016e5.wgsl
+++ b/test/intrinsics/gen/ignore/5016e5.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: sampler;
+@group(1) @binding(0) var arg_0: sampler;
 
 // fn ignore(sampler)
 fn ignore_5016e5() {
   ignore(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   ignore_5016e5();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   ignore_5016e5();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   ignore_5016e5();
 }
diff --git a/test/intrinsics/gen/ignore/5016e5.wgsl.expected.wgsl b/test/intrinsics/gen/ignore/5016e5.wgsl.expected.wgsl
index e422693..2d1c7b6 100644
--- a/test/intrinsics/gen/ignore/5016e5.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/ignore/5016e5.wgsl.expected.wgsl
@@ -2,24 +2,24 @@
   ignore(arg_0);
   ^^^^^^
 
-[[group(1), binding(0)]] var arg_0 : sampler;
+@group(1) @binding(0) var arg_0 : sampler;
 
 fn ignore_5016e5() {
   ignore(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   ignore_5016e5();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   ignore_5016e5();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   ignore_5016e5();
 }
diff --git a/test/intrinsics/gen/ignore/509355.wgsl b/test/intrinsics/gen/ignore/509355.wgsl
index 161002c..30557aa 100644
--- a/test/intrinsics/gen/ignore/509355.wgsl
+++ b/test/intrinsics/gen/ignore/509355.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_cube;
+@group(1) @binding(0) var arg_0: texture_depth_cube;
 
 // fn ignore(texture_depth_cube)
 fn ignore_509355() {
   ignore(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   ignore_509355();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   ignore_509355();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   ignore_509355();
 }
diff --git a/test/intrinsics/gen/ignore/509355.wgsl.expected.wgsl b/test/intrinsics/gen/ignore/509355.wgsl.expected.wgsl
index edfc4af..39d4815 100644
--- a/test/intrinsics/gen/ignore/509355.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/ignore/509355.wgsl.expected.wgsl
@@ -2,24 +2,24 @@
   ignore(arg_0);
   ^^^^^^
 
-[[group(1), binding(0)]] var arg_0 : texture_depth_cube;
+@group(1) @binding(0) var arg_0 : texture_depth_cube;
 
 fn ignore_509355() {
   ignore(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   ignore_509355();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   ignore_509355();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   ignore_509355();
 }
diff --git a/test/intrinsics/gen/ignore/51aeb7.wgsl b/test/intrinsics/gen/ignore/51aeb7.wgsl
index becd6dd..1f986d2 100644
--- a/test/intrinsics/gen/ignore/51aeb7.wgsl
+++ b/test/intrinsics/gen/ignore/51aeb7.wgsl
@@ -28,18 +28,18 @@
   ignore(1);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   ignore_51aeb7();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   ignore_51aeb7();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   ignore_51aeb7();
 }
diff --git a/test/intrinsics/gen/ignore/51aeb7.wgsl.expected.wgsl b/test/intrinsics/gen/ignore/51aeb7.wgsl.expected.wgsl
index 8d35e83..9ecccc7 100644
--- a/test/intrinsics/gen/ignore/51aeb7.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/ignore/51aeb7.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   ignore(1);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   ignore_51aeb7();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   ignore_51aeb7();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   ignore_51aeb7();
 }
diff --git a/test/intrinsics/gen/ignore/5c9edf.wgsl b/test/intrinsics/gen/ignore/5c9edf.wgsl
index 74e0717..e53a664 100644
--- a/test/intrinsics/gen/ignore/5c9edf.wgsl
+++ b/test/intrinsics/gen/ignore/5c9edf.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_external;
+@group(1) @binding(0) var arg_0: texture_external;
 
 // fn ignore(texture_external)
 fn ignore_5c9edf() {
   ignore(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   ignore_5c9edf();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   ignore_5c9edf();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   ignore_5c9edf();
 }
diff --git a/test/intrinsics/gen/ignore/5c9edf.wgsl.expected.wgsl b/test/intrinsics/gen/ignore/5c9edf.wgsl.expected.wgsl
index d078cac..8249e9a 100644
--- a/test/intrinsics/gen/ignore/5c9edf.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/ignore/5c9edf.wgsl.expected.wgsl
@@ -2,24 +2,24 @@
   ignore(arg_0);
   ^^^^^^
 
-[[group(1), binding(0)]] var arg_0 : texture_external;
+@group(1) @binding(0) var arg_0 : texture_external;
 
 fn ignore_5c9edf() {
   ignore(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   ignore_5c9edf();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   ignore_5c9edf();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   ignore_5c9edf();
 }
diff --git a/test/intrinsics/gen/ignore/6698df.wgsl b/test/intrinsics/gen/ignore/6698df.wgsl
index 1952b04..b14856c 100644
--- a/test/intrinsics/gen/ignore/6698df.wgsl
+++ b/test/intrinsics/gen/ignore/6698df.wgsl
@@ -28,18 +28,18 @@
   ignore(1u);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   ignore_6698df();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   ignore_6698df();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   ignore_6698df();
 }
diff --git a/test/intrinsics/gen/ignore/6698df.wgsl.expected.wgsl b/test/intrinsics/gen/ignore/6698df.wgsl.expected.wgsl
index af3f6b5..1754276 100644
--- a/test/intrinsics/gen/ignore/6698df.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/ignore/6698df.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   ignore(1u);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   ignore_6698df();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   ignore_6698df();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   ignore_6698df();
 }
diff --git a/test/intrinsics/gen/ignore/ad88be.wgsl b/test/intrinsics/gen/ignore/ad88be.wgsl
index b957959..3812ea1 100644
--- a/test/intrinsics/gen/ignore/ad88be.wgsl
+++ b/test/intrinsics/gen/ignore/ad88be.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_cube_array;
+@group(1) @binding(0) var arg_0: texture_depth_cube_array;
 
 // fn ignore(texture_depth_cube_array)
 fn ignore_ad88be() {
   ignore(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   ignore_ad88be();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   ignore_ad88be();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   ignore_ad88be();
 }
diff --git a/test/intrinsics/gen/ignore/ad88be.wgsl.expected.wgsl b/test/intrinsics/gen/ignore/ad88be.wgsl.expected.wgsl
index a371726..08fa4ea 100644
--- a/test/intrinsics/gen/ignore/ad88be.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/ignore/ad88be.wgsl.expected.wgsl
@@ -2,24 +2,24 @@
   ignore(arg_0);
   ^^^^^^
 
-[[group(1), binding(0)]] var arg_0 : texture_depth_cube_array;
+@group(1) @binding(0) var arg_0 : texture_depth_cube_array;
 
 fn ignore_ad88be() {
   ignore(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   ignore_ad88be();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   ignore_ad88be();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   ignore_ad88be();
 }
diff --git a/test/intrinsics/gen/ignore/b469af.wgsl b/test/intrinsics/gen/ignore/b469af.wgsl
index 581ebef..a640d8b 100644
--- a/test/intrinsics/gen/ignore/b469af.wgsl
+++ b/test/intrinsics/gen/ignore/b469af.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: sampler_comparison;
+@group(1) @binding(0) var arg_0: sampler_comparison;
 
 // fn ignore(sampler_comparison)
 fn ignore_b469af() {
   ignore(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   ignore_b469af();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   ignore_b469af();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   ignore_b469af();
 }
diff --git a/test/intrinsics/gen/ignore/b469af.wgsl.expected.wgsl b/test/intrinsics/gen/ignore/b469af.wgsl.expected.wgsl
index d2270a8..0c42c5c 100644
--- a/test/intrinsics/gen/ignore/b469af.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/ignore/b469af.wgsl.expected.wgsl
@@ -2,24 +2,24 @@
   ignore(arg_0);
   ^^^^^^
 
-[[group(1), binding(0)]] var arg_0 : sampler_comparison;
+@group(1) @binding(0) var arg_0 : sampler_comparison;
 
 fn ignore_b469af() {
   ignore(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   ignore_b469af();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   ignore_b469af();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   ignore_b469af();
 }
diff --git a/test/intrinsics/gen/ignore/c8a0ee.wgsl b/test/intrinsics/gen/ignore/c8a0ee.wgsl
index 747f59b..773996b 100644
--- a/test/intrinsics/gen/ignore/c8a0ee.wgsl
+++ b/test/intrinsics/gen/ignore/c8a0ee.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_2d_array;
+@group(1) @binding(0) var arg_0: texture_depth_2d_array;
 
 // fn ignore(texture_depth_2d_array)
 fn ignore_c8a0ee() {
   ignore(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   ignore_c8a0ee();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   ignore_c8a0ee();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   ignore_c8a0ee();
 }
diff --git a/test/intrinsics/gen/ignore/c8a0ee.wgsl.expected.wgsl b/test/intrinsics/gen/ignore/c8a0ee.wgsl.expected.wgsl
index abb1ae9..6b3aa11 100644
--- a/test/intrinsics/gen/ignore/c8a0ee.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/ignore/c8a0ee.wgsl.expected.wgsl
@@ -2,24 +2,24 @@
   ignore(arg_0);
   ^^^^^^
 
-[[group(1), binding(0)]] var arg_0 : texture_depth_2d_array;
+@group(1) @binding(0) var arg_0 : texture_depth_2d_array;
 
 fn ignore_c8a0ee() {
   ignore(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   ignore_c8a0ee();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   ignore_c8a0ee();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   ignore_c8a0ee();
 }
diff --git a/test/intrinsics/gen/ignore/d91a2f.wgsl b/test/intrinsics/gen/ignore/d91a2f.wgsl
index 22a8df5..5bda0fb 100644
--- a/test/intrinsics/gen/ignore/d91a2f.wgsl
+++ b/test/intrinsics/gen/ignore/d91a2f.wgsl
@@ -28,18 +28,18 @@
   ignore(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   ignore_d91a2f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   ignore_d91a2f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   ignore_d91a2f();
 }
diff --git a/test/intrinsics/gen/ignore/d91a2f.wgsl.expected.wgsl b/test/intrinsics/gen/ignore/d91a2f.wgsl.expected.wgsl
index d1d3f3e..b877665 100644
--- a/test/intrinsics/gen/ignore/d91a2f.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/ignore/d91a2f.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   ignore(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   ignore_d91a2f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   ignore_d91a2f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   ignore_d91a2f();
 }
diff --git a/test/intrinsics/gen/ignore/e0187b.wgsl b/test/intrinsics/gen/ignore/e0187b.wgsl
index d62957c..0a7b36d 100644
--- a/test/intrinsics/gen/ignore/e0187b.wgsl
+++ b/test/intrinsics/gen/ignore/e0187b.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_2d;
+@group(1) @binding(0) var arg_0: texture_depth_2d;
 
 // fn ignore(texture_depth_2d)
 fn ignore_e0187b() {
   ignore(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   ignore_e0187b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   ignore_e0187b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   ignore_e0187b();
 }
diff --git a/test/intrinsics/gen/ignore/e0187b.wgsl.expected.wgsl b/test/intrinsics/gen/ignore/e0187b.wgsl.expected.wgsl
index aca8c14..0c3eb9d 100644
--- a/test/intrinsics/gen/ignore/e0187b.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/ignore/e0187b.wgsl.expected.wgsl
@@ -2,24 +2,24 @@
   ignore(arg_0);
   ^^^^^^
 
-[[group(1), binding(0)]] var arg_0 : texture_depth_2d;
+@group(1) @binding(0) var arg_0 : texture_depth_2d;
 
 fn ignore_e0187b() {
   ignore(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   ignore_e0187b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   ignore_e0187b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   ignore_e0187b();
 }
diff --git a/test/intrinsics/gen/ignore/f414a6.wgsl b/test/intrinsics/gen/ignore/f414a6.wgsl
index 48b3a9b..a032392 100644
--- a/test/intrinsics/gen/ignore/f414a6.wgsl
+++ b/test/intrinsics/gen/ignore/f414a6.wgsl
@@ -28,18 +28,18 @@
   ignore(bool());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   ignore_f414a6();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   ignore_f414a6();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   ignore_f414a6();
 }
diff --git a/test/intrinsics/gen/ignore/f414a6.wgsl.expected.wgsl b/test/intrinsics/gen/ignore/f414a6.wgsl.expected.wgsl
index 389da66..bf60901 100644
--- a/test/intrinsics/gen/ignore/f414a6.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/ignore/f414a6.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   ignore(bool());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   ignore_f414a6();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   ignore_f414a6();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   ignore_f414a6();
 }
diff --git a/test/intrinsics/gen/inverseSqrt/84407e.wgsl b/test/intrinsics/gen/inverseSqrt/84407e.wgsl
index 39e9b85..f6160f1 100644
--- a/test/intrinsics/gen/inverseSqrt/84407e.wgsl
+++ b/test/intrinsics/gen/inverseSqrt/84407e.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = inverseSqrt(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   inverseSqrt_84407e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   inverseSqrt_84407e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   inverseSqrt_84407e();
 }
diff --git a/test/intrinsics/gen/inverseSqrt/84407e.wgsl.expected.wgsl b/test/intrinsics/gen/inverseSqrt/84407e.wgsl.expected.wgsl
index a8350fc..707e317 100644
--- a/test/intrinsics/gen/inverseSqrt/84407e.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/inverseSqrt/84407e.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = inverseSqrt(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   inverseSqrt_84407e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   inverseSqrt_84407e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   inverseSqrt_84407e();
 }
diff --git a/test/intrinsics/gen/inverseSqrt/8f2bd2.wgsl b/test/intrinsics/gen/inverseSqrt/8f2bd2.wgsl
index 96b1555..e94567e 100644
--- a/test/intrinsics/gen/inverseSqrt/8f2bd2.wgsl
+++ b/test/intrinsics/gen/inverseSqrt/8f2bd2.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = inverseSqrt(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   inverseSqrt_8f2bd2();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   inverseSqrt_8f2bd2();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   inverseSqrt_8f2bd2();
 }
diff --git a/test/intrinsics/gen/inverseSqrt/8f2bd2.wgsl.expected.wgsl b/test/intrinsics/gen/inverseSqrt/8f2bd2.wgsl.expected.wgsl
index 303dfaf..5554030 100644
--- a/test/intrinsics/gen/inverseSqrt/8f2bd2.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/inverseSqrt/8f2bd2.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = inverseSqrt(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   inverseSqrt_8f2bd2();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   inverseSqrt_8f2bd2();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   inverseSqrt_8f2bd2();
 }
diff --git a/test/intrinsics/gen/inverseSqrt/b197b1.wgsl b/test/intrinsics/gen/inverseSqrt/b197b1.wgsl
index 1f24f0f..c189515 100644
--- a/test/intrinsics/gen/inverseSqrt/b197b1.wgsl
+++ b/test/intrinsics/gen/inverseSqrt/b197b1.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = inverseSqrt(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   inverseSqrt_b197b1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   inverseSqrt_b197b1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   inverseSqrt_b197b1();
 }
diff --git a/test/intrinsics/gen/inverseSqrt/b197b1.wgsl.expected.wgsl b/test/intrinsics/gen/inverseSqrt/b197b1.wgsl.expected.wgsl
index 471c231..dd8bd71 100644
--- a/test/intrinsics/gen/inverseSqrt/b197b1.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/inverseSqrt/b197b1.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = inverseSqrt(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   inverseSqrt_b197b1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   inverseSqrt_b197b1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   inverseSqrt_b197b1();
 }
diff --git a/test/intrinsics/gen/inverseSqrt/c22347.wgsl b/test/intrinsics/gen/inverseSqrt/c22347.wgsl
index 0d3f7b0..20e13f2 100644
--- a/test/intrinsics/gen/inverseSqrt/c22347.wgsl
+++ b/test/intrinsics/gen/inverseSqrt/c22347.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = inverseSqrt(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   inverseSqrt_c22347();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   inverseSqrt_c22347();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   inverseSqrt_c22347();
 }
diff --git a/test/intrinsics/gen/inverseSqrt/c22347.wgsl.expected.wgsl b/test/intrinsics/gen/inverseSqrt/c22347.wgsl.expected.wgsl
index 486a611..cc9c1a9 100644
--- a/test/intrinsics/gen/inverseSqrt/c22347.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/inverseSqrt/c22347.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = inverseSqrt(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   inverseSqrt_c22347();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   inverseSqrt_c22347();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   inverseSqrt_c22347();
 }
diff --git a/test/intrinsics/gen/isFinite/34d32b.wgsl b/test/intrinsics/gen/isFinite/34d32b.wgsl
index ea71b39..20d8b32 100644
--- a/test/intrinsics/gen/isFinite/34d32b.wgsl
+++ b/test/intrinsics/gen/isFinite/34d32b.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<bool> = isFinite(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   isFinite_34d32b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   isFinite_34d32b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   isFinite_34d32b();
 }
diff --git a/test/intrinsics/gen/isFinite/34d32b.wgsl.expected.wgsl b/test/intrinsics/gen/isFinite/34d32b.wgsl.expected.wgsl
index e4cfe3f..8b38ba9 100644
--- a/test/intrinsics/gen/isFinite/34d32b.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/isFinite/34d32b.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec2<bool> = isFinite(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   isFinite_34d32b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   isFinite_34d32b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   isFinite_34d32b();
 }
diff --git a/test/intrinsics/gen/isFinite/426f9f.wgsl b/test/intrinsics/gen/isFinite/426f9f.wgsl
index fd56d26..e43f7a6 100644
--- a/test/intrinsics/gen/isFinite/426f9f.wgsl
+++ b/test/intrinsics/gen/isFinite/426f9f.wgsl
@@ -28,18 +28,18 @@
   var res: bool = isFinite(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   isFinite_426f9f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   isFinite_426f9f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   isFinite_426f9f();
 }
diff --git a/test/intrinsics/gen/isFinite/426f9f.wgsl.expected.wgsl b/test/intrinsics/gen/isFinite/426f9f.wgsl.expected.wgsl
index a0d931c..6dd9547 100644
--- a/test/intrinsics/gen/isFinite/426f9f.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/isFinite/426f9f.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : bool = isFinite(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   isFinite_426f9f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   isFinite_426f9f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   isFinite_426f9f();
 }
diff --git a/test/intrinsics/gen/isFinite/8a23ad.wgsl b/test/intrinsics/gen/isFinite/8a23ad.wgsl
index b5611da..24a52c0 100644
--- a/test/intrinsics/gen/isFinite/8a23ad.wgsl
+++ b/test/intrinsics/gen/isFinite/8a23ad.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<bool> = isFinite(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   isFinite_8a23ad();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   isFinite_8a23ad();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   isFinite_8a23ad();
 }
diff --git a/test/intrinsics/gen/isFinite/8a23ad.wgsl.expected.wgsl b/test/intrinsics/gen/isFinite/8a23ad.wgsl.expected.wgsl
index 807cfde..6aa23a5 100644
--- a/test/intrinsics/gen/isFinite/8a23ad.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/isFinite/8a23ad.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec3<bool> = isFinite(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   isFinite_8a23ad();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   isFinite_8a23ad();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   isFinite_8a23ad();
 }
diff --git a/test/intrinsics/gen/isFinite/f31987.wgsl b/test/intrinsics/gen/isFinite/f31987.wgsl
index f7e6e54..0a3f631 100644
--- a/test/intrinsics/gen/isFinite/f31987.wgsl
+++ b/test/intrinsics/gen/isFinite/f31987.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<bool> = isFinite(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   isFinite_f31987();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   isFinite_f31987();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   isFinite_f31987();
 }
diff --git a/test/intrinsics/gen/isFinite/f31987.wgsl.expected.wgsl b/test/intrinsics/gen/isFinite/f31987.wgsl.expected.wgsl
index a1361e1..a5e86db 100644
--- a/test/intrinsics/gen/isFinite/f31987.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/isFinite/f31987.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<bool> = isFinite(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   isFinite_f31987();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   isFinite_f31987();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   isFinite_f31987();
 }
diff --git a/test/intrinsics/gen/isInf/666f2a.wgsl b/test/intrinsics/gen/isInf/666f2a.wgsl
index 7199b08..7550d27 100644
--- a/test/intrinsics/gen/isInf/666f2a.wgsl
+++ b/test/intrinsics/gen/isInf/666f2a.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<bool> = isInf(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   isInf_666f2a();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   isInf_666f2a();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   isInf_666f2a();
 }
diff --git a/test/intrinsics/gen/isInf/666f2a.wgsl.expected.wgsl b/test/intrinsics/gen/isInf/666f2a.wgsl.expected.wgsl
index e5076f5..4fa25cb 100644
--- a/test/intrinsics/gen/isInf/666f2a.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/isInf/666f2a.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec3<bool> = isInf(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   isInf_666f2a();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   isInf_666f2a();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   isInf_666f2a();
 }
diff --git a/test/intrinsics/gen/isInf/7bd98f.wgsl b/test/intrinsics/gen/isInf/7bd98f.wgsl
index e178e40..eaea74d 100644
--- a/test/intrinsics/gen/isInf/7bd98f.wgsl
+++ b/test/intrinsics/gen/isInf/7bd98f.wgsl
@@ -28,18 +28,18 @@
   var res: bool = isInf(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   isInf_7bd98f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   isInf_7bd98f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   isInf_7bd98f();
 }
diff --git a/test/intrinsics/gen/isInf/7bd98f.wgsl.expected.wgsl b/test/intrinsics/gen/isInf/7bd98f.wgsl.expected.wgsl
index 281dc74..82deb30 100644
--- a/test/intrinsics/gen/isInf/7bd98f.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/isInf/7bd98f.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : bool = isInf(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   isInf_7bd98f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   isInf_7bd98f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   isInf_7bd98f();
 }
diff --git a/test/intrinsics/gen/isInf/7e81b5.wgsl b/test/intrinsics/gen/isInf/7e81b5.wgsl
index d6fc7d2..0a96753 100644
--- a/test/intrinsics/gen/isInf/7e81b5.wgsl
+++ b/test/intrinsics/gen/isInf/7e81b5.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<bool> = isInf(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   isInf_7e81b5();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   isInf_7e81b5();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   isInf_7e81b5();
 }
diff --git a/test/intrinsics/gen/isInf/7e81b5.wgsl.expected.wgsl b/test/intrinsics/gen/isInf/7e81b5.wgsl.expected.wgsl
index 24b76af..3fced5a 100644
--- a/test/intrinsics/gen/isInf/7e81b5.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/isInf/7e81b5.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<bool> = isInf(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   isInf_7e81b5();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   isInf_7e81b5();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   isInf_7e81b5();
 }
diff --git a/test/intrinsics/gen/isInf/a46d6f.wgsl b/test/intrinsics/gen/isInf/a46d6f.wgsl
index 9919b5d..5841a41 100644
--- a/test/intrinsics/gen/isInf/a46d6f.wgsl
+++ b/test/intrinsics/gen/isInf/a46d6f.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<bool> = isInf(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   isInf_a46d6f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   isInf_a46d6f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   isInf_a46d6f();
 }
diff --git a/test/intrinsics/gen/isInf/a46d6f.wgsl.expected.wgsl b/test/intrinsics/gen/isInf/a46d6f.wgsl.expected.wgsl
index 26cac94..3fa68d9 100644
--- a/test/intrinsics/gen/isInf/a46d6f.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/isInf/a46d6f.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec2<bool> = isInf(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   isInf_a46d6f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   isInf_a46d6f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   isInf_a46d6f();
 }
diff --git a/test/intrinsics/gen/isNan/1280ab.wgsl b/test/intrinsics/gen/isNan/1280ab.wgsl
index 6601a11..fb5e25c 100644
--- a/test/intrinsics/gen/isNan/1280ab.wgsl
+++ b/test/intrinsics/gen/isNan/1280ab.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<bool> = isNan(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   isNan_1280ab();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   isNan_1280ab();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   isNan_1280ab();
 }
diff --git a/test/intrinsics/gen/isNan/1280ab.wgsl.expected.wgsl b/test/intrinsics/gen/isNan/1280ab.wgsl.expected.wgsl
index c4fd059..ec27bcd 100644
--- a/test/intrinsics/gen/isNan/1280ab.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/isNan/1280ab.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec3<bool> = isNan(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   isNan_1280ab();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   isNan_1280ab();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   isNan_1280ab();
 }
diff --git a/test/intrinsics/gen/isNan/4d280d.wgsl b/test/intrinsics/gen/isNan/4d280d.wgsl
index 058d425..330440d 100644
--- a/test/intrinsics/gen/isNan/4d280d.wgsl
+++ b/test/intrinsics/gen/isNan/4d280d.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<bool> = isNan(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   isNan_4d280d();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   isNan_4d280d();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   isNan_4d280d();
 }
diff --git a/test/intrinsics/gen/isNan/4d280d.wgsl.expected.wgsl b/test/intrinsics/gen/isNan/4d280d.wgsl.expected.wgsl
index 097488c..57ba354 100644
--- a/test/intrinsics/gen/isNan/4d280d.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/isNan/4d280d.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<bool> = isNan(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   isNan_4d280d();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   isNan_4d280d();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   isNan_4d280d();
 }
diff --git a/test/intrinsics/gen/isNan/67ecd3.wgsl b/test/intrinsics/gen/isNan/67ecd3.wgsl
index 7237e05..9b082ec 100644
--- a/test/intrinsics/gen/isNan/67ecd3.wgsl
+++ b/test/intrinsics/gen/isNan/67ecd3.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<bool> = isNan(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   isNan_67ecd3();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   isNan_67ecd3();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   isNan_67ecd3();
 }
diff --git a/test/intrinsics/gen/isNan/67ecd3.wgsl.expected.wgsl b/test/intrinsics/gen/isNan/67ecd3.wgsl.expected.wgsl
index 49b0c8a..2f9573d 100644
--- a/test/intrinsics/gen/isNan/67ecd3.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/isNan/67ecd3.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec2<bool> = isNan(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   isNan_67ecd3();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   isNan_67ecd3();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   isNan_67ecd3();
 }
diff --git a/test/intrinsics/gen/isNan/e4978e.wgsl b/test/intrinsics/gen/isNan/e4978e.wgsl
index 8cf7130..f28a7d1 100644
--- a/test/intrinsics/gen/isNan/e4978e.wgsl
+++ b/test/intrinsics/gen/isNan/e4978e.wgsl
@@ -28,18 +28,18 @@
   var res: bool = isNan(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   isNan_e4978e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   isNan_e4978e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   isNan_e4978e();
 }
diff --git a/test/intrinsics/gen/isNan/e4978e.wgsl.expected.wgsl b/test/intrinsics/gen/isNan/e4978e.wgsl.expected.wgsl
index 12d2aa0..0e27431 100644
--- a/test/intrinsics/gen/isNan/e4978e.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/isNan/e4978e.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : bool = isNan(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   isNan_e4978e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   isNan_e4978e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   isNan_e4978e();
 }
diff --git a/test/intrinsics/gen/isNormal/863dcd.wgsl b/test/intrinsics/gen/isNormal/863dcd.wgsl
index ab0f294..a814ddb 100644
--- a/test/intrinsics/gen/isNormal/863dcd.wgsl
+++ b/test/intrinsics/gen/isNormal/863dcd.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<bool> = isNormal(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   isNormal_863dcd();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   isNormal_863dcd();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   isNormal_863dcd();
 }
diff --git a/test/intrinsics/gen/isNormal/863dcd.wgsl.expected.wgsl b/test/intrinsics/gen/isNormal/863dcd.wgsl.expected.wgsl
index d9ba428..79f0261 100644
--- a/test/intrinsics/gen/isNormal/863dcd.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/isNormal/863dcd.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<bool> = isNormal(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   isNormal_863dcd();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   isNormal_863dcd();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   isNormal_863dcd();
 }
diff --git a/test/intrinsics/gen/isNormal/b00ab1.wgsl b/test/intrinsics/gen/isNormal/b00ab1.wgsl
index 5a67dee..7113dcc 100644
--- a/test/intrinsics/gen/isNormal/b00ab1.wgsl
+++ b/test/intrinsics/gen/isNormal/b00ab1.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<bool> = isNormal(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   isNormal_b00ab1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   isNormal_b00ab1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   isNormal_b00ab1();
 }
diff --git a/test/intrinsics/gen/isNormal/b00ab1.wgsl.expected.wgsl b/test/intrinsics/gen/isNormal/b00ab1.wgsl.expected.wgsl
index b85bc1f..c6b748c 100644
--- a/test/intrinsics/gen/isNormal/b00ab1.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/isNormal/b00ab1.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec2<bool> = isNormal(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   isNormal_b00ab1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   isNormal_b00ab1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   isNormal_b00ab1();
 }
diff --git a/test/intrinsics/gen/isNormal/c286b7.wgsl b/test/intrinsics/gen/isNormal/c286b7.wgsl
index 2f87055..b44cb1f 100644
--- a/test/intrinsics/gen/isNormal/c286b7.wgsl
+++ b/test/intrinsics/gen/isNormal/c286b7.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<bool> = isNormal(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   isNormal_c286b7();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   isNormal_c286b7();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   isNormal_c286b7();
 }
diff --git a/test/intrinsics/gen/isNormal/c286b7.wgsl.expected.wgsl b/test/intrinsics/gen/isNormal/c286b7.wgsl.expected.wgsl
index 4b36826..ca46949 100644
--- a/test/intrinsics/gen/isNormal/c286b7.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/isNormal/c286b7.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec3<bool> = isNormal(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   isNormal_c286b7();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   isNormal_c286b7();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   isNormal_c286b7();
 }
diff --git a/test/intrinsics/gen/isNormal/c6e880.wgsl b/test/intrinsics/gen/isNormal/c6e880.wgsl
index d223b08..a5d8390 100644
--- a/test/intrinsics/gen/isNormal/c6e880.wgsl
+++ b/test/intrinsics/gen/isNormal/c6e880.wgsl
@@ -28,18 +28,18 @@
   var res: bool = isNormal(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   isNormal_c6e880();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   isNormal_c6e880();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   isNormal_c6e880();
 }
diff --git a/test/intrinsics/gen/isNormal/c6e880.wgsl.expected.wgsl b/test/intrinsics/gen/isNormal/c6e880.wgsl.expected.wgsl
index 0061366..1dc6685 100644
--- a/test/intrinsics/gen/isNormal/c6e880.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/isNormal/c6e880.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : bool = isNormal(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   isNormal_c6e880();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   isNormal_c6e880();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   isNormal_c6e880();
 }
diff --git a/test/intrinsics/gen/ldexp/a31cdc.wgsl b/test/intrinsics/gen/ldexp/a31cdc.wgsl
index f5df9a3..2994d5f 100644
--- a/test/intrinsics/gen/ldexp/a31cdc.wgsl
+++ b/test/intrinsics/gen/ldexp/a31cdc.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = ldexp(vec3<f32>(), vec3<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   ldexp_a31cdc();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   ldexp_a31cdc();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   ldexp_a31cdc();
 }
diff --git a/test/intrinsics/gen/ldexp/a31cdc.wgsl.expected.wgsl b/test/intrinsics/gen/ldexp/a31cdc.wgsl.expected.wgsl
index 975e921..357faa1 100644
--- a/test/intrinsics/gen/ldexp/a31cdc.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/ldexp/a31cdc.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = ldexp(vec3<f32>(), vec3<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   ldexp_a31cdc();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   ldexp_a31cdc();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   ldexp_a31cdc();
 }
diff --git a/test/intrinsics/gen/ldexp/abd718.wgsl b/test/intrinsics/gen/ldexp/abd718.wgsl
index 94ae023..5fec178 100644
--- a/test/intrinsics/gen/ldexp/abd718.wgsl
+++ b/test/intrinsics/gen/ldexp/abd718.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = ldexp(vec2<f32>(), vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   ldexp_abd718();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   ldexp_abd718();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   ldexp_abd718();
 }
diff --git a/test/intrinsics/gen/ldexp/abd718.wgsl.expected.wgsl b/test/intrinsics/gen/ldexp/abd718.wgsl.expected.wgsl
index bbd48db..87314bf 100644
--- a/test/intrinsics/gen/ldexp/abd718.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/ldexp/abd718.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = ldexp(vec2<f32>(), vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   ldexp_abd718();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   ldexp_abd718();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   ldexp_abd718();
 }
diff --git a/test/intrinsics/gen/ldexp/cc9cde.wgsl b/test/intrinsics/gen/ldexp/cc9cde.wgsl
index a2f0de9..9f4702e 100644
--- a/test/intrinsics/gen/ldexp/cc9cde.wgsl
+++ b/test/intrinsics/gen/ldexp/cc9cde.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = ldexp(vec4<f32>(), vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   ldexp_cc9cde();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   ldexp_cc9cde();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   ldexp_cc9cde();
 }
diff --git a/test/intrinsics/gen/ldexp/cc9cde.wgsl.expected.wgsl b/test/intrinsics/gen/ldexp/cc9cde.wgsl.expected.wgsl
index b71f7fb..c2fc1ae 100644
--- a/test/intrinsics/gen/ldexp/cc9cde.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/ldexp/cc9cde.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = ldexp(vec4<f32>(), vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   ldexp_cc9cde();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   ldexp_cc9cde();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   ldexp_cc9cde();
 }
diff --git a/test/intrinsics/gen/ldexp/db8b49.wgsl b/test/intrinsics/gen/ldexp/db8b49.wgsl
index 9975cf4..f0f29a1 100644
--- a/test/intrinsics/gen/ldexp/db8b49.wgsl
+++ b/test/intrinsics/gen/ldexp/db8b49.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = ldexp(1.0, 1);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   ldexp_db8b49();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   ldexp_db8b49();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   ldexp_db8b49();
 }
diff --git a/test/intrinsics/gen/ldexp/db8b49.wgsl.expected.wgsl b/test/intrinsics/gen/ldexp/db8b49.wgsl.expected.wgsl
index 7c5e77d..41f84f9 100644
--- a/test/intrinsics/gen/ldexp/db8b49.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/ldexp/db8b49.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = ldexp(1.0, 1);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   ldexp_db8b49();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   ldexp_db8b49();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   ldexp_db8b49();
 }
diff --git a/test/intrinsics/gen/length/056071.wgsl b/test/intrinsics/gen/length/056071.wgsl
index e9ada2c..46dfdfe 100644
--- a/test/intrinsics/gen/length/056071.wgsl
+++ b/test/intrinsics/gen/length/056071.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = length(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   length_056071();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   length_056071();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   length_056071();
 }
diff --git a/test/intrinsics/gen/length/056071.wgsl.expected.wgsl b/test/intrinsics/gen/length/056071.wgsl.expected.wgsl
index 7487a7a..a7dddf9 100644
--- a/test/intrinsics/gen/length/056071.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/length/056071.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = length(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   length_056071();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   length_056071();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   length_056071();
 }
diff --git a/test/intrinsics/gen/length/602a17.wgsl b/test/intrinsics/gen/length/602a17.wgsl
index e39f84e..4458a54 100644
--- a/test/intrinsics/gen/length/602a17.wgsl
+++ b/test/intrinsics/gen/length/602a17.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = length(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   length_602a17();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   length_602a17();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   length_602a17();
 }
diff --git a/test/intrinsics/gen/length/602a17.wgsl.expected.wgsl b/test/intrinsics/gen/length/602a17.wgsl.expected.wgsl
index b00a0e1..dbf073b 100644
--- a/test/intrinsics/gen/length/602a17.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/length/602a17.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = length(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   length_602a17();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   length_602a17();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   length_602a17();
 }
diff --git a/test/intrinsics/gen/length/afde8b.wgsl b/test/intrinsics/gen/length/afde8b.wgsl
index d66503f..0e7faf2 100644
--- a/test/intrinsics/gen/length/afde8b.wgsl
+++ b/test/intrinsics/gen/length/afde8b.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = length(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   length_afde8b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   length_afde8b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   length_afde8b();
 }
diff --git a/test/intrinsics/gen/length/afde8b.wgsl.expected.wgsl b/test/intrinsics/gen/length/afde8b.wgsl.expected.wgsl
index 7bc1249..04d7497 100644
--- a/test/intrinsics/gen/length/afde8b.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/length/afde8b.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = length(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   length_afde8b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   length_afde8b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   length_afde8b();
 }
diff --git a/test/intrinsics/gen/length/becebf.wgsl b/test/intrinsics/gen/length/becebf.wgsl
index 5682959..5029412 100644
--- a/test/intrinsics/gen/length/becebf.wgsl
+++ b/test/intrinsics/gen/length/becebf.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = length(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   length_becebf();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   length_becebf();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   length_becebf();
 }
diff --git a/test/intrinsics/gen/length/becebf.wgsl.expected.wgsl b/test/intrinsics/gen/length/becebf.wgsl.expected.wgsl
index 2dfa36f..2a90f07 100644
--- a/test/intrinsics/gen/length/becebf.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/length/becebf.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = length(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   length_becebf();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   length_becebf();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   length_becebf();
 }
diff --git a/test/intrinsics/gen/log/3da25a.wgsl b/test/intrinsics/gen/log/3da25a.wgsl
index 785a7f4..12e9fe3 100644
--- a/test/intrinsics/gen/log/3da25a.wgsl
+++ b/test/intrinsics/gen/log/3da25a.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = log(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   log_3da25a();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   log_3da25a();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   log_3da25a();
 }
diff --git a/test/intrinsics/gen/log/3da25a.wgsl.expected.wgsl b/test/intrinsics/gen/log/3da25a.wgsl.expected.wgsl
index fd72a7e..2265445 100644
--- a/test/intrinsics/gen/log/3da25a.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/log/3da25a.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = log(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   log_3da25a();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   log_3da25a();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   log_3da25a();
 }
diff --git a/test/intrinsics/gen/log/7114a6.wgsl b/test/intrinsics/gen/log/7114a6.wgsl
index 3d16357..0332f5b 100644
--- a/test/intrinsics/gen/log/7114a6.wgsl
+++ b/test/intrinsics/gen/log/7114a6.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = log(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   log_7114a6();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   log_7114a6();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   log_7114a6();
 }
diff --git a/test/intrinsics/gen/log/7114a6.wgsl.expected.wgsl b/test/intrinsics/gen/log/7114a6.wgsl.expected.wgsl
index 9e282b4..6a688f0 100644
--- a/test/intrinsics/gen/log/7114a6.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/log/7114a6.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = log(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   log_7114a6();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   log_7114a6();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   log_7114a6();
 }
diff --git a/test/intrinsics/gen/log/b2ce28.wgsl b/test/intrinsics/gen/log/b2ce28.wgsl
index a302729..be0a07b 100644
--- a/test/intrinsics/gen/log/b2ce28.wgsl
+++ b/test/intrinsics/gen/log/b2ce28.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = log(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   log_b2ce28();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   log_b2ce28();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   log_b2ce28();
 }
diff --git a/test/intrinsics/gen/log/b2ce28.wgsl.expected.wgsl b/test/intrinsics/gen/log/b2ce28.wgsl.expected.wgsl
index 1167e0a..023eb1b 100644
--- a/test/intrinsics/gen/log/b2ce28.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/log/b2ce28.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = log(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   log_b2ce28();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   log_b2ce28();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   log_b2ce28();
 }
diff --git a/test/intrinsics/gen/log/f4c570.wgsl b/test/intrinsics/gen/log/f4c570.wgsl
index 513e900..e705146 100644
--- a/test/intrinsics/gen/log/f4c570.wgsl
+++ b/test/intrinsics/gen/log/f4c570.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = log(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   log_f4c570();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   log_f4c570();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   log_f4c570();
 }
diff --git a/test/intrinsics/gen/log/f4c570.wgsl.expected.wgsl b/test/intrinsics/gen/log/f4c570.wgsl.expected.wgsl
index 01cb910..9317aad 100644
--- a/test/intrinsics/gen/log/f4c570.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/log/f4c570.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = log(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   log_f4c570();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   log_f4c570();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   log_f4c570();
 }
diff --git a/test/intrinsics/gen/log2/4036ed.wgsl b/test/intrinsics/gen/log2/4036ed.wgsl
index b9e6cda..0932fb4 100644
--- a/test/intrinsics/gen/log2/4036ed.wgsl
+++ b/test/intrinsics/gen/log2/4036ed.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = log2(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   log2_4036ed();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   log2_4036ed();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   log2_4036ed();
 }
diff --git a/test/intrinsics/gen/log2/4036ed.wgsl.expected.wgsl b/test/intrinsics/gen/log2/4036ed.wgsl.expected.wgsl
index ab03ce1..e64775f 100644
--- a/test/intrinsics/gen/log2/4036ed.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/log2/4036ed.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = log2(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   log2_4036ed();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   log2_4036ed();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   log2_4036ed();
 }
diff --git a/test/intrinsics/gen/log2/902988.wgsl b/test/intrinsics/gen/log2/902988.wgsl
index 8d01023..83325a2 100644
--- a/test/intrinsics/gen/log2/902988.wgsl
+++ b/test/intrinsics/gen/log2/902988.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = log2(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   log2_902988();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   log2_902988();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   log2_902988();
 }
diff --git a/test/intrinsics/gen/log2/902988.wgsl.expected.wgsl b/test/intrinsics/gen/log2/902988.wgsl.expected.wgsl
index 9d4277b..345da9e 100644
--- a/test/intrinsics/gen/log2/902988.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/log2/902988.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = log2(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   log2_902988();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   log2_902988();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   log2_902988();
 }
diff --git a/test/intrinsics/gen/log2/adb233.wgsl b/test/intrinsics/gen/log2/adb233.wgsl
index 3270689..f231a4a 100644
--- a/test/intrinsics/gen/log2/adb233.wgsl
+++ b/test/intrinsics/gen/log2/adb233.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = log2(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   log2_adb233();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   log2_adb233();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   log2_adb233();
 }
diff --git a/test/intrinsics/gen/log2/adb233.wgsl.expected.wgsl b/test/intrinsics/gen/log2/adb233.wgsl.expected.wgsl
index e41ac20..89634c2 100644
--- a/test/intrinsics/gen/log2/adb233.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/log2/adb233.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = log2(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   log2_adb233();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   log2_adb233();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   log2_adb233();
 }
diff --git a/test/intrinsics/gen/log2/aea659.wgsl b/test/intrinsics/gen/log2/aea659.wgsl
index 3700f20..d874511 100644
--- a/test/intrinsics/gen/log2/aea659.wgsl
+++ b/test/intrinsics/gen/log2/aea659.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = log2(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   log2_aea659();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   log2_aea659();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   log2_aea659();
 }
diff --git a/test/intrinsics/gen/log2/aea659.wgsl.expected.wgsl b/test/intrinsics/gen/log2/aea659.wgsl.expected.wgsl
index aa490dd..a77648e 100644
--- a/test/intrinsics/gen/log2/aea659.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/log2/aea659.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = log2(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   log2_aea659();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   log2_aea659();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   log2_aea659();
 }
diff --git a/test/intrinsics/gen/max/0c0aae.wgsl b/test/intrinsics/gen/max/0c0aae.wgsl
index 9700838..1dcd5e8 100644
--- a/test/intrinsics/gen/max/0c0aae.wgsl
+++ b/test/intrinsics/gen/max/0c0aae.wgsl
@@ -28,18 +28,18 @@
   var res: u32 = max(1u, 1u);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   max_0c0aae();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   max_0c0aae();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   max_0c0aae();
 }
diff --git a/test/intrinsics/gen/max/0c0aae.wgsl.expected.wgsl b/test/intrinsics/gen/max/0c0aae.wgsl.expected.wgsl
index b463469..a34b9ff 100644
--- a/test/intrinsics/gen/max/0c0aae.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/max/0c0aae.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : u32 = max(1u, 1u);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   max_0c0aae();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   max_0c0aae();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   max_0c0aae();
 }
diff --git a/test/intrinsics/gen/max/25eafe.wgsl b/test/intrinsics/gen/max/25eafe.wgsl
index 4940f1f..238cba1 100644
--- a/test/intrinsics/gen/max/25eafe.wgsl
+++ b/test/intrinsics/gen/max/25eafe.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<i32> = max(vec3<i32>(), vec3<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   max_25eafe();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   max_25eafe();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   max_25eafe();
 }
diff --git a/test/intrinsics/gen/max/25eafe.wgsl.expected.wgsl b/test/intrinsics/gen/max/25eafe.wgsl.expected.wgsl
index 55e740b..7b9f06a 100644
--- a/test/intrinsics/gen/max/25eafe.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/max/25eafe.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<i32> = max(vec3<i32>(), vec3<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   max_25eafe();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   max_25eafe();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   max_25eafe();
 }
diff --git a/test/intrinsics/gen/max/320815.wgsl b/test/intrinsics/gen/max/320815.wgsl
index 1bf7867..e4b11d1 100644
--- a/test/intrinsics/gen/max/320815.wgsl
+++ b/test/intrinsics/gen/max/320815.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<u32> = max(vec2<u32>(), vec2<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   max_320815();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   max_320815();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   max_320815();
 }
diff --git a/test/intrinsics/gen/max/320815.wgsl.expected.wgsl b/test/intrinsics/gen/max/320815.wgsl.expected.wgsl
index 16d126f..04e54a0 100644
--- a/test/intrinsics/gen/max/320815.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/max/320815.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<u32> = max(vec2<u32>(), vec2<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   max_320815();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   max_320815();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   max_320815();
 }
diff --git a/test/intrinsics/gen/max/44a39d.wgsl b/test/intrinsics/gen/max/44a39d.wgsl
index 039fe2f..9af6704 100644
--- a/test/intrinsics/gen/max/44a39d.wgsl
+++ b/test/intrinsics/gen/max/44a39d.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = max(1.0, 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   max_44a39d();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   max_44a39d();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   max_44a39d();
 }
diff --git a/test/intrinsics/gen/max/44a39d.wgsl.expected.wgsl b/test/intrinsics/gen/max/44a39d.wgsl.expected.wgsl
index d39969c..1913b8f 100644
--- a/test/intrinsics/gen/max/44a39d.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/max/44a39d.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = max(1.0, 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   max_44a39d();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   max_44a39d();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   max_44a39d();
 }
diff --git a/test/intrinsics/gen/max/453e04.wgsl b/test/intrinsics/gen/max/453e04.wgsl
index 14eab28..b3813d9 100644
--- a/test/intrinsics/gen/max/453e04.wgsl
+++ b/test/intrinsics/gen/max/453e04.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<u32> = max(vec4<u32>(), vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   max_453e04();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   max_453e04();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   max_453e04();
 }
diff --git a/test/intrinsics/gen/max/453e04.wgsl.expected.wgsl b/test/intrinsics/gen/max/453e04.wgsl.expected.wgsl
index ba0921f..39e7e48 100644
--- a/test/intrinsics/gen/max/453e04.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/max/453e04.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<u32> = max(vec4<u32>(), vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   max_453e04();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   max_453e04();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   max_453e04();
 }
diff --git a/test/intrinsics/gen/max/462050.wgsl b/test/intrinsics/gen/max/462050.wgsl
index b6bc2da..03523b9 100644
--- a/test/intrinsics/gen/max/462050.wgsl
+++ b/test/intrinsics/gen/max/462050.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = max(vec2<f32>(), vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   max_462050();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   max_462050();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   max_462050();
 }
diff --git a/test/intrinsics/gen/max/462050.wgsl.expected.wgsl b/test/intrinsics/gen/max/462050.wgsl.expected.wgsl
index f0f482f..eec4107 100644
--- a/test/intrinsics/gen/max/462050.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/max/462050.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = max(vec2<f32>(), vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   max_462050();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   max_462050();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   max_462050();
 }
diff --git a/test/intrinsics/gen/max/4883ac.wgsl b/test/intrinsics/gen/max/4883ac.wgsl
index 607e45e..a0244ea 100644
--- a/test/intrinsics/gen/max/4883ac.wgsl
+++ b/test/intrinsics/gen/max/4883ac.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = max(vec3<f32>(), vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   max_4883ac();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   max_4883ac();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   max_4883ac();
 }
diff --git a/test/intrinsics/gen/max/4883ac.wgsl.expected.wgsl b/test/intrinsics/gen/max/4883ac.wgsl.expected.wgsl
index 4f4feab..cc37098 100644
--- a/test/intrinsics/gen/max/4883ac.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/max/4883ac.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = max(vec3<f32>(), vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   max_4883ac();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   max_4883ac();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   max_4883ac();
 }
diff --git a/test/intrinsics/gen/max/85e6bc.wgsl b/test/intrinsics/gen/max/85e6bc.wgsl
index ff478ac..5e8f666 100644
--- a/test/intrinsics/gen/max/85e6bc.wgsl
+++ b/test/intrinsics/gen/max/85e6bc.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<i32> = max(vec4<i32>(), vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   max_85e6bc();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   max_85e6bc();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   max_85e6bc();
 }
diff --git a/test/intrinsics/gen/max/85e6bc.wgsl.expected.wgsl b/test/intrinsics/gen/max/85e6bc.wgsl.expected.wgsl
index b3d9371..6f6b39f 100644
--- a/test/intrinsics/gen/max/85e6bc.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/max/85e6bc.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<i32> = max(vec4<i32>(), vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   max_85e6bc();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   max_85e6bc();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   max_85e6bc();
 }
diff --git a/test/intrinsics/gen/max/a93419.wgsl b/test/intrinsics/gen/max/a93419.wgsl
index 60e7ee6..4dc296a 100644
--- a/test/intrinsics/gen/max/a93419.wgsl
+++ b/test/intrinsics/gen/max/a93419.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = max(vec4<f32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   max_a93419();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   max_a93419();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   max_a93419();
 }
diff --git a/test/intrinsics/gen/max/a93419.wgsl.expected.wgsl b/test/intrinsics/gen/max/a93419.wgsl.expected.wgsl
index 9e06421..8c1c938 100644
--- a/test/intrinsics/gen/max/a93419.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/max/a93419.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = max(vec4<f32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   max_a93419();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   max_a93419();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   max_a93419();
 }
diff --git a/test/intrinsics/gen/max/b1b73a.wgsl b/test/intrinsics/gen/max/b1b73a.wgsl
index a05dd2a..17a9808 100644
--- a/test/intrinsics/gen/max/b1b73a.wgsl
+++ b/test/intrinsics/gen/max/b1b73a.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<u32> = max(vec3<u32>(), vec3<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   max_b1b73a();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   max_b1b73a();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   max_b1b73a();
 }
diff --git a/test/intrinsics/gen/max/b1b73a.wgsl.expected.wgsl b/test/intrinsics/gen/max/b1b73a.wgsl.expected.wgsl
index 57ebf45..ffe0dc5 100644
--- a/test/intrinsics/gen/max/b1b73a.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/max/b1b73a.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<u32> = max(vec3<u32>(), vec3<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   max_b1b73a();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   max_b1b73a();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   max_b1b73a();
 }
diff --git a/test/intrinsics/gen/max/ce7c30.wgsl b/test/intrinsics/gen/max/ce7c30.wgsl
index 109638e..167bd6c 100644
--- a/test/intrinsics/gen/max/ce7c30.wgsl
+++ b/test/intrinsics/gen/max/ce7c30.wgsl
@@ -28,18 +28,18 @@
   var res: i32 = max(1, 1);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   max_ce7c30();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   max_ce7c30();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   max_ce7c30();
 }
diff --git a/test/intrinsics/gen/max/ce7c30.wgsl.expected.wgsl b/test/intrinsics/gen/max/ce7c30.wgsl.expected.wgsl
index 62b9142..a9c3618 100644
--- a/test/intrinsics/gen/max/ce7c30.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/max/ce7c30.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : i32 = max(1, 1);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   max_ce7c30();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   max_ce7c30();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   max_ce7c30();
 }
diff --git a/test/intrinsics/gen/max/e8192f.wgsl b/test/intrinsics/gen/max/e8192f.wgsl
index 5f81944..3691990 100644
--- a/test/intrinsics/gen/max/e8192f.wgsl
+++ b/test/intrinsics/gen/max/e8192f.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<i32> = max(vec2<i32>(), vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   max_e8192f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   max_e8192f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   max_e8192f();
 }
diff --git a/test/intrinsics/gen/max/e8192f.wgsl.expected.wgsl b/test/intrinsics/gen/max/e8192f.wgsl.expected.wgsl
index a0f6b1b..08d02f6 100644
--- a/test/intrinsics/gen/max/e8192f.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/max/e8192f.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<i32> = max(vec2<i32>(), vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   max_e8192f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   max_e8192f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   max_e8192f();
 }
diff --git a/test/intrinsics/gen/min/03c7e3.wgsl b/test/intrinsics/gen/min/03c7e3.wgsl
index 266a4e7..ed5cb3d 100644
--- a/test/intrinsics/gen/min/03c7e3.wgsl
+++ b/test/intrinsics/gen/min/03c7e3.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<i32> = min(vec2<i32>(), vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   min_03c7e3();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   min_03c7e3();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   min_03c7e3();
 }
diff --git a/test/intrinsics/gen/min/03c7e3.wgsl.expected.wgsl b/test/intrinsics/gen/min/03c7e3.wgsl.expected.wgsl
index d1d1273..8c0cc93 100644
--- a/test/intrinsics/gen/min/03c7e3.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/min/03c7e3.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<i32> = min(vec2<i32>(), vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   min_03c7e3();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   min_03c7e3();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   min_03c7e3();
 }
diff --git a/test/intrinsics/gen/min/0dc614.wgsl b/test/intrinsics/gen/min/0dc614.wgsl
index 4834aef..976011e 100644
--- a/test/intrinsics/gen/min/0dc614.wgsl
+++ b/test/intrinsics/gen/min/0dc614.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<u32> = min(vec4<u32>(), vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   min_0dc614();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   min_0dc614();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   min_0dc614();
 }
diff --git a/test/intrinsics/gen/min/0dc614.wgsl.expected.wgsl b/test/intrinsics/gen/min/0dc614.wgsl.expected.wgsl
index a9ddda4..9833270 100644
--- a/test/intrinsics/gen/min/0dc614.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/min/0dc614.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<u32> = min(vec4<u32>(), vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   min_0dc614();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   min_0dc614();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   min_0dc614();
 }
diff --git a/test/intrinsics/gen/min/3941e1.wgsl b/test/intrinsics/gen/min/3941e1.wgsl
index 3583504..b45498f 100644
--- a/test/intrinsics/gen/min/3941e1.wgsl
+++ b/test/intrinsics/gen/min/3941e1.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<i32> = min(vec4<i32>(), vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   min_3941e1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   min_3941e1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   min_3941e1();
 }
diff --git a/test/intrinsics/gen/min/3941e1.wgsl.expected.wgsl b/test/intrinsics/gen/min/3941e1.wgsl.expected.wgsl
index 8ea9508..19dd5ee 100644
--- a/test/intrinsics/gen/min/3941e1.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/min/3941e1.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<i32> = min(vec4<i32>(), vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   min_3941e1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   min_3941e1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   min_3941e1();
 }
diff --git a/test/intrinsics/gen/min/46c5d3.wgsl b/test/intrinsics/gen/min/46c5d3.wgsl
index 764435e..b3d8710 100644
--- a/test/intrinsics/gen/min/46c5d3.wgsl
+++ b/test/intrinsics/gen/min/46c5d3.wgsl
@@ -28,18 +28,18 @@
   var res: u32 = min(1u, 1u);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   min_46c5d3();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   min_46c5d3();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   min_46c5d3();
 }
diff --git a/test/intrinsics/gen/min/46c5d3.wgsl.expected.wgsl b/test/intrinsics/gen/min/46c5d3.wgsl.expected.wgsl
index 18b23e5..2beab9a 100644
--- a/test/intrinsics/gen/min/46c5d3.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/min/46c5d3.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : u32 = min(1u, 1u);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   min_46c5d3();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   min_46c5d3();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   min_46c5d3();
 }
diff --git a/test/intrinsics/gen/min/82b28f.wgsl b/test/intrinsics/gen/min/82b28f.wgsl
index 37011d3..01dfafd 100644
--- a/test/intrinsics/gen/min/82b28f.wgsl
+++ b/test/intrinsics/gen/min/82b28f.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<u32> = min(vec2<u32>(), vec2<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   min_82b28f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   min_82b28f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   min_82b28f();
 }
diff --git a/test/intrinsics/gen/min/82b28f.wgsl.expected.wgsl b/test/intrinsics/gen/min/82b28f.wgsl.expected.wgsl
index 7ba2e80..a942532 100644
--- a/test/intrinsics/gen/min/82b28f.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/min/82b28f.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<u32> = min(vec2<u32>(), vec2<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   min_82b28f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   min_82b28f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   min_82b28f();
 }
diff --git a/test/intrinsics/gen/min/93cfc4.wgsl b/test/intrinsics/gen/min/93cfc4.wgsl
index 88c9a51..91bc5af 100644
--- a/test/intrinsics/gen/min/93cfc4.wgsl
+++ b/test/intrinsics/gen/min/93cfc4.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = min(vec3<f32>(), vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   min_93cfc4();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   min_93cfc4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   min_93cfc4();
 }
diff --git a/test/intrinsics/gen/min/93cfc4.wgsl.expected.wgsl b/test/intrinsics/gen/min/93cfc4.wgsl.expected.wgsl
index 0b0cacd..c66aae0 100644
--- a/test/intrinsics/gen/min/93cfc4.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/min/93cfc4.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = min(vec3<f32>(), vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   min_93cfc4();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   min_93cfc4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   min_93cfc4();
 }
diff --git a/test/intrinsics/gen/min/a45171.wgsl b/test/intrinsics/gen/min/a45171.wgsl
index 68aae17..01b49b4 100644
--- a/test/intrinsics/gen/min/a45171.wgsl
+++ b/test/intrinsics/gen/min/a45171.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<i32> = min(vec3<i32>(), vec3<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   min_a45171();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   min_a45171();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   min_a45171();
 }
diff --git a/test/intrinsics/gen/min/a45171.wgsl.expected.wgsl b/test/intrinsics/gen/min/a45171.wgsl.expected.wgsl
index aca6065..ade6f57 100644
--- a/test/intrinsics/gen/min/a45171.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/min/a45171.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<i32> = min(vec3<i32>(), vec3<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   min_a45171();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   min_a45171();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   min_a45171();
 }
diff --git a/test/intrinsics/gen/min/aa28ad.wgsl b/test/intrinsics/gen/min/aa28ad.wgsl
index c197dbf..cd9775f 100644
--- a/test/intrinsics/gen/min/aa28ad.wgsl
+++ b/test/intrinsics/gen/min/aa28ad.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = min(vec2<f32>(), vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   min_aa28ad();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   min_aa28ad();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   min_aa28ad();
 }
diff --git a/test/intrinsics/gen/min/aa28ad.wgsl.expected.wgsl b/test/intrinsics/gen/min/aa28ad.wgsl.expected.wgsl
index 63f7e84..0830734 100644
--- a/test/intrinsics/gen/min/aa28ad.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/min/aa28ad.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = min(vec2<f32>(), vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   min_aa28ad();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   min_aa28ad();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   min_aa28ad();
 }
diff --git a/test/intrinsics/gen/min/af326d.wgsl b/test/intrinsics/gen/min/af326d.wgsl
index 55c9f80..0a1cde9 100644
--- a/test/intrinsics/gen/min/af326d.wgsl
+++ b/test/intrinsics/gen/min/af326d.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = min(1.0, 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   min_af326d();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   min_af326d();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   min_af326d();
 }
diff --git a/test/intrinsics/gen/min/af326d.wgsl.expected.wgsl b/test/intrinsics/gen/min/af326d.wgsl.expected.wgsl
index a5bc8f3..c0500c3 100644
--- a/test/intrinsics/gen/min/af326d.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/min/af326d.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = min(1.0, 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   min_af326d();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   min_af326d();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   min_af326d();
 }
diff --git a/test/intrinsics/gen/min/c70bb7.wgsl b/test/intrinsics/gen/min/c70bb7.wgsl
index 15bf278..20d33ea 100644
--- a/test/intrinsics/gen/min/c70bb7.wgsl
+++ b/test/intrinsics/gen/min/c70bb7.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<u32> = min(vec3<u32>(), vec3<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   min_c70bb7();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   min_c70bb7();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   min_c70bb7();
 }
diff --git a/test/intrinsics/gen/min/c70bb7.wgsl.expected.wgsl b/test/intrinsics/gen/min/c70bb7.wgsl.expected.wgsl
index 642b600..d113cdb 100644
--- a/test/intrinsics/gen/min/c70bb7.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/min/c70bb7.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<u32> = min(vec3<u32>(), vec3<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   min_c70bb7();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   min_c70bb7();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   min_c70bb7();
 }
diff --git a/test/intrinsics/gen/min/c73147.wgsl b/test/intrinsics/gen/min/c73147.wgsl
index 6bf3b77..25b6ce2 100644
--- a/test/intrinsics/gen/min/c73147.wgsl
+++ b/test/intrinsics/gen/min/c73147.wgsl
@@ -28,18 +28,18 @@
   var res: i32 = min(1, 1);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   min_c73147();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   min_c73147();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   min_c73147();
 }
diff --git a/test/intrinsics/gen/min/c73147.wgsl.expected.wgsl b/test/intrinsics/gen/min/c73147.wgsl.expected.wgsl
index 220e922..3221e2e 100644
--- a/test/intrinsics/gen/min/c73147.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/min/c73147.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : i32 = min(1, 1);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   min_c73147();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   min_c73147();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   min_c73147();
 }
diff --git a/test/intrinsics/gen/min/c76fa6.wgsl b/test/intrinsics/gen/min/c76fa6.wgsl
index b8ab82c..367f8f5 100644
--- a/test/intrinsics/gen/min/c76fa6.wgsl
+++ b/test/intrinsics/gen/min/c76fa6.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = min(vec4<f32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   min_c76fa6();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   min_c76fa6();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   min_c76fa6();
 }
diff --git a/test/intrinsics/gen/min/c76fa6.wgsl.expected.wgsl b/test/intrinsics/gen/min/c76fa6.wgsl.expected.wgsl
index 460fcc8..3a01a88 100644
--- a/test/intrinsics/gen/min/c76fa6.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/min/c76fa6.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = min(vec4<f32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   min_c76fa6();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   min_c76fa6();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   min_c76fa6();
 }
diff --git a/test/intrinsics/gen/mix/0c8c33.wgsl b/test/intrinsics/gen/mix/0c8c33.wgsl
index 001d31d..c2ba55d 100644
--- a/test/intrinsics/gen/mix/0c8c33.wgsl
+++ b/test/intrinsics/gen/mix/0c8c33.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = mix(vec3<f32>(), vec3<f32>(), vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_0c8c33();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   mix_0c8c33();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   mix_0c8c33();
 }
diff --git a/test/intrinsics/gen/mix/0c8c33.wgsl.expected.wgsl b/test/intrinsics/gen/mix/0c8c33.wgsl.expected.wgsl
index 26b1f2e..d76f3e3 100644
--- a/test/intrinsics/gen/mix/0c8c33.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/mix/0c8c33.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = mix(vec3<f32>(), vec3<f32>(), vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_0c8c33();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   mix_0c8c33();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   mix_0c8c33();
 }
diff --git a/test/intrinsics/gen/mix/1faeb1.wgsl b/test/intrinsics/gen/mix/1faeb1.wgsl
index 4d43609..948163b 100644
--- a/test/intrinsics/gen/mix/1faeb1.wgsl
+++ b/test/intrinsics/gen/mix/1faeb1.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = mix(vec4<f32>(), vec4<f32>(), 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_1faeb1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   mix_1faeb1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   mix_1faeb1();
 }
diff --git a/test/intrinsics/gen/mix/1faeb1.wgsl.expected.wgsl b/test/intrinsics/gen/mix/1faeb1.wgsl.expected.wgsl
index 81537b5..ffeab6a 100644
--- a/test/intrinsics/gen/mix/1faeb1.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/mix/1faeb1.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = mix(vec4<f32>(), vec4<f32>(), 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_1faeb1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   mix_1faeb1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   mix_1faeb1();
 }
diff --git a/test/intrinsics/gen/mix/2fadab.wgsl b/test/intrinsics/gen/mix/2fadab.wgsl
index e20610b..94551f9 100644
--- a/test/intrinsics/gen/mix/2fadab.wgsl
+++ b/test/intrinsics/gen/mix/2fadab.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = mix(vec2<f32>(), vec2<f32>(), 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_2fadab();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   mix_2fadab();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   mix_2fadab();
 }
diff --git a/test/intrinsics/gen/mix/2fadab.wgsl.expected.wgsl b/test/intrinsics/gen/mix/2fadab.wgsl.expected.wgsl
index bcf0f91..d084ab6 100644
--- a/test/intrinsics/gen/mix/2fadab.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/mix/2fadab.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = mix(vec2<f32>(), vec2<f32>(), 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_2fadab();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   mix_2fadab();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   mix_2fadab();
 }
diff --git a/test/intrinsics/gen/mix/315264.wgsl b/test/intrinsics/gen/mix/315264.wgsl
index 3ccb009..3c8a050 100644
--- a/test/intrinsics/gen/mix/315264.wgsl
+++ b/test/intrinsics/gen/mix/315264.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = mix(vec3<f32>(), vec3<f32>(), 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_315264();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   mix_315264();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   mix_315264();
 }
diff --git a/test/intrinsics/gen/mix/315264.wgsl.expected.wgsl b/test/intrinsics/gen/mix/315264.wgsl.expected.wgsl
index a870423..40fae02 100644
--- a/test/intrinsics/gen/mix/315264.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/mix/315264.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = mix(vec3<f32>(), vec3<f32>(), 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_315264();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   mix_315264();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   mix_315264();
 }
diff --git a/test/intrinsics/gen/mix/4f0b5e.wgsl b/test/intrinsics/gen/mix/4f0b5e.wgsl
index fd14e33..327cd1f 100644
--- a/test/intrinsics/gen/mix/4f0b5e.wgsl
+++ b/test/intrinsics/gen/mix/4f0b5e.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = mix(1.0, 1.0, 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_4f0b5e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   mix_4f0b5e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   mix_4f0b5e();
 }
diff --git a/test/intrinsics/gen/mix/4f0b5e.wgsl.expected.wgsl b/test/intrinsics/gen/mix/4f0b5e.wgsl.expected.wgsl
index 7eb76de..67679c4 100644
--- a/test/intrinsics/gen/mix/4f0b5e.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/mix/4f0b5e.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = mix(1.0, 1.0, 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_4f0b5e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   mix_4f0b5e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   mix_4f0b5e();
 }
diff --git a/test/intrinsics/gen/mix/6f8adc.wgsl b/test/intrinsics/gen/mix/6f8adc.wgsl
index 577a0e9..ed6872f 100644
--- a/test/intrinsics/gen/mix/6f8adc.wgsl
+++ b/test/intrinsics/gen/mix/6f8adc.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = mix(vec2<f32>(), vec2<f32>(), vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_6f8adc();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   mix_6f8adc();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   mix_6f8adc();
 }
diff --git a/test/intrinsics/gen/mix/6f8adc.wgsl.expected.wgsl b/test/intrinsics/gen/mix/6f8adc.wgsl.expected.wgsl
index ccb03a4..2bd55cc 100644
--- a/test/intrinsics/gen/mix/6f8adc.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/mix/6f8adc.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = mix(vec2<f32>(), vec2<f32>(), vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_6f8adc();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   mix_6f8adc();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   mix_6f8adc();
 }
diff --git a/test/intrinsics/gen/mix/c37ede.wgsl b/test/intrinsics/gen/mix/c37ede.wgsl
index a66000c..59185cf 100644
--- a/test/intrinsics/gen/mix/c37ede.wgsl
+++ b/test/intrinsics/gen/mix/c37ede.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = mix(vec4<f32>(), vec4<f32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_c37ede();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   mix_c37ede();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   mix_c37ede();
 }
diff --git a/test/intrinsics/gen/mix/c37ede.wgsl.expected.wgsl b/test/intrinsics/gen/mix/c37ede.wgsl.expected.wgsl
index b77b7b7..4d3d087 100644
--- a/test/intrinsics/gen/mix/c37ede.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/mix/c37ede.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = mix(vec4<f32>(), vec4<f32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_c37ede();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   mix_c37ede();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   mix_c37ede();
 }
diff --git a/test/intrinsics/gen/modf/180fed.wgsl b/test/intrinsics/gen/modf/180fed.wgsl
index a819d16..c9ad660 100644
--- a/test/intrinsics/gen/modf/180fed.wgsl
+++ b/test/intrinsics/gen/modf/180fed.wgsl
@@ -28,18 +28,18 @@
   var res = modf(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   modf_180fed();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   modf_180fed();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   modf_180fed();
 }
diff --git a/test/intrinsics/gen/modf/180fed.wgsl.expected.wgsl b/test/intrinsics/gen/modf/180fed.wgsl.expected.wgsl
index 5bd93a7..3865c22 100644
--- a/test/intrinsics/gen/modf/180fed.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/modf/180fed.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res = modf(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   modf_180fed();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   modf_180fed();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   modf_180fed();
 }
diff --git a/test/intrinsics/gen/modf/9b75f7.wgsl b/test/intrinsics/gen/modf/9b75f7.wgsl
index 1f340bc..982a75c 100644
--- a/test/intrinsics/gen/modf/9b75f7.wgsl
+++ b/test/intrinsics/gen/modf/9b75f7.wgsl
@@ -28,18 +28,18 @@
   var res = modf(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   modf_9b75f7();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   modf_9b75f7();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   modf_9b75f7();
 }
diff --git a/test/intrinsics/gen/modf/9b75f7.wgsl.expected.wgsl b/test/intrinsics/gen/modf/9b75f7.wgsl.expected.wgsl
index 3b39732..90eaf3a 100644
--- a/test/intrinsics/gen/modf/9b75f7.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/modf/9b75f7.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res = modf(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   modf_9b75f7();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   modf_9b75f7();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   modf_9b75f7();
 }
diff --git a/test/intrinsics/gen/modf/ec2dbc.wgsl b/test/intrinsics/gen/modf/ec2dbc.wgsl
index 7483d40..8de77ad 100644
--- a/test/intrinsics/gen/modf/ec2dbc.wgsl
+++ b/test/intrinsics/gen/modf/ec2dbc.wgsl
@@ -28,18 +28,18 @@
   var res = modf(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   modf_ec2dbc();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   modf_ec2dbc();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   modf_ec2dbc();
 }
diff --git a/test/intrinsics/gen/modf/ec2dbc.wgsl.expected.wgsl b/test/intrinsics/gen/modf/ec2dbc.wgsl.expected.wgsl
index 22848f0..6c3380d 100644
--- a/test/intrinsics/gen/modf/ec2dbc.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/modf/ec2dbc.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res = modf(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   modf_ec2dbc();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   modf_ec2dbc();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   modf_ec2dbc();
 }
diff --git a/test/intrinsics/gen/modf/f5f20d.wgsl b/test/intrinsics/gen/modf/f5f20d.wgsl
index 4088e06..0a0dcf5 100644
--- a/test/intrinsics/gen/modf/f5f20d.wgsl
+++ b/test/intrinsics/gen/modf/f5f20d.wgsl
@@ -28,18 +28,18 @@
   var res = modf(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   modf_f5f20d();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   modf_f5f20d();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   modf_f5f20d();
 }
diff --git a/test/intrinsics/gen/modf/f5f20d.wgsl.expected.wgsl b/test/intrinsics/gen/modf/f5f20d.wgsl.expected.wgsl
index ad5bd3d..8dea55c 100644
--- a/test/intrinsics/gen/modf/f5f20d.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/modf/f5f20d.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res = modf(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   modf_f5f20d();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   modf_f5f20d();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   modf_f5f20d();
 }
diff --git a/test/intrinsics/gen/normalize/64d8c0.wgsl b/test/intrinsics/gen/normalize/64d8c0.wgsl
index 1f77f33..2109b61 100644
--- a/test/intrinsics/gen/normalize/64d8c0.wgsl
+++ b/test/intrinsics/gen/normalize/64d8c0.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = normalize(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   normalize_64d8c0();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   normalize_64d8c0();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   normalize_64d8c0();
 }
diff --git a/test/intrinsics/gen/normalize/64d8c0.wgsl.expected.wgsl b/test/intrinsics/gen/normalize/64d8c0.wgsl.expected.wgsl
index 0ea9def..57444c8 100644
--- a/test/intrinsics/gen/normalize/64d8c0.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/normalize/64d8c0.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = normalize(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   normalize_64d8c0();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   normalize_64d8c0();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   normalize_64d8c0();
 }
diff --git a/test/intrinsics/gen/normalize/9a0aab.wgsl b/test/intrinsics/gen/normalize/9a0aab.wgsl
index 8786048..12bf4ac 100644
--- a/test/intrinsics/gen/normalize/9a0aab.wgsl
+++ b/test/intrinsics/gen/normalize/9a0aab.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = normalize(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   normalize_9a0aab();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   normalize_9a0aab();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   normalize_9a0aab();
 }
diff --git a/test/intrinsics/gen/normalize/9a0aab.wgsl.expected.wgsl b/test/intrinsics/gen/normalize/9a0aab.wgsl.expected.wgsl
index 77bca7f..1b3e019 100644
--- a/test/intrinsics/gen/normalize/9a0aab.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/normalize/9a0aab.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = normalize(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   normalize_9a0aab();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   normalize_9a0aab();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   normalize_9a0aab();
 }
diff --git a/test/intrinsics/gen/normalize/fc2ef1.wgsl b/test/intrinsics/gen/normalize/fc2ef1.wgsl
index 2c41820..0c11b89 100644
--- a/test/intrinsics/gen/normalize/fc2ef1.wgsl
+++ b/test/intrinsics/gen/normalize/fc2ef1.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = normalize(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   normalize_fc2ef1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   normalize_fc2ef1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   normalize_fc2ef1();
 }
diff --git a/test/intrinsics/gen/normalize/fc2ef1.wgsl.expected.wgsl b/test/intrinsics/gen/normalize/fc2ef1.wgsl.expected.wgsl
index 5dfa161..b92ea5f 100644
--- a/test/intrinsics/gen/normalize/fc2ef1.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/normalize/fc2ef1.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = normalize(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   normalize_fc2ef1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   normalize_fc2ef1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   normalize_fc2ef1();
 }
diff --git a/test/intrinsics/gen/pack2x16float/0e97b3.wgsl b/test/intrinsics/gen/pack2x16float/0e97b3.wgsl
index b46c8bc..ae2610c 100644
--- a/test/intrinsics/gen/pack2x16float/0e97b3.wgsl
+++ b/test/intrinsics/gen/pack2x16float/0e97b3.wgsl
@@ -28,18 +28,18 @@
   var res: u32 = pack2x16float(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   pack2x16float_0e97b3();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   pack2x16float_0e97b3();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   pack2x16float_0e97b3();
 }
diff --git a/test/intrinsics/gen/pack2x16float/0e97b3.wgsl.expected.wgsl b/test/intrinsics/gen/pack2x16float/0e97b3.wgsl.expected.wgsl
index 6dfa69a..714304f 100644
--- a/test/intrinsics/gen/pack2x16float/0e97b3.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/pack2x16float/0e97b3.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : u32 = pack2x16float(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   pack2x16float_0e97b3();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   pack2x16float_0e97b3();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   pack2x16float_0e97b3();
 }
diff --git a/test/intrinsics/gen/pack2x16snorm/6c169b.wgsl b/test/intrinsics/gen/pack2x16snorm/6c169b.wgsl
index 859d77a..7d0aeb3 100644
--- a/test/intrinsics/gen/pack2x16snorm/6c169b.wgsl
+++ b/test/intrinsics/gen/pack2x16snorm/6c169b.wgsl
@@ -28,18 +28,18 @@
   var res: u32 = pack2x16snorm(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   pack2x16snorm_6c169b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   pack2x16snorm_6c169b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   pack2x16snorm_6c169b();
 }
diff --git a/test/intrinsics/gen/pack2x16snorm/6c169b.wgsl.expected.wgsl b/test/intrinsics/gen/pack2x16snorm/6c169b.wgsl.expected.wgsl
index cbcc61d..9ccbc2f 100644
--- a/test/intrinsics/gen/pack2x16snorm/6c169b.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/pack2x16snorm/6c169b.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : u32 = pack2x16snorm(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   pack2x16snorm_6c169b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   pack2x16snorm_6c169b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   pack2x16snorm_6c169b();
 }
diff --git a/test/intrinsics/gen/pack2x16unorm/0f08e4.wgsl b/test/intrinsics/gen/pack2x16unorm/0f08e4.wgsl
index 1c7cb38..022aaa6 100644
--- a/test/intrinsics/gen/pack2x16unorm/0f08e4.wgsl
+++ b/test/intrinsics/gen/pack2x16unorm/0f08e4.wgsl
@@ -28,18 +28,18 @@
   var res: u32 = pack2x16unorm(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   pack2x16unorm_0f08e4();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   pack2x16unorm_0f08e4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   pack2x16unorm_0f08e4();
 }
diff --git a/test/intrinsics/gen/pack2x16unorm/0f08e4.wgsl.expected.wgsl b/test/intrinsics/gen/pack2x16unorm/0f08e4.wgsl.expected.wgsl
index d731728..d523070 100644
--- a/test/intrinsics/gen/pack2x16unorm/0f08e4.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/pack2x16unorm/0f08e4.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : u32 = pack2x16unorm(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   pack2x16unorm_0f08e4();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   pack2x16unorm_0f08e4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   pack2x16unorm_0f08e4();
 }
diff --git a/test/intrinsics/gen/pack4x8snorm/4d22e7.wgsl b/test/intrinsics/gen/pack4x8snorm/4d22e7.wgsl
index f1d36e8..6495f5e 100644
--- a/test/intrinsics/gen/pack4x8snorm/4d22e7.wgsl
+++ b/test/intrinsics/gen/pack4x8snorm/4d22e7.wgsl
@@ -28,18 +28,18 @@
   var res: u32 = pack4x8snorm(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   pack4x8snorm_4d22e7();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   pack4x8snorm_4d22e7();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   pack4x8snorm_4d22e7();
 }
diff --git a/test/intrinsics/gen/pack4x8snorm/4d22e7.wgsl.expected.wgsl b/test/intrinsics/gen/pack4x8snorm/4d22e7.wgsl.expected.wgsl
index 201c693..53657e0 100644
--- a/test/intrinsics/gen/pack4x8snorm/4d22e7.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/pack4x8snorm/4d22e7.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : u32 = pack4x8snorm(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   pack4x8snorm_4d22e7();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   pack4x8snorm_4d22e7();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   pack4x8snorm_4d22e7();
 }
diff --git a/test/intrinsics/gen/pack4x8unorm/95c456.wgsl b/test/intrinsics/gen/pack4x8unorm/95c456.wgsl
index 8ccefca..d76e075 100644
--- a/test/intrinsics/gen/pack4x8unorm/95c456.wgsl
+++ b/test/intrinsics/gen/pack4x8unorm/95c456.wgsl
@@ -28,18 +28,18 @@
   var res: u32 = pack4x8unorm(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   pack4x8unorm_95c456();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   pack4x8unorm_95c456();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   pack4x8unorm_95c456();
 }
diff --git a/test/intrinsics/gen/pack4x8unorm/95c456.wgsl.expected.wgsl b/test/intrinsics/gen/pack4x8unorm/95c456.wgsl.expected.wgsl
index f734559..55aedf3 100644
--- a/test/intrinsics/gen/pack4x8unorm/95c456.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/pack4x8unorm/95c456.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : u32 = pack4x8unorm(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   pack4x8unorm_95c456();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   pack4x8unorm_95c456();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   pack4x8unorm_95c456();
 }
diff --git a/test/intrinsics/gen/pow/04a908.wgsl b/test/intrinsics/gen/pow/04a908.wgsl
index a0fb92e..cc17d35 100644
--- a/test/intrinsics/gen/pow/04a908.wgsl
+++ b/test/intrinsics/gen/pow/04a908.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = pow(vec4<f32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   pow_04a908();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   pow_04a908();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   pow_04a908();
 }
diff --git a/test/intrinsics/gen/pow/04a908.wgsl.expected.wgsl b/test/intrinsics/gen/pow/04a908.wgsl.expected.wgsl
index 55b882d..395fe26 100644
--- a/test/intrinsics/gen/pow/04a908.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/pow/04a908.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = pow(vec4<f32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   pow_04a908();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   pow_04a908();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   pow_04a908();
 }
diff --git a/test/intrinsics/gen/pow/46e029.wgsl b/test/intrinsics/gen/pow/46e029.wgsl
index 87c4746..7366f03 100644
--- a/test/intrinsics/gen/pow/46e029.wgsl
+++ b/test/intrinsics/gen/pow/46e029.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = pow(1.0, 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   pow_46e029();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   pow_46e029();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   pow_46e029();
 }
diff --git a/test/intrinsics/gen/pow/46e029.wgsl.expected.wgsl b/test/intrinsics/gen/pow/46e029.wgsl.expected.wgsl
index 49a5573..1670720 100644
--- a/test/intrinsics/gen/pow/46e029.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/pow/46e029.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = pow(1.0, 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   pow_46e029();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   pow_46e029();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   pow_46e029();
 }
diff --git a/test/intrinsics/gen/pow/4a46c9.wgsl b/test/intrinsics/gen/pow/4a46c9.wgsl
index c0addcd..c6e5af0 100644
--- a/test/intrinsics/gen/pow/4a46c9.wgsl
+++ b/test/intrinsics/gen/pow/4a46c9.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = pow(vec3<f32>(), vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   pow_4a46c9();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   pow_4a46c9();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   pow_4a46c9();
 }
diff --git a/test/intrinsics/gen/pow/4a46c9.wgsl.expected.wgsl b/test/intrinsics/gen/pow/4a46c9.wgsl.expected.wgsl
index 8000f56..4a6f3f9 100644
--- a/test/intrinsics/gen/pow/4a46c9.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/pow/4a46c9.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = pow(vec3<f32>(), vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   pow_4a46c9();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   pow_4a46c9();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   pow_4a46c9();
 }
diff --git a/test/intrinsics/gen/pow/e60ea5.wgsl b/test/intrinsics/gen/pow/e60ea5.wgsl
index 72ee0cf..e2080cb 100644
--- a/test/intrinsics/gen/pow/e60ea5.wgsl
+++ b/test/intrinsics/gen/pow/e60ea5.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = pow(vec2<f32>(), vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   pow_e60ea5();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   pow_e60ea5();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   pow_e60ea5();
 }
diff --git a/test/intrinsics/gen/pow/e60ea5.wgsl.expected.wgsl b/test/intrinsics/gen/pow/e60ea5.wgsl.expected.wgsl
index 3885336..0c6432e 100644
--- a/test/intrinsics/gen/pow/e60ea5.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/pow/e60ea5.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = pow(vec2<f32>(), vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   pow_e60ea5();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   pow_e60ea5();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   pow_e60ea5();
 }
diff --git a/test/intrinsics/gen/radians/09b7fc.wgsl b/test/intrinsics/gen/radians/09b7fc.wgsl
index e3e70e6..e397d3a 100644
--- a/test/intrinsics/gen/radians/09b7fc.wgsl
+++ b/test/intrinsics/gen/radians/09b7fc.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = radians(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   radians_09b7fc();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   radians_09b7fc();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   radians_09b7fc();
 }
diff --git a/test/intrinsics/gen/radians/09b7fc.wgsl.expected.wgsl b/test/intrinsics/gen/radians/09b7fc.wgsl.expected.wgsl
index 4b354c0..e8efa0e 100644
--- a/test/intrinsics/gen/radians/09b7fc.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/radians/09b7fc.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = radians(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   radians_09b7fc();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   radians_09b7fc();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   radians_09b7fc();
 }
diff --git a/test/intrinsics/gen/radians/61687a.wgsl b/test/intrinsics/gen/radians/61687a.wgsl
index 81db7ee..9ff8560 100644
--- a/test/intrinsics/gen/radians/61687a.wgsl
+++ b/test/intrinsics/gen/radians/61687a.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = radians(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   radians_61687a();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   radians_61687a();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   radians_61687a();
 }
diff --git a/test/intrinsics/gen/radians/61687a.wgsl.expected.wgsl b/test/intrinsics/gen/radians/61687a.wgsl.expected.wgsl
index 830d0d6..310425f 100644
--- a/test/intrinsics/gen/radians/61687a.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/radians/61687a.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = radians(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   radians_61687a();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   radians_61687a();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   radians_61687a();
 }
diff --git a/test/intrinsics/gen/radians/6b0ff2.wgsl b/test/intrinsics/gen/radians/6b0ff2.wgsl
index fab9916..8ceaeb2 100644
--- a/test/intrinsics/gen/radians/6b0ff2.wgsl
+++ b/test/intrinsics/gen/radians/6b0ff2.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = radians(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   radians_6b0ff2();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   radians_6b0ff2();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   radians_6b0ff2();
 }
diff --git a/test/intrinsics/gen/radians/6b0ff2.wgsl.expected.wgsl b/test/intrinsics/gen/radians/6b0ff2.wgsl.expected.wgsl
index 1c1ac6b..05a6fb5 100644
--- a/test/intrinsics/gen/radians/6b0ff2.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/radians/6b0ff2.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = radians(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   radians_6b0ff2();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   radians_6b0ff2();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   radians_6b0ff2();
 }
diff --git a/test/intrinsics/gen/radians/f96258.wgsl b/test/intrinsics/gen/radians/f96258.wgsl
index 4c48ae3..bca54a5 100644
--- a/test/intrinsics/gen/radians/f96258.wgsl
+++ b/test/intrinsics/gen/radians/f96258.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = radians(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   radians_f96258();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   radians_f96258();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   radians_f96258();
 }
diff --git a/test/intrinsics/gen/radians/f96258.wgsl.expected.wgsl b/test/intrinsics/gen/radians/f96258.wgsl.expected.wgsl
index 9a14173..c38fe31 100644
--- a/test/intrinsics/gen/radians/f96258.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/radians/f96258.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = radians(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   radians_f96258();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   radians_f96258();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   radians_f96258();
 }
diff --git a/test/intrinsics/gen/reflect/05357e.wgsl b/test/intrinsics/gen/reflect/05357e.wgsl
index 928e3df..97aaac7 100644
--- a/test/intrinsics/gen/reflect/05357e.wgsl
+++ b/test/intrinsics/gen/reflect/05357e.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = reflect(vec4<f32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   reflect_05357e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   reflect_05357e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   reflect_05357e();
 }
diff --git a/test/intrinsics/gen/reflect/05357e.wgsl.expected.wgsl b/test/intrinsics/gen/reflect/05357e.wgsl.expected.wgsl
index 5e4b47d..ba4f95a 100644
--- a/test/intrinsics/gen/reflect/05357e.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/reflect/05357e.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = reflect(vec4<f32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   reflect_05357e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   reflect_05357e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   reflect_05357e();
 }
diff --git a/test/intrinsics/gen/reflect/b61e10.wgsl b/test/intrinsics/gen/reflect/b61e10.wgsl
index 441e9a7..124022b 100644
--- a/test/intrinsics/gen/reflect/b61e10.wgsl
+++ b/test/intrinsics/gen/reflect/b61e10.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = reflect(vec2<f32>(), vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   reflect_b61e10();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   reflect_b61e10();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   reflect_b61e10();
 }
diff --git a/test/intrinsics/gen/reflect/b61e10.wgsl.expected.wgsl b/test/intrinsics/gen/reflect/b61e10.wgsl.expected.wgsl
index 6cd6d58..330eead 100644
--- a/test/intrinsics/gen/reflect/b61e10.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/reflect/b61e10.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = reflect(vec2<f32>(), vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   reflect_b61e10();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   reflect_b61e10();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   reflect_b61e10();
 }
diff --git a/test/intrinsics/gen/reflect/f47fdb.wgsl b/test/intrinsics/gen/reflect/f47fdb.wgsl
index ee08672..3048fe0 100644
--- a/test/intrinsics/gen/reflect/f47fdb.wgsl
+++ b/test/intrinsics/gen/reflect/f47fdb.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = reflect(vec3<f32>(), vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   reflect_f47fdb();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   reflect_f47fdb();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   reflect_f47fdb();
 }
diff --git a/test/intrinsics/gen/reflect/f47fdb.wgsl.expected.wgsl b/test/intrinsics/gen/reflect/f47fdb.wgsl.expected.wgsl
index 916347c..d66212f 100644
--- a/test/intrinsics/gen/reflect/f47fdb.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/reflect/f47fdb.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = reflect(vec3<f32>(), vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   reflect_f47fdb();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   reflect_f47fdb();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   reflect_f47fdb();
 }
diff --git a/test/intrinsics/gen/refract/7e02e6.wgsl b/test/intrinsics/gen/refract/7e02e6.wgsl
index 677b01b..ff46411 100644
--- a/test/intrinsics/gen/refract/7e02e6.wgsl
+++ b/test/intrinsics/gen/refract/7e02e6.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = refract(vec4<f32>(), vec4<f32>(), 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   refract_7e02e6();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   refract_7e02e6();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   refract_7e02e6();
 }
diff --git a/test/intrinsics/gen/refract/7e02e6.wgsl.expected.wgsl b/test/intrinsics/gen/refract/7e02e6.wgsl.expected.wgsl
index f55545f..3950912 100644
--- a/test/intrinsics/gen/refract/7e02e6.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/refract/7e02e6.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = refract(vec4<f32>(), vec4<f32>(), 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   refract_7e02e6();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   refract_7e02e6();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   refract_7e02e6();
 }
diff --git a/test/intrinsics/gen/refract/cbc1d2.wgsl b/test/intrinsics/gen/refract/cbc1d2.wgsl
index 5ef26d7..40c0531 100644
--- a/test/intrinsics/gen/refract/cbc1d2.wgsl
+++ b/test/intrinsics/gen/refract/cbc1d2.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = refract(vec3<f32>(), vec3<f32>(), 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   refract_cbc1d2();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   refract_cbc1d2();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   refract_cbc1d2();
 }
diff --git a/test/intrinsics/gen/refract/cbc1d2.wgsl.expected.wgsl b/test/intrinsics/gen/refract/cbc1d2.wgsl.expected.wgsl
index d26c8d1..535c279 100644
--- a/test/intrinsics/gen/refract/cbc1d2.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/refract/cbc1d2.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = refract(vec3<f32>(), vec3<f32>(), 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   refract_cbc1d2();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   refract_cbc1d2();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   refract_cbc1d2();
 }
diff --git a/test/intrinsics/gen/refract/cd905f.wgsl b/test/intrinsics/gen/refract/cd905f.wgsl
index 4c38ddf..9c9e3fd 100644
--- a/test/intrinsics/gen/refract/cd905f.wgsl
+++ b/test/intrinsics/gen/refract/cd905f.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = refract(vec2<f32>(), vec2<f32>(), 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   refract_cd905f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   refract_cd905f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   refract_cd905f();
 }
diff --git a/test/intrinsics/gen/refract/cd905f.wgsl.expected.wgsl b/test/intrinsics/gen/refract/cd905f.wgsl.expected.wgsl
index de43d99..485ab60 100644
--- a/test/intrinsics/gen/refract/cd905f.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/refract/cd905f.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = refract(vec2<f32>(), vec2<f32>(), 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   refract_cd905f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   refract_cd905f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   refract_cd905f();
 }
diff --git a/test/intrinsics/gen/reverseBits/222177.wgsl b/test/intrinsics/gen/reverseBits/222177.wgsl
index ac1aef1..bdbba4a 100644
--- a/test/intrinsics/gen/reverseBits/222177.wgsl
+++ b/test/intrinsics/gen/reverseBits/222177.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<i32> = reverseBits(vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_222177();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   reverseBits_222177();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   reverseBits_222177();
 }
diff --git a/test/intrinsics/gen/reverseBits/222177.wgsl.expected.wgsl b/test/intrinsics/gen/reverseBits/222177.wgsl.expected.wgsl
index 5e8b89a..cd37769 100644
--- a/test/intrinsics/gen/reverseBits/222177.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/reverseBits/222177.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<i32> = reverseBits(vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_222177();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   reverseBits_222177();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   reverseBits_222177();
 }
diff --git a/test/intrinsics/gen/reverseBits/35fea9.wgsl b/test/intrinsics/gen/reverseBits/35fea9.wgsl
index e8c79b1..319f6d2 100644
--- a/test/intrinsics/gen/reverseBits/35fea9.wgsl
+++ b/test/intrinsics/gen/reverseBits/35fea9.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<u32> = reverseBits(vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_35fea9();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   reverseBits_35fea9();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   reverseBits_35fea9();
 }
diff --git a/test/intrinsics/gen/reverseBits/35fea9.wgsl.expected.wgsl b/test/intrinsics/gen/reverseBits/35fea9.wgsl.expected.wgsl
index 6bcd42b..6fea80d 100644
--- a/test/intrinsics/gen/reverseBits/35fea9.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/reverseBits/35fea9.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<u32> = reverseBits(vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_35fea9();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   reverseBits_35fea9();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   reverseBits_35fea9();
 }
diff --git a/test/intrinsics/gen/reverseBits/4dbd6f.wgsl b/test/intrinsics/gen/reverseBits/4dbd6f.wgsl
index f2fea01..09ab61f 100644
--- a/test/intrinsics/gen/reverseBits/4dbd6f.wgsl
+++ b/test/intrinsics/gen/reverseBits/4dbd6f.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<i32> = reverseBits(vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_4dbd6f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   reverseBits_4dbd6f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   reverseBits_4dbd6f();
 }
diff --git a/test/intrinsics/gen/reverseBits/4dbd6f.wgsl.expected.wgsl b/test/intrinsics/gen/reverseBits/4dbd6f.wgsl.expected.wgsl
index a07bf4d..2e6d0b2 100644
--- a/test/intrinsics/gen/reverseBits/4dbd6f.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/reverseBits/4dbd6f.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<i32> = reverseBits(vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_4dbd6f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   reverseBits_4dbd6f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   reverseBits_4dbd6f();
 }
diff --git a/test/intrinsics/gen/reverseBits/7c4269.wgsl b/test/intrinsics/gen/reverseBits/7c4269.wgsl
index 423e9d9..6be3409 100644
--- a/test/intrinsics/gen/reverseBits/7c4269.wgsl
+++ b/test/intrinsics/gen/reverseBits/7c4269.wgsl
@@ -28,18 +28,18 @@
   var res: i32 = reverseBits(1);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_7c4269();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   reverseBits_7c4269();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   reverseBits_7c4269();
 }
diff --git a/test/intrinsics/gen/reverseBits/7c4269.wgsl.expected.wgsl b/test/intrinsics/gen/reverseBits/7c4269.wgsl.expected.wgsl
index 8bf4d05..17f9950 100644
--- a/test/intrinsics/gen/reverseBits/7c4269.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/reverseBits/7c4269.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : i32 = reverseBits(1);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_7c4269();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   reverseBits_7c4269();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   reverseBits_7c4269();
 }
diff --git a/test/intrinsics/gen/reverseBits/a6ccd4.wgsl b/test/intrinsics/gen/reverseBits/a6ccd4.wgsl
index e973fe2..3559904 100644
--- a/test/intrinsics/gen/reverseBits/a6ccd4.wgsl
+++ b/test/intrinsics/gen/reverseBits/a6ccd4.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<u32> = reverseBits(vec3<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_a6ccd4();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   reverseBits_a6ccd4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   reverseBits_a6ccd4();
 }
diff --git a/test/intrinsics/gen/reverseBits/a6ccd4.wgsl.expected.wgsl b/test/intrinsics/gen/reverseBits/a6ccd4.wgsl.expected.wgsl
index abcdac1..713d9c7 100644
--- a/test/intrinsics/gen/reverseBits/a6ccd4.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/reverseBits/a6ccd4.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<u32> = reverseBits(vec3<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_a6ccd4();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   reverseBits_a6ccd4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   reverseBits_a6ccd4();
 }
diff --git a/test/intrinsics/gen/reverseBits/c21bc1.wgsl b/test/intrinsics/gen/reverseBits/c21bc1.wgsl
index 36367af..985e64a 100644
--- a/test/intrinsics/gen/reverseBits/c21bc1.wgsl
+++ b/test/intrinsics/gen/reverseBits/c21bc1.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<i32> = reverseBits(vec3<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_c21bc1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   reverseBits_c21bc1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   reverseBits_c21bc1();
 }
diff --git a/test/intrinsics/gen/reverseBits/c21bc1.wgsl.expected.wgsl b/test/intrinsics/gen/reverseBits/c21bc1.wgsl.expected.wgsl
index 971a3b0..6ad70ae 100644
--- a/test/intrinsics/gen/reverseBits/c21bc1.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/reverseBits/c21bc1.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<i32> = reverseBits(vec3<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_c21bc1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   reverseBits_c21bc1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   reverseBits_c21bc1();
 }
diff --git a/test/intrinsics/gen/reverseBits/e1f4c1.wgsl b/test/intrinsics/gen/reverseBits/e1f4c1.wgsl
index 406684b..d186157 100644
--- a/test/intrinsics/gen/reverseBits/e1f4c1.wgsl
+++ b/test/intrinsics/gen/reverseBits/e1f4c1.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<u32> = reverseBits(vec2<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_e1f4c1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   reverseBits_e1f4c1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   reverseBits_e1f4c1();
 }
diff --git a/test/intrinsics/gen/reverseBits/e1f4c1.wgsl.expected.wgsl b/test/intrinsics/gen/reverseBits/e1f4c1.wgsl.expected.wgsl
index 6860421..dc01269 100644
--- a/test/intrinsics/gen/reverseBits/e1f4c1.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/reverseBits/e1f4c1.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<u32> = reverseBits(vec2<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_e1f4c1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   reverseBits_e1f4c1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   reverseBits_e1f4c1();
 }
diff --git a/test/intrinsics/gen/reverseBits/e31adf.wgsl b/test/intrinsics/gen/reverseBits/e31adf.wgsl
index 39e5639..c32c738 100644
--- a/test/intrinsics/gen/reverseBits/e31adf.wgsl
+++ b/test/intrinsics/gen/reverseBits/e31adf.wgsl
@@ -28,18 +28,18 @@
   var res: u32 = reverseBits(1u);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_e31adf();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   reverseBits_e31adf();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   reverseBits_e31adf();
 }
diff --git a/test/intrinsics/gen/reverseBits/e31adf.wgsl.expected.wgsl b/test/intrinsics/gen/reverseBits/e31adf.wgsl.expected.wgsl
index 2f2c5e8..d99e7a5 100644
--- a/test/intrinsics/gen/reverseBits/e31adf.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/reverseBits/e31adf.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : u32 = reverseBits(1u);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_e31adf();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   reverseBits_e31adf();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   reverseBits_e31adf();
 }
diff --git a/test/intrinsics/gen/round/106c0b.wgsl b/test/intrinsics/gen/round/106c0b.wgsl
index 0bcea29..52ebd56 100644
--- a/test/intrinsics/gen/round/106c0b.wgsl
+++ b/test/intrinsics/gen/round/106c0b.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = round(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   round_106c0b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   round_106c0b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   round_106c0b();
 }
diff --git a/test/intrinsics/gen/round/106c0b.wgsl.expected.wgsl b/test/intrinsics/gen/round/106c0b.wgsl.expected.wgsl
index de57173..338cddf 100644
--- a/test/intrinsics/gen/round/106c0b.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/round/106c0b.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = round(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   round_106c0b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   round_106c0b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   round_106c0b();
 }
diff --git a/test/intrinsics/gen/round/1c7897.wgsl b/test/intrinsics/gen/round/1c7897.wgsl
index ff05513..c0f13ae 100644
--- a/test/intrinsics/gen/round/1c7897.wgsl
+++ b/test/intrinsics/gen/round/1c7897.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = round(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   round_1c7897();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   round_1c7897();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   round_1c7897();
 }
diff --git a/test/intrinsics/gen/round/1c7897.wgsl.expected.wgsl b/test/intrinsics/gen/round/1c7897.wgsl.expected.wgsl
index 4abe9aa..ac2350e 100644
--- a/test/intrinsics/gen/round/1c7897.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/round/1c7897.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = round(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   round_1c7897();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   round_1c7897();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   round_1c7897();
 }
diff --git a/test/intrinsics/gen/round/52c84d.wgsl b/test/intrinsics/gen/round/52c84d.wgsl
index 34d2910..385bb5e 100644
--- a/test/intrinsics/gen/round/52c84d.wgsl
+++ b/test/intrinsics/gen/round/52c84d.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = round(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   round_52c84d();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   round_52c84d();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   round_52c84d();
 }
diff --git a/test/intrinsics/gen/round/52c84d.wgsl.expected.wgsl b/test/intrinsics/gen/round/52c84d.wgsl.expected.wgsl
index 5d89ce6..9877c2d 100644
--- a/test/intrinsics/gen/round/52c84d.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/round/52c84d.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = round(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   round_52c84d();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   round_52c84d();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   round_52c84d();
 }
diff --git a/test/intrinsics/gen/round/9edc38.wgsl b/test/intrinsics/gen/round/9edc38.wgsl
index 01f9211..e4fd176 100644
--- a/test/intrinsics/gen/round/9edc38.wgsl
+++ b/test/intrinsics/gen/round/9edc38.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = round(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   round_9edc38();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   round_9edc38();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   round_9edc38();
 }
diff --git a/test/intrinsics/gen/round/9edc38.wgsl.expected.wgsl b/test/intrinsics/gen/round/9edc38.wgsl.expected.wgsl
index 40588ac..9753e04 100644
--- a/test/intrinsics/gen/round/9edc38.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/round/9edc38.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = round(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   round_9edc38();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   round_9edc38();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   round_9edc38();
 }
diff --git a/test/intrinsics/gen/select/00b848.wgsl b/test/intrinsics/gen/select/00b848.wgsl
index bf6993f..a1f4834 100644
--- a/test/intrinsics/gen/select/00b848.wgsl
+++ b/test/intrinsics/gen/select/00b848.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<i32> = select(vec2<i32>(), vec2<i32>(), vec2<bool>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_00b848();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_00b848();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_00b848();
 }
diff --git a/test/intrinsics/gen/select/00b848.wgsl.expected.wgsl b/test/intrinsics/gen/select/00b848.wgsl.expected.wgsl
index 9a72d2d..bf45b90 100644
--- a/test/intrinsics/gen/select/00b848.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/select/00b848.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<i32> = select(vec2<i32>(), vec2<i32>(), vec2<bool>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_00b848();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_00b848();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_00b848();
 }
diff --git a/test/intrinsics/gen/select/01e2cd.wgsl b/test/intrinsics/gen/select/01e2cd.wgsl
index ed51d33..c8e0408 100644
--- a/test/intrinsics/gen/select/01e2cd.wgsl
+++ b/test/intrinsics/gen/select/01e2cd.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<i32> = select(vec3<i32>(), vec3<i32>(), vec3<bool>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_01e2cd();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_01e2cd();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_01e2cd();
 }
diff --git a/test/intrinsics/gen/select/01e2cd.wgsl.expected.wgsl b/test/intrinsics/gen/select/01e2cd.wgsl.expected.wgsl
index f52df12..7e9d06f 100644
--- a/test/intrinsics/gen/select/01e2cd.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/select/01e2cd.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<i32> = select(vec3<i32>(), vec3<i32>(), vec3<bool>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_01e2cd();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_01e2cd();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_01e2cd();
 }
diff --git a/test/intrinsics/gen/select/087ea4.wgsl b/test/intrinsics/gen/select/087ea4.wgsl
index a89cf61..f8f7924 100644
--- a/test/intrinsics/gen/select/087ea4.wgsl
+++ b/test/intrinsics/gen/select/087ea4.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<u32> = select(vec4<u32>(), vec4<u32>(), bool());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_087ea4();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_087ea4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_087ea4();
 }
diff --git a/test/intrinsics/gen/select/087ea4.wgsl.expected.wgsl b/test/intrinsics/gen/select/087ea4.wgsl.expected.wgsl
index da2621f..6258a15 100644
--- a/test/intrinsics/gen/select/087ea4.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/select/087ea4.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<u32> = select(vec4<u32>(), vec4<u32>(), bool());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_087ea4();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_087ea4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_087ea4();
 }
diff --git a/test/intrinsics/gen/select/1e960b.wgsl b/test/intrinsics/gen/select/1e960b.wgsl
index 7d40c59..92c0df6 100644
--- a/test/intrinsics/gen/select/1e960b.wgsl
+++ b/test/intrinsics/gen/select/1e960b.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<u32> = select(vec2<u32>(), vec2<u32>(), vec2<bool>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_1e960b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_1e960b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_1e960b();
 }
diff --git a/test/intrinsics/gen/select/1e960b.wgsl.expected.wgsl b/test/intrinsics/gen/select/1e960b.wgsl.expected.wgsl
index 2fc1050..4f78e59 100644
--- a/test/intrinsics/gen/select/1e960b.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/select/1e960b.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<u32> = select(vec2<u32>(), vec2<u32>(), vec2<bool>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_1e960b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_1e960b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_1e960b();
 }
diff --git a/test/intrinsics/gen/select/266aff.wgsl b/test/intrinsics/gen/select/266aff.wgsl
index cd55f3c..6faee8a 100644
--- a/test/intrinsics/gen/select/266aff.wgsl
+++ b/test/intrinsics/gen/select/266aff.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = select(vec2<f32>(), vec2<f32>(), vec2<bool>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_266aff();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_266aff();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_266aff();
 }
diff --git a/test/intrinsics/gen/select/266aff.wgsl.expected.wgsl b/test/intrinsics/gen/select/266aff.wgsl.expected.wgsl
index 6c5dab6..522a10f 100644
--- a/test/intrinsics/gen/select/266aff.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/select/266aff.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = select(vec2<f32>(), vec2<f32>(), vec2<bool>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_266aff();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_266aff();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_266aff();
 }
diff --git a/test/intrinsics/gen/select/28a27e.wgsl b/test/intrinsics/gen/select/28a27e.wgsl
index b58c5ca..cc515a9 100644
--- a/test/intrinsics/gen/select/28a27e.wgsl
+++ b/test/intrinsics/gen/select/28a27e.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<u32> = select(vec3<u32>(), vec3<u32>(), vec3<bool>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_28a27e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_28a27e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_28a27e();
 }
diff --git a/test/intrinsics/gen/select/28a27e.wgsl.expected.wgsl b/test/intrinsics/gen/select/28a27e.wgsl.expected.wgsl
index 42fb13a..cbc4bcf 100644
--- a/test/intrinsics/gen/select/28a27e.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/select/28a27e.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<u32> = select(vec3<u32>(), vec3<u32>(), vec3<bool>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_28a27e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_28a27e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_28a27e();
 }
diff --git a/test/intrinsics/gen/select/3c25ce.wgsl b/test/intrinsics/gen/select/3c25ce.wgsl
index 5a2afbd..85d68b1 100644
--- a/test/intrinsics/gen/select/3c25ce.wgsl
+++ b/test/intrinsics/gen/select/3c25ce.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<bool> = select(vec3<bool>(), vec3<bool>(), bool());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_3c25ce();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_3c25ce();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_3c25ce();
 }
diff --git a/test/intrinsics/gen/select/3c25ce.wgsl.expected.wgsl b/test/intrinsics/gen/select/3c25ce.wgsl.expected.wgsl
index cd6c508..48963b4 100644
--- a/test/intrinsics/gen/select/3c25ce.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/select/3c25ce.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<bool> = select(vec3<bool>(), vec3<bool>(), bool());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_3c25ce();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_3c25ce();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_3c25ce();
 }
diff --git a/test/intrinsics/gen/select/416e14.wgsl b/test/intrinsics/gen/select/416e14.wgsl
index 6427738..c69cd17 100644
--- a/test/intrinsics/gen/select/416e14.wgsl
+++ b/test/intrinsics/gen/select/416e14.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = select(1.0, 1.0, bool());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_416e14();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_416e14();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_416e14();
 }
diff --git a/test/intrinsics/gen/select/416e14.wgsl.expected.wgsl b/test/intrinsics/gen/select/416e14.wgsl.expected.wgsl
index 847eb7c..bfa5d2e 100644
--- a/test/intrinsics/gen/select/416e14.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/select/416e14.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = select(1.0, 1.0, bool());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_416e14();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_416e14();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_416e14();
 }
diff --git a/test/intrinsics/gen/select/51b047.wgsl b/test/intrinsics/gen/select/51b047.wgsl
index 64fd8ed..f774d3f 100644
--- a/test/intrinsics/gen/select/51b047.wgsl
+++ b/test/intrinsics/gen/select/51b047.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<u32> = select(vec2<u32>(), vec2<u32>(), bool());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_51b047();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_51b047();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_51b047();
 }
diff --git a/test/intrinsics/gen/select/51b047.wgsl.expected.wgsl b/test/intrinsics/gen/select/51b047.wgsl.expected.wgsl
index 8cb5525..93097d9 100644
--- a/test/intrinsics/gen/select/51b047.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/select/51b047.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<u32> = select(vec2<u32>(), vec2<u32>(), bool());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_51b047();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_51b047();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_51b047();
 }
diff --git a/test/intrinsics/gen/select/713567.wgsl b/test/intrinsics/gen/select/713567.wgsl
index 2d4d541..9dad142 100644
--- a/test/intrinsics/gen/select/713567.wgsl
+++ b/test/intrinsics/gen/select/713567.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = select(vec4<f32>(), vec4<f32>(), bool());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_713567();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_713567();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_713567();
 }
diff --git a/test/intrinsics/gen/select/713567.wgsl.expected.wgsl b/test/intrinsics/gen/select/713567.wgsl.expected.wgsl
index 8624950..d885a74 100644
--- a/test/intrinsics/gen/select/713567.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/select/713567.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = select(vec4<f32>(), vec4<f32>(), bool());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_713567();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_713567();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_713567();
 }
diff --git a/test/intrinsics/gen/select/78be5f.wgsl b/test/intrinsics/gen/select/78be5f.wgsl
index 940450a..363cb61 100644
--- a/test/intrinsics/gen/select/78be5f.wgsl
+++ b/test/intrinsics/gen/select/78be5f.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = select(vec3<f32>(), vec3<f32>(), bool());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_78be5f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_78be5f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_78be5f();
 }
diff --git a/test/intrinsics/gen/select/78be5f.wgsl.expected.wgsl b/test/intrinsics/gen/select/78be5f.wgsl.expected.wgsl
index 9f76d0f..7c77d66 100644
--- a/test/intrinsics/gen/select/78be5f.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/select/78be5f.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = select(vec3<f32>(), vec3<f32>(), bool());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_78be5f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_78be5f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_78be5f();
 }
diff --git a/test/intrinsics/gen/select/80a9a9.wgsl b/test/intrinsics/gen/select/80a9a9.wgsl
index 2d8a8f9..970d4b0 100644
--- a/test/intrinsics/gen/select/80a9a9.wgsl
+++ b/test/intrinsics/gen/select/80a9a9.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<bool> = select(vec3<bool>(), vec3<bool>(), vec3<bool>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_80a9a9();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_80a9a9();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_80a9a9();
 }
diff --git a/test/intrinsics/gen/select/80a9a9.wgsl.expected.wgsl b/test/intrinsics/gen/select/80a9a9.wgsl.expected.wgsl
index bafde41..1f2b1fd 100644
--- a/test/intrinsics/gen/select/80a9a9.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/select/80a9a9.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<bool> = select(vec3<bool>(), vec3<bool>(), vec3<bool>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_80a9a9();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_80a9a9();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_80a9a9();
 }
diff --git a/test/intrinsics/gen/select/8fa62c.wgsl b/test/intrinsics/gen/select/8fa62c.wgsl
index edaca3f..6fd149a 100644
--- a/test/intrinsics/gen/select/8fa62c.wgsl
+++ b/test/intrinsics/gen/select/8fa62c.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<i32> = select(vec3<i32>(), vec3<i32>(), bool());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_8fa62c();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_8fa62c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_8fa62c();
 }
diff --git a/test/intrinsics/gen/select/8fa62c.wgsl.expected.wgsl b/test/intrinsics/gen/select/8fa62c.wgsl.expected.wgsl
index 7ce550f..431824e 100644
--- a/test/intrinsics/gen/select/8fa62c.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/select/8fa62c.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<i32> = select(vec3<i32>(), vec3<i32>(), bool());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_8fa62c();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_8fa62c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_8fa62c();
 }
diff --git a/test/intrinsics/gen/select/99f883.wgsl b/test/intrinsics/gen/select/99f883.wgsl
index 5ddccad..25c5a25 100644
--- a/test/intrinsics/gen/select/99f883.wgsl
+++ b/test/intrinsics/gen/select/99f883.wgsl
@@ -28,18 +28,18 @@
   var res: u32 = select(1u, 1u, bool());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_99f883();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_99f883();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_99f883();
 }
diff --git a/test/intrinsics/gen/select/99f883.wgsl.expected.wgsl b/test/intrinsics/gen/select/99f883.wgsl.expected.wgsl
index 17d5598..0ceacc2 100644
--- a/test/intrinsics/gen/select/99f883.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/select/99f883.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : u32 = select(1u, 1u, bool());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_99f883();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_99f883();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_99f883();
 }
diff --git a/test/intrinsics/gen/select/a2860e.wgsl b/test/intrinsics/gen/select/a2860e.wgsl
index 289e00e..6b3b0b2 100644
--- a/test/intrinsics/gen/select/a2860e.wgsl
+++ b/test/intrinsics/gen/select/a2860e.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<i32> = select(vec4<i32>(), vec4<i32>(), vec4<bool>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_a2860e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_a2860e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_a2860e();
 }
diff --git a/test/intrinsics/gen/select/a2860e.wgsl.expected.wgsl b/test/intrinsics/gen/select/a2860e.wgsl.expected.wgsl
index d52472c..0fd2eb4 100644
--- a/test/intrinsics/gen/select/a2860e.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/select/a2860e.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<i32> = select(vec4<i32>(), vec4<i32>(), vec4<bool>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_a2860e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_a2860e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_a2860e();
 }
diff --git a/test/intrinsics/gen/select/ab069f.wgsl b/test/intrinsics/gen/select/ab069f.wgsl
index 3c2265e..a55fa79 100644
--- a/test/intrinsics/gen/select/ab069f.wgsl
+++ b/test/intrinsics/gen/select/ab069f.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<i32> = select(vec4<i32>(), vec4<i32>(), bool());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_ab069f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_ab069f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_ab069f();
 }
diff --git a/test/intrinsics/gen/select/ab069f.wgsl.expected.wgsl b/test/intrinsics/gen/select/ab069f.wgsl.expected.wgsl
index b64daa0..ea18846 100644
--- a/test/intrinsics/gen/select/ab069f.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/select/ab069f.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<i32> = select(vec4<i32>(), vec4<i32>(), bool());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_ab069f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_ab069f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_ab069f();
 }
diff --git a/test/intrinsics/gen/select/b04721.wgsl b/test/intrinsics/gen/select/b04721.wgsl
index 13898cf..1de6739 100644
--- a/test/intrinsics/gen/select/b04721.wgsl
+++ b/test/intrinsics/gen/select/b04721.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<u32> = select(vec3<u32>(), vec3<u32>(), bool());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_b04721();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_b04721();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_b04721();
 }
diff --git a/test/intrinsics/gen/select/b04721.wgsl.expected.wgsl b/test/intrinsics/gen/select/b04721.wgsl.expected.wgsl
index e92cb25..86befd9 100644
--- a/test/intrinsics/gen/select/b04721.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/select/b04721.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<u32> = select(vec3<u32>(), vec3<u32>(), bool());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_b04721();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_b04721();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_b04721();
 }
diff --git a/test/intrinsics/gen/select/bb447f.wgsl b/test/intrinsics/gen/select/bb447f.wgsl
index 7bdc0c7..f15929a 100644
--- a/test/intrinsics/gen/select/bb447f.wgsl
+++ b/test/intrinsics/gen/select/bb447f.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<i32> = select(vec2<i32>(), vec2<i32>(), bool());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_bb447f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_bb447f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_bb447f();
 }
diff --git a/test/intrinsics/gen/select/bb447f.wgsl.expected.wgsl b/test/intrinsics/gen/select/bb447f.wgsl.expected.wgsl
index dd11e92..2ea72e7 100644
--- a/test/intrinsics/gen/select/bb447f.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/select/bb447f.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<i32> = select(vec2<i32>(), vec2<i32>(), bool());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_bb447f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_bb447f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_bb447f();
 }
diff --git a/test/intrinsics/gen/select/bb8aae.wgsl b/test/intrinsics/gen/select/bb8aae.wgsl
index 5734859..786f619 100644
--- a/test/intrinsics/gen/select/bb8aae.wgsl
+++ b/test/intrinsics/gen/select/bb8aae.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = select(vec4<f32>(), vec4<f32>(), vec4<bool>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_bb8aae();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_bb8aae();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_bb8aae();
 }
diff --git a/test/intrinsics/gen/select/bb8aae.wgsl.expected.wgsl b/test/intrinsics/gen/select/bb8aae.wgsl.expected.wgsl
index dca5783..f64a61b 100644
--- a/test/intrinsics/gen/select/bb8aae.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/select/bb8aae.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = select(vec4<f32>(), vec4<f32>(), vec4<bool>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_bb8aae();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_bb8aae();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_bb8aae();
 }
diff --git a/test/intrinsics/gen/select/bf3d29.wgsl b/test/intrinsics/gen/select/bf3d29.wgsl
index ac24039..db8e855 100644
--- a/test/intrinsics/gen/select/bf3d29.wgsl
+++ b/test/intrinsics/gen/select/bf3d29.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = select(vec2<f32>(), vec2<f32>(), bool());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_bf3d29();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_bf3d29();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_bf3d29();
 }
diff --git a/test/intrinsics/gen/select/bf3d29.wgsl.expected.wgsl b/test/intrinsics/gen/select/bf3d29.wgsl.expected.wgsl
index 1223b7b..87b2f80 100644
--- a/test/intrinsics/gen/select/bf3d29.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/select/bf3d29.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = select(vec2<f32>(), vec2<f32>(), bool());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_bf3d29();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_bf3d29();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_bf3d29();
 }
diff --git a/test/intrinsics/gen/select/c31f9e.wgsl b/test/intrinsics/gen/select/c31f9e.wgsl
index 5694d13..3f04796 100644
--- a/test/intrinsics/gen/select/c31f9e.wgsl
+++ b/test/intrinsics/gen/select/c31f9e.wgsl
@@ -28,18 +28,18 @@
   var res: bool = select(bool(), bool(), bool());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_c31f9e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_c31f9e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_c31f9e();
 }
diff --git a/test/intrinsics/gen/select/c31f9e.wgsl.expected.wgsl b/test/intrinsics/gen/select/c31f9e.wgsl.expected.wgsl
index 289a904..21acae6 100644
--- a/test/intrinsics/gen/select/c31f9e.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/select/c31f9e.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : bool = select(bool(), bool(), bool());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_c31f9e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_c31f9e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_c31f9e();
 }
diff --git a/test/intrinsics/gen/select/c41bd1.wgsl b/test/intrinsics/gen/select/c41bd1.wgsl
index cdb49ce..a4a0143 100644
--- a/test/intrinsics/gen/select/c41bd1.wgsl
+++ b/test/intrinsics/gen/select/c41bd1.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<bool> = select(vec4<bool>(), vec4<bool>(), bool());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_c41bd1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_c41bd1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_c41bd1();
 }
diff --git a/test/intrinsics/gen/select/c41bd1.wgsl.expected.wgsl b/test/intrinsics/gen/select/c41bd1.wgsl.expected.wgsl
index c0fffc7..a314f0c 100644
--- a/test/intrinsics/gen/select/c41bd1.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/select/c41bd1.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<bool> = select(vec4<bool>(), vec4<bool>(), bool());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_c41bd1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_c41bd1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_c41bd1();
 }
diff --git a/test/intrinsics/gen/select/c4a4ef.wgsl b/test/intrinsics/gen/select/c4a4ef.wgsl
index f78392b..5826ca0 100644
--- a/test/intrinsics/gen/select/c4a4ef.wgsl
+++ b/test/intrinsics/gen/select/c4a4ef.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<u32> = select(vec4<u32>(), vec4<u32>(), vec4<bool>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_c4a4ef();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_c4a4ef();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_c4a4ef();
 }
diff --git a/test/intrinsics/gen/select/c4a4ef.wgsl.expected.wgsl b/test/intrinsics/gen/select/c4a4ef.wgsl.expected.wgsl
index 13731b9..adbcc5d 100644
--- a/test/intrinsics/gen/select/c4a4ef.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/select/c4a4ef.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<u32> = select(vec4<u32>(), vec4<u32>(), vec4<bool>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_c4a4ef();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_c4a4ef();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_c4a4ef();
 }
diff --git a/test/intrinsics/gen/select/cb9301.wgsl b/test/intrinsics/gen/select/cb9301.wgsl
index 397cca1..1de0ad1 100644
--- a/test/intrinsics/gen/select/cb9301.wgsl
+++ b/test/intrinsics/gen/select/cb9301.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<bool> = select(vec2<bool>(), vec2<bool>(), vec2<bool>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_cb9301();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_cb9301();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_cb9301();
 }
diff --git a/test/intrinsics/gen/select/cb9301.wgsl.expected.wgsl b/test/intrinsics/gen/select/cb9301.wgsl.expected.wgsl
index cbad268..7c85dad 100644
--- a/test/intrinsics/gen/select/cb9301.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/select/cb9301.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<bool> = select(vec2<bool>(), vec2<bool>(), vec2<bool>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_cb9301();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_cb9301();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_cb9301();
 }
diff --git a/test/intrinsics/gen/select/e3e028.wgsl b/test/intrinsics/gen/select/e3e028.wgsl
index 2031d9e..7d28666 100644
--- a/test/intrinsics/gen/select/e3e028.wgsl
+++ b/test/intrinsics/gen/select/e3e028.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<bool> = select(vec4<bool>(), vec4<bool>(), vec4<bool>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_e3e028();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_e3e028();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_e3e028();
 }
diff --git a/test/intrinsics/gen/select/e3e028.wgsl.expected.wgsl b/test/intrinsics/gen/select/e3e028.wgsl.expected.wgsl
index 200e27d..2794266 100644
--- a/test/intrinsics/gen/select/e3e028.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/select/e3e028.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<bool> = select(vec4<bool>(), vec4<bool>(), vec4<bool>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_e3e028();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_e3e028();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_e3e028();
 }
diff --git a/test/intrinsics/gen/select/ebfea2.wgsl b/test/intrinsics/gen/select/ebfea2.wgsl
index 8487ca2..bd572c5 100644
--- a/test/intrinsics/gen/select/ebfea2.wgsl
+++ b/test/intrinsics/gen/select/ebfea2.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = select(vec3<f32>(), vec3<f32>(), vec3<bool>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_ebfea2();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_ebfea2();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_ebfea2();
 }
diff --git a/test/intrinsics/gen/select/ebfea2.wgsl.expected.wgsl b/test/intrinsics/gen/select/ebfea2.wgsl.expected.wgsl
index d7e6f63..c181585 100644
--- a/test/intrinsics/gen/select/ebfea2.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/select/ebfea2.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = select(vec3<f32>(), vec3<f32>(), vec3<bool>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_ebfea2();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_ebfea2();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_ebfea2();
 }
diff --git a/test/intrinsics/gen/select/ed8a15.wgsl b/test/intrinsics/gen/select/ed8a15.wgsl
index a898387..df1f6ad 100644
--- a/test/intrinsics/gen/select/ed8a15.wgsl
+++ b/test/intrinsics/gen/select/ed8a15.wgsl
@@ -28,18 +28,18 @@
   var res: i32 = select(1, 1, bool());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_ed8a15();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_ed8a15();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_ed8a15();
 }
diff --git a/test/intrinsics/gen/select/ed8a15.wgsl.expected.wgsl b/test/intrinsics/gen/select/ed8a15.wgsl.expected.wgsl
index 7f607be..ca4b96e 100644
--- a/test/intrinsics/gen/select/ed8a15.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/select/ed8a15.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : i32 = select(1, 1, bool());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_ed8a15();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_ed8a15();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_ed8a15();
 }
diff --git a/test/intrinsics/gen/select/fb7e53.wgsl b/test/intrinsics/gen/select/fb7e53.wgsl
index a213dbd..92d50f3 100644
--- a/test/intrinsics/gen/select/fb7e53.wgsl
+++ b/test/intrinsics/gen/select/fb7e53.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<bool> = select(vec2<bool>(), vec2<bool>(), bool());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_fb7e53();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_fb7e53();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_fb7e53();
 }
diff --git a/test/intrinsics/gen/select/fb7e53.wgsl.expected.wgsl b/test/intrinsics/gen/select/fb7e53.wgsl.expected.wgsl
index e08a15f..6c6a287 100644
--- a/test/intrinsics/gen/select/fb7e53.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/select/fb7e53.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<bool> = select(vec2<bool>(), vec2<bool>(), bool());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   select_fb7e53();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   select_fb7e53();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   select_fb7e53();
 }
diff --git a/test/intrinsics/gen/sign/159665.wgsl b/test/intrinsics/gen/sign/159665.wgsl
index 31ef21d..a3d87a4 100644
--- a/test/intrinsics/gen/sign/159665.wgsl
+++ b/test/intrinsics/gen/sign/159665.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = sign(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   sign_159665();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   sign_159665();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   sign_159665();
 }
diff --git a/test/intrinsics/gen/sign/159665.wgsl.expected.wgsl b/test/intrinsics/gen/sign/159665.wgsl.expected.wgsl
index fe38cd6..b66072b 100644
--- a/test/intrinsics/gen/sign/159665.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/sign/159665.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = sign(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   sign_159665();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   sign_159665();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   sign_159665();
 }
diff --git a/test/intrinsics/gen/sign/b8f634.wgsl b/test/intrinsics/gen/sign/b8f634.wgsl
index d16ad92..c8ced09 100644
--- a/test/intrinsics/gen/sign/b8f634.wgsl
+++ b/test/intrinsics/gen/sign/b8f634.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = sign(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   sign_b8f634();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   sign_b8f634();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   sign_b8f634();
 }
diff --git a/test/intrinsics/gen/sign/b8f634.wgsl.expected.wgsl b/test/intrinsics/gen/sign/b8f634.wgsl.expected.wgsl
index fb4f9f7..c9238d2 100644
--- a/test/intrinsics/gen/sign/b8f634.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/sign/b8f634.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = sign(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   sign_b8f634();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   sign_b8f634();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   sign_b8f634();
 }
diff --git a/test/intrinsics/gen/sign/d065d8.wgsl b/test/intrinsics/gen/sign/d065d8.wgsl
index 548b2a3..98d6b5e 100644
--- a/test/intrinsics/gen/sign/d065d8.wgsl
+++ b/test/intrinsics/gen/sign/d065d8.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = sign(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   sign_d065d8();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   sign_d065d8();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   sign_d065d8();
 }
diff --git a/test/intrinsics/gen/sign/d065d8.wgsl.expected.wgsl b/test/intrinsics/gen/sign/d065d8.wgsl.expected.wgsl
index 7d4de19..870041f 100644
--- a/test/intrinsics/gen/sign/d065d8.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/sign/d065d8.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = sign(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   sign_d065d8();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   sign_d065d8();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   sign_d065d8();
 }
diff --git a/test/intrinsics/gen/sign/dd790e.wgsl b/test/intrinsics/gen/sign/dd790e.wgsl
index 57e5b92..7765ea3 100644
--- a/test/intrinsics/gen/sign/dd790e.wgsl
+++ b/test/intrinsics/gen/sign/dd790e.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = sign(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   sign_dd790e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   sign_dd790e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   sign_dd790e();
 }
diff --git a/test/intrinsics/gen/sign/dd790e.wgsl.expected.wgsl b/test/intrinsics/gen/sign/dd790e.wgsl.expected.wgsl
index 9faa91b..d987517 100644
--- a/test/intrinsics/gen/sign/dd790e.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/sign/dd790e.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = sign(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   sign_dd790e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   sign_dd790e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   sign_dd790e();
 }
diff --git a/test/intrinsics/gen/sin/01f241.wgsl b/test/intrinsics/gen/sin/01f241.wgsl
index 6b385b3..58c1794 100644
--- a/test/intrinsics/gen/sin/01f241.wgsl
+++ b/test/intrinsics/gen/sin/01f241.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = sin(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   sin_01f241();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   sin_01f241();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   sin_01f241();
 }
diff --git a/test/intrinsics/gen/sin/01f241.wgsl.expected.wgsl b/test/intrinsics/gen/sin/01f241.wgsl.expected.wgsl
index 6e7b72e..8188006 100644
--- a/test/intrinsics/gen/sin/01f241.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/sin/01f241.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = sin(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   sin_01f241();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   sin_01f241();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   sin_01f241();
 }
diff --git a/test/intrinsics/gen/sin/4e3979.wgsl b/test/intrinsics/gen/sin/4e3979.wgsl
index 4b616c7..ae447d2 100644
--- a/test/intrinsics/gen/sin/4e3979.wgsl
+++ b/test/intrinsics/gen/sin/4e3979.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = sin(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   sin_4e3979();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   sin_4e3979();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   sin_4e3979();
 }
diff --git a/test/intrinsics/gen/sin/4e3979.wgsl.expected.wgsl b/test/intrinsics/gen/sin/4e3979.wgsl.expected.wgsl
index 1ec3ddd..6d03778 100644
--- a/test/intrinsics/gen/sin/4e3979.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/sin/4e3979.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = sin(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   sin_4e3979();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   sin_4e3979();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   sin_4e3979();
 }
diff --git a/test/intrinsics/gen/sin/b78c91.wgsl b/test/intrinsics/gen/sin/b78c91.wgsl
index 977b1c8..d8ecd40 100644
--- a/test/intrinsics/gen/sin/b78c91.wgsl
+++ b/test/intrinsics/gen/sin/b78c91.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = sin(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   sin_b78c91();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   sin_b78c91();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   sin_b78c91();
 }
diff --git a/test/intrinsics/gen/sin/b78c91.wgsl.expected.wgsl b/test/intrinsics/gen/sin/b78c91.wgsl.expected.wgsl
index f3532b1..e4a2d42 100644
--- a/test/intrinsics/gen/sin/b78c91.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/sin/b78c91.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = sin(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   sin_b78c91();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   sin_b78c91();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   sin_b78c91();
 }
diff --git a/test/intrinsics/gen/sin/fc8bc4.wgsl b/test/intrinsics/gen/sin/fc8bc4.wgsl
index 0c81e50..b828689 100644
--- a/test/intrinsics/gen/sin/fc8bc4.wgsl
+++ b/test/intrinsics/gen/sin/fc8bc4.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = sin(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   sin_fc8bc4();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   sin_fc8bc4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   sin_fc8bc4();
 }
diff --git a/test/intrinsics/gen/sin/fc8bc4.wgsl.expected.wgsl b/test/intrinsics/gen/sin/fc8bc4.wgsl.expected.wgsl
index fbe00f8..30e0918 100644
--- a/test/intrinsics/gen/sin/fc8bc4.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/sin/fc8bc4.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = sin(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   sin_fc8bc4();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   sin_fc8bc4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   sin_fc8bc4();
 }
diff --git a/test/intrinsics/gen/sinh/445e33.wgsl b/test/intrinsics/gen/sinh/445e33.wgsl
index d3e9479..2bb1e20 100644
--- a/test/intrinsics/gen/sinh/445e33.wgsl
+++ b/test/intrinsics/gen/sinh/445e33.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = sinh(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   sinh_445e33();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   sinh_445e33();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   sinh_445e33();
 }
diff --git a/test/intrinsics/gen/sinh/445e33.wgsl.expected.wgsl b/test/intrinsics/gen/sinh/445e33.wgsl.expected.wgsl
index 9f27e00..4eac92e 100644
--- a/test/intrinsics/gen/sinh/445e33.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/sinh/445e33.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = sinh(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   sinh_445e33();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   sinh_445e33();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   sinh_445e33();
 }
diff --git a/test/intrinsics/gen/sinh/7bb598.wgsl b/test/intrinsics/gen/sinh/7bb598.wgsl
index 112d966..872b87b 100644
--- a/test/intrinsics/gen/sinh/7bb598.wgsl
+++ b/test/intrinsics/gen/sinh/7bb598.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = sinh(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   sinh_7bb598();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   sinh_7bb598();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   sinh_7bb598();
 }
diff --git a/test/intrinsics/gen/sinh/7bb598.wgsl.expected.wgsl b/test/intrinsics/gen/sinh/7bb598.wgsl.expected.wgsl
index c9037e9..8df3fa0 100644
--- a/test/intrinsics/gen/sinh/7bb598.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/sinh/7bb598.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = sinh(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   sinh_7bb598();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   sinh_7bb598();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   sinh_7bb598();
 }
diff --git a/test/intrinsics/gen/sinh/b9860e.wgsl b/test/intrinsics/gen/sinh/b9860e.wgsl
index 738b4b0..3039b48 100644
--- a/test/intrinsics/gen/sinh/b9860e.wgsl
+++ b/test/intrinsics/gen/sinh/b9860e.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = sinh(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   sinh_b9860e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   sinh_b9860e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   sinh_b9860e();
 }
diff --git a/test/intrinsics/gen/sinh/b9860e.wgsl.expected.wgsl b/test/intrinsics/gen/sinh/b9860e.wgsl.expected.wgsl
index 189d1a8..b0698d0 100644
--- a/test/intrinsics/gen/sinh/b9860e.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/sinh/b9860e.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = sinh(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   sinh_b9860e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   sinh_b9860e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   sinh_b9860e();
 }
diff --git a/test/intrinsics/gen/sinh/c9a5eb.wgsl b/test/intrinsics/gen/sinh/c9a5eb.wgsl
index 59a9e38..9c79e98 100644
--- a/test/intrinsics/gen/sinh/c9a5eb.wgsl
+++ b/test/intrinsics/gen/sinh/c9a5eb.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = sinh(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   sinh_c9a5eb();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   sinh_c9a5eb();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   sinh_c9a5eb();
 }
diff --git a/test/intrinsics/gen/sinh/c9a5eb.wgsl.expected.wgsl b/test/intrinsics/gen/sinh/c9a5eb.wgsl.expected.wgsl
index ccbf252..642d72c 100644
--- a/test/intrinsics/gen/sinh/c9a5eb.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/sinh/c9a5eb.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = sinh(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   sinh_c9a5eb();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   sinh_c9a5eb();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   sinh_c9a5eb();
 }
diff --git a/test/intrinsics/gen/smoothStep/5f615b.wgsl b/test/intrinsics/gen/smoothStep/5f615b.wgsl
index d4ba632..4b1a4ab 100644
--- a/test/intrinsics/gen/smoothStep/5f615b.wgsl
+++ b/test/intrinsics/gen/smoothStep/5f615b.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = smoothStep(vec4<f32>(), vec4<f32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   smoothStep_5f615b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   smoothStep_5f615b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   smoothStep_5f615b();
 }
diff --git a/test/intrinsics/gen/smoothStep/5f615b.wgsl.expected.wgsl b/test/intrinsics/gen/smoothStep/5f615b.wgsl.expected.wgsl
index 62fe376..55a7561 100644
--- a/test/intrinsics/gen/smoothStep/5f615b.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/smoothStep/5f615b.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = smoothStep(vec4<f32>(), vec4<f32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   smoothStep_5f615b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   smoothStep_5f615b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   smoothStep_5f615b();
 }
diff --git a/test/intrinsics/gen/smoothStep/658be3.wgsl b/test/intrinsics/gen/smoothStep/658be3.wgsl
index 11d3971..8e39364 100644
--- a/test/intrinsics/gen/smoothStep/658be3.wgsl
+++ b/test/intrinsics/gen/smoothStep/658be3.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = smoothStep(vec3<f32>(), vec3<f32>(), vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   smoothStep_658be3();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   smoothStep_658be3();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   smoothStep_658be3();
 }
diff --git a/test/intrinsics/gen/smoothStep/658be3.wgsl.expected.wgsl b/test/intrinsics/gen/smoothStep/658be3.wgsl.expected.wgsl
index 2d99443..d81b745 100644
--- a/test/intrinsics/gen/smoothStep/658be3.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/smoothStep/658be3.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = smoothStep(vec3<f32>(), vec3<f32>(), vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   smoothStep_658be3();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   smoothStep_658be3();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   smoothStep_658be3();
 }
diff --git a/test/intrinsics/gen/smoothStep/c11eef.wgsl b/test/intrinsics/gen/smoothStep/c11eef.wgsl
index 9d88a67..7839f09 100644
--- a/test/intrinsics/gen/smoothStep/c11eef.wgsl
+++ b/test/intrinsics/gen/smoothStep/c11eef.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = smoothStep(vec2<f32>(), vec2<f32>(), vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   smoothStep_c11eef();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   smoothStep_c11eef();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   smoothStep_c11eef();
 }
diff --git a/test/intrinsics/gen/smoothStep/c11eef.wgsl.expected.wgsl b/test/intrinsics/gen/smoothStep/c11eef.wgsl.expected.wgsl
index 54a6fb7..7b34ffb 100644
--- a/test/intrinsics/gen/smoothStep/c11eef.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/smoothStep/c11eef.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = smoothStep(vec2<f32>(), vec2<f32>(), vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   smoothStep_c11eef();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   smoothStep_c11eef();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   smoothStep_c11eef();
 }
diff --git a/test/intrinsics/gen/smoothStep/cb0bfb.wgsl b/test/intrinsics/gen/smoothStep/cb0bfb.wgsl
index a823893..5c6c8c2 100644
--- a/test/intrinsics/gen/smoothStep/cb0bfb.wgsl
+++ b/test/intrinsics/gen/smoothStep/cb0bfb.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = smoothStep(1.0, 1.0, 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   smoothStep_cb0bfb();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   smoothStep_cb0bfb();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   smoothStep_cb0bfb();
 }
diff --git a/test/intrinsics/gen/smoothStep/cb0bfb.wgsl.expected.wgsl b/test/intrinsics/gen/smoothStep/cb0bfb.wgsl.expected.wgsl
index dd78c16..6b8ab78 100644
--- a/test/intrinsics/gen/smoothStep/cb0bfb.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/smoothStep/cb0bfb.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = smoothStep(1.0, 1.0, 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   smoothStep_cb0bfb();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   smoothStep_cb0bfb();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   smoothStep_cb0bfb();
 }
diff --git a/test/intrinsics/gen/sqrt/20c74e.wgsl b/test/intrinsics/gen/sqrt/20c74e.wgsl
index 8b85622..b954397 100644
--- a/test/intrinsics/gen/sqrt/20c74e.wgsl
+++ b/test/intrinsics/gen/sqrt/20c74e.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = sqrt(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   sqrt_20c74e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   sqrt_20c74e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   sqrt_20c74e();
 }
diff --git a/test/intrinsics/gen/sqrt/20c74e.wgsl.expected.wgsl b/test/intrinsics/gen/sqrt/20c74e.wgsl.expected.wgsl
index 944a81e..3b9fe0a 100644
--- a/test/intrinsics/gen/sqrt/20c74e.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/sqrt/20c74e.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = sqrt(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   sqrt_20c74e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   sqrt_20c74e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   sqrt_20c74e();
 }
diff --git a/test/intrinsics/gen/sqrt/8c7024.wgsl b/test/intrinsics/gen/sqrt/8c7024.wgsl
index 3cc8b8b..4e929d6 100644
--- a/test/intrinsics/gen/sqrt/8c7024.wgsl
+++ b/test/intrinsics/gen/sqrt/8c7024.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = sqrt(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   sqrt_8c7024();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   sqrt_8c7024();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   sqrt_8c7024();
 }
diff --git a/test/intrinsics/gen/sqrt/8c7024.wgsl.expected.wgsl b/test/intrinsics/gen/sqrt/8c7024.wgsl.expected.wgsl
index 7021231..36b4a8b 100644
--- a/test/intrinsics/gen/sqrt/8c7024.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/sqrt/8c7024.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = sqrt(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   sqrt_8c7024();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   sqrt_8c7024();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   sqrt_8c7024();
 }
diff --git a/test/intrinsics/gen/sqrt/aa0d7a.wgsl b/test/intrinsics/gen/sqrt/aa0d7a.wgsl
index a9b5ec2..e15b170 100644
--- a/test/intrinsics/gen/sqrt/aa0d7a.wgsl
+++ b/test/intrinsics/gen/sqrt/aa0d7a.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = sqrt(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   sqrt_aa0d7a();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   sqrt_aa0d7a();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   sqrt_aa0d7a();
 }
diff --git a/test/intrinsics/gen/sqrt/aa0d7a.wgsl.expected.wgsl b/test/intrinsics/gen/sqrt/aa0d7a.wgsl.expected.wgsl
index 3158248..47ab81a 100644
--- a/test/intrinsics/gen/sqrt/aa0d7a.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/sqrt/aa0d7a.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = sqrt(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   sqrt_aa0d7a();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   sqrt_aa0d7a();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   sqrt_aa0d7a();
 }
diff --git a/test/intrinsics/gen/sqrt/f8c59a.wgsl b/test/intrinsics/gen/sqrt/f8c59a.wgsl
index f201a13..5916a9f 100644
--- a/test/intrinsics/gen/sqrt/f8c59a.wgsl
+++ b/test/intrinsics/gen/sqrt/f8c59a.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = sqrt(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   sqrt_f8c59a();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   sqrt_f8c59a();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   sqrt_f8c59a();
 }
diff --git a/test/intrinsics/gen/sqrt/f8c59a.wgsl.expected.wgsl b/test/intrinsics/gen/sqrt/f8c59a.wgsl.expected.wgsl
index 61da933..e12b658 100644
--- a/test/intrinsics/gen/sqrt/f8c59a.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/sqrt/f8c59a.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = sqrt(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   sqrt_f8c59a();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   sqrt_f8c59a();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   sqrt_f8c59a();
 }
diff --git a/test/intrinsics/gen/step/0b073b.wgsl b/test/intrinsics/gen/step/0b073b.wgsl
index e8f04cc..5d88c86 100644
--- a/test/intrinsics/gen/step/0b073b.wgsl
+++ b/test/intrinsics/gen/step/0b073b.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = step(1.0, 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   step_0b073b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   step_0b073b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   step_0b073b();
 }
diff --git a/test/intrinsics/gen/step/0b073b.wgsl.expected.wgsl b/test/intrinsics/gen/step/0b073b.wgsl.expected.wgsl
index 313c3c6..36e47dd 100644
--- a/test/intrinsics/gen/step/0b073b.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/step/0b073b.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = step(1.0, 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   step_0b073b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   step_0b073b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   step_0b073b();
 }
diff --git a/test/intrinsics/gen/step/19accd.wgsl b/test/intrinsics/gen/step/19accd.wgsl
index 6dceca1..9493036 100644
--- a/test/intrinsics/gen/step/19accd.wgsl
+++ b/test/intrinsics/gen/step/19accd.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = step(vec2<f32>(), vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   step_19accd();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   step_19accd();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   step_19accd();
 }
diff --git a/test/intrinsics/gen/step/19accd.wgsl.expected.wgsl b/test/intrinsics/gen/step/19accd.wgsl.expected.wgsl
index 08da07c..ce2b50b 100644
--- a/test/intrinsics/gen/step/19accd.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/step/19accd.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = step(vec2<f32>(), vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   step_19accd();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   step_19accd();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   step_19accd();
 }
diff --git a/test/intrinsics/gen/step/334303.wgsl b/test/intrinsics/gen/step/334303.wgsl
index a4ecbd8..63d3ead 100644
--- a/test/intrinsics/gen/step/334303.wgsl
+++ b/test/intrinsics/gen/step/334303.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = step(vec3<f32>(), vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   step_334303();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   step_334303();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   step_334303();
 }
diff --git a/test/intrinsics/gen/step/334303.wgsl.expected.wgsl b/test/intrinsics/gen/step/334303.wgsl.expected.wgsl
index 3b2f197..e1cb631 100644
--- a/test/intrinsics/gen/step/334303.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/step/334303.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = step(vec3<f32>(), vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   step_334303();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   step_334303();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   step_334303();
 }
diff --git a/test/intrinsics/gen/step/e2b337.wgsl b/test/intrinsics/gen/step/e2b337.wgsl
index bbe16f1..e691130 100644
--- a/test/intrinsics/gen/step/e2b337.wgsl
+++ b/test/intrinsics/gen/step/e2b337.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = step(vec4<f32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   step_e2b337();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   step_e2b337();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   step_e2b337();
 }
diff --git a/test/intrinsics/gen/step/e2b337.wgsl.expected.wgsl b/test/intrinsics/gen/step/e2b337.wgsl.expected.wgsl
index f626625..a6efd86 100644
--- a/test/intrinsics/gen/step/e2b337.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/step/e2b337.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = step(vec4<f32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   step_e2b337();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   step_e2b337();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   step_e2b337();
 }
diff --git a/test/intrinsics/gen/storageBarrier/d87211.wgsl b/test/intrinsics/gen/storageBarrier/d87211.wgsl
index cf5d8e1..2931174 100644
--- a/test/intrinsics/gen/storageBarrier/d87211.wgsl
+++ b/test/intrinsics/gen/storageBarrier/d87211.wgsl
@@ -28,7 +28,7 @@
   storageBarrier();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   storageBarrier_d87211();
 }
diff --git a/test/intrinsics/gen/storageBarrier/d87211.wgsl.expected.wgsl b/test/intrinsics/gen/storageBarrier/d87211.wgsl.expected.wgsl
index 2f0b741..4c87708 100644
--- a/test/intrinsics/gen/storageBarrier/d87211.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/storageBarrier/d87211.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   storageBarrier();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   storageBarrier_d87211();
 }
diff --git a/test/intrinsics/gen/tan/244e2a.wgsl b/test/intrinsics/gen/tan/244e2a.wgsl
index 7e816e4..599499f 100644
--- a/test/intrinsics/gen/tan/244e2a.wgsl
+++ b/test/intrinsics/gen/tan/244e2a.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = tan(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   tan_244e2a();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   tan_244e2a();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   tan_244e2a();
 }
diff --git a/test/intrinsics/gen/tan/244e2a.wgsl.expected.wgsl b/test/intrinsics/gen/tan/244e2a.wgsl.expected.wgsl
index 6e5647e..77ac6d8 100644
--- a/test/intrinsics/gen/tan/244e2a.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/tan/244e2a.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = tan(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   tan_244e2a();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   tan_244e2a();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   tan_244e2a();
 }
diff --git a/test/intrinsics/gen/tan/2f030e.wgsl b/test/intrinsics/gen/tan/2f030e.wgsl
index 52504f7..3ee8e72 100644
--- a/test/intrinsics/gen/tan/2f030e.wgsl
+++ b/test/intrinsics/gen/tan/2f030e.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = tan(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   tan_2f030e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   tan_2f030e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   tan_2f030e();
 }
diff --git a/test/intrinsics/gen/tan/2f030e.wgsl.expected.wgsl b/test/intrinsics/gen/tan/2f030e.wgsl.expected.wgsl
index b638e2c..3c12969 100644
--- a/test/intrinsics/gen/tan/2f030e.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/tan/2f030e.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = tan(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   tan_2f030e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   tan_2f030e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   tan_2f030e();
 }
diff --git a/test/intrinsics/gen/tan/7ea104.wgsl b/test/intrinsics/gen/tan/7ea104.wgsl
index 5c8437e..6250daa 100644
--- a/test/intrinsics/gen/tan/7ea104.wgsl
+++ b/test/intrinsics/gen/tan/7ea104.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = tan(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   tan_7ea104();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   tan_7ea104();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   tan_7ea104();
 }
diff --git a/test/intrinsics/gen/tan/7ea104.wgsl.expected.wgsl b/test/intrinsics/gen/tan/7ea104.wgsl.expected.wgsl
index 078d91f..f859e50 100644
--- a/test/intrinsics/gen/tan/7ea104.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/tan/7ea104.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = tan(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   tan_7ea104();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   tan_7ea104();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   tan_7ea104();
 }
diff --git a/test/intrinsics/gen/tan/8ce3e9.wgsl b/test/intrinsics/gen/tan/8ce3e9.wgsl
index 1ddcfa9..85765f1 100644
--- a/test/intrinsics/gen/tan/8ce3e9.wgsl
+++ b/test/intrinsics/gen/tan/8ce3e9.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = tan(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   tan_8ce3e9();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   tan_8ce3e9();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   tan_8ce3e9();
 }
diff --git a/test/intrinsics/gen/tan/8ce3e9.wgsl.expected.wgsl b/test/intrinsics/gen/tan/8ce3e9.wgsl.expected.wgsl
index 756d55f..a43d809 100644
--- a/test/intrinsics/gen/tan/8ce3e9.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/tan/8ce3e9.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = tan(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   tan_8ce3e9();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   tan_8ce3e9();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   tan_8ce3e9();
 }
diff --git a/test/intrinsics/gen/tanh/5663c5.wgsl b/test/intrinsics/gen/tanh/5663c5.wgsl
index ed50ced..96b2fdb 100644
--- a/test/intrinsics/gen/tanh/5663c5.wgsl
+++ b/test/intrinsics/gen/tanh/5663c5.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = tanh(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   tanh_5663c5();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   tanh_5663c5();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   tanh_5663c5();
 }
diff --git a/test/intrinsics/gen/tanh/5663c5.wgsl.expected.wgsl b/test/intrinsics/gen/tanh/5663c5.wgsl.expected.wgsl
index 5158816..717091b 100644
--- a/test/intrinsics/gen/tanh/5663c5.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/tanh/5663c5.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = tanh(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   tanh_5663c5();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   tanh_5663c5();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   tanh_5663c5();
 }
diff --git a/test/intrinsics/gen/tanh/5724b3.wgsl b/test/intrinsics/gen/tanh/5724b3.wgsl
index fdee451..c0f35098 100644
--- a/test/intrinsics/gen/tanh/5724b3.wgsl
+++ b/test/intrinsics/gen/tanh/5724b3.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = tanh(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   tanh_5724b3();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   tanh_5724b3();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   tanh_5724b3();
 }
diff --git a/test/intrinsics/gen/tanh/5724b3.wgsl.expected.wgsl b/test/intrinsics/gen/tanh/5724b3.wgsl.expected.wgsl
index 2856696..7fbd481 100644
--- a/test/intrinsics/gen/tanh/5724b3.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/tanh/5724b3.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = tanh(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   tanh_5724b3();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   tanh_5724b3();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   tanh_5724b3();
 }
diff --git a/test/intrinsics/gen/tanh/9f9fb9.wgsl b/test/intrinsics/gen/tanh/9f9fb9.wgsl
index 81579ef..e83ed57 100644
--- a/test/intrinsics/gen/tanh/9f9fb9.wgsl
+++ b/test/intrinsics/gen/tanh/9f9fb9.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = tanh(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   tanh_9f9fb9();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   tanh_9f9fb9();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   tanh_9f9fb9();
 }
diff --git a/test/intrinsics/gen/tanh/9f9fb9.wgsl.expected.wgsl b/test/intrinsics/gen/tanh/9f9fb9.wgsl.expected.wgsl
index 32f523a..20184fd 100644
--- a/test/intrinsics/gen/tanh/9f9fb9.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/tanh/9f9fb9.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = tanh(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   tanh_9f9fb9();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   tanh_9f9fb9();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   tanh_9f9fb9();
 }
diff --git a/test/intrinsics/gen/tanh/c15fdb.wgsl b/test/intrinsics/gen/tanh/c15fdb.wgsl
index 32a04fc..20c69fd 100644
--- a/test/intrinsics/gen/tanh/c15fdb.wgsl
+++ b/test/intrinsics/gen/tanh/c15fdb.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = tanh(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   tanh_c15fdb();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   tanh_c15fdb();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   tanh_c15fdb();
 }
diff --git a/test/intrinsics/gen/tanh/c15fdb.wgsl.expected.wgsl b/test/intrinsics/gen/tanh/c15fdb.wgsl.expected.wgsl
index d7a1379..fb6e8e7 100644
--- a/test/intrinsics/gen/tanh/c15fdb.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/tanh/c15fdb.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = tanh(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   tanh_c15fdb();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   tanh_c15fdb();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   tanh_c15fdb();
 }
diff --git a/test/intrinsics/gen/textureDimensions/002b2a.wgsl b/test/intrinsics/gen/textureDimensions/002b2a.wgsl
index 205bae6..96f16b2 100644
--- a/test/intrinsics/gen/textureDimensions/002b2a.wgsl
+++ b/test/intrinsics/gen/textureDimensions/002b2a.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_1d<f32>;
+@group(1) @binding(0) var arg_0: texture_1d<f32>;
 
 // fn textureDimensions(texture: texture_1d<f32>) -> i32
 fn textureDimensions_002b2a() {
   var res: i32 = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_002b2a();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_002b2a();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_002b2a();
 }
diff --git a/test/intrinsics/gen/textureDimensions/002b2a.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/002b2a.wgsl.expected.wgsl
index b0ea573..a21a8c0 100644
--- a/test/intrinsics/gen/textureDimensions/002b2a.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/002b2a.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_1d<f32>;
+@group(1) @binding(0) var arg_0 : texture_1d<f32>;
 
 fn textureDimensions_002b2a() {
   var res : i32 = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_002b2a();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_002b2a();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_002b2a();
 }
diff --git a/test/intrinsics/gen/textureDimensions/012b82.wgsl b/test/intrinsics/gen/textureDimensions/012b82.wgsl
index 40caed2..b1697be 100644
--- a/test/intrinsics/gen/textureDimensions/012b82.wgsl
+++ b/test/intrinsics/gen/textureDimensions/012b82.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<r32sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<r32sint, write>;
 
 // fn textureDimensions(texture: texture_storage_2d_array<r32sint, write>) -> vec2<i32>
 fn textureDimensions_012b82() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_012b82();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_012b82();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_012b82();
 }
diff --git a/test/intrinsics/gen/textureDimensions/012b82.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/012b82.wgsl.expected.wgsl
index dfe7af6..7ebcab6 100644
--- a/test/intrinsics/gen/textureDimensions/012b82.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/012b82.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<r32sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, write>;
 
 fn textureDimensions_012b82() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_012b82();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_012b82();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_012b82();
 }
diff --git a/test/intrinsics/gen/textureDimensions/08753d.wgsl b/test/intrinsics/gen/textureDimensions/08753d.wgsl
index 52e0254..05fcbdd 100644
--- a/test/intrinsics/gen/textureDimensions/08753d.wgsl
+++ b/test/intrinsics/gen/textureDimensions/08753d.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_1d<rgba16sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba16sint, write>;
 
 // fn textureDimensions(texture: texture_storage_1d<rgba16sint, write>) -> i32
 fn textureDimensions_08753d() {
   var res: i32 = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_08753d();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_08753d();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_08753d();
 }
diff --git a/test/intrinsics/gen/textureDimensions/08753d.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/08753d.wgsl.expected.wgsl
index 95f3629..45dce4b 100644
--- a/test/intrinsics/gen/textureDimensions/08753d.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/08753d.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rgba16sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16sint, write>;
 
 fn textureDimensions_08753d() {
   var res : i32 = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_08753d();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_08753d();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_08753d();
 }
diff --git a/test/intrinsics/gen/textureDimensions/0c4772.wgsl b/test/intrinsics/gen/textureDimensions/0c4772.wgsl
index 7ba349c..daad042 100644
--- a/test/intrinsics/gen/textureDimensions/0c4772.wgsl
+++ b/test/intrinsics/gen/textureDimensions/0c4772.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_3d<rgba16float, write>;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba16float, write>;
 
 // fn textureDimensions(texture: texture_storage_3d<rgba16float, write>) -> vec3<i32>
 fn textureDimensions_0c4772() {
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_0c4772();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_0c4772();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_0c4772();
 }
diff --git a/test/intrinsics/gen/textureDimensions/0c4772.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/0c4772.wgsl.expected.wgsl
index 0262649..dc5fc35 100644
--- a/test/intrinsics/gen/textureDimensions/0c4772.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/0c4772.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_3d<rgba16float, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16float, write>;
 
 fn textureDimensions_0c4772() {
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_0c4772();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_0c4772();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_0c4772();
 }
diff --git a/test/intrinsics/gen/textureDimensions/0cce40.wgsl b/test/intrinsics/gen/textureDimensions/0cce40.wgsl
index 1c710ad..a9ae133 100644
--- a/test/intrinsics/gen/textureDimensions/0cce40.wgsl
+++ b/test/intrinsics/gen/textureDimensions/0cce40.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_1d<r32sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_1d<r32sint, write>;
 
 // fn textureDimensions(texture: texture_storage_1d<r32sint, write>) -> i32
 fn textureDimensions_0cce40() {
   var res: i32 = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_0cce40();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_0cce40();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_0cce40();
 }
diff --git a/test/intrinsics/gen/textureDimensions/0cce40.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/0cce40.wgsl.expected.wgsl
index 8c156ca..04b0e24 100644
--- a/test/intrinsics/gen/textureDimensions/0cce40.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/0cce40.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_1d<r32sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_1d<r32sint, write>;
 
 fn textureDimensions_0cce40() {
   var res : i32 = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_0cce40();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_0cce40();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_0cce40();
 }
diff --git a/test/intrinsics/gen/textureDimensions/0cf2ff.wgsl b/test/intrinsics/gen/textureDimensions/0cf2ff.wgsl
index 74f7f3c..1fef317 100644
--- a/test/intrinsics/gen/textureDimensions/0cf2ff.wgsl
+++ b/test/intrinsics/gen/textureDimensions/0cf2ff.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d<rgba16uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba16uint, write>;
 
 // fn textureDimensions(texture: texture_storage_2d<rgba16uint, write>) -> vec2<i32>
 fn textureDimensions_0cf2ff() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_0cf2ff();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_0cf2ff();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_0cf2ff();
 }
diff --git a/test/intrinsics/gen/textureDimensions/0cf2ff.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/0cf2ff.wgsl.expected.wgsl
index cea5440..36e3e61 100644
--- a/test/intrinsics/gen/textureDimensions/0cf2ff.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/0cf2ff.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d<rgba16uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16uint, write>;
 
 fn textureDimensions_0cf2ff() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_0cf2ff();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_0cf2ff();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_0cf2ff();
 }
diff --git a/test/intrinsics/gen/textureDimensions/0d8b7e.wgsl b/test/intrinsics/gen/textureDimensions/0d8b7e.wgsl
index dce0780..255f1ee 100644
--- a/test/intrinsics/gen/textureDimensions/0d8b7e.wgsl
+++ b/test/intrinsics/gen/textureDimensions/0d8b7e.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<r32uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<r32uint, write>;
 
 // fn textureDimensions(texture: texture_storage_2d_array<r32uint, write>) -> vec2<i32>
 fn textureDimensions_0d8b7e() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_0d8b7e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_0d8b7e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_0d8b7e();
 }
diff --git a/test/intrinsics/gen/textureDimensions/0d8b7e.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/0d8b7e.wgsl.expected.wgsl
index 4427b17..b4a1350 100644
--- a/test/intrinsics/gen/textureDimensions/0d8b7e.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/0d8b7e.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<r32uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, write>;
 
 fn textureDimensions_0d8b7e() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_0d8b7e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_0d8b7e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_0d8b7e();
 }
diff --git a/test/intrinsics/gen/textureDimensions/0e32ee.wgsl b/test/intrinsics/gen/textureDimensions/0e32ee.wgsl
index ed94fd3..be5b433 100644
--- a/test/intrinsics/gen/textureDimensions/0e32ee.wgsl
+++ b/test/intrinsics/gen/textureDimensions/0e32ee.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_3d<rgba16uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba16uint, write>;
 
 // fn textureDimensions(texture: texture_storage_3d<rgba16uint, write>) -> vec3<i32>
 fn textureDimensions_0e32ee() {
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_0e32ee();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_0e32ee();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_0e32ee();
 }
diff --git a/test/intrinsics/gen/textureDimensions/0e32ee.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/0e32ee.wgsl.expected.wgsl
index 971c451..9f0e1d1 100644
--- a/test/intrinsics/gen/textureDimensions/0e32ee.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/0e32ee.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_3d<rgba16uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16uint, write>;
 
 fn textureDimensions_0e32ee() {
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_0e32ee();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_0e32ee();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_0e32ee();
 }
diff --git a/test/intrinsics/gen/textureDimensions/0f3c50.wgsl b/test/intrinsics/gen/textureDimensions/0f3c50.wgsl
index 99bab7e..2cc8fec 100644
--- a/test/intrinsics/gen/textureDimensions/0f3c50.wgsl
+++ b/test/intrinsics/gen/textureDimensions/0f3c50.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d_array<i32>;
+@group(1) @binding(0) var arg_0: texture_2d_array<i32>;
 
 // fn textureDimensions(texture: texture_2d_array<i32>) -> vec2<i32>
 fn textureDimensions_0f3c50() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_0f3c50();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_0f3c50();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_0f3c50();
 }
diff --git a/test/intrinsics/gen/textureDimensions/0f3c50.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/0f3c50.wgsl.expected.wgsl
index 57309a9..553f57e 100644
--- a/test/intrinsics/gen/textureDimensions/0f3c50.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/0f3c50.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d_array<i32>;
+@group(1) @binding(0) var arg_0 : texture_2d_array<i32>;
 
 fn textureDimensions_0f3c50() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_0f3c50();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_0f3c50();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_0f3c50();
 }
diff --git a/test/intrinsics/gen/textureDimensions/1191a5.wgsl b/test/intrinsics/gen/textureDimensions/1191a5.wgsl
index 714a92c..6b0382b 100644
--- a/test/intrinsics/gen/textureDimensions/1191a5.wgsl
+++ b/test/intrinsics/gen/textureDimensions/1191a5.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d<u32>;
+@group(1) @binding(0) var arg_0: texture_2d<u32>;
 
 // fn textureDimensions(texture: texture_2d<u32>) -> vec2<i32>
 fn textureDimensions_1191a5() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_1191a5();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_1191a5();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_1191a5();
 }
diff --git a/test/intrinsics/gen/textureDimensions/1191a5.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/1191a5.wgsl.expected.wgsl
index 51c403e..2131304 100644
--- a/test/intrinsics/gen/textureDimensions/1191a5.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/1191a5.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d<u32>;
+@group(1) @binding(0) var arg_0 : texture_2d<u32>;
 
 fn textureDimensions_1191a5() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_1191a5();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_1191a5();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_1191a5();
 }
diff --git a/test/intrinsics/gen/textureDimensions/12c9bb.wgsl b/test/intrinsics/gen/textureDimensions/12c9bb.wgsl
index bb7a3b0..b2fa3ef 100644
--- a/test/intrinsics/gen/textureDimensions/12c9bb.wgsl
+++ b/test/intrinsics/gen/textureDimensions/12c9bb.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_2d;
+@group(1) @binding(0) var arg_0: texture_depth_2d;
 
 // fn textureDimensions(texture: texture_depth_2d, level: i32) -> vec2<i32>
 fn textureDimensions_12c9bb() {
   var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_12c9bb();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_12c9bb();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_12c9bb();
 }
diff --git a/test/intrinsics/gen/textureDimensions/12c9bb.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/12c9bb.wgsl.expected.wgsl
index 1dd859f..14d7f89 100644
--- a/test/intrinsics/gen/textureDimensions/12c9bb.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/12c9bb.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_2d;
+@group(1) @binding(0) var arg_0 : texture_depth_2d;
 
 fn textureDimensions_12c9bb() {
   var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_12c9bb();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_12c9bb();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_12c9bb();
 }
diff --git a/test/intrinsics/gen/textureDimensions/147998.wgsl b/test/intrinsics/gen/textureDimensions/147998.wgsl
index 66e2d27..41ebd81 100644
--- a/test/intrinsics/gen/textureDimensions/147998.wgsl
+++ b/test/intrinsics/gen/textureDimensions/147998.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d<rg32float, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rg32float, write>;
 
 // fn textureDimensions(texture: texture_storage_2d<rg32float, write>) -> vec2<i32>
 fn textureDimensions_147998() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_147998();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_147998();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_147998();
 }
diff --git a/test/intrinsics/gen/textureDimensions/147998.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/147998.wgsl.expected.wgsl
index b587cb2..3cd6855 100644
--- a/test/intrinsics/gen/textureDimensions/147998.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/147998.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d<rg32float, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32float, write>;
 
 fn textureDimensions_147998() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_147998();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_147998();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_147998();
 }
diff --git a/test/intrinsics/gen/textureDimensions/16036c.wgsl b/test/intrinsics/gen/textureDimensions/16036c.wgsl
index 85e3656..c231cc4 100644
--- a/test/intrinsics/gen/textureDimensions/16036c.wgsl
+++ b/test/intrinsics/gen/textureDimensions/16036c.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<rgba8sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8sint, write>;
 
 // fn textureDimensions(texture: texture_storage_2d_array<rgba8sint, write>) -> vec2<i32>
 fn textureDimensions_16036c() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_16036c();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_16036c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_16036c();
 }
diff --git a/test/intrinsics/gen/textureDimensions/16036c.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/16036c.wgsl.expected.wgsl
index be39823..072b71e 100644
--- a/test/intrinsics/gen/textureDimensions/16036c.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/16036c.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba8sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, write>;
 
 fn textureDimensions_16036c() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_16036c();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_16036c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_16036c();
 }
diff --git a/test/intrinsics/gen/textureDimensions/1b71f0.wgsl b/test/intrinsics/gen/textureDimensions/1b71f0.wgsl
index 7963585..558f3e3 100644
--- a/test/intrinsics/gen/textureDimensions/1b71f0.wgsl
+++ b/test/intrinsics/gen/textureDimensions/1b71f0.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_3d<rgba16sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba16sint, write>;
 
 // fn textureDimensions(texture: texture_storage_3d<rgba16sint, write>) -> vec3<i32>
 fn textureDimensions_1b71f0() {
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_1b71f0();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_1b71f0();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_1b71f0();
 }
diff --git a/test/intrinsics/gen/textureDimensions/1b71f0.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/1b71f0.wgsl.expected.wgsl
index 3b1d91b..8fedb78 100644
--- a/test/intrinsics/gen/textureDimensions/1b71f0.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/1b71f0.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_3d<rgba16sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16sint, write>;
 
 fn textureDimensions_1b71f0() {
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_1b71f0();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_1b71f0();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_1b71f0();
 }
diff --git a/test/intrinsics/gen/textureDimensions/1d6c26.wgsl b/test/intrinsics/gen/textureDimensions/1d6c26.wgsl
index 34ee093..d2d2980 100644
--- a/test/intrinsics/gen/textureDimensions/1d6c26.wgsl
+++ b/test/intrinsics/gen/textureDimensions/1d6c26.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<rgba8unorm, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8unorm, write>;
 
 // fn textureDimensions(texture: texture_storage_2d_array<rgba8unorm, write>) -> vec2<i32>
 fn textureDimensions_1d6c26() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_1d6c26();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_1d6c26();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_1d6c26();
 }
diff --git a/test/intrinsics/gen/textureDimensions/1d6c26.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/1d6c26.wgsl.expected.wgsl
index c6b9da7..1ca754c 100644
--- a/test/intrinsics/gen/textureDimensions/1d6c26.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/1d6c26.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba8unorm, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, write>;
 
 fn textureDimensions_1d6c26() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_1d6c26();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_1d6c26();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_1d6c26();
 }
diff --git a/test/intrinsics/gen/textureDimensions/1e9e39.wgsl b/test/intrinsics/gen/textureDimensions/1e9e39.wgsl
index 12af798..a30fbe0 100644
--- a/test/intrinsics/gen/textureDimensions/1e9e39.wgsl
+++ b/test/intrinsics/gen/textureDimensions/1e9e39.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_1d<rgba16float, write>;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba16float, write>;
 
 // fn textureDimensions(texture: texture_storage_1d<rgba16float, write>) -> i32
 fn textureDimensions_1e9e39() {
   var res: i32 = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_1e9e39();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_1e9e39();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_1e9e39();
 }
diff --git a/test/intrinsics/gen/textureDimensions/1e9e39.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/1e9e39.wgsl.expected.wgsl
index 84a7f69..938b104 100644
--- a/test/intrinsics/gen/textureDimensions/1e9e39.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/1e9e39.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rgba16float, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16float, write>;
 
 fn textureDimensions_1e9e39() {
   var res : i32 = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_1e9e39();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_1e9e39();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_1e9e39();
 }
diff --git a/test/intrinsics/gen/textureDimensions/1f20c5.wgsl b/test/intrinsics/gen/textureDimensions/1f20c5.wgsl
index 8cde2fa..0e49717 100644
--- a/test/intrinsics/gen/textureDimensions/1f20c5.wgsl
+++ b/test/intrinsics/gen/textureDimensions/1f20c5.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d_array<u32>;
+@group(1) @binding(0) var arg_0: texture_2d_array<u32>;
 
 // fn textureDimensions(texture: texture_2d_array<u32>) -> vec2<i32>
 fn textureDimensions_1f20c5() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_1f20c5();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_1f20c5();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_1f20c5();
 }
diff --git a/test/intrinsics/gen/textureDimensions/1f20c5.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/1f20c5.wgsl.expected.wgsl
index ca2cab1..2cbde3e 100644
--- a/test/intrinsics/gen/textureDimensions/1f20c5.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/1f20c5.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d_array<u32>;
+@group(1) @binding(0) var arg_0 : texture_2d_array<u32>;
 
 fn textureDimensions_1f20c5() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_1f20c5();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_1f20c5();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_1f20c5();
 }
diff --git a/test/intrinsics/gen/textureDimensions/214dd4.wgsl b/test/intrinsics/gen/textureDimensions/214dd4.wgsl
index 4c1391f..27c2d8a 100644
--- a/test/intrinsics/gen/textureDimensions/214dd4.wgsl
+++ b/test/intrinsics/gen/textureDimensions/214dd4.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_3d<rgba8sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba8sint, write>;
 
 // fn textureDimensions(texture: texture_storage_3d<rgba8sint, write>) -> vec3<i32>
 fn textureDimensions_214dd4() {
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_214dd4();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_214dd4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_214dd4();
 }
diff --git a/test/intrinsics/gen/textureDimensions/214dd4.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/214dd4.wgsl.expected.wgsl
index 7e96034..a6e1919 100644
--- a/test/intrinsics/gen/textureDimensions/214dd4.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/214dd4.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_3d<rgba8sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8sint, write>;
 
 fn textureDimensions_214dd4() {
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_214dd4();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_214dd4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_214dd4();
 }
diff --git a/test/intrinsics/gen/textureDimensions/221f22.wgsl b/test/intrinsics/gen/textureDimensions/221f22.wgsl
index c431bbd..70098d7 100644
--- a/test/intrinsics/gen/textureDimensions/221f22.wgsl
+++ b/test/intrinsics/gen/textureDimensions/221f22.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_cube_array<i32>;
+@group(1) @binding(0) var arg_0: texture_cube_array<i32>;
 
 // fn textureDimensions(texture: texture_cube_array<i32>, level: i32) -> vec2<i32>
 fn textureDimensions_221f22() {
   var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_221f22();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_221f22();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_221f22();
 }
diff --git a/test/intrinsics/gen/textureDimensions/221f22.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/221f22.wgsl.expected.wgsl
index 55707cd..e05c6f5 100644
--- a/test/intrinsics/gen/textureDimensions/221f22.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/221f22.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_cube_array<i32>;
+@group(1) @binding(0) var arg_0 : texture_cube_array<i32>;
 
 fn textureDimensions_221f22() {
   var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_221f22();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_221f22();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_221f22();
 }
diff --git a/test/intrinsics/gen/textureDimensions/267788.wgsl b/test/intrinsics/gen/textureDimensions/267788.wgsl
index 36846b6..d431dc7 100644
--- a/test/intrinsics/gen/textureDimensions/267788.wgsl
+++ b/test/intrinsics/gen/textureDimensions/267788.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d_array<u32>;
+@group(1) @binding(0) var arg_0: texture_2d_array<u32>;
 
 // fn textureDimensions(texture: texture_2d_array<u32>, level: i32) -> vec2<i32>
 fn textureDimensions_267788() {
   var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_267788();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_267788();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_267788();
 }
diff --git a/test/intrinsics/gen/textureDimensions/267788.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/267788.wgsl.expected.wgsl
index baf7d3a..99d3c54 100644
--- a/test/intrinsics/gen/textureDimensions/267788.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/267788.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d_array<u32>;
+@group(1) @binding(0) var arg_0 : texture_2d_array<u32>;
 
 fn textureDimensions_267788() {
   var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_267788();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_267788();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_267788();
 }
diff --git a/test/intrinsics/gen/textureDimensions/26bdfa.wgsl b/test/intrinsics/gen/textureDimensions/26bdfa.wgsl
index 7f84a66..4100047 100644
--- a/test/intrinsics/gen/textureDimensions/26bdfa.wgsl
+++ b/test/intrinsics/gen/textureDimensions/26bdfa.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_3d<f32>;
+@group(1) @binding(0) var arg_0: texture_3d<f32>;
 
 // fn textureDimensions(texture: texture_3d<f32>, level: i32) -> vec3<i32>
 fn textureDimensions_26bdfa() {
   var res: vec3<i32> = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_26bdfa();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_26bdfa();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_26bdfa();
 }
diff --git a/test/intrinsics/gen/textureDimensions/26bdfa.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/26bdfa.wgsl.expected.wgsl
index 7a1e888..5f9267e 100644
--- a/test/intrinsics/gen/textureDimensions/26bdfa.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/26bdfa.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_3d<f32>;
+@group(1) @binding(0) var arg_0 : texture_3d<f32>;
 
 fn textureDimensions_26bdfa() {
   var res : vec3<i32> = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_26bdfa();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_26bdfa();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_26bdfa();
 }
diff --git a/test/intrinsics/gen/textureDimensions/26ef6c.wgsl b/test/intrinsics/gen/textureDimensions/26ef6c.wgsl
index 310190d..ec36468 100644
--- a/test/intrinsics/gen/textureDimensions/26ef6c.wgsl
+++ b/test/intrinsics/gen/textureDimensions/26ef6c.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<rgba8uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8uint, write>;
 
 // fn textureDimensions(texture: texture_storage_2d_array<rgba8uint, write>) -> vec2<i32>
 fn textureDimensions_26ef6c() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_26ef6c();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_26ef6c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_26ef6c();
 }
diff --git a/test/intrinsics/gen/textureDimensions/26ef6c.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/26ef6c.wgsl.expected.wgsl
index 99ebb20..960c66d 100644
--- a/test/intrinsics/gen/textureDimensions/26ef6c.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/26ef6c.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba8uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, write>;
 
 fn textureDimensions_26ef6c() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_26ef6c();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_26ef6c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_26ef6c();
 }
diff --git a/test/intrinsics/gen/textureDimensions/2ad087.wgsl b/test/intrinsics/gen/textureDimensions/2ad087.wgsl
index 6dbbd7c..74ab99e 100644
--- a/test/intrinsics/gen/textureDimensions/2ad087.wgsl
+++ b/test/intrinsics/gen/textureDimensions/2ad087.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d<rgba16sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba16sint, write>;
 
 // fn textureDimensions(texture: texture_storage_2d<rgba16sint, write>) -> vec2<i32>
 fn textureDimensions_2ad087() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_2ad087();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_2ad087();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_2ad087();
 }
diff --git a/test/intrinsics/gen/textureDimensions/2ad087.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/2ad087.wgsl.expected.wgsl
index cf87608..c2b8327 100644
--- a/test/intrinsics/gen/textureDimensions/2ad087.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/2ad087.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d<rgba16sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16sint, write>;
 
 fn textureDimensions_2ad087() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_2ad087();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_2ad087();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_2ad087();
 }
diff --git a/test/intrinsics/gen/textureDimensions/2efa05.wgsl b/test/intrinsics/gen/textureDimensions/2efa05.wgsl
index 4752fc1..b5da206 100644
--- a/test/intrinsics/gen/textureDimensions/2efa05.wgsl
+++ b/test/intrinsics/gen/textureDimensions/2efa05.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_3d<u32>;
+@group(1) @binding(0) var arg_0: texture_3d<u32>;
 
 // fn textureDimensions(texture: texture_3d<u32>, level: i32) -> vec3<i32>
 fn textureDimensions_2efa05() {
   var res: vec3<i32> = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_2efa05();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_2efa05();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_2efa05();
 }
diff --git a/test/intrinsics/gen/textureDimensions/2efa05.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/2efa05.wgsl.expected.wgsl
index faea123..0b9afd8 100644
--- a/test/intrinsics/gen/textureDimensions/2efa05.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/2efa05.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_3d<u32>;
+@group(1) @binding(0) var arg_0 : texture_3d<u32>;
 
 fn textureDimensions_2efa05() {
   var res : vec3<i32> = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_2efa05();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_2efa05();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_2efa05();
 }
diff --git a/test/intrinsics/gen/textureDimensions/2f289f.wgsl b/test/intrinsics/gen/textureDimensions/2f289f.wgsl
index ea31afd..0ac6e35 100644
--- a/test/intrinsics/gen/textureDimensions/2f289f.wgsl
+++ b/test/intrinsics/gen/textureDimensions/2f289f.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_3d<r32sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_3d<r32sint, write>;
 
 // fn textureDimensions(texture: texture_storage_3d<r32sint, write>) -> vec3<i32>
 fn textureDimensions_2f289f() {
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_2f289f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_2f289f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_2f289f();
 }
diff --git a/test/intrinsics/gen/textureDimensions/2f289f.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/2f289f.wgsl.expected.wgsl
index 3157ff0..7ffc030 100644
--- a/test/intrinsics/gen/textureDimensions/2f289f.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/2f289f.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_3d<r32sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_3d<r32sint, write>;
 
 fn textureDimensions_2f289f() {
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_2f289f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_2f289f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_2f289f();
 }
diff --git a/test/intrinsics/gen/textureDimensions/2fe1cc.wgsl b/test/intrinsics/gen/textureDimensions/2fe1cc.wgsl
index 5fe606e..0bd62a0 100644
--- a/test/intrinsics/gen/textureDimensions/2fe1cc.wgsl
+++ b/test/intrinsics/gen/textureDimensions/2fe1cc.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d<f32>;
+@group(1) @binding(0) var arg_0: texture_2d<f32>;
 
 // fn textureDimensions(texture: texture_2d<f32>, level: i32) -> vec2<i32>
 fn textureDimensions_2fe1cc() {
   var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_2fe1cc();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_2fe1cc();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_2fe1cc();
 }
diff --git a/test/intrinsics/gen/textureDimensions/2fe1cc.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/2fe1cc.wgsl.expected.wgsl
index 3871292..4b03276 100644
--- a/test/intrinsics/gen/textureDimensions/2fe1cc.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/2fe1cc.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d<f32>;
+@group(1) @binding(0) var arg_0 : texture_2d<f32>;
 
 fn textureDimensions_2fe1cc() {
   var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_2fe1cc();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_2fe1cc();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_2fe1cc();
 }
diff --git a/test/intrinsics/gen/textureDimensions/318ecc.wgsl b/test/intrinsics/gen/textureDimensions/318ecc.wgsl
index 7227955..015839c 100644
--- a/test/intrinsics/gen/textureDimensions/318ecc.wgsl
+++ b/test/intrinsics/gen/textureDimensions/318ecc.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_1d<rgba16uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba16uint, write>;
 
 // fn textureDimensions(texture: texture_storage_1d<rgba16uint, write>) -> i32
 fn textureDimensions_318ecc() {
   var res: i32 = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_318ecc();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_318ecc();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_318ecc();
 }
diff --git a/test/intrinsics/gen/textureDimensions/318ecc.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/318ecc.wgsl.expected.wgsl
index cc92f6c..d1c53d4 100644
--- a/test/intrinsics/gen/textureDimensions/318ecc.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/318ecc.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rgba16uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16uint, write>;
 
 fn textureDimensions_318ecc() {
   var res : i32 = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_318ecc();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_318ecc();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_318ecc();
 }
diff --git a/test/intrinsics/gen/textureDimensions/340d06.wgsl b/test/intrinsics/gen/textureDimensions/340d06.wgsl
index 5f47447..71af9d0 100644
--- a/test/intrinsics/gen/textureDimensions/340d06.wgsl
+++ b/test/intrinsics/gen/textureDimensions/340d06.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_3d<r32uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_3d<r32uint, write>;
 
 // fn textureDimensions(texture: texture_storage_3d<r32uint, write>) -> vec3<i32>
 fn textureDimensions_340d06() {
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_340d06();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_340d06();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_340d06();
 }
diff --git a/test/intrinsics/gen/textureDimensions/340d06.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/340d06.wgsl.expected.wgsl
index 5c15e76..7ae21b4 100644
--- a/test/intrinsics/gen/textureDimensions/340d06.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/340d06.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_3d<r32uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_3d<r32uint, write>;
 
 fn textureDimensions_340d06() {
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_340d06();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_340d06();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_340d06();
 }
diff --git a/test/intrinsics/gen/textureDimensions/398e30.wgsl b/test/intrinsics/gen/textureDimensions/398e30.wgsl
index f29525a..0bdd487 100644
--- a/test/intrinsics/gen/textureDimensions/398e30.wgsl
+++ b/test/intrinsics/gen/textureDimensions/398e30.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<rgba32uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32uint, write>;
 
 // fn textureDimensions(texture: texture_storage_2d_array<rgba32uint, write>) -> vec2<i32>
 fn textureDimensions_398e30() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_398e30();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_398e30();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_398e30();
 }
diff --git a/test/intrinsics/gen/textureDimensions/398e30.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/398e30.wgsl.expected.wgsl
index 0b87c39..457ff70 100644
--- a/test/intrinsics/gen/textureDimensions/398e30.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/398e30.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba32uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, write>;
 
 fn textureDimensions_398e30() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_398e30();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_398e30();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_398e30();
 }
diff --git a/test/intrinsics/gen/textureDimensions/3a94ea.wgsl b/test/intrinsics/gen/textureDimensions/3a94ea.wgsl
index 137c650..eb60d1e 100644
--- a/test/intrinsics/gen/textureDimensions/3a94ea.wgsl
+++ b/test/intrinsics/gen/textureDimensions/3a94ea.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d<rg32uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rg32uint, write>;
 
 // fn textureDimensions(texture: texture_storage_2d<rg32uint, write>) -> vec2<i32>
 fn textureDimensions_3a94ea() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_3a94ea();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_3a94ea();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_3a94ea();
 }
diff --git a/test/intrinsics/gen/textureDimensions/3a94ea.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/3a94ea.wgsl.expected.wgsl
index 57ea93e..29d9579 100644
--- a/test/intrinsics/gen/textureDimensions/3a94ea.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/3a94ea.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d<rg32uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32uint, write>;
 
 fn textureDimensions_3a94ea() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_3a94ea();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_3a94ea();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_3a94ea();
 }
diff --git a/test/intrinsics/gen/textureDimensions/3aca08.wgsl b/test/intrinsics/gen/textureDimensions/3aca08.wgsl
index edc753e..3d96944 100644
--- a/test/intrinsics/gen/textureDimensions/3aca08.wgsl
+++ b/test/intrinsics/gen/textureDimensions/3aca08.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_1d<rgba32float, write>;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba32float, write>;
 
 // fn textureDimensions(texture: texture_storage_1d<rgba32float, write>) -> i32
 fn textureDimensions_3aca08() {
   var res: i32 = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_3aca08();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_3aca08();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_3aca08();
 }
diff --git a/test/intrinsics/gen/textureDimensions/3aca08.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/3aca08.wgsl.expected.wgsl
index 2645276..ba8e34f 100644
--- a/test/intrinsics/gen/textureDimensions/3aca08.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/3aca08.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rgba32float, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32float, write>;
 
 fn textureDimensions_3aca08() {
   var res : i32 = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_3aca08();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_3aca08();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_3aca08();
 }
diff --git a/test/intrinsics/gen/textureDimensions/3c5ad8.wgsl b/test/intrinsics/gen/textureDimensions/3c5ad8.wgsl
index 9269479..e3837a8 100644
--- a/test/intrinsics/gen/textureDimensions/3c5ad8.wgsl
+++ b/test/intrinsics/gen/textureDimensions/3c5ad8.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d<rgba8sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba8sint, write>;
 
 // fn textureDimensions(texture: texture_storage_2d<rgba8sint, write>) -> vec2<i32>
 fn textureDimensions_3c5ad8() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_3c5ad8();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_3c5ad8();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_3c5ad8();
 }
diff --git a/test/intrinsics/gen/textureDimensions/3c5ad8.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/3c5ad8.wgsl.expected.wgsl
index 4df025d..dc42b19 100644
--- a/test/intrinsics/gen/textureDimensions/3c5ad8.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/3c5ad8.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d<rgba8sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8sint, write>;
 
 fn textureDimensions_3c5ad8() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_3c5ad8();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_3c5ad8();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_3c5ad8();
 }
diff --git a/test/intrinsics/gen/textureDimensions/4152a6.wgsl b/test/intrinsics/gen/textureDimensions/4152a6.wgsl
index adb9641..f13d3ce 100644
--- a/test/intrinsics/gen/textureDimensions/4152a6.wgsl
+++ b/test/intrinsics/gen/textureDimensions/4152a6.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_cube_array<u32>;
+@group(1) @binding(0) var arg_0: texture_cube_array<u32>;
 
 // fn textureDimensions(texture: texture_cube_array<u32>) -> vec2<i32>
 fn textureDimensions_4152a6() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_4152a6();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_4152a6();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_4152a6();
 }
diff --git a/test/intrinsics/gen/textureDimensions/4152a6.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/4152a6.wgsl.expected.wgsl
index b21bb80..f9ec8d5 100644
--- a/test/intrinsics/gen/textureDimensions/4152a6.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/4152a6.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_cube_array<u32>;
+@group(1) @binding(0) var arg_0 : texture_cube_array<u32>;
 
 fn textureDimensions_4152a6() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_4152a6();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_4152a6();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_4152a6();
 }
diff --git a/test/intrinsics/gen/textureDimensions/423f99.wgsl b/test/intrinsics/gen/textureDimensions/423f99.wgsl
index 1b37e7e..d76008d 100644
--- a/test/intrinsics/gen/textureDimensions/423f99.wgsl
+++ b/test/intrinsics/gen/textureDimensions/423f99.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_1d<i32>;
+@group(1) @binding(0) var arg_0: texture_1d<i32>;
 
 // fn textureDimensions(texture: texture_1d<i32>) -> i32
 fn textureDimensions_423f99() {
   var res: i32 = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_423f99();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_423f99();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_423f99();
 }
diff --git a/test/intrinsics/gen/textureDimensions/423f99.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/423f99.wgsl.expected.wgsl
index bb1db6b..b84b033 100644
--- a/test/intrinsics/gen/textureDimensions/423f99.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/423f99.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_1d<i32>;
+@group(1) @binding(0) var arg_0 : texture_1d<i32>;
 
 fn textureDimensions_423f99() {
   var res : i32 = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_423f99();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_423f99();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_423f99();
 }
diff --git a/test/intrinsics/gen/textureDimensions/4267ee.wgsl b/test/intrinsics/gen/textureDimensions/4267ee.wgsl
index 159dff4..77143ec 100644
--- a/test/intrinsics/gen/textureDimensions/4267ee.wgsl
+++ b/test/intrinsics/gen/textureDimensions/4267ee.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d<rgba32float, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba32float, write>;
 
 // fn textureDimensions(texture: texture_storage_2d<rgba32float, write>) -> vec2<i32>
 fn textureDimensions_4267ee() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_4267ee();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_4267ee();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_4267ee();
 }
diff --git a/test/intrinsics/gen/textureDimensions/4267ee.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/4267ee.wgsl.expected.wgsl
index b421e45..909269f 100644
--- a/test/intrinsics/gen/textureDimensions/4267ee.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/4267ee.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d<rgba32float, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32float, write>;
 
 fn textureDimensions_4267ee() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_4267ee();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_4267ee();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_4267ee();
 }
diff --git a/test/intrinsics/gen/textureDimensions/42d4e6.wgsl b/test/intrinsics/gen/textureDimensions/42d4e6.wgsl
index 0d81325..8638394 100644
--- a/test/intrinsics/gen/textureDimensions/42d4e6.wgsl
+++ b/test/intrinsics/gen/textureDimensions/42d4e6.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_1d<rgba8unorm, write>;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba8unorm, write>;
 
 // fn textureDimensions(texture: texture_storage_1d<rgba8unorm, write>) -> i32
 fn textureDimensions_42d4e6() {
   var res: i32 = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_42d4e6();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_42d4e6();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_42d4e6();
 }
diff --git a/test/intrinsics/gen/textureDimensions/42d4e6.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/42d4e6.wgsl.expected.wgsl
index 8269c4b..bc98490 100644
--- a/test/intrinsics/gen/textureDimensions/42d4e6.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/42d4e6.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rgba8unorm, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8unorm, write>;
 
 fn textureDimensions_42d4e6() {
   var res : i32 = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_42d4e6();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_42d4e6();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_42d4e6();
 }
diff --git a/test/intrinsics/gen/textureDimensions/48cb89.wgsl b/test/intrinsics/gen/textureDimensions/48cb89.wgsl
index c9273a3..12414cd 100644
--- a/test/intrinsics/gen/textureDimensions/48cb89.wgsl
+++ b/test/intrinsics/gen/textureDimensions/48cb89.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d<rgba16float, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba16float, write>;
 
 // fn textureDimensions(texture: texture_storage_2d<rgba16float, write>) -> vec2<i32>
 fn textureDimensions_48cb89() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_48cb89();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_48cb89();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_48cb89();
 }
diff --git a/test/intrinsics/gen/textureDimensions/48cb89.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/48cb89.wgsl.expected.wgsl
index 0aad3e7..cdc0578 100644
--- a/test/intrinsics/gen/textureDimensions/48cb89.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/48cb89.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d<rgba16float, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16float, write>;
 
 fn textureDimensions_48cb89() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_48cb89();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_48cb89();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_48cb89();
 }
diff --git a/test/intrinsics/gen/textureDimensions/49d274.wgsl b/test/intrinsics/gen/textureDimensions/49d274.wgsl
index 6443529..b4569f0 100644
--- a/test/intrinsics/gen/textureDimensions/49d274.wgsl
+++ b/test/intrinsics/gen/textureDimensions/49d274.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<rg32sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32sint, write>;
 
 // fn textureDimensions(texture: texture_storage_2d_array<rg32sint, write>) -> vec2<i32>
 fn textureDimensions_49d274() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_49d274();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_49d274();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_49d274();
 }
diff --git a/test/intrinsics/gen/textureDimensions/49d274.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/49d274.wgsl.expected.wgsl
index a265975..00ebf36 100644
--- a/test/intrinsics/gen/textureDimensions/49d274.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/49d274.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rg32sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, write>;
 
 fn textureDimensions_49d274() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_49d274();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_49d274();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_49d274();
 }
diff --git a/test/intrinsics/gen/textureDimensions/4df9a8.wgsl b/test/intrinsics/gen/textureDimensions/4df9a8.wgsl
index e931a04..5c8a80e 100644
--- a/test/intrinsics/gen/textureDimensions/4df9a8.wgsl
+++ b/test/intrinsics/gen/textureDimensions/4df9a8.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_1d<rg32uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rg32uint, write>;
 
 // fn textureDimensions(texture: texture_storage_1d<rg32uint, write>) -> i32
 fn textureDimensions_4df9a8() {
   var res: i32 = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_4df9a8();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_4df9a8();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_4df9a8();
 }
diff --git a/test/intrinsics/gen/textureDimensions/4df9a8.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/4df9a8.wgsl.expected.wgsl
index a4b1a79..4078aa2 100644
--- a/test/intrinsics/gen/textureDimensions/4df9a8.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/4df9a8.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rg32uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32uint, write>;
 
 fn textureDimensions_4df9a8() {
   var res : i32 = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_4df9a8();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_4df9a8();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_4df9a8();
 }
diff --git a/test/intrinsics/gen/textureDimensions/50a9ee.wgsl b/test/intrinsics/gen/textureDimensions/50a9ee.wgsl
index 67e2a6b..ab5dab1 100644
--- a/test/intrinsics/gen/textureDimensions/50a9ee.wgsl
+++ b/test/intrinsics/gen/textureDimensions/50a9ee.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_cube_array<f32>;
+@group(1) @binding(0) var arg_0: texture_cube_array<f32>;
 
 // fn textureDimensions(texture: texture_cube_array<f32>, level: i32) -> vec2<i32>
 fn textureDimensions_50a9ee() {
   var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_50a9ee();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_50a9ee();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_50a9ee();
 }
diff --git a/test/intrinsics/gen/textureDimensions/50a9ee.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/50a9ee.wgsl.expected.wgsl
index b8e312e..f6e1440 100644
--- a/test/intrinsics/gen/textureDimensions/50a9ee.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/50a9ee.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_cube_array<f32>;
+@group(1) @binding(0) var arg_0 : texture_cube_array<f32>;
 
 fn textureDimensions_50a9ee() {
   var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_50a9ee();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_50a9ee();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_50a9ee();
 }
diff --git a/test/intrinsics/gen/textureDimensions/52045c.wgsl b/test/intrinsics/gen/textureDimensions/52045c.wgsl
index bf44ca6..25dfd9d 100644
--- a/test/intrinsics/gen/textureDimensions/52045c.wgsl
+++ b/test/intrinsics/gen/textureDimensions/52045c.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_1d<i32>;
+@group(1) @binding(0) var arg_0: texture_1d<i32>;
 
 // fn textureDimensions(texture: texture_1d<i32>, level: i32) -> i32
 fn textureDimensions_52045c() {
   var res: i32 = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_52045c();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_52045c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_52045c();
 }
diff --git a/test/intrinsics/gen/textureDimensions/52045c.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/52045c.wgsl.expected.wgsl
index a031fe4..9df7fc2 100644
--- a/test/intrinsics/gen/textureDimensions/52045c.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/52045c.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_1d<i32>;
+@group(1) @binding(0) var arg_0 : texture_1d<i32>;
 
 fn textureDimensions_52045c() {
   var res : i32 = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_52045c();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_52045c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_52045c();
 }
diff --git a/test/intrinsics/gen/textureDimensions/55b23e.wgsl b/test/intrinsics/gen/textureDimensions/55b23e.wgsl
index e814f28..182bd4f 100644
--- a/test/intrinsics/gen/textureDimensions/55b23e.wgsl
+++ b/test/intrinsics/gen/textureDimensions/55b23e.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_1d<rg32float, write>;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rg32float, write>;
 
 // fn textureDimensions(texture: texture_storage_1d<rg32float, write>) -> i32
 fn textureDimensions_55b23e() {
   var res: i32 = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_55b23e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_55b23e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_55b23e();
 }
diff --git a/test/intrinsics/gen/textureDimensions/55b23e.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/55b23e.wgsl.expected.wgsl
index ec3c950..32b929c 100644
--- a/test/intrinsics/gen/textureDimensions/55b23e.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/55b23e.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rg32float, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32float, write>;
 
 fn textureDimensions_55b23e() {
   var res : i32 = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_55b23e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_55b23e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_55b23e();
 }
diff --git a/test/intrinsics/gen/textureDimensions/579629.wgsl b/test/intrinsics/gen/textureDimensions/579629.wgsl
index a6bce4c..3892c0a 100644
--- a/test/intrinsics/gen/textureDimensions/579629.wgsl
+++ b/test/intrinsics/gen/textureDimensions/579629.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_multisampled_2d<u32>;
+@group(1) @binding(0) var arg_0: texture_multisampled_2d<u32>;
 
 // fn textureDimensions(texture: texture_multisampled_2d<u32>) -> vec2<i32>
 fn textureDimensions_579629() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_579629();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_579629();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_579629();
 }
diff --git a/test/intrinsics/gen/textureDimensions/579629.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/579629.wgsl.expected.wgsl
index b3b0817..e157439 100644
--- a/test/intrinsics/gen/textureDimensions/579629.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/579629.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_multisampled_2d<u32>;
+@group(1) @binding(0) var arg_0 : texture_multisampled_2d<u32>;
 
 fn textureDimensions_579629() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_579629();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_579629();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_579629();
 }
diff --git a/test/intrinsics/gen/textureDimensions/57da0b.wgsl b/test/intrinsics/gen/textureDimensions/57da0b.wgsl
index e5b764e..92e1e1a 100644
--- a/test/intrinsics/gen/textureDimensions/57da0b.wgsl
+++ b/test/intrinsics/gen/textureDimensions/57da0b.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_1d<r32uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_1d<r32uint, write>;
 
 // fn textureDimensions(texture: texture_storage_1d<r32uint, write>) -> i32
 fn textureDimensions_57da0b() {
   var res: i32 = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_57da0b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_57da0b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_57da0b();
 }
diff --git a/test/intrinsics/gen/textureDimensions/57da0b.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/57da0b.wgsl.expected.wgsl
index 7d9bbff..f05ee1c 100644
--- a/test/intrinsics/gen/textureDimensions/57da0b.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/57da0b.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_1d<r32uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_1d<r32uint, write>;
 
 fn textureDimensions_57da0b() {
   var res : i32 = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_57da0b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_57da0b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_57da0b();
 }
diff --git a/test/intrinsics/gen/textureDimensions/57e28f.wgsl b/test/intrinsics/gen/textureDimensions/57e28f.wgsl
index cabf1d2..b0cf7cc 100644
--- a/test/intrinsics/gen/textureDimensions/57e28f.wgsl
+++ b/test/intrinsics/gen/textureDimensions/57e28f.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_cube;
+@group(1) @binding(0) var arg_0: texture_depth_cube;
 
 // fn textureDimensions(texture: texture_depth_cube) -> vec2<i32>
 fn textureDimensions_57e28f() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_57e28f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_57e28f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_57e28f();
 }
diff --git a/test/intrinsics/gen/textureDimensions/57e28f.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/57e28f.wgsl.expected.wgsl
index 3c13313..3d25747 100644
--- a/test/intrinsics/gen/textureDimensions/57e28f.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/57e28f.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_cube;
+@group(1) @binding(0) var arg_0 : texture_depth_cube;
 
 fn textureDimensions_57e28f() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_57e28f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_57e28f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_57e28f();
 }
diff --git a/test/intrinsics/gen/textureDimensions/58a515.wgsl b/test/intrinsics/gen/textureDimensions/58a515.wgsl
index 2444556..9cbebcb 100644
--- a/test/intrinsics/gen/textureDimensions/58a515.wgsl
+++ b/test/intrinsics/gen/textureDimensions/58a515.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<rgba16float, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16float, write>;
 
 // fn textureDimensions(texture: texture_storage_2d_array<rgba16float, write>) -> vec2<i32>
 fn textureDimensions_58a515() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_58a515();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_58a515();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_58a515();
 }
diff --git a/test/intrinsics/gen/textureDimensions/58a515.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/58a515.wgsl.expected.wgsl
index 2816570..c395b92 100644
--- a/test/intrinsics/gen/textureDimensions/58a515.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/58a515.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba16float, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, write>;
 
 fn textureDimensions_58a515() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_58a515();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_58a515();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_58a515();
 }
diff --git a/test/intrinsics/gen/textureDimensions/5985f3.wgsl b/test/intrinsics/gen/textureDimensions/5985f3.wgsl
index 5b7caaa..9c37e5f 100644
--- a/test/intrinsics/gen/textureDimensions/5985f3.wgsl
+++ b/test/intrinsics/gen/textureDimensions/5985f3.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<rgba32sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32sint, write>;
 
 // fn textureDimensions(texture: texture_storage_2d_array<rgba32sint, write>) -> vec2<i32>
 fn textureDimensions_5985f3() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_5985f3();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_5985f3();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_5985f3();
 }
diff --git a/test/intrinsics/gen/textureDimensions/5985f3.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/5985f3.wgsl.expected.wgsl
index 58c715b..cc73d08 100644
--- a/test/intrinsics/gen/textureDimensions/5985f3.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/5985f3.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba32sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, write>;
 
 fn textureDimensions_5985f3() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_5985f3();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_5985f3();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_5985f3();
 }
diff --git a/test/intrinsics/gen/textureDimensions/5caa5e.wgsl b/test/intrinsics/gen/textureDimensions/5caa5e.wgsl
index 310d15c..3701763 100644
--- a/test/intrinsics/gen/textureDimensions/5caa5e.wgsl
+++ b/test/intrinsics/gen/textureDimensions/5caa5e.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_1d<rgba32uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba32uint, write>;
 
 // fn textureDimensions(texture: texture_storage_1d<rgba32uint, write>) -> i32
 fn textureDimensions_5caa5e() {
   var res: i32 = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_5caa5e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_5caa5e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_5caa5e();
 }
diff --git a/test/intrinsics/gen/textureDimensions/5caa5e.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/5caa5e.wgsl.expected.wgsl
index f53a805..3f83443 100644
--- a/test/intrinsics/gen/textureDimensions/5caa5e.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/5caa5e.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rgba32uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32uint, write>;
 
 fn textureDimensions_5caa5e() {
   var res : i32 = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_5caa5e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_5caa5e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_5caa5e();
 }
diff --git a/test/intrinsics/gen/textureDimensions/5e295d.wgsl b/test/intrinsics/gen/textureDimensions/5e295d.wgsl
index 137a220..3e4cd1b 100644
--- a/test/intrinsics/gen/textureDimensions/5e295d.wgsl
+++ b/test/intrinsics/gen/textureDimensions/5e295d.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<rgba16uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16uint, write>;
 
 // fn textureDimensions(texture: texture_storage_2d_array<rgba16uint, write>) -> vec2<i32>
 fn textureDimensions_5e295d() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_5e295d();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_5e295d();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_5e295d();
 }
diff --git a/test/intrinsics/gen/textureDimensions/5e295d.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/5e295d.wgsl.expected.wgsl
index 3a032e6..d8bceb6 100644
--- a/test/intrinsics/gen/textureDimensions/5e295d.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/5e295d.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba16uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, write>;
 
 fn textureDimensions_5e295d() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_5e295d();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_5e295d();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_5e295d();
 }
diff --git a/test/intrinsics/gen/textureDimensions/60bf54.wgsl b/test/intrinsics/gen/textureDimensions/60bf54.wgsl
index 13bc63e..fd0c02b 100644
--- a/test/intrinsics/gen/textureDimensions/60bf54.wgsl
+++ b/test/intrinsics/gen/textureDimensions/60bf54.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_3d<rg32sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rg32sint, write>;
 
 // fn textureDimensions(texture: texture_storage_3d<rg32sint, write>) -> vec3<i32>
 fn textureDimensions_60bf54() {
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_60bf54();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_60bf54();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_60bf54();
 }
diff --git a/test/intrinsics/gen/textureDimensions/60bf54.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/60bf54.wgsl.expected.wgsl
index 2e20479..f9347de 100644
--- a/test/intrinsics/gen/textureDimensions/60bf54.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/60bf54.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_3d<rg32sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32sint, write>;
 
 fn textureDimensions_60bf54() {
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_60bf54();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_60bf54();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_60bf54();
 }
diff --git a/test/intrinsics/gen/textureDimensions/63f3cf.wgsl b/test/intrinsics/gen/textureDimensions/63f3cf.wgsl
index 2a23c47..7cab4b8 100644
--- a/test/intrinsics/gen/textureDimensions/63f3cf.wgsl
+++ b/test/intrinsics/gen/textureDimensions/63f3cf.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_3d<rg32float, write>;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rg32float, write>;
 
 // fn textureDimensions(texture: texture_storage_3d<rg32float, write>) -> vec3<i32>
 fn textureDimensions_63f3cf() {
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_63f3cf();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_63f3cf();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_63f3cf();
 }
diff --git a/test/intrinsics/gen/textureDimensions/63f3cf.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/63f3cf.wgsl.expected.wgsl
index 8586c98..43e5f15 100644
--- a/test/intrinsics/gen/textureDimensions/63f3cf.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/63f3cf.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_3d<rg32float, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32float, write>;
 
 fn textureDimensions_63f3cf() {
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_63f3cf();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_63f3cf();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_63f3cf();
 }
diff --git a/test/intrinsics/gen/textureDimensions/68105c.wgsl b/test/intrinsics/gen/textureDimensions/68105c.wgsl
index e148614..9e15d77 100644
--- a/test/intrinsics/gen/textureDimensions/68105c.wgsl
+++ b/test/intrinsics/gen/textureDimensions/68105c.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d<rgba32uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba32uint, write>;
 
 // fn textureDimensions(texture: texture_storage_2d<rgba32uint, write>) -> vec2<i32>
 fn textureDimensions_68105c() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_68105c();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_68105c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_68105c();
 }
diff --git a/test/intrinsics/gen/textureDimensions/68105c.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/68105c.wgsl.expected.wgsl
index 07b857d..853c631 100644
--- a/test/intrinsics/gen/textureDimensions/68105c.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/68105c.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d<rgba32uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32uint, write>;
 
 fn textureDimensions_68105c() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_68105c();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_68105c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_68105c();
 }
diff --git a/test/intrinsics/gen/textureDimensions/686ef2.wgsl b/test/intrinsics/gen/textureDimensions/686ef2.wgsl
index 28f3f1a..6ed1d53 100644
--- a/test/intrinsics/gen/textureDimensions/686ef2.wgsl
+++ b/test/intrinsics/gen/textureDimensions/686ef2.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_cube<i32>;
+@group(1) @binding(0) var arg_0: texture_cube<i32>;
 
 // fn textureDimensions(texture: texture_cube<i32>, level: i32) -> vec2<i32>
 fn textureDimensions_686ef2() {
   var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_686ef2();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_686ef2();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_686ef2();
 }
diff --git a/test/intrinsics/gen/textureDimensions/686ef2.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/686ef2.wgsl.expected.wgsl
index 2fcfe40..ba69786 100644
--- a/test/intrinsics/gen/textureDimensions/686ef2.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/686ef2.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_cube<i32>;
+@group(1) @binding(0) var arg_0 : texture_cube<i32>;
 
 fn textureDimensions_686ef2() {
   var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_686ef2();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_686ef2();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_686ef2();
 }
diff --git a/test/intrinsics/gen/textureDimensions/6adac6.wgsl b/test/intrinsics/gen/textureDimensions/6adac6.wgsl
index ba2b0e3..f35d628 100644
--- a/test/intrinsics/gen/textureDimensions/6adac6.wgsl
+++ b/test/intrinsics/gen/textureDimensions/6adac6.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_1d<rgba32sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba32sint, write>;
 
 // fn textureDimensions(texture: texture_storage_1d<rgba32sint, write>) -> i32
 fn textureDimensions_6adac6() {
   var res: i32 = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_6adac6();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_6adac6();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_6adac6();
 }
diff --git a/test/intrinsics/gen/textureDimensions/6adac6.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/6adac6.wgsl.expected.wgsl
index 126bf44..c48c479 100644
--- a/test/intrinsics/gen/textureDimensions/6adac6.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/6adac6.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rgba32sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32sint, write>;
 
 fn textureDimensions_6adac6() {
   var res : i32 = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_6adac6();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_6adac6();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_6adac6();
 }
diff --git a/test/intrinsics/gen/textureDimensions/6ec1b4.wgsl b/test/intrinsics/gen/textureDimensions/6ec1b4.wgsl
index 5c4e785..a8718fb 100644
--- a/test/intrinsics/gen/textureDimensions/6ec1b4.wgsl
+++ b/test/intrinsics/gen/textureDimensions/6ec1b4.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_3d<u32>;
+@group(1) @binding(0) var arg_0: texture_3d<u32>;
 
 // fn textureDimensions(texture: texture_3d<u32>) -> vec3<i32>
 fn textureDimensions_6ec1b4() {
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_6ec1b4();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_6ec1b4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_6ec1b4();
 }
diff --git a/test/intrinsics/gen/textureDimensions/6ec1b4.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/6ec1b4.wgsl.expected.wgsl
index db9a3ed..6cc7cc1 100644
--- a/test/intrinsics/gen/textureDimensions/6ec1b4.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/6ec1b4.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_3d<u32>;
+@group(1) @binding(0) var arg_0 : texture_3d<u32>;
 
 fn textureDimensions_6ec1b4() {
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_6ec1b4();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_6ec1b4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_6ec1b4();
 }
diff --git a/test/intrinsics/gen/textureDimensions/6f0d79.wgsl b/test/intrinsics/gen/textureDimensions/6f0d79.wgsl
index f17c87e..395a6e0 100644
--- a/test/intrinsics/gen/textureDimensions/6f0d79.wgsl
+++ b/test/intrinsics/gen/textureDimensions/6f0d79.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<rgba8snorm, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8snorm, write>;
 
 // fn textureDimensions(texture: texture_storage_2d_array<rgba8snorm, write>) -> vec2<i32>
 fn textureDimensions_6f0d79() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_6f0d79();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_6f0d79();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_6f0d79();
 }
diff --git a/test/intrinsics/gen/textureDimensions/6f0d79.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/6f0d79.wgsl.expected.wgsl
index 046b263..7b1f32c 100644
--- a/test/intrinsics/gen/textureDimensions/6f0d79.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/6f0d79.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba8snorm, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, write>;
 
 fn textureDimensions_6f0d79() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_6f0d79();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_6f0d79();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_6f0d79();
 }
diff --git a/test/intrinsics/gen/textureDimensions/702c53.wgsl b/test/intrinsics/gen/textureDimensions/702c53.wgsl
index 75321d7..401f1ea 100644
--- a/test/intrinsics/gen/textureDimensions/702c53.wgsl
+++ b/test/intrinsics/gen/textureDimensions/702c53.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d<rgba8unorm, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba8unorm, write>;
 
 // fn textureDimensions(texture: texture_storage_2d<rgba8unorm, write>) -> vec2<i32>
 fn textureDimensions_702c53() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_702c53();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_702c53();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_702c53();
 }
diff --git a/test/intrinsics/gen/textureDimensions/702c53.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/702c53.wgsl.expected.wgsl
index 484d6be..27d3074 100644
--- a/test/intrinsics/gen/textureDimensions/702c53.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/702c53.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d<rgba8unorm, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8unorm, write>;
 
 fn textureDimensions_702c53() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_702c53();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_702c53();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_702c53();
 }
diff --git a/test/intrinsics/gen/textureDimensions/72e5d6.wgsl b/test/intrinsics/gen/textureDimensions/72e5d6.wgsl
index cdf8de1..309d93f 100644
--- a/test/intrinsics/gen/textureDimensions/72e5d6.wgsl
+++ b/test/intrinsics/gen/textureDimensions/72e5d6.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_2d_array;
+@group(1) @binding(0) var arg_0: texture_depth_2d_array;
 
 // fn textureDimensions(texture: texture_depth_2d_array, level: i32) -> vec2<i32>
 fn textureDimensions_72e5d6() {
   var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_72e5d6();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_72e5d6();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_72e5d6();
 }
diff --git a/test/intrinsics/gen/textureDimensions/72e5d6.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/72e5d6.wgsl.expected.wgsl
index 967f86a..b00bd04 100644
--- a/test/intrinsics/gen/textureDimensions/72e5d6.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/72e5d6.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_2d_array;
+@group(1) @binding(0) var arg_0 : texture_depth_2d_array;
 
 fn textureDimensions_72e5d6() {
   var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_72e5d6();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_72e5d6();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_72e5d6();
 }
diff --git a/test/intrinsics/gen/textureDimensions/79df87.wgsl b/test/intrinsics/gen/textureDimensions/79df87.wgsl
index 43b59bf..4319d63 100644
--- a/test/intrinsics/gen/textureDimensions/79df87.wgsl
+++ b/test/intrinsics/gen/textureDimensions/79df87.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_1d<u32>;
+@group(1) @binding(0) var arg_0: texture_1d<u32>;
 
 // fn textureDimensions(texture: texture_1d<u32>, level: i32) -> i32
 fn textureDimensions_79df87() {
   var res: i32 = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_79df87();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_79df87();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_79df87();
 }
diff --git a/test/intrinsics/gen/textureDimensions/79df87.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/79df87.wgsl.expected.wgsl
index d604e48..63b16bf 100644
--- a/test/intrinsics/gen/textureDimensions/79df87.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/79df87.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_1d<u32>;
+@group(1) @binding(0) var arg_0 : texture_1d<u32>;
 
 fn textureDimensions_79df87() {
   var res : i32 = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_79df87();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_79df87();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_79df87();
 }
diff --git a/test/intrinsics/gen/textureDimensions/7bf826.wgsl b/test/intrinsics/gen/textureDimensions/7bf826.wgsl
index d32e468..5f5b47c 100644
--- a/test/intrinsics/gen/textureDimensions/7bf826.wgsl
+++ b/test/intrinsics/gen/textureDimensions/7bf826.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_2d_array;
+@group(1) @binding(0) var arg_0: texture_depth_2d_array;
 
 // fn textureDimensions(texture: texture_depth_2d_array) -> vec2<i32>
 fn textureDimensions_7bf826() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_7bf826();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_7bf826();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_7bf826();
 }
diff --git a/test/intrinsics/gen/textureDimensions/7bf826.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/7bf826.wgsl.expected.wgsl
index cf26867..50ddae7 100644
--- a/test/intrinsics/gen/textureDimensions/7bf826.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/7bf826.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_2d_array;
+@group(1) @binding(0) var arg_0 : texture_depth_2d_array;
 
 fn textureDimensions_7bf826() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_7bf826();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_7bf826();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_7bf826();
 }
diff --git a/test/intrinsics/gen/textureDimensions/7f5c2e.wgsl b/test/intrinsics/gen/textureDimensions/7f5c2e.wgsl
index 6a6865a..f74769c 100644
--- a/test/intrinsics/gen/textureDimensions/7f5c2e.wgsl
+++ b/test/intrinsics/gen/textureDimensions/7f5c2e.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d<rg32sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rg32sint, write>;
 
 // fn textureDimensions(texture: texture_storage_2d<rg32sint, write>) -> vec2<i32>
 fn textureDimensions_7f5c2e() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_7f5c2e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_7f5c2e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_7f5c2e();
 }
diff --git a/test/intrinsics/gen/textureDimensions/7f5c2e.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/7f5c2e.wgsl.expected.wgsl
index d85d357..0eecf68 100644
--- a/test/intrinsics/gen/textureDimensions/7f5c2e.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/7f5c2e.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d<rg32sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32sint, write>;
 
 fn textureDimensions_7f5c2e() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_7f5c2e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_7f5c2e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_7f5c2e();
 }
diff --git a/test/intrinsics/gen/textureDimensions/8028f3.wgsl b/test/intrinsics/gen/textureDimensions/8028f3.wgsl
index 2f8952c..ade160d 100644
--- a/test/intrinsics/gen/textureDimensions/8028f3.wgsl
+++ b/test/intrinsics/gen/textureDimensions/8028f3.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_3d<r32float, write>;
+@group(1) @binding(0) var arg_0: texture_storage_3d<r32float, write>;
 
 // fn textureDimensions(texture: texture_storage_3d<r32float, write>) -> vec3<i32>
 fn textureDimensions_8028f3() {
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_8028f3();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_8028f3();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_8028f3();
 }
diff --git a/test/intrinsics/gen/textureDimensions/8028f3.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/8028f3.wgsl.expected.wgsl
index 038913d..7ad5727 100644
--- a/test/intrinsics/gen/textureDimensions/8028f3.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/8028f3.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_3d<r32float, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_3d<r32float, write>;
 
 fn textureDimensions_8028f3() {
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_8028f3();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_8028f3();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_8028f3();
 }
diff --git a/test/intrinsics/gen/textureDimensions/811679.wgsl b/test/intrinsics/gen/textureDimensions/811679.wgsl
index 8fa0f14..70b9a6c 100644
--- a/test/intrinsics/gen/textureDimensions/811679.wgsl
+++ b/test/intrinsics/gen/textureDimensions/811679.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_3d<rgba32uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba32uint, write>;
 
 // fn textureDimensions(texture: texture_storage_3d<rgba32uint, write>) -> vec3<i32>
 fn textureDimensions_811679() {
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_811679();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_811679();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_811679();
 }
diff --git a/test/intrinsics/gen/textureDimensions/811679.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/811679.wgsl.expected.wgsl
index 25c0214..154cdde 100644
--- a/test/intrinsics/gen/textureDimensions/811679.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/811679.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_3d<rgba32uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32uint, write>;
 
 fn textureDimensions_811679() {
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_811679();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_811679();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_811679();
 }
diff --git a/test/intrinsics/gen/textureDimensions/820596.wgsl b/test/intrinsics/gen/textureDimensions/820596.wgsl
index f06ab5e..f17caf0 100644
--- a/test/intrinsics/gen/textureDimensions/820596.wgsl
+++ b/test/intrinsics/gen/textureDimensions/820596.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_3d<rg32uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rg32uint, write>;
 
 // fn textureDimensions(texture: texture_storage_3d<rg32uint, write>) -> vec3<i32>
 fn textureDimensions_820596() {
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_820596();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_820596();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_820596();
 }
diff --git a/test/intrinsics/gen/textureDimensions/820596.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/820596.wgsl.expected.wgsl
index c448f30..93106d5 100644
--- a/test/intrinsics/gen/textureDimensions/820596.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/820596.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_3d<rg32uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32uint, write>;
 
 fn textureDimensions_820596() {
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_820596();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_820596();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_820596();
 }
diff --git a/test/intrinsics/gen/textureDimensions/83ee5a.wgsl b/test/intrinsics/gen/textureDimensions/83ee5a.wgsl
index caa919d..ff1a2bb 100644
--- a/test/intrinsics/gen/textureDimensions/83ee5a.wgsl
+++ b/test/intrinsics/gen/textureDimensions/83ee5a.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d<rgba32sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba32sint, write>;
 
 // fn textureDimensions(texture: texture_storage_2d<rgba32sint, write>) -> vec2<i32>
 fn textureDimensions_83ee5a() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_83ee5a();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_83ee5a();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_83ee5a();
 }
diff --git a/test/intrinsics/gen/textureDimensions/83ee5a.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/83ee5a.wgsl.expected.wgsl
index fe3b545..3481e3c 100644
--- a/test/intrinsics/gen/textureDimensions/83ee5a.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/83ee5a.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d<rgba32sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32sint, write>;
 
 fn textureDimensions_83ee5a() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_83ee5a();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_83ee5a();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_83ee5a();
 }
diff --git a/test/intrinsics/gen/textureDimensions/85d556.wgsl b/test/intrinsics/gen/textureDimensions/85d556.wgsl
index 565c566..91d1ef8 100644
--- a/test/intrinsics/gen/textureDimensions/85d556.wgsl
+++ b/test/intrinsics/gen/textureDimensions/85d556.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d_array<f32>;
+@group(1) @binding(0) var arg_0: texture_2d_array<f32>;
 
 // fn textureDimensions(texture: texture_2d_array<f32>, level: i32) -> vec2<i32>
 fn textureDimensions_85d556() {
   var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_85d556();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_85d556();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_85d556();
 }
diff --git a/test/intrinsics/gen/textureDimensions/85d556.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/85d556.wgsl.expected.wgsl
index 66fc1a8..5045441 100644
--- a/test/intrinsics/gen/textureDimensions/85d556.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/85d556.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d_array<f32>;
+@group(1) @binding(0) var arg_0 : texture_2d_array<f32>;
 
 fn textureDimensions_85d556() {
   var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_85d556();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_85d556();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_85d556();
 }
diff --git a/test/intrinsics/gen/textureDimensions/88ad17.wgsl b/test/intrinsics/gen/textureDimensions/88ad17.wgsl
index 867ebde..7d9e6a8 100644
--- a/test/intrinsics/gen/textureDimensions/88ad17.wgsl
+++ b/test/intrinsics/gen/textureDimensions/88ad17.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_cube<u32>;
+@group(1) @binding(0) var arg_0: texture_cube<u32>;
 
 // fn textureDimensions(texture: texture_cube<u32>, level: i32) -> vec2<i32>
 fn textureDimensions_88ad17() {
   var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_88ad17();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_88ad17();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_88ad17();
 }
diff --git a/test/intrinsics/gen/textureDimensions/88ad17.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/88ad17.wgsl.expected.wgsl
index b2cb369..85f6381 100644
--- a/test/intrinsics/gen/textureDimensions/88ad17.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/88ad17.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_cube<u32>;
+@group(1) @binding(0) var arg_0 : texture_cube<u32>;
 
 fn textureDimensions_88ad17() {
   var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_88ad17();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_88ad17();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_88ad17();
 }
diff --git a/test/intrinsics/gen/textureDimensions/8aa4c4.wgsl b/test/intrinsics/gen/textureDimensions/8aa4c4.wgsl
index 90593b6..abe1be4 100644
--- a/test/intrinsics/gen/textureDimensions/8aa4c4.wgsl
+++ b/test/intrinsics/gen/textureDimensions/8aa4c4.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_3d<f32>;
+@group(1) @binding(0) var arg_0: texture_3d<f32>;
 
 // fn textureDimensions(texture: texture_3d<f32>) -> vec3<i32>
 fn textureDimensions_8aa4c4() {
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_8aa4c4();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_8aa4c4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_8aa4c4();
 }
diff --git a/test/intrinsics/gen/textureDimensions/8aa4c4.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/8aa4c4.wgsl.expected.wgsl
index 787b378..3a59eb6 100644
--- a/test/intrinsics/gen/textureDimensions/8aa4c4.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/8aa4c4.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_3d<f32>;
+@group(1) @binding(0) var arg_0 : texture_3d<f32>;
 
 fn textureDimensions_8aa4c4() {
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_8aa4c4();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_8aa4c4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_8aa4c4();
 }
diff --git a/test/intrinsics/gen/textureDimensions/8deb5e.wgsl b/test/intrinsics/gen/textureDimensions/8deb5e.wgsl
index 3aefda0..1e056c5 100644
--- a/test/intrinsics/gen/textureDimensions/8deb5e.wgsl
+++ b/test/intrinsics/gen/textureDimensions/8deb5e.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_3d<i32>;
+@group(1) @binding(0) var arg_0: texture_3d<i32>;
 
 // fn textureDimensions(texture: texture_3d<i32>) -> vec3<i32>
 fn textureDimensions_8deb5e() {
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_8deb5e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_8deb5e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_8deb5e();
 }
diff --git a/test/intrinsics/gen/textureDimensions/8deb5e.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/8deb5e.wgsl.expected.wgsl
index 9daad0c..1f088c3 100644
--- a/test/intrinsics/gen/textureDimensions/8deb5e.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/8deb5e.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_3d<i32>;
+@group(1) @binding(0) var arg_0 : texture_3d<i32>;
 
 fn textureDimensions_8deb5e() {
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_8deb5e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_8deb5e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_8deb5e();
 }
diff --git a/test/intrinsics/gen/textureDimensions/8f20bf.wgsl b/test/intrinsics/gen/textureDimensions/8f20bf.wgsl
index 87f2d27..11b2d27 100644
--- a/test/intrinsics/gen/textureDimensions/8f20bf.wgsl
+++ b/test/intrinsics/gen/textureDimensions/8f20bf.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_cube_array<f32>;
+@group(1) @binding(0) var arg_0: texture_cube_array<f32>;
 
 // fn textureDimensions(texture: texture_cube_array<f32>) -> vec2<i32>
 fn textureDimensions_8f20bf() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_8f20bf();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_8f20bf();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_8f20bf();
 }
diff --git a/test/intrinsics/gen/textureDimensions/8f20bf.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/8f20bf.wgsl.expected.wgsl
index 4908444..e299daf 100644
--- a/test/intrinsics/gen/textureDimensions/8f20bf.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/8f20bf.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_cube_array<f32>;
+@group(1) @binding(0) var arg_0 : texture_cube_array<f32>;
 
 fn textureDimensions_8f20bf() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_8f20bf();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_8f20bf();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_8f20bf();
 }
diff --git a/test/intrinsics/gen/textureDimensions/8fca0f.wgsl b/test/intrinsics/gen/textureDimensions/8fca0f.wgsl
index 336af29..e86c393 100644
--- a/test/intrinsics/gen/textureDimensions/8fca0f.wgsl
+++ b/test/intrinsics/gen/textureDimensions/8fca0f.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_3d<rgba32float, write>;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba32float, write>;
 
 // fn textureDimensions(texture: texture_storage_3d<rgba32float, write>) -> vec3<i32>
 fn textureDimensions_8fca0f() {
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_8fca0f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_8fca0f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_8fca0f();
 }
diff --git a/test/intrinsics/gen/textureDimensions/8fca0f.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/8fca0f.wgsl.expected.wgsl
index eee5870..4599b2e 100644
--- a/test/intrinsics/gen/textureDimensions/8fca0f.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/8fca0f.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_3d<rgba32float, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32float, write>;
 
 fn textureDimensions_8fca0f() {
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_8fca0f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_8fca0f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_8fca0f();
 }
diff --git a/test/intrinsics/gen/textureDimensions/90340b.wgsl b/test/intrinsics/gen/textureDimensions/90340b.wgsl
index 619bdb9..3528ecf 100644
--- a/test/intrinsics/gen/textureDimensions/90340b.wgsl
+++ b/test/intrinsics/gen/textureDimensions/90340b.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_cube_array;
+@group(1) @binding(0) var arg_0: texture_depth_cube_array;
 
 // fn textureDimensions(texture: texture_depth_cube_array) -> vec2<i32>
 fn textureDimensions_90340b() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_90340b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_90340b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_90340b();
 }
diff --git a/test/intrinsics/gen/textureDimensions/90340b.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/90340b.wgsl.expected.wgsl
index d8668d3..2addbf1 100644
--- a/test/intrinsics/gen/textureDimensions/90340b.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/90340b.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_cube_array;
+@group(1) @binding(0) var arg_0 : texture_depth_cube_array;
 
 fn textureDimensions_90340b() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_90340b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_90340b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_90340b();
 }
diff --git a/test/intrinsics/gen/textureDimensions/9042ab.wgsl b/test/intrinsics/gen/textureDimensions/9042ab.wgsl
index 549dc91..6a02da1 100644
--- a/test/intrinsics/gen/textureDimensions/9042ab.wgsl
+++ b/test/intrinsics/gen/textureDimensions/9042ab.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<rg32uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32uint, write>;
 
 // fn textureDimensions(texture: texture_storage_2d_array<rg32uint, write>) -> vec2<i32>
 fn textureDimensions_9042ab() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9042ab();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_9042ab();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9042ab();
 }
diff --git a/test/intrinsics/gen/textureDimensions/9042ab.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/9042ab.wgsl.expected.wgsl
index 49e1251..a2d8666 100644
--- a/test/intrinsics/gen/textureDimensions/9042ab.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/9042ab.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rg32uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, write>;
 
 fn textureDimensions_9042ab() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9042ab();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_9042ab();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9042ab();
 }
diff --git a/test/intrinsics/gen/textureDimensions/9393b0.wgsl b/test/intrinsics/gen/textureDimensions/9393b0.wgsl
index 0fd7903..0ce4834 100644
--- a/test/intrinsics/gen/textureDimensions/9393b0.wgsl
+++ b/test/intrinsics/gen/textureDimensions/9393b0.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_cube;
+@group(1) @binding(0) var arg_0: texture_depth_cube;
 
 // fn textureDimensions(texture: texture_depth_cube, level: i32) -> vec2<i32>
 fn textureDimensions_9393b0() {
   var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9393b0();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_9393b0();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9393b0();
 }
diff --git a/test/intrinsics/gen/textureDimensions/9393b0.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/9393b0.wgsl.expected.wgsl
index ddf6ecd..caacfdc 100644
--- a/test/intrinsics/gen/textureDimensions/9393b0.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/9393b0.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_cube;
+@group(1) @binding(0) var arg_0 : texture_depth_cube;
 
 fn textureDimensions_9393b0() {
   var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9393b0();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_9393b0();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9393b0();
 }
diff --git a/test/intrinsics/gen/textureDimensions/939fdb.wgsl b/test/intrinsics/gen/textureDimensions/939fdb.wgsl
index 3e5b64d..d29eec0 100644
--- a/test/intrinsics/gen/textureDimensions/939fdb.wgsl
+++ b/test/intrinsics/gen/textureDimensions/939fdb.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_2d;
+@group(1) @binding(0) var arg_0: texture_depth_2d;
 
 // fn textureDimensions(texture: texture_depth_2d) -> vec2<i32>
 fn textureDimensions_939fdb() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_939fdb();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_939fdb();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_939fdb();
 }
diff --git a/test/intrinsics/gen/textureDimensions/939fdb.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/939fdb.wgsl.expected.wgsl
index 3884061..12cc535 100644
--- a/test/intrinsics/gen/textureDimensions/939fdb.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/939fdb.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_2d;
+@group(1) @binding(0) var arg_0 : texture_depth_2d;
 
 fn textureDimensions_939fdb() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_939fdb();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_939fdb();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_939fdb();
 }
diff --git a/test/intrinsics/gen/textureDimensions/962dcd.wgsl b/test/intrinsics/gen/textureDimensions/962dcd.wgsl
index 5ffeb6e..8831eb6 100644
--- a/test/intrinsics/gen/textureDimensions/962dcd.wgsl
+++ b/test/intrinsics/gen/textureDimensions/962dcd.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_cube<i32>;
+@group(1) @binding(0) var arg_0: texture_cube<i32>;
 
 // fn textureDimensions(texture: texture_cube<i32>) -> vec2<i32>
 fn textureDimensions_962dcd() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_962dcd();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_962dcd();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_962dcd();
 }
diff --git a/test/intrinsics/gen/textureDimensions/962dcd.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/962dcd.wgsl.expected.wgsl
index e6edbf5..8c1d256 100644
--- a/test/intrinsics/gen/textureDimensions/962dcd.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/962dcd.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_cube<i32>;
+@group(1) @binding(0) var arg_0 : texture_cube<i32>;
 
 fn textureDimensions_962dcd() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_962dcd();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_962dcd();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_962dcd();
 }
diff --git a/test/intrinsics/gen/textureDimensions/9abfe5.wgsl b/test/intrinsics/gen/textureDimensions/9abfe5.wgsl
index 10553f9..463f897 100644
--- a/test/intrinsics/gen/textureDimensions/9abfe5.wgsl
+++ b/test/intrinsics/gen/textureDimensions/9abfe5.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<rgba32float, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32float, write>;
 
 // fn textureDimensions(texture: texture_storage_2d_array<rgba32float, write>) -> vec2<i32>
 fn textureDimensions_9abfe5() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9abfe5();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_9abfe5();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9abfe5();
 }
diff --git a/test/intrinsics/gen/textureDimensions/9abfe5.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/9abfe5.wgsl.expected.wgsl
index 8256199..fd97994 100644
--- a/test/intrinsics/gen/textureDimensions/9abfe5.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/9abfe5.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba32float, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, write>;
 
 fn textureDimensions_9abfe5() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9abfe5();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_9abfe5();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9abfe5();
 }
diff --git a/test/intrinsics/gen/textureDimensions/9c9c57.wgsl b/test/intrinsics/gen/textureDimensions/9c9c57.wgsl
index edd2e9e..62bdec3 100644
--- a/test/intrinsics/gen/textureDimensions/9c9c57.wgsl
+++ b/test/intrinsics/gen/textureDimensions/9c9c57.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d_array<i32>;
+@group(1) @binding(0) var arg_0: texture_2d_array<i32>;
 
 // fn textureDimensions(texture: texture_2d_array<i32>, level: i32) -> vec2<i32>
 fn textureDimensions_9c9c57() {
   var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9c9c57();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_9c9c57();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9c9c57();
 }
diff --git a/test/intrinsics/gen/textureDimensions/9c9c57.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/9c9c57.wgsl.expected.wgsl
index 4ee4826..ff8d321 100644
--- a/test/intrinsics/gen/textureDimensions/9c9c57.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/9c9c57.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d_array<i32>;
+@group(1) @binding(0) var arg_0 : texture_2d_array<i32>;
 
 fn textureDimensions_9c9c57() {
   var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9c9c57();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_9c9c57();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9c9c57();
 }
diff --git a/test/intrinsics/gen/textureDimensions/9da9e2.wgsl b/test/intrinsics/gen/textureDimensions/9da9e2.wgsl
index 0493107..6c82fcc 100644
--- a/test/intrinsics/gen/textureDimensions/9da9e2.wgsl
+++ b/test/intrinsics/gen/textureDimensions/9da9e2.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_1d<rgba8sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba8sint, write>;
 
 // fn textureDimensions(texture: texture_storage_1d<rgba8sint, write>) -> i32
 fn textureDimensions_9da9e2() {
   var res: i32 = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9da9e2();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_9da9e2();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9da9e2();
 }
diff --git a/test/intrinsics/gen/textureDimensions/9da9e2.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/9da9e2.wgsl.expected.wgsl
index adf06c2..3e1f941 100644
--- a/test/intrinsics/gen/textureDimensions/9da9e2.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/9da9e2.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rgba8sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8sint, write>;
 
 fn textureDimensions_9da9e2() {
   var res : i32 = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9da9e2();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_9da9e2();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9da9e2();
 }
diff --git a/test/intrinsics/gen/textureDimensions/9eb8d8.wgsl b/test/intrinsics/gen/textureDimensions/9eb8d8.wgsl
index 76733f7..09afe70 100644
--- a/test/intrinsics/gen/textureDimensions/9eb8d8.wgsl
+++ b/test/intrinsics/gen/textureDimensions/9eb8d8.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d<r32uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d<r32uint, write>;
 
 // fn textureDimensions(texture: texture_storage_2d<r32uint, write>) -> vec2<i32>
 fn textureDimensions_9eb8d8() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9eb8d8();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_9eb8d8();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9eb8d8();
 }
diff --git a/test/intrinsics/gen/textureDimensions/9eb8d8.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/9eb8d8.wgsl.expected.wgsl
index d530b91..58bc54f 100644
--- a/test/intrinsics/gen/textureDimensions/9eb8d8.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/9eb8d8.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d<r32uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d<r32uint, write>;
 
 fn textureDimensions_9eb8d8() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9eb8d8();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_9eb8d8();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9eb8d8();
 }
diff --git a/test/intrinsics/gen/textureDimensions/9f8e46.wgsl b/test/intrinsics/gen/textureDimensions/9f8e46.wgsl
index 6eb973a..1892e82 100644
--- a/test/intrinsics/gen/textureDimensions/9f8e46.wgsl
+++ b/test/intrinsics/gen/textureDimensions/9f8e46.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d<f32>;
+@group(1) @binding(0) var arg_0: texture_2d<f32>;
 
 // fn textureDimensions(texture: texture_2d<f32>) -> vec2<i32>
 fn textureDimensions_9f8e46() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9f8e46();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_9f8e46();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9f8e46();
 }
diff --git a/test/intrinsics/gen/textureDimensions/9f8e46.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/9f8e46.wgsl.expected.wgsl
index b4eaffd..df7b1a7 100644
--- a/test/intrinsics/gen/textureDimensions/9f8e46.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/9f8e46.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d<f32>;
+@group(1) @binding(0) var arg_0 : texture_2d<f32>;
 
 fn textureDimensions_9f8e46() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9f8e46();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_9f8e46();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9f8e46();
 }
diff --git a/test/intrinsics/gen/textureDimensions/a01845.wgsl b/test/intrinsics/gen/textureDimensions/a01845.wgsl
index 85a6007..3b7b193 100644
--- a/test/intrinsics/gen/textureDimensions/a01845.wgsl
+++ b/test/intrinsics/gen/textureDimensions/a01845.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_cube_array;
+@group(1) @binding(0) var arg_0: texture_depth_cube_array;
 
 // fn textureDimensions(texture: texture_depth_cube_array, level: i32) -> vec2<i32>
 fn textureDimensions_a01845() {
   var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_a01845();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_a01845();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_a01845();
 }
diff --git a/test/intrinsics/gen/textureDimensions/a01845.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/a01845.wgsl.expected.wgsl
index ab0f9eb..9f7a0da 100644
--- a/test/intrinsics/gen/textureDimensions/a01845.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/a01845.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_cube_array;
+@group(1) @binding(0) var arg_0 : texture_depth_cube_array;
 
 fn textureDimensions_a01845() {
   var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_a01845();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_a01845();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_a01845();
 }
diff --git a/test/intrinsics/gen/textureDimensions/a7d565.wgsl b/test/intrinsics/gen/textureDimensions/a7d565.wgsl
index b571c60..88779cb 100644
--- a/test/intrinsics/gen/textureDimensions/a7d565.wgsl
+++ b/test/intrinsics/gen/textureDimensions/a7d565.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_1d<u32>;
+@group(1) @binding(0) var arg_0: texture_1d<u32>;
 
 // fn textureDimensions(texture: texture_1d<u32>) -> i32
 fn textureDimensions_a7d565() {
   var res: i32 = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_a7d565();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_a7d565();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_a7d565();
 }
diff --git a/test/intrinsics/gen/textureDimensions/a7d565.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/a7d565.wgsl.expected.wgsl
index 73e5bfd..4cd2c97 100644
--- a/test/intrinsics/gen/textureDimensions/a7d565.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/a7d565.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_1d<u32>;
+@group(1) @binding(0) var arg_0 : texture_1d<u32>;
 
 fn textureDimensions_a7d565() {
   var res : i32 = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_a7d565();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_a7d565();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_a7d565();
 }
diff --git a/test/intrinsics/gen/textureDimensions/a863f2.wgsl b/test/intrinsics/gen/textureDimensions/a863f2.wgsl
index 8be9e9a..61b668c 100644
--- a/test/intrinsics/gen/textureDimensions/a863f2.wgsl
+++ b/test/intrinsics/gen/textureDimensions/a863f2.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_1d<r32float, write>;
+@group(1) @binding(0) var arg_0: texture_storage_1d<r32float, write>;
 
 // fn textureDimensions(texture: texture_storage_1d<r32float, write>) -> i32
 fn textureDimensions_a863f2() {
   var res: i32 = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_a863f2();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_a863f2();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_a863f2();
 }
diff --git a/test/intrinsics/gen/textureDimensions/a863f2.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/a863f2.wgsl.expected.wgsl
index 820ab3b..257be4e 100644
--- a/test/intrinsics/gen/textureDimensions/a863f2.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/a863f2.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_1d<r32float, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_1d<r32float, write>;
 
 fn textureDimensions_a863f2() {
   var res : i32 = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_a863f2();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_a863f2();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_a863f2();
 }
diff --git a/test/intrinsics/gen/textureDimensions/a9c9c1.wgsl b/test/intrinsics/gen/textureDimensions/a9c9c1.wgsl
index a2f5e33..e10dcd1 100644
--- a/test/intrinsics/gen/textureDimensions/a9c9c1.wgsl
+++ b/test/intrinsics/gen/textureDimensions/a9c9c1.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_cube<f32>;
+@group(1) @binding(0) var arg_0: texture_cube<f32>;
 
 // fn textureDimensions(texture: texture_cube<f32>, level: i32) -> vec2<i32>
 fn textureDimensions_a9c9c1() {
   var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_a9c9c1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_a9c9c1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_a9c9c1();
 }
diff --git a/test/intrinsics/gen/textureDimensions/a9c9c1.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/a9c9c1.wgsl.expected.wgsl
index 754fc31..e4125c9 100644
--- a/test/intrinsics/gen/textureDimensions/a9c9c1.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/a9c9c1.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_cube<f32>;
+@group(1) @binding(0) var arg_0 : texture_cube<f32>;
 
 fn textureDimensions_a9c9c1() {
   var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_a9c9c1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_a9c9c1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_a9c9c1();
 }
diff --git a/test/intrinsics/gen/textureDimensions/b0e16d.wgsl b/test/intrinsics/gen/textureDimensions/b0e16d.wgsl
index b4a35f0..a1cc174 100644
--- a/test/intrinsics/gen/textureDimensions/b0e16d.wgsl
+++ b/test/intrinsics/gen/textureDimensions/b0e16d.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d<i32>;
+@group(1) @binding(0) var arg_0: texture_2d<i32>;
 
 // fn textureDimensions(texture: texture_2d<i32>, level: i32) -> vec2<i32>
 fn textureDimensions_b0e16d() {
   var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_b0e16d();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_b0e16d();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_b0e16d();
 }
diff --git a/test/intrinsics/gen/textureDimensions/b0e16d.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/b0e16d.wgsl.expected.wgsl
index 665a62b..1bd9327 100644
--- a/test/intrinsics/gen/textureDimensions/b0e16d.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/b0e16d.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d<i32>;
+@group(1) @binding(0) var arg_0 : texture_2d<i32>;
 
 fn textureDimensions_b0e16d() {
   var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_b0e16d();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_b0e16d();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_b0e16d();
 }
diff --git a/test/intrinsics/gen/textureDimensions/b3c954.wgsl b/test/intrinsics/gen/textureDimensions/b3c954.wgsl
index 82f5c1f..bdd8173 100644
--- a/test/intrinsics/gen/textureDimensions/b3c954.wgsl
+++ b/test/intrinsics/gen/textureDimensions/b3c954.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_cube<u32>;
+@group(1) @binding(0) var arg_0: texture_cube<u32>;
 
 // fn textureDimensions(texture: texture_cube<u32>) -> vec2<i32>
 fn textureDimensions_b3c954() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_b3c954();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_b3c954();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_b3c954();
 }
diff --git a/test/intrinsics/gen/textureDimensions/b3c954.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/b3c954.wgsl.expected.wgsl
index 8f79cc0..de3b872 100644
--- a/test/intrinsics/gen/textureDimensions/b3c954.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/b3c954.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_cube<u32>;
+@group(1) @binding(0) var arg_0 : texture_cube<u32>;
 
 fn textureDimensions_b3c954() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_b3c954();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_b3c954();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_b3c954();
 }
diff --git a/test/intrinsics/gen/textureDimensions/b3e407.wgsl b/test/intrinsics/gen/textureDimensions/b3e407.wgsl
index e190837..8c7d95c 100644
--- a/test/intrinsics/gen/textureDimensions/b3e407.wgsl
+++ b/test/intrinsics/gen/textureDimensions/b3e407.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_1d<f32>;
+@group(1) @binding(0) var arg_0: texture_1d<f32>;
 
 // fn textureDimensions(texture: texture_1d<f32>, level: i32) -> i32
 fn textureDimensions_b3e407() {
   var res: i32 = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_b3e407();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_b3e407();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_b3e407();
 }
diff --git a/test/intrinsics/gen/textureDimensions/b3e407.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/b3e407.wgsl.expected.wgsl
index f39a1ad..8ebb58e 100644
--- a/test/intrinsics/gen/textureDimensions/b3e407.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/b3e407.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_1d<f32>;
+@group(1) @binding(0) var arg_0 : texture_1d<f32>;
 
 fn textureDimensions_b3e407() {
   var res : i32 = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_b3e407();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_b3e407();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_b3e407();
 }
diff --git a/test/intrinsics/gen/textureDimensions/b91240.wgsl b/test/intrinsics/gen/textureDimensions/b91240.wgsl
index e1f304c..baf2591 100644
--- a/test/intrinsics/gen/textureDimensions/b91240.wgsl
+++ b/test/intrinsics/gen/textureDimensions/b91240.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d<rgba8snorm, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba8snorm, write>;
 
 // fn textureDimensions(texture: texture_storage_2d<rgba8snorm, write>) -> vec2<i32>
 fn textureDimensions_b91240() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_b91240();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_b91240();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_b91240();
 }
diff --git a/test/intrinsics/gen/textureDimensions/b91240.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/b91240.wgsl.expected.wgsl
index 62d79c4..105338f 100644
--- a/test/intrinsics/gen/textureDimensions/b91240.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/b91240.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d<rgba8snorm, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8snorm, write>;
 
 fn textureDimensions_b91240() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_b91240();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_b91240();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_b91240();
 }
diff --git a/test/intrinsics/gen/textureDimensions/ba1481.wgsl b/test/intrinsics/gen/textureDimensions/ba1481.wgsl
index c684259..c372ea1 100644
--- a/test/intrinsics/gen/textureDimensions/ba1481.wgsl
+++ b/test/intrinsics/gen/textureDimensions/ba1481.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_external;
+@group(1) @binding(0) var arg_0: texture_external;
 
 // fn textureDimensions(texture: texture_external) -> vec2<i32>
 fn textureDimensions_ba1481() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_ba1481();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_ba1481();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_ba1481();
 }
diff --git a/test/intrinsics/gen/textureDimensions/ba1481.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/ba1481.wgsl.expected.wgsl
index 2ea9581..0bcf4af 100644
--- a/test/intrinsics/gen/textureDimensions/ba1481.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/ba1481.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_external;
+@group(1) @binding(0) var arg_0 : texture_external;
 
 fn textureDimensions_ba1481() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_ba1481();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_ba1481();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_ba1481();
 }
diff --git a/test/intrinsics/gen/textureDimensions/bb3dde.wgsl b/test/intrinsics/gen/textureDimensions/bb3dde.wgsl
index b284560..5519317 100644
--- a/test/intrinsics/gen/textureDimensions/bb3dde.wgsl
+++ b/test/intrinsics/gen/textureDimensions/bb3dde.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_3d<rgba32sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba32sint, write>;
 
 // fn textureDimensions(texture: texture_storage_3d<rgba32sint, write>) -> vec3<i32>
 fn textureDimensions_bb3dde() {
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_bb3dde();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_bb3dde();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_bb3dde();
 }
diff --git a/test/intrinsics/gen/textureDimensions/bb3dde.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/bb3dde.wgsl.expected.wgsl
index 006743e..005cae6 100644
--- a/test/intrinsics/gen/textureDimensions/bb3dde.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/bb3dde.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_3d<rgba32sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32sint, write>;
 
 fn textureDimensions_bb3dde() {
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_bb3dde();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_bb3dde();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_bb3dde();
 }
diff --git a/test/intrinsics/gen/textureDimensions/c30e75.wgsl b/test/intrinsics/gen/textureDimensions/c30e75.wgsl
index 1cffed5..275a7ca 100644
--- a/test/intrinsics/gen/textureDimensions/c30e75.wgsl
+++ b/test/intrinsics/gen/textureDimensions/c30e75.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d<r32sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d<r32sint, write>;
 
 // fn textureDimensions(texture: texture_storage_2d<r32sint, write>) -> vec2<i32>
 fn textureDimensions_c30e75() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_c30e75();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_c30e75();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_c30e75();
 }
diff --git a/test/intrinsics/gen/textureDimensions/c30e75.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/c30e75.wgsl.expected.wgsl
index a73590e..ecf60b5 100644
--- a/test/intrinsics/gen/textureDimensions/c30e75.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/c30e75.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d<r32sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d<r32sint, write>;
 
 fn textureDimensions_c30e75() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_c30e75();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_c30e75();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_c30e75();
 }
diff --git a/test/intrinsics/gen/textureDimensions/c7943d.wgsl b/test/intrinsics/gen/textureDimensions/c7943d.wgsl
index 887906f..98ad655 100644
--- a/test/intrinsics/gen/textureDimensions/c7943d.wgsl
+++ b/test/intrinsics/gen/textureDimensions/c7943d.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d<rgba8uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba8uint, write>;
 
 // fn textureDimensions(texture: texture_storage_2d<rgba8uint, write>) -> vec2<i32>
 fn textureDimensions_c7943d() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_c7943d();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_c7943d();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_c7943d();
 }
diff --git a/test/intrinsics/gen/textureDimensions/c7943d.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/c7943d.wgsl.expected.wgsl
index fb7bb2b..d664f33 100644
--- a/test/intrinsics/gen/textureDimensions/c7943d.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/c7943d.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d<rgba8uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8uint, write>;
 
 fn textureDimensions_c7943d() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_c7943d();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_c7943d();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_c7943d();
 }
diff --git a/test/intrinsics/gen/textureDimensions/cc968c.wgsl b/test/intrinsics/gen/textureDimensions/cc968c.wgsl
index 9bdef45..2c32bb9 100644
--- a/test/intrinsics/gen/textureDimensions/cc968c.wgsl
+++ b/test/intrinsics/gen/textureDimensions/cc968c.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_1d<rg32sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rg32sint, write>;
 
 // fn textureDimensions(texture: texture_storage_1d<rg32sint, write>) -> i32
 fn textureDimensions_cc968c() {
   var res: i32 = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_cc968c();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_cc968c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_cc968c();
 }
diff --git a/test/intrinsics/gen/textureDimensions/cc968c.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/cc968c.wgsl.expected.wgsl
index 2fc8088..8198585 100644
--- a/test/intrinsics/gen/textureDimensions/cc968c.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/cc968c.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rg32sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32sint, write>;
 
 fn textureDimensions_cc968c() {
   var res : i32 = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_cc968c();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_cc968c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_cc968c();
 }
diff --git a/test/intrinsics/gen/textureDimensions/cccc8f.wgsl b/test/intrinsics/gen/textureDimensions/cccc8f.wgsl
index 887baef..71072cc 100644
--- a/test/intrinsics/gen/textureDimensions/cccc8f.wgsl
+++ b/test/intrinsics/gen/textureDimensions/cccc8f.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_1d<rgba8snorm, write>;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba8snorm, write>;
 
 // fn textureDimensions(texture: texture_storage_1d<rgba8snorm, write>) -> i32
 fn textureDimensions_cccc8f() {
   var res: i32 = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_cccc8f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_cccc8f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_cccc8f();
 }
diff --git a/test/intrinsics/gen/textureDimensions/cccc8f.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/cccc8f.wgsl.expected.wgsl
index 5d2c26d..a4d44f0 100644
--- a/test/intrinsics/gen/textureDimensions/cccc8f.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/cccc8f.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rgba8snorm, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8snorm, write>;
 
 fn textureDimensions_cccc8f() {
   var res : i32 = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_cccc8f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_cccc8f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_cccc8f();
 }
diff --git a/test/intrinsics/gen/textureDimensions/cd76a7.wgsl b/test/intrinsics/gen/textureDimensions/cd76a7.wgsl
index b6bcb47..79da9f1 100644
--- a/test/intrinsics/gen/textureDimensions/cd76a7.wgsl
+++ b/test/intrinsics/gen/textureDimensions/cd76a7.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_3d<rgba8unorm, write>;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba8unorm, write>;
 
 // fn textureDimensions(texture: texture_storage_3d<rgba8unorm, write>) -> vec3<i32>
 fn textureDimensions_cd76a7() {
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_cd76a7();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_cd76a7();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_cd76a7();
 }
diff --git a/test/intrinsics/gen/textureDimensions/cd76a7.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/cd76a7.wgsl.expected.wgsl
index 99d7eac..139070f 100644
--- a/test/intrinsics/gen/textureDimensions/cd76a7.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/cd76a7.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_3d<rgba8unorm, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8unorm, write>;
 
 fn textureDimensions_cd76a7() {
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_cd76a7();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_cd76a7();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_cd76a7();
 }
diff --git a/test/intrinsics/gen/textureDimensions/cdf473.wgsl b/test/intrinsics/gen/textureDimensions/cdf473.wgsl
index aad5966..25ceca3 100644
--- a/test/intrinsics/gen/textureDimensions/cdf473.wgsl
+++ b/test/intrinsics/gen/textureDimensions/cdf473.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<rgba16sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16sint, write>;
 
 // fn textureDimensions(texture: texture_storage_2d_array<rgba16sint, write>) -> vec2<i32>
 fn textureDimensions_cdf473() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_cdf473();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_cdf473();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_cdf473();
 }
diff --git a/test/intrinsics/gen/textureDimensions/cdf473.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/cdf473.wgsl.expected.wgsl
index 4b41e3c..31373c0 100644
--- a/test/intrinsics/gen/textureDimensions/cdf473.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/cdf473.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba16sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, write>;
 
 fn textureDimensions_cdf473() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_cdf473();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_cdf473();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_cdf473();
 }
diff --git a/test/intrinsics/gen/textureDimensions/cec841.wgsl b/test/intrinsics/gen/textureDimensions/cec841.wgsl
index be24ab4..0710769 100644
--- a/test/intrinsics/gen/textureDimensions/cec841.wgsl
+++ b/test/intrinsics/gen/textureDimensions/cec841.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d_array<f32>;
+@group(1) @binding(0) var arg_0: texture_2d_array<f32>;
 
 // fn textureDimensions(texture: texture_2d_array<f32>) -> vec2<i32>
 fn textureDimensions_cec841() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_cec841();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_cec841();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_cec841();
 }
diff --git a/test/intrinsics/gen/textureDimensions/cec841.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/cec841.wgsl.expected.wgsl
index 0ae00a7..d1667a0 100644
--- a/test/intrinsics/gen/textureDimensions/cec841.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/cec841.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d_array<f32>;
+@group(1) @binding(0) var arg_0 : texture_2d_array<f32>;
 
 fn textureDimensions_cec841() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_cec841();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_cec841();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_cec841();
 }
diff --git a/test/intrinsics/gen/textureDimensions/cf7e43.wgsl b/test/intrinsics/gen/textureDimensions/cf7e43.wgsl
index e855d3f..2768cce 100644
--- a/test/intrinsics/gen/textureDimensions/cf7e43.wgsl
+++ b/test/intrinsics/gen/textureDimensions/cf7e43.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_3d<rgba8snorm, write>;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba8snorm, write>;
 
 // fn textureDimensions(texture: texture_storage_3d<rgba8snorm, write>) -> vec3<i32>
 fn textureDimensions_cf7e43() {
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_cf7e43();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_cf7e43();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_cf7e43();
 }
diff --git a/test/intrinsics/gen/textureDimensions/cf7e43.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/cf7e43.wgsl.expected.wgsl
index ea45fb6..fd5550b 100644
--- a/test/intrinsics/gen/textureDimensions/cf7e43.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/cf7e43.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_3d<rgba8snorm, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8snorm, write>;
 
 fn textureDimensions_cf7e43() {
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_cf7e43();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_cf7e43();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_cf7e43();
 }
diff --git a/test/intrinsics/gen/textureDimensions/d125bc.wgsl b/test/intrinsics/gen/textureDimensions/d125bc.wgsl
index 3f76480..e380cb2 100644
--- a/test/intrinsics/gen/textureDimensions/d125bc.wgsl
+++ b/test/intrinsics/gen/textureDimensions/d125bc.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_cube<f32>;
+@group(1) @binding(0) var arg_0: texture_cube<f32>;
 
 // fn textureDimensions(texture: texture_cube<f32>) -> vec2<i32>
 fn textureDimensions_d125bc() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_d125bc();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_d125bc();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_d125bc();
 }
diff --git a/test/intrinsics/gen/textureDimensions/d125bc.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/d125bc.wgsl.expected.wgsl
index e7de8ad..e8b2c56 100644
--- a/test/intrinsics/gen/textureDimensions/d125bc.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/d125bc.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_cube<f32>;
+@group(1) @binding(0) var arg_0 : texture_cube<f32>;
 
 fn textureDimensions_d125bc() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_d125bc();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_d125bc();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_d125bc();
 }
diff --git a/test/intrinsics/gen/textureDimensions/d83c45.wgsl b/test/intrinsics/gen/textureDimensions/d83c45.wgsl
index a15bcc5..feec4d5 100644
--- a/test/intrinsics/gen/textureDimensions/d83c45.wgsl
+++ b/test/intrinsics/gen/textureDimensions/d83c45.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_cube_array<u32>;
+@group(1) @binding(0) var arg_0: texture_cube_array<u32>;
 
 // fn textureDimensions(texture: texture_cube_array<u32>, level: i32) -> vec2<i32>
 fn textureDimensions_d83c45() {
   var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_d83c45();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_d83c45();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_d83c45();
 }
diff --git a/test/intrinsics/gen/textureDimensions/d83c45.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/d83c45.wgsl.expected.wgsl
index 36e283f..4134f65 100644
--- a/test/intrinsics/gen/textureDimensions/d83c45.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/d83c45.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_cube_array<u32>;
+@group(1) @binding(0) var arg_0 : texture_cube_array<u32>;
 
 fn textureDimensions_d83c45() {
   var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_d83c45();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_d83c45();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_d83c45();
 }
diff --git a/test/intrinsics/gen/textureDimensions/daf7c0.wgsl b/test/intrinsics/gen/textureDimensions/daf7c0.wgsl
index 0a934aa..5fe4ee1 100644
--- a/test/intrinsics/gen/textureDimensions/daf7c0.wgsl
+++ b/test/intrinsics/gen/textureDimensions/daf7c0.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_multisampled_2d<i32>;
+@group(1) @binding(0) var arg_0: texture_multisampled_2d<i32>;
 
 // fn textureDimensions(texture: texture_multisampled_2d<i32>) -> vec2<i32>
 fn textureDimensions_daf7c0() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_daf7c0();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_daf7c0();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_daf7c0();
 }
diff --git a/test/intrinsics/gen/textureDimensions/daf7c0.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/daf7c0.wgsl.expected.wgsl
index 6660e21..6d2fbeb 100644
--- a/test/intrinsics/gen/textureDimensions/daf7c0.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/daf7c0.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_multisampled_2d<i32>;
+@group(1) @binding(0) var arg_0 : texture_multisampled_2d<i32>;
 
 fn textureDimensions_daf7c0() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_daf7c0();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_daf7c0();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_daf7c0();
 }
diff --git a/test/intrinsics/gen/textureDimensions/dc2dd0.wgsl b/test/intrinsics/gen/textureDimensions/dc2dd0.wgsl
index 5bc6318..d9da1be 100644
--- a/test/intrinsics/gen/textureDimensions/dc2dd0.wgsl
+++ b/test/intrinsics/gen/textureDimensions/dc2dd0.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_1d<rgba8uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba8uint, write>;
 
 // fn textureDimensions(texture: texture_storage_1d<rgba8uint, write>) -> i32
 fn textureDimensions_dc2dd0() {
   var res: i32 = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_dc2dd0();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_dc2dd0();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_dc2dd0();
 }
diff --git a/test/intrinsics/gen/textureDimensions/dc2dd0.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/dc2dd0.wgsl.expected.wgsl
index 311cfef..5151ae9 100644
--- a/test/intrinsics/gen/textureDimensions/dc2dd0.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/dc2dd0.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rgba8uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8uint, write>;
 
 fn textureDimensions_dc2dd0() {
   var res : i32 = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_dc2dd0();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_dc2dd0();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_dc2dd0();
 }
diff --git a/test/intrinsics/gen/textureDimensions/e927be.wgsl b/test/intrinsics/gen/textureDimensions/e927be.wgsl
index cd3d114..38da82e 100644
--- a/test/intrinsics/gen/textureDimensions/e927be.wgsl
+++ b/test/intrinsics/gen/textureDimensions/e927be.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_cube_array<i32>;
+@group(1) @binding(0) var arg_0: texture_cube_array<i32>;
 
 // fn textureDimensions(texture: texture_cube_array<i32>) -> vec2<i32>
 fn textureDimensions_e927be() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_e927be();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_e927be();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_e927be();
 }
diff --git a/test/intrinsics/gen/textureDimensions/e927be.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/e927be.wgsl.expected.wgsl
index 3fa38e7..637bad6 100644
--- a/test/intrinsics/gen/textureDimensions/e927be.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/e927be.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_cube_array<i32>;
+@group(1) @binding(0) var arg_0 : texture_cube_array<i32>;
 
 fn textureDimensions_e927be() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_e927be();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_e927be();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_e927be();
 }
diff --git a/test/intrinsics/gen/textureDimensions/e9e96c.wgsl b/test/intrinsics/gen/textureDimensions/e9e96c.wgsl
index 55fcd5f..e2ae8ec 100644
--- a/test/intrinsics/gen/textureDimensions/e9e96c.wgsl
+++ b/test/intrinsics/gen/textureDimensions/e9e96c.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<r32float, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<r32float, write>;
 
 // fn textureDimensions(texture: texture_storage_2d_array<r32float, write>) -> vec2<i32>
 fn textureDimensions_e9e96c() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_e9e96c();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_e9e96c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_e9e96c();
 }
diff --git a/test/intrinsics/gen/textureDimensions/e9e96c.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/e9e96c.wgsl.expected.wgsl
index 2a7e11b..0f84fac 100644
--- a/test/intrinsics/gen/textureDimensions/e9e96c.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/e9e96c.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<r32float, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, write>;
 
 fn textureDimensions_e9e96c() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_e9e96c();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_e9e96c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_e9e96c();
 }
diff --git a/test/intrinsics/gen/textureDimensions/ef5b89.wgsl b/test/intrinsics/gen/textureDimensions/ef5b89.wgsl
index 2ee889a..80750e3 100644
--- a/test/intrinsics/gen/textureDimensions/ef5b89.wgsl
+++ b/test/intrinsics/gen/textureDimensions/ef5b89.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_multisampled_2d<f32>;
+@group(1) @binding(0) var arg_0: texture_multisampled_2d<f32>;
 
 // fn textureDimensions(texture: texture_multisampled_2d<f32>) -> vec2<i32>
 fn textureDimensions_ef5b89() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_ef5b89();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_ef5b89();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_ef5b89();
 }
diff --git a/test/intrinsics/gen/textureDimensions/ef5b89.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/ef5b89.wgsl.expected.wgsl
index be6e296..f758962 100644
--- a/test/intrinsics/gen/textureDimensions/ef5b89.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/ef5b89.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_multisampled_2d<f32>;
+@group(1) @binding(0) var arg_0 : texture_multisampled_2d<f32>;
 
 fn textureDimensions_ef5b89() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_ef5b89();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_ef5b89();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_ef5b89();
 }
diff --git a/test/intrinsics/gen/textureDimensions/efc8a4.wgsl b/test/intrinsics/gen/textureDimensions/efc8a4.wgsl
index 121c855..b7dc738 100644
--- a/test/intrinsics/gen/textureDimensions/efc8a4.wgsl
+++ b/test/intrinsics/gen/textureDimensions/efc8a4.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_3d<i32>;
+@group(1) @binding(0) var arg_0: texture_3d<i32>;
 
 // fn textureDimensions(texture: texture_3d<i32>, level: i32) -> vec3<i32>
 fn textureDimensions_efc8a4() {
   var res: vec3<i32> = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_efc8a4();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_efc8a4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_efc8a4();
 }
diff --git a/test/intrinsics/gen/textureDimensions/efc8a4.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/efc8a4.wgsl.expected.wgsl
index 213bf04..ba6f1db 100644
--- a/test/intrinsics/gen/textureDimensions/efc8a4.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/efc8a4.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_3d<i32>;
+@group(1) @binding(0) var arg_0 : texture_3d<i32>;
 
 fn textureDimensions_efc8a4() {
   var res : vec3<i32> = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_efc8a4();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_efc8a4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_efc8a4();
 }
diff --git a/test/intrinsics/gen/textureDimensions/f60bdb.wgsl b/test/intrinsics/gen/textureDimensions/f60bdb.wgsl
index dd3c2da..13edf77 100644
--- a/test/intrinsics/gen/textureDimensions/f60bdb.wgsl
+++ b/test/intrinsics/gen/textureDimensions/f60bdb.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_multisampled_2d;
+@group(1) @binding(0) var arg_0: texture_depth_multisampled_2d;
 
 // fn textureDimensions(texture: texture_depth_multisampled_2d) -> vec2<i32>
 fn textureDimensions_f60bdb() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_f60bdb();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_f60bdb();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_f60bdb();
 }
diff --git a/test/intrinsics/gen/textureDimensions/f60bdb.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/f60bdb.wgsl.expected.wgsl
index 9a0b4b5..04d2455 100644
--- a/test/intrinsics/gen/textureDimensions/f60bdb.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/f60bdb.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_multisampled_2d;
+@group(1) @binding(0) var arg_0 : texture_depth_multisampled_2d;
 
 fn textureDimensions_f60bdb() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_f60bdb();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_f60bdb();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_f60bdb();
 }
diff --git a/test/intrinsics/gen/textureDimensions/f7145b.wgsl b/test/intrinsics/gen/textureDimensions/f7145b.wgsl
index f0887c3..f8da7e1 100644
--- a/test/intrinsics/gen/textureDimensions/f7145b.wgsl
+++ b/test/intrinsics/gen/textureDimensions/f7145b.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d<u32>;
+@group(1) @binding(0) var arg_0: texture_2d<u32>;
 
 // fn textureDimensions(texture: texture_2d<u32>, level: i32) -> vec2<i32>
 fn textureDimensions_f7145b() {
   var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_f7145b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_f7145b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_f7145b();
 }
diff --git a/test/intrinsics/gen/textureDimensions/f7145b.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/f7145b.wgsl.expected.wgsl
index 86aa13f..dd3335d 100644
--- a/test/intrinsics/gen/textureDimensions/f7145b.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/f7145b.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d<u32>;
+@group(1) @binding(0) var arg_0 : texture_2d<u32>;
 
 fn textureDimensions_f7145b() {
   var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_f7145b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_f7145b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_f7145b();
 }
diff --git a/test/intrinsics/gen/textureDimensions/f931c7.wgsl b/test/intrinsics/gen/textureDimensions/f931c7.wgsl
index 5fdab32..aa29d97 100644
--- a/test/intrinsics/gen/textureDimensions/f931c7.wgsl
+++ b/test/intrinsics/gen/textureDimensions/f931c7.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d<r32float, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d<r32float, write>;
 
 // fn textureDimensions(texture: texture_storage_2d<r32float, write>) -> vec2<i32>
 fn textureDimensions_f931c7() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_f931c7();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_f931c7();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_f931c7();
 }
diff --git a/test/intrinsics/gen/textureDimensions/f931c7.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/f931c7.wgsl.expected.wgsl
index caf7d59..14de15a 100644
--- a/test/intrinsics/gen/textureDimensions/f931c7.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/f931c7.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d<r32float, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d<r32float, write>;
 
 fn textureDimensions_f931c7() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_f931c7();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_f931c7();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_f931c7();
 }
diff --git a/test/intrinsics/gen/textureDimensions/fa9859.wgsl b/test/intrinsics/gen/textureDimensions/fa9859.wgsl
index 13815d7..b6a1a04 100644
--- a/test/intrinsics/gen/textureDimensions/fa9859.wgsl
+++ b/test/intrinsics/gen/textureDimensions/fa9859.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d<i32>;
+@group(1) @binding(0) var arg_0: texture_2d<i32>;
 
 // fn textureDimensions(texture: texture_2d<i32>) -> vec2<i32>
 fn textureDimensions_fa9859() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_fa9859();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_fa9859();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_fa9859();
 }
diff --git a/test/intrinsics/gen/textureDimensions/fa9859.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/fa9859.wgsl.expected.wgsl
index 772b8b8..58b2bd0 100644
--- a/test/intrinsics/gen/textureDimensions/fa9859.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/fa9859.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d<i32>;
+@group(1) @binding(0) var arg_0 : texture_2d<i32>;
 
 fn textureDimensions_fa9859() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_fa9859();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_fa9859();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_fa9859();
 }
diff --git a/test/intrinsics/gen/textureDimensions/fb5670.wgsl b/test/intrinsics/gen/textureDimensions/fb5670.wgsl
index a6b1d31..5151597 100644
--- a/test/intrinsics/gen/textureDimensions/fb5670.wgsl
+++ b/test/intrinsics/gen/textureDimensions/fb5670.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<rg32float, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32float, write>;
 
 // fn textureDimensions(texture: texture_storage_2d_array<rg32float, write>) -> vec2<i32>
 fn textureDimensions_fb5670() {
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_fb5670();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_fb5670();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_fb5670();
 }
diff --git a/test/intrinsics/gen/textureDimensions/fb5670.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/fb5670.wgsl.expected.wgsl
index e5d460d..79fcdb8 100644
--- a/test/intrinsics/gen/textureDimensions/fb5670.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/fb5670.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rg32float, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, write>;
 
 fn textureDimensions_fb5670() {
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_fb5670();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_fb5670();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_fb5670();
 }
diff --git a/test/intrinsics/gen/textureDimensions/fcac78.wgsl b/test/intrinsics/gen/textureDimensions/fcac78.wgsl
index beaf94c..6a3c215 100644
--- a/test/intrinsics/gen/textureDimensions/fcac78.wgsl
+++ b/test/intrinsics/gen/textureDimensions/fcac78.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_3d<rgba8uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba8uint, write>;
 
 // fn textureDimensions(texture: texture_storage_3d<rgba8uint, write>) -> vec3<i32>
 fn textureDimensions_fcac78() {
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_fcac78();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_fcac78();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_fcac78();
 }
diff --git a/test/intrinsics/gen/textureDimensions/fcac78.wgsl.expected.wgsl b/test/intrinsics/gen/textureDimensions/fcac78.wgsl.expected.wgsl
index 6b708dc..bd243ab 100644
--- a/test/intrinsics/gen/textureDimensions/fcac78.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureDimensions/fcac78.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_3d<rgba8uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8uint, write>;
 
 fn textureDimensions_fcac78() {
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_fcac78();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureDimensions_fcac78();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureDimensions_fcac78();
 }
diff --git a/test/intrinsics/gen/textureGather/01305f.wgsl b/test/intrinsics/gen/textureGather/01305f.wgsl
index 15f035c..55af300 100644
--- a/test/intrinsics/gen/textureGather/01305f.wgsl
+++ b/test/intrinsics/gen/textureGather/01305f.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(1)]] var arg_1: texture_2d_array<u32>;
-[[group(1), binding(2)]] var arg_2: sampler;
+@group(1) @binding(1) var arg_1: texture_2d_array<u32>;
+@group(1) @binding(2) var arg_2: sampler;
 
 // fn textureGather(component: i32, texture: texture_2d_array<u32>, sampler: sampler, coords: vec2<f32>, array_index: i32) -> vec4<u32>
 fn textureGather_01305f() {
   var res: vec4<u32> = textureGather(1, arg_1, arg_2, vec2<f32>(), 1);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_01305f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_01305f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_01305f();
 }
diff --git a/test/intrinsics/gen/textureGather/01305f.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/01305f.wgsl.expected.wgsl
index da4c38f..b683348 100644
--- a/test/intrinsics/gen/textureGather/01305f.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureGather/01305f.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(1)]] var arg_1 : texture_2d_array<u32>;
+@group(1) @binding(1) var arg_1 : texture_2d_array<u32>;
 
-[[group(1), binding(2)]] var arg_2 : sampler;
+@group(1) @binding(2) var arg_2 : sampler;
 
 fn textureGather_01305f() {
   var res : vec4<u32> = textureGather(1, arg_1, arg_2, vec2<f32>(), 1);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_01305f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_01305f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_01305f();
 }
diff --git a/test/intrinsics/gen/textureGather/06030a.wgsl b/test/intrinsics/gen/textureGather/06030a.wgsl
index 1e42042..3ae4106 100644
--- a/test/intrinsics/gen/textureGather/06030a.wgsl
+++ b/test/intrinsics/gen/textureGather/06030a.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(1)]] var arg_1: texture_2d_array<f32>;
-[[group(1), binding(2)]] var arg_2: sampler;
+@group(1) @binding(1) var arg_1: texture_2d_array<f32>;
+@group(1) @binding(2) var arg_2: sampler;
 
 // fn textureGather(component: i32, texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: i32, offset: vec2<i32>) -> vec4<f32>
 fn textureGather_06030a() {
   var res: vec4<f32> = textureGather(1, arg_1, arg_2, vec2<f32>(), 1, vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_06030a();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_06030a();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_06030a();
 }
diff --git a/test/intrinsics/gen/textureGather/06030a.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/06030a.wgsl.expected.wgsl
index 7faad62..6709ed6 100644
--- a/test/intrinsics/gen/textureGather/06030a.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureGather/06030a.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(1)]] var arg_1 : texture_2d_array<f32>;
+@group(1) @binding(1) var arg_1 : texture_2d_array<f32>;
 
-[[group(1), binding(2)]] var arg_2 : sampler;
+@group(1) @binding(2) var arg_2 : sampler;
 
 fn textureGather_06030a() {
   var res : vec4<f32> = textureGather(1, arg_1, arg_2, vec2<f32>(), 1, vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_06030a();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_06030a();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_06030a();
 }
diff --git a/test/intrinsics/gen/textureGather/10c554.wgsl b/test/intrinsics/gen/textureGather/10c554.wgsl
index d64a317..7abaa7f 100644
--- a/test/intrinsics/gen/textureGather/10c554.wgsl
+++ b/test/intrinsics/gen/textureGather/10c554.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_cube;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_depth_cube;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureGather(texture: texture_depth_cube, sampler: sampler, coords: vec3<f32>) -> vec4<f32>
 fn textureGather_10c554() {
   var res: vec4<f32> = textureGather(arg_0, arg_1, vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_10c554();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_10c554();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_10c554();
 }
diff --git a/test/intrinsics/gen/textureGather/10c554.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/10c554.wgsl.expected.wgsl
index 748e379..71d449e 100644
--- a/test/intrinsics/gen/textureGather/10c554.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureGather/10c554.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_cube;
+@group(1) @binding(0) var arg_0 : texture_depth_cube;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureGather_10c554() {
   var res : vec4<f32> = textureGather(arg_0, arg_1, vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_10c554();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_10c554();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_10c554();
 }
diff --git a/test/intrinsics/gen/textureGather/15d79c.wgsl b/test/intrinsics/gen/textureGather/15d79c.wgsl
index 55c4e46..47bc2da 100644
--- a/test/intrinsics/gen/textureGather/15d79c.wgsl
+++ b/test/intrinsics/gen/textureGather/15d79c.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(1)]] var arg_1: texture_2d<f32>;
-[[group(1), binding(2)]] var arg_2: sampler;
+@group(1) @binding(1) var arg_1: texture_2d<f32>;
+@group(1) @binding(2) var arg_2: sampler;
 
 // fn textureGather(component: i32, texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, offset: vec2<i32>) -> vec4<f32>
 fn textureGather_15d79c() {
   var res: vec4<f32> = textureGather(1, arg_1, arg_2, vec2<f32>(), vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_15d79c();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_15d79c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_15d79c();
 }
diff --git a/test/intrinsics/gen/textureGather/15d79c.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/15d79c.wgsl.expected.wgsl
index 5319046..14d9203 100644
--- a/test/intrinsics/gen/textureGather/15d79c.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureGather/15d79c.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(1)]] var arg_1 : texture_2d<f32>;
+@group(1) @binding(1) var arg_1 : texture_2d<f32>;
 
-[[group(1), binding(2)]] var arg_2 : sampler;
+@group(1) @binding(2) var arg_2 : sampler;
 
 fn textureGather_15d79c() {
   var res : vec4<f32> = textureGather(1, arg_1, arg_2, vec2<f32>(), vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_15d79c();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_15d79c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_15d79c();
 }
diff --git a/test/intrinsics/gen/textureGather/2e0ed5.wgsl b/test/intrinsics/gen/textureGather/2e0ed5.wgsl
index c8c1104..ff561c9 100644
--- a/test/intrinsics/gen/textureGather/2e0ed5.wgsl
+++ b/test/intrinsics/gen/textureGather/2e0ed5.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_2d;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_depth_2d;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureGather(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>) -> vec4<f32>
 fn textureGather_2e0ed5() {
   var res: vec4<f32> = textureGather(arg_0, arg_1, vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_2e0ed5();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_2e0ed5();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_2e0ed5();
 }
diff --git a/test/intrinsics/gen/textureGather/2e0ed5.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/2e0ed5.wgsl.expected.wgsl
index 3439a78..f3b60b8 100644
--- a/test/intrinsics/gen/textureGather/2e0ed5.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureGather/2e0ed5.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_2d;
+@group(1) @binding(0) var arg_0 : texture_depth_2d;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureGather_2e0ed5() {
   var res : vec4<f32> = textureGather(arg_0, arg_1, vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_2e0ed5();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_2e0ed5();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_2e0ed5();
 }
diff --git a/test/intrinsics/gen/textureGather/3112e8.wgsl b/test/intrinsics/gen/textureGather/3112e8.wgsl
index e556b30..a08ae70 100644
--- a/test/intrinsics/gen/textureGather/3112e8.wgsl
+++ b/test/intrinsics/gen/textureGather/3112e8.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(1)]] var arg_1: texture_cube_array<f32>;
-[[group(1), binding(2)]] var arg_2: sampler;
+@group(1) @binding(1) var arg_1: texture_cube_array<f32>;
+@group(1) @binding(2) var arg_2: sampler;
 
 // fn textureGather(component: i32, texture: texture_cube_array<f32>, sampler: sampler, coords: vec3<f32>, array_index: i32) -> vec4<f32>
 fn textureGather_3112e8() {
   var res: vec4<f32> = textureGather(1, arg_1, arg_2, vec3<f32>(), 1);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_3112e8();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_3112e8();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_3112e8();
 }
diff --git a/test/intrinsics/gen/textureGather/3112e8.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/3112e8.wgsl.expected.wgsl
index 5b0bd78..3f7ac9e 100644
--- a/test/intrinsics/gen/textureGather/3112e8.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureGather/3112e8.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(1)]] var arg_1 : texture_cube_array<f32>;
+@group(1) @binding(1) var arg_1 : texture_cube_array<f32>;
 
-[[group(1), binding(2)]] var arg_2 : sampler;
+@group(1) @binding(2) var arg_2 : sampler;
 
 fn textureGather_3112e8() {
   var res : vec4<f32> = textureGather(1, arg_1, arg_2, vec3<f32>(), 1);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_3112e8();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_3112e8();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_3112e8();
 }
diff --git a/test/intrinsics/gen/textureGather/3c527e.wgsl b/test/intrinsics/gen/textureGather/3c527e.wgsl
index 1877c38..f6f8f67 100644
--- a/test/intrinsics/gen/textureGather/3c527e.wgsl
+++ b/test/intrinsics/gen/textureGather/3c527e.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(1)]] var arg_1: texture_cube_array<u32>;
-[[group(1), binding(2)]] var arg_2: sampler;
+@group(1) @binding(1) var arg_1: texture_cube_array<u32>;
+@group(1) @binding(2) var arg_2: sampler;
 
 // fn textureGather(component: i32, texture: texture_cube_array<u32>, sampler: sampler, coords: vec3<f32>, array_index: i32) -> vec4<u32>
 fn textureGather_3c527e() {
   var res: vec4<u32> = textureGather(1, arg_1, arg_2, vec3<f32>(), 1);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_3c527e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_3c527e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_3c527e();
 }
diff --git a/test/intrinsics/gen/textureGather/3c527e.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/3c527e.wgsl.expected.wgsl
index 4aeb587..9753db4 100644
--- a/test/intrinsics/gen/textureGather/3c527e.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureGather/3c527e.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(1)]] var arg_1 : texture_cube_array<u32>;
+@group(1) @binding(1) var arg_1 : texture_cube_array<u32>;
 
-[[group(1), binding(2)]] var arg_2 : sampler;
+@group(1) @binding(2) var arg_2 : sampler;
 
 fn textureGather_3c527e() {
   var res : vec4<u32> = textureGather(1, arg_1, arg_2, vec3<f32>(), 1);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_3c527e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_3c527e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_3c527e();
 }
diff --git a/test/intrinsics/gen/textureGather/43025d.wgsl b/test/intrinsics/gen/textureGather/43025d.wgsl
index 219cd0a..2cf28ef 100644
--- a/test/intrinsics/gen/textureGather/43025d.wgsl
+++ b/test/intrinsics/gen/textureGather/43025d.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_cube_array;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_depth_cube_array;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureGather(texture: texture_depth_cube_array, sampler: sampler, coords: vec3<f32>, array_index: i32) -> vec4<f32>
 fn textureGather_43025d() {
   var res: vec4<f32> = textureGather(arg_0, arg_1, vec3<f32>(), 1);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_43025d();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_43025d();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_43025d();
 }
diff --git a/test/intrinsics/gen/textureGather/43025d.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/43025d.wgsl.expected.wgsl
index 121a1da..f94fa45 100644
--- a/test/intrinsics/gen/textureGather/43025d.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureGather/43025d.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_cube_array;
+@group(1) @binding(0) var arg_0 : texture_depth_cube_array;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureGather_43025d() {
   var res : vec4<f32> = textureGather(arg_0, arg_1, vec3<f32>(), 1);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_43025d();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_43025d();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_43025d();
 }
diff --git a/test/intrinsics/gen/textureGather/4f2350.wgsl b/test/intrinsics/gen/textureGather/4f2350.wgsl
index 296c243..6945968 100644
--- a/test/intrinsics/gen/textureGather/4f2350.wgsl
+++ b/test/intrinsics/gen/textureGather/4f2350.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(1)]] var arg_1: texture_2d_array<i32>;
-[[group(1), binding(2)]] var arg_2: sampler;
+@group(1) @binding(1) var arg_1: texture_2d_array<i32>;
+@group(1) @binding(2) var arg_2: sampler;
 
 // fn textureGather(component: i32, texture: texture_2d_array<i32>, sampler: sampler, coords: vec2<f32>, array_index: i32, offset: vec2<i32>) -> vec4<i32>
 fn textureGather_4f2350() {
   var res: vec4<i32> = textureGather(1, arg_1, arg_2, vec2<f32>(), 1, vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_4f2350();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_4f2350();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_4f2350();
 }
diff --git a/test/intrinsics/gen/textureGather/4f2350.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/4f2350.wgsl.expected.wgsl
index 4dade7f..75a6912 100644
--- a/test/intrinsics/gen/textureGather/4f2350.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureGather/4f2350.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(1)]] var arg_1 : texture_2d_array<i32>;
+@group(1) @binding(1) var arg_1 : texture_2d_array<i32>;
 
-[[group(1), binding(2)]] var arg_2 : sampler;
+@group(1) @binding(2) var arg_2 : sampler;
 
 fn textureGather_4f2350() {
   var res : vec4<i32> = textureGather(1, arg_1, arg_2, vec2<f32>(), 1, vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_4f2350();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_4f2350();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_4f2350();
 }
diff --git a/test/intrinsics/gen/textureGather/51cf0b.wgsl b/test/intrinsics/gen/textureGather/51cf0b.wgsl
index 349aaa6..6e503ce 100644
--- a/test/intrinsics/gen/textureGather/51cf0b.wgsl
+++ b/test/intrinsics/gen/textureGather/51cf0b.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(1)]] var arg_1: texture_2d_array<i32>;
-[[group(1), binding(2)]] var arg_2: sampler;
+@group(1) @binding(1) var arg_1: texture_2d_array<i32>;
+@group(1) @binding(2) var arg_2: sampler;
 
 // fn textureGather(component: i32, texture: texture_2d_array<i32>, sampler: sampler, coords: vec2<f32>, array_index: i32) -> vec4<i32>
 fn textureGather_51cf0b() {
   var res: vec4<i32> = textureGather(1, arg_1, arg_2, vec2<f32>(), 1);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_51cf0b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_51cf0b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_51cf0b();
 }
diff --git a/test/intrinsics/gen/textureGather/51cf0b.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/51cf0b.wgsl.expected.wgsl
index d14de6e..e326e20 100644
--- a/test/intrinsics/gen/textureGather/51cf0b.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureGather/51cf0b.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(1)]] var arg_1 : texture_2d_array<i32>;
+@group(1) @binding(1) var arg_1 : texture_2d_array<i32>;
 
-[[group(1), binding(2)]] var arg_2 : sampler;
+@group(1) @binding(2) var arg_2 : sampler;
 
 fn textureGather_51cf0b() {
   var res : vec4<i32> = textureGather(1, arg_1, arg_2, vec2<f32>(), 1);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_51cf0b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_51cf0b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_51cf0b();
 }
diff --git a/test/intrinsics/gen/textureGather/53ece6.wgsl b/test/intrinsics/gen/textureGather/53ece6.wgsl
index b218496..045f2ba 100644
--- a/test/intrinsics/gen/textureGather/53ece6.wgsl
+++ b/test/intrinsics/gen/textureGather/53ece6.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_2d_array;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_depth_2d_array;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureGather(texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: i32, offset: vec2<i32>) -> vec4<f32>
 fn textureGather_53ece6() {
   var res: vec4<f32> = textureGather(arg_0, arg_1, vec2<f32>(), 1, vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_53ece6();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_53ece6();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_53ece6();
 }
diff --git a/test/intrinsics/gen/textureGather/53ece6.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/53ece6.wgsl.expected.wgsl
index 8cf894a..27c47cf 100644
--- a/test/intrinsics/gen/textureGather/53ece6.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureGather/53ece6.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_2d_array;
+@group(1) @binding(0) var arg_0 : texture_depth_2d_array;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureGather_53ece6() {
   var res : vec4<f32> = textureGather(arg_0, arg_1, vec2<f32>(), 1, vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_53ece6();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_53ece6();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_53ece6();
 }
diff --git a/test/intrinsics/gen/textureGather/57bfc6.wgsl b/test/intrinsics/gen/textureGather/57bfc6.wgsl
index 27ab266..daf1cc0 100644
--- a/test/intrinsics/gen/textureGather/57bfc6.wgsl
+++ b/test/intrinsics/gen/textureGather/57bfc6.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(1)]] var arg_1: texture_cube<f32>;
-[[group(1), binding(2)]] var arg_2: sampler;
+@group(1) @binding(1) var arg_1: texture_cube<f32>;
+@group(1) @binding(2) var arg_2: sampler;
 
 // fn textureGather(component: i32, texture: texture_cube<f32>, sampler: sampler, coords: vec3<f32>) -> vec4<f32>
 fn textureGather_57bfc6() {
   var res: vec4<f32> = textureGather(1, arg_1, arg_2, vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_57bfc6();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_57bfc6();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_57bfc6();
 }
diff --git a/test/intrinsics/gen/textureGather/57bfc6.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/57bfc6.wgsl.expected.wgsl
index 5be66ca..8273199 100644
--- a/test/intrinsics/gen/textureGather/57bfc6.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureGather/57bfc6.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(1)]] var arg_1 : texture_cube<f32>;
+@group(1) @binding(1) var arg_1 : texture_cube<f32>;
 
-[[group(1), binding(2)]] var arg_2 : sampler;
+@group(1) @binding(2) var arg_2 : sampler;
 
 fn textureGather_57bfc6() {
   var res : vec4<f32> = textureGather(1, arg_1, arg_2, vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_57bfc6();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_57bfc6();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_57bfc6();
 }
diff --git a/test/intrinsics/gen/textureGather/587ba3.wgsl b/test/intrinsics/gen/textureGather/587ba3.wgsl
index ac9a292..5bc617c 100644
--- a/test/intrinsics/gen/textureGather/587ba3.wgsl
+++ b/test/intrinsics/gen/textureGather/587ba3.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(1)]] var arg_1: texture_2d<i32>;
-[[group(1), binding(2)]] var arg_2: sampler;
+@group(1) @binding(1) var arg_1: texture_2d<i32>;
+@group(1) @binding(2) var arg_2: sampler;
 
 // fn textureGather(component: i32, texture: texture_2d<i32>, sampler: sampler, coords: vec2<f32>) -> vec4<i32>
 fn textureGather_587ba3() {
   var res: vec4<i32> = textureGather(1, arg_1, arg_2, vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_587ba3();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_587ba3();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_587ba3();
 }
diff --git a/test/intrinsics/gen/textureGather/587ba3.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/587ba3.wgsl.expected.wgsl
index 8ef9c1f..d906b0b 100644
--- a/test/intrinsics/gen/textureGather/587ba3.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureGather/587ba3.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(1)]] var arg_1 : texture_2d<i32>;
+@group(1) @binding(1) var arg_1 : texture_2d<i32>;
 
-[[group(1), binding(2)]] var arg_2 : sampler;
+@group(1) @binding(2) var arg_2 : sampler;
 
 fn textureGather_587ba3() {
   var res : vec4<i32> = textureGather(1, arg_1, arg_2, vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_587ba3();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_587ba3();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_587ba3();
 }
diff --git a/test/intrinsics/gen/textureGather/69e0fb.wgsl b/test/intrinsics/gen/textureGather/69e0fb.wgsl
index d8c2376..3d4a9fa 100644
--- a/test/intrinsics/gen/textureGather/69e0fb.wgsl
+++ b/test/intrinsics/gen/textureGather/69e0fb.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(1)]] var arg_1: texture_2d<i32>;
-[[group(1), binding(2)]] var arg_2: sampler;
+@group(1) @binding(1) var arg_1: texture_2d<i32>;
+@group(1) @binding(2) var arg_2: sampler;
 
 // fn textureGather(component: i32, texture: texture_2d<i32>, sampler: sampler, coords: vec2<f32>, offset: vec2<i32>) -> vec4<i32>
 fn textureGather_69e0fb() {
   var res: vec4<i32> = textureGather(1, arg_1, arg_2, vec2<f32>(), vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_69e0fb();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_69e0fb();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_69e0fb();
 }
diff --git a/test/intrinsics/gen/textureGather/69e0fb.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/69e0fb.wgsl.expected.wgsl
index 21d5efd..a23c38f 100644
--- a/test/intrinsics/gen/textureGather/69e0fb.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureGather/69e0fb.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(1)]] var arg_1 : texture_2d<i32>;
+@group(1) @binding(1) var arg_1 : texture_2d<i32>;
 
-[[group(1), binding(2)]] var arg_2 : sampler;
+@group(1) @binding(2) var arg_2 : sampler;
 
 fn textureGather_69e0fb() {
   var res : vec4<i32> = textureGather(1, arg_1, arg_2, vec2<f32>(), vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_69e0fb();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_69e0fb();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_69e0fb();
 }
diff --git a/test/intrinsics/gen/textureGather/93003d.wgsl b/test/intrinsics/gen/textureGather/93003d.wgsl
index fcbedcb..c194b51 100644
--- a/test/intrinsics/gen/textureGather/93003d.wgsl
+++ b/test/intrinsics/gen/textureGather/93003d.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(1)]] var arg_1: texture_2d<u32>;
-[[group(1), binding(2)]] var arg_2: sampler;
+@group(1) @binding(1) var arg_1: texture_2d<u32>;
+@group(1) @binding(2) var arg_2: sampler;
 
 // fn textureGather(component: i32, texture: texture_2d<u32>, sampler: sampler, coords: vec2<f32>, offset: vec2<i32>) -> vec4<u32>
 fn textureGather_93003d() {
   var res: vec4<u32> = textureGather(1, arg_1, arg_2, vec2<f32>(), vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_93003d();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_93003d();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_93003d();
 }
diff --git a/test/intrinsics/gen/textureGather/93003d.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/93003d.wgsl.expected.wgsl
index 64c3ad0..c4adea5 100644
--- a/test/intrinsics/gen/textureGather/93003d.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureGather/93003d.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(1)]] var arg_1 : texture_2d<u32>;
+@group(1) @binding(1) var arg_1 : texture_2d<u32>;
 
-[[group(1), binding(2)]] var arg_2 : sampler;
+@group(1) @binding(2) var arg_2 : sampler;
 
 fn textureGather_93003d() {
   var res : vec4<u32> = textureGather(1, arg_1, arg_2, vec2<f32>(), vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_93003d();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_93003d();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_93003d();
 }
diff --git a/test/intrinsics/gen/textureGather/9a6358.wgsl b/test/intrinsics/gen/textureGather/9a6358.wgsl
index 7b84b02..0aff04c 100644
--- a/test/intrinsics/gen/textureGather/9a6358.wgsl
+++ b/test/intrinsics/gen/textureGather/9a6358.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_2d_array;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_depth_2d_array;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureGather(texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: i32) -> vec4<f32>
 fn textureGather_9a6358() {
   var res: vec4<f32> = textureGather(arg_0, arg_1, vec2<f32>(), 1);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_9a6358();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_9a6358();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_9a6358();
 }
diff --git a/test/intrinsics/gen/textureGather/9a6358.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/9a6358.wgsl.expected.wgsl
index 9721e3a..984ff98 100644
--- a/test/intrinsics/gen/textureGather/9a6358.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureGather/9a6358.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_2d_array;
+@group(1) @binding(0) var arg_0 : texture_depth_2d_array;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureGather_9a6358() {
   var res : vec4<f32> = textureGather(arg_0, arg_1, vec2<f32>(), 1);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_9a6358();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_9a6358();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_9a6358();
 }
diff --git a/test/intrinsics/gen/textureGather/9efca2.wgsl b/test/intrinsics/gen/textureGather/9efca2.wgsl
index 2008c2e..d1fd63f 100644
--- a/test/intrinsics/gen/textureGather/9efca2.wgsl
+++ b/test/intrinsics/gen/textureGather/9efca2.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(1)]] var arg_1: texture_2d_array<f32>;
-[[group(1), binding(2)]] var arg_2: sampler;
+@group(1) @binding(1) var arg_1: texture_2d_array<f32>;
+@group(1) @binding(2) var arg_2: sampler;
 
 // fn textureGather(component: i32, texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: i32) -> vec4<f32>
 fn textureGather_9efca2() {
   var res: vec4<f32> = textureGather(1, arg_1, arg_2, vec2<f32>(), 1);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_9efca2();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_9efca2();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_9efca2();
 }
diff --git a/test/intrinsics/gen/textureGather/9efca2.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/9efca2.wgsl.expected.wgsl
index 07113dd..c977428 100644
--- a/test/intrinsics/gen/textureGather/9efca2.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureGather/9efca2.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(1)]] var arg_1 : texture_2d_array<f32>;
+@group(1) @binding(1) var arg_1 : texture_2d_array<f32>;
 
-[[group(1), binding(2)]] var arg_2 : sampler;
+@group(1) @binding(2) var arg_2 : sampler;
 
 fn textureGather_9efca2() {
   var res : vec4<f32> = textureGather(1, arg_1, arg_2, vec2<f32>(), 1);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_9efca2();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_9efca2();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_9efca2();
 }
diff --git a/test/intrinsics/gen/textureGather/bd0b1e.wgsl b/test/intrinsics/gen/textureGather/bd0b1e.wgsl
index 9b59824..e7bf959 100644
--- a/test/intrinsics/gen/textureGather/bd0b1e.wgsl
+++ b/test/intrinsics/gen/textureGather/bd0b1e.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(1)]] var arg_1: texture_2d<f32>;
-[[group(1), binding(2)]] var arg_2: sampler;
+@group(1) @binding(1) var arg_1: texture_2d<f32>;
+@group(1) @binding(2) var arg_2: sampler;
 
 // fn textureGather(component: i32, texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>) -> vec4<f32>
 fn textureGather_bd0b1e() {
   var res: vec4<f32> = textureGather(1, arg_1, arg_2, vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_bd0b1e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_bd0b1e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_bd0b1e();
 }
diff --git a/test/intrinsics/gen/textureGather/bd0b1e.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/bd0b1e.wgsl.expected.wgsl
index 6094dd2..c4f05ce 100644
--- a/test/intrinsics/gen/textureGather/bd0b1e.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureGather/bd0b1e.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(1)]] var arg_1 : texture_2d<f32>;
+@group(1) @binding(1) var arg_1 : texture_2d<f32>;
 
-[[group(1), binding(2)]] var arg_2 : sampler;
+@group(1) @binding(2) var arg_2 : sampler;
 
 fn textureGather_bd0b1e() {
   var res : vec4<f32> = textureGather(1, arg_1, arg_2, vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_bd0b1e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_bd0b1e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_bd0b1e();
 }
diff --git a/test/intrinsics/gen/textureGather/c409ae.wgsl b/test/intrinsics/gen/textureGather/c409ae.wgsl
index 95088b0..8778bb7 100644
--- a/test/intrinsics/gen/textureGather/c409ae.wgsl
+++ b/test/intrinsics/gen/textureGather/c409ae.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_2d;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_depth_2d;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureGather(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>, offset: vec2<i32>) -> vec4<f32>
 fn textureGather_c409ae() {
   var res: vec4<f32> = textureGather(arg_0, arg_1, vec2<f32>(), vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_c409ae();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_c409ae();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_c409ae();
 }
diff --git a/test/intrinsics/gen/textureGather/c409ae.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/c409ae.wgsl.expected.wgsl
index 88bc15d..3610a5d 100644
--- a/test/intrinsics/gen/textureGather/c409ae.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureGather/c409ae.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_2d;
+@group(1) @binding(0) var arg_0 : texture_depth_2d;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureGather_c409ae() {
   var res : vec4<f32> = textureGather(arg_0, arg_1, vec2<f32>(), vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_c409ae();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_c409ae();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_c409ae();
 }
diff --git a/test/intrinsics/gen/textureGather/c55822.wgsl b/test/intrinsics/gen/textureGather/c55822.wgsl
index e91568d..9cedd59 100644
--- a/test/intrinsics/gen/textureGather/c55822.wgsl
+++ b/test/intrinsics/gen/textureGather/c55822.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(1)]] var arg_1: texture_cube_array<i32>;
-[[group(1), binding(2)]] var arg_2: sampler;
+@group(1) @binding(1) var arg_1: texture_cube_array<i32>;
+@group(1) @binding(2) var arg_2: sampler;
 
 // fn textureGather(component: i32, texture: texture_cube_array<i32>, sampler: sampler, coords: vec3<f32>, array_index: i32) -> vec4<i32>
 fn textureGather_c55822() {
   var res: vec4<i32> = textureGather(1, arg_1, arg_2, vec3<f32>(), 1);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_c55822();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_c55822();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_c55822();
 }
diff --git a/test/intrinsics/gen/textureGather/c55822.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/c55822.wgsl.expected.wgsl
index 58bbb42..261b01b 100644
--- a/test/intrinsics/gen/textureGather/c55822.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureGather/c55822.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(1)]] var arg_1 : texture_cube_array<i32>;
+@group(1) @binding(1) var arg_1 : texture_cube_array<i32>;
 
-[[group(1), binding(2)]] var arg_2 : sampler;
+@group(1) @binding(2) var arg_2 : sampler;
 
 fn textureGather_c55822() {
   var res : vec4<i32> = textureGather(1, arg_1, arg_2, vec3<f32>(), 1);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_c55822();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_c55822();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_c55822();
 }
diff --git a/test/intrinsics/gen/textureGather/e1b67d.wgsl b/test/intrinsics/gen/textureGather/e1b67d.wgsl
index d243474..ac8f15a 100644
--- a/test/intrinsics/gen/textureGather/e1b67d.wgsl
+++ b/test/intrinsics/gen/textureGather/e1b67d.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(1)]] var arg_1: texture_cube<u32>;
-[[group(1), binding(2)]] var arg_2: sampler;
+@group(1) @binding(1) var arg_1: texture_cube<u32>;
+@group(1) @binding(2) var arg_2: sampler;
 
 // fn textureGather(component: i32, texture: texture_cube<u32>, sampler: sampler, coords: vec3<f32>) -> vec4<u32>
 fn textureGather_e1b67d() {
   var res: vec4<u32> = textureGather(1, arg_1, arg_2, vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_e1b67d();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_e1b67d();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_e1b67d();
 }
diff --git a/test/intrinsics/gen/textureGather/e1b67d.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/e1b67d.wgsl.expected.wgsl
index 125d649..4f60ac7 100644
--- a/test/intrinsics/gen/textureGather/e1b67d.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureGather/e1b67d.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(1)]] var arg_1 : texture_cube<u32>;
+@group(1) @binding(1) var arg_1 : texture_cube<u32>;
 
-[[group(1), binding(2)]] var arg_2 : sampler;
+@group(1) @binding(2) var arg_2 : sampler;
 
 fn textureGather_e1b67d() {
   var res : vec4<u32> = textureGather(1, arg_1, arg_2, vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_e1b67d();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_e1b67d();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_e1b67d();
 }
diff --git a/test/intrinsics/gen/textureGather/e9eff6.wgsl b/test/intrinsics/gen/textureGather/e9eff6.wgsl
index 02702a4..b0477f9 100644
--- a/test/intrinsics/gen/textureGather/e9eff6.wgsl
+++ b/test/intrinsics/gen/textureGather/e9eff6.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(1)]] var arg_1: texture_2d<u32>;
-[[group(1), binding(2)]] var arg_2: sampler;
+@group(1) @binding(1) var arg_1: texture_2d<u32>;
+@group(1) @binding(2) var arg_2: sampler;
 
 // fn textureGather(component: i32, texture: texture_2d<u32>, sampler: sampler, coords: vec2<f32>) -> vec4<u32>
 fn textureGather_e9eff6() {
   var res: vec4<u32> = textureGather(1, arg_1, arg_2, vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_e9eff6();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_e9eff6();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_e9eff6();
 }
diff --git a/test/intrinsics/gen/textureGather/e9eff6.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/e9eff6.wgsl.expected.wgsl
index 1f11f53..708a011 100644
--- a/test/intrinsics/gen/textureGather/e9eff6.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureGather/e9eff6.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(1)]] var arg_1 : texture_2d<u32>;
+@group(1) @binding(1) var arg_1 : texture_2d<u32>;
 
-[[group(1), binding(2)]] var arg_2 : sampler;
+@group(1) @binding(2) var arg_2 : sampler;
 
 fn textureGather_e9eff6() {
   var res : vec4<u32> = textureGather(1, arg_1, arg_2, vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_e9eff6();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_e9eff6();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_e9eff6();
 }
diff --git a/test/intrinsics/gen/textureGather/f5f3ba.wgsl b/test/intrinsics/gen/textureGather/f5f3ba.wgsl
index 9b998b4..f263256 100644
--- a/test/intrinsics/gen/textureGather/f5f3ba.wgsl
+++ b/test/intrinsics/gen/textureGather/f5f3ba.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(1)]] var arg_1: texture_2d_array<u32>;
-[[group(1), binding(2)]] var arg_2: sampler;
+@group(1) @binding(1) var arg_1: texture_2d_array<u32>;
+@group(1) @binding(2) var arg_2: sampler;
 
 // fn textureGather(component: i32, texture: texture_2d_array<u32>, sampler: sampler, coords: vec2<f32>, array_index: i32, offset: vec2<i32>) -> vec4<u32>
 fn textureGather_f5f3ba() {
   var res: vec4<u32> = textureGather(1, arg_1, arg_2, vec2<f32>(), 1, vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_f5f3ba();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_f5f3ba();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_f5f3ba();
 }
diff --git a/test/intrinsics/gen/textureGather/f5f3ba.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/f5f3ba.wgsl.expected.wgsl
index 0505f50..b5ddcdc 100644
--- a/test/intrinsics/gen/textureGather/f5f3ba.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureGather/f5f3ba.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(1)]] var arg_1 : texture_2d_array<u32>;
+@group(1) @binding(1) var arg_1 : texture_2d_array<u32>;
 
-[[group(1), binding(2)]] var arg_2 : sampler;
+@group(1) @binding(2) var arg_2 : sampler;
 
 fn textureGather_f5f3ba() {
   var res : vec4<u32> = textureGather(1, arg_1, arg_2, vec2<f32>(), 1, vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_f5f3ba();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_f5f3ba();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_f5f3ba();
 }
diff --git a/test/intrinsics/gen/textureGather/f7995a.wgsl b/test/intrinsics/gen/textureGather/f7995a.wgsl
index b4f7aac..19c42fc 100644
--- a/test/intrinsics/gen/textureGather/f7995a.wgsl
+++ b/test/intrinsics/gen/textureGather/f7995a.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(1)]] var arg_1: texture_cube<i32>;
-[[group(1), binding(2)]] var arg_2: sampler;
+@group(1) @binding(1) var arg_1: texture_cube<i32>;
+@group(1) @binding(2) var arg_2: sampler;
 
 // fn textureGather(component: i32, texture: texture_cube<i32>, sampler: sampler, coords: vec3<f32>) -> vec4<i32>
 fn textureGather_f7995a() {
   var res: vec4<i32> = textureGather(1, arg_1, arg_2, vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_f7995a();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_f7995a();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_f7995a();
 }
diff --git a/test/intrinsics/gen/textureGather/f7995a.wgsl.expected.wgsl b/test/intrinsics/gen/textureGather/f7995a.wgsl.expected.wgsl
index 273f599..59c890e 100644
--- a/test/intrinsics/gen/textureGather/f7995a.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureGather/f7995a.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(1)]] var arg_1 : texture_cube<i32>;
+@group(1) @binding(1) var arg_1 : texture_cube<i32>;
 
-[[group(1), binding(2)]] var arg_2 : sampler;
+@group(1) @binding(2) var arg_2 : sampler;
 
 fn textureGather_f7995a() {
   var res : vec4<i32> = textureGather(1, arg_1, arg_2, vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_f7995a();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGather_f7995a();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGather_f7995a();
 }
diff --git a/test/intrinsics/gen/textureGatherCompare/182fd4.wgsl b/test/intrinsics/gen/textureGatherCompare/182fd4.wgsl
index 732eb5a..afaaa84 100644
--- a/test/intrinsics/gen/textureGatherCompare/182fd4.wgsl
+++ b/test/intrinsics/gen/textureGatherCompare/182fd4.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_cube;
-[[group(1), binding(1)]] var arg_1: sampler_comparison;
+@group(1) @binding(0) var arg_0: texture_depth_cube;
+@group(1) @binding(1) var arg_1: sampler_comparison;
 
 // fn textureGatherCompare(texture: texture_depth_cube, sampler: sampler_comparison, coords: vec3<f32>, depth_ref: f32) -> vec4<f32>
 fn textureGatherCompare_182fd4() {
   var res: vec4<f32> = textureGatherCompare(arg_0, arg_1, vec3<f32>(), 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGatherCompare_182fd4();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGatherCompare_182fd4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGatherCompare_182fd4();
 }
diff --git a/test/intrinsics/gen/textureGatherCompare/182fd4.wgsl.expected.wgsl b/test/intrinsics/gen/textureGatherCompare/182fd4.wgsl.expected.wgsl
index f04178c..3a4d029 100644
--- a/test/intrinsics/gen/textureGatherCompare/182fd4.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureGatherCompare/182fd4.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_cube;
+@group(1) @binding(0) var arg_0 : texture_depth_cube;
 
-[[group(1), binding(1)]] var arg_1 : sampler_comparison;
+@group(1) @binding(1) var arg_1 : sampler_comparison;
 
 fn textureGatherCompare_182fd4() {
   var res : vec4<f32> = textureGatherCompare(arg_0, arg_1, vec3<f32>(), 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGatherCompare_182fd4();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGatherCompare_182fd4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGatherCompare_182fd4();
 }
diff --git a/test/intrinsics/gen/textureGatherCompare/60d2d1.wgsl b/test/intrinsics/gen/textureGatherCompare/60d2d1.wgsl
index fcb9b53..53ed423 100644
--- a/test/intrinsics/gen/textureGatherCompare/60d2d1.wgsl
+++ b/test/intrinsics/gen/textureGatherCompare/60d2d1.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_cube_array;
-[[group(1), binding(1)]] var arg_1: sampler_comparison;
+@group(1) @binding(0) var arg_0: texture_depth_cube_array;
+@group(1) @binding(1) var arg_1: sampler_comparison;
 
 // fn textureGatherCompare(texture: texture_depth_cube_array, sampler: sampler_comparison, coords: vec3<f32>, array_index: i32, depth_ref: f32) -> vec4<f32>
 fn textureGatherCompare_60d2d1() {
   var res: vec4<f32> = textureGatherCompare(arg_0, arg_1, vec3<f32>(), 1, 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGatherCompare_60d2d1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGatherCompare_60d2d1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGatherCompare_60d2d1();
 }
diff --git a/test/intrinsics/gen/textureGatherCompare/60d2d1.wgsl.expected.wgsl b/test/intrinsics/gen/textureGatherCompare/60d2d1.wgsl.expected.wgsl
index 005cc8d..e22b1fc 100644
--- a/test/intrinsics/gen/textureGatherCompare/60d2d1.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureGatherCompare/60d2d1.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_cube_array;
+@group(1) @binding(0) var arg_0 : texture_depth_cube_array;
 
-[[group(1), binding(1)]] var arg_1 : sampler_comparison;
+@group(1) @binding(1) var arg_1 : sampler_comparison;
 
 fn textureGatherCompare_60d2d1() {
   var res : vec4<f32> = textureGatherCompare(arg_0, arg_1, vec3<f32>(), 1, 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGatherCompare_60d2d1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGatherCompare_60d2d1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGatherCompare_60d2d1();
 }
diff --git a/test/intrinsics/gen/textureGatherCompare/6d9352.wgsl b/test/intrinsics/gen/textureGatherCompare/6d9352.wgsl
index 16611ce..5a577ba 100644
--- a/test/intrinsics/gen/textureGatherCompare/6d9352.wgsl
+++ b/test/intrinsics/gen/textureGatherCompare/6d9352.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_2d;
-[[group(1), binding(1)]] var arg_1: sampler_comparison;
+@group(1) @binding(0) var arg_0: texture_depth_2d;
+@group(1) @binding(1) var arg_1: sampler_comparison;
 
 // fn textureGatherCompare(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32) -> vec4<f32>
 fn textureGatherCompare_6d9352() {
   var res: vec4<f32> = textureGatherCompare(arg_0, arg_1, vec2<f32>(), 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGatherCompare_6d9352();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGatherCompare_6d9352();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGatherCompare_6d9352();
 }
diff --git a/test/intrinsics/gen/textureGatherCompare/6d9352.wgsl.expected.wgsl b/test/intrinsics/gen/textureGatherCompare/6d9352.wgsl.expected.wgsl
index de6fa2c..6fc40ce 100644
--- a/test/intrinsics/gen/textureGatherCompare/6d9352.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureGatherCompare/6d9352.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_2d;
+@group(1) @binding(0) var arg_0 : texture_depth_2d;
 
-[[group(1), binding(1)]] var arg_1 : sampler_comparison;
+@group(1) @binding(1) var arg_1 : sampler_comparison;
 
 fn textureGatherCompare_6d9352() {
   var res : vec4<f32> = textureGatherCompare(arg_0, arg_1, vec2<f32>(), 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGatherCompare_6d9352();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGatherCompare_6d9352();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGatherCompare_6d9352();
 }
diff --git a/test/intrinsics/gen/textureGatherCompare/6f1267.wgsl b/test/intrinsics/gen/textureGatherCompare/6f1267.wgsl
index b2eb4b7..c71a699 100644
--- a/test/intrinsics/gen/textureGatherCompare/6f1267.wgsl
+++ b/test/intrinsics/gen/textureGatherCompare/6f1267.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_2d_array;
-[[group(1), binding(1)]] var arg_1: sampler_comparison;
+@group(1) @binding(0) var arg_0: texture_depth_2d_array;
+@group(1) @binding(1) var arg_1: sampler_comparison;
 
 // fn textureGatherCompare(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: i32, depth_ref: f32, offset: vec2<i32>) -> vec4<f32>
 fn textureGatherCompare_6f1267() {
   var res: vec4<f32> = textureGatherCompare(arg_0, arg_1, vec2<f32>(), 1, 1.0, vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGatherCompare_6f1267();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGatherCompare_6f1267();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGatherCompare_6f1267();
 }
diff --git a/test/intrinsics/gen/textureGatherCompare/6f1267.wgsl.expected.wgsl b/test/intrinsics/gen/textureGatherCompare/6f1267.wgsl.expected.wgsl
index 096891c..19e782d 100644
--- a/test/intrinsics/gen/textureGatherCompare/6f1267.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureGatherCompare/6f1267.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_2d_array;
+@group(1) @binding(0) var arg_0 : texture_depth_2d_array;
 
-[[group(1), binding(1)]] var arg_1 : sampler_comparison;
+@group(1) @binding(1) var arg_1 : sampler_comparison;
 
 fn textureGatherCompare_6f1267() {
   var res : vec4<f32> = textureGatherCompare(arg_0, arg_1, vec2<f32>(), 1, 1.0, vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGatherCompare_6f1267();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGatherCompare_6f1267();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGatherCompare_6f1267();
 }
diff --git a/test/intrinsics/gen/textureGatherCompare/783e65.wgsl b/test/intrinsics/gen/textureGatherCompare/783e65.wgsl
index f10cee1..8bd4779 100644
--- a/test/intrinsics/gen/textureGatherCompare/783e65.wgsl
+++ b/test/intrinsics/gen/textureGatherCompare/783e65.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_2d_array;
-[[group(1), binding(1)]] var arg_1: sampler_comparison;
+@group(1) @binding(0) var arg_0: texture_depth_2d_array;
+@group(1) @binding(1) var arg_1: sampler_comparison;
 
 // fn textureGatherCompare(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: i32, depth_ref: f32) -> vec4<f32>
 fn textureGatherCompare_783e65() {
   var res: vec4<f32> = textureGatherCompare(arg_0, arg_1, vec2<f32>(), 1, 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGatherCompare_783e65();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGatherCompare_783e65();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGatherCompare_783e65();
 }
diff --git a/test/intrinsics/gen/textureGatherCompare/783e65.wgsl.expected.wgsl b/test/intrinsics/gen/textureGatherCompare/783e65.wgsl.expected.wgsl
index 0ee58ce..9800261 100644
--- a/test/intrinsics/gen/textureGatherCompare/783e65.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureGatherCompare/783e65.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_2d_array;
+@group(1) @binding(0) var arg_0 : texture_depth_2d_array;
 
-[[group(1), binding(1)]] var arg_1 : sampler_comparison;
+@group(1) @binding(1) var arg_1 : sampler_comparison;
 
 fn textureGatherCompare_783e65() {
   var res : vec4<f32> = textureGatherCompare(arg_0, arg_1, vec2<f32>(), 1, 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGatherCompare_783e65();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGatherCompare_783e65();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGatherCompare_783e65();
 }
diff --git a/test/intrinsics/gen/textureGatherCompare/a5f587.wgsl b/test/intrinsics/gen/textureGatherCompare/a5f587.wgsl
index 803c4f1..b8a2718 100644
--- a/test/intrinsics/gen/textureGatherCompare/a5f587.wgsl
+++ b/test/intrinsics/gen/textureGatherCompare/a5f587.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_2d;
-[[group(1), binding(1)]] var arg_1: sampler_comparison;
+@group(1) @binding(0) var arg_0: texture_depth_2d;
+@group(1) @binding(1) var arg_1: sampler_comparison;
 
 // fn textureGatherCompare(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32, offset: vec2<i32>) -> vec4<f32>
 fn textureGatherCompare_a5f587() {
   var res: vec4<f32> = textureGatherCompare(arg_0, arg_1, vec2<f32>(), 1.0, vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGatherCompare_a5f587();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGatherCompare_a5f587();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGatherCompare_a5f587();
 }
diff --git a/test/intrinsics/gen/textureGatherCompare/a5f587.wgsl.expected.wgsl b/test/intrinsics/gen/textureGatherCompare/a5f587.wgsl.expected.wgsl
index 9590326..44b3cf1 100644
--- a/test/intrinsics/gen/textureGatherCompare/a5f587.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureGatherCompare/a5f587.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_2d;
+@group(1) @binding(0) var arg_0 : texture_depth_2d;
 
-[[group(1), binding(1)]] var arg_1 : sampler_comparison;
+@group(1) @binding(1) var arg_1 : sampler_comparison;
 
 fn textureGatherCompare_a5f587() {
   var res : vec4<f32> = textureGatherCompare(arg_0, arg_1, vec2<f32>(), 1.0, vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGatherCompare_a5f587();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureGatherCompare_a5f587();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureGatherCompare_a5f587();
 }
diff --git a/test/intrinsics/gen/textureLoad/19cf87.wgsl b/test/intrinsics/gen/textureLoad/19cf87.wgsl
index d650031..609ce46 100644
--- a/test/intrinsics/gen/textureLoad/19cf87.wgsl
+++ b/test/intrinsics/gen/textureLoad/19cf87.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_2d;
+@group(1) @binding(0) var arg_0: texture_depth_2d;
 
 // fn textureLoad(texture: texture_depth_2d, coords: vec2<i32>, level: i32) -> f32
 fn textureLoad_19cf87() {
   var res: f32 = textureLoad(arg_0, vec2<i32>(), 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_19cf87();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureLoad_19cf87();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureLoad_19cf87();
 }
diff --git a/test/intrinsics/gen/textureLoad/19cf87.wgsl.expected.wgsl b/test/intrinsics/gen/textureLoad/19cf87.wgsl.expected.wgsl
index ec9ae1e..886136a 100644
--- a/test/intrinsics/gen/textureLoad/19cf87.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureLoad/19cf87.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_2d;
+@group(1) @binding(0) var arg_0 : texture_depth_2d;
 
 fn textureLoad_19cf87() {
   var res : f32 = textureLoad(arg_0, vec2<i32>(), 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_19cf87();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureLoad_19cf87();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureLoad_19cf87();
 }
diff --git a/test/intrinsics/gen/textureLoad/1b8588.wgsl b/test/intrinsics/gen/textureLoad/1b8588.wgsl
index 3801d85..80a4cae 100644
--- a/test/intrinsics/gen/textureLoad/1b8588.wgsl
+++ b/test/intrinsics/gen/textureLoad/1b8588.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_1d<u32>;
+@group(1) @binding(0) var arg_0: texture_1d<u32>;
 
 // fn textureLoad(texture: texture_1d<u32>, coords: i32, level: i32) -> vec4<u32>
 fn textureLoad_1b8588() {
   var res: vec4<u32> = textureLoad(arg_0, 1, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_1b8588();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureLoad_1b8588();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureLoad_1b8588();
 }
diff --git a/test/intrinsics/gen/textureLoad/1b8588.wgsl.expected.wgsl b/test/intrinsics/gen/textureLoad/1b8588.wgsl.expected.wgsl
index 58a627c..07481f8 100644
--- a/test/intrinsics/gen/textureLoad/1b8588.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureLoad/1b8588.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_1d<u32>;
+@group(1) @binding(0) var arg_0 : texture_1d<u32>;
 
 fn textureLoad_1b8588() {
   var res : vec4<u32> = textureLoad(arg_0, 1, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_1b8588();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureLoad_1b8588();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureLoad_1b8588();
 }
diff --git a/test/intrinsics/gen/textureLoad/1f2016.wgsl b/test/intrinsics/gen/textureLoad/1f2016.wgsl
index c95d6d1..9e3a286 100644
--- a/test/intrinsics/gen/textureLoad/1f2016.wgsl
+++ b/test/intrinsics/gen/textureLoad/1f2016.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_3d<f32>;
+@group(1) @binding(0) var arg_0: texture_3d<f32>;
 
 // fn textureLoad(texture: texture_3d<f32>, coords: vec3<i32>, level: i32) -> vec4<f32>
 fn textureLoad_1f2016() {
   var res: vec4<f32> = textureLoad(arg_0, vec3<i32>(), 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_1f2016();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureLoad_1f2016();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureLoad_1f2016();
 }
diff --git a/test/intrinsics/gen/textureLoad/1f2016.wgsl.expected.wgsl b/test/intrinsics/gen/textureLoad/1f2016.wgsl.expected.wgsl
index 70c8e62..910f641 100644
--- a/test/intrinsics/gen/textureLoad/1f2016.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureLoad/1f2016.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_3d<f32>;
+@group(1) @binding(0) var arg_0 : texture_3d<f32>;
 
 fn textureLoad_1f2016() {
   var res : vec4<f32> = textureLoad(arg_0, vec3<i32>(), 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_1f2016();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureLoad_1f2016();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureLoad_1f2016();
 }
diff --git a/test/intrinsics/gen/textureLoad/484344.wgsl b/test/intrinsics/gen/textureLoad/484344.wgsl
index 37b5a5f..920d8e0 100644
--- a/test/intrinsics/gen/textureLoad/484344.wgsl
+++ b/test/intrinsics/gen/textureLoad/484344.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d<f32>;
+@group(1) @binding(0) var arg_0: texture_2d<f32>;
 
 // fn textureLoad(texture: texture_2d<f32>, coords: vec2<i32>, level: i32) -> vec4<f32>
 fn textureLoad_484344() {
   var res: vec4<f32> = textureLoad(arg_0, vec2<i32>(), 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_484344();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureLoad_484344();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureLoad_484344();
 }
diff --git a/test/intrinsics/gen/textureLoad/484344.wgsl.expected.wgsl b/test/intrinsics/gen/textureLoad/484344.wgsl.expected.wgsl
index d198e1e..e87d195 100644
--- a/test/intrinsics/gen/textureLoad/484344.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureLoad/484344.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d<f32>;
+@group(1) @binding(0) var arg_0 : texture_2d<f32>;
 
 fn textureLoad_484344() {
   var res : vec4<f32> = textureLoad(arg_0, vec2<i32>(), 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_484344();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureLoad_484344();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureLoad_484344();
 }
diff --git a/test/intrinsics/gen/textureLoad/4fd803.wgsl b/test/intrinsics/gen/textureLoad/4fd803.wgsl
index bde90c7..d309c2b 100644
--- a/test/intrinsics/gen/textureLoad/4fd803.wgsl
+++ b/test/intrinsics/gen/textureLoad/4fd803.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_3d<i32>;
+@group(1) @binding(0) var arg_0: texture_3d<i32>;
 
 // fn textureLoad(texture: texture_3d<i32>, coords: vec3<i32>, level: i32) -> vec4<i32>
 fn textureLoad_4fd803() {
   var res: vec4<i32> = textureLoad(arg_0, vec3<i32>(), 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_4fd803();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureLoad_4fd803();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureLoad_4fd803();
 }
diff --git a/test/intrinsics/gen/textureLoad/4fd803.wgsl.expected.wgsl b/test/intrinsics/gen/textureLoad/4fd803.wgsl.expected.wgsl
index 08653d9..c4f10d6 100644
--- a/test/intrinsics/gen/textureLoad/4fd803.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureLoad/4fd803.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_3d<i32>;
+@group(1) @binding(0) var arg_0 : texture_3d<i32>;
 
 fn textureLoad_4fd803() {
   var res : vec4<i32> = textureLoad(arg_0, vec3<i32>(), 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_4fd803();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureLoad_4fd803();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureLoad_4fd803();
 }
diff --git a/test/intrinsics/gen/textureLoad/5a2f9d.wgsl b/test/intrinsics/gen/textureLoad/5a2f9d.wgsl
index 5fd2dcc..5f19cb5 100644
--- a/test/intrinsics/gen/textureLoad/5a2f9d.wgsl
+++ b/test/intrinsics/gen/textureLoad/5a2f9d.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_1d<i32>;
+@group(1) @binding(0) var arg_0: texture_1d<i32>;
 
 // fn textureLoad(texture: texture_1d<i32>, coords: i32, level: i32) -> vec4<i32>
 fn textureLoad_5a2f9d() {
   var res: vec4<i32> = textureLoad(arg_0, 1, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_5a2f9d();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureLoad_5a2f9d();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureLoad_5a2f9d();
 }
diff --git a/test/intrinsics/gen/textureLoad/5a2f9d.wgsl.expected.wgsl b/test/intrinsics/gen/textureLoad/5a2f9d.wgsl.expected.wgsl
index ecaf9a0..3e02059 100644
--- a/test/intrinsics/gen/textureLoad/5a2f9d.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureLoad/5a2f9d.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_1d<i32>;
+@group(1) @binding(0) var arg_0 : texture_1d<i32>;
 
 fn textureLoad_5a2f9d() {
   var res : vec4<i32> = textureLoad(arg_0, 1, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_5a2f9d();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureLoad_5a2f9d();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureLoad_5a2f9d();
 }
diff --git a/test/intrinsics/gen/textureLoad/6154d4.wgsl b/test/intrinsics/gen/textureLoad/6154d4.wgsl
index 5786c34..ba6d633 100644
--- a/test/intrinsics/gen/textureLoad/6154d4.wgsl
+++ b/test/intrinsics/gen/textureLoad/6154d4.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d<u32>;
+@group(1) @binding(0) var arg_0: texture_2d<u32>;
 
 // fn textureLoad(texture: texture_2d<u32>, coords: vec2<i32>, level: i32) -> vec4<u32>
 fn textureLoad_6154d4() {
   var res: vec4<u32> = textureLoad(arg_0, vec2<i32>(), 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_6154d4();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureLoad_6154d4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureLoad_6154d4();
 }
diff --git a/test/intrinsics/gen/textureLoad/6154d4.wgsl.expected.wgsl b/test/intrinsics/gen/textureLoad/6154d4.wgsl.expected.wgsl
index 64e28d7..811bfc6 100644
--- a/test/intrinsics/gen/textureLoad/6154d4.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureLoad/6154d4.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d<u32>;
+@group(1) @binding(0) var arg_0 : texture_2d<u32>;
 
 fn textureLoad_6154d4() {
   var res : vec4<u32> = textureLoad(arg_0, vec2<i32>(), 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_6154d4();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureLoad_6154d4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureLoad_6154d4();
 }
diff --git a/test/intrinsics/gen/textureLoad/6273b1.wgsl b/test/intrinsics/gen/textureLoad/6273b1.wgsl
index 600fb45..944e5a3 100644
--- a/test/intrinsics/gen/textureLoad/6273b1.wgsl
+++ b/test/intrinsics/gen/textureLoad/6273b1.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_multisampled_2d;
+@group(1) @binding(0) var arg_0: texture_depth_multisampled_2d;
 
 // fn textureLoad(texture: texture_depth_multisampled_2d, coords: vec2<i32>, sample_index: i32) -> f32
 fn textureLoad_6273b1() {
   var res: f32 = textureLoad(arg_0, vec2<i32>(), 1);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_6273b1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureLoad_6273b1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureLoad_6273b1();
 }
diff --git a/test/intrinsics/gen/textureLoad/6273b1.wgsl.expected.wgsl b/test/intrinsics/gen/textureLoad/6273b1.wgsl.expected.wgsl
index 9d21c59..ec3f25b 100644
--- a/test/intrinsics/gen/textureLoad/6273b1.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureLoad/6273b1.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_multisampled_2d;
+@group(1) @binding(0) var arg_0 : texture_depth_multisampled_2d;
 
 fn textureLoad_6273b1() {
   var res : f32 = textureLoad(arg_0, vec2<i32>(), 1);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_6273b1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureLoad_6273b1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureLoad_6273b1();
 }
diff --git a/test/intrinsics/gen/textureLoad/79e697.wgsl b/test/intrinsics/gen/textureLoad/79e697.wgsl
index 3ce2841..4ed308e 100644
--- a/test/intrinsics/gen/textureLoad/79e697.wgsl
+++ b/test/intrinsics/gen/textureLoad/79e697.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d_array<i32>;
+@group(1) @binding(0) var arg_0: texture_2d_array<i32>;
 
 // fn textureLoad(texture: texture_2d_array<i32>, coords: vec2<i32>, array_index: i32, level: i32) -> vec4<i32>
 fn textureLoad_79e697() {
   var res: vec4<i32> = textureLoad(arg_0, vec2<i32>(), 1, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_79e697();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureLoad_79e697();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureLoad_79e697();
 }
diff --git a/test/intrinsics/gen/textureLoad/79e697.wgsl.expected.wgsl b/test/intrinsics/gen/textureLoad/79e697.wgsl.expected.wgsl
index f93cbe0..3e26917 100644
--- a/test/intrinsics/gen/textureLoad/79e697.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureLoad/79e697.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d_array<i32>;
+@group(1) @binding(0) var arg_0 : texture_2d_array<i32>;
 
 fn textureLoad_79e697() {
   var res : vec4<i32> = textureLoad(arg_0, vec2<i32>(), 1, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_79e697();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureLoad_79e697();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureLoad_79e697();
 }
diff --git a/test/intrinsics/gen/textureLoad/7c90e5.wgsl b/test/intrinsics/gen/textureLoad/7c90e5.wgsl
index 3207c05..29da0dc 100644
--- a/test/intrinsics/gen/textureLoad/7c90e5.wgsl
+++ b/test/intrinsics/gen/textureLoad/7c90e5.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d_array<u32>;
+@group(1) @binding(0) var arg_0: texture_2d_array<u32>;
 
 // fn textureLoad(texture: texture_2d_array<u32>, coords: vec2<i32>, array_index: i32, level: i32) -> vec4<u32>
 fn textureLoad_7c90e5() {
   var res: vec4<u32> = textureLoad(arg_0, vec2<i32>(), 1, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_7c90e5();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureLoad_7c90e5();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureLoad_7c90e5();
 }
diff --git a/test/intrinsics/gen/textureLoad/7c90e5.wgsl.expected.wgsl b/test/intrinsics/gen/textureLoad/7c90e5.wgsl.expected.wgsl
index 779b955..3308f0f 100644
--- a/test/intrinsics/gen/textureLoad/7c90e5.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureLoad/7c90e5.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d_array<u32>;
+@group(1) @binding(0) var arg_0 : texture_2d_array<u32>;
 
 fn textureLoad_7c90e5() {
   var res : vec4<u32> = textureLoad(arg_0, vec2<i32>(), 1, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_7c90e5();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureLoad_7c90e5();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureLoad_7c90e5();
 }
diff --git a/test/intrinsics/gen/textureLoad/81c381.wgsl b/test/intrinsics/gen/textureLoad/81c381.wgsl
index 4c156c6..dccf1b8 100644
--- a/test/intrinsics/gen/textureLoad/81c381.wgsl
+++ b/test/intrinsics/gen/textureLoad/81c381.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_1d<f32>;
+@group(1) @binding(0) var arg_0: texture_1d<f32>;
 
 // fn textureLoad(texture: texture_1d<f32>, coords: i32, level: i32) -> vec4<f32>
 fn textureLoad_81c381() {
   var res: vec4<f32> = textureLoad(arg_0, 1, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_81c381();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureLoad_81c381();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureLoad_81c381();
 }
diff --git a/test/intrinsics/gen/textureLoad/81c381.wgsl.expected.wgsl b/test/intrinsics/gen/textureLoad/81c381.wgsl.expected.wgsl
index 0658863..7671a38 100644
--- a/test/intrinsics/gen/textureLoad/81c381.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureLoad/81c381.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_1d<f32>;
+@group(1) @binding(0) var arg_0 : texture_1d<f32>;
 
 fn textureLoad_81c381() {
   var res : vec4<f32> = textureLoad(arg_0, 1, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_81c381();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureLoad_81c381();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureLoad_81c381();
 }
diff --git a/test/intrinsics/gen/textureLoad/87be85.wgsl b/test/intrinsics/gen/textureLoad/87be85.wgsl
index 39366e5..b1124d7 100644
--- a/test/intrinsics/gen/textureLoad/87be85.wgsl
+++ b/test/intrinsics/gen/textureLoad/87be85.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d_array<f32>;
+@group(1) @binding(0) var arg_0: texture_2d_array<f32>;
 
 // fn textureLoad(texture: texture_2d_array<f32>, coords: vec2<i32>, array_index: i32, level: i32) -> vec4<f32>
 fn textureLoad_87be85() {
   var res: vec4<f32> = textureLoad(arg_0, vec2<i32>(), 1, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_87be85();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureLoad_87be85();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureLoad_87be85();
 }
diff --git a/test/intrinsics/gen/textureLoad/87be85.wgsl.expected.wgsl b/test/intrinsics/gen/textureLoad/87be85.wgsl.expected.wgsl
index 4543559..febe014 100644
--- a/test/intrinsics/gen/textureLoad/87be85.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureLoad/87be85.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d_array<f32>;
+@group(1) @binding(0) var arg_0 : texture_2d_array<f32>;
 
 fn textureLoad_87be85() {
   var res : vec4<f32> = textureLoad(arg_0, vec2<i32>(), 1, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_87be85();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureLoad_87be85();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureLoad_87be85();
 }
diff --git a/test/intrinsics/gen/textureLoad/8acf41.wgsl b/test/intrinsics/gen/textureLoad/8acf41.wgsl
index b19c731..effdecd 100644
--- a/test/intrinsics/gen/textureLoad/8acf41.wgsl
+++ b/test/intrinsics/gen/textureLoad/8acf41.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_external;
+@group(1) @binding(0) var arg_0: texture_external;
 
 // fn textureLoad(texture: texture_external, coords: vec2<i32>) -> vec4<f32>
 fn textureLoad_8acf41() {
   var res: vec4<f32> = textureLoad(arg_0, vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_8acf41();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureLoad_8acf41();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureLoad_8acf41();
 }
diff --git a/test/intrinsics/gen/textureLoad/8acf41.wgsl.expected.wgsl b/test/intrinsics/gen/textureLoad/8acf41.wgsl.expected.wgsl
index 769efb3..a25ef5f 100644
--- a/test/intrinsics/gen/textureLoad/8acf41.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureLoad/8acf41.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_external;
+@group(1) @binding(0) var arg_0 : texture_external;
 
 fn textureLoad_8acf41() {
   var res : vec4<f32> = textureLoad(arg_0, vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_8acf41();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureLoad_8acf41();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureLoad_8acf41();
 }
diff --git a/test/intrinsics/gen/textureLoad/9b2667.wgsl b/test/intrinsics/gen/textureLoad/9b2667.wgsl
index 0e09fa4..4372cdb 100644
--- a/test/intrinsics/gen/textureLoad/9b2667.wgsl
+++ b/test/intrinsics/gen/textureLoad/9b2667.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_2d_array;
+@group(1) @binding(0) var arg_0: texture_depth_2d_array;
 
 // fn textureLoad(texture: texture_depth_2d_array, coords: vec2<i32>, array_index: i32, level: i32) -> f32
 fn textureLoad_9b2667() {
   var res: f32 = textureLoad(arg_0, vec2<i32>(), 1, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_9b2667();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureLoad_9b2667();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureLoad_9b2667();
 }
diff --git a/test/intrinsics/gen/textureLoad/9b2667.wgsl.expected.wgsl b/test/intrinsics/gen/textureLoad/9b2667.wgsl.expected.wgsl
index 271bb61..5d857d0 100644
--- a/test/intrinsics/gen/textureLoad/9b2667.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureLoad/9b2667.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_2d_array;
+@group(1) @binding(0) var arg_0 : texture_depth_2d_array;
 
 fn textureLoad_9b2667() {
   var res : f32 = textureLoad(arg_0, vec2<i32>(), 1, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_9b2667();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureLoad_9b2667();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureLoad_9b2667();
 }
diff --git a/test/intrinsics/gen/textureLoad/a583c9.wgsl b/test/intrinsics/gen/textureLoad/a583c9.wgsl
index 39adb02..5f67c51 100644
--- a/test/intrinsics/gen/textureLoad/a583c9.wgsl
+++ b/test/intrinsics/gen/textureLoad/a583c9.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_multisampled_2d<f32>;
+@group(1) @binding(0) var arg_0: texture_multisampled_2d<f32>;
 
 // fn textureLoad(texture: texture_multisampled_2d<f32>, coords: vec2<i32>, sample_index: i32) -> vec4<f32>
 fn textureLoad_a583c9() {
   var res: vec4<f32> = textureLoad(arg_0, vec2<i32>(), 1);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_a583c9();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureLoad_a583c9();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureLoad_a583c9();
 }
diff --git a/test/intrinsics/gen/textureLoad/a583c9.wgsl.expected.wgsl b/test/intrinsics/gen/textureLoad/a583c9.wgsl.expected.wgsl
index 0ffac21..1b4fb0f 100644
--- a/test/intrinsics/gen/textureLoad/a583c9.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureLoad/a583c9.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_multisampled_2d<f32>;
+@group(1) @binding(0) var arg_0 : texture_multisampled_2d<f32>;
 
 fn textureLoad_a583c9() {
   var res : vec4<f32> = textureLoad(arg_0, vec2<i32>(), 1);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_a583c9();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureLoad_a583c9();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureLoad_a583c9();
 }
diff --git a/test/intrinsics/gen/textureLoad/a9a9f5.wgsl b/test/intrinsics/gen/textureLoad/a9a9f5.wgsl
index 58ebcd2..236927b 100644
--- a/test/intrinsics/gen/textureLoad/a9a9f5.wgsl
+++ b/test/intrinsics/gen/textureLoad/a9a9f5.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_3d<u32>;
+@group(1) @binding(0) var arg_0: texture_3d<u32>;
 
 // fn textureLoad(texture: texture_3d<u32>, coords: vec3<i32>, level: i32) -> vec4<u32>
 fn textureLoad_a9a9f5() {
   var res: vec4<u32> = textureLoad(arg_0, vec3<i32>(), 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_a9a9f5();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureLoad_a9a9f5();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureLoad_a9a9f5();
 }
diff --git a/test/intrinsics/gen/textureLoad/a9a9f5.wgsl.expected.wgsl b/test/intrinsics/gen/textureLoad/a9a9f5.wgsl.expected.wgsl
index 0a21560..ac36fdc 100644
--- a/test/intrinsics/gen/textureLoad/a9a9f5.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureLoad/a9a9f5.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_3d<u32>;
+@group(1) @binding(0) var arg_0 : texture_3d<u32>;
 
 fn textureLoad_a9a9f5() {
   var res : vec4<u32> = textureLoad(arg_0, vec3<i32>(), 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_a9a9f5();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureLoad_a9a9f5();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureLoad_a9a9f5();
 }
diff --git a/test/intrinsics/gen/textureLoad/c2a480.wgsl b/test/intrinsics/gen/textureLoad/c2a480.wgsl
index f9149e7..6aa17f7 100644
--- a/test/intrinsics/gen/textureLoad/c2a480.wgsl
+++ b/test/intrinsics/gen/textureLoad/c2a480.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d<i32>;
+@group(1) @binding(0) var arg_0: texture_2d<i32>;
 
 // fn textureLoad(texture: texture_2d<i32>, coords: vec2<i32>, level: i32) -> vec4<i32>
 fn textureLoad_c2a480() {
   var res: vec4<i32> = textureLoad(arg_0, vec2<i32>(), 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_c2a480();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureLoad_c2a480();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureLoad_c2a480();
 }
diff --git a/test/intrinsics/gen/textureLoad/c2a480.wgsl.expected.wgsl b/test/intrinsics/gen/textureLoad/c2a480.wgsl.expected.wgsl
index e8cee3f..ce9e2c7 100644
--- a/test/intrinsics/gen/textureLoad/c2a480.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureLoad/c2a480.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d<i32>;
+@group(1) @binding(0) var arg_0 : texture_2d<i32>;
 
 fn textureLoad_c2a480() {
   var res : vec4<i32> = textureLoad(arg_0, vec2<i32>(), 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_c2a480();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureLoad_c2a480();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureLoad_c2a480();
 }
diff --git a/test/intrinsics/gen/textureLoad/c378ee.wgsl b/test/intrinsics/gen/textureLoad/c378ee.wgsl
index 7a31013..2ddc52a 100644
--- a/test/intrinsics/gen/textureLoad/c378ee.wgsl
+++ b/test/intrinsics/gen/textureLoad/c378ee.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_multisampled_2d<u32>;
+@group(1) @binding(0) var arg_0: texture_multisampled_2d<u32>;
 
 // fn textureLoad(texture: texture_multisampled_2d<u32>, coords: vec2<i32>, sample_index: i32) -> vec4<u32>
 fn textureLoad_c378ee() {
   var res: vec4<u32> = textureLoad(arg_0, vec2<i32>(), 1);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_c378ee();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureLoad_c378ee();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureLoad_c378ee();
 }
diff --git a/test/intrinsics/gen/textureLoad/c378ee.wgsl.expected.wgsl b/test/intrinsics/gen/textureLoad/c378ee.wgsl.expected.wgsl
index 0a7ba1a..d47f756 100644
--- a/test/intrinsics/gen/textureLoad/c378ee.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureLoad/c378ee.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_multisampled_2d<u32>;
+@group(1) @binding(0) var arg_0 : texture_multisampled_2d<u32>;
 
 fn textureLoad_c378ee() {
   var res : vec4<u32> = textureLoad(arg_0, vec2<i32>(), 1);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_c378ee();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureLoad_c378ee();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureLoad_c378ee();
 }
diff --git a/test/intrinsics/gen/textureLoad/e3d2cc.wgsl b/test/intrinsics/gen/textureLoad/e3d2cc.wgsl
index 3450bb6..65b9d17 100644
--- a/test/intrinsics/gen/textureLoad/e3d2cc.wgsl
+++ b/test/intrinsics/gen/textureLoad/e3d2cc.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_multisampled_2d<i32>;
+@group(1) @binding(0) var arg_0: texture_multisampled_2d<i32>;
 
 // fn textureLoad(texture: texture_multisampled_2d<i32>, coords: vec2<i32>, sample_index: i32) -> vec4<i32>
 fn textureLoad_e3d2cc() {
   var res: vec4<i32> = textureLoad(arg_0, vec2<i32>(), 1);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_e3d2cc();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureLoad_e3d2cc();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureLoad_e3d2cc();
 }
diff --git a/test/intrinsics/gen/textureLoad/e3d2cc.wgsl.expected.wgsl b/test/intrinsics/gen/textureLoad/e3d2cc.wgsl.expected.wgsl
index b77d037..f8a1af7 100644
--- a/test/intrinsics/gen/textureLoad/e3d2cc.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureLoad/e3d2cc.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_multisampled_2d<i32>;
+@group(1) @binding(0) var arg_0 : texture_multisampled_2d<i32>;
 
 fn textureLoad_e3d2cc() {
   var res : vec4<i32> = textureLoad(arg_0, vec2<i32>(), 1);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_e3d2cc();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureLoad_e3d2cc();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureLoad_e3d2cc();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/024820.wgsl b/test/intrinsics/gen/textureNumLayers/024820.wgsl
index c8b519d..e0ad9de 100644
--- a/test/intrinsics/gen/textureNumLayers/024820.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/024820.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d_array<f32>;
+@group(1) @binding(0) var arg_0: texture_2d_array<f32>;
 
 // fn textureNumLayers(texture: texture_2d_array<f32>) -> i32
 fn textureNumLayers_024820() {
   var res: i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_024820();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_024820();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_024820();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/024820.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLayers/024820.wgsl.expected.wgsl
index 7725c8a..f58c93c 100644
--- a/test/intrinsics/gen/textureNumLayers/024820.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/024820.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d_array<f32>;
+@group(1) @binding(0) var arg_0 : texture_2d_array<f32>;
 
 fn textureNumLayers_024820() {
   var res : i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_024820();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_024820();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_024820();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/053df7.wgsl b/test/intrinsics/gen/textureNumLayers/053df7.wgsl
index b8913be..dcb5cf3 100644
--- a/test/intrinsics/gen/textureNumLayers/053df7.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/053df7.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_cube_array<u32>;
+@group(1) @binding(0) var arg_0: texture_cube_array<u32>;
 
 // fn textureNumLayers(texture: texture_cube_array<u32>) -> i32
 fn textureNumLayers_053df7() {
   var res: i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_053df7();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_053df7();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_053df7();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/053df7.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLayers/053df7.wgsl.expected.wgsl
index 3184b30..fae44b9 100644
--- a/test/intrinsics/gen/textureNumLayers/053df7.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/053df7.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_cube_array<u32>;
+@group(1) @binding(0) var arg_0 : texture_cube_array<u32>;
 
 fn textureNumLayers_053df7() {
   var res : i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_053df7();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_053df7();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_053df7();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/058cc3.wgsl b/test/intrinsics/gen/textureNumLayers/058cc3.wgsl
index e884562..1897559 100644
--- a/test/intrinsics/gen/textureNumLayers/058cc3.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/058cc3.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<rg32sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32sint, write>;
 
 // fn textureNumLayers(texture: texture_storage_2d_array<rg32sint, write>) -> i32
 fn textureNumLayers_058cc3() {
   var res: i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_058cc3();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_058cc3();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_058cc3();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/058cc3.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLayers/058cc3.wgsl.expected.wgsl
index 6f96e17..ee5d2e0 100644
--- a/test/intrinsics/gen/textureNumLayers/058cc3.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/058cc3.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rg32sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, write>;
 
 fn textureNumLayers_058cc3() {
   var res : i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_058cc3();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_058cc3();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_058cc3();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/09d05d.wgsl b/test/intrinsics/gen/textureNumLayers/09d05d.wgsl
index bdf8cfe..e39514f 100644
--- a/test/intrinsics/gen/textureNumLayers/09d05d.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/09d05d.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<rgba8unorm, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8unorm, write>;
 
 // fn textureNumLayers(texture: texture_storage_2d_array<rgba8unorm, write>) -> i32
 fn textureNumLayers_09d05d() {
   var res: i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_09d05d();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_09d05d();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_09d05d();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/09d05d.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLayers/09d05d.wgsl.expected.wgsl
index db04a65..2034fa4 100644
--- a/test/intrinsics/gen/textureNumLayers/09d05d.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/09d05d.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba8unorm, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, write>;
 
 fn textureNumLayers_09d05d() {
   var res : i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_09d05d();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_09d05d();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_09d05d();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/13b4ce.wgsl b/test/intrinsics/gen/textureNumLayers/13b4ce.wgsl
index 31fc91a..f6361f1 100644
--- a/test/intrinsics/gen/textureNumLayers/13b4ce.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/13b4ce.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<rgba32sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32sint, write>;
 
 // fn textureNumLayers(texture: texture_storage_2d_array<rgba32sint, write>) -> i32
 fn textureNumLayers_13b4ce() {
   var res: i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_13b4ce();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_13b4ce();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_13b4ce();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/13b4ce.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLayers/13b4ce.wgsl.expected.wgsl
index 2314463..5061e7e 100644
--- a/test/intrinsics/gen/textureNumLayers/13b4ce.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/13b4ce.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba32sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, write>;
 
 fn textureNumLayers_13b4ce() {
   var res : i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_13b4ce();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_13b4ce();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_13b4ce();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/22e53b.wgsl b/test/intrinsics/gen/textureNumLayers/22e53b.wgsl
index 4c830ac..c9101c0 100644
--- a/test/intrinsics/gen/textureNumLayers/22e53b.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/22e53b.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<r32sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<r32sint, write>;
 
 // fn textureNumLayers(texture: texture_storage_2d_array<r32sint, write>) -> i32
 fn textureNumLayers_22e53b() {
   var res: i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_22e53b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_22e53b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_22e53b();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/22e53b.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLayers/22e53b.wgsl.expected.wgsl
index f407b3f..6d9957b 100644
--- a/test/intrinsics/gen/textureNumLayers/22e53b.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/22e53b.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<r32sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, write>;
 
 fn textureNumLayers_22e53b() {
   var res : i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_22e53b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_22e53b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_22e53b();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/562013.wgsl b/test/intrinsics/gen/textureNumLayers/562013.wgsl
index 764c381..18c77ad 100644
--- a/test/intrinsics/gen/textureNumLayers/562013.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/562013.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<rgba16float, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16float, write>;
 
 // fn textureNumLayers(texture: texture_storage_2d_array<rgba16float, write>) -> i32
 fn textureNumLayers_562013() {
   var res: i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_562013();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_562013();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_562013();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/562013.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLayers/562013.wgsl.expected.wgsl
index c34ef1c..7223170 100644
--- a/test/intrinsics/gen/textureNumLayers/562013.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/562013.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba16float, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, write>;
 
 fn textureNumLayers_562013() {
   var res : i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_562013();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_562013();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_562013();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/5d59cd.wgsl b/test/intrinsics/gen/textureNumLayers/5d59cd.wgsl
index 201defd2..2a0f4de 100644
--- a/test/intrinsics/gen/textureNumLayers/5d59cd.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/5d59cd.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_cube_array<f32>;
+@group(1) @binding(0) var arg_0: texture_cube_array<f32>;
 
 // fn textureNumLayers(texture: texture_cube_array<f32>) -> i32
 fn textureNumLayers_5d59cd() {
   var res: i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_5d59cd();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_5d59cd();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_5d59cd();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/5d59cd.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLayers/5d59cd.wgsl.expected.wgsl
index 57e2cf6..170c763 100644
--- a/test/intrinsics/gen/textureNumLayers/5d59cd.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/5d59cd.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_cube_array<f32>;
+@group(1) @binding(0) var arg_0 : texture_cube_array<f32>;
 
 fn textureNumLayers_5d59cd() {
   var res : i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_5d59cd();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_5d59cd();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_5d59cd();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/68a65b.wgsl b/test/intrinsics/gen/textureNumLayers/68a65b.wgsl
index 2832cf4..f551fc2 100644
--- a/test/intrinsics/gen/textureNumLayers/68a65b.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/68a65b.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<rgba32float, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32float, write>;
 
 // fn textureNumLayers(texture: texture_storage_2d_array<rgba32float, write>) -> i32
 fn textureNumLayers_68a65b() {
   var res: i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_68a65b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_68a65b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_68a65b();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/68a65b.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLayers/68a65b.wgsl.expected.wgsl
index 4aad50a..f358993 100644
--- a/test/intrinsics/gen/textureNumLayers/68a65b.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/68a65b.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba32float, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, write>;
 
 fn textureNumLayers_68a65b() {
   var res : i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_68a65b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_68a65b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_68a65b();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/778bd1.wgsl b/test/intrinsics/gen/textureNumLayers/778bd1.wgsl
index 4ca7348..ec88c84 100644
--- a/test/intrinsics/gen/textureNumLayers/778bd1.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/778bd1.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_cube_array;
+@group(1) @binding(0) var arg_0: texture_depth_cube_array;
 
 // fn textureNumLayers(texture: texture_depth_cube_array) -> i32
 fn textureNumLayers_778bd1() {
   var res: i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_778bd1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_778bd1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_778bd1();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/778bd1.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLayers/778bd1.wgsl.expected.wgsl
index d71f24b..c13e994 100644
--- a/test/intrinsics/gen/textureNumLayers/778bd1.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/778bd1.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_cube_array;
+@group(1) @binding(0) var arg_0 : texture_depth_cube_array;
 
 fn textureNumLayers_778bd1() {
   var res : i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_778bd1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_778bd1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_778bd1();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/7f1937.wgsl b/test/intrinsics/gen/textureNumLayers/7f1937.wgsl
index 581a2db..7652201 100644
--- a/test/intrinsics/gen/textureNumLayers/7f1937.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/7f1937.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<rg32float, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32float, write>;
 
 // fn textureNumLayers(texture: texture_storage_2d_array<rg32float, write>) -> i32
 fn textureNumLayers_7f1937() {
   var res: i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_7f1937();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_7f1937();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_7f1937();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/7f1937.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLayers/7f1937.wgsl.expected.wgsl
index 279ac3c..4450ceb 100644
--- a/test/intrinsics/gen/textureNumLayers/7f1937.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/7f1937.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rg32float, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, write>;
 
 fn textureNumLayers_7f1937() {
   var res : i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_7f1937();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_7f1937();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_7f1937();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/85f980.wgsl b/test/intrinsics/gen/textureNumLayers/85f980.wgsl
index 7f2e7ea..c91c09d 100644
--- a/test/intrinsics/gen/textureNumLayers/85f980.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/85f980.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_cube_array<i32>;
+@group(1) @binding(0) var arg_0: texture_cube_array<i32>;
 
 // fn textureNumLayers(texture: texture_cube_array<i32>) -> i32
 fn textureNumLayers_85f980() {
   var res: i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_85f980();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_85f980();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_85f980();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/85f980.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLayers/85f980.wgsl.expected.wgsl
index b7e09af..4dc70c7 100644
--- a/test/intrinsics/gen/textureNumLayers/85f980.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/85f980.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_cube_array<i32>;
+@group(1) @binding(0) var arg_0 : texture_cube_array<i32>;
 
 fn textureNumLayers_85f980() {
   var res : i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_85f980();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_85f980();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_85f980();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/87953e.wgsl b/test/intrinsics/gen/textureNumLayers/87953e.wgsl
index 249897c..d4b3e5a 100644
--- a/test/intrinsics/gen/textureNumLayers/87953e.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/87953e.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d_array<u32>;
+@group(1) @binding(0) var arg_0: texture_2d_array<u32>;
 
 // fn textureNumLayers(texture: texture_2d_array<u32>) -> i32
 fn textureNumLayers_87953e() {
   var res: i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_87953e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_87953e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_87953e();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/87953e.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLayers/87953e.wgsl.expected.wgsl
index 49b2809..26f73ea 100644
--- a/test/intrinsics/gen/textureNumLayers/87953e.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/87953e.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d_array<u32>;
+@group(1) @binding(0) var arg_0 : texture_2d_array<u32>;
 
 fn textureNumLayers_87953e() {
   var res : i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_87953e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_87953e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_87953e();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/893e7c.wgsl b/test/intrinsics/gen/textureNumLayers/893e7c.wgsl
index 0f09f81..b00bdbd 100644
--- a/test/intrinsics/gen/textureNumLayers/893e7c.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/893e7c.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d_array<i32>;
+@group(1) @binding(0) var arg_0: texture_2d_array<i32>;
 
 // fn textureNumLayers(texture: texture_2d_array<i32>) -> i32
 fn textureNumLayers_893e7c() {
   var res: i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_893e7c();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_893e7c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_893e7c();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/893e7c.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLayers/893e7c.wgsl.expected.wgsl
index 3e73652..3cda546 100644
--- a/test/intrinsics/gen/textureNumLayers/893e7c.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/893e7c.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d_array<i32>;
+@group(1) @binding(0) var arg_0 : texture_2d_array<i32>;
 
 fn textureNumLayers_893e7c() {
   var res : i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_893e7c();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_893e7c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_893e7c();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/9700fb.wgsl b/test/intrinsics/gen/textureNumLayers/9700fb.wgsl
index 0bc05ec..474b691 100644
--- a/test/intrinsics/gen/textureNumLayers/9700fb.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/9700fb.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<rgba16uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16uint, write>;
 
 // fn textureNumLayers(texture: texture_storage_2d_array<rgba16uint, write>) -> i32
 fn textureNumLayers_9700fb() {
   var res: i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_9700fb();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_9700fb();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_9700fb();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/9700fb.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLayers/9700fb.wgsl.expected.wgsl
index 21c77a5..ce6acab 100644
--- a/test/intrinsics/gen/textureNumLayers/9700fb.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/9700fb.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba16uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, write>;
 
 fn textureNumLayers_9700fb() {
   var res : i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_9700fb();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_9700fb();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_9700fb();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/a216d2.wgsl b/test/intrinsics/gen/textureNumLayers/a216d2.wgsl
index 155ad27..f64da9e 100644
--- a/test/intrinsics/gen/textureNumLayers/a216d2.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/a216d2.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<rgba8sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8sint, write>;
 
 // fn textureNumLayers(texture: texture_storage_2d_array<rgba8sint, write>) -> i32
 fn textureNumLayers_a216d2() {
   var res: i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_a216d2();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_a216d2();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_a216d2();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/a216d2.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLayers/a216d2.wgsl.expected.wgsl
index 48e65b1..38fbc89 100644
--- a/test/intrinsics/gen/textureNumLayers/a216d2.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/a216d2.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba8sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, write>;
 
 fn textureNumLayers_a216d2() {
   var res : i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_a216d2();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_a216d2();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_a216d2();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/cd5dc8.wgsl b/test/intrinsics/gen/textureNumLayers/cd5dc8.wgsl
index c7fd877..3756b00 100644
--- a/test/intrinsics/gen/textureNumLayers/cd5dc8.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/cd5dc8.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<rgba32uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32uint, write>;
 
 // fn textureNumLayers(texture: texture_storage_2d_array<rgba32uint, write>) -> i32
 fn textureNumLayers_cd5dc8() {
   var res: i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_cd5dc8();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_cd5dc8();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_cd5dc8();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/cd5dc8.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLayers/cd5dc8.wgsl.expected.wgsl
index 05e08ff..870778b 100644
--- a/test/intrinsics/gen/textureNumLayers/cd5dc8.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/cd5dc8.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba32uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, write>;
 
 fn textureNumLayers_cd5dc8() {
   var res : i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_cd5dc8();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_cd5dc8();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_cd5dc8();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/d5b228.wgsl b/test/intrinsics/gen/textureNumLayers/d5b228.wgsl
index 3426387..ccc1d48 100644
--- a/test/intrinsics/gen/textureNumLayers/d5b228.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/d5b228.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<r32float, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<r32float, write>;
 
 // fn textureNumLayers(texture: texture_storage_2d_array<r32float, write>) -> i32
 fn textureNumLayers_d5b228() {
   var res: i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_d5b228();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_d5b228();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_d5b228();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/d5b228.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLayers/d5b228.wgsl.expected.wgsl
index 8cce42a..798b0a8 100644
--- a/test/intrinsics/gen/textureNumLayers/d5b228.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/d5b228.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<r32float, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, write>;
 
 fn textureNumLayers_d5b228() {
   var res : i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_d5b228();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_d5b228();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_d5b228();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/e31be1.wgsl b/test/intrinsics/gen/textureNumLayers/e31be1.wgsl
index ce3f74a..d80689a 100644
--- a/test/intrinsics/gen/textureNumLayers/e31be1.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/e31be1.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<rgba8snorm, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8snorm, write>;
 
 // fn textureNumLayers(texture: texture_storage_2d_array<rgba8snorm, write>) -> i32
 fn textureNumLayers_e31be1() {
   var res: i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_e31be1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_e31be1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_e31be1();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/e31be1.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLayers/e31be1.wgsl.expected.wgsl
index e24d1ef..e47d202 100644
--- a/test/intrinsics/gen/textureNumLayers/e31be1.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/e31be1.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba8snorm, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, write>;
 
 fn textureNumLayers_e31be1() {
   var res : i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_e31be1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_e31be1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_e31be1();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/e653c0.wgsl b/test/intrinsics/gen/textureNumLayers/e653c0.wgsl
index 8558800..44cb31c 100644
--- a/test/intrinsics/gen/textureNumLayers/e653c0.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/e653c0.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_2d_array;
+@group(1) @binding(0) var arg_0: texture_depth_2d_array;
 
 // fn textureNumLayers(texture: texture_depth_2d_array) -> i32
 fn textureNumLayers_e653c0() {
   var res: i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_e653c0();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_e653c0();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_e653c0();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/e653c0.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLayers/e653c0.wgsl.expected.wgsl
index d4d6394..4adddfb 100644
--- a/test/intrinsics/gen/textureNumLayers/e653c0.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/e653c0.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_2d_array;
+@group(1) @binding(0) var arg_0 : texture_depth_2d_array;
 
 fn textureNumLayers_e653c0() {
   var res : i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_e653c0();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_e653c0();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_e653c0();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/ee942f.wgsl b/test/intrinsics/gen/textureNumLayers/ee942f.wgsl
index 3605608..7c4e1b4 100644
--- a/test/intrinsics/gen/textureNumLayers/ee942f.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/ee942f.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<r32uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<r32uint, write>;
 
 // fn textureNumLayers(texture: texture_storage_2d_array<r32uint, write>) -> i32
 fn textureNumLayers_ee942f() {
   var res: i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_ee942f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_ee942f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_ee942f();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/ee942f.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLayers/ee942f.wgsl.expected.wgsl
index ec81d1d..4d48fac 100644
--- a/test/intrinsics/gen/textureNumLayers/ee942f.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/ee942f.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<r32uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, write>;
 
 fn textureNumLayers_ee942f() {
   var res : i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_ee942f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_ee942f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_ee942f();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/f33005.wgsl b/test/intrinsics/gen/textureNumLayers/f33005.wgsl
index 8f0efdd..6d5b10c 100644
--- a/test/intrinsics/gen/textureNumLayers/f33005.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/f33005.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<rgba16sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16sint, write>;
 
 // fn textureNumLayers(texture: texture_storage_2d_array<rgba16sint, write>) -> i32
 fn textureNumLayers_f33005() {
   var res: i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_f33005();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_f33005();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_f33005();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/f33005.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLayers/f33005.wgsl.expected.wgsl
index b4da2c1..35bd8ca 100644
--- a/test/intrinsics/gen/textureNumLayers/f33005.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/f33005.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba16sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, write>;
 
 fn textureNumLayers_f33005() {
   var res : i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_f33005();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_f33005();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_f33005();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/fcec98.wgsl b/test/intrinsics/gen/textureNumLayers/fcec98.wgsl
index 3e33fda..aab70d9 100644
--- a/test/intrinsics/gen/textureNumLayers/fcec98.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/fcec98.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<rg32uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32uint, write>;
 
 // fn textureNumLayers(texture: texture_storage_2d_array<rg32uint, write>) -> i32
 fn textureNumLayers_fcec98() {
   var res: i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_fcec98();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_fcec98();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_fcec98();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/fcec98.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLayers/fcec98.wgsl.expected.wgsl
index c1ab9b5..6a1723e 100644
--- a/test/intrinsics/gen/textureNumLayers/fcec98.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/fcec98.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rg32uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, write>;
 
 fn textureNumLayers_fcec98() {
   var res : i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_fcec98();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_fcec98();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_fcec98();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/ff5e89.wgsl b/test/intrinsics/gen/textureNumLayers/ff5e89.wgsl
index df16a2d..e6fe277 100644
--- a/test/intrinsics/gen/textureNumLayers/ff5e89.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/ff5e89.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<rgba8uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8uint, write>;
 
 // fn textureNumLayers(texture: texture_storage_2d_array<rgba8uint, write>) -> i32
 fn textureNumLayers_ff5e89() {
   var res: i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_ff5e89();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_ff5e89();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_ff5e89();
 }
diff --git a/test/intrinsics/gen/textureNumLayers/ff5e89.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLayers/ff5e89.wgsl.expected.wgsl
index b5f5e98..cd8cb2d 100644
--- a/test/intrinsics/gen/textureNumLayers/ff5e89.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLayers/ff5e89.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba8uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, write>;
 
 fn textureNumLayers_ff5e89() {
   var res : i32 = textureNumLayers(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_ff5e89();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLayers_ff5e89();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_ff5e89();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/076cb5.wgsl b/test/intrinsics/gen/textureNumLevels/076cb5.wgsl
index 3b07e8c..367dac4 100644
--- a/test/intrinsics/gen/textureNumLevels/076cb5.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/076cb5.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_cube;
+@group(1) @binding(0) var arg_0: texture_depth_cube;
 
 // fn textureNumLevels(texture: texture_depth_cube) -> i32
 fn textureNumLevels_076cb5() {
   var res: i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_076cb5();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_076cb5();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_076cb5();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/076cb5.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLevels/076cb5.wgsl.expected.wgsl
index 9730ca4..c04d6e6 100644
--- a/test/intrinsics/gen/textureNumLevels/076cb5.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/076cb5.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_cube;
+@group(1) @binding(0) var arg_0 : texture_depth_cube;
 
 fn textureNumLevels_076cb5() {
   var res : i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_076cb5();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_076cb5();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_076cb5();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/080d95.wgsl b/test/intrinsics/gen/textureNumLevels/080d95.wgsl
index c918197..b3bbba3 100644
--- a/test/intrinsics/gen/textureNumLevels/080d95.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/080d95.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_cube<i32>;
+@group(1) @binding(0) var arg_0: texture_cube<i32>;
 
 // fn textureNumLevels(texture: texture_cube<i32>) -> i32
 fn textureNumLevels_080d95() {
   var res: i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_080d95();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_080d95();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_080d95();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/080d95.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLevels/080d95.wgsl.expected.wgsl
index adbd0e5..686c908 100644
--- a/test/intrinsics/gen/textureNumLevels/080d95.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/080d95.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_cube<i32>;
+@group(1) @binding(0) var arg_0 : texture_cube<i32>;
 
 fn textureNumLevels_080d95() {
   var res : i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_080d95();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_080d95();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_080d95();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/09ddd0.wgsl b/test/intrinsics/gen/textureNumLevels/09ddd0.wgsl
index 566b3fb..b68221c 100644
--- a/test/intrinsics/gen/textureNumLevels/09ddd0.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/09ddd0.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d<u32>;
+@group(1) @binding(0) var arg_0: texture_2d<u32>;
 
 // fn textureNumLevels(texture: texture_2d<u32>) -> i32
 fn textureNumLevels_09ddd0() {
   var res: i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_09ddd0();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_09ddd0();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_09ddd0();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/09ddd0.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLevels/09ddd0.wgsl.expected.wgsl
index df0f042..7a4d344 100644
--- a/test/intrinsics/gen/textureNumLevels/09ddd0.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/09ddd0.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d<u32>;
+@group(1) @binding(0) var arg_0 : texture_2d<u32>;
 
 fn textureNumLevels_09ddd0() {
   var res : i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_09ddd0();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_09ddd0();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_09ddd0();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/105988.wgsl b/test/intrinsics/gen/textureNumLevels/105988.wgsl
index af619bd..9f03753 100644
--- a/test/intrinsics/gen/textureNumLevels/105988.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/105988.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d_array<f32>;
+@group(1) @binding(0) var arg_0: texture_2d_array<f32>;
 
 // fn textureNumLevels(texture: texture_2d_array<f32>) -> i32
 fn textureNumLevels_105988() {
   var res: i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_105988();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_105988();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_105988();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/105988.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLevels/105988.wgsl.expected.wgsl
index 776a1cc..1466976 100644
--- a/test/intrinsics/gen/textureNumLevels/105988.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/105988.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d_array<f32>;
+@group(1) @binding(0) var arg_0 : texture_2d_array<f32>;
 
 fn textureNumLevels_105988() {
   var res : i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_105988();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_105988();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_105988();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/1e6f3b.wgsl b/test/intrinsics/gen/textureNumLevels/1e6f3b.wgsl
index 02e002f..fc14600 100644
--- a/test/intrinsics/gen/textureNumLevels/1e6f3b.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/1e6f3b.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_1d<u32>;
+@group(1) @binding(0) var arg_0: texture_1d<u32>;
 
 // fn textureNumLevels(texture: texture_1d<u32>) -> i32
 fn textureNumLevels_1e6f3b() {
   var res: i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_1e6f3b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_1e6f3b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_1e6f3b();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/1e6f3b.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLevels/1e6f3b.wgsl.expected.wgsl
index 1aa0112..3643d3e 100644
--- a/test/intrinsics/gen/textureNumLevels/1e6f3b.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/1e6f3b.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_1d<u32>;
+@group(1) @binding(0) var arg_0 : texture_1d<u32>;
 
 fn textureNumLevels_1e6f3b() {
   var res : i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_1e6f3b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_1e6f3b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_1e6f3b();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/23f750.wgsl b/test/intrinsics/gen/textureNumLevels/23f750.wgsl
index 01cef5e..4b914fc 100644
--- a/test/intrinsics/gen/textureNumLevels/23f750.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/23f750.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d<i32>;
+@group(1) @binding(0) var arg_0: texture_2d<i32>;
 
 // fn textureNumLevels(texture: texture_2d<i32>) -> i32
 fn textureNumLevels_23f750() {
   var res: i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_23f750();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_23f750();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_23f750();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/23f750.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLevels/23f750.wgsl.expected.wgsl
index 9589607..86bf588 100644
--- a/test/intrinsics/gen/textureNumLevels/23f750.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/23f750.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d<i32>;
+@group(1) @binding(0) var arg_0 : texture_2d<i32>;
 
 fn textureNumLevels_23f750() {
   var res : i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_23f750();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_23f750();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_23f750();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/2c3575.wgsl b/test/intrinsics/gen/textureNumLevels/2c3575.wgsl
index 51dcb5f..556e103 100644
--- a/test/intrinsics/gen/textureNumLevels/2c3575.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/2c3575.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_cube_array;
+@group(1) @binding(0) var arg_0: texture_depth_cube_array;
 
 // fn textureNumLevels(texture: texture_depth_cube_array) -> i32
 fn textureNumLevels_2c3575() {
   var res: i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_2c3575();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_2c3575();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_2c3575();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/2c3575.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLevels/2c3575.wgsl.expected.wgsl
index 2709a15..6f2f54d 100644
--- a/test/intrinsics/gen/textureNumLevels/2c3575.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/2c3575.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_cube_array;
+@group(1) @binding(0) var arg_0 : texture_depth_cube_array;
 
 fn textureNumLevels_2c3575() {
   var res : i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_2c3575();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_2c3575();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_2c3575();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/32a0ae.wgsl b/test/intrinsics/gen/textureNumLevels/32a0ae.wgsl
index 1509fb9..04ae341 100644
--- a/test/intrinsics/gen/textureNumLevels/32a0ae.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/32a0ae.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_1d<i32>;
+@group(1) @binding(0) var arg_0: texture_1d<i32>;
 
 // fn textureNumLevels(texture: texture_1d<i32>) -> i32
 fn textureNumLevels_32a0ae() {
   var res: i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_32a0ae();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_32a0ae();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_32a0ae();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/32a0ae.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLevels/32a0ae.wgsl.expected.wgsl
index 2ec9379..e5016eb 100644
--- a/test/intrinsics/gen/textureNumLevels/32a0ae.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/32a0ae.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_1d<i32>;
+@group(1) @binding(0) var arg_0 : texture_1d<i32>;
 
 fn textureNumLevels_32a0ae() {
   var res : i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_32a0ae();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_32a0ae();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_32a0ae();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/5101cf.wgsl b/test/intrinsics/gen/textureNumLevels/5101cf.wgsl
index 9dcd78b..cab7551 100644
--- a/test/intrinsics/gen/textureNumLevels/5101cf.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/5101cf.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d_array<u32>;
+@group(1) @binding(0) var arg_0: texture_2d_array<u32>;
 
 // fn textureNumLevels(texture: texture_2d_array<u32>) -> i32
 fn textureNumLevels_5101cf() {
   var res: i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_5101cf();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_5101cf();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_5101cf();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/5101cf.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLevels/5101cf.wgsl.expected.wgsl
index fb10b80..694397b 100644
--- a/test/intrinsics/gen/textureNumLevels/5101cf.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/5101cf.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d_array<u32>;
+@group(1) @binding(0) var arg_0 : texture_2d_array<u32>;
 
 fn textureNumLevels_5101cf() {
   var res : i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_5101cf();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_5101cf();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_5101cf();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/51b5bb.wgsl b/test/intrinsics/gen/textureNumLevels/51b5bb.wgsl
index 5dfe672..04be5cb 100644
--- a/test/intrinsics/gen/textureNumLevels/51b5bb.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/51b5bb.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_1d<f32>;
+@group(1) @binding(0) var arg_0: texture_1d<f32>;
 
 // fn textureNumLevels(texture: texture_1d<f32>) -> i32
 fn textureNumLevels_51b5bb() {
   var res: i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_51b5bb();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_51b5bb();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_51b5bb();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/51b5bb.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLevels/51b5bb.wgsl.expected.wgsl
index 61beb7a..2ee7aa9 100644
--- a/test/intrinsics/gen/textureNumLevels/51b5bb.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/51b5bb.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_1d<f32>;
+@group(1) @binding(0) var arg_0 : texture_1d<f32>;
 
 fn textureNumLevels_51b5bb() {
   var res : i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_51b5bb();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_51b5bb();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_51b5bb();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/897aaf.wgsl b/test/intrinsics/gen/textureNumLevels/897aaf.wgsl
index 00c1fa3..6daf4db 100644
--- a/test/intrinsics/gen/textureNumLevels/897aaf.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/897aaf.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_cube<f32>;
+@group(1) @binding(0) var arg_0: texture_cube<f32>;
 
 // fn textureNumLevels(texture: texture_cube<f32>) -> i32
 fn textureNumLevels_897aaf() {
   var res: i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_897aaf();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_897aaf();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_897aaf();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/897aaf.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLevels/897aaf.wgsl.expected.wgsl
index f208427..97e9275 100644
--- a/test/intrinsics/gen/textureNumLevels/897aaf.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/897aaf.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_cube<f32>;
+@group(1) @binding(0) var arg_0 : texture_cube<f32>;
 
 fn textureNumLevels_897aaf() {
   var res : i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_897aaf();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_897aaf();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_897aaf();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/9da7a5.wgsl b/test/intrinsics/gen/textureNumLevels/9da7a5.wgsl
index d7c908f..c471eba 100644
--- a/test/intrinsics/gen/textureNumLevels/9da7a5.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/9da7a5.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_3d<i32>;
+@group(1) @binding(0) var arg_0: texture_3d<i32>;
 
 // fn textureNumLevels(texture: texture_3d<i32>) -> i32
 fn textureNumLevels_9da7a5() {
   var res: i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_9da7a5();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_9da7a5();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_9da7a5();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/9da7a5.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLevels/9da7a5.wgsl.expected.wgsl
index aeb5080..5980b48 100644
--- a/test/intrinsics/gen/textureNumLevels/9da7a5.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/9da7a5.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_3d<i32>;
+@group(1) @binding(0) var arg_0 : texture_3d<i32>;
 
 fn textureNumLevels_9da7a5() {
   var res : i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_9da7a5();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_9da7a5();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_9da7a5();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/a91c03.wgsl b/test/intrinsics/gen/textureNumLevels/a91c03.wgsl
index 9dfd011..0d9d201 100644
--- a/test/intrinsics/gen/textureNumLevels/a91c03.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/a91c03.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_cube_array<i32>;
+@group(1) @binding(0) var arg_0: texture_cube_array<i32>;
 
 // fn textureNumLevels(texture: texture_cube_array<i32>) -> i32
 fn textureNumLevels_a91c03() {
   var res: i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_a91c03();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_a91c03();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_a91c03();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/a91c03.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLevels/a91c03.wgsl.expected.wgsl
index e367038..7212853 100644
--- a/test/intrinsics/gen/textureNumLevels/a91c03.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/a91c03.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_cube_array<i32>;
+@group(1) @binding(0) var arg_0 : texture_cube_array<i32>;
 
 fn textureNumLevels_a91c03() {
   var res : i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_a91c03();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_a91c03();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_a91c03();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/aee7c8.wgsl b/test/intrinsics/gen/textureNumLevels/aee7c8.wgsl
index baf3a5b..701dd1e 100644
--- a/test/intrinsics/gen/textureNumLevels/aee7c8.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/aee7c8.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_cube_array<f32>;
+@group(1) @binding(0) var arg_0: texture_cube_array<f32>;
 
 // fn textureNumLevels(texture: texture_cube_array<f32>) -> i32
 fn textureNumLevels_aee7c8() {
   var res: i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_aee7c8();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_aee7c8();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_aee7c8();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/aee7c8.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLevels/aee7c8.wgsl.expected.wgsl
index dc4a392..32c8b5a 100644
--- a/test/intrinsics/gen/textureNumLevels/aee7c8.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/aee7c8.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_cube_array<f32>;
+@group(1) @binding(0) var arg_0 : texture_cube_array<f32>;
 
 fn textureNumLevels_aee7c8() {
   var res : i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_aee7c8();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_aee7c8();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_aee7c8();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/b1b12b.wgsl b/test/intrinsics/gen/textureNumLevels/b1b12b.wgsl
index bb46fdb..9f8980a 100644
--- a/test/intrinsics/gen/textureNumLevels/b1b12b.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/b1b12b.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_2d;
+@group(1) @binding(0) var arg_0: texture_depth_2d;
 
 // fn textureNumLevels(texture: texture_depth_2d) -> i32
 fn textureNumLevels_b1b12b() {
   var res: i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_b1b12b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_b1b12b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_b1b12b();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/b1b12b.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLevels/b1b12b.wgsl.expected.wgsl
index 2fe948a..97fd9a2 100644
--- a/test/intrinsics/gen/textureNumLevels/b1b12b.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/b1b12b.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_2d;
+@group(1) @binding(0) var arg_0 : texture_depth_2d;
 
 fn textureNumLevels_b1b12b() {
   var res : i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_b1b12b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_b1b12b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_b1b12b();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/b4f5ea.wgsl b/test/intrinsics/gen/textureNumLevels/b4f5ea.wgsl
index 6c79105..57d2353 100644
--- a/test/intrinsics/gen/textureNumLevels/b4f5ea.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/b4f5ea.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_3d<u32>;
+@group(1) @binding(0) var arg_0: texture_3d<u32>;
 
 // fn textureNumLevels(texture: texture_3d<u32>) -> i32
 fn textureNumLevels_b4f5ea() {
   var res: i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_b4f5ea();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_b4f5ea();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_b4f5ea();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/b4f5ea.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLevels/b4f5ea.wgsl.expected.wgsl
index 70c5658..ff1823d 100644
--- a/test/intrinsics/gen/textureNumLevels/b4f5ea.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/b4f5ea.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_3d<u32>;
+@group(1) @binding(0) var arg_0 : texture_3d<u32>;
 
 fn textureNumLevels_b4f5ea() {
   var res : i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_b4f5ea();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_b4f5ea();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_b4f5ea();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/d004a9.wgsl b/test/intrinsics/gen/textureNumLevels/d004a9.wgsl
index 1353492..862bc8d 100644
--- a/test/intrinsics/gen/textureNumLevels/d004a9.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/d004a9.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d_array<i32>;
+@group(1) @binding(0) var arg_0: texture_2d_array<i32>;
 
 // fn textureNumLevels(texture: texture_2d_array<i32>) -> i32
 fn textureNumLevels_d004a9() {
   var res: i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_d004a9();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_d004a9();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_d004a9();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/d004a9.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLevels/d004a9.wgsl.expected.wgsl
index 23230e9..e6efa4a 100644
--- a/test/intrinsics/gen/textureNumLevels/d004a9.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/d004a9.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d_array<i32>;
+@group(1) @binding(0) var arg_0 : texture_2d_array<i32>;
 
 fn textureNumLevels_d004a9() {
   var res : i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_d004a9();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_d004a9();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_d004a9();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/dca09e.wgsl b/test/intrinsics/gen/textureNumLevels/dca09e.wgsl
index 52bc5de..85fb619 100644
--- a/test/intrinsics/gen/textureNumLevels/dca09e.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/dca09e.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_3d<f32>;
+@group(1) @binding(0) var arg_0: texture_3d<f32>;
 
 // fn textureNumLevels(texture: texture_3d<f32>) -> i32
 fn textureNumLevels_dca09e() {
   var res: i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_dca09e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_dca09e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_dca09e();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/dca09e.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLevels/dca09e.wgsl.expected.wgsl
index bbf325d..81c2ed1 100644
--- a/test/intrinsics/gen/textureNumLevels/dca09e.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/dca09e.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_3d<f32>;
+@group(1) @binding(0) var arg_0 : texture_3d<f32>;
 
 fn textureNumLevels_dca09e() {
   var res : i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_dca09e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_dca09e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_dca09e();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/e67231.wgsl b/test/intrinsics/gen/textureNumLevels/e67231.wgsl
index 817b334..05f8db0 100644
--- a/test/intrinsics/gen/textureNumLevels/e67231.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/e67231.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d<f32>;
+@group(1) @binding(0) var arg_0: texture_2d<f32>;
 
 // fn textureNumLevels(texture: texture_2d<f32>) -> i32
 fn textureNumLevels_e67231() {
   var res: i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_e67231();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_e67231();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_e67231();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/e67231.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLevels/e67231.wgsl.expected.wgsl
index 1db03ef..b9b5a95 100644
--- a/test/intrinsics/gen/textureNumLevels/e67231.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/e67231.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d<f32>;
+@group(1) @binding(0) var arg_0 : texture_2d<f32>;
 
 fn textureNumLevels_e67231() {
   var res : i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_e67231();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_e67231();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_e67231();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/ed078b.wgsl b/test/intrinsics/gen/textureNumLevels/ed078b.wgsl
index 739603d..76ac64c 100644
--- a/test/intrinsics/gen/textureNumLevels/ed078b.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/ed078b.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_cube<u32>;
+@group(1) @binding(0) var arg_0: texture_cube<u32>;
 
 // fn textureNumLevels(texture: texture_cube<u32>) -> i32
 fn textureNumLevels_ed078b() {
   var res: i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_ed078b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_ed078b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_ed078b();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/ed078b.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLevels/ed078b.wgsl.expected.wgsl
index 4684f74..1eb3d87 100644
--- a/test/intrinsics/gen/textureNumLevels/ed078b.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/ed078b.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_cube<u32>;
+@group(1) @binding(0) var arg_0 : texture_cube<u32>;
 
 fn textureNumLevels_ed078b() {
   var res : i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_ed078b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_ed078b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_ed078b();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/f46ec6.wgsl b/test/intrinsics/gen/textureNumLevels/f46ec6.wgsl
index 05a8710..10ccf4e 100644
--- a/test/intrinsics/gen/textureNumLevels/f46ec6.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/f46ec6.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_cube_array<u32>;
+@group(1) @binding(0) var arg_0: texture_cube_array<u32>;
 
 // fn textureNumLevels(texture: texture_cube_array<u32>) -> i32
 fn textureNumLevels_f46ec6() {
   var res: i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_f46ec6();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_f46ec6();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_f46ec6();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/f46ec6.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLevels/f46ec6.wgsl.expected.wgsl
index ecf4daf..d380d9b 100644
--- a/test/intrinsics/gen/textureNumLevels/f46ec6.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/f46ec6.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_cube_array<u32>;
+@group(1) @binding(0) var arg_0 : texture_cube_array<u32>;
 
 fn textureNumLevels_f46ec6() {
   var res : i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_f46ec6();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_f46ec6();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_f46ec6();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/f5828d.wgsl b/test/intrinsics/gen/textureNumLevels/f5828d.wgsl
index 68737ce..bdfcc52 100644
--- a/test/intrinsics/gen/textureNumLevels/f5828d.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/f5828d.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_2d_array;
+@group(1) @binding(0) var arg_0: texture_depth_2d_array;
 
 // fn textureNumLevels(texture: texture_depth_2d_array) -> i32
 fn textureNumLevels_f5828d() {
   var res: i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_f5828d();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_f5828d();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_f5828d();
 }
diff --git a/test/intrinsics/gen/textureNumLevels/f5828d.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumLevels/f5828d.wgsl.expected.wgsl
index 5314134..501fe61 100644
--- a/test/intrinsics/gen/textureNumLevels/f5828d.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumLevels/f5828d.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_2d_array;
+@group(1) @binding(0) var arg_0 : texture_depth_2d_array;
 
 fn textureNumLevels_f5828d() {
   var res : i32 = textureNumLevels(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_f5828d();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumLevels_f5828d();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_f5828d();
 }
diff --git a/test/intrinsics/gen/textureNumSamples/2c6f14.wgsl b/test/intrinsics/gen/textureNumSamples/2c6f14.wgsl
index 4015d41..8a28fd4 100644
--- a/test/intrinsics/gen/textureNumSamples/2c6f14.wgsl
+++ b/test/intrinsics/gen/textureNumSamples/2c6f14.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_multisampled_2d<f32>;
+@group(1) @binding(0) var arg_0: texture_multisampled_2d<f32>;
 
 // fn textureNumSamples(texture: texture_multisampled_2d<f32>) -> i32
 fn textureNumSamples_2c6f14() {
   var res: i32 = textureNumSamples(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumSamples_2c6f14();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumSamples_2c6f14();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumSamples_2c6f14();
 }
diff --git a/test/intrinsics/gen/textureNumSamples/2c6f14.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumSamples/2c6f14.wgsl.expected.wgsl
index a8d25bc..be49934 100644
--- a/test/intrinsics/gen/textureNumSamples/2c6f14.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumSamples/2c6f14.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_multisampled_2d<f32>;
+@group(1) @binding(0) var arg_0 : texture_multisampled_2d<f32>;
 
 fn textureNumSamples_2c6f14() {
   var res : i32 = textureNumSamples(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumSamples_2c6f14();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumSamples_2c6f14();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumSamples_2c6f14();
 }
diff --git a/test/intrinsics/gen/textureNumSamples/42f8bb.wgsl b/test/intrinsics/gen/textureNumSamples/42f8bb.wgsl
index 606e5be..143f3a8 100644
--- a/test/intrinsics/gen/textureNumSamples/42f8bb.wgsl
+++ b/test/intrinsics/gen/textureNumSamples/42f8bb.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_multisampled_2d<u32>;
+@group(1) @binding(0) var arg_0: texture_multisampled_2d<u32>;
 
 // fn textureNumSamples(texture: texture_multisampled_2d<u32>) -> i32
 fn textureNumSamples_42f8bb() {
   var res: i32 = textureNumSamples(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumSamples_42f8bb();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumSamples_42f8bb();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumSamples_42f8bb();
 }
diff --git a/test/intrinsics/gen/textureNumSamples/42f8bb.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumSamples/42f8bb.wgsl.expected.wgsl
index 2f1e941..ef11b63 100644
--- a/test/intrinsics/gen/textureNumSamples/42f8bb.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumSamples/42f8bb.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_multisampled_2d<u32>;
+@group(1) @binding(0) var arg_0 : texture_multisampled_2d<u32>;
 
 fn textureNumSamples_42f8bb() {
   var res : i32 = textureNumSamples(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumSamples_42f8bb();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumSamples_42f8bb();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumSamples_42f8bb();
 }
diff --git a/test/intrinsics/gen/textureNumSamples/449d23.wgsl b/test/intrinsics/gen/textureNumSamples/449d23.wgsl
index 9f1de6e..c34a440 100644
--- a/test/intrinsics/gen/textureNumSamples/449d23.wgsl
+++ b/test/intrinsics/gen/textureNumSamples/449d23.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_multisampled_2d<i32>;
+@group(1) @binding(0) var arg_0: texture_multisampled_2d<i32>;
 
 // fn textureNumSamples(texture: texture_multisampled_2d<i32>) -> i32
 fn textureNumSamples_449d23() {
   var res: i32 = textureNumSamples(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumSamples_449d23();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumSamples_449d23();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumSamples_449d23();
 }
diff --git a/test/intrinsics/gen/textureNumSamples/449d23.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumSamples/449d23.wgsl.expected.wgsl
index 74b98a5..9cab69e 100644
--- a/test/intrinsics/gen/textureNumSamples/449d23.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumSamples/449d23.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_multisampled_2d<i32>;
+@group(1) @binding(0) var arg_0 : texture_multisampled_2d<i32>;
 
 fn textureNumSamples_449d23() {
   var res : i32 = textureNumSamples(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumSamples_449d23();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumSamples_449d23();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumSamples_449d23();
 }
diff --git a/test/intrinsics/gen/textureNumSamples/a3c8a0.wgsl b/test/intrinsics/gen/textureNumSamples/a3c8a0.wgsl
index 4cc3843..bafea1a 100644
--- a/test/intrinsics/gen/textureNumSamples/a3c8a0.wgsl
+++ b/test/intrinsics/gen/textureNumSamples/a3c8a0.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_multisampled_2d;
+@group(1) @binding(0) var arg_0: texture_depth_multisampled_2d;
 
 // fn textureNumSamples(texture: texture_depth_multisampled_2d) -> i32
 fn textureNumSamples_a3c8a0() {
   var res: i32 = textureNumSamples(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumSamples_a3c8a0();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumSamples_a3c8a0();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumSamples_a3c8a0();
 }
diff --git a/test/intrinsics/gen/textureNumSamples/a3c8a0.wgsl.expected.wgsl b/test/intrinsics/gen/textureNumSamples/a3c8a0.wgsl.expected.wgsl
index 141f059..29a914a 100644
--- a/test/intrinsics/gen/textureNumSamples/a3c8a0.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureNumSamples/a3c8a0.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_multisampled_2d;
+@group(1) @binding(0) var arg_0 : texture_depth_multisampled_2d;
 
 fn textureNumSamples_a3c8a0() {
   var res : i32 = textureNumSamples(arg_0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumSamples_a3c8a0();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureNumSamples_a3c8a0();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureNumSamples_a3c8a0();
 }
diff --git a/test/intrinsics/gen/textureSample/02aa9b.wgsl b/test/intrinsics/gen/textureSample/02aa9b.wgsl
index 2827f6f..006a838 100644
--- a/test/intrinsics/gen/textureSample/02aa9b.wgsl
+++ b/test/intrinsics/gen/textureSample/02aa9b.wgsl
@@ -22,15 +22,15 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d_array<f32>;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_2d_array<f32>;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSample(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: i32, offset: vec2<i32>) -> vec4<f32>
 fn textureSample_02aa9b() {
   var res: vec4<f32> = textureSample(arg_0, arg_1, vec2<f32>(), 1, vec2<i32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSample_02aa9b();
 }
diff --git a/test/intrinsics/gen/textureSample/02aa9b.wgsl.expected.wgsl b/test/intrinsics/gen/textureSample/02aa9b.wgsl.expected.wgsl
index b005caa..8557991 100644
--- a/test/intrinsics/gen/textureSample/02aa9b.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSample/02aa9b.wgsl.expected.wgsl
@@ -1,12 +1,12 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d_array<f32>;
+@group(1) @binding(0) var arg_0 : texture_2d_array<f32>;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSample_02aa9b() {
   var res : vec4<f32> = textureSample(arg_0, arg_1, vec2<f32>(), 1, vec2<i32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSample_02aa9b();
 }
diff --git a/test/intrinsics/gen/textureSample/100dc0.wgsl b/test/intrinsics/gen/textureSample/100dc0.wgsl
index 49ea8de..a5f95e7 100644
--- a/test/intrinsics/gen/textureSample/100dc0.wgsl
+++ b/test/intrinsics/gen/textureSample/100dc0.wgsl
@@ -22,15 +22,15 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_3d<f32>;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_3d<f32>;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSample(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, offset: vec3<i32>) -> vec4<f32>
 fn textureSample_100dc0() {
   var res: vec4<f32> = textureSample(arg_0, arg_1, vec3<f32>(), vec3<i32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSample_100dc0();
 }
diff --git a/test/intrinsics/gen/textureSample/100dc0.wgsl.expected.wgsl b/test/intrinsics/gen/textureSample/100dc0.wgsl.expected.wgsl
index 6fcbb13..b972855 100644
--- a/test/intrinsics/gen/textureSample/100dc0.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSample/100dc0.wgsl.expected.wgsl
@@ -1,12 +1,12 @@
-[[group(1), binding(0)]] var arg_0 : texture_3d<f32>;
+@group(1) @binding(0) var arg_0 : texture_3d<f32>;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSample_100dc0() {
   var res : vec4<f32> = textureSample(arg_0, arg_1, vec3<f32>(), vec3<i32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSample_100dc0();
 }
diff --git a/test/intrinsics/gen/textureSample/38bbb9.wgsl b/test/intrinsics/gen/textureSample/38bbb9.wgsl
index effaac2..ee2abbd 100644
--- a/test/intrinsics/gen/textureSample/38bbb9.wgsl
+++ b/test/intrinsics/gen/textureSample/38bbb9.wgsl
@@ -22,15 +22,15 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_2d;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_depth_2d;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSample(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>) -> f32
 fn textureSample_38bbb9() {
   var res: f32 = textureSample(arg_0, arg_1, vec2<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSample_38bbb9();
 }
diff --git a/test/intrinsics/gen/textureSample/38bbb9.wgsl.expected.wgsl b/test/intrinsics/gen/textureSample/38bbb9.wgsl.expected.wgsl
index 3d321ed..438d008 100644
--- a/test/intrinsics/gen/textureSample/38bbb9.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSample/38bbb9.wgsl.expected.wgsl
@@ -1,12 +1,12 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_2d;
+@group(1) @binding(0) var arg_0 : texture_depth_2d;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSample_38bbb9() {
   var res : f32 = textureSample(arg_0, arg_1, vec2<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSample_38bbb9();
 }
diff --git a/test/intrinsics/gen/textureSample/3b50bd.wgsl b/test/intrinsics/gen/textureSample/3b50bd.wgsl
index c429a99..0c0b55f 100644
--- a/test/intrinsics/gen/textureSample/3b50bd.wgsl
+++ b/test/intrinsics/gen/textureSample/3b50bd.wgsl
@@ -22,15 +22,15 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_3d<f32>;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_3d<f32>;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSample(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>) -> vec4<f32>
 fn textureSample_3b50bd() {
   var res: vec4<f32> = textureSample(arg_0, arg_1, vec3<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSample_3b50bd();
 }
diff --git a/test/intrinsics/gen/textureSample/3b50bd.wgsl.expected.wgsl b/test/intrinsics/gen/textureSample/3b50bd.wgsl.expected.wgsl
index 268e4e4..03ccde3 100644
--- a/test/intrinsics/gen/textureSample/3b50bd.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSample/3b50bd.wgsl.expected.wgsl
@@ -1,12 +1,12 @@
-[[group(1), binding(0)]] var arg_0 : texture_3d<f32>;
+@group(1) @binding(0) var arg_0 : texture_3d<f32>;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSample_3b50bd() {
   var res : vec4<f32> = textureSample(arg_0, arg_1, vec3<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSample_3b50bd();
 }
diff --git a/test/intrinsics/gen/textureSample/4dd1bf.wgsl b/test/intrinsics/gen/textureSample/4dd1bf.wgsl
index 7e33126..f722cd1 100644
--- a/test/intrinsics/gen/textureSample/4dd1bf.wgsl
+++ b/test/intrinsics/gen/textureSample/4dd1bf.wgsl
@@ -22,15 +22,15 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_cube_array<f32>;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_cube_array<f32>;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSample(texture: texture_cube_array<f32>, sampler: sampler, coords: vec3<f32>, array_index: i32) -> vec4<f32>
 fn textureSample_4dd1bf() {
   var res: vec4<f32> = textureSample(arg_0, arg_1, vec3<f32>(), 1);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSample_4dd1bf();
 }
diff --git a/test/intrinsics/gen/textureSample/4dd1bf.wgsl.expected.wgsl b/test/intrinsics/gen/textureSample/4dd1bf.wgsl.expected.wgsl
index 25c98d3..77ad88a 100644
--- a/test/intrinsics/gen/textureSample/4dd1bf.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSample/4dd1bf.wgsl.expected.wgsl
@@ -1,12 +1,12 @@
-[[group(1), binding(0)]] var arg_0 : texture_cube_array<f32>;
+@group(1) @binding(0) var arg_0 : texture_cube_array<f32>;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSample_4dd1bf() {
   var res : vec4<f32> = textureSample(arg_0, arg_1, vec3<f32>(), 1);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSample_4dd1bf();
 }
diff --git a/test/intrinsics/gen/textureSample/51b514.wgsl b/test/intrinsics/gen/textureSample/51b514.wgsl
index 4ba2216..5433460 100644
--- a/test/intrinsics/gen/textureSample/51b514.wgsl
+++ b/test/intrinsics/gen/textureSample/51b514.wgsl
@@ -22,15 +22,15 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d<f32>;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_2d<f32>;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSample(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>) -> vec4<f32>
 fn textureSample_51b514() {
   var res: vec4<f32> = textureSample(arg_0, arg_1, vec2<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSample_51b514();
 }
diff --git a/test/intrinsics/gen/textureSample/51b514.wgsl.expected.wgsl b/test/intrinsics/gen/textureSample/51b514.wgsl.expected.wgsl
index 825becd..f866a59 100644
--- a/test/intrinsics/gen/textureSample/51b514.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSample/51b514.wgsl.expected.wgsl
@@ -1,12 +1,12 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d<f32>;
+@group(1) @binding(0) var arg_0 : texture_2d<f32>;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSample_51b514() {
   var res : vec4<f32> = textureSample(arg_0, arg_1, vec2<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSample_51b514();
 }
diff --git a/test/intrinsics/gen/textureSample/667d76.wgsl b/test/intrinsics/gen/textureSample/667d76.wgsl
index 73ba79a..23d98a9 100644
--- a/test/intrinsics/gen/textureSample/667d76.wgsl
+++ b/test/intrinsics/gen/textureSample/667d76.wgsl
@@ -22,15 +22,15 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_2d;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_depth_2d;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSample(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>, offset: vec2<i32>) -> f32
 fn textureSample_667d76() {
   var res: f32 = textureSample(arg_0, arg_1, vec2<f32>(), vec2<i32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSample_667d76();
 }
diff --git a/test/intrinsics/gen/textureSample/667d76.wgsl.expected.wgsl b/test/intrinsics/gen/textureSample/667d76.wgsl.expected.wgsl
index 3e92695..d541431 100644
--- a/test/intrinsics/gen/textureSample/667d76.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSample/667d76.wgsl.expected.wgsl
@@ -1,12 +1,12 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_2d;
+@group(1) @binding(0) var arg_0 : texture_depth_2d;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSample_667d76() {
   var res : f32 = textureSample(arg_0, arg_1, vec2<f32>(), vec2<i32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSample_667d76();
 }
diff --git a/test/intrinsics/gen/textureSample/6717ca.wgsl b/test/intrinsics/gen/textureSample/6717ca.wgsl
index 35f0657..fc09cca 100644
--- a/test/intrinsics/gen/textureSample/6717ca.wgsl
+++ b/test/intrinsics/gen/textureSample/6717ca.wgsl
@@ -22,15 +22,15 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d_array<f32>;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_2d_array<f32>;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSample(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: i32) -> vec4<f32>
 fn textureSample_6717ca() {
   var res: vec4<f32> = textureSample(arg_0, arg_1, vec2<f32>(), 1);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSample_6717ca();
 }
diff --git a/test/intrinsics/gen/textureSample/6717ca.wgsl.expected.wgsl b/test/intrinsics/gen/textureSample/6717ca.wgsl.expected.wgsl
index 9d9e695..b767d29 100644
--- a/test/intrinsics/gen/textureSample/6717ca.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSample/6717ca.wgsl.expected.wgsl
@@ -1,12 +1,12 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d_array<f32>;
+@group(1) @binding(0) var arg_0 : texture_2d_array<f32>;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSample_6717ca() {
   var res : vec4<f32> = textureSample(arg_0, arg_1, vec2<f32>(), 1);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSample_6717ca();
 }
diff --git a/test/intrinsics/gen/textureSample/6e64fb.wgsl b/test/intrinsics/gen/textureSample/6e64fb.wgsl
index 24a8ae7..d49bb9c 100644
--- a/test/intrinsics/gen/textureSample/6e64fb.wgsl
+++ b/test/intrinsics/gen/textureSample/6e64fb.wgsl
@@ -22,15 +22,15 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_1d<f32>;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_1d<f32>;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSample(texture: texture_1d<f32>, sampler: sampler, coords: f32) -> vec4<f32>
 fn textureSample_6e64fb() {
   var res: vec4<f32> = textureSample(arg_0, arg_1, 1.0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSample_6e64fb();
 }
diff --git a/test/intrinsics/gen/textureSample/6e64fb.wgsl.expected.wgsl b/test/intrinsics/gen/textureSample/6e64fb.wgsl.expected.wgsl
index 7e7d7ec..4d7b6ce 100644
--- a/test/intrinsics/gen/textureSample/6e64fb.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSample/6e64fb.wgsl.expected.wgsl
@@ -1,12 +1,12 @@
-[[group(1), binding(0)]] var arg_0 : texture_1d<f32>;
+@group(1) @binding(0) var arg_0 : texture_1d<f32>;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSample_6e64fb() {
   var res : vec4<f32> = textureSample(arg_0, arg_1, 1.0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSample_6e64fb();
 }
diff --git a/test/intrinsics/gen/textureSample/7c3baa.wgsl b/test/intrinsics/gen/textureSample/7c3baa.wgsl
index 6486d89..9f32596 100644
--- a/test/intrinsics/gen/textureSample/7c3baa.wgsl
+++ b/test/intrinsics/gen/textureSample/7c3baa.wgsl
@@ -22,15 +22,15 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d<f32>;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_2d<f32>;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSample(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, offset: vec2<i32>) -> vec4<f32>
 fn textureSample_7c3baa() {
   var res: vec4<f32> = textureSample(arg_0, arg_1, vec2<f32>(), vec2<i32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSample_7c3baa();
 }
diff --git a/test/intrinsics/gen/textureSample/7c3baa.wgsl.expected.wgsl b/test/intrinsics/gen/textureSample/7c3baa.wgsl.expected.wgsl
index 7491762..f4105d8 100644
--- a/test/intrinsics/gen/textureSample/7c3baa.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSample/7c3baa.wgsl.expected.wgsl
@@ -1,12 +1,12 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d<f32>;
+@group(1) @binding(0) var arg_0 : texture_2d<f32>;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSample_7c3baa() {
   var res : vec4<f32> = textureSample(arg_0, arg_1, vec2<f32>(), vec2<i32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSample_7c3baa();
 }
diff --git a/test/intrinsics/gen/textureSample/7e9ffd.wgsl b/test/intrinsics/gen/textureSample/7e9ffd.wgsl
index 3e4a681..d5242f6 100644
--- a/test/intrinsics/gen/textureSample/7e9ffd.wgsl
+++ b/test/intrinsics/gen/textureSample/7e9ffd.wgsl
@@ -22,15 +22,15 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_2d_array;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_depth_2d_array;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSample(texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: i32) -> f32
 fn textureSample_7e9ffd() {
   var res: f32 = textureSample(arg_0, arg_1, vec2<f32>(), 1);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSample_7e9ffd();
 }
diff --git a/test/intrinsics/gen/textureSample/7e9ffd.wgsl.expected.wgsl b/test/intrinsics/gen/textureSample/7e9ffd.wgsl.expected.wgsl
index b570940..ba76347 100644
--- a/test/intrinsics/gen/textureSample/7e9ffd.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSample/7e9ffd.wgsl.expected.wgsl
@@ -1,12 +1,12 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_2d_array;
+@group(1) @binding(0) var arg_0 : texture_depth_2d_array;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSample_7e9ffd() {
   var res : f32 = textureSample(arg_0, arg_1, vec2<f32>(), 1);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSample_7e9ffd();
 }
diff --git a/test/intrinsics/gen/textureSample/8522e7.wgsl b/test/intrinsics/gen/textureSample/8522e7.wgsl
index afc0646..2ac3071 100644
--- a/test/intrinsics/gen/textureSample/8522e7.wgsl
+++ b/test/intrinsics/gen/textureSample/8522e7.wgsl
@@ -22,15 +22,15 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_2d_array;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_depth_2d_array;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSample(texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: i32, offset: vec2<i32>) -> f32
 fn textureSample_8522e7() {
   var res: f32 = textureSample(arg_0, arg_1, vec2<f32>(), 1, vec2<i32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSample_8522e7();
 }
diff --git a/test/intrinsics/gen/textureSample/8522e7.wgsl.expected.wgsl b/test/intrinsics/gen/textureSample/8522e7.wgsl.expected.wgsl
index 4133cde..a3d93c8 100644
--- a/test/intrinsics/gen/textureSample/8522e7.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSample/8522e7.wgsl.expected.wgsl
@@ -1,12 +1,12 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_2d_array;
+@group(1) @binding(0) var arg_0 : texture_depth_2d_array;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSample_8522e7() {
   var res : f32 = textureSample(arg_0, arg_1, vec2<f32>(), 1, vec2<i32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSample_8522e7();
 }
diff --git a/test/intrinsics/gen/textureSample/c2f4e8.wgsl b/test/intrinsics/gen/textureSample/c2f4e8.wgsl
index cd23dcc..e6c03a1 100644
--- a/test/intrinsics/gen/textureSample/c2f4e8.wgsl
+++ b/test/intrinsics/gen/textureSample/c2f4e8.wgsl
@@ -22,15 +22,15 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_cube_array;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_depth_cube_array;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSample(texture: texture_depth_cube_array, sampler: sampler, coords: vec3<f32>, array_index: i32) -> f32
 fn textureSample_c2f4e8() {
   var res: f32 = textureSample(arg_0, arg_1, vec3<f32>(), 1);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSample_c2f4e8();
 }
diff --git a/test/intrinsics/gen/textureSample/c2f4e8.wgsl.expected.wgsl b/test/intrinsics/gen/textureSample/c2f4e8.wgsl.expected.wgsl
index 835f3c2..0a6f332 100644
--- a/test/intrinsics/gen/textureSample/c2f4e8.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSample/c2f4e8.wgsl.expected.wgsl
@@ -1,12 +1,12 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_cube_array;
+@group(1) @binding(0) var arg_0 : texture_depth_cube_array;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSample_c2f4e8() {
   var res : f32 = textureSample(arg_0, arg_1, vec3<f32>(), 1);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSample_c2f4e8();
 }
diff --git a/test/intrinsics/gen/textureSample/e53267.wgsl b/test/intrinsics/gen/textureSample/e53267.wgsl
index 14163e1..6ac4cd6 100644
--- a/test/intrinsics/gen/textureSample/e53267.wgsl
+++ b/test/intrinsics/gen/textureSample/e53267.wgsl
@@ -22,15 +22,15 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_cube<f32>;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_cube<f32>;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSample(texture: texture_cube<f32>, sampler: sampler, coords: vec3<f32>) -> vec4<f32>
 fn textureSample_e53267() {
   var res: vec4<f32> = textureSample(arg_0, arg_1, vec3<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSample_e53267();
 }
diff --git a/test/intrinsics/gen/textureSample/e53267.wgsl.expected.wgsl b/test/intrinsics/gen/textureSample/e53267.wgsl.expected.wgsl
index 64f9da9..b1d17e7 100644
--- a/test/intrinsics/gen/textureSample/e53267.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSample/e53267.wgsl.expected.wgsl
@@ -1,12 +1,12 @@
-[[group(1), binding(0)]] var arg_0 : texture_cube<f32>;
+@group(1) @binding(0) var arg_0 : texture_cube<f32>;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSample_e53267() {
   var res : vec4<f32> = textureSample(arg_0, arg_1, vec3<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSample_e53267();
 }
diff --git a/test/intrinsics/gen/textureSample/ea7030.wgsl b/test/intrinsics/gen/textureSample/ea7030.wgsl
index f36a76e..482686a 100644
--- a/test/intrinsics/gen/textureSample/ea7030.wgsl
+++ b/test/intrinsics/gen/textureSample/ea7030.wgsl
@@ -22,15 +22,15 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_cube;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_depth_cube;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSample(texture: texture_depth_cube, sampler: sampler, coords: vec3<f32>) -> f32
 fn textureSample_ea7030() {
   var res: f32 = textureSample(arg_0, arg_1, vec3<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSample_ea7030();
 }
diff --git a/test/intrinsics/gen/textureSample/ea7030.wgsl.expected.wgsl b/test/intrinsics/gen/textureSample/ea7030.wgsl.expected.wgsl
index 580b0b0..4fffe53 100644
--- a/test/intrinsics/gen/textureSample/ea7030.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSample/ea7030.wgsl.expected.wgsl
@@ -1,12 +1,12 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_cube;
+@group(1) @binding(0) var arg_0 : texture_depth_cube;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSample_ea7030() {
   var res : f32 = textureSample(arg_0, arg_1, vec3<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSample_ea7030();
 }
diff --git a/test/intrinsics/gen/textureSampleBias/53b9f7.wgsl b/test/intrinsics/gen/textureSampleBias/53b9f7.wgsl
index 976b690..17b3557 100644
--- a/test/intrinsics/gen/textureSampleBias/53b9f7.wgsl
+++ b/test/intrinsics/gen/textureSampleBias/53b9f7.wgsl
@@ -22,15 +22,15 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_cube<f32>;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_cube<f32>;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSampleBias(texture: texture_cube<f32>, sampler: sampler, coords: vec3<f32>, bias: f32) -> vec4<f32>
 fn textureSampleBias_53b9f7() {
   var res: vec4<f32> = textureSampleBias(arg_0, arg_1, vec3<f32>(), 1.0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleBias_53b9f7();
 }
diff --git a/test/intrinsics/gen/textureSampleBias/53b9f7.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleBias/53b9f7.wgsl.expected.wgsl
index aaeec48..58e2030 100644
--- a/test/intrinsics/gen/textureSampleBias/53b9f7.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleBias/53b9f7.wgsl.expected.wgsl
@@ -1,12 +1,12 @@
-[[group(1), binding(0)]] var arg_0 : texture_cube<f32>;
+@group(1) @binding(0) var arg_0 : texture_cube<f32>;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSampleBias_53b9f7() {
   var res : vec4<f32> = textureSampleBias(arg_0, arg_1, vec3<f32>(), 1.0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleBias_53b9f7();
 }
diff --git a/test/intrinsics/gen/textureSampleBias/65ac50.wgsl b/test/intrinsics/gen/textureSampleBias/65ac50.wgsl
index e3c0a22..5a95380 100644
--- a/test/intrinsics/gen/textureSampleBias/65ac50.wgsl
+++ b/test/intrinsics/gen/textureSampleBias/65ac50.wgsl
@@ -22,15 +22,15 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d_array<f32>;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_2d_array<f32>;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSampleBias(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: i32, bias: f32, offset: vec2<i32>) -> vec4<f32>
 fn textureSampleBias_65ac50() {
   var res: vec4<f32> = textureSampleBias(arg_0, arg_1, vec2<f32>(), 1, 1.0, vec2<i32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleBias_65ac50();
 }
diff --git a/test/intrinsics/gen/textureSampleBias/65ac50.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleBias/65ac50.wgsl.expected.wgsl
index 915c1f4..ca8e190 100644
--- a/test/intrinsics/gen/textureSampleBias/65ac50.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleBias/65ac50.wgsl.expected.wgsl
@@ -1,12 +1,12 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d_array<f32>;
+@group(1) @binding(0) var arg_0 : texture_2d_array<f32>;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSampleBias_65ac50() {
   var res : vec4<f32> = textureSampleBias(arg_0, arg_1, vec2<f32>(), 1, 1.0, vec2<i32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleBias_65ac50();
 }
diff --git a/test/intrinsics/gen/textureSampleBias/6a9113.wgsl b/test/intrinsics/gen/textureSampleBias/6a9113.wgsl
index e7648e4..8c17b47 100644
--- a/test/intrinsics/gen/textureSampleBias/6a9113.wgsl
+++ b/test/intrinsics/gen/textureSampleBias/6a9113.wgsl
@@ -22,15 +22,15 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d<f32>;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_2d<f32>;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSampleBias(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, bias: f32) -> vec4<f32>
 fn textureSampleBias_6a9113() {
   var res: vec4<f32> = textureSampleBias(arg_0, arg_1, vec2<f32>(), 1.0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleBias_6a9113();
 }
diff --git a/test/intrinsics/gen/textureSampleBias/6a9113.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleBias/6a9113.wgsl.expected.wgsl
index 36043aa..a5ff76e 100644
--- a/test/intrinsics/gen/textureSampleBias/6a9113.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleBias/6a9113.wgsl.expected.wgsl
@@ -1,12 +1,12 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d<f32>;
+@group(1) @binding(0) var arg_0 : texture_2d<f32>;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSampleBias_6a9113() {
   var res : vec4<f32> = textureSampleBias(arg_0, arg_1, vec2<f32>(), 1.0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleBias_6a9113();
 }
diff --git a/test/intrinsics/gen/textureSampleBias/80e579.wgsl b/test/intrinsics/gen/textureSampleBias/80e579.wgsl
index 37e9940..0ae5cc8 100644
--- a/test/intrinsics/gen/textureSampleBias/80e579.wgsl
+++ b/test/intrinsics/gen/textureSampleBias/80e579.wgsl
@@ -22,15 +22,15 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d_array<f32>;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_2d_array<f32>;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSampleBias(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: i32, bias: f32) -> vec4<f32>
 fn textureSampleBias_80e579() {
   var res: vec4<f32> = textureSampleBias(arg_0, arg_1, vec2<f32>(), 1, 1.0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleBias_80e579();
 }
diff --git a/test/intrinsics/gen/textureSampleBias/80e579.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleBias/80e579.wgsl.expected.wgsl
index 6134ecb..164c81e 100644
--- a/test/intrinsics/gen/textureSampleBias/80e579.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleBias/80e579.wgsl.expected.wgsl
@@ -1,12 +1,12 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d_array<f32>;
+@group(1) @binding(0) var arg_0 : texture_2d_array<f32>;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSampleBias_80e579() {
   var res : vec4<f32> = textureSampleBias(arg_0, arg_1, vec2<f32>(), 1, 1.0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleBias_80e579();
 }
diff --git a/test/intrinsics/gen/textureSampleBias/81c19a.wgsl b/test/intrinsics/gen/textureSampleBias/81c19a.wgsl
index 145a1e9..f6f996f 100644
--- a/test/intrinsics/gen/textureSampleBias/81c19a.wgsl
+++ b/test/intrinsics/gen/textureSampleBias/81c19a.wgsl
@@ -22,15 +22,15 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d<f32>;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_2d<f32>;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSampleBias(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, bias: f32, offset: vec2<i32>) -> vec4<f32>
 fn textureSampleBias_81c19a() {
   var res: vec4<f32> = textureSampleBias(arg_0, arg_1, vec2<f32>(), 1.0, vec2<i32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleBias_81c19a();
 }
diff --git a/test/intrinsics/gen/textureSampleBias/81c19a.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleBias/81c19a.wgsl.expected.wgsl
index 88ef14b..2719198 100644
--- a/test/intrinsics/gen/textureSampleBias/81c19a.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleBias/81c19a.wgsl.expected.wgsl
@@ -1,12 +1,12 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d<f32>;
+@group(1) @binding(0) var arg_0 : texture_2d<f32>;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSampleBias_81c19a() {
   var res : vec4<f32> = textureSampleBias(arg_0, arg_1, vec2<f32>(), 1.0, vec2<i32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleBias_81c19a();
 }
diff --git a/test/intrinsics/gen/textureSampleBias/d3fa1b.wgsl b/test/intrinsics/gen/textureSampleBias/d3fa1b.wgsl
index 5ec074c..d70657e 100644
--- a/test/intrinsics/gen/textureSampleBias/d3fa1b.wgsl
+++ b/test/intrinsics/gen/textureSampleBias/d3fa1b.wgsl
@@ -22,15 +22,15 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_3d<f32>;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_3d<f32>;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSampleBias(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, bias: f32) -> vec4<f32>
 fn textureSampleBias_d3fa1b() {
   var res: vec4<f32> = textureSampleBias(arg_0, arg_1, vec3<f32>(), 1.0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleBias_d3fa1b();
 }
diff --git a/test/intrinsics/gen/textureSampleBias/d3fa1b.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleBias/d3fa1b.wgsl.expected.wgsl
index 40dc89e..7a07c30 100644
--- a/test/intrinsics/gen/textureSampleBias/d3fa1b.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleBias/d3fa1b.wgsl.expected.wgsl
@@ -1,12 +1,12 @@
-[[group(1), binding(0)]] var arg_0 : texture_3d<f32>;
+@group(1) @binding(0) var arg_0 : texture_3d<f32>;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSampleBias_d3fa1b() {
   var res : vec4<f32> = textureSampleBias(arg_0, arg_1, vec3<f32>(), 1.0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleBias_d3fa1b();
 }
diff --git a/test/intrinsics/gen/textureSampleBias/df91bb.wgsl b/test/intrinsics/gen/textureSampleBias/df91bb.wgsl
index 41c7990..b35e5a4 100644
--- a/test/intrinsics/gen/textureSampleBias/df91bb.wgsl
+++ b/test/intrinsics/gen/textureSampleBias/df91bb.wgsl
@@ -22,15 +22,15 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_3d<f32>;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_3d<f32>;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSampleBias(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, bias: f32, offset: vec3<i32>) -> vec4<f32>
 fn textureSampleBias_df91bb() {
   var res: vec4<f32> = textureSampleBias(arg_0, arg_1, vec3<f32>(), 1.0, vec3<i32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleBias_df91bb();
 }
diff --git a/test/intrinsics/gen/textureSampleBias/df91bb.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleBias/df91bb.wgsl.expected.wgsl
index c361dd7..9f530da 100644
--- a/test/intrinsics/gen/textureSampleBias/df91bb.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleBias/df91bb.wgsl.expected.wgsl
@@ -1,12 +1,12 @@
-[[group(1), binding(0)]] var arg_0 : texture_3d<f32>;
+@group(1) @binding(0) var arg_0 : texture_3d<f32>;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSampleBias_df91bb() {
   var res : vec4<f32> = textureSampleBias(arg_0, arg_1, vec3<f32>(), 1.0, vec3<i32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleBias_df91bb();
 }
diff --git a/test/intrinsics/gen/textureSampleBias/eed7c4.wgsl b/test/intrinsics/gen/textureSampleBias/eed7c4.wgsl
index a2df185..408326a 100644
--- a/test/intrinsics/gen/textureSampleBias/eed7c4.wgsl
+++ b/test/intrinsics/gen/textureSampleBias/eed7c4.wgsl
@@ -22,15 +22,15 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_cube_array<f32>;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_cube_array<f32>;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSampleBias(texture: texture_cube_array<f32>, sampler: sampler, coords: vec3<f32>, array_index: i32, bias: f32) -> vec4<f32>
 fn textureSampleBias_eed7c4() {
   var res: vec4<f32> = textureSampleBias(arg_0, arg_1, vec3<f32>(), 1, 1.0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleBias_eed7c4();
 }
diff --git a/test/intrinsics/gen/textureSampleBias/eed7c4.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleBias/eed7c4.wgsl.expected.wgsl
index c106d85..e2c3aa7 100644
--- a/test/intrinsics/gen/textureSampleBias/eed7c4.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleBias/eed7c4.wgsl.expected.wgsl
@@ -1,12 +1,12 @@
-[[group(1), binding(0)]] var arg_0 : texture_cube_array<f32>;
+@group(1) @binding(0) var arg_0 : texture_cube_array<f32>;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSampleBias_eed7c4() {
   var res : vec4<f32> = textureSampleBias(arg_0, arg_1, vec3<f32>(), 1, 1.0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleBias_eed7c4();
 }
diff --git a/test/intrinsics/gen/textureSampleCompare/25fcd1.wgsl b/test/intrinsics/gen/textureSampleCompare/25fcd1.wgsl
index 022bc66..3f6096a 100644
--- a/test/intrinsics/gen/textureSampleCompare/25fcd1.wgsl
+++ b/test/intrinsics/gen/textureSampleCompare/25fcd1.wgsl
@@ -22,15 +22,15 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_2d;
-[[group(1), binding(1)]] var arg_1: sampler_comparison;
+@group(1) @binding(0) var arg_0: texture_depth_2d;
+@group(1) @binding(1) var arg_1: sampler_comparison;
 
 // fn textureSampleCompare(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32, offset: vec2<i32>) -> f32
 fn textureSampleCompare_25fcd1() {
   var res: f32 = textureSampleCompare(arg_0, arg_1, vec2<f32>(), 1.0, vec2<i32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleCompare_25fcd1();
 }
diff --git a/test/intrinsics/gen/textureSampleCompare/25fcd1.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleCompare/25fcd1.wgsl.expected.wgsl
index 7beb7ef..532be33 100644
--- a/test/intrinsics/gen/textureSampleCompare/25fcd1.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleCompare/25fcd1.wgsl.expected.wgsl
@@ -1,12 +1,12 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_2d;
+@group(1) @binding(0) var arg_0 : texture_depth_2d;
 
-[[group(1), binding(1)]] var arg_1 : sampler_comparison;
+@group(1) @binding(1) var arg_1 : sampler_comparison;
 
 fn textureSampleCompare_25fcd1() {
   var res : f32 = textureSampleCompare(arg_0, arg_1, vec2<f32>(), 1.0, vec2<i32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleCompare_25fcd1();
 }
diff --git a/test/intrinsics/gen/textureSampleCompare/3a5923.wgsl b/test/intrinsics/gen/textureSampleCompare/3a5923.wgsl
index e943215..1c2c30c 100644
--- a/test/intrinsics/gen/textureSampleCompare/3a5923.wgsl
+++ b/test/intrinsics/gen/textureSampleCompare/3a5923.wgsl
@@ -22,15 +22,15 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_2d;
-[[group(1), binding(1)]] var arg_1: sampler_comparison;
+@group(1) @binding(0) var arg_0: texture_depth_2d;
+@group(1) @binding(1) var arg_1: sampler_comparison;
 
 // fn textureSampleCompare(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32) -> f32
 fn textureSampleCompare_3a5923() {
   var res: f32 = textureSampleCompare(arg_0, arg_1, vec2<f32>(), 1.0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleCompare_3a5923();
 }
diff --git a/test/intrinsics/gen/textureSampleCompare/3a5923.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleCompare/3a5923.wgsl.expected.wgsl
index a002ef2..eb88140 100644
--- a/test/intrinsics/gen/textureSampleCompare/3a5923.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleCompare/3a5923.wgsl.expected.wgsl
@@ -1,12 +1,12 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_2d;
+@group(1) @binding(0) var arg_0 : texture_depth_2d;
 
-[[group(1), binding(1)]] var arg_1 : sampler_comparison;
+@group(1) @binding(1) var arg_1 : sampler_comparison;
 
 fn textureSampleCompare_3a5923() {
   var res : f32 = textureSampleCompare(arg_0, arg_1, vec2<f32>(), 1.0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleCompare_3a5923();
 }
diff --git a/test/intrinsics/gen/textureSampleCompare/63fb83.wgsl b/test/intrinsics/gen/textureSampleCompare/63fb83.wgsl
index 56bcd60..1accd53 100644
--- a/test/intrinsics/gen/textureSampleCompare/63fb83.wgsl
+++ b/test/intrinsics/gen/textureSampleCompare/63fb83.wgsl
@@ -22,15 +22,15 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_cube;
-[[group(1), binding(1)]] var arg_1: sampler_comparison;
+@group(1) @binding(0) var arg_0: texture_depth_cube;
+@group(1) @binding(1) var arg_1: sampler_comparison;
 
 // fn textureSampleCompare(texture: texture_depth_cube, sampler: sampler_comparison, coords: vec3<f32>, depth_ref: f32) -> f32
 fn textureSampleCompare_63fb83() {
   var res: f32 = textureSampleCompare(arg_0, arg_1, vec3<f32>(), 1.0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleCompare_63fb83();
 }
diff --git a/test/intrinsics/gen/textureSampleCompare/63fb83.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleCompare/63fb83.wgsl.expected.wgsl
index 622f997..38e555e 100644
--- a/test/intrinsics/gen/textureSampleCompare/63fb83.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleCompare/63fb83.wgsl.expected.wgsl
@@ -1,12 +1,12 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_cube;
+@group(1) @binding(0) var arg_0 : texture_depth_cube;
 
-[[group(1), binding(1)]] var arg_1 : sampler_comparison;
+@group(1) @binding(1) var arg_1 : sampler_comparison;
 
 fn textureSampleCompare_63fb83() {
   var res : f32 = textureSampleCompare(arg_0, arg_1, vec3<f32>(), 1.0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleCompare_63fb83();
 }
diff --git a/test/intrinsics/gen/textureSampleCompare/98b85c.wgsl b/test/intrinsics/gen/textureSampleCompare/98b85c.wgsl
index 2e77473..43552d7 100644
--- a/test/intrinsics/gen/textureSampleCompare/98b85c.wgsl
+++ b/test/intrinsics/gen/textureSampleCompare/98b85c.wgsl
@@ -22,15 +22,15 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_2d_array;
-[[group(1), binding(1)]] var arg_1: sampler_comparison;
+@group(1) @binding(0) var arg_0: texture_depth_2d_array;
+@group(1) @binding(1) var arg_1: sampler_comparison;
 
 // fn textureSampleCompare(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: i32, depth_ref: f32, offset: vec2<i32>) -> f32
 fn textureSampleCompare_98b85c() {
   var res: f32 = textureSampleCompare(arg_0, arg_1, vec2<f32>(), 1, 1.0, vec2<i32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleCompare_98b85c();
 }
diff --git a/test/intrinsics/gen/textureSampleCompare/98b85c.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleCompare/98b85c.wgsl.expected.wgsl
index 6e6b107..de96847 100644
--- a/test/intrinsics/gen/textureSampleCompare/98b85c.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleCompare/98b85c.wgsl.expected.wgsl
@@ -1,12 +1,12 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_2d_array;
+@group(1) @binding(0) var arg_0 : texture_depth_2d_array;
 
-[[group(1), binding(1)]] var arg_1 : sampler_comparison;
+@group(1) @binding(1) var arg_1 : sampler_comparison;
 
 fn textureSampleCompare_98b85c() {
   var res : f32 = textureSampleCompare(arg_0, arg_1, vec2<f32>(), 1, 1.0, vec2<i32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleCompare_98b85c();
 }
diff --git a/test/intrinsics/gen/textureSampleCompare/a3ca7e.wgsl b/test/intrinsics/gen/textureSampleCompare/a3ca7e.wgsl
index cb4665c..073e25a 100644
--- a/test/intrinsics/gen/textureSampleCompare/a3ca7e.wgsl
+++ b/test/intrinsics/gen/textureSampleCompare/a3ca7e.wgsl
@@ -22,15 +22,15 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_cube_array;
-[[group(1), binding(1)]] var arg_1: sampler_comparison;
+@group(1) @binding(0) var arg_0: texture_depth_cube_array;
+@group(1) @binding(1) var arg_1: sampler_comparison;
 
 // fn textureSampleCompare(texture: texture_depth_cube_array, sampler: sampler_comparison, coords: vec3<f32>, array_index: i32, depth_ref: f32) -> f32
 fn textureSampleCompare_a3ca7e() {
   var res: f32 = textureSampleCompare(arg_0, arg_1, vec3<f32>(), 1, 1.0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleCompare_a3ca7e();
 }
diff --git a/test/intrinsics/gen/textureSampleCompare/a3ca7e.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleCompare/a3ca7e.wgsl.expected.wgsl
index 2d8f4b1..5dc12e5 100644
--- a/test/intrinsics/gen/textureSampleCompare/a3ca7e.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleCompare/a3ca7e.wgsl.expected.wgsl
@@ -1,12 +1,12 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_cube_array;
+@group(1) @binding(0) var arg_0 : texture_depth_cube_array;
 
-[[group(1), binding(1)]] var arg_1 : sampler_comparison;
+@group(1) @binding(1) var arg_1 : sampler_comparison;
 
 fn textureSampleCompare_a3ca7e() {
   var res : f32 = textureSampleCompare(arg_0, arg_1, vec3<f32>(), 1, 1.0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleCompare_a3ca7e();
 }
diff --git a/test/intrinsics/gen/textureSampleCompare/dd431d.wgsl b/test/intrinsics/gen/textureSampleCompare/dd431d.wgsl
index c4aa7d7..4291866 100644
--- a/test/intrinsics/gen/textureSampleCompare/dd431d.wgsl
+++ b/test/intrinsics/gen/textureSampleCompare/dd431d.wgsl
@@ -22,15 +22,15 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_2d_array;
-[[group(1), binding(1)]] var arg_1: sampler_comparison;
+@group(1) @binding(0) var arg_0: texture_depth_2d_array;
+@group(1) @binding(1) var arg_1: sampler_comparison;
 
 // fn textureSampleCompare(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: i32, depth_ref: f32) -> f32
 fn textureSampleCompare_dd431d() {
   var res: f32 = textureSampleCompare(arg_0, arg_1, vec2<f32>(), 1, 1.0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleCompare_dd431d();
 }
diff --git a/test/intrinsics/gen/textureSampleCompare/dd431d.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleCompare/dd431d.wgsl.expected.wgsl
index 8a292ad..f36d443 100644
--- a/test/intrinsics/gen/textureSampleCompare/dd431d.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleCompare/dd431d.wgsl.expected.wgsl
@@ -1,12 +1,12 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_2d_array;
+@group(1) @binding(0) var arg_0 : texture_depth_2d_array;
 
-[[group(1), binding(1)]] var arg_1 : sampler_comparison;
+@group(1) @binding(1) var arg_1 : sampler_comparison;
 
 fn textureSampleCompare_dd431d() {
   var res : f32 = textureSampleCompare(arg_0, arg_1, vec2<f32>(), 1, 1.0);
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleCompare_dd431d();
 }
diff --git a/test/intrinsics/gen/textureSampleCompareLevel/011a8f.wgsl b/test/intrinsics/gen/textureSampleCompareLevel/011a8f.wgsl
index 45b69ce..7cc7525 100644
--- a/test/intrinsics/gen/textureSampleCompareLevel/011a8f.wgsl
+++ b/test/intrinsics/gen/textureSampleCompareLevel/011a8f.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_2d_array;
-[[group(1), binding(1)]] var arg_1: sampler_comparison;
+@group(1) @binding(0) var arg_0: texture_depth_2d_array;
+@group(1) @binding(1) var arg_1: sampler_comparison;
 
 // fn textureSampleCompareLevel(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: i32, depth_ref: f32, offset: vec2<i32>) -> f32
 fn textureSampleCompareLevel_011a8f() {
   var res: f32 = textureSampleCompareLevel(arg_0, arg_1, vec2<f32>(), 1, 1.0, vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleCompareLevel_011a8f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleCompareLevel_011a8f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleCompareLevel_011a8f();
 }
diff --git a/test/intrinsics/gen/textureSampleCompareLevel/011a8f.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleCompareLevel/011a8f.wgsl.expected.wgsl
index 9c02468..d98d813 100644
--- a/test/intrinsics/gen/textureSampleCompareLevel/011a8f.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleCompareLevel/011a8f.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_2d_array;
+@group(1) @binding(0) var arg_0 : texture_depth_2d_array;
 
-[[group(1), binding(1)]] var arg_1 : sampler_comparison;
+@group(1) @binding(1) var arg_1 : sampler_comparison;
 
 fn textureSampleCompareLevel_011a8f() {
   var res : f32 = textureSampleCompareLevel(arg_0, arg_1, vec2<f32>(), 1, 1.0, vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleCompareLevel_011a8f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleCompareLevel_011a8f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleCompareLevel_011a8f();
 }
diff --git a/test/intrinsics/gen/textureSampleCompareLevel/1116ed.wgsl b/test/intrinsics/gen/textureSampleCompareLevel/1116ed.wgsl
index 363ccec..21a27d8 100644
--- a/test/intrinsics/gen/textureSampleCompareLevel/1116ed.wgsl
+++ b/test/intrinsics/gen/textureSampleCompareLevel/1116ed.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_2d_array;
-[[group(1), binding(1)]] var arg_1: sampler_comparison;
+@group(1) @binding(0) var arg_0: texture_depth_2d_array;
+@group(1) @binding(1) var arg_1: sampler_comparison;
 
 // fn textureSampleCompareLevel(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: i32, depth_ref: f32) -> f32
 fn textureSampleCompareLevel_1116ed() {
   var res: f32 = textureSampleCompareLevel(arg_0, arg_1, vec2<f32>(), 1, 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleCompareLevel_1116ed();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleCompareLevel_1116ed();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleCompareLevel_1116ed();
 }
diff --git a/test/intrinsics/gen/textureSampleCompareLevel/1116ed.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleCompareLevel/1116ed.wgsl.expected.wgsl
index aac38c8..97ee867 100644
--- a/test/intrinsics/gen/textureSampleCompareLevel/1116ed.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleCompareLevel/1116ed.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_2d_array;
+@group(1) @binding(0) var arg_0 : texture_depth_2d_array;
 
-[[group(1), binding(1)]] var arg_1 : sampler_comparison;
+@group(1) @binding(1) var arg_1 : sampler_comparison;
 
 fn textureSampleCompareLevel_1116ed() {
   var res : f32 = textureSampleCompareLevel(arg_0, arg_1, vec2<f32>(), 1, 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleCompareLevel_1116ed();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleCompareLevel_1116ed();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleCompareLevel_1116ed();
 }
diff --git a/test/intrinsics/gen/textureSampleCompareLevel/1568e3.wgsl b/test/intrinsics/gen/textureSampleCompareLevel/1568e3.wgsl
index 21daae7..30c2867 100644
--- a/test/intrinsics/gen/textureSampleCompareLevel/1568e3.wgsl
+++ b/test/intrinsics/gen/textureSampleCompareLevel/1568e3.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_cube;
-[[group(1), binding(1)]] var arg_1: sampler_comparison;
+@group(1) @binding(0) var arg_0: texture_depth_cube;
+@group(1) @binding(1) var arg_1: sampler_comparison;
 
 // fn textureSampleCompareLevel(texture: texture_depth_cube, sampler: sampler_comparison, coords: vec3<f32>, depth_ref: f32) -> f32
 fn textureSampleCompareLevel_1568e3() {
   var res: f32 = textureSampleCompareLevel(arg_0, arg_1, vec3<f32>(), 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleCompareLevel_1568e3();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleCompareLevel_1568e3();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleCompareLevel_1568e3();
 }
diff --git a/test/intrinsics/gen/textureSampleCompareLevel/1568e3.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleCompareLevel/1568e3.wgsl.expected.wgsl
index 06ad79e..ff5e88d 100644
--- a/test/intrinsics/gen/textureSampleCompareLevel/1568e3.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleCompareLevel/1568e3.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_cube;
+@group(1) @binding(0) var arg_0 : texture_depth_cube;
 
-[[group(1), binding(1)]] var arg_1 : sampler_comparison;
+@group(1) @binding(1) var arg_1 : sampler_comparison;
 
 fn textureSampleCompareLevel_1568e3() {
   var res : f32 = textureSampleCompareLevel(arg_0, arg_1, vec3<f32>(), 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleCompareLevel_1568e3();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleCompareLevel_1568e3();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleCompareLevel_1568e3();
 }
diff --git a/test/intrinsics/gen/textureSampleCompareLevel/2ad2b1.wgsl b/test/intrinsics/gen/textureSampleCompareLevel/2ad2b1.wgsl
index 6cead7a..6a6fcee 100644
--- a/test/intrinsics/gen/textureSampleCompareLevel/2ad2b1.wgsl
+++ b/test/intrinsics/gen/textureSampleCompareLevel/2ad2b1.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_2d;
-[[group(1), binding(1)]] var arg_1: sampler_comparison;
+@group(1) @binding(0) var arg_0: texture_depth_2d;
+@group(1) @binding(1) var arg_1: sampler_comparison;
 
 // fn textureSampleCompareLevel(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32) -> f32
 fn textureSampleCompareLevel_2ad2b1() {
   var res: f32 = textureSampleCompareLevel(arg_0, arg_1, vec2<f32>(), 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleCompareLevel_2ad2b1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleCompareLevel_2ad2b1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleCompareLevel_2ad2b1();
 }
diff --git a/test/intrinsics/gen/textureSampleCompareLevel/2ad2b1.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleCompareLevel/2ad2b1.wgsl.expected.wgsl
index 24be312..76fe2cb 100644
--- a/test/intrinsics/gen/textureSampleCompareLevel/2ad2b1.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleCompareLevel/2ad2b1.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_2d;
+@group(1) @binding(0) var arg_0 : texture_depth_2d;
 
-[[group(1), binding(1)]] var arg_1 : sampler_comparison;
+@group(1) @binding(1) var arg_1 : sampler_comparison;
 
 fn textureSampleCompareLevel_2ad2b1() {
   var res : f32 = textureSampleCompareLevel(arg_0, arg_1, vec2<f32>(), 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleCompareLevel_2ad2b1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleCompareLevel_2ad2b1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleCompareLevel_2ad2b1();
 }
diff --git a/test/intrinsics/gen/textureSampleCompareLevel/4cf3a2.wgsl b/test/intrinsics/gen/textureSampleCompareLevel/4cf3a2.wgsl
index 86b87ea..02d5f74 100644
--- a/test/intrinsics/gen/textureSampleCompareLevel/4cf3a2.wgsl
+++ b/test/intrinsics/gen/textureSampleCompareLevel/4cf3a2.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_cube_array;
-[[group(1), binding(1)]] var arg_1: sampler_comparison;
+@group(1) @binding(0) var arg_0: texture_depth_cube_array;
+@group(1) @binding(1) var arg_1: sampler_comparison;
 
 // fn textureSampleCompareLevel(texture: texture_depth_cube_array, sampler: sampler_comparison, coords: vec3<f32>, array_index: i32, depth_ref: f32) -> f32
 fn textureSampleCompareLevel_4cf3a2() {
   var res: f32 = textureSampleCompareLevel(arg_0, arg_1, vec3<f32>(), 1, 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleCompareLevel_4cf3a2();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleCompareLevel_4cf3a2();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleCompareLevel_4cf3a2();
 }
diff --git a/test/intrinsics/gen/textureSampleCompareLevel/4cf3a2.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleCompareLevel/4cf3a2.wgsl.expected.wgsl
index efdac05..1fb3470 100644
--- a/test/intrinsics/gen/textureSampleCompareLevel/4cf3a2.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleCompareLevel/4cf3a2.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_cube_array;
+@group(1) @binding(0) var arg_0 : texture_depth_cube_array;
 
-[[group(1), binding(1)]] var arg_1 : sampler_comparison;
+@group(1) @binding(1) var arg_1 : sampler_comparison;
 
 fn textureSampleCompareLevel_4cf3a2() {
   var res : f32 = textureSampleCompareLevel(arg_0, arg_1, vec3<f32>(), 1, 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleCompareLevel_4cf3a2();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleCompareLevel_4cf3a2();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleCompareLevel_4cf3a2();
 }
diff --git a/test/intrinsics/gen/textureSampleCompareLevel/f8121c.wgsl b/test/intrinsics/gen/textureSampleCompareLevel/f8121c.wgsl
index 5fc6e60..97401ce 100644
--- a/test/intrinsics/gen/textureSampleCompareLevel/f8121c.wgsl
+++ b/test/intrinsics/gen/textureSampleCompareLevel/f8121c.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_2d;
-[[group(1), binding(1)]] var arg_1: sampler_comparison;
+@group(1) @binding(0) var arg_0: texture_depth_2d;
+@group(1) @binding(1) var arg_1: sampler_comparison;
 
 // fn textureSampleCompareLevel(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32, offset: vec2<i32>) -> f32
 fn textureSampleCompareLevel_f8121c() {
   var res: f32 = textureSampleCompareLevel(arg_0, arg_1, vec2<f32>(), 1.0, vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleCompareLevel_f8121c();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleCompareLevel_f8121c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleCompareLevel_f8121c();
 }
diff --git a/test/intrinsics/gen/textureSampleCompareLevel/f8121c.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleCompareLevel/f8121c.wgsl.expected.wgsl
index 5012e84..a63e6b3 100644
--- a/test/intrinsics/gen/textureSampleCompareLevel/f8121c.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleCompareLevel/f8121c.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_2d;
+@group(1) @binding(0) var arg_0 : texture_depth_2d;
 
-[[group(1), binding(1)]] var arg_1 : sampler_comparison;
+@group(1) @binding(1) var arg_1 : sampler_comparison;
 
 fn textureSampleCompareLevel_f8121c() {
   var res : f32 = textureSampleCompareLevel(arg_0, arg_1, vec2<f32>(), 1.0, vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleCompareLevel_f8121c();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleCompareLevel_f8121c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleCompareLevel_f8121c();
 }
diff --git a/test/intrinsics/gen/textureSampleGrad/21402b.wgsl b/test/intrinsics/gen/textureSampleGrad/21402b.wgsl
index c2abcf5..8d8aa0f 100644
--- a/test/intrinsics/gen/textureSampleGrad/21402b.wgsl
+++ b/test/intrinsics/gen/textureSampleGrad/21402b.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_3d<f32>;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_3d<f32>;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSampleGrad(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, ddx: vec3<f32>, ddy: vec3<f32>) -> vec4<f32>
 fn textureSampleGrad_21402b() {
   var res: vec4<f32> = textureSampleGrad(arg_0, arg_1, vec3<f32>(), vec3<f32>(), vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_21402b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleGrad_21402b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_21402b();
 }
diff --git a/test/intrinsics/gen/textureSampleGrad/21402b.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleGrad/21402b.wgsl.expected.wgsl
index c2c4814..c5e185c 100644
--- a/test/intrinsics/gen/textureSampleGrad/21402b.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleGrad/21402b.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_3d<f32>;
+@group(1) @binding(0) var arg_0 : texture_3d<f32>;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSampleGrad_21402b() {
   var res : vec4<f32> = textureSampleGrad(arg_0, arg_1, vec3<f32>(), vec3<f32>(), vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_21402b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleGrad_21402b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_21402b();
 }
diff --git a/test/intrinsics/gen/textureSampleGrad/2ecd8f.wgsl b/test/intrinsics/gen/textureSampleGrad/2ecd8f.wgsl
index d615afa..5c242be 100644
--- a/test/intrinsics/gen/textureSampleGrad/2ecd8f.wgsl
+++ b/test/intrinsics/gen/textureSampleGrad/2ecd8f.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d_array<f32>;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_2d_array<f32>;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSampleGrad(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: i32, ddx: vec2<f32>, ddy: vec2<f32>) -> vec4<f32>
 fn textureSampleGrad_2ecd8f() {
   var res: vec4<f32> = textureSampleGrad(arg_0, arg_1, vec2<f32>(), 1, vec2<f32>(), vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_2ecd8f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleGrad_2ecd8f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_2ecd8f();
 }
diff --git a/test/intrinsics/gen/textureSampleGrad/2ecd8f.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleGrad/2ecd8f.wgsl.expected.wgsl
index 4c80e96..233ce18 100644
--- a/test/intrinsics/gen/textureSampleGrad/2ecd8f.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleGrad/2ecd8f.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d_array<f32>;
+@group(1) @binding(0) var arg_0 : texture_2d_array<f32>;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSampleGrad_2ecd8f() {
   var res : vec4<f32> = textureSampleGrad(arg_0, arg_1, vec2<f32>(), 1, vec2<f32>(), vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_2ecd8f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleGrad_2ecd8f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_2ecd8f();
 }
diff --git a/test/intrinsics/gen/textureSampleGrad/468f88.wgsl b/test/intrinsics/gen/textureSampleGrad/468f88.wgsl
index 54d36db..7749ccd 100644
--- a/test/intrinsics/gen/textureSampleGrad/468f88.wgsl
+++ b/test/intrinsics/gen/textureSampleGrad/468f88.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d<f32>;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_2d<f32>;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSampleGrad(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, ddx: vec2<f32>, ddy: vec2<f32>, offset: vec2<i32>) -> vec4<f32>
 fn textureSampleGrad_468f88() {
   var res: vec4<f32> = textureSampleGrad(arg_0, arg_1, vec2<f32>(), vec2<f32>(), vec2<f32>(), vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_468f88();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleGrad_468f88();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_468f88();
 }
diff --git a/test/intrinsics/gen/textureSampleGrad/468f88.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleGrad/468f88.wgsl.expected.wgsl
index 510cb94..fc63b37 100644
--- a/test/intrinsics/gen/textureSampleGrad/468f88.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleGrad/468f88.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d<f32>;
+@group(1) @binding(0) var arg_0 : texture_2d<f32>;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSampleGrad_468f88() {
   var res : vec4<f32> = textureSampleGrad(arg_0, arg_1, vec2<f32>(), vec2<f32>(), vec2<f32>(), vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_468f88();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleGrad_468f88();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_468f88();
 }
diff --git a/test/intrinsics/gen/textureSampleGrad/521263.wgsl b/test/intrinsics/gen/textureSampleGrad/521263.wgsl
index 1e5e25b..7f832e9 100644
--- a/test/intrinsics/gen/textureSampleGrad/521263.wgsl
+++ b/test/intrinsics/gen/textureSampleGrad/521263.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d<f32>;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_2d<f32>;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSampleGrad(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, ddx: vec2<f32>, ddy: vec2<f32>) -> vec4<f32>
 fn textureSampleGrad_521263() {
   var res: vec4<f32> = textureSampleGrad(arg_0, arg_1, vec2<f32>(), vec2<f32>(), vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_521263();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleGrad_521263();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_521263();
 }
diff --git a/test/intrinsics/gen/textureSampleGrad/521263.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleGrad/521263.wgsl.expected.wgsl
index a4f4403..f440117 100644
--- a/test/intrinsics/gen/textureSampleGrad/521263.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleGrad/521263.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d<f32>;
+@group(1) @binding(0) var arg_0 : texture_2d<f32>;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSampleGrad_521263() {
   var res : vec4<f32> = textureSampleGrad(arg_0, arg_1, vec2<f32>(), vec2<f32>(), vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_521263();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleGrad_521263();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_521263();
 }
diff --git a/test/intrinsics/gen/textureSampleGrad/5312f4.wgsl b/test/intrinsics/gen/textureSampleGrad/5312f4.wgsl
index a316e8c..47a84a9 100644
--- a/test/intrinsics/gen/textureSampleGrad/5312f4.wgsl
+++ b/test/intrinsics/gen/textureSampleGrad/5312f4.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_cube<f32>;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_cube<f32>;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSampleGrad(texture: texture_cube<f32>, sampler: sampler, coords: vec3<f32>, ddx: vec3<f32>, ddy: vec3<f32>) -> vec4<f32>
 fn textureSampleGrad_5312f4() {
   var res: vec4<f32> = textureSampleGrad(arg_0, arg_1, vec3<f32>(), vec3<f32>(), vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_5312f4();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleGrad_5312f4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_5312f4();
 }
diff --git a/test/intrinsics/gen/textureSampleGrad/5312f4.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleGrad/5312f4.wgsl.expected.wgsl
index 2dd32a8..22507b7 100644
--- a/test/intrinsics/gen/textureSampleGrad/5312f4.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleGrad/5312f4.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_cube<f32>;
+@group(1) @binding(0) var arg_0 : texture_cube<f32>;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSampleGrad_5312f4() {
   var res : vec4<f32> = textureSampleGrad(arg_0, arg_1, vec3<f32>(), vec3<f32>(), vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_5312f4();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleGrad_5312f4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_5312f4();
 }
diff --git a/test/intrinsics/gen/textureSampleGrad/872f00.wgsl b/test/intrinsics/gen/textureSampleGrad/872f00.wgsl
index 8dbecf8..cfb073f 100644
--- a/test/intrinsics/gen/textureSampleGrad/872f00.wgsl
+++ b/test/intrinsics/gen/textureSampleGrad/872f00.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d_array<f32>;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_2d_array<f32>;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSampleGrad(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: i32, ddx: vec2<f32>, ddy: vec2<f32>, offset: vec2<i32>) -> vec4<f32>
 fn textureSampleGrad_872f00() {
   var res: vec4<f32> = textureSampleGrad(arg_0, arg_1, vec2<f32>(), 1, vec2<f32>(), vec2<f32>(), vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_872f00();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleGrad_872f00();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_872f00();
 }
diff --git a/test/intrinsics/gen/textureSampleGrad/872f00.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleGrad/872f00.wgsl.expected.wgsl
index ff9ca46..095fe4f 100644
--- a/test/intrinsics/gen/textureSampleGrad/872f00.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleGrad/872f00.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d_array<f32>;
+@group(1) @binding(0) var arg_0 : texture_2d_array<f32>;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSampleGrad_872f00() {
   var res : vec4<f32> = textureSampleGrad(arg_0, arg_1, vec2<f32>(), 1, vec2<f32>(), vec2<f32>(), vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_872f00();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleGrad_872f00();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_872f00();
 }
diff --git a/test/intrinsics/gen/textureSampleGrad/e383db.wgsl b/test/intrinsics/gen/textureSampleGrad/e383db.wgsl
index 20546aa..e2f4c94 100644
--- a/test/intrinsics/gen/textureSampleGrad/e383db.wgsl
+++ b/test/intrinsics/gen/textureSampleGrad/e383db.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_cube_array<f32>;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_cube_array<f32>;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSampleGrad(texture: texture_cube_array<f32>, sampler: sampler, coords: vec3<f32>, array_index: i32, ddx: vec3<f32>, ddy: vec3<f32>) -> vec4<f32>
 fn textureSampleGrad_e383db() {
   var res: vec4<f32> = textureSampleGrad(arg_0, arg_1, vec3<f32>(), 1, vec3<f32>(), vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_e383db();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleGrad_e383db();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_e383db();
 }
diff --git a/test/intrinsics/gen/textureSampleGrad/e383db.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleGrad/e383db.wgsl.expected.wgsl
index b846790..dad5f7f 100644
--- a/test/intrinsics/gen/textureSampleGrad/e383db.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleGrad/e383db.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_cube_array<f32>;
+@group(1) @binding(0) var arg_0 : texture_cube_array<f32>;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSampleGrad_e383db() {
   var res : vec4<f32> = textureSampleGrad(arg_0, arg_1, vec3<f32>(), 1, vec3<f32>(), vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_e383db();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleGrad_e383db();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_e383db();
 }
diff --git a/test/intrinsics/gen/textureSampleGrad/e9a2f7.wgsl b/test/intrinsics/gen/textureSampleGrad/e9a2f7.wgsl
index 831a72e..aa909fa 100644
--- a/test/intrinsics/gen/textureSampleGrad/e9a2f7.wgsl
+++ b/test/intrinsics/gen/textureSampleGrad/e9a2f7.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_3d<f32>;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_3d<f32>;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSampleGrad(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, ddx: vec3<f32>, ddy: vec3<f32>, offset: vec3<i32>) -> vec4<f32>
 fn textureSampleGrad_e9a2f7() {
   var res: vec4<f32> = textureSampleGrad(arg_0, arg_1, vec3<f32>(), vec3<f32>(), vec3<f32>(), vec3<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_e9a2f7();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleGrad_e9a2f7();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_e9a2f7();
 }
diff --git a/test/intrinsics/gen/textureSampleGrad/e9a2f7.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleGrad/e9a2f7.wgsl.expected.wgsl
index cbff0fa..4336d02 100644
--- a/test/intrinsics/gen/textureSampleGrad/e9a2f7.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleGrad/e9a2f7.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_3d<f32>;
+@group(1) @binding(0) var arg_0 : texture_3d<f32>;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSampleGrad_e9a2f7() {
   var res : vec4<f32> = textureSampleGrad(arg_0, arg_1, vec3<f32>(), vec3<f32>(), vec3<f32>(), vec3<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_e9a2f7();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleGrad_e9a2f7();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_e9a2f7();
 }
diff --git a/test/intrinsics/gen/textureSampleLevel/02be59.wgsl b/test/intrinsics/gen/textureSampleLevel/02be59.wgsl
index 5cb8e08..421b596 100644
--- a/test/intrinsics/gen/textureSampleLevel/02be59.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/02be59.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_2d;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_depth_2d;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSampleLevel(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>, level: i32) -> f32
 fn textureSampleLevel_02be59() {
   var res: f32 = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_02be59();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleLevel_02be59();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_02be59();
 }
diff --git a/test/intrinsics/gen/textureSampleLevel/02be59.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleLevel/02be59.wgsl.expected.wgsl
index a106167..e5eb1c6 100644
--- a/test/intrinsics/gen/textureSampleLevel/02be59.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/02be59.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_2d;
+@group(1) @binding(0) var arg_0 : texture_depth_2d;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSampleLevel_02be59() {
   var res : f32 = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_02be59();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleLevel_02be59();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_02be59();
 }
diff --git a/test/intrinsics/gen/textureSampleLevel/0bdd9a.wgsl b/test/intrinsics/gen/textureSampleLevel/0bdd9a.wgsl
index 764c0a2..c8a3064 100644
--- a/test/intrinsics/gen/textureSampleLevel/0bdd9a.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/0bdd9a.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_cube_array<f32>;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_cube_array<f32>;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSampleLevel(texture: texture_cube_array<f32>, sampler: sampler, coords: vec3<f32>, array_index: i32, level: f32) -> vec4<f32>
 fn textureSampleLevel_0bdd9a() {
   var res: vec4<f32> = textureSampleLevel(arg_0, arg_1, vec3<f32>(), 1, 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_0bdd9a();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleLevel_0bdd9a();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_0bdd9a();
 }
diff --git a/test/intrinsics/gen/textureSampleLevel/0bdd9a.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleLevel/0bdd9a.wgsl.expected.wgsl
index 8e83754..432273c 100644
--- a/test/intrinsics/gen/textureSampleLevel/0bdd9a.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/0bdd9a.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_cube_array<f32>;
+@group(1) @binding(0) var arg_0 : texture_cube_array<f32>;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSampleLevel_0bdd9a() {
   var res : vec4<f32> = textureSampleLevel(arg_0, arg_1, vec3<f32>(), 1, 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_0bdd9a();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleLevel_0bdd9a();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_0bdd9a();
 }
diff --git a/test/intrinsics/gen/textureSampleLevel/1b0291.wgsl b/test/intrinsics/gen/textureSampleLevel/1b0291.wgsl
index 2c5bbe1..c7a2186 100644
--- a/test/intrinsics/gen/textureSampleLevel/1b0291.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/1b0291.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_cube;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_depth_cube;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSampleLevel(texture: texture_depth_cube, sampler: sampler, coords: vec3<f32>, level: i32) -> f32
 fn textureSampleLevel_1b0291() {
   var res: f32 = textureSampleLevel(arg_0, arg_1, vec3<f32>(), 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_1b0291();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleLevel_1b0291();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_1b0291();
 }
diff --git a/test/intrinsics/gen/textureSampleLevel/1b0291.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleLevel/1b0291.wgsl.expected.wgsl
index 3699406..8ce844e 100644
--- a/test/intrinsics/gen/textureSampleLevel/1b0291.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/1b0291.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_cube;
+@group(1) @binding(0) var arg_0 : texture_depth_cube;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSampleLevel_1b0291() {
   var res : f32 = textureSampleLevel(arg_0, arg_1, vec3<f32>(), 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_1b0291();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleLevel_1b0291();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_1b0291();
 }
diff --git a/test/intrinsics/gen/textureSampleLevel/1bf73e.wgsl b/test/intrinsics/gen/textureSampleLevel/1bf73e.wgsl
index 7ddc6dc..c7a13c2 100644
--- a/test/intrinsics/gen/textureSampleLevel/1bf73e.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/1bf73e.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_2d_array;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_depth_2d_array;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSampleLevel(texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: i32, level: i32) -> f32
 fn textureSampleLevel_1bf73e() {
   var res: f32 = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 1, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_1bf73e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleLevel_1bf73e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_1bf73e();
 }
diff --git a/test/intrinsics/gen/textureSampleLevel/1bf73e.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleLevel/1bf73e.wgsl.expected.wgsl
index dfd0fff..ff739ce 100644
--- a/test/intrinsics/gen/textureSampleLevel/1bf73e.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/1bf73e.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_2d_array;
+@group(1) @binding(0) var arg_0 : texture_depth_2d_array;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSampleLevel_1bf73e() {
   var res : f32 = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 1, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_1bf73e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleLevel_1bf73e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_1bf73e();
 }
diff --git a/test/intrinsics/gen/textureSampleLevel/302be4.wgsl b/test/intrinsics/gen/textureSampleLevel/302be4.wgsl
index 7f57f11..a1c1612 100644
--- a/test/intrinsics/gen/textureSampleLevel/302be4.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/302be4.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d_array<f32>;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_2d_array<f32>;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSampleLevel(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: i32, level: f32) -> vec4<f32>
 fn textureSampleLevel_302be4() {
   var res: vec4<f32> = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 1, 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_302be4();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleLevel_302be4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_302be4();
 }
diff --git a/test/intrinsics/gen/textureSampleLevel/302be4.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleLevel/302be4.wgsl.expected.wgsl
index 1fd7e8e..15af8c6 100644
--- a/test/intrinsics/gen/textureSampleLevel/302be4.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/302be4.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d_array<f32>;
+@group(1) @binding(0) var arg_0 : texture_2d_array<f32>;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSampleLevel_302be4() {
   var res : vec4<f32> = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 1, 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_302be4();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleLevel_302be4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_302be4();
 }
diff --git a/test/intrinsics/gen/textureSampleLevel/47daa4.wgsl b/test/intrinsics/gen/textureSampleLevel/47daa4.wgsl
index 5cdb1b7..bda5904 100644
--- a/test/intrinsics/gen/textureSampleLevel/47daa4.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/47daa4.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_2d;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_depth_2d;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSampleLevel(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>, level: i32, offset: vec2<i32>) -> f32
 fn textureSampleLevel_47daa4() {
   var res: f32 = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 0, vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_47daa4();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleLevel_47daa4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_47daa4();
 }
diff --git a/test/intrinsics/gen/textureSampleLevel/47daa4.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleLevel/47daa4.wgsl.expected.wgsl
index 2a7967f..28ee908 100644
--- a/test/intrinsics/gen/textureSampleLevel/47daa4.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/47daa4.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_2d;
+@group(1) @binding(0) var arg_0 : texture_depth_2d;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSampleLevel_47daa4() {
   var res : f32 = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 0, vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_47daa4();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleLevel_47daa4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_47daa4();
 }
diff --git a/test/intrinsics/gen/textureSampleLevel/690d95.wgsl b/test/intrinsics/gen/textureSampleLevel/690d95.wgsl
index d478f65..d748cdc 100644
--- a/test/intrinsics/gen/textureSampleLevel/690d95.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/690d95.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d<f32>;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_2d<f32>;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSampleLevel(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, level: f32, offset: vec2<i32>) -> vec4<f32>
 fn textureSampleLevel_690d95() {
   var res: vec4<f32> = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 1.0, vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_690d95();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleLevel_690d95();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_690d95();
 }
diff --git a/test/intrinsics/gen/textureSampleLevel/690d95.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleLevel/690d95.wgsl.expected.wgsl
index be08453..6584e46 100644
--- a/test/intrinsics/gen/textureSampleLevel/690d95.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/690d95.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d<f32>;
+@group(1) @binding(0) var arg_0 : texture_2d<f32>;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSampleLevel_690d95() {
   var res : vec4<f32> = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 1.0, vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_690d95();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleLevel_690d95();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_690d95();
 }
diff --git a/test/intrinsics/gen/textureSampleLevel/979816.wgsl b/test/intrinsics/gen/textureSampleLevel/979816.wgsl
index 8de5d5e..4636091 100644
--- a/test/intrinsics/gen/textureSampleLevel/979816.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/979816.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_external;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_external;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSampleLevel(texture: texture_external, sampler: sampler, coords: vec2<f32>) -> vec4<f32>
 fn textureSampleLevel_979816() {
   var res: vec4<f32> = textureSampleLevel(arg_0, arg_1, vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_979816();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleLevel_979816();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_979816();
 }
diff --git a/test/intrinsics/gen/textureSampleLevel/979816.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleLevel/979816.wgsl.expected.wgsl
index eef21a3..3d1980f 100644
--- a/test/intrinsics/gen/textureSampleLevel/979816.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/979816.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_external;
+@group(1) @binding(0) var arg_0 : texture_external;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSampleLevel_979816() {
   var res : vec4<f32> = textureSampleLevel(arg_0, arg_1, vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_979816();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleLevel_979816();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_979816();
 }
diff --git a/test/intrinsics/gen/textureSampleLevel/9bd37b.wgsl b/test/intrinsics/gen/textureSampleLevel/9bd37b.wgsl
index 1d3a8b4..18304c8 100644
--- a/test/intrinsics/gen/textureSampleLevel/9bd37b.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/9bd37b.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_3d<f32>;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_3d<f32>;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSampleLevel(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, level: f32, offset: vec3<i32>) -> vec4<f32>
 fn textureSampleLevel_9bd37b() {
   var res: vec4<f32> = textureSampleLevel(arg_0, arg_1, vec3<f32>(), 1.0, vec3<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_9bd37b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleLevel_9bd37b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_9bd37b();
 }
diff --git a/test/intrinsics/gen/textureSampleLevel/9bd37b.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleLevel/9bd37b.wgsl.expected.wgsl
index ee5d006..081f0c3 100644
--- a/test/intrinsics/gen/textureSampleLevel/9bd37b.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/9bd37b.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_3d<f32>;
+@group(1) @binding(0) var arg_0 : texture_3d<f32>;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSampleLevel_9bd37b() {
   var res : vec4<f32> = textureSampleLevel(arg_0, arg_1, vec3<f32>(), 1.0, vec3<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_9bd37b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleLevel_9bd37b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_9bd37b();
 }
diff --git a/test/intrinsics/gen/textureSampleLevel/a4af26.wgsl b/test/intrinsics/gen/textureSampleLevel/a4af26.wgsl
index ac3e45a..ffb83eb 100644
--- a/test/intrinsics/gen/textureSampleLevel/a4af26.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/a4af26.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d_array<f32>;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_2d_array<f32>;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSampleLevel(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: i32, level: f32, offset: vec2<i32>) -> vec4<f32>
 fn textureSampleLevel_a4af26() {
   var res: vec4<f32> = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 1, 1.0, vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_a4af26();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleLevel_a4af26();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_a4af26();
 }
diff --git a/test/intrinsics/gen/textureSampleLevel/a4af26.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleLevel/a4af26.wgsl.expected.wgsl
index 7d4bfb0..69f8f80 100644
--- a/test/intrinsics/gen/textureSampleLevel/a4af26.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/a4af26.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d_array<f32>;
+@group(1) @binding(0) var arg_0 : texture_2d_array<f32>;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSampleLevel_a4af26() {
   var res : vec4<f32> = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 1, 1.0, vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_a4af26();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleLevel_a4af26();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_a4af26();
 }
diff --git a/test/intrinsics/gen/textureSampleLevel/abfcc0.wgsl b/test/intrinsics/gen/textureSampleLevel/abfcc0.wgsl
index dede1e3..3cf621a 100644
--- a/test/intrinsics/gen/textureSampleLevel/abfcc0.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/abfcc0.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_3d<f32>;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_3d<f32>;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSampleLevel(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, level: f32) -> vec4<f32>
 fn textureSampleLevel_abfcc0() {
   var res: vec4<f32> = textureSampleLevel(arg_0, arg_1, vec3<f32>(), 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_abfcc0();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleLevel_abfcc0();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_abfcc0();
 }
diff --git a/test/intrinsics/gen/textureSampleLevel/abfcc0.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleLevel/abfcc0.wgsl.expected.wgsl
index a8af47d..f8f6faf 100644
--- a/test/intrinsics/gen/textureSampleLevel/abfcc0.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/abfcc0.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_3d<f32>;
+@group(1) @binding(0) var arg_0 : texture_3d<f32>;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSampleLevel_abfcc0() {
   var res : vec4<f32> = textureSampleLevel(arg_0, arg_1, vec3<f32>(), 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_abfcc0();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleLevel_abfcc0();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_abfcc0();
 }
diff --git a/test/intrinsics/gen/textureSampleLevel/ae5e39.wgsl b/test/intrinsics/gen/textureSampleLevel/ae5e39.wgsl
index 67bb4b6..bca3189 100644
--- a/test/intrinsics/gen/textureSampleLevel/ae5e39.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/ae5e39.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_cube_array;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_depth_cube_array;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSampleLevel(texture: texture_depth_cube_array, sampler: sampler, coords: vec3<f32>, array_index: i32, level: i32) -> f32
 fn textureSampleLevel_ae5e39() {
   var res: f32 = textureSampleLevel(arg_0, arg_1, vec3<f32>(), 1, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_ae5e39();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleLevel_ae5e39();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_ae5e39();
 }
diff --git a/test/intrinsics/gen/textureSampleLevel/ae5e39.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleLevel/ae5e39.wgsl.expected.wgsl
index de37db1..4fc5ac8 100644
--- a/test/intrinsics/gen/textureSampleLevel/ae5e39.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/ae5e39.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_cube_array;
+@group(1) @binding(0) var arg_0 : texture_depth_cube_array;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSampleLevel_ae5e39() {
   var res : f32 = textureSampleLevel(arg_0, arg_1, vec3<f32>(), 1, 0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_ae5e39();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleLevel_ae5e39();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_ae5e39();
 }
diff --git a/test/intrinsics/gen/textureSampleLevel/ba93b3.wgsl b/test/intrinsics/gen/textureSampleLevel/ba93b3.wgsl
index d1b9b7b..07958ef 100644
--- a/test/intrinsics/gen/textureSampleLevel/ba93b3.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/ba93b3.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_depth_2d_array;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_depth_2d_array;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSampleLevel(texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: i32, level: i32, offset: vec2<i32>) -> f32
 fn textureSampleLevel_ba93b3() {
   var res: f32 = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 1, 0, vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_ba93b3();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleLevel_ba93b3();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_ba93b3();
 }
diff --git a/test/intrinsics/gen/textureSampleLevel/ba93b3.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleLevel/ba93b3.wgsl.expected.wgsl
index 927d4c8..954891c 100644
--- a/test/intrinsics/gen/textureSampleLevel/ba93b3.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/ba93b3.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_2d_array;
+@group(1) @binding(0) var arg_0 : texture_depth_2d_array;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSampleLevel_ba93b3() {
   var res : f32 = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 1, 0, vec2<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_ba93b3();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleLevel_ba93b3();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_ba93b3();
 }
diff --git a/test/intrinsics/gen/textureSampleLevel/c32df7.wgsl b/test/intrinsics/gen/textureSampleLevel/c32df7.wgsl
index 01c67ac..9dc6e15 100644
--- a/test/intrinsics/gen/textureSampleLevel/c32df7.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/c32df7.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_cube<f32>;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_cube<f32>;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSampleLevel(texture: texture_cube<f32>, sampler: sampler, coords: vec3<f32>, level: f32) -> vec4<f32>
 fn textureSampleLevel_c32df7() {
   var res: vec4<f32> = textureSampleLevel(arg_0, arg_1, vec3<f32>(), 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_c32df7();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleLevel_c32df7();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_c32df7();
 }
diff --git a/test/intrinsics/gen/textureSampleLevel/c32df7.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleLevel/c32df7.wgsl.expected.wgsl
index e9fb633..2f2df13 100644
--- a/test/intrinsics/gen/textureSampleLevel/c32df7.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/c32df7.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_cube<f32>;
+@group(1) @binding(0) var arg_0 : texture_cube<f32>;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSampleLevel_c32df7() {
   var res : vec4<f32> = textureSampleLevel(arg_0, arg_1, vec3<f32>(), 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_c32df7();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleLevel_c32df7();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_c32df7();
 }
diff --git a/test/intrinsics/gen/textureSampleLevel/c6aca6.wgsl b/test/intrinsics/gen/textureSampleLevel/c6aca6.wgsl
index 84b92c4..f58dfd1 100644
--- a/test/intrinsics/gen/textureSampleLevel/c6aca6.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/c6aca6.wgsl
@@ -22,26 +22,26 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_2d<f32>;
-[[group(1), binding(1)]] var arg_1: sampler;
+@group(1) @binding(0) var arg_0: texture_2d<f32>;
+@group(1) @binding(1) var arg_1: sampler;
 
 // fn textureSampleLevel(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, level: f32) -> vec4<f32>
 fn textureSampleLevel_c6aca6() {
   var res: vec4<f32> = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_c6aca6();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleLevel_c6aca6();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_c6aca6();
 }
diff --git a/test/intrinsics/gen/textureSampleLevel/c6aca6.wgsl.expected.wgsl b/test/intrinsics/gen/textureSampleLevel/c6aca6.wgsl.expected.wgsl
index 841a155..35dc735 100644
--- a/test/intrinsics/gen/textureSampleLevel/c6aca6.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureSampleLevel/c6aca6.wgsl.expected.wgsl
@@ -1,23 +1,23 @@
-[[group(1), binding(0)]] var arg_0 : texture_2d<f32>;
+@group(1) @binding(0) var arg_0 : texture_2d<f32>;
 
-[[group(1), binding(1)]] var arg_1 : sampler;
+@group(1) @binding(1) var arg_1 : sampler;
 
 fn textureSampleLevel_c6aca6() {
   var res : vec4<f32> = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_c6aca6();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureSampleLevel_c6aca6();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_c6aca6();
 }
diff --git a/test/intrinsics/gen/textureStore/05ce15.wgsl b/test/intrinsics/gen/textureStore/05ce15.wgsl
index 9529592..8bccc96 100644
--- a/test/intrinsics/gen/textureStore/05ce15.wgsl
+++ b/test/intrinsics/gen/textureStore/05ce15.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d<rgba32float, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba32float, write>;
 
 // fn textureStore(texture: texture_storage_2d<rgba32float, write>, coords: vec2<i32>, value: vec4<f32>)
 fn textureStore_05ce15() {
   textureStore(arg_0, vec2<i32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_05ce15();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_05ce15();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_05ce15();
 }
diff --git a/test/intrinsics/gen/textureStore/05ce15.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/05ce15.wgsl.expected.wgsl
index 17e60e2..2627d0e 100644
--- a/test/intrinsics/gen/textureStore/05ce15.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/05ce15.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d<rgba32float, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32float, write>;
 
 fn textureStore_05ce15() {
   textureStore(arg_0, vec2<i32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_05ce15();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_05ce15();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_05ce15();
 }
diff --git a/test/intrinsics/gen/textureStore/064c7f.wgsl b/test/intrinsics/gen/textureStore/064c7f.wgsl
index 3681bb3..71130e4 100644
--- a/test/intrinsics/gen/textureStore/064c7f.wgsl
+++ b/test/intrinsics/gen/textureStore/064c7f.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d<rg32float, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rg32float, write>;
 
 // fn textureStore(texture: texture_storage_2d<rg32float, write>, coords: vec2<i32>, value: vec4<f32>)
 fn textureStore_064c7f() {
   textureStore(arg_0, vec2<i32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_064c7f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_064c7f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_064c7f();
 }
diff --git a/test/intrinsics/gen/textureStore/064c7f.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/064c7f.wgsl.expected.wgsl
index 126b43c..042b3af 100644
--- a/test/intrinsics/gen/textureStore/064c7f.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/064c7f.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d<rg32float, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32float, write>;
 
 fn textureStore_064c7f() {
   textureStore(arg_0, vec2<i32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_064c7f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_064c7f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_064c7f();
 }
diff --git a/test/intrinsics/gen/textureStore/068641.wgsl b/test/intrinsics/gen/textureStore/068641.wgsl
index 7b5aa2a..7b10529 100644
--- a/test/intrinsics/gen/textureStore/068641.wgsl
+++ b/test/intrinsics/gen/textureStore/068641.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_3d<rgba16uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba16uint, write>;
 
 // fn textureStore(texture: texture_storage_3d<rgba16uint, write>, coords: vec3<i32>, value: vec4<u32>)
 fn textureStore_068641() {
   textureStore(arg_0, vec3<i32>(), vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_068641();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_068641();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_068641();
 }
diff --git a/test/intrinsics/gen/textureStore/068641.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/068641.wgsl.expected.wgsl
index 39b2602..5b3279a 100644
--- a/test/intrinsics/gen/textureStore/068641.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/068641.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_3d<rgba16uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16uint, write>;
 
 fn textureStore_068641() {
   textureStore(arg_0, vec3<i32>(), vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_068641();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_068641();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_068641();
 }
diff --git a/test/intrinsics/gen/textureStore/0af6b5.wgsl b/test/intrinsics/gen/textureStore/0af6b5.wgsl
index a87fa55..d66614e 100644
--- a/test/intrinsics/gen/textureStore/0af6b5.wgsl
+++ b/test/intrinsics/gen/textureStore/0af6b5.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d<r32float, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d<r32float, write>;
 
 // fn textureStore(texture: texture_storage_2d<r32float, write>, coords: vec2<i32>, value: vec4<f32>)
 fn textureStore_0af6b5() {
   textureStore(arg_0, vec2<i32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_0af6b5();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_0af6b5();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_0af6b5();
 }
diff --git a/test/intrinsics/gen/textureStore/0af6b5.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/0af6b5.wgsl.expected.wgsl
index 33ce448..1e67b08 100644
--- a/test/intrinsics/gen/textureStore/0af6b5.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/0af6b5.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d<r32float, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d<r32float, write>;
 
 fn textureStore_0af6b5() {
   textureStore(arg_0, vec2<i32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_0af6b5();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_0af6b5();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_0af6b5();
 }
diff --git a/test/intrinsics/gen/textureStore/0c3dff.wgsl b/test/intrinsics/gen/textureStore/0c3dff.wgsl
index c20ffd6..4ace9a9 100644
--- a/test/intrinsics/gen/textureStore/0c3dff.wgsl
+++ b/test/intrinsics/gen/textureStore/0c3dff.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d<rgba16uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba16uint, write>;
 
 // fn textureStore(texture: texture_storage_2d<rgba16uint, write>, coords: vec2<i32>, value: vec4<u32>)
 fn textureStore_0c3dff() {
   textureStore(arg_0, vec2<i32>(), vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_0c3dff();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_0c3dff();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_0c3dff();
 }
diff --git a/test/intrinsics/gen/textureStore/0c3dff.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/0c3dff.wgsl.expected.wgsl
index ca12685..b115e07 100644
--- a/test/intrinsics/gen/textureStore/0c3dff.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/0c3dff.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d<rgba16uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16uint, write>;
 
 fn textureStore_0c3dff() {
   textureStore(arg_0, vec2<i32>(), vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_0c3dff();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_0c3dff();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_0c3dff();
 }
diff --git a/test/intrinsics/gen/textureStore/102722.wgsl b/test/intrinsics/gen/textureStore/102722.wgsl
index cd6394d..a096321 100644
--- a/test/intrinsics/gen/textureStore/102722.wgsl
+++ b/test/intrinsics/gen/textureStore/102722.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_1d<r32uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_1d<r32uint, write>;
 
 // fn textureStore(texture: texture_storage_1d<r32uint, write>, coords: i32, value: vec4<u32>)
 fn textureStore_102722() {
   textureStore(arg_0, 1, vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_102722();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_102722();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_102722();
 }
diff --git a/test/intrinsics/gen/textureStore/102722.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/102722.wgsl.expected.wgsl
index cf2500f..593c342 100644
--- a/test/intrinsics/gen/textureStore/102722.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/102722.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_1d<r32uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_1d<r32uint, write>;
 
 fn textureStore_102722() {
   textureStore(arg_0, 1, vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_102722();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_102722();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_102722();
 }
diff --git a/test/intrinsics/gen/textureStore/1bbd08.wgsl b/test/intrinsics/gen/textureStore/1bbd08.wgsl
index 6f05f8b..922921b 100644
--- a/test/intrinsics/gen/textureStore/1bbd08.wgsl
+++ b/test/intrinsics/gen/textureStore/1bbd08.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_3d<rgba8unorm, write>;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba8unorm, write>;
 
 // fn textureStore(texture: texture_storage_3d<rgba8unorm, write>, coords: vec3<i32>, value: vec4<f32>)
 fn textureStore_1bbd08() {
   textureStore(arg_0, vec3<i32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_1bbd08();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_1bbd08();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_1bbd08();
 }
diff --git a/test/intrinsics/gen/textureStore/1bbd08.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/1bbd08.wgsl.expected.wgsl
index 5a618ea..a775be7 100644
--- a/test/intrinsics/gen/textureStore/1bbd08.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/1bbd08.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_3d<rgba8unorm, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8unorm, write>;
 
 fn textureStore_1bbd08() {
   textureStore(arg_0, vec3<i32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_1bbd08();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_1bbd08();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_1bbd08();
 }
diff --git a/test/intrinsics/gen/textureStore/1c02e7.wgsl b/test/intrinsics/gen/textureStore/1c02e7.wgsl
index 465f6f3..df6bca8 100644
--- a/test/intrinsics/gen/textureStore/1c02e7.wgsl
+++ b/test/intrinsics/gen/textureStore/1c02e7.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<r32sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<r32sint, write>;
 
 // fn textureStore(texture: texture_storage_2d_array<r32sint, write>, coords: vec2<i32>, array_index: i32, value: vec4<i32>)
 fn textureStore_1c02e7() {
   textureStore(arg_0, vec2<i32>(), 1, vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_1c02e7();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_1c02e7();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_1c02e7();
 }
diff --git a/test/intrinsics/gen/textureStore/1c02e7.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/1c02e7.wgsl.expected.wgsl
index f24449e..732759f 100644
--- a/test/intrinsics/gen/textureStore/1c02e7.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/1c02e7.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<r32sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, write>;
 
 fn textureStore_1c02e7() {
   textureStore(arg_0, vec2<i32>(), 1, vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_1c02e7();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_1c02e7();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_1c02e7();
 }
diff --git a/test/intrinsics/gen/textureStore/22d955.wgsl b/test/intrinsics/gen/textureStore/22d955.wgsl
index cfd3c59..716aa42 100644
--- a/test/intrinsics/gen/textureStore/22d955.wgsl
+++ b/test/intrinsics/gen/textureStore/22d955.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<rgba8uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8uint, write>;
 
 // fn textureStore(texture: texture_storage_2d_array<rgba8uint, write>, coords: vec2<i32>, array_index: i32, value: vec4<u32>)
 fn textureStore_22d955() {
   textureStore(arg_0, vec2<i32>(), 1, vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_22d955();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_22d955();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_22d955();
 }
diff --git a/test/intrinsics/gen/textureStore/22d955.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/22d955.wgsl.expected.wgsl
index c6f0cc4..b9fe255 100644
--- a/test/intrinsics/gen/textureStore/22d955.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/22d955.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba8uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8uint, write>;
 
 fn textureStore_22d955() {
   textureStore(arg_0, vec2<i32>(), 1, vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_22d955();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_22d955();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_22d955();
 }
diff --git a/test/intrinsics/gen/textureStore/26bf70.wgsl b/test/intrinsics/gen/textureStore/26bf70.wgsl
index 3bff728..083e62a 100644
--- a/test/intrinsics/gen/textureStore/26bf70.wgsl
+++ b/test/intrinsics/gen/textureStore/26bf70.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d<rgba32uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba32uint, write>;
 
 // fn textureStore(texture: texture_storage_2d<rgba32uint, write>, coords: vec2<i32>, value: vec4<u32>)
 fn textureStore_26bf70() {
   textureStore(arg_0, vec2<i32>(), vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_26bf70();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_26bf70();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_26bf70();
 }
diff --git a/test/intrinsics/gen/textureStore/26bf70.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/26bf70.wgsl.expected.wgsl
index 9953134..896b4f7 100644
--- a/test/intrinsics/gen/textureStore/26bf70.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/26bf70.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d<rgba32uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32uint, write>;
 
 fn textureStore_26bf70() {
   textureStore(arg_0, vec2<i32>(), vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_26bf70();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_26bf70();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_26bf70();
 }
diff --git a/test/intrinsics/gen/textureStore/2796b4.wgsl b/test/intrinsics/gen/textureStore/2796b4.wgsl
index c7e6cde..dce9df6 100644
--- a/test/intrinsics/gen/textureStore/2796b4.wgsl
+++ b/test/intrinsics/gen/textureStore/2796b4.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_3d<rg32sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rg32sint, write>;
 
 // fn textureStore(texture: texture_storage_3d<rg32sint, write>, coords: vec3<i32>, value: vec4<i32>)
 fn textureStore_2796b4() {
   textureStore(arg_0, vec3<i32>(), vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_2796b4();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_2796b4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_2796b4();
 }
diff --git a/test/intrinsics/gen/textureStore/2796b4.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/2796b4.wgsl.expected.wgsl
index 1bf6571..3fcb394 100644
--- a/test/intrinsics/gen/textureStore/2796b4.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/2796b4.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_3d<rg32sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32sint, write>;
 
 fn textureStore_2796b4() {
   textureStore(arg_0, vec3<i32>(), vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_2796b4();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_2796b4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_2796b4();
 }
diff --git a/test/intrinsics/gen/textureStore/2ac6c7.wgsl b/test/intrinsics/gen/textureStore/2ac6c7.wgsl
index 7480d58..35cec99 100644
--- a/test/intrinsics/gen/textureStore/2ac6c7.wgsl
+++ b/test/intrinsics/gen/textureStore/2ac6c7.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_1d<r32float, write>;
+@group(1) @binding(0) var arg_0: texture_storage_1d<r32float, write>;
 
 // fn textureStore(texture: texture_storage_1d<r32float, write>, coords: i32, value: vec4<f32>)
 fn textureStore_2ac6c7() {
   textureStore(arg_0, 1, vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_2ac6c7();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_2ac6c7();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_2ac6c7();
 }
diff --git a/test/intrinsics/gen/textureStore/2ac6c7.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/2ac6c7.wgsl.expected.wgsl
index 1e8abb2..2786ca4 100644
--- a/test/intrinsics/gen/textureStore/2ac6c7.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/2ac6c7.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_1d<r32float, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_1d<r32float, write>;
 
 fn textureStore_2ac6c7() {
   textureStore(arg_0, 1, vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_2ac6c7();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_2ac6c7();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_2ac6c7();
 }
diff --git a/test/intrinsics/gen/textureStore/2eb2a4.wgsl b/test/intrinsics/gen/textureStore/2eb2a4.wgsl
index e8ab6c1..ad1ccd5 100644
--- a/test/intrinsics/gen/textureStore/2eb2a4.wgsl
+++ b/test/intrinsics/gen/textureStore/2eb2a4.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_1d<rgba16uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba16uint, write>;
 
 // fn textureStore(texture: texture_storage_1d<rgba16uint, write>, coords: i32, value: vec4<u32>)
 fn textureStore_2eb2a4() {
   textureStore(arg_0, 1, vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_2eb2a4();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_2eb2a4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_2eb2a4();
 }
diff --git a/test/intrinsics/gen/textureStore/2eb2a4.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/2eb2a4.wgsl.expected.wgsl
index 038994e..51c5cd9 100644
--- a/test/intrinsics/gen/textureStore/2eb2a4.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/2eb2a4.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rgba16uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16uint, write>;
 
 fn textureStore_2eb2a4() {
   textureStore(arg_0, 1, vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_2eb2a4();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_2eb2a4();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_2eb2a4();
 }
diff --git a/test/intrinsics/gen/textureStore/2ed2a3.wgsl b/test/intrinsics/gen/textureStore/2ed2a3.wgsl
index 0fea47b..bcf4113 100644
--- a/test/intrinsics/gen/textureStore/2ed2a3.wgsl
+++ b/test/intrinsics/gen/textureStore/2ed2a3.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_1d<rgba8snorm, write>;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba8snorm, write>;
 
 // fn textureStore(texture: texture_storage_1d<rgba8snorm, write>, coords: i32, value: vec4<f32>)
 fn textureStore_2ed2a3() {
   textureStore(arg_0, 1, vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_2ed2a3();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_2ed2a3();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_2ed2a3();
 }
diff --git a/test/intrinsics/gen/textureStore/2ed2a3.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/2ed2a3.wgsl.expected.wgsl
index cc582b3..c415d58 100644
--- a/test/intrinsics/gen/textureStore/2ed2a3.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/2ed2a3.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rgba8snorm, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8snorm, write>;
 
 fn textureStore_2ed2a3() {
   textureStore(arg_0, 1, vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_2ed2a3();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_2ed2a3();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_2ed2a3();
 }
diff --git a/test/intrinsics/gen/textureStore/31745b.wgsl b/test/intrinsics/gen/textureStore/31745b.wgsl
index 49bb0c1..5dea4e1 100644
--- a/test/intrinsics/gen/textureStore/31745b.wgsl
+++ b/test/intrinsics/gen/textureStore/31745b.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d<rg32sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rg32sint, write>;
 
 // fn textureStore(texture: texture_storage_2d<rg32sint, write>, coords: vec2<i32>, value: vec4<i32>)
 fn textureStore_31745b() {
   textureStore(arg_0, vec2<i32>(), vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_31745b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_31745b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_31745b();
 }
diff --git a/test/intrinsics/gen/textureStore/31745b.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/31745b.wgsl.expected.wgsl
index 41e5f93..4288434 100644
--- a/test/intrinsics/gen/textureStore/31745b.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/31745b.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d<rg32sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32sint, write>;
 
 fn textureStore_31745b() {
   textureStore(arg_0, vec2<i32>(), vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_31745b();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_31745b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_31745b();
 }
diff --git a/test/intrinsics/gen/textureStore/32f368.wgsl b/test/intrinsics/gen/textureStore/32f368.wgsl
index 30aef60..50f4e66 100644
--- a/test/intrinsics/gen/textureStore/32f368.wgsl
+++ b/test/intrinsics/gen/textureStore/32f368.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<rgba16float, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16float, write>;
 
 // fn textureStore(texture: texture_storage_2d_array<rgba16float, write>, coords: vec2<i32>, array_index: i32, value: vec4<f32>)
 fn textureStore_32f368() {
   textureStore(arg_0, vec2<i32>(), 1, vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_32f368();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_32f368();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_32f368();
 }
diff --git a/test/intrinsics/gen/textureStore/32f368.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/32f368.wgsl.expected.wgsl
index 5a83522..a747822 100644
--- a/test/intrinsics/gen/textureStore/32f368.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/32f368.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba16float, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16float, write>;
 
 fn textureStore_32f368() {
   textureStore(arg_0, vec2<i32>(), 1, vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_32f368();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_32f368();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_32f368();
 }
diff --git a/test/intrinsics/gen/textureStore/331aee.wgsl b/test/intrinsics/gen/textureStore/331aee.wgsl
index 71b0f26..4bc9a4d 100644
--- a/test/intrinsics/gen/textureStore/331aee.wgsl
+++ b/test/intrinsics/gen/textureStore/331aee.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_3d<rgba32float, write>;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba32float, write>;
 
 // fn textureStore(texture: texture_storage_3d<rgba32float, write>, coords: vec3<i32>, value: vec4<f32>)
 fn textureStore_331aee() {
   textureStore(arg_0, vec3<i32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_331aee();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_331aee();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_331aee();
 }
diff --git a/test/intrinsics/gen/textureStore/331aee.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/331aee.wgsl.expected.wgsl
index bf5acd4..0363260 100644
--- a/test/intrinsics/gen/textureStore/331aee.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/331aee.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_3d<rgba32float, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32float, write>;
 
 fn textureStore_331aee() {
   textureStore(arg_0, vec3<i32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_331aee();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_331aee();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_331aee();
 }
diff --git a/test/intrinsics/gen/textureStore/38e8d7.wgsl b/test/intrinsics/gen/textureStore/38e8d7.wgsl
index e54b18b..6cfe7a0 100644
--- a/test/intrinsics/gen/textureStore/38e8d7.wgsl
+++ b/test/intrinsics/gen/textureStore/38e8d7.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<r32uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<r32uint, write>;
 
 // fn textureStore(texture: texture_storage_2d_array<r32uint, write>, coords: vec2<i32>, array_index: i32, value: vec4<u32>)
 fn textureStore_38e8d7() {
   textureStore(arg_0, vec2<i32>(), 1, vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_38e8d7();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_38e8d7();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_38e8d7();
 }
diff --git a/test/intrinsics/gen/textureStore/38e8d7.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/38e8d7.wgsl.expected.wgsl
index de4dbd6..28d1791 100644
--- a/test/intrinsics/gen/textureStore/38e8d7.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/38e8d7.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<r32uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32uint, write>;
 
 fn textureStore_38e8d7() {
   textureStore(arg_0, vec2<i32>(), 1, vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_38e8d7();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_38e8d7();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_38e8d7();
 }
diff --git a/test/intrinsics/gen/textureStore/3a52ac.wgsl b/test/intrinsics/gen/textureStore/3a52ac.wgsl
index 169d963..92cb0bb 100644
--- a/test/intrinsics/gen/textureStore/3a52ac.wgsl
+++ b/test/intrinsics/gen/textureStore/3a52ac.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<rgba16sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16sint, write>;
 
 // fn textureStore(texture: texture_storage_2d_array<rgba16sint, write>, coords: vec2<i32>, array_index: i32, value: vec4<i32>)
 fn textureStore_3a52ac() {
   textureStore(arg_0, vec2<i32>(), 1, vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_3a52ac();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_3a52ac();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_3a52ac();
 }
diff --git a/test/intrinsics/gen/textureStore/3a52ac.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/3a52ac.wgsl.expected.wgsl
index 07d0a6f..6fbbab0 100644
--- a/test/intrinsics/gen/textureStore/3a52ac.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/3a52ac.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba16sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16sint, write>;
 
 fn textureStore_3a52ac() {
   textureStore(arg_0, vec2<i32>(), 1, vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_3a52ac();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_3a52ac();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_3a52ac();
 }
diff --git a/test/intrinsics/gen/textureStore/3bb7a1.wgsl b/test/intrinsics/gen/textureStore/3bb7a1.wgsl
index 6f59945..c665a5b 100644
--- a/test/intrinsics/gen/textureStore/3bb7a1.wgsl
+++ b/test/intrinsics/gen/textureStore/3bb7a1.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<r32float, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<r32float, write>;
 
 // fn textureStore(texture: texture_storage_2d_array<r32float, write>, coords: vec2<i32>, array_index: i32, value: vec4<f32>)
 fn textureStore_3bb7a1() {
   textureStore(arg_0, vec2<i32>(), 1, vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_3bb7a1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_3bb7a1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_3bb7a1();
 }
diff --git a/test/intrinsics/gen/textureStore/3bb7a1.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/3bb7a1.wgsl.expected.wgsl
index 10d2109..ccb304d 100644
--- a/test/intrinsics/gen/textureStore/3bb7a1.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/3bb7a1.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<r32float, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32float, write>;
 
 fn textureStore_3bb7a1() {
   textureStore(arg_0, vec2<i32>(), 1, vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_3bb7a1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_3bb7a1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_3bb7a1();
 }
diff --git a/test/intrinsics/gen/textureStore/3bec15.wgsl b/test/intrinsics/gen/textureStore/3bec15.wgsl
index e87e1de..b56de8d 100644
--- a/test/intrinsics/gen/textureStore/3bec15.wgsl
+++ b/test/intrinsics/gen/textureStore/3bec15.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_1d<rgba8uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba8uint, write>;
 
 // fn textureStore(texture: texture_storage_1d<rgba8uint, write>, coords: i32, value: vec4<u32>)
 fn textureStore_3bec15() {
   textureStore(arg_0, 1, vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_3bec15();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_3bec15();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_3bec15();
 }
diff --git a/test/intrinsics/gen/textureStore/3bec15.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/3bec15.wgsl.expected.wgsl
index fe5a5ea..c594be0 100644
--- a/test/intrinsics/gen/textureStore/3bec15.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/3bec15.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rgba8uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8uint, write>;
 
 fn textureStore_3bec15() {
   textureStore(arg_0, 1, vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_3bec15();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_3bec15();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_3bec15();
 }
diff --git a/test/intrinsics/gen/textureStore/441ba8.wgsl b/test/intrinsics/gen/textureStore/441ba8.wgsl
index c39592d..a110f0c 100644
--- a/test/intrinsics/gen/textureStore/441ba8.wgsl
+++ b/test/intrinsics/gen/textureStore/441ba8.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_3d<rgba32uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba32uint, write>;
 
 // fn textureStore(texture: texture_storage_3d<rgba32uint, write>, coords: vec3<i32>, value: vec4<u32>)
 fn textureStore_441ba8() {
   textureStore(arg_0, vec3<i32>(), vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_441ba8();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_441ba8();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_441ba8();
 }
diff --git a/test/intrinsics/gen/textureStore/441ba8.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/441ba8.wgsl.expected.wgsl
index dfa88ea..b59255a 100644
--- a/test/intrinsics/gen/textureStore/441ba8.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/441ba8.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_3d<rgba32uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32uint, write>;
 
 fn textureStore_441ba8() {
   textureStore(arg_0, vec3<i32>(), vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_441ba8();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_441ba8();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_441ba8();
 }
diff --git a/test/intrinsics/gen/textureStore/4fc057.wgsl b/test/intrinsics/gen/textureStore/4fc057.wgsl
index 9f83f23..b746370 100644
--- a/test/intrinsics/gen/textureStore/4fc057.wgsl
+++ b/test/intrinsics/gen/textureStore/4fc057.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<rgba8snorm, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8snorm, write>;
 
 // fn textureStore(texture: texture_storage_2d_array<rgba8snorm, write>, coords: vec2<i32>, array_index: i32, value: vec4<f32>)
 fn textureStore_4fc057() {
   textureStore(arg_0, vec2<i32>(), 1, vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_4fc057();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_4fc057();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_4fc057();
 }
diff --git a/test/intrinsics/gen/textureStore/4fc057.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/4fc057.wgsl.expected.wgsl
index 38fef89..26a0018 100644
--- a/test/intrinsics/gen/textureStore/4fc057.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/4fc057.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba8snorm, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8snorm, write>;
 
 fn textureStore_4fc057() {
   textureStore(arg_0, vec2<i32>(), 1, vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_4fc057();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_4fc057();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_4fc057();
 }
diff --git a/test/intrinsics/gen/textureStore/5a2f8f.wgsl b/test/intrinsics/gen/textureStore/5a2f8f.wgsl
index 2273a88..b9fc23d 100644
--- a/test/intrinsics/gen/textureStore/5a2f8f.wgsl
+++ b/test/intrinsics/gen/textureStore/5a2f8f.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_1d<rgba16sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba16sint, write>;
 
 // fn textureStore(texture: texture_storage_1d<rgba16sint, write>, coords: i32, value: vec4<i32>)
 fn textureStore_5a2f8f() {
   textureStore(arg_0, 1, vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_5a2f8f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_5a2f8f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_5a2f8f();
 }
diff --git a/test/intrinsics/gen/textureStore/5a2f8f.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/5a2f8f.wgsl.expected.wgsl
index c2711ee..13d97f4 100644
--- a/test/intrinsics/gen/textureStore/5a2f8f.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/5a2f8f.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rgba16sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16sint, write>;
 
 fn textureStore_5a2f8f() {
   textureStore(arg_0, 1, vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_5a2f8f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_5a2f8f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_5a2f8f();
 }
diff --git a/test/intrinsics/gen/textureStore/60975f.wgsl b/test/intrinsics/gen/textureStore/60975f.wgsl
index 6a3b0f1..3408855 100644
--- a/test/intrinsics/gen/textureStore/60975f.wgsl
+++ b/test/intrinsics/gen/textureStore/60975f.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<rgba8unorm, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8unorm, write>;
 
 // fn textureStore(texture: texture_storage_2d_array<rgba8unorm, write>, coords: vec2<i32>, array_index: i32, value: vec4<f32>)
 fn textureStore_60975f() {
   textureStore(arg_0, vec2<i32>(), 1, vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_60975f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_60975f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_60975f();
 }
diff --git a/test/intrinsics/gen/textureStore/60975f.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/60975f.wgsl.expected.wgsl
index 539a6fc..47cdd34 100644
--- a/test/intrinsics/gen/textureStore/60975f.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/60975f.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba8unorm, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8unorm, write>;
 
 fn textureStore_60975f() {
   textureStore(arg_0, vec2<i32>(), 1, vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_60975f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_60975f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_60975f();
 }
diff --git a/test/intrinsics/gen/textureStore/682fd6.wgsl b/test/intrinsics/gen/textureStore/682fd6.wgsl
index e8f48ce..7d74607 100644
--- a/test/intrinsics/gen/textureStore/682fd6.wgsl
+++ b/test/intrinsics/gen/textureStore/682fd6.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d<rg32uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rg32uint, write>;
 
 // fn textureStore(texture: texture_storage_2d<rg32uint, write>, coords: vec2<i32>, value: vec4<u32>)
 fn textureStore_682fd6() {
   textureStore(arg_0, vec2<i32>(), vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_682fd6();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_682fd6();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_682fd6();
 }
diff --git a/test/intrinsics/gen/textureStore/682fd6.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/682fd6.wgsl.expected.wgsl
index 42bad33..20603cc 100644
--- a/test/intrinsics/gen/textureStore/682fd6.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/682fd6.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d<rg32uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rg32uint, write>;
 
 fn textureStore_682fd6() {
   textureStore(arg_0, vec2<i32>(), vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_682fd6();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_682fd6();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_682fd6();
 }
diff --git a/test/intrinsics/gen/textureStore/6b75c3.wgsl b/test/intrinsics/gen/textureStore/6b75c3.wgsl
index 49514f2..16dc47d 100644
--- a/test/intrinsics/gen/textureStore/6b75c3.wgsl
+++ b/test/intrinsics/gen/textureStore/6b75c3.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_1d<rgba32float, write>;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba32float, write>;
 
 // fn textureStore(texture: texture_storage_1d<rgba32float, write>, coords: i32, value: vec4<f32>)
 fn textureStore_6b75c3() {
   textureStore(arg_0, 1, vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_6b75c3();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_6b75c3();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_6b75c3();
 }
diff --git a/test/intrinsics/gen/textureStore/6b75c3.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/6b75c3.wgsl.expected.wgsl
index fbaf5e4..cd827a3 100644
--- a/test/intrinsics/gen/textureStore/6b75c3.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/6b75c3.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rgba32float, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32float, write>;
 
 fn textureStore_6b75c3() {
   textureStore(arg_0, 1, vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_6b75c3();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_6b75c3();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_6b75c3();
 }
diff --git a/test/intrinsics/gen/textureStore/6b80d2.wgsl b/test/intrinsics/gen/textureStore/6b80d2.wgsl
index bf79a72..95535c4 100644
--- a/test/intrinsics/gen/textureStore/6b80d2.wgsl
+++ b/test/intrinsics/gen/textureStore/6b80d2.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_1d<r32sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_1d<r32sint, write>;
 
 // fn textureStore(texture: texture_storage_1d<r32sint, write>, coords: i32, value: vec4<i32>)
 fn textureStore_6b80d2() {
   textureStore(arg_0, 1, vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_6b80d2();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_6b80d2();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_6b80d2();
 }
diff --git a/test/intrinsics/gen/textureStore/6b80d2.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/6b80d2.wgsl.expected.wgsl
index 8857fdc..e7efff2 100644
--- a/test/intrinsics/gen/textureStore/6b80d2.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/6b80d2.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_1d<r32sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_1d<r32sint, write>;
 
 fn textureStore_6b80d2() {
   textureStore(arg_0, 1, vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_6b80d2();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_6b80d2();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_6b80d2();
 }
diff --git a/test/intrinsics/gen/textureStore/6cff2e.wgsl b/test/intrinsics/gen/textureStore/6cff2e.wgsl
index c20185f..26320a2 100644
--- a/test/intrinsics/gen/textureStore/6cff2e.wgsl
+++ b/test/intrinsics/gen/textureStore/6cff2e.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d<r32uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d<r32uint, write>;
 
 // fn textureStore(texture: texture_storage_2d<r32uint, write>, coords: vec2<i32>, value: vec4<u32>)
 fn textureStore_6cff2e() {
   textureStore(arg_0, vec2<i32>(), vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_6cff2e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_6cff2e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_6cff2e();
 }
diff --git a/test/intrinsics/gen/textureStore/6cff2e.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/6cff2e.wgsl.expected.wgsl
index cae9ed9..4f43b98 100644
--- a/test/intrinsics/gen/textureStore/6cff2e.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/6cff2e.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d<r32uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d<r32uint, write>;
 
 fn textureStore_6cff2e() {
   textureStore(arg_0, vec2<i32>(), vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_6cff2e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_6cff2e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_6cff2e();
 }
diff --git a/test/intrinsics/gen/textureStore/6da692.wgsl b/test/intrinsics/gen/textureStore/6da692.wgsl
index 7b5727a..dd40882 100644
--- a/test/intrinsics/gen/textureStore/6da692.wgsl
+++ b/test/intrinsics/gen/textureStore/6da692.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<rgba16uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba16uint, write>;
 
 // fn textureStore(texture: texture_storage_2d_array<rgba16uint, write>, coords: vec2<i32>, array_index: i32, value: vec4<u32>)
 fn textureStore_6da692() {
   textureStore(arg_0, vec2<i32>(), 1, vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_6da692();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_6da692();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_6da692();
 }
diff --git a/test/intrinsics/gen/textureStore/6da692.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/6da692.wgsl.expected.wgsl
index 2b21df2..2497a69 100644
--- a/test/intrinsics/gen/textureStore/6da692.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/6da692.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba16uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba16uint, write>;
 
 fn textureStore_6da692() {
   textureStore(arg_0, vec2<i32>(), 1, vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_6da692();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_6da692();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_6da692();
 }
diff --git a/test/intrinsics/gen/textureStore/731349.wgsl b/test/intrinsics/gen/textureStore/731349.wgsl
index f7f132a..ca0d0ef 100644
--- a/test/intrinsics/gen/textureStore/731349.wgsl
+++ b/test/intrinsics/gen/textureStore/731349.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d<rgba8unorm, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba8unorm, write>;
 
 // fn textureStore(texture: texture_storage_2d<rgba8unorm, write>, coords: vec2<i32>, value: vec4<f32>)
 fn textureStore_731349() {
   textureStore(arg_0, vec2<i32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_731349();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_731349();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_731349();
 }
diff --git a/test/intrinsics/gen/textureStore/731349.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/731349.wgsl.expected.wgsl
index 3488770..d5466d8 100644
--- a/test/intrinsics/gen/textureStore/731349.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/731349.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d<rgba8unorm, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8unorm, write>;
 
 fn textureStore_731349() {
   textureStore(arg_0, vec2<i32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_731349();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_731349();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_731349();
 }
diff --git a/test/intrinsics/gen/textureStore/752da6.wgsl b/test/intrinsics/gen/textureStore/752da6.wgsl
index da2dca2..6310341 100644
--- a/test/intrinsics/gen/textureStore/752da6.wgsl
+++ b/test/intrinsics/gen/textureStore/752da6.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d<rgba32sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba32sint, write>;
 
 // fn textureStore(texture: texture_storage_2d<rgba32sint, write>, coords: vec2<i32>, value: vec4<i32>)
 fn textureStore_752da6() {
   textureStore(arg_0, vec2<i32>(), vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_752da6();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_752da6();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_752da6();
 }
diff --git a/test/intrinsics/gen/textureStore/752da6.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/752da6.wgsl.expected.wgsl
index 53b1249..e029549 100644
--- a/test/intrinsics/gen/textureStore/752da6.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/752da6.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d<rgba32sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba32sint, write>;
 
 fn textureStore_752da6() {
   textureStore(arg_0, vec2<i32>(), vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_752da6();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_752da6();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_752da6();
 }
diff --git a/test/intrinsics/gen/textureStore/77c0ae.wgsl b/test/intrinsics/gen/textureStore/77c0ae.wgsl
index b5e0ee6..f122e9f 100644
--- a/test/intrinsics/gen/textureStore/77c0ae.wgsl
+++ b/test/intrinsics/gen/textureStore/77c0ae.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d<rgba8uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba8uint, write>;
 
 // fn textureStore(texture: texture_storage_2d<rgba8uint, write>, coords: vec2<i32>, value: vec4<u32>)
 fn textureStore_77c0ae() {
   textureStore(arg_0, vec2<i32>(), vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_77c0ae();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_77c0ae();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_77c0ae();
 }
diff --git a/test/intrinsics/gen/textureStore/77c0ae.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/77c0ae.wgsl.expected.wgsl
index d4a7597..56cf079 100644
--- a/test/intrinsics/gen/textureStore/77c0ae.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/77c0ae.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d<rgba8uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8uint, write>;
 
 fn textureStore_77c0ae() {
   textureStore(arg_0, vec2<i32>(), vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_77c0ae();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_77c0ae();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_77c0ae();
 }
diff --git a/test/intrinsics/gen/textureStore/7cec8d.wgsl b/test/intrinsics/gen/textureStore/7cec8d.wgsl
index 1116e70..5b0f47b 100644
--- a/test/intrinsics/gen/textureStore/7cec8d.wgsl
+++ b/test/intrinsics/gen/textureStore/7cec8d.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<rgba32sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32sint, write>;
 
 // fn textureStore(texture: texture_storage_2d_array<rgba32sint, write>, coords: vec2<i32>, array_index: i32, value: vec4<i32>)
 fn textureStore_7cec8d() {
   textureStore(arg_0, vec2<i32>(), 1, vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_7cec8d();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_7cec8d();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_7cec8d();
 }
diff --git a/test/intrinsics/gen/textureStore/7cec8d.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/7cec8d.wgsl.expected.wgsl
index 3a46878..89ed161 100644
--- a/test/intrinsics/gen/textureStore/7cec8d.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/7cec8d.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba32sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32sint, write>;
 
 fn textureStore_7cec8d() {
   textureStore(arg_0, vec2<i32>(), 1, vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_7cec8d();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_7cec8d();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_7cec8d();
 }
diff --git a/test/intrinsics/gen/textureStore/7f7fae.wgsl b/test/intrinsics/gen/textureStore/7f7fae.wgsl
index 343897b..d1d8004 100644
--- a/test/intrinsics/gen/textureStore/7f7fae.wgsl
+++ b/test/intrinsics/gen/textureStore/7f7fae.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_1d<rgba8unorm, write>;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba8unorm, write>;
 
 // fn textureStore(texture: texture_storage_1d<rgba8unorm, write>, coords: i32, value: vec4<f32>)
 fn textureStore_7f7fae() {
   textureStore(arg_0, 1, vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_7f7fae();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_7f7fae();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_7f7fae();
 }
diff --git a/test/intrinsics/gen/textureStore/7f7fae.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/7f7fae.wgsl.expected.wgsl
index abe303f..438123c 100644
--- a/test/intrinsics/gen/textureStore/7f7fae.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/7f7fae.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rgba8unorm, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8unorm, write>;
 
 fn textureStore_7f7fae() {
   textureStore(arg_0, 1, vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_7f7fae();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_7f7fae();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_7f7fae();
 }
diff --git a/test/intrinsics/gen/textureStore/804942.wgsl b/test/intrinsics/gen/textureStore/804942.wgsl
index be1fdb6..6c76b00 100644
--- a/test/intrinsics/gen/textureStore/804942.wgsl
+++ b/test/intrinsics/gen/textureStore/804942.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d<r32sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d<r32sint, write>;
 
 // fn textureStore(texture: texture_storage_2d<r32sint, write>, coords: vec2<i32>, value: vec4<i32>)
 fn textureStore_804942() {
   textureStore(arg_0, vec2<i32>(), vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_804942();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_804942();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_804942();
 }
diff --git a/test/intrinsics/gen/textureStore/804942.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/804942.wgsl.expected.wgsl
index 5a76cea..f4a325c 100644
--- a/test/intrinsics/gen/textureStore/804942.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/804942.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d<r32sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d<r32sint, write>;
 
 fn textureStore_804942() {
   textureStore(arg_0, vec2<i32>(), vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_804942();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_804942();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_804942();
 }
diff --git a/test/intrinsics/gen/textureStore/805dae.wgsl b/test/intrinsics/gen/textureStore/805dae.wgsl
index 489a93d..962a3ff 100644
--- a/test/intrinsics/gen/textureStore/805dae.wgsl
+++ b/test/intrinsics/gen/textureStore/805dae.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d<rgba8snorm, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba8snorm, write>;
 
 // fn textureStore(texture: texture_storage_2d<rgba8snorm, write>, coords: vec2<i32>, value: vec4<f32>)
 fn textureStore_805dae() {
   textureStore(arg_0, vec2<i32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_805dae();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_805dae();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_805dae();
 }
diff --git a/test/intrinsics/gen/textureStore/805dae.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/805dae.wgsl.expected.wgsl
index 00270ab..667452d 100644
--- a/test/intrinsics/gen/textureStore/805dae.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/805dae.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d<rgba8snorm, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8snorm, write>;
 
 fn textureStore_805dae() {
   textureStore(arg_0, vec2<i32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_805dae();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_805dae();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_805dae();
 }
diff --git a/test/intrinsics/gen/textureStore/83bcc1.wgsl b/test/intrinsics/gen/textureStore/83bcc1.wgsl
index d59c929..657a679 100644
--- a/test/intrinsics/gen/textureStore/83bcc1.wgsl
+++ b/test/intrinsics/gen/textureStore/83bcc1.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_1d<rg32uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rg32uint, write>;
 
 // fn textureStore(texture: texture_storage_1d<rg32uint, write>, coords: i32, value: vec4<u32>)
 fn textureStore_83bcc1() {
   textureStore(arg_0, 1, vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_83bcc1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_83bcc1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_83bcc1();
 }
diff --git a/test/intrinsics/gen/textureStore/83bcc1.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/83bcc1.wgsl.expected.wgsl
index 1fbb4cf..f0ee863 100644
--- a/test/intrinsics/gen/textureStore/83bcc1.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/83bcc1.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rg32uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32uint, write>;
 
 fn textureStore_83bcc1() {
   textureStore(arg_0, 1, vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_83bcc1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_83bcc1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_83bcc1();
 }
diff --git a/test/intrinsics/gen/textureStore/872747.wgsl b/test/intrinsics/gen/textureStore/872747.wgsl
index 8d11122..cbb964b 100644
--- a/test/intrinsics/gen/textureStore/872747.wgsl
+++ b/test/intrinsics/gen/textureStore/872747.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_1d<rg32float, write>;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rg32float, write>;
 
 // fn textureStore(texture: texture_storage_1d<rg32float, write>, coords: i32, value: vec4<f32>)
 fn textureStore_872747() {
   textureStore(arg_0, 1, vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_872747();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_872747();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_872747();
 }
diff --git a/test/intrinsics/gen/textureStore/872747.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/872747.wgsl.expected.wgsl
index 94bbebc..b5c2914 100644
--- a/test/intrinsics/gen/textureStore/872747.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/872747.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rg32float, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32float, write>;
 
 fn textureStore_872747() {
   textureStore(arg_0, 1, vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_872747();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_872747();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_872747();
 }
diff --git a/test/intrinsics/gen/textureStore/8e0479.wgsl b/test/intrinsics/gen/textureStore/8e0479.wgsl
index b40e3fa..98b7f8c 100644
--- a/test/intrinsics/gen/textureStore/8e0479.wgsl
+++ b/test/intrinsics/gen/textureStore/8e0479.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<rgba32uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32uint, write>;
 
 // fn textureStore(texture: texture_storage_2d_array<rgba32uint, write>, coords: vec2<i32>, array_index: i32, value: vec4<u32>)
 fn textureStore_8e0479() {
   textureStore(arg_0, vec2<i32>(), 1, vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_8e0479();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_8e0479();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_8e0479();
 }
diff --git a/test/intrinsics/gen/textureStore/8e0479.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/8e0479.wgsl.expected.wgsl
index 42d3326..07408ae 100644
--- a/test/intrinsics/gen/textureStore/8e0479.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/8e0479.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba32uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32uint, write>;
 
 fn textureStore_8e0479() {
   textureStore(arg_0, vec2<i32>(), 1, vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_8e0479();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_8e0479();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_8e0479();
 }
diff --git a/test/intrinsics/gen/textureStore/8f71a1.wgsl b/test/intrinsics/gen/textureStore/8f71a1.wgsl
index f15b4db..a1298a4 100644
--- a/test/intrinsics/gen/textureStore/8f71a1.wgsl
+++ b/test/intrinsics/gen/textureStore/8f71a1.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_3d<rgba16sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba16sint, write>;
 
 // fn textureStore(texture: texture_storage_3d<rgba16sint, write>, coords: vec3<i32>, value: vec4<i32>)
 fn textureStore_8f71a1() {
   textureStore(arg_0, vec3<i32>(), vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_8f71a1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_8f71a1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_8f71a1();
 }
diff --git a/test/intrinsics/gen/textureStore/8f71a1.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/8f71a1.wgsl.expected.wgsl
index 3b5e2ec..9bacd31 100644
--- a/test/intrinsics/gen/textureStore/8f71a1.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/8f71a1.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_3d<rgba16sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16sint, write>;
 
 fn textureStore_8f71a1() {
   textureStore(arg_0, vec3<i32>(), vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_8f71a1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_8f71a1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_8f71a1();
 }
diff --git a/test/intrinsics/gen/textureStore/969534.wgsl b/test/intrinsics/gen/textureStore/969534.wgsl
index 55e0153..d87249f 100644
--- a/test/intrinsics/gen/textureStore/969534.wgsl
+++ b/test/intrinsics/gen/textureStore/969534.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_1d<rgba32sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba32sint, write>;
 
 // fn textureStore(texture: texture_storage_1d<rgba32sint, write>, coords: i32, value: vec4<i32>)
 fn textureStore_969534() {
   textureStore(arg_0, 1, vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_969534();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_969534();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_969534();
 }
diff --git a/test/intrinsics/gen/textureStore/969534.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/969534.wgsl.expected.wgsl
index 2890165..467cbda 100644
--- a/test/intrinsics/gen/textureStore/969534.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/969534.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rgba32sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32sint, write>;
 
 fn textureStore_969534() {
   textureStore(arg_0, 1, vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_969534();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_969534();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_969534();
 }
diff --git a/test/intrinsics/gen/textureStore/9a3ecc.wgsl b/test/intrinsics/gen/textureStore/9a3ecc.wgsl
index 3698b8f..0bfd6b0 100644
--- a/test/intrinsics/gen/textureStore/9a3ecc.wgsl
+++ b/test/intrinsics/gen/textureStore/9a3ecc.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_3d<rgba32sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba32sint, write>;
 
 // fn textureStore(texture: texture_storage_3d<rgba32sint, write>, coords: vec3<i32>, value: vec4<i32>)
 fn textureStore_9a3ecc() {
   textureStore(arg_0, vec3<i32>(), vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_9a3ecc();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_9a3ecc();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_9a3ecc();
 }
diff --git a/test/intrinsics/gen/textureStore/9a3ecc.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/9a3ecc.wgsl.expected.wgsl
index 701e3d8..6fe66cb 100644
--- a/test/intrinsics/gen/textureStore/9a3ecc.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/9a3ecc.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_3d<rgba32sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba32sint, write>;
 
 fn textureStore_9a3ecc() {
   textureStore(arg_0, vec3<i32>(), vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_9a3ecc();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_9a3ecc();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_9a3ecc();
 }
diff --git a/test/intrinsics/gen/textureStore/9d9cd5.wgsl b/test/intrinsics/gen/textureStore/9d9cd5.wgsl
index 8d4d10f..776ac7c 100644
--- a/test/intrinsics/gen/textureStore/9d9cd5.wgsl
+++ b/test/intrinsics/gen/textureStore/9d9cd5.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<rgba32float, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba32float, write>;
 
 // fn textureStore(texture: texture_storage_2d_array<rgba32float, write>, coords: vec2<i32>, array_index: i32, value: vec4<f32>)
 fn textureStore_9d9cd5() {
   textureStore(arg_0, vec2<i32>(), 1, vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_9d9cd5();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_9d9cd5();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_9d9cd5();
 }
diff --git a/test/intrinsics/gen/textureStore/9d9cd5.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/9d9cd5.wgsl.expected.wgsl
index 991b513..346f010 100644
--- a/test/intrinsics/gen/textureStore/9d9cd5.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/9d9cd5.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba32float, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba32float, write>;
 
 fn textureStore_9d9cd5() {
   textureStore(arg_0, vec2<i32>(), 1, vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_9d9cd5();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_9d9cd5();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_9d9cd5();
 }
diff --git a/test/intrinsics/gen/textureStore/9e3ec5.wgsl b/test/intrinsics/gen/textureStore/9e3ec5.wgsl
index 3e42b1a..7b643ca 100644
--- a/test/intrinsics/gen/textureStore/9e3ec5.wgsl
+++ b/test/intrinsics/gen/textureStore/9e3ec5.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d<rgba16sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba16sint, write>;
 
 // fn textureStore(texture: texture_storage_2d<rgba16sint, write>, coords: vec2<i32>, value: vec4<i32>)
 fn textureStore_9e3ec5() {
   textureStore(arg_0, vec2<i32>(), vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_9e3ec5();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_9e3ec5();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_9e3ec5();
 }
diff --git a/test/intrinsics/gen/textureStore/9e3ec5.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/9e3ec5.wgsl.expected.wgsl
index f4e180f..aaa8bf6 100644
--- a/test/intrinsics/gen/textureStore/9e3ec5.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/9e3ec5.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d<rgba16sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16sint, write>;
 
 fn textureStore_9e3ec5() {
   textureStore(arg_0, vec2<i32>(), vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_9e3ec5();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_9e3ec5();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_9e3ec5();
 }
diff --git a/test/intrinsics/gen/textureStore/ac67aa.wgsl b/test/intrinsics/gen/textureStore/ac67aa.wgsl
index e973b1b..19bbe72 100644
--- a/test/intrinsics/gen/textureStore/ac67aa.wgsl
+++ b/test/intrinsics/gen/textureStore/ac67aa.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_3d<rg32uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rg32uint, write>;
 
 // fn textureStore(texture: texture_storage_3d<rg32uint, write>, coords: vec3<i32>, value: vec4<u32>)
 fn textureStore_ac67aa() {
   textureStore(arg_0, vec3<i32>(), vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_ac67aa();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_ac67aa();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_ac67aa();
 }
diff --git a/test/intrinsics/gen/textureStore/ac67aa.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/ac67aa.wgsl.expected.wgsl
index e382854..21d0d22 100644
--- a/test/intrinsics/gen/textureStore/ac67aa.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/ac67aa.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_3d<rg32uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32uint, write>;
 
 fn textureStore_ac67aa() {
   textureStore(arg_0, vec3<i32>(), vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_ac67aa();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_ac67aa();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_ac67aa();
 }
diff --git a/test/intrinsics/gen/textureStore/b706b1.wgsl b/test/intrinsics/gen/textureStore/b706b1.wgsl
index ca942b2..6eb9f07 100644
--- a/test/intrinsics/gen/textureStore/b706b1.wgsl
+++ b/test/intrinsics/gen/textureStore/b706b1.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_3d<rgba8sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba8sint, write>;
 
 // fn textureStore(texture: texture_storage_3d<rgba8sint, write>, coords: vec3<i32>, value: vec4<i32>)
 fn textureStore_b706b1() {
   textureStore(arg_0, vec3<i32>(), vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_b706b1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_b706b1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_b706b1();
 }
diff --git a/test/intrinsics/gen/textureStore/b706b1.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/b706b1.wgsl.expected.wgsl
index a307e66..7b77dc8 100644
--- a/test/intrinsics/gen/textureStore/b706b1.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/b706b1.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_3d<rgba8sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8sint, write>;
 
 fn textureStore_b706b1() {
   textureStore(arg_0, vec3<i32>(), vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_b706b1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_b706b1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_b706b1();
 }
diff --git a/test/intrinsics/gen/textureStore/bbcb7f.wgsl b/test/intrinsics/gen/textureStore/bbcb7f.wgsl
index 19fb864..fc16ac9 100644
--- a/test/intrinsics/gen/textureStore/bbcb7f.wgsl
+++ b/test/intrinsics/gen/textureStore/bbcb7f.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d<rgba8sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba8sint, write>;
 
 // fn textureStore(texture: texture_storage_2d<rgba8sint, write>, coords: vec2<i32>, value: vec4<i32>)
 fn textureStore_bbcb7f() {
   textureStore(arg_0, vec2<i32>(), vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_bbcb7f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_bbcb7f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_bbcb7f();
 }
diff --git a/test/intrinsics/gen/textureStore/bbcb7f.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/bbcb7f.wgsl.expected.wgsl
index cc509cf..8c4bb4d 100644
--- a/test/intrinsics/gen/textureStore/bbcb7f.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/bbcb7f.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d<rgba8sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba8sint, write>;
 
 fn textureStore_bbcb7f() {
   textureStore(arg_0, vec2<i32>(), vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_bbcb7f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_bbcb7f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_bbcb7f();
 }
diff --git a/test/intrinsics/gen/textureStore/be6e30.wgsl b/test/intrinsics/gen/textureStore/be6e30.wgsl
index ab35064..4cd6834 100644
--- a/test/intrinsics/gen/textureStore/be6e30.wgsl
+++ b/test/intrinsics/gen/textureStore/be6e30.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d<rgba16float, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d<rgba16float, write>;
 
 // fn textureStore(texture: texture_storage_2d<rgba16float, write>, coords: vec2<i32>, value: vec4<f32>)
 fn textureStore_be6e30() {
   textureStore(arg_0, vec2<i32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_be6e30();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_be6e30();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_be6e30();
 }
diff --git a/test/intrinsics/gen/textureStore/be6e30.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/be6e30.wgsl.expected.wgsl
index 0b92506..3a4c747 100644
--- a/test/intrinsics/gen/textureStore/be6e30.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/be6e30.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d<rgba16float, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d<rgba16float, write>;
 
 fn textureStore_be6e30() {
   textureStore(arg_0, vec2<i32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_be6e30();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_be6e30();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_be6e30();
 }
diff --git a/test/intrinsics/gen/textureStore/bf775c.wgsl b/test/intrinsics/gen/textureStore/bf775c.wgsl
index 7f23172..b367132 100644
--- a/test/intrinsics/gen/textureStore/bf775c.wgsl
+++ b/test/intrinsics/gen/textureStore/bf775c.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_1d<rgba8sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba8sint, write>;
 
 // fn textureStore(texture: texture_storage_1d<rgba8sint, write>, coords: i32, value: vec4<i32>)
 fn textureStore_bf775c() {
   textureStore(arg_0, 1, vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_bf775c();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_bf775c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_bf775c();
 }
diff --git a/test/intrinsics/gen/textureStore/bf775c.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/bf775c.wgsl.expected.wgsl
index c93ab8e..db5d80e 100644
--- a/test/intrinsics/gen/textureStore/bf775c.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/bf775c.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rgba8sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba8sint, write>;
 
 fn textureStore_bf775c() {
   textureStore(arg_0, 1, vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_bf775c();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_bf775c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_bf775c();
 }
diff --git a/test/intrinsics/gen/textureStore/c5af1e.wgsl b/test/intrinsics/gen/textureStore/c5af1e.wgsl
index 205da55..e4cbfa9 100644
--- a/test/intrinsics/gen/textureStore/c5af1e.wgsl
+++ b/test/intrinsics/gen/textureStore/c5af1e.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_3d<rgba16float, write>;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba16float, write>;
 
 // fn textureStore(texture: texture_storage_3d<rgba16float, write>, coords: vec3<i32>, value: vec4<f32>)
 fn textureStore_c5af1e() {
   textureStore(arg_0, vec3<i32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_c5af1e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_c5af1e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_c5af1e();
 }
diff --git a/test/intrinsics/gen/textureStore/c5af1e.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/c5af1e.wgsl.expected.wgsl
index 0d46ada..02c2ef8 100644
--- a/test/intrinsics/gen/textureStore/c5af1e.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/c5af1e.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_3d<rgba16float, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba16float, write>;
 
 fn textureStore_c5af1e() {
   textureStore(arg_0, vec3<i32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_c5af1e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_c5af1e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_c5af1e();
 }
diff --git a/test/intrinsics/gen/textureStore/c863be.wgsl b/test/intrinsics/gen/textureStore/c863be.wgsl
index 456fafc..b3d05f8 100644
--- a/test/intrinsics/gen/textureStore/c863be.wgsl
+++ b/test/intrinsics/gen/textureStore/c863be.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<rg32float, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32float, write>;
 
 // fn textureStore(texture: texture_storage_2d_array<rg32float, write>, coords: vec2<i32>, array_index: i32, value: vec4<f32>)
 fn textureStore_c863be() {
   textureStore(arg_0, vec2<i32>(), 1, vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_c863be();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_c863be();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_c863be();
 }
diff --git a/test/intrinsics/gen/textureStore/c863be.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/c863be.wgsl.expected.wgsl
index 147d8be..46b5a69 100644
--- a/test/intrinsics/gen/textureStore/c863be.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/c863be.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rg32float, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32float, write>;
 
 fn textureStore_c863be() {
   textureStore(arg_0, vec2<i32>(), 1, vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_c863be();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_c863be();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_c863be();
 }
diff --git a/test/intrinsics/gen/textureStore/d73b5c.wgsl b/test/intrinsics/gen/textureStore/d73b5c.wgsl
index b91a45f..29a764d 100644
--- a/test/intrinsics/gen/textureStore/d73b5c.wgsl
+++ b/test/intrinsics/gen/textureStore/d73b5c.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_1d<rg32sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rg32sint, write>;
 
 // fn textureStore(texture: texture_storage_1d<rg32sint, write>, coords: i32, value: vec4<i32>)
 fn textureStore_d73b5c() {
   textureStore(arg_0, 1, vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_d73b5c();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_d73b5c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_d73b5c();
 }
diff --git a/test/intrinsics/gen/textureStore/d73b5c.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/d73b5c.wgsl.expected.wgsl
index 38b9a97..2b09cbc 100644
--- a/test/intrinsics/gen/textureStore/d73b5c.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/d73b5c.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rg32sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rg32sint, write>;
 
 fn textureStore_d73b5c() {
   textureStore(arg_0, 1, vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_d73b5c();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_d73b5c();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_d73b5c();
 }
diff --git a/test/intrinsics/gen/textureStore/dd7d81.wgsl b/test/intrinsics/gen/textureStore/dd7d81.wgsl
index f0f0039..4730c2e 100644
--- a/test/intrinsics/gen/textureStore/dd7d81.wgsl
+++ b/test/intrinsics/gen/textureStore/dd7d81.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_3d<rgba8snorm, write>;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba8snorm, write>;
 
 // fn textureStore(texture: texture_storage_3d<rgba8snorm, write>, coords: vec3<i32>, value: vec4<f32>)
 fn textureStore_dd7d81() {
   textureStore(arg_0, vec3<i32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_dd7d81();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_dd7d81();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_dd7d81();
 }
diff --git a/test/intrinsics/gen/textureStore/dd7d81.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/dd7d81.wgsl.expected.wgsl
index e99a25f..f7f4bc1 100644
--- a/test/intrinsics/gen/textureStore/dd7d81.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/dd7d81.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_3d<rgba8snorm, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8snorm, write>;
 
 fn textureStore_dd7d81() {
   textureStore(arg_0, vec3<i32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_dd7d81();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_dd7d81();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_dd7d81();
 }
diff --git a/test/intrinsics/gen/textureStore/dde364.wgsl b/test/intrinsics/gen/textureStore/dde364.wgsl
index b9f429d..7050247 100644
--- a/test/intrinsics/gen/textureStore/dde364.wgsl
+++ b/test/intrinsics/gen/textureStore/dde364.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<rg32uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32uint, write>;
 
 // fn textureStore(texture: texture_storage_2d_array<rg32uint, write>, coords: vec2<i32>, array_index: i32, value: vec4<u32>)
 fn textureStore_dde364() {
   textureStore(arg_0, vec2<i32>(), 1, vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_dde364();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_dde364();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_dde364();
 }
diff --git a/test/intrinsics/gen/textureStore/dde364.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/dde364.wgsl.expected.wgsl
index 87583fd..044b09d 100644
--- a/test/intrinsics/gen/textureStore/dde364.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/dde364.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rg32uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32uint, write>;
 
 fn textureStore_dde364() {
   textureStore(arg_0, vec2<i32>(), 1, vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_dde364();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_dde364();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_dde364();
 }
diff --git a/test/intrinsics/gen/textureStore/e885e8.wgsl b/test/intrinsics/gen/textureStore/e885e8.wgsl
index c1ca56a..fd0c31c 100644
--- a/test/intrinsics/gen/textureStore/e885e8.wgsl
+++ b/test/intrinsics/gen/textureStore/e885e8.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_1d<rgba16float, write>;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba16float, write>;
 
 // fn textureStore(texture: texture_storage_1d<rgba16float, write>, coords: i32, value: vec4<f32>)
 fn textureStore_e885e8() {
   textureStore(arg_0, 1, vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_e885e8();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_e885e8();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_e885e8();
 }
diff --git a/test/intrinsics/gen/textureStore/e885e8.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/e885e8.wgsl.expected.wgsl
index f8dbae5..eac4ea6 100644
--- a/test/intrinsics/gen/textureStore/e885e8.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/e885e8.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rgba16float, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16float, write>;
 
 fn textureStore_e885e8() {
   textureStore(arg_0, 1, vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_e885e8();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_e885e8();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_e885e8();
 }
diff --git a/test/intrinsics/gen/textureStore/eb702f.wgsl b/test/intrinsics/gen/textureStore/eb702f.wgsl
index a0410f9..283888d 100644
--- a/test/intrinsics/gen/textureStore/eb702f.wgsl
+++ b/test/intrinsics/gen/textureStore/eb702f.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_3d<r32float, write>;
+@group(1) @binding(0) var arg_0: texture_storage_3d<r32float, write>;
 
 // fn textureStore(texture: texture_storage_3d<r32float, write>, coords: vec3<i32>, value: vec4<f32>)
 fn textureStore_eb702f() {
   textureStore(arg_0, vec3<i32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_eb702f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_eb702f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_eb702f();
 }
diff --git a/test/intrinsics/gen/textureStore/eb702f.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/eb702f.wgsl.expected.wgsl
index 43e39be..c2b8653 100644
--- a/test/intrinsics/gen/textureStore/eb702f.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/eb702f.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_3d<r32float, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_3d<r32float, write>;
 
 fn textureStore_eb702f() {
   textureStore(arg_0, vec3<i32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_eb702f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_eb702f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_eb702f();
 }
diff --git a/test/intrinsics/gen/textureStore/eb78b9.wgsl b/test/intrinsics/gen/textureStore/eb78b9.wgsl
index 16711fe..db051b1 100644
--- a/test/intrinsics/gen/textureStore/eb78b9.wgsl
+++ b/test/intrinsics/gen/textureStore/eb78b9.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_3d<r32sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_3d<r32sint, write>;
 
 // fn textureStore(texture: texture_storage_3d<r32sint, write>, coords: vec3<i32>, value: vec4<i32>)
 fn textureStore_eb78b9() {
   textureStore(arg_0, vec3<i32>(), vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_eb78b9();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_eb78b9();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_eb78b9();
 }
diff --git a/test/intrinsics/gen/textureStore/eb78b9.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/eb78b9.wgsl.expected.wgsl
index b5f9092..09472ae 100644
--- a/test/intrinsics/gen/textureStore/eb78b9.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/eb78b9.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_3d<r32sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_3d<r32sint, write>;
 
 fn textureStore_eb78b9() {
   textureStore(arg_0, vec3<i32>(), vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_eb78b9();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_eb78b9();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_eb78b9();
 }
diff --git a/test/intrinsics/gen/textureStore/ee6acc.wgsl b/test/intrinsics/gen/textureStore/ee6acc.wgsl
index 3f431a4..b6db2d0 100644
--- a/test/intrinsics/gen/textureStore/ee6acc.wgsl
+++ b/test/intrinsics/gen/textureStore/ee6acc.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_3d<rg32float, write>;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rg32float, write>;
 
 // fn textureStore(texture: texture_storage_3d<rg32float, write>, coords: vec3<i32>, value: vec4<f32>)
 fn textureStore_ee6acc() {
   textureStore(arg_0, vec3<i32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_ee6acc();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_ee6acc();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_ee6acc();
 }
diff --git a/test/intrinsics/gen/textureStore/ee6acc.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/ee6acc.wgsl.expected.wgsl
index f3e5b9e..8b5b0ab 100644
--- a/test/intrinsics/gen/textureStore/ee6acc.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/ee6acc.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_3d<rg32float, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rg32float, write>;
 
 fn textureStore_ee6acc() {
   textureStore(arg_0, vec3<i32>(), vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_ee6acc();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_ee6acc();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_ee6acc();
 }
diff --git a/test/intrinsics/gen/textureStore/ef9f2f.wgsl b/test/intrinsics/gen/textureStore/ef9f2f.wgsl
index 4519ff9..51c8545 100644
--- a/test/intrinsics/gen/textureStore/ef9f2f.wgsl
+++ b/test/intrinsics/gen/textureStore/ef9f2f.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_3d<r32uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_3d<r32uint, write>;
 
 // fn textureStore(texture: texture_storage_3d<r32uint, write>, coords: vec3<i32>, value: vec4<u32>)
 fn textureStore_ef9f2f() {
   textureStore(arg_0, vec3<i32>(), vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_ef9f2f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_ef9f2f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_ef9f2f();
 }
diff --git a/test/intrinsics/gen/textureStore/ef9f2f.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/ef9f2f.wgsl.expected.wgsl
index 8841b4f..72cb6d0 100644
--- a/test/intrinsics/gen/textureStore/ef9f2f.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/ef9f2f.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_3d<r32uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_3d<r32uint, write>;
 
 fn textureStore_ef9f2f() {
   textureStore(arg_0, vec3<i32>(), vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_ef9f2f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_ef9f2f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_ef9f2f();
 }
diff --git a/test/intrinsics/gen/textureStore/f8dead.wgsl b/test/intrinsics/gen/textureStore/f8dead.wgsl
index 171a951..8cd8a24 100644
--- a/test/intrinsics/gen/textureStore/f8dead.wgsl
+++ b/test/intrinsics/gen/textureStore/f8dead.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_3d<rgba8uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_3d<rgba8uint, write>;
 
 // fn textureStore(texture: texture_storage_3d<rgba8uint, write>, coords: vec3<i32>, value: vec4<u32>)
 fn textureStore_f8dead() {
   textureStore(arg_0, vec3<i32>(), vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_f8dead();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_f8dead();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_f8dead();
 }
diff --git a/test/intrinsics/gen/textureStore/f8dead.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/f8dead.wgsl.expected.wgsl
index a90cf4a..eabfbca 100644
--- a/test/intrinsics/gen/textureStore/f8dead.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/f8dead.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_3d<rgba8uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_3d<rgba8uint, write>;
 
 fn textureStore_f8dead() {
   textureStore(arg_0, vec3<i32>(), vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_f8dead();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_f8dead();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_f8dead();
 }
diff --git a/test/intrinsics/gen/textureStore/f9be83.wgsl b/test/intrinsics/gen/textureStore/f9be83.wgsl
index fb1da82..a5f5b60 100644
--- a/test/intrinsics/gen/textureStore/f9be83.wgsl
+++ b/test/intrinsics/gen/textureStore/f9be83.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<rg32sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rg32sint, write>;
 
 // fn textureStore(texture: texture_storage_2d_array<rg32sint, write>, coords: vec2<i32>, array_index: i32, value: vec4<i32>)
 fn textureStore_f9be83() {
   textureStore(arg_0, vec2<i32>(), 1, vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_f9be83();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_f9be83();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_f9be83();
 }
diff --git a/test/intrinsics/gen/textureStore/f9be83.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/f9be83.wgsl.expected.wgsl
index 5aaf528..c6bb3c4 100644
--- a/test/intrinsics/gen/textureStore/f9be83.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/f9be83.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rg32sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rg32sint, write>;
 
 fn textureStore_f9be83() {
   textureStore(arg_0, vec2<i32>(), 1, vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_f9be83();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_f9be83();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_f9be83();
 }
diff --git a/test/intrinsics/gen/textureStore/fb9a8f.wgsl b/test/intrinsics/gen/textureStore/fb9a8f.wgsl
index 518c2fb..e8002d0 100644
--- a/test/intrinsics/gen/textureStore/fb9a8f.wgsl
+++ b/test/intrinsics/gen/textureStore/fb9a8f.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_1d<rgba32uint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_1d<rgba32uint, write>;
 
 // fn textureStore(texture: texture_storage_1d<rgba32uint, write>, coords: i32, value: vec4<u32>)
 fn textureStore_fb9a8f() {
   textureStore(arg_0, 1, vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_fb9a8f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_fb9a8f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_fb9a8f();
 }
diff --git a/test/intrinsics/gen/textureStore/fb9a8f.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/fb9a8f.wgsl.expected.wgsl
index 4c1a8a2..27aa300 100644
--- a/test/intrinsics/gen/textureStore/fb9a8f.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/fb9a8f.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_1d<rgba32uint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32uint, write>;
 
 fn textureStore_fb9a8f() {
   textureStore(arg_0, 1, vec4<u32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_fb9a8f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_fb9a8f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_fb9a8f();
 }
diff --git a/test/intrinsics/gen/textureStore/fbf53f.wgsl b/test/intrinsics/gen/textureStore/fbf53f.wgsl
index a1878e4..eefd540 100644
--- a/test/intrinsics/gen/textureStore/fbf53f.wgsl
+++ b/test/intrinsics/gen/textureStore/fbf53f.wgsl
@@ -22,25 +22,25 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-[[group(1), binding(0)]] var arg_0: texture_storage_2d_array<rgba8sint, write>;
+@group(1) @binding(0) var arg_0: texture_storage_2d_array<rgba8sint, write>;
 
 // fn textureStore(texture: texture_storage_2d_array<rgba8sint, write>, coords: vec2<i32>, array_index: i32, value: vec4<i32>)
 fn textureStore_fbf53f() {
   textureStore(arg_0, vec2<i32>(), 1, vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_fbf53f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_fbf53f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_fbf53f();
 }
diff --git a/test/intrinsics/gen/textureStore/fbf53f.wgsl.expected.wgsl b/test/intrinsics/gen/textureStore/fbf53f.wgsl.expected.wgsl
index 203bf52..8ee5316 100644
--- a/test/intrinsics/gen/textureStore/fbf53f.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/textureStore/fbf53f.wgsl.expected.wgsl
@@ -1,21 +1,21 @@
-[[group(1), binding(0)]] var arg_0 : texture_storage_2d_array<rgba8sint, write>;
+@group(1) @binding(0) var arg_0 : texture_storage_2d_array<rgba8sint, write>;
 
 fn textureStore_fbf53f() {
   textureStore(arg_0, vec2<i32>(), 1, vec4<i32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_fbf53f();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   textureStore_fbf53f();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   textureStore_fbf53f();
 }
diff --git a/test/intrinsics/gen/transpose/2585cd.wgsl b/test/intrinsics/gen/transpose/2585cd.wgsl
index ad87b72..d693d25 100644
--- a/test/intrinsics/gen/transpose/2585cd.wgsl
+++ b/test/intrinsics/gen/transpose/2585cd.wgsl
@@ -28,18 +28,18 @@
   var res: mat3x4<f32> = transpose(mat4x3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_2585cd();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   transpose_2585cd();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   transpose_2585cd();
 }
diff --git a/test/intrinsics/gen/transpose/2585cd.wgsl.expected.wgsl b/test/intrinsics/gen/transpose/2585cd.wgsl.expected.wgsl
index acb366c..e2bcbee 100644
--- a/test/intrinsics/gen/transpose/2585cd.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/transpose/2585cd.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : mat3x4<f32> = transpose(mat4x3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_2585cd();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   transpose_2585cd();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   transpose_2585cd();
 }
diff --git a/test/intrinsics/gen/transpose/31d679.wgsl b/test/intrinsics/gen/transpose/31d679.wgsl
index 7bfdcdc..2f5b72a 100644
--- a/test/intrinsics/gen/transpose/31d679.wgsl
+++ b/test/intrinsics/gen/transpose/31d679.wgsl
@@ -28,18 +28,18 @@
   var res: mat2x2<f32> = transpose(mat2x2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_31d679();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   transpose_31d679();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   transpose_31d679();
 }
diff --git a/test/intrinsics/gen/transpose/31d679.wgsl.expected.wgsl b/test/intrinsics/gen/transpose/31d679.wgsl.expected.wgsl
index 32d466c..f588cba 100644
--- a/test/intrinsics/gen/transpose/31d679.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/transpose/31d679.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : mat2x2<f32> = transpose(mat2x2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_31d679();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   transpose_31d679();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   transpose_31d679();
 }
diff --git a/test/intrinsics/gen/transpose/31e37e.wgsl b/test/intrinsics/gen/transpose/31e37e.wgsl
index 4896ecb..0246329 100644
--- a/test/intrinsics/gen/transpose/31e37e.wgsl
+++ b/test/intrinsics/gen/transpose/31e37e.wgsl
@@ -28,18 +28,18 @@
   var res: mat2x4<f32> = transpose(mat4x2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_31e37e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   transpose_31e37e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   transpose_31e37e();
 }
diff --git a/test/intrinsics/gen/transpose/31e37e.wgsl.expected.wgsl b/test/intrinsics/gen/transpose/31e37e.wgsl.expected.wgsl
index e603075..3462f91 100644
--- a/test/intrinsics/gen/transpose/31e37e.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/transpose/31e37e.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : mat2x4<f32> = transpose(mat4x2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_31e37e();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   transpose_31e37e();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   transpose_31e37e();
 }
diff --git a/test/intrinsics/gen/transpose/4ce359.wgsl b/test/intrinsics/gen/transpose/4ce359.wgsl
index 4f0f9f0..5f8c9cc 100644
--- a/test/intrinsics/gen/transpose/4ce359.wgsl
+++ b/test/intrinsics/gen/transpose/4ce359.wgsl
@@ -28,18 +28,18 @@
   var res: mat4x2<f32> = transpose(mat2x4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_4ce359();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   transpose_4ce359();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   transpose_4ce359();
 }
diff --git a/test/intrinsics/gen/transpose/4ce359.wgsl.expected.wgsl b/test/intrinsics/gen/transpose/4ce359.wgsl.expected.wgsl
index 92bc18e..a4123d5 100644
--- a/test/intrinsics/gen/transpose/4ce359.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/transpose/4ce359.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : mat4x2<f32> = transpose(mat2x4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_4ce359();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   transpose_4ce359();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   transpose_4ce359();
 }
diff --git a/test/intrinsics/gen/transpose/4dc9a1.wgsl b/test/intrinsics/gen/transpose/4dc9a1.wgsl
index 492bef4..f98f9e2 100644
--- a/test/intrinsics/gen/transpose/4dc9a1.wgsl
+++ b/test/intrinsics/gen/transpose/4dc9a1.wgsl
@@ -28,18 +28,18 @@
   var res: mat3x2<f32> = transpose(mat2x3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_4dc9a1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   transpose_4dc9a1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   transpose_4dc9a1();
 }
diff --git a/test/intrinsics/gen/transpose/4dc9a1.wgsl.expected.wgsl b/test/intrinsics/gen/transpose/4dc9a1.wgsl.expected.wgsl
index 1c5ca70..9a579e0 100644
--- a/test/intrinsics/gen/transpose/4dc9a1.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/transpose/4dc9a1.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : mat3x2<f32> = transpose(mat2x3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_4dc9a1();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   transpose_4dc9a1();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   transpose_4dc9a1();
 }
diff --git a/test/intrinsics/gen/transpose/854336.wgsl b/test/intrinsics/gen/transpose/854336.wgsl
index 88838ca..9dccf31 100644
--- a/test/intrinsics/gen/transpose/854336.wgsl
+++ b/test/intrinsics/gen/transpose/854336.wgsl
@@ -28,18 +28,18 @@
   var res: mat3x3<f32> = transpose(mat3x3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_854336();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   transpose_854336();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   transpose_854336();
 }
diff --git a/test/intrinsics/gen/transpose/854336.wgsl.expected.wgsl b/test/intrinsics/gen/transpose/854336.wgsl.expected.wgsl
index f00a06d..9eac4c0 100644
--- a/test/intrinsics/gen/transpose/854336.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/transpose/854336.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : mat3x3<f32> = transpose(mat3x3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_854336();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   transpose_854336();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   transpose_854336();
 }
diff --git a/test/intrinsics/gen/transpose/c1b600.wgsl b/test/intrinsics/gen/transpose/c1b600.wgsl
index cbb790f..e0fc4fc 100644
--- a/test/intrinsics/gen/transpose/c1b600.wgsl
+++ b/test/intrinsics/gen/transpose/c1b600.wgsl
@@ -28,18 +28,18 @@
   var res: mat4x4<f32> = transpose(mat4x4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_c1b600();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   transpose_c1b600();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   transpose_c1b600();
 }
diff --git a/test/intrinsics/gen/transpose/c1b600.wgsl.expected.wgsl b/test/intrinsics/gen/transpose/c1b600.wgsl.expected.wgsl
index 5bf3104..f391f5c 100644
--- a/test/intrinsics/gen/transpose/c1b600.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/transpose/c1b600.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : mat4x4<f32> = transpose(mat4x4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_c1b600();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   transpose_c1b600();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   transpose_c1b600();
 }
diff --git a/test/intrinsics/gen/transpose/d8f8ba.wgsl b/test/intrinsics/gen/transpose/d8f8ba.wgsl
index ba8e6d8..a09be46 100644
--- a/test/intrinsics/gen/transpose/d8f8ba.wgsl
+++ b/test/intrinsics/gen/transpose/d8f8ba.wgsl
@@ -28,18 +28,18 @@
   var res: mat4x3<f32> = transpose(mat3x4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_d8f8ba();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   transpose_d8f8ba();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   transpose_d8f8ba();
 }
diff --git a/test/intrinsics/gen/transpose/d8f8ba.wgsl.expected.wgsl b/test/intrinsics/gen/transpose/d8f8ba.wgsl.expected.wgsl
index eef54bc..e5af1d4 100644
--- a/test/intrinsics/gen/transpose/d8f8ba.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/transpose/d8f8ba.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : mat4x3<f32> = transpose(mat3x4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_d8f8ba();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   transpose_d8f8ba();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   transpose_d8f8ba();
 }
diff --git a/test/intrinsics/gen/transpose/ed4bdc.wgsl b/test/intrinsics/gen/transpose/ed4bdc.wgsl
index 5b6c2ee..0ed170e 100644
--- a/test/intrinsics/gen/transpose/ed4bdc.wgsl
+++ b/test/intrinsics/gen/transpose/ed4bdc.wgsl
@@ -28,18 +28,18 @@
   var res: mat2x3<f32> = transpose(mat3x2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_ed4bdc();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   transpose_ed4bdc();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   transpose_ed4bdc();
 }
diff --git a/test/intrinsics/gen/transpose/ed4bdc.wgsl.expected.wgsl b/test/intrinsics/gen/transpose/ed4bdc.wgsl.expected.wgsl
index 85faea7..462a2cf 100644
--- a/test/intrinsics/gen/transpose/ed4bdc.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/transpose/ed4bdc.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : mat2x3<f32> = transpose(mat3x2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_ed4bdc();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   transpose_ed4bdc();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   transpose_ed4bdc();
 }
diff --git a/test/intrinsics/gen/trunc/562d05.wgsl b/test/intrinsics/gen/trunc/562d05.wgsl
index b58d624..65a0b42 100644
--- a/test/intrinsics/gen/trunc/562d05.wgsl
+++ b/test/intrinsics/gen/trunc/562d05.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = trunc(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   trunc_562d05();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   trunc_562d05();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   trunc_562d05();
 }
diff --git a/test/intrinsics/gen/trunc/562d05.wgsl.expected.wgsl b/test/intrinsics/gen/trunc/562d05.wgsl.expected.wgsl
index bf15812..cef9697 100644
--- a/test/intrinsics/gen/trunc/562d05.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/trunc/562d05.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = trunc(vec3<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   trunc_562d05();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   trunc_562d05();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   trunc_562d05();
 }
diff --git a/test/intrinsics/gen/trunc/e183aa.wgsl b/test/intrinsics/gen/trunc/e183aa.wgsl
index 4193087..186a1e9 100644
--- a/test/intrinsics/gen/trunc/e183aa.wgsl
+++ b/test/intrinsics/gen/trunc/e183aa.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = trunc(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   trunc_e183aa();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   trunc_e183aa();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   trunc_e183aa();
 }
diff --git a/test/intrinsics/gen/trunc/e183aa.wgsl.expected.wgsl b/test/intrinsics/gen/trunc/e183aa.wgsl.expected.wgsl
index 9524479..94e505f 100644
--- a/test/intrinsics/gen/trunc/e183aa.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/trunc/e183aa.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = trunc(vec4<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   trunc_e183aa();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   trunc_e183aa();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   trunc_e183aa();
 }
diff --git a/test/intrinsics/gen/trunc/eb83df.wgsl b/test/intrinsics/gen/trunc/eb83df.wgsl
index 665f857..4da7b28 100644
--- a/test/intrinsics/gen/trunc/eb83df.wgsl
+++ b/test/intrinsics/gen/trunc/eb83df.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = trunc(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   trunc_eb83df();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   trunc_eb83df();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   trunc_eb83df();
 }
diff --git a/test/intrinsics/gen/trunc/eb83df.wgsl.expected.wgsl b/test/intrinsics/gen/trunc/eb83df.wgsl.expected.wgsl
index d5c576f..7392b6c 100644
--- a/test/intrinsics/gen/trunc/eb83df.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/trunc/eb83df.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = trunc(1.0);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   trunc_eb83df();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   trunc_eb83df();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   trunc_eb83df();
 }
diff --git a/test/intrinsics/gen/trunc/f370d3.wgsl b/test/intrinsics/gen/trunc/f370d3.wgsl
index a46eb93..0587914 100644
--- a/test/intrinsics/gen/trunc/f370d3.wgsl
+++ b/test/intrinsics/gen/trunc/f370d3.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = trunc(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   trunc_f370d3();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   trunc_f370d3();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   trunc_f370d3();
 }
diff --git a/test/intrinsics/gen/trunc/f370d3.wgsl.expected.wgsl b/test/intrinsics/gen/trunc/f370d3.wgsl.expected.wgsl
index 11cb91b..8393d97 100644
--- a/test/intrinsics/gen/trunc/f370d3.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/trunc/f370d3.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = trunc(vec2<f32>());
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   trunc_f370d3();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   trunc_f370d3();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   trunc_f370d3();
 }
diff --git a/test/intrinsics/gen/unpack2x16float/32a5cf.wgsl b/test/intrinsics/gen/unpack2x16float/32a5cf.wgsl
index bd2aa9f..db4b36b 100644
--- a/test/intrinsics/gen/unpack2x16float/32a5cf.wgsl
+++ b/test/intrinsics/gen/unpack2x16float/32a5cf.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = unpack2x16float(1u);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   unpack2x16float_32a5cf();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   unpack2x16float_32a5cf();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   unpack2x16float_32a5cf();
 }
diff --git a/test/intrinsics/gen/unpack2x16float/32a5cf.wgsl.expected.wgsl b/test/intrinsics/gen/unpack2x16float/32a5cf.wgsl.expected.wgsl
index 768b0cd..fac9058 100644
--- a/test/intrinsics/gen/unpack2x16float/32a5cf.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/unpack2x16float/32a5cf.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = unpack2x16float(1u);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   unpack2x16float_32a5cf();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   unpack2x16float_32a5cf();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   unpack2x16float_32a5cf();
 }
diff --git a/test/intrinsics/gen/unpack2x16snorm/b4aea6.wgsl b/test/intrinsics/gen/unpack2x16snorm/b4aea6.wgsl
index 4292645..0ff4ddd 100644
--- a/test/intrinsics/gen/unpack2x16snorm/b4aea6.wgsl
+++ b/test/intrinsics/gen/unpack2x16snorm/b4aea6.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = unpack2x16snorm(1u);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   unpack2x16snorm_b4aea6();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   unpack2x16snorm_b4aea6();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   unpack2x16snorm_b4aea6();
 }
diff --git a/test/intrinsics/gen/unpack2x16snorm/b4aea6.wgsl.expected.wgsl b/test/intrinsics/gen/unpack2x16snorm/b4aea6.wgsl.expected.wgsl
index 144bba7..a97f875 100644
--- a/test/intrinsics/gen/unpack2x16snorm/b4aea6.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/unpack2x16snorm/b4aea6.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = unpack2x16snorm(1u);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   unpack2x16snorm_b4aea6();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   unpack2x16snorm_b4aea6();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   unpack2x16snorm_b4aea6();
 }
diff --git a/test/intrinsics/gen/unpack2x16unorm/7699c0.wgsl b/test/intrinsics/gen/unpack2x16unorm/7699c0.wgsl
index 0961fa6..7a5e3ad 100644
--- a/test/intrinsics/gen/unpack2x16unorm/7699c0.wgsl
+++ b/test/intrinsics/gen/unpack2x16unorm/7699c0.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = unpack2x16unorm(1u);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   unpack2x16unorm_7699c0();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   unpack2x16unorm_7699c0();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   unpack2x16unorm_7699c0();
 }
diff --git a/test/intrinsics/gen/unpack2x16unorm/7699c0.wgsl.expected.wgsl b/test/intrinsics/gen/unpack2x16unorm/7699c0.wgsl.expected.wgsl
index b4ea311..784f95a 100644
--- a/test/intrinsics/gen/unpack2x16unorm/7699c0.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/unpack2x16unorm/7699c0.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = unpack2x16unorm(1u);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   unpack2x16unorm_7699c0();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   unpack2x16unorm_7699c0();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   unpack2x16unorm_7699c0();
 }
diff --git a/test/intrinsics/gen/unpack4x8snorm/523fb3.wgsl b/test/intrinsics/gen/unpack4x8snorm/523fb3.wgsl
index 5262a7a..0692bf2 100644
--- a/test/intrinsics/gen/unpack4x8snorm/523fb3.wgsl
+++ b/test/intrinsics/gen/unpack4x8snorm/523fb3.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = unpack4x8snorm(1u);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   unpack4x8snorm_523fb3();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   unpack4x8snorm_523fb3();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   unpack4x8snorm_523fb3();
 }
diff --git a/test/intrinsics/gen/unpack4x8snorm/523fb3.wgsl.expected.wgsl b/test/intrinsics/gen/unpack4x8snorm/523fb3.wgsl.expected.wgsl
index a2f5337..d3baad3 100644
--- a/test/intrinsics/gen/unpack4x8snorm/523fb3.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/unpack4x8snorm/523fb3.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = unpack4x8snorm(1u);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   unpack4x8snorm_523fb3();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   unpack4x8snorm_523fb3();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   unpack4x8snorm_523fb3();
 }
diff --git a/test/intrinsics/gen/unpack4x8unorm/750c74.wgsl b/test/intrinsics/gen/unpack4x8unorm/750c74.wgsl
index 2c95b9d..f0fcae3 100644
--- a/test/intrinsics/gen/unpack4x8unorm/750c74.wgsl
+++ b/test/intrinsics/gen/unpack4x8unorm/750c74.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = unpack4x8unorm(1u);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   unpack4x8unorm_750c74();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   unpack4x8unorm_750c74();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   unpack4x8unorm_750c74();
 }
diff --git a/test/intrinsics/gen/unpack4x8unorm/750c74.wgsl.expected.wgsl b/test/intrinsics/gen/unpack4x8unorm/750c74.wgsl.expected.wgsl
index 45f934a..bfedafb 100644
--- a/test/intrinsics/gen/unpack4x8unorm/750c74.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/unpack4x8unorm/750c74.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = unpack4x8unorm(1u);
 }
 
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   unpack4x8unorm_750c74();
   return vec4<f32>();
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   unpack4x8unorm_750c74();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   unpack4x8unorm_750c74();
 }
diff --git a/test/intrinsics/gen/workgroupBarrier/a17f7f.wgsl b/test/intrinsics/gen/workgroupBarrier/a17f7f.wgsl
index 983f114..a006547 100644
--- a/test/intrinsics/gen/workgroupBarrier/a17f7f.wgsl
+++ b/test/intrinsics/gen/workgroupBarrier/a17f7f.wgsl
@@ -28,7 +28,7 @@
   workgroupBarrier();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   workgroupBarrier_a17f7f();
 }
diff --git a/test/intrinsics/gen/workgroupBarrier/a17f7f.wgsl.expected.wgsl b/test/intrinsics/gen/workgroupBarrier/a17f7f.wgsl.expected.wgsl
index 771ed9a..34db6c8 100644
--- a/test/intrinsics/gen/workgroupBarrier/a17f7f.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/workgroupBarrier/a17f7f.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   workgroupBarrier();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   workgroupBarrier_a17f7f();
 }
diff --git a/test/intrinsics/ignore/call.wgsl b/test/intrinsics/ignore/call.wgsl
index b3ff386..f7c03df 100644
--- a/test/intrinsics/ignore/call.wgsl
+++ b/test/intrinsics/ignore/call.wgsl
@@ -2,7 +2,7 @@
     return a * b + c;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     ignore(f(1, 2, 3));
 }
diff --git a/test/intrinsics/ignore/call.wgsl.expected.wgsl b/test/intrinsics/ignore/call.wgsl.expected.wgsl
index 4ab9b94..49c50c7 100644
--- a/test/intrinsics/ignore/call.wgsl.expected.wgsl
+++ b/test/intrinsics/ignore/call.wgsl.expected.wgsl
@@ -6,7 +6,7 @@
   return ((a * b) + c);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   ignore(f(1, 2, 3));
 }
diff --git a/test/intrinsics/ignore/runtime_array.wgsl b/test/intrinsics/ignore/runtime_array.wgsl
index b7cc1e7..c76ba03 100644
--- a/test/intrinsics/ignore/runtime_array.wgsl
+++ b/test/intrinsics/ignore/runtime_array.wgsl
@@ -2,9 +2,9 @@
     arr : array<i32>;
 };
 
-[[binding(0), group(0)]] var<storage, read_write> s : S;
+@binding(0) @group(0) var<storage, read_write> s : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     ignore(s.arr);
 }
diff --git a/test/intrinsics/ignore/runtime_array.wgsl.expected.wgsl b/test/intrinsics/ignore/runtime_array.wgsl.expected.wgsl
index e58a70c..310405a 100644
--- a/test/intrinsics/ignore/runtime_array.wgsl.expected.wgsl
+++ b/test/intrinsics/ignore/runtime_array.wgsl.expected.wgsl
@@ -6,9 +6,9 @@
   arr : array<i32>;
 }
 
-[[binding(0), group(0)]] var<storage, read_write> s : S;
+@binding(0) @group(0) var<storage, read_write> s : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   ignore(s.arr);
 }
diff --git a/test/intrinsics/ignore/storage_buffer.wgsl b/test/intrinsics/ignore/storage_buffer.wgsl
index be63c03..7243c04 100644
--- a/test/intrinsics/ignore/storage_buffer.wgsl
+++ b/test/intrinsics/ignore/storage_buffer.wgsl
@@ -2,9 +2,9 @@
     i : i32;
 };
 
-[[binding(0), group(0)]] var<storage, read_write> s : S;
+@binding(0) @group(0) var<storage, read_write> s : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     ignore(s);
     ignore(s.i);
diff --git a/test/intrinsics/ignore/storage_buffer.wgsl.expected.wgsl b/test/intrinsics/ignore/storage_buffer.wgsl.expected.wgsl
index 0f2f5e9..4e69a8d 100644
--- a/test/intrinsics/ignore/storage_buffer.wgsl.expected.wgsl
+++ b/test/intrinsics/ignore/storage_buffer.wgsl.expected.wgsl
@@ -10,9 +10,9 @@
   i : i32;
 }
 
-[[binding(0), group(0)]] var<storage, read_write> s : S;
+@binding(0) @group(0) var<storage, read_write> s : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   ignore(s);
   ignore(s.i);
diff --git a/test/intrinsics/ignore/uniform_buffer.wgsl b/test/intrinsics/ignore/uniform_buffer.wgsl
index bf92e75..860867a 100644
--- a/test/intrinsics/ignore/uniform_buffer.wgsl
+++ b/test/intrinsics/ignore/uniform_buffer.wgsl
@@ -2,9 +2,9 @@
     i : i32;
 };
 
-[[binding(0), group(0)]] var<uniform> u : S;
+@binding(0) @group(0) var<uniform> u : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     ignore(u);
     ignore(u.i);
diff --git a/test/intrinsics/ignore/uniform_buffer.wgsl.expected.wgsl b/test/intrinsics/ignore/uniform_buffer.wgsl.expected.wgsl
index 72a1efe..7a25674 100644
--- a/test/intrinsics/ignore/uniform_buffer.wgsl.expected.wgsl
+++ b/test/intrinsics/ignore/uniform_buffer.wgsl.expected.wgsl
@@ -10,9 +10,9 @@
   i : i32;
 }
 
-[[binding(0), group(0)]] var<uniform> u : S;
+@binding(0) @group(0) var<uniform> u : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   ignore(u);
   ignore(u.i);
diff --git a/test/intrinsics/intrinsics.wgsl.tmpl b/test/intrinsics/intrinsics.wgsl.tmpl
index 16f72c3..254fb16 100644
--- a/test/intrinsics/intrinsics.wgsl.tmpl
+++ b/test/intrinsics/intrinsics.wgsl.tmpl
@@ -41,7 +41,7 @@
 struct SB_RW {
 {{- $sb_rw_fields -}}
 };
-[[group(0), binding(0)]] var<storage, read_write> sb_rw : SB_RW;
+@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW;
 {{    end -}}
 
 {{- /* Generate RO storage buffer parameters */ -}}
@@ -54,7 +54,7 @@
 struct SB_RO {
 {{- $sb_ro_fields -}}
 };
-[[group(0), binding(1)]] var<storage, read> sb_ro : SB_RO;
+@group(0) @binding(1) var<storage, read> sb_ro : SB_RO;
 {{    end -}}
 
 {{- /* Generate uniform buffer parameters */ -}}
@@ -67,7 +67,7 @@
 struct UB {
 {{- $ub_fields -}}
 };
-[[group(0), binding(1)]] var<uniform> ub : UB;
+@group(0) @binding(1) var<uniform> ub : UB;
 {{    end -}}
 
 {{- /* Generate module-scoped handle variables */ -}}
@@ -76,7 +76,7 @@
 {{-     if eq "ptr" $p.Type.Target.Name -}}
 {{-       $el_type := Eval "Type" (index $p.Type.TemplateArguments 1)}}
 {{-       if eq "handle" $class -}}
-            [[group(1), binding({{$i}})]] var arg_{{$i}}: {{$el_type}};
+            @group(1) @binding({{$i}}) var arg_{{$i}}: {{$el_type}};
 {{          $args.Put $i (printf "&arg_%v" $i) -}}
 {{-       else if eq "workgroup" $class -}}
             var<workgroup> arg_{{$i}}: {{$el_type}};
@@ -88,7 +88,7 @@
 {{-     else -}}
 {{-       $type := Eval "Type" $p.Type}}
 {{-       if eq "handle" $class -}}
-            [[group(1), binding({{$i}})]] var arg_{{$i}}: {{$type}};
+            @group(1) @binding({{$i}}) var arg_{{$i}}: {{$type}};
 {{          $args.Put $i (printf "arg_%v" $i) -}}
 {{-       else if eq "workgroup" $class -}}
             var<workgroup> arg_{{$i}}: {{$type}};
@@ -131,22 +131,22 @@
 {{/*new line*/ -}}
 
 {{- if .CanBeUsedInStage.Vertex }}
-[[stage(vertex)]]
-fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vertex_main() -> @builtin(position) vec4<f32> {
   {{$permutation}}();
   return vec4<f32>();
 }
 {{ end -}}
 
 {{- if .CanBeUsedInStage.Fragment }}
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   {{$permutation}}();
 }
 {{ end -}}
 
 {{- if .CanBeUsedInStage.Compute }}
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn compute_main() {
   {{$permutation}}();
 }
diff --git a/test/intrinsics/modf.wgsl b/test/intrinsics/modf.wgsl
index f8b1cf3..6991b74 100644
--- a/test/intrinsics/modf.wgsl
+++ b/test/intrinsics/modf.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     let res = modf(1.23);
     let fract : f32 = res.fract;
diff --git a/test/intrinsics/modf.wgsl.expected.wgsl b/test/intrinsics/modf.wgsl.expected.wgsl
index ba6a7c6..8e95d07 100644
--- a/test/intrinsics/modf.wgsl.expected.wgsl
+++ b/test/intrinsics/modf.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let res = modf(1.230000019);
   let fract : f32 = res.fract;
diff --git a/test/intrinsics/radians.spvasm.expected.wgsl b/test/intrinsics/radians.spvasm.expected.wgsl
index 8edc85e..1203bfe 100644
--- a/test/intrinsics/radians.spvasm.expected.wgsl
+++ b/test/intrinsics/radians.spvasm.expected.wgsl
@@ -7,7 +7,7 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   main_1();
 }
diff --git a/test/intrinsics/repeated_use.wgsl b/test/intrinsics/repeated_use.wgsl
index 8a5e175..0ca4cad 100644
--- a/test/intrinsics/repeated_use.wgsl
+++ b/test/intrinsics/repeated_use.wgsl
@@ -1,6 +1,6 @@
 // Check that for backends that generate intrinsic helpers, repeated use of the
 // same intrinsic overload results in single helper being generated.
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = isNormal(vec4<f32>());
     _ = isNormal(vec4<f32>(1.));
diff --git a/test/intrinsics/repeated_use.wgsl.expected.wgsl b/test/intrinsics/repeated_use.wgsl.expected.wgsl
index a654f4b..3f21e25 100644
--- a/test/intrinsics/repeated_use.wgsl.expected.wgsl
+++ b/test/intrinsics/repeated_use.wgsl.expected.wgsl
@@ -46,7 +46,7 @@
     _ = isNormal(3.);
         ^^^^^^^^
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = isNormal(vec4<f32>());
   _ = isNormal(vec4<f32>(1.0));
diff --git a/test/intrinsics/textureDimensions/depth_ms.spvasm.expected.wgsl b/test/intrinsics/textureDimensions/depth_ms.spvasm.expected.wgsl
index d7e9e8b..f6e2411 100644
--- a/test/intrinsics/textureDimensions/depth_ms.spvasm.expected.wgsl
+++ b/test/intrinsics/textureDimensions/depth_ms.spvasm.expected.wgsl
@@ -1,4 +1,4 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_multisampled_2d;
+@group(1) @binding(0) var arg_0 : texture_depth_multisampled_2d;
 
 var<private> tint_symbol_1 : vec4<f32> = vec4<f32>();
 
@@ -21,11 +21,11 @@
 }
 
 struct vertex_main_out {
-  [[builtin(position)]]
+  @builtin(position)
   tint_symbol_1_1 : vec4<f32>;
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn vertex_main() -> vertex_main_out {
   vertex_main_1();
   return vertex_main_out(tint_symbol_1);
@@ -36,7 +36,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fragment_main_1();
 }
@@ -46,7 +46,7 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn compute_main() {
   compute_main_1();
 }
diff --git a/test/intrinsics/textureGather/f32/alpha.wgsl b/test/intrinsics/textureGather/f32/alpha.wgsl
index d61f99b..1336988 100644
--- a/test/intrinsics/textureGather/f32/alpha.wgsl
+++ b/test/intrinsics/textureGather/f32/alpha.wgsl
@@ -1,7 +1,7 @@
-[[group(1), binding(0)]] var t : texture_2d<f32>;
-[[group(1), binding(1)]] var s : sampler;
+@group(1) @binding(0) var t : texture_2d<f32>;
+@group(1) @binding(1) var s : sampler;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   var res : vec4<f32> = textureGather(3, t, s, vec2<f32>());
 }
diff --git a/test/intrinsics/textureGather/f32/alpha.wgsl.expected.wgsl b/test/intrinsics/textureGather/f32/alpha.wgsl.expected.wgsl
index fada6d1..3cf1392 100644
--- a/test/intrinsics/textureGather/f32/alpha.wgsl.expected.wgsl
+++ b/test/intrinsics/textureGather/f32/alpha.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
-[[group(1), binding(0)]] var t : texture_2d<f32>;
+@group(1) @binding(0) var t : texture_2d<f32>;
 
-[[group(1), binding(1)]] var s : sampler;
+@group(1) @binding(1) var s : sampler;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   var res : vec4<f32> = textureGather(3, t, s, vec2<f32>());
 }
diff --git a/test/intrinsics/textureGather/f32/blue.wgsl b/test/intrinsics/textureGather/f32/blue.wgsl
index b8251ee..f31387b 100644
--- a/test/intrinsics/textureGather/f32/blue.wgsl
+++ b/test/intrinsics/textureGather/f32/blue.wgsl
@@ -1,7 +1,7 @@
-[[group(1), binding(0)]] var t : texture_2d<f32>;
-[[group(1), binding(1)]] var s : sampler;
+@group(1) @binding(0) var t : texture_2d<f32>;
+@group(1) @binding(1) var s : sampler;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   var res : vec4<f32> = textureGather(2, t, s, vec2<f32>());
 }
diff --git a/test/intrinsics/textureGather/f32/blue.wgsl.expected.wgsl b/test/intrinsics/textureGather/f32/blue.wgsl.expected.wgsl
index 18cc654..2512919 100644
--- a/test/intrinsics/textureGather/f32/blue.wgsl.expected.wgsl
+++ b/test/intrinsics/textureGather/f32/blue.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
-[[group(1), binding(0)]] var t : texture_2d<f32>;
+@group(1) @binding(0) var t : texture_2d<f32>;
 
-[[group(1), binding(1)]] var s : sampler;
+@group(1) @binding(1) var s : sampler;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   var res : vec4<f32> = textureGather(2, t, s, vec2<f32>());
 }
diff --git a/test/intrinsics/textureGather/f32/green.wgsl b/test/intrinsics/textureGather/f32/green.wgsl
index f0960ce..c0574ca 100644
--- a/test/intrinsics/textureGather/f32/green.wgsl
+++ b/test/intrinsics/textureGather/f32/green.wgsl
@@ -1,7 +1,7 @@
-[[group(1), binding(0)]] var t : texture_2d<f32>;
-[[group(1), binding(1)]] var s : sampler;
+@group(1) @binding(0) var t : texture_2d<f32>;
+@group(1) @binding(1) var s : sampler;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   var res : vec4<f32> = textureGather(1, t, s, vec2<f32>());
 }
diff --git a/test/intrinsics/textureGather/f32/green.wgsl.expected.wgsl b/test/intrinsics/textureGather/f32/green.wgsl.expected.wgsl
index 778bc1c..524c0c4 100644
--- a/test/intrinsics/textureGather/f32/green.wgsl.expected.wgsl
+++ b/test/intrinsics/textureGather/f32/green.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
-[[group(1), binding(0)]] var t : texture_2d<f32>;
+@group(1) @binding(0) var t : texture_2d<f32>;
 
-[[group(1), binding(1)]] var s : sampler;
+@group(1) @binding(1) var s : sampler;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   var res : vec4<f32> = textureGather(1, t, s, vec2<f32>());
 }
diff --git a/test/intrinsics/textureGather/f32/red.wgsl b/test/intrinsics/textureGather/f32/red.wgsl
index 89772c9..4eb8c60 100644
--- a/test/intrinsics/textureGather/f32/red.wgsl
+++ b/test/intrinsics/textureGather/f32/red.wgsl
@@ -1,7 +1,7 @@
-[[group(1), binding(0)]] var t : texture_2d<f32>;
-[[group(1), binding(1)]] var s : sampler;
+@group(1) @binding(0) var t : texture_2d<f32>;
+@group(1) @binding(1) var s : sampler;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   var res : vec4<f32> = textureGather(0, t, s, vec2<f32>());
 }
diff --git a/test/intrinsics/textureGather/f32/red.wgsl.expected.wgsl b/test/intrinsics/textureGather/f32/red.wgsl.expected.wgsl
index 4853506..0524429 100644
--- a/test/intrinsics/textureGather/f32/red.wgsl.expected.wgsl
+++ b/test/intrinsics/textureGather/f32/red.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
-[[group(1), binding(0)]] var t : texture_2d<f32>;
+@group(1) @binding(0) var t : texture_2d<f32>;
 
-[[group(1), binding(1)]] var s : sampler;
+@group(1) @binding(1) var s : sampler;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   var res : vec4<f32> = textureGather(0, t, s, vec2<f32>());
 }
diff --git a/test/intrinsics/textureGather/i32/alpha.wgsl b/test/intrinsics/textureGather/i32/alpha.wgsl
index d83c3ca..42133c9 100644
--- a/test/intrinsics/textureGather/i32/alpha.wgsl
+++ b/test/intrinsics/textureGather/i32/alpha.wgsl
@@ -1,7 +1,7 @@
-[[group(1), binding(0)]] var t : texture_2d<i32>;
-[[group(1), binding(1)]] var s : sampler;
+@group(1) @binding(0) var t : texture_2d<i32>;
+@group(1) @binding(1) var s : sampler;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   var res : vec4<i32> = textureGather(3, t, s, vec2<f32>());
 }
diff --git a/test/intrinsics/textureGather/i32/alpha.wgsl.expected.wgsl b/test/intrinsics/textureGather/i32/alpha.wgsl.expected.wgsl
index 206d816..35d727c 100644
--- a/test/intrinsics/textureGather/i32/alpha.wgsl.expected.wgsl
+++ b/test/intrinsics/textureGather/i32/alpha.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
-[[group(1), binding(0)]] var t : texture_2d<i32>;
+@group(1) @binding(0) var t : texture_2d<i32>;
 
-[[group(1), binding(1)]] var s : sampler;
+@group(1) @binding(1) var s : sampler;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   var res : vec4<i32> = textureGather(3, t, s, vec2<f32>());
 }
diff --git a/test/intrinsics/textureGather/i32/blue.wgsl b/test/intrinsics/textureGather/i32/blue.wgsl
index 13275af..396dd52 100644
--- a/test/intrinsics/textureGather/i32/blue.wgsl
+++ b/test/intrinsics/textureGather/i32/blue.wgsl
@@ -1,7 +1,7 @@
-[[group(1), binding(0)]] var t : texture_2d<i32>;
-[[group(1), binding(1)]] var s : sampler;
+@group(1) @binding(0) var t : texture_2d<i32>;
+@group(1) @binding(1) var s : sampler;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   var res : vec4<i32> = textureGather(2, t, s, vec2<f32>());
 }
diff --git a/test/intrinsics/textureGather/i32/blue.wgsl.expected.wgsl b/test/intrinsics/textureGather/i32/blue.wgsl.expected.wgsl
index af7f095..116439f 100644
--- a/test/intrinsics/textureGather/i32/blue.wgsl.expected.wgsl
+++ b/test/intrinsics/textureGather/i32/blue.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
-[[group(1), binding(0)]] var t : texture_2d<i32>;
+@group(1) @binding(0) var t : texture_2d<i32>;
 
-[[group(1), binding(1)]] var s : sampler;
+@group(1) @binding(1) var s : sampler;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   var res : vec4<i32> = textureGather(2, t, s, vec2<f32>());
 }
diff --git a/test/intrinsics/textureGather/i32/green.wgsl b/test/intrinsics/textureGather/i32/green.wgsl
index ecf2d65..ee162d1 100644
--- a/test/intrinsics/textureGather/i32/green.wgsl
+++ b/test/intrinsics/textureGather/i32/green.wgsl
@@ -1,7 +1,7 @@
-[[group(1), binding(0)]] var t : texture_2d<i32>;
-[[group(1), binding(1)]] var s : sampler;
+@group(1) @binding(0) var t : texture_2d<i32>;
+@group(1) @binding(1) var s : sampler;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   var res : vec4<i32> = textureGather(1, t, s, vec2<f32>());
 }
diff --git a/test/intrinsics/textureGather/i32/green.wgsl.expected.wgsl b/test/intrinsics/textureGather/i32/green.wgsl.expected.wgsl
index 862c644..6f75122 100644
--- a/test/intrinsics/textureGather/i32/green.wgsl.expected.wgsl
+++ b/test/intrinsics/textureGather/i32/green.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
-[[group(1), binding(0)]] var t : texture_2d<i32>;
+@group(1) @binding(0) var t : texture_2d<i32>;
 
-[[group(1), binding(1)]] var s : sampler;
+@group(1) @binding(1) var s : sampler;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   var res : vec4<i32> = textureGather(1, t, s, vec2<f32>());
 }
diff --git a/test/intrinsics/textureGather/i32/red.wgsl b/test/intrinsics/textureGather/i32/red.wgsl
index 1516eea..60117f7 100644
--- a/test/intrinsics/textureGather/i32/red.wgsl
+++ b/test/intrinsics/textureGather/i32/red.wgsl
@@ -1,7 +1,7 @@
-[[group(1), binding(0)]] var t : texture_2d<i32>;
-[[group(1), binding(1)]] var s : sampler;
+@group(1) @binding(0) var t : texture_2d<i32>;
+@group(1) @binding(1) var s : sampler;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   var res : vec4<i32> = textureGather(0, t, s, vec2<f32>());
 }
diff --git a/test/intrinsics/textureGather/i32/red.wgsl.expected.wgsl b/test/intrinsics/textureGather/i32/red.wgsl.expected.wgsl
index 7a505f6..c2552b0 100644
--- a/test/intrinsics/textureGather/i32/red.wgsl.expected.wgsl
+++ b/test/intrinsics/textureGather/i32/red.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
-[[group(1), binding(0)]] var t : texture_2d<i32>;
+@group(1) @binding(0) var t : texture_2d<i32>;
 
-[[group(1), binding(1)]] var s : sampler;
+@group(1) @binding(1) var s : sampler;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   var res : vec4<i32> = textureGather(0, t, s, vec2<f32>());
 }
diff --git a/test/intrinsics/textureGather/u32/alpha.wgsl b/test/intrinsics/textureGather/u32/alpha.wgsl
index 9aeef80..adcc5fd 100644
--- a/test/intrinsics/textureGather/u32/alpha.wgsl
+++ b/test/intrinsics/textureGather/u32/alpha.wgsl
@@ -1,7 +1,7 @@
-[[group(1), binding(0)]] var t : texture_2d<u32>;
-[[group(1), binding(1)]] var s : sampler;
+@group(1) @binding(0) var t : texture_2d<u32>;
+@group(1) @binding(1) var s : sampler;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   var res : vec4<u32> = textureGather(3, t, s, vec2<f32>());
 }
diff --git a/test/intrinsics/textureGather/u32/alpha.wgsl.expected.wgsl b/test/intrinsics/textureGather/u32/alpha.wgsl.expected.wgsl
index fc21f33..496586d 100644
--- a/test/intrinsics/textureGather/u32/alpha.wgsl.expected.wgsl
+++ b/test/intrinsics/textureGather/u32/alpha.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
-[[group(1), binding(0)]] var t : texture_2d<u32>;
+@group(1) @binding(0) var t : texture_2d<u32>;
 
-[[group(1), binding(1)]] var s : sampler;
+@group(1) @binding(1) var s : sampler;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   var res : vec4<u32> = textureGather(3, t, s, vec2<f32>());
 }
diff --git a/test/intrinsics/textureGather/u32/blue.wgsl b/test/intrinsics/textureGather/u32/blue.wgsl
index 9751b7c..30e266c 100644
--- a/test/intrinsics/textureGather/u32/blue.wgsl
+++ b/test/intrinsics/textureGather/u32/blue.wgsl
@@ -1,7 +1,7 @@
-[[group(1), binding(0)]] var t : texture_2d<u32>;
-[[group(1), binding(1)]] var s : sampler;
+@group(1) @binding(0) var t : texture_2d<u32>;
+@group(1) @binding(1) var s : sampler;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   var res : vec4<u32> = textureGather(2, t, s, vec2<f32>());
 }
diff --git a/test/intrinsics/textureGather/u32/blue.wgsl.expected.wgsl b/test/intrinsics/textureGather/u32/blue.wgsl.expected.wgsl
index 5fdeb7e..eb2c3e1 100644
--- a/test/intrinsics/textureGather/u32/blue.wgsl.expected.wgsl
+++ b/test/intrinsics/textureGather/u32/blue.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
-[[group(1), binding(0)]] var t : texture_2d<u32>;
+@group(1) @binding(0) var t : texture_2d<u32>;
 
-[[group(1), binding(1)]] var s : sampler;
+@group(1) @binding(1) var s : sampler;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   var res : vec4<u32> = textureGather(2, t, s, vec2<f32>());
 }
diff --git a/test/intrinsics/textureGather/u32/green.wgsl b/test/intrinsics/textureGather/u32/green.wgsl
index 83edac0..5b9ae18 100644
--- a/test/intrinsics/textureGather/u32/green.wgsl
+++ b/test/intrinsics/textureGather/u32/green.wgsl
@@ -1,7 +1,7 @@
-[[group(1), binding(0)]] var t : texture_2d<u32>;
-[[group(1), binding(1)]] var s : sampler;
+@group(1) @binding(0) var t : texture_2d<u32>;
+@group(1) @binding(1) var s : sampler;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   var res : vec4<u32> = textureGather(1, t, s, vec2<f32>());
 }
diff --git a/test/intrinsics/textureGather/u32/green.wgsl.expected.wgsl b/test/intrinsics/textureGather/u32/green.wgsl.expected.wgsl
index 17b8423..935c1e2 100644
--- a/test/intrinsics/textureGather/u32/green.wgsl.expected.wgsl
+++ b/test/intrinsics/textureGather/u32/green.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
-[[group(1), binding(0)]] var t : texture_2d<u32>;
+@group(1) @binding(0) var t : texture_2d<u32>;
 
-[[group(1), binding(1)]] var s : sampler;
+@group(1) @binding(1) var s : sampler;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   var res : vec4<u32> = textureGather(1, t, s, vec2<f32>());
 }
diff --git a/test/intrinsics/textureGather/u32/red.wgsl b/test/intrinsics/textureGather/u32/red.wgsl
index e3ca7f8..70ec158 100644
--- a/test/intrinsics/textureGather/u32/red.wgsl
+++ b/test/intrinsics/textureGather/u32/red.wgsl
@@ -1,7 +1,7 @@
-[[group(1), binding(0)]] var t : texture_2d<u32>;
-[[group(1), binding(1)]] var s : sampler;
+@group(1) @binding(0) var t : texture_2d<u32>;
+@group(1) @binding(1) var s : sampler;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   var res : vec4<u32> = textureGather(0, t, s, vec2<f32>());
 }
diff --git a/test/intrinsics/textureGather/u32/red.wgsl.expected.wgsl b/test/intrinsics/textureGather/u32/red.wgsl.expected.wgsl
index d3b2be8..528958d 100644
--- a/test/intrinsics/textureGather/u32/red.wgsl.expected.wgsl
+++ b/test/intrinsics/textureGather/u32/red.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
-[[group(1), binding(0)]] var t : texture_2d<u32>;
+@group(1) @binding(0) var t : texture_2d<u32>;
 
-[[group(1), binding(1)]] var s : sampler;
+@group(1) @binding(1) var s : sampler;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   var res : vec4<u32> = textureGather(0, t, s, vec2<f32>());
 }
diff --git a/test/intrinsics/textureLoad/depth_ms.spvasm.expected.wgsl b/test/intrinsics/textureLoad/depth_ms.spvasm.expected.wgsl
index 13f9223..7590a16 100644
--- a/test/intrinsics/textureLoad/depth_ms.spvasm.expected.wgsl
+++ b/test/intrinsics/textureLoad/depth_ms.spvasm.expected.wgsl
@@ -1,4 +1,4 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_multisampled_2d;
+@group(1) @binding(0) var arg_0 : texture_depth_multisampled_2d;
 
 var<private> tint_symbol_1 : vec4<f32> = vec4<f32>();
 
@@ -21,11 +21,11 @@
 }
 
 struct vertex_main_out {
-  [[builtin(position)]]
+  @builtin(position)
   tint_symbol_1_1 : vec4<f32>;
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn vertex_main() -> vertex_main_out {
   vertex_main_1();
   return vertex_main_out(tint_symbol_1);
@@ -36,7 +36,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fragment_main_1();
 }
@@ -46,7 +46,7 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn compute_main() {
   compute_main_1();
 }
diff --git a/test/intrinsics/textureNumSamples/depth_ms.spvasm.expected.wgsl b/test/intrinsics/textureNumSamples/depth_ms.spvasm.expected.wgsl
index bafa3a8..deac9d0 100644
--- a/test/intrinsics/textureNumSamples/depth_ms.spvasm.expected.wgsl
+++ b/test/intrinsics/textureNumSamples/depth_ms.spvasm.expected.wgsl
@@ -1,4 +1,4 @@
-[[group(1), binding(0)]] var arg_0 : texture_depth_multisampled_2d;
+@group(1) @binding(0) var arg_0 : texture_depth_multisampled_2d;
 
 var<private> tint_symbol_1 : vec4<f32> = vec4<f32>();
 
@@ -21,11 +21,11 @@
 }
 
 struct vertex_main_out {
-  [[builtin(position)]]
+  @builtin(position)
   tint_symbol_1_1 : vec4<f32>;
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn vertex_main() -> vertex_main_out {
   vertex_main_1();
   return vertex_main_out(tint_symbol_1);
@@ -36,7 +36,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn fragment_main() {
   fragment_main_1();
 }
@@ -46,7 +46,7 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn compute_main() {
   compute_main_1();
 }
diff --git a/test/layout/storage/mat2x2/f32.wgsl b/test/layout/storage/mat2x2/f32.wgsl
index 2be17c3..3b2c0bf 100644
--- a/test/layout/storage/mat2x2/f32.wgsl
+++ b/test/layout/storage/mat2x2/f32.wgsl
@@ -1,9 +1,9 @@
 struct SSBO {
   m : mat2x2<f32>;
 };
-[[group(0), binding(0)]] var<storage, read_write> ssbo : SSBO;
+@group(0) @binding(0) var<storage, read_write> ssbo : SSBO;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     let v = ssbo.m;
     ssbo.m = v;
diff --git a/test/layout/storage/mat2x2/f32.wgsl.expected.wgsl b/test/layout/storage/mat2x2/f32.wgsl.expected.wgsl
index 9933db6..2cdd7f6 100644
--- a/test/layout/storage/mat2x2/f32.wgsl.expected.wgsl
+++ b/test/layout/storage/mat2x2/f32.wgsl.expected.wgsl
@@ -2,9 +2,9 @@
   m : mat2x2<f32>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> ssbo : SSBO;
+@group(0) @binding(0) var<storage, read_write> ssbo : SSBO;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   let v = ssbo.m;
   ssbo.m = v;
diff --git a/test/layout/storage/mat2x2/stride/16.spvasm.expected.wgsl b/test/layout/storage/mat2x2/stride/16.spvasm.expected.wgsl
index ffb157a..a368ee1 100644
--- a/test/layout/storage/mat2x2/stride/16.spvasm.expected.wgsl
+++ b/test/layout/storage/mat2x2/stride/16.spvasm.expected.wgsl
@@ -1,15 +1,15 @@
 struct SSBO {
-  m : [[stride(16)]] array<vec2<f32>, 2u>;
+  m : @stride(16) array<vec2<f32>, 2u>;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> ssbo : SSBO;
+@group(0) @binding(0) var<storage, read_write> ssbo : SSBO;
 
-fn arr_to_mat2x2_stride_16(arr : [[stride(16)]] array<vec2<f32>, 2u>) -> mat2x2<f32> {
+fn arr_to_mat2x2_stride_16(arr : @stride(16) array<vec2<f32>, 2u>) -> mat2x2<f32> {
   return mat2x2<f32>(arr[0u], arr[1u]);
 }
 
-fn mat2x2_stride_16_to_arr(mat : mat2x2<f32>) -> [[stride(16)]] array<vec2<f32>, 2u> {
-  return [[stride(16)]] array<vec2<f32>, 2u>(mat[0u], mat[1u]);
+fn mat2x2_stride_16_to_arr(mat : mat2x2<f32>) -> @stride(16) array<vec2<f32>, 2u> {
+  return @stride(16) array<vec2<f32>, 2u>(mat[0u], mat[1u]);
 }
 
 fn f_1() {
@@ -18,7 +18,7 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn f() {
   f_1();
 }
diff --git a/test/let/global/global.wgsl b/test/let/global/global.wgsl
index 7928f9b..1dd906d 100644
--- a/test/let/global/global.wgsl
+++ b/test/let/global/global.wgsl
@@ -18,7 +18,7 @@
 let v8 = MyStruct();
 let v9 = MyArray();
 
-[[stage(fragment)]]
-fn main() -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn main() -> @location(0) vec4<f32> {
     return vec4<f32>(0.0,0.0,0.0,0.0);
 }
diff --git a/test/let/global/global.wgsl.expected.wgsl b/test/let/global/global.wgsl.expected.wgsl
index 68c5ae5..60a1e36 100644
--- a/test/let/global/global.wgsl.expected.wgsl
+++ b/test/let/global/global.wgsl.expected.wgsl
@@ -22,7 +22,7 @@
 
 let v9 = MyArray();
 
-[[stage(fragment)]]
-fn main() -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn main() -> @location(0) vec4<f32> {
   return vec4<f32>(0.0, 0.0, 0.0, 0.0);
 }
diff --git a/test/let/inferred/function.wgsl b/test/let/inferred/function.wgsl
index 15fc9fa..cb66845 100644
--- a/test/let/inferred/function.wgsl
+++ b/test/let/inferred/function.wgsl
@@ -33,7 +33,7 @@
     let v15 = ret_MyArray();
 }
 
-[[stage(fragment)]]
-fn main() -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn main() -> @location(0) vec4<f32> {
     return vec4<f32>(0.0,0.0,0.0,0.0);
 }
diff --git a/test/let/inferred/function.wgsl.expected.wgsl b/test/let/inferred/function.wgsl.expected.wgsl
index 4f5b69a..e2f4653 100644
--- a/test/let/inferred/function.wgsl.expected.wgsl
+++ b/test/let/inferred/function.wgsl.expected.wgsl
@@ -42,7 +42,7 @@
   let v15 = ret_MyArray();
 }
 
-[[stage(fragment)]]
-fn main() -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn main() -> @location(0) vec4<f32> {
   return vec4<f32>(0.0, 0.0, 0.0, 0.0);
 }
diff --git a/test/loops/continue_in_switch.wgsl b/test/loops/continue_in_switch.wgsl
index a08c7dd..b523874 100644
--- a/test/loops/continue_in_switch.wgsl
+++ b/test/loops/continue_in_switch.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     for (var i : i32 = 0; i < 4; i = i + 1) {
         switch(i) {
diff --git a/test/loops/continue_in_switch.wgsl.expected.wgsl b/test/loops/continue_in_switch.wgsl.expected.wgsl
index 0d375d4..ab9a029 100644
--- a/test/loops/continue_in_switch.wgsl.expected.wgsl
+++ b/test/loops/continue_in_switch.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   for(var i : i32 = 0; (i < 4); i = (i + 1)) {
     switch(i) {
diff --git a/test/ptr_ref/access/matrix.spvasm.expected.wgsl b/test/ptr_ref/access/matrix.spvasm.expected.wgsl
index 54e50e7..45ab66f 100644
--- a/test/ptr_ref/access/matrix.spvasm.expected.wgsl
+++ b/test/ptr_ref/access/matrix.spvasm.expected.wgsl
@@ -5,7 +5,7 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   main_1();
 }
diff --git a/test/ptr_ref/access/matrix.wgsl b/test/ptr_ref/access/matrix.wgsl
index 1347133..a085846 100644
--- a/test/ptr_ref/access/matrix.wgsl
+++ b/test/ptr_ref/access/matrix.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var m : mat3x3<f32> = mat3x3<f32>(vec3<f32>(1., 2., 3.), vec3<f32>(4., 5., 6.), vec3<f32>(7., 8., 9.));
   let v : ptr<function, vec3<f32>> = &m[1];
diff --git a/test/ptr_ref/access/matrix.wgsl.expected.wgsl b/test/ptr_ref/access/matrix.wgsl.expected.wgsl
index 8356471..110e6e6 100644
--- a/test/ptr_ref/access/matrix.wgsl.expected.wgsl
+++ b/test/ptr_ref/access/matrix.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var m : mat3x3<f32> = mat3x3<f32>(vec3<f32>(1.0, 2.0, 3.0), vec3<f32>(4.0, 5.0, 6.0), vec3<f32>(7.0, 8.0, 9.0));
   let v : ptr<function, vec3<f32>> = &(m[1]);
diff --git a/test/ptr_ref/copy/ptr_copy.spvasm.expected.wgsl b/test/ptr_ref/copy/ptr_copy.spvasm.expected.wgsl
index 512d5c8..82d9c5a 100644
--- a/test/ptr_ref/copy/ptr_copy.spvasm.expected.wgsl
+++ b/test/ptr_ref/copy/ptr_copy.spvasm.expected.wgsl
@@ -5,7 +5,7 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   main_1();
 }
diff --git a/test/ptr_ref/load/global/i32.spvasm.expected.wgsl b/test/ptr_ref/load/global/i32.spvasm.expected.wgsl
index 2f193e8..fa2c115 100644
--- a/test/ptr_ref/load/global/i32.spvasm.expected.wgsl
+++ b/test/ptr_ref/load/global/i32.spvasm.expected.wgsl
@@ -6,7 +6,7 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   main_1();
 }
diff --git a/test/ptr_ref/load/global/i32.wgsl b/test/ptr_ref/load/global/i32.wgsl
index b0e73b6..4f620cf 100644
--- a/test/ptr_ref/load/global/i32.wgsl
+++ b/test/ptr_ref/load/global/i32.wgsl
@@ -1,6 +1,6 @@
 var<private> I : i32;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let i : i32 = I;
   let use : i32 = i + 1;
diff --git a/test/ptr_ref/load/global/i32.wgsl.expected.wgsl b/test/ptr_ref/load/global/i32.wgsl.expected.wgsl
index e3d286d..5e1feea 100644
--- a/test/ptr_ref/load/global/i32.wgsl.expected.wgsl
+++ b/test/ptr_ref/load/global/i32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 var<private> I : i32;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let i : i32 = I;
   let use : i32 = (i + 1);
diff --git a/test/ptr_ref/load/global/struct_field.spvasm.expected.wgsl b/test/ptr_ref/load/global/struct_field.spvasm.expected.wgsl
index 67eba57..6d6d8e6 100644
--- a/test/ptr_ref/load/global/struct_field.spvasm.expected.wgsl
+++ b/test/ptr_ref/load/global/struct_field.spvasm.expected.wgsl
@@ -11,7 +11,7 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   main_1();
 }
diff --git a/test/ptr_ref/load/global/struct_field.wgsl b/test/ptr_ref/load/global/struct_field.wgsl
index 074fe80..e4341ca 100644
--- a/test/ptr_ref/load/global/struct_field.wgsl
+++ b/test/ptr_ref/load/global/struct_field.wgsl
@@ -4,7 +4,7 @@
 
 var<private> V : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let i : i32 = V.i;
 }
diff --git a/test/ptr_ref/load/global/struct_field.wgsl.expected.wgsl b/test/ptr_ref/load/global/struct_field.wgsl.expected.wgsl
index d0b3e34..59395f9 100644
--- a/test/ptr_ref/load/global/struct_field.wgsl.expected.wgsl
+++ b/test/ptr_ref/load/global/struct_field.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
 
 var<private> V : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let i : i32 = V.i;
 }
diff --git a/test/ptr_ref/load/local/i32.spvasm.expected.wgsl b/test/ptr_ref/load/local/i32.spvasm.expected.wgsl
index 89d3a08..22952b8 100644
--- a/test/ptr_ref/load/local/i32.spvasm.expected.wgsl
+++ b/test/ptr_ref/load/local/i32.spvasm.expected.wgsl
@@ -6,7 +6,7 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   main_1();
 }
diff --git a/test/ptr_ref/load/local/i32.wgsl b/test/ptr_ref/load/local/i32.wgsl
index f01042b..6c30f81 100644
--- a/test/ptr_ref/load/local/i32.wgsl
+++ b/test/ptr_ref/load/local/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var i : i32 = 123;
   let use : i32 = i + 1;
diff --git a/test/ptr_ref/load/local/i32.wgsl.expected.wgsl b/test/ptr_ref/load/local/i32.wgsl.expected.wgsl
index d08fa3d..587375e 100644
--- a/test/ptr_ref/load/local/i32.wgsl.expected.wgsl
+++ b/test/ptr_ref/load/local/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var i : i32 = 123;
   let use : i32 = (i + 1);
diff --git a/test/ptr_ref/load/local/ptr_function.wgsl b/test/ptr_ref/load/local/ptr_function.wgsl
index df53774..ddaafb2 100644
--- a/test/ptr_ref/load/local/ptr_function.wgsl
+++ b/test/ptr_ref/load/local/ptr_function.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var i : i32 = 123;
   let p : ptr<function, i32> = &i;
diff --git a/test/ptr_ref/load/local/ptr_function.wgsl.expected.wgsl b/test/ptr_ref/load/local/ptr_function.wgsl.expected.wgsl
index 4bd46dd..e29289c 100644
--- a/test/ptr_ref/load/local/ptr_function.wgsl.expected.wgsl
+++ b/test/ptr_ref/load/local/ptr_function.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var i : i32 = 123;
   let p : ptr<function, i32> = &(i);
diff --git a/test/ptr_ref/load/local/ptr_private.wgsl b/test/ptr_ref/load/local/ptr_private.wgsl
index b9d231f..0f59ad5 100644
--- a/test/ptr_ref/load/local/ptr_private.wgsl
+++ b/test/ptr_ref/load/local/ptr_private.wgsl
@@ -1,6 +1,6 @@
 var<private> i : i32 = 123;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let p : ptr<private, i32> = &i;
   let use : i32 = *p + 1;
diff --git a/test/ptr_ref/load/local/ptr_private.wgsl.expected.wgsl b/test/ptr_ref/load/local/ptr_private.wgsl.expected.wgsl
index 4c92811..9b77f46 100644
--- a/test/ptr_ref/load/local/ptr_private.wgsl.expected.wgsl
+++ b/test/ptr_ref/load/local/ptr_private.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 var<private> i : i32 = 123;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let p : ptr<private, i32> = &(i);
   let use : i32 = (*(p) + 1);
diff --git a/test/ptr_ref/load/local/ptr_storage.wgsl b/test/ptr_ref/load/local/ptr_storage.wgsl
index 1b1bfba..e50f835 100644
--- a/test/ptr_ref/load/local/ptr_storage.wgsl
+++ b/test/ptr_ref/load/local/ptr_storage.wgsl
@@ -2,10 +2,10 @@
   a : i32;
 };
 
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<storage, read_write> v : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let p : ptr<storage, i32, read_write> = &v.a;
   let use : i32 = *p + 1;
diff --git a/test/ptr_ref/load/local/ptr_storage.wgsl.expected.wgsl b/test/ptr_ref/load/local/ptr_storage.wgsl.expected.wgsl
index 3111c5f..ecef085 100644
--- a/test/ptr_ref/load/local/ptr_storage.wgsl.expected.wgsl
+++ b/test/ptr_ref/load/local/ptr_storage.wgsl.expected.wgsl
@@ -2,9 +2,9 @@
   a : i32;
 }
 
-[[group(0), binding(0)]] var<storage, read_write> v : S;
+@group(0) @binding(0) var<storage, read_write> v : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let p : ptr<storage, i32, read_write> = &(v.a);
   let use : i32 = (*(p) + 1);
diff --git a/test/ptr_ref/load/local/ptr_uniform.wgsl b/test/ptr_ref/load/local/ptr_uniform.wgsl
index 1d0e355..49328ac 100644
--- a/test/ptr_ref/load/local/ptr_uniform.wgsl
+++ b/test/ptr_ref/load/local/ptr_uniform.wgsl
@@ -2,10 +2,10 @@
   a : i32;
 };
 
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<uniform> v : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let p : ptr<uniform, i32> = &v.a;
   let use : i32 = *p + 1;
diff --git a/test/ptr_ref/load/local/ptr_uniform.wgsl.expected.wgsl b/test/ptr_ref/load/local/ptr_uniform.wgsl.expected.wgsl
index b6f8628..dabfd63 100644
--- a/test/ptr_ref/load/local/ptr_uniform.wgsl.expected.wgsl
+++ b/test/ptr_ref/load/local/ptr_uniform.wgsl.expected.wgsl
@@ -2,9 +2,9 @@
   a : i32;
 }
 
-[[group(0), binding(0)]] var<uniform> v : S;
+@group(0) @binding(0) var<uniform> v : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let p : ptr<uniform, i32> = &(v.a);
   let use : i32 = (*(p) + 1);
diff --git a/test/ptr_ref/load/local/ptr_workgroup.wgsl b/test/ptr_ref/load/local/ptr_workgroup.wgsl
index eb7dae9..269caa5 100644
--- a/test/ptr_ref/load/local/ptr_workgroup.wgsl
+++ b/test/ptr_ref/load/local/ptr_workgroup.wgsl
@@ -1,6 +1,6 @@
 var<workgroup> i : i32;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   i = 123;
   let p : ptr<workgroup, i32> = &i;
diff --git a/test/ptr_ref/load/local/ptr_workgroup.wgsl.expected.wgsl b/test/ptr_ref/load/local/ptr_workgroup.wgsl.expected.wgsl
index cf84d58..39ea1f5 100644
--- a/test/ptr_ref/load/local/ptr_workgroup.wgsl.expected.wgsl
+++ b/test/ptr_ref/load/local/ptr_workgroup.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 var<workgroup> i : i32;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   i = 123;
   let p : ptr<workgroup, i32> = &(i);
diff --git a/test/ptr_ref/load/local/struct_field.spvasm.expected.wgsl b/test/ptr_ref/load/local/struct_field.spvasm.expected.wgsl
index ea14750..9b15ec1 100644
--- a/test/ptr_ref/load/local/struct_field.spvasm.expected.wgsl
+++ b/test/ptr_ref/load/local/struct_field.spvasm.expected.wgsl
@@ -10,7 +10,7 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   main_1();
 }
diff --git a/test/ptr_ref/load/local/struct_field.wgsl b/test/ptr_ref/load/local/struct_field.wgsl
index 18aca63..60b9af5 100644
--- a/test/ptr_ref/load/local/struct_field.wgsl
+++ b/test/ptr_ref/load/local/struct_field.wgsl
@@ -2,7 +2,7 @@
   i : i32;
 };
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var V : S;
   var i : i32 = V.i;
diff --git a/test/ptr_ref/load/local/struct_field.wgsl.expected.wgsl b/test/ptr_ref/load/local/struct_field.wgsl.expected.wgsl
index 7bbcb5a..056bf95 100644
--- a/test/ptr_ref/load/local/struct_field.wgsl.expected.wgsl
+++ b/test/ptr_ref/load/local/struct_field.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   i : i32;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var V : S;
   var i : i32 = V.i;
diff --git a/test/ptr_ref/load/param/ptr.spvasm.expected.wgsl b/test/ptr_ref/load/param/ptr.spvasm.expected.wgsl
index 05c17cf..e8df997 100644
--- a/test/ptr_ref/load/param/ptr.spvasm.expected.wgsl
+++ b/test/ptr_ref/load/param/ptr.spvasm.expected.wgsl
@@ -11,7 +11,7 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   main_1();
 }
diff --git a/test/ptr_ref/load/param/ptr.wgsl b/test/ptr_ref/load/param/ptr.wgsl
index 3348240..1dfc928 100644
--- a/test/ptr_ref/load/param/ptr.wgsl
+++ b/test/ptr_ref/load/param/ptr.wgsl
@@ -2,7 +2,7 @@
   return value + *pointer;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var i : i32 = 123;
   let r : i32 = func(i, &i);
diff --git a/test/ptr_ref/load/param/ptr.wgsl.expected.wgsl b/test/ptr_ref/load/param/ptr.wgsl.expected.wgsl
index 812dfea..68c51db 100644
--- a/test/ptr_ref/load/param/ptr.wgsl.expected.wgsl
+++ b/test/ptr_ref/load/param/ptr.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   return (value + *(pointer));
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var i : i32 = 123;
   let r : i32 = func(i, &(i));
diff --git a/test/ptr_ref/store/global/i32.spvasm.expected.wgsl b/test/ptr_ref/store/global/i32.spvasm.expected.wgsl
index b48aa90..d50fc89 100644
--- a/test/ptr_ref/store/global/i32.spvasm.expected.wgsl
+++ b/test/ptr_ref/store/global/i32.spvasm.expected.wgsl
@@ -6,7 +6,7 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   main_1();
 }
diff --git a/test/ptr_ref/store/global/i32.wgsl b/test/ptr_ref/store/global/i32.wgsl
index 9254513..3a5c72e 100644
--- a/test/ptr_ref/store/global/i32.wgsl
+++ b/test/ptr_ref/store/global/i32.wgsl
@@ -1,6 +1,6 @@
 var<private> I : i32;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   I = 123; // constant
   I = 100 + 20 + 3; // dynamic
diff --git a/test/ptr_ref/store/global/i32.wgsl.expected.wgsl b/test/ptr_ref/store/global/i32.wgsl.expected.wgsl
index 8b8367d..807c1cd 100644
--- a/test/ptr_ref/store/global/i32.wgsl.expected.wgsl
+++ b/test/ptr_ref/store/global/i32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 var<private> I : i32;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   I = 123;
   I = ((100 + 20) + 3);
diff --git a/test/ptr_ref/store/global/struct_field.spvasm.expected.wgsl b/test/ptr_ref/store/global/struct_field.spvasm.expected.wgsl
index e70b574..7ed0977 100644
--- a/test/ptr_ref/store/global/struct_field.spvasm.expected.wgsl
+++ b/test/ptr_ref/store/global/struct_field.spvasm.expected.wgsl
@@ -9,7 +9,7 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   main_1();
 }
diff --git a/test/ptr_ref/store/local/i32.spvasm.expected.wgsl b/test/ptr_ref/store/local/i32.spvasm.expected.wgsl
index 64f3744..822c64b 100644
--- a/test/ptr_ref/store/local/i32.spvasm.expected.wgsl
+++ b/test/ptr_ref/store/local/i32.spvasm.expected.wgsl
@@ -6,7 +6,7 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   main_1();
 }
diff --git a/test/ptr_ref/store/local/i32.wgsl b/test/ptr_ref/store/local/i32.wgsl
index 77578a7..ea390b9 100644
--- a/test/ptr_ref/store/local/i32.wgsl
+++ b/test/ptr_ref/store/local/i32.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var i : i32 = 123;
   let p : ptr<function, i32> = &i;
diff --git a/test/ptr_ref/store/local/i32.wgsl.expected.wgsl b/test/ptr_ref/store/local/i32.wgsl.expected.wgsl
index 2690a1a..c5f03d5 100644
--- a/test/ptr_ref/store/local/i32.wgsl.expected.wgsl
+++ b/test/ptr_ref/store/local/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var i : i32 = 123;
   let p : ptr<function, i32> = &(i);
diff --git a/test/ptr_ref/store/local/struct_field.spvasm.expected.wgsl b/test/ptr_ref/store/local/struct_field.spvasm.expected.wgsl
index b3b95df..bcc1680 100644
--- a/test/ptr_ref/store/local/struct_field.spvasm.expected.wgsl
+++ b/test/ptr_ref/store/local/struct_field.spvasm.expected.wgsl
@@ -8,7 +8,7 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   main_1();
 }
diff --git a/test/ptr_ref/store/param/ptr.spvasm.expected.wgsl b/test/ptr_ref/store/param/ptr.spvasm.expected.wgsl
index 30fdea1..c505b66 100644
--- a/test/ptr_ref/store/param/ptr.spvasm.expected.wgsl
+++ b/test/ptr_ref/store/param/ptr.spvasm.expected.wgsl
@@ -10,7 +10,7 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   main_1();
 }
diff --git a/test/ptr_ref/store/param/ptr.wgsl b/test/ptr_ref/store/param/ptr.wgsl
index f4225f0..b23ad6f 100644
--- a/test/ptr_ref/store/param/ptr.wgsl
+++ b/test/ptr_ref/store/param/ptr.wgsl
@@ -2,7 +2,7 @@
   *pointer = value;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var i : i32 = 123;
   func(123, &i);
diff --git a/test/ptr_ref/store/param/ptr.wgsl.expected.wgsl b/test/ptr_ref/store/param/ptr.wgsl.expected.wgsl
index 05d2d40..d9d6dbb 100644
--- a/test/ptr_ref/store/param/ptr.wgsl.expected.wgsl
+++ b/test/ptr_ref/store/param/ptr.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   *(pointer) = value;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var i : i32 = 123;
   func(123, &(i));
diff --git a/test/samples/compute_boids.wgsl b/test/samples/compute_boids.wgsl
index 53ea4c5..269ac5d 100644
--- a/test/samples/compute_boids.wgsl
+++ b/test/samples/compute_boids.wgsl
@@ -14,11 +14,11 @@
 
 // vertex shader
 
-[[stage(vertex)]]
-fn vert_main([[location(0)]] a_particlePos : vec2<f32>,
-             [[location(1)]] a_particleVel : vec2<f32>,
-             [[location(2)]] a_pos : vec2<f32>)
-          -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vert_main(@location(0) a_particlePos : vec2<f32>,
+             @location(1) a_particleVel : vec2<f32>,
+             @location(2) a_pos : vec2<f32>)
+          -> @builtin(position) vec4<f32> {
   var angle : f32 = -atan2(a_particleVel.x, a_particleVel.y);
   var pos : vec2<f32> = vec2<f32>(
       (a_pos.x * cos(angle)) - (a_pos.y * sin(angle)),
@@ -28,8 +28,8 @@
 
 // fragment shader
 
-[[stage(fragment)]]
-fn frag_main() -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn frag_main() -> @location(0) vec4<f32> {
   return vec4<f32>(1.0, 1.0, 1.0, 1.0);
 }
 
@@ -53,14 +53,14 @@
   particles : array<Particle, 5>;
 };
 
-[[binding(0), group(0)]] var<uniform> params : SimParams;
-[[binding(1), group(0)]] var<storage, read_write> particlesA : Particles;
-[[binding(2), group(0)]] var<storage, read_write> particlesB : Particles;
+@binding(0) @group(0) var<uniform> params : SimParams;
+@binding(1) @group(0) var<storage, read_write> particlesA : Particles;
+@binding(2) @group(0) var<storage, read_write> particlesB : Particles;
 
 // https://github.com/austinEng/Project6-Vulkan-Flocking/blob/master/data/shaders/computeparticles/particle.comp
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn comp_main(
-  [[builtin(global_invocation_id)]] gl_GlobalInvocationID : vec3<u32>) {
+  @builtin(global_invocation_id) gl_GlobalInvocationID : vec3<u32>) {
   var index : u32 = gl_GlobalInvocationID.x;
   if (index >= 5u) {
     return;
diff --git a/test/samples/compute_boids.wgsl.expected.wgsl b/test/samples/compute_boids.wgsl.expected.wgsl
index 394631c..5abf9fa 100644
--- a/test/samples/compute_boids.wgsl.expected.wgsl
+++ b/test/samples/compute_boids.wgsl.expected.wgsl
@@ -1,12 +1,12 @@
-[[stage(vertex)]]
-fn vert_main([[location(0)]] a_particlePos : vec2<f32>, [[location(1)]] a_particleVel : vec2<f32>, [[location(2)]] a_pos : vec2<f32>) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vert_main(@location(0) a_particlePos : vec2<f32>, @location(1) a_particleVel : vec2<f32>, @location(2) a_pos : vec2<f32>) -> @builtin(position) vec4<f32> {
   var angle : f32 = -(atan2(a_particleVel.x, a_particleVel.y));
   var pos : vec2<f32> = vec2<f32>(((a_pos.x * cos(angle)) - (a_pos.y * sin(angle))), ((a_pos.x * sin(angle)) + (a_pos.y * cos(angle))));
   return vec4<f32>((pos + a_particlePos), 0.0, 1.0);
 }
 
-[[stage(fragment)]]
-fn frag_main() -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn frag_main() -> @location(0) vec4<f32> {
   return vec4<f32>(1.0, 1.0, 1.0, 1.0);
 }
 
@@ -29,14 +29,14 @@
   particles : array<Particle, 5>;
 }
 
-[[binding(0), group(0)]] var<uniform> params : SimParams;
+@binding(0) @group(0) var<uniform> params : SimParams;
 
-[[binding(1), group(0)]] var<storage, read_write> particlesA : Particles;
+@binding(1) @group(0) var<storage, read_write> particlesA : Particles;
 
-[[binding(2), group(0)]] var<storage, read_write> particlesB : Particles;
+@binding(2) @group(0) var<storage, read_write> particlesB : Particles;
 
-[[stage(compute), workgroup_size(1)]]
-fn comp_main([[builtin(global_invocation_id)]] gl_GlobalInvocationID : vec3<u32>) {
+@stage(compute) @workgroup_size(1)
+fn comp_main(@builtin(global_invocation_id) gl_GlobalInvocationID : vec3<u32>) {
   var index : u32 = gl_GlobalInvocationID.x;
   if ((index >= 5u)) {
     return;
diff --git a/test/samples/cube.wgsl b/test/samples/cube.wgsl
index 5b9fab1..93519e4 100644
--- a/test/samples/cube.wgsl
+++ b/test/samples/cube.wgsl
@@ -17,19 +17,19 @@
   modelViewProjectionMatrix : mat4x4<f32>;
 };
 
-[[binding(0), group(0)]] var<uniform> uniforms : Uniforms;
+@binding(0) @group(0) var<uniform> uniforms : Uniforms;
 
 struct VertexInput {
-  [[location(0)]] cur_position : vec4<f32>;
-  [[location(1)]] color : vec4<f32>;
+  @location(0) cur_position : vec4<f32>;
+  @location(1) color : vec4<f32>;
 };
 
 struct VertexOutput {
-  [[location(0)]] vtxFragColor : vec4<f32>;
-  [[builtin(position)]] Position : vec4<f32>;
+  @location(0) vtxFragColor : vec4<f32>;
+  @builtin(position) Position : vec4<f32>;
 };
 
-[[stage(vertex)]]
+@stage(vertex)
 fn vtx_main(input : VertexInput) -> VertexOutput {
   var output : VertexOutput;
   output.Position = uniforms.modelViewProjectionMatrix * input.cur_position;
@@ -39,8 +39,8 @@
 
 // Fragment shader
 
-[[stage(fragment)]]
-fn frag_main([[location(0)]] fragColor : vec4<f32>)
-          -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn frag_main(@location(0) fragColor : vec4<f32>)
+          -> @location(0) vec4<f32> {
   return fragColor;
 }
diff --git a/test/samples/cube.wgsl.expected.wgsl b/test/samples/cube.wgsl.expected.wgsl
index a764703..ba0371f 100644
--- a/test/samples/cube.wgsl.expected.wgsl
+++ b/test/samples/cube.wgsl.expected.wgsl
@@ -2,23 +2,23 @@
   modelViewProjectionMatrix : mat4x4<f32>;
 }
 
-[[binding(0), group(0)]] var<uniform> uniforms : Uniforms;
+@binding(0) @group(0) var<uniform> uniforms : Uniforms;
 
 struct VertexInput {
-  [[location(0)]]
+  @location(0)
   cur_position : vec4<f32>;
-  [[location(1)]]
+  @location(1)
   color : vec4<f32>;
 }
 
 struct VertexOutput {
-  [[location(0)]]
+  @location(0)
   vtxFragColor : vec4<f32>;
-  [[builtin(position)]]
+  @builtin(position)
   Position : vec4<f32>;
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn vtx_main(input : VertexInput) -> VertexOutput {
   var output : VertexOutput;
   output.Position = (uniforms.modelViewProjectionMatrix * input.cur_position);
@@ -26,7 +26,7 @@
   return output;
 }
 
-[[stage(fragment)]]
-fn frag_main([[location(0)]] fragColor : vec4<f32>) -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn frag_main(@location(0) fragColor : vec4<f32>) -> @location(0) vec4<f32> {
   return fragColor;
 }
diff --git a/test/samples/function.wgsl b/test/samples/function.wgsl
index 257a664..92ffb04 100644
--- a/test/samples/function.wgsl
+++ b/test/samples/function.wgsl
@@ -16,6 +16,6 @@
     return ((2. * 3.) - 4.) / 5.;
 }
 
-[[stage(compute), workgroup_size(2)]]
+@stage(compute) @workgroup_size(2)
 fn ep() {
 }
diff --git a/test/samples/function.wgsl.expected.wgsl b/test/samples/function.wgsl.expected.wgsl
index 4cd4fb6..5a3a80c 100644
--- a/test/samples/function.wgsl.expected.wgsl
+++ b/test/samples/function.wgsl.expected.wgsl
@@ -2,6 +2,6 @@
   return (((2.0 * 3.0) - 4.0) / 5.0);
 }
 
-[[stage(compute), workgroup_size(2)]]
+@stage(compute) @workgroup_size(2)
 fn ep() {
 }
diff --git a/test/samples/simple.wgsl b/test/samples/simple.wgsl
index bec6a0f..d30b8a0 100644
--- a/test/samples/simple.wgsl
+++ b/test/samples/simple.wgsl
@@ -15,8 +15,8 @@
 fn bar() {
 }
 
-[[stage(fragment)]]
-fn main() -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn main() -> @location(0) vec4<f32> {
     var a : vec2<f32> = vec2<f32>();
     bar();
     return vec4<f32>(0.4, 0.4, 0.8, 1.0);
diff --git a/test/samples/simple.wgsl.expected.wgsl b/test/samples/simple.wgsl.expected.wgsl
index b5a4dc0..83388f8 100644
--- a/test/samples/simple.wgsl.expected.wgsl
+++ b/test/samples/simple.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
 fn bar() {
 }
 
-[[stage(fragment)]]
-fn main() -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn main() -> @location(0) vec4<f32> {
   var a : vec2<f32> = vec2<f32>();
   bar();
   return vec4<f32>(0.400000006, 0.400000006, 0.800000012, 1.0);
diff --git a/test/samples/simple_vertex.spvasm.expected.wgsl b/test/samples/simple_vertex.spvasm.expected.wgsl
index 372bb24..91ccaf9 100644
--- a/test/samples/simple_vertex.spvasm.expected.wgsl
+++ b/test/samples/simple_vertex.spvasm.expected.wgsl
@@ -6,11 +6,11 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn main() -> main_out {
   main_1();
   return main_out(gl_Position);
diff --git a/test/samples/triangle.wgsl b/test/samples/triangle.wgsl
index ba3cb52..69d2281 100644
--- a/test/samples/triangle.wgsl
+++ b/test/samples/triangle.wgsl
@@ -18,14 +18,14 @@
     vec2<f32>(-0.5, -0.5),
     vec2<f32>(0.5, -0.5));
 
-[[stage(vertex)]]
-fn vtx_main([[builtin(vertex_index)]] VertexIndex : u32)
-         -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vtx_main(@builtin(vertex_index) VertexIndex : u32)
+         -> @builtin(position) vec4<f32> {
   return vec4<f32>(pos[VertexIndex], 0.0, 1.0);
 }
 
 // Fragment shader
-[[stage(fragment)]]
-fn frag_main() -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn frag_main() -> @location(0) vec4<f32> {
   return vec4<f32>(1.0, 0.0, 0.0, 1.0);
 }
diff --git a/test/samples/triangle.wgsl.expected.wgsl b/test/samples/triangle.wgsl.expected.wgsl
index bd398e0..c92f0a6 100644
--- a/test/samples/triangle.wgsl.expected.wgsl
+++ b/test/samples/triangle.wgsl.expected.wgsl
@@ -1,11 +1,11 @@
 let pos : array<vec2<f32>, 3> = array<vec2<f32>, 3>(vec2<f32>(0.0, 0.5), vec2<f32>(-0.5, -0.5), vec2<f32>(0.5, -0.5));
 
-[[stage(vertex)]]
-fn vtx_main([[builtin(vertex_index)]] VertexIndex : u32) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn vtx_main(@builtin(vertex_index) VertexIndex : u32) -> @builtin(position) vec4<f32> {
   return vec4<f32>(pos[VertexIndex], 0.0, 1.0);
 }
 
-[[stage(fragment)]]
-fn frag_main() -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn frag_main() -> @location(0) vec4<f32> {
   return vec4<f32>(1.0, 0.0, 0.0, 1.0);
 }
diff --git a/test/shader_io/compute_input_builtins.wgsl b/test/shader_io/compute_input_builtins.wgsl
index 016ec31..77f209e 100644
--- a/test/shader_io/compute_input_builtins.wgsl
+++ b/test/shader_io/compute_input_builtins.wgsl
@@ -1,10 +1,10 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main(
-  [[builtin(local_invocation_id)]] local_invocation_id : vec3<u32>,
-  [[builtin(local_invocation_index)]] local_invocation_index : u32,
-  [[builtin(global_invocation_id)]] global_invocation_id : vec3<u32>,
-  [[builtin(workgroup_id)]] workgroup_id : vec3<u32>,
-  [[builtin(num_workgroups)]] num_workgroups : vec3<u32>,
+  @builtin(local_invocation_id) local_invocation_id : vec3<u32>,
+  @builtin(local_invocation_index) local_invocation_index : u32,
+  @builtin(global_invocation_id) global_invocation_id : vec3<u32>,
+  @builtin(workgroup_id) workgroup_id : vec3<u32>,
+  @builtin(num_workgroups) num_workgroups : vec3<u32>,
 ) {
   let foo : u32 =
     local_invocation_id.x +
diff --git a/test/shader_io/compute_input_builtins.wgsl.expected.wgsl b/test/shader_io/compute_input_builtins.wgsl.expected.wgsl
index 42c8adb..a1d3163 100644
--- a/test/shader_io/compute_input_builtins.wgsl.expected.wgsl
+++ b/test/shader_io/compute_input_builtins.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
-fn main([[builtin(local_invocation_id)]] local_invocation_id : vec3<u32>, [[builtin(local_invocation_index)]] local_invocation_index : u32, [[builtin(global_invocation_id)]] global_invocation_id : vec3<u32>, [[builtin(workgroup_id)]] workgroup_id : vec3<u32>, [[builtin(num_workgroups)]] num_workgroups : vec3<u32>) {
+@stage(compute) @workgroup_size(1)
+fn main(@builtin(local_invocation_id) local_invocation_id : vec3<u32>, @builtin(local_invocation_index) local_invocation_index : u32, @builtin(global_invocation_id) global_invocation_id : vec3<u32>, @builtin(workgroup_id) workgroup_id : vec3<u32>, @builtin(num_workgroups) num_workgroups : vec3<u32>) {
   let foo : u32 = ((((local_invocation_id.x + local_invocation_index) + global_invocation_id.x) + workgroup_id.x) + num_workgroups.x);
 }
diff --git a/test/shader_io/compute_input_builtins_struct.wgsl b/test/shader_io/compute_input_builtins_struct.wgsl
index c9691c9..968a1fa 100644
--- a/test/shader_io/compute_input_builtins_struct.wgsl
+++ b/test/shader_io/compute_input_builtins_struct.wgsl
@@ -1,12 +1,12 @@
 struct ComputeInputs {
-  [[builtin(local_invocation_id)]] local_invocation_id : vec3<u32>;
-  [[builtin(local_invocation_index)]] local_invocation_index : u32;
-  [[builtin(global_invocation_id)]] global_invocation_id : vec3<u32>;
-  [[builtin(workgroup_id)]] workgroup_id : vec3<u32>;
-  [[builtin(num_workgroups)]] num_workgroups : vec3<u32>;
+  @builtin(local_invocation_id) local_invocation_id : vec3<u32>;
+  @builtin(local_invocation_index) local_invocation_index : u32;
+  @builtin(global_invocation_id) global_invocation_id : vec3<u32>;
+  @builtin(workgroup_id) workgroup_id : vec3<u32>;
+  @builtin(num_workgroups) num_workgroups : vec3<u32>;
 };
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main(inputs : ComputeInputs) {
   let foo : u32 =
     inputs.local_invocation_id.x +
diff --git a/test/shader_io/compute_input_builtins_struct.wgsl.expected.wgsl b/test/shader_io/compute_input_builtins_struct.wgsl.expected.wgsl
index c3830ee..08660cc 100644
--- a/test/shader_io/compute_input_builtins_struct.wgsl.expected.wgsl
+++ b/test/shader_io/compute_input_builtins_struct.wgsl.expected.wgsl
@@ -1,17 +1,17 @@
 struct ComputeInputs {
-  [[builtin(local_invocation_id)]]
+  @builtin(local_invocation_id)
   local_invocation_id : vec3<u32>;
-  [[builtin(local_invocation_index)]]
+  @builtin(local_invocation_index)
   local_invocation_index : u32;
-  [[builtin(global_invocation_id)]]
+  @builtin(global_invocation_id)
   global_invocation_id : vec3<u32>;
-  [[builtin(workgroup_id)]]
+  @builtin(workgroup_id)
   workgroup_id : vec3<u32>;
-  [[builtin(num_workgroups)]]
+  @builtin(num_workgroups)
   num_workgroups : vec3<u32>;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main(inputs : ComputeInputs) {
   let foo : u32 = ((((inputs.local_invocation_id.x + inputs.local_invocation_index) + inputs.global_invocation_id.x) + inputs.workgroup_id.x) + inputs.num_workgroups.x);
 }
diff --git a/test/shader_io/compute_input_mixed.wgsl b/test/shader_io/compute_input_mixed.wgsl
index e49303c..b46ff00 100644
--- a/test/shader_io/compute_input_mixed.wgsl
+++ b/test/shader_io/compute_input_mixed.wgsl
@@ -1,20 +1,20 @@
 struct ComputeInputs0 {
-  [[builtin(local_invocation_id)]] local_invocation_id : vec3<u32>;
+  @builtin(local_invocation_id) local_invocation_id : vec3<u32>;
 };
 struct ComputeInputs1 {
-  [[builtin(workgroup_id)]] workgroup_id : vec3<u32>;
+  @builtin(workgroup_id) workgroup_id : vec3<u32>;
 };
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main(
   inputs0 : ComputeInputs0,
-  [[builtin(local_invocation_index)]] local_invocation_index : u32,
-  [[builtin(global_invocation_id)]] global_invocation_id : vec3<u32>,
+  @builtin(local_invocation_index) local_invocation_index : u32,
+  @builtin(global_invocation_id) global_invocation_id : vec3<u32>,
   inputs1 : ComputeInputs1,
 ) {
   let foo : u32 =
     inputs0.local_invocation_id.x +
-    local_invocation_index + 
-    global_invocation_id.x + 
+    local_invocation_index +
+    global_invocation_id.x +
     inputs1.workgroup_id.x;
 }
diff --git a/test/shader_io/compute_input_mixed.wgsl.expected.wgsl b/test/shader_io/compute_input_mixed.wgsl.expected.wgsl
index 369ae7f..56cd363 100644
--- a/test/shader_io/compute_input_mixed.wgsl.expected.wgsl
+++ b/test/shader_io/compute_input_mixed.wgsl.expected.wgsl
@@ -1,14 +1,14 @@
 struct ComputeInputs0 {
-  [[builtin(local_invocation_id)]]
+  @builtin(local_invocation_id)
   local_invocation_id : vec3<u32>;
 }
 
 struct ComputeInputs1 {
-  [[builtin(workgroup_id)]]
+  @builtin(workgroup_id)
   workgroup_id : vec3<u32>;
 }
 
-[[stage(compute), workgroup_size(1)]]
-fn main(inputs0 : ComputeInputs0, [[builtin(local_invocation_index)]] local_invocation_index : u32, [[builtin(global_invocation_id)]] global_invocation_id : vec3<u32>, inputs1 : ComputeInputs1) {
+@stage(compute) @workgroup_size(1)
+fn main(inputs0 : ComputeInputs0, @builtin(local_invocation_index) local_invocation_index : u32, @builtin(global_invocation_id) global_invocation_id : vec3<u32>, inputs1 : ComputeInputs1) {
   let foo : u32 = (((inputs0.local_invocation_id.x + local_invocation_index) + global_invocation_id.x) + inputs1.workgroup_id.x);
 }
diff --git a/test/shader_io/fragment_input_builtins.wgsl b/test/shader_io/fragment_input_builtins.wgsl
index 0395bfd..db717eb 100644
--- a/test/shader_io/fragment_input_builtins.wgsl
+++ b/test/shader_io/fragment_input_builtins.wgsl
@@ -1,9 +1,9 @@
-[[stage(fragment)]]
+@stage(fragment)
 fn main(
-  [[builtin(position)]] position : vec4<f32>,
-  [[builtin(front_facing)]] front_facing : bool,
-  [[builtin(sample_index)]] sample_index : u32,
-  [[builtin(sample_mask)]] sample_mask : u32,
+  @builtin(position) position : vec4<f32>,
+  @builtin(front_facing) front_facing : bool,
+  @builtin(sample_index) sample_index : u32,
+  @builtin(sample_mask) sample_mask : u32,
 ) {
   if (front_facing) {
     let foo : vec4<f32> = position;
diff --git a/test/shader_io/fragment_input_builtins.wgsl.expected.wgsl b/test/shader_io/fragment_input_builtins.wgsl.expected.wgsl
index cfad6db..92dfb41 100644
--- a/test/shader_io/fragment_input_builtins.wgsl.expected.wgsl
+++ b/test/shader_io/fragment_input_builtins.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
-[[stage(fragment)]]
-fn main([[builtin(position)]] position : vec4<f32>, [[builtin(front_facing)]] front_facing : bool, [[builtin(sample_index)]] sample_index : u32, [[builtin(sample_mask)]] sample_mask : u32) {
+@stage(fragment)
+fn main(@builtin(position) position : vec4<f32>, @builtin(front_facing) front_facing : bool, @builtin(sample_index) sample_index : u32, @builtin(sample_mask) sample_mask : u32) {
   if (front_facing) {
     let foo : vec4<f32> = position;
     let bar : u32 = (sample_index + sample_mask);
diff --git a/test/shader_io/fragment_input_builtins_struct.wgsl b/test/shader_io/fragment_input_builtins_struct.wgsl
index af9e0d3..ba833db 100644
--- a/test/shader_io/fragment_input_builtins_struct.wgsl
+++ b/test/shader_io/fragment_input_builtins_struct.wgsl
@@ -1,11 +1,11 @@
 struct FragmentInputs {
-  [[builtin(position)]] position : vec4<f32>;
-  [[builtin(front_facing)]] front_facing : bool;
-  [[builtin(sample_index)]] sample_index : u32;
-  [[builtin(sample_mask)]] sample_mask : u32;
+  @builtin(position) position : vec4<f32>;
+  @builtin(front_facing) front_facing : bool;
+  @builtin(sample_index) sample_index : u32;
+  @builtin(sample_mask) sample_mask : u32;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main(inputs : FragmentInputs) {
   if (inputs.front_facing) {
     let foo : vec4<f32> = inputs.position;
diff --git a/test/shader_io/fragment_input_builtins_struct.wgsl.expected.wgsl b/test/shader_io/fragment_input_builtins_struct.wgsl.expected.wgsl
index 79ec5fd..5eddd12 100644
--- a/test/shader_io/fragment_input_builtins_struct.wgsl.expected.wgsl
+++ b/test/shader_io/fragment_input_builtins_struct.wgsl.expected.wgsl
@@ -1,15 +1,15 @@
 struct FragmentInputs {
-  [[builtin(position)]]
+  @builtin(position)
   position : vec4<f32>;
-  [[builtin(front_facing)]]
+  @builtin(front_facing)
   front_facing : bool;
-  [[builtin(sample_index)]]
+  @builtin(sample_index)
   sample_index : u32;
-  [[builtin(sample_mask)]]
+  @builtin(sample_mask)
   sample_mask : u32;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main(inputs : FragmentInputs) {
   if (inputs.front_facing) {
     let foo : vec4<f32> = inputs.position;
diff --git a/test/shader_io/fragment_input_locations.wgsl b/test/shader_io/fragment_input_locations.wgsl
index 0ed8e3c..b33cfe4 100644
--- a/test/shader_io/fragment_input_locations.wgsl
+++ b/test/shader_io/fragment_input_locations.wgsl
@@ -1,9 +1,9 @@
-[[stage(fragment)]]
+@stage(fragment)
 fn main(
-  [[location(0), interpolate(flat)]] loc0 : i32,
-  [[location(1), interpolate(flat)]] loc1 : u32,
-  [[location(2)]] loc2 : f32,
-  [[location(3)]] loc3 : vec4<f32>,
+  @location(0) @interpolate(flat) loc0 : i32,
+  @location(1) @interpolate(flat) loc1 : u32,
+  @location(2) loc2 : f32,
+  @location(3) loc3 : vec4<f32>,
 ) {
   let i : i32 = loc0;
   let u : u32 = loc1;
diff --git a/test/shader_io/fragment_input_locations.wgsl.expected.wgsl b/test/shader_io/fragment_input_locations.wgsl.expected.wgsl
index ce13406..a4cd502 100644
--- a/test/shader_io/fragment_input_locations.wgsl.expected.wgsl
+++ b/test/shader_io/fragment_input_locations.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
-[[stage(fragment)]]
-fn main([[location(0), interpolate(flat)]] loc0 : i32, [[location(1), interpolate(flat)]] loc1 : u32, [[location(2)]] loc2 : f32, [[location(3)]] loc3 : vec4<f32>) {
+@stage(fragment)
+fn main(@location(0) @interpolate(flat) loc0 : i32, @location(1) @interpolate(flat) loc1 : u32, @location(2) loc2 : f32, @location(3) loc3 : vec4<f32>) {
   let i : i32 = loc0;
   let u : u32 = loc1;
   let f : f32 = loc2;
diff --git a/test/shader_io/fragment_input_locations_struct.wgsl b/test/shader_io/fragment_input_locations_struct.wgsl
index 03840c2..e5e4bd5 100644
--- a/test/shader_io/fragment_input_locations_struct.wgsl
+++ b/test/shader_io/fragment_input_locations_struct.wgsl
@@ -1,11 +1,11 @@
 struct FragmentInputs {
-  [[location(0), interpolate(flat)]] loc0 : i32;
-  [[location(1), interpolate(flat)]] loc1 : u32;
-  [[location(2)]] loc2 : f32;
-  [[location(3)]] loc3 : vec4<f32>;
+  @location(0) @interpolate(flat) loc0 : i32;
+  @location(1) @interpolate(flat) loc1 : u32;
+  @location(2) loc2 : f32;
+  @location(3) loc3 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main(inputs : FragmentInputs) {
   let i : i32 = inputs.loc0;
   let u : u32 = inputs.loc1;
diff --git a/test/shader_io/fragment_input_locations_struct.wgsl.expected.wgsl b/test/shader_io/fragment_input_locations_struct.wgsl.expected.wgsl
index 5179ec9..d4a9ebb 100644
--- a/test/shader_io/fragment_input_locations_struct.wgsl.expected.wgsl
+++ b/test/shader_io/fragment_input_locations_struct.wgsl.expected.wgsl
@@ -1,15 +1,15 @@
 struct FragmentInputs {
-  [[location(0), interpolate(flat)]]
+  @location(0) @interpolate(flat)
   loc0 : i32;
-  [[location(1), interpolate(flat)]]
+  @location(1) @interpolate(flat)
   loc1 : u32;
-  [[location(2)]]
+  @location(2)
   loc2 : f32;
-  [[location(3)]]
+  @location(3)
   loc3 : vec4<f32>;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main(inputs : FragmentInputs) {
   let i : i32 = inputs.loc0;
   let u : u32 = inputs.loc1;
diff --git a/test/shader_io/fragment_input_mixed.wgsl b/test/shader_io/fragment_input_mixed.wgsl
index 62e1312..2bbc728 100644
--- a/test/shader_io/fragment_input_mixed.wgsl
+++ b/test/shader_io/fragment_input_mixed.wgsl
@@ -1,20 +1,20 @@
 struct FragmentInputs0 {
-  [[builtin(position)]] position : vec4<f32>;
-  [[location(0), interpolate(flat)]] loc0 : i32;
+  @builtin(position) position : vec4<f32>;
+  @location(0) @interpolate(flat) loc0 : i32;
 };
 struct FragmentInputs1 {
-  [[location(3)]] loc3 : vec4<f32>;
-  [[builtin(sample_mask)]] sample_mask : u32;
+  @location(3) loc3 : vec4<f32>;
+  @builtin(sample_mask) sample_mask : u32;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main(
   inputs0 : FragmentInputs0,
-  [[builtin(front_facing)]] front_facing : bool,
-  [[location(1), interpolate(flat)]] loc1 : u32,
-  [[builtin(sample_index)]] sample_index : u32,
+  @builtin(front_facing) front_facing : bool,
+  @location(1) @interpolate(flat) loc1 : u32,
+  @builtin(sample_index) sample_index : u32,
   inputs1 : FragmentInputs1,
-  [[location(2)]] loc2 : f32,
+  @location(2) loc2 : f32,
 ) {
   if (front_facing) {
     let foo : vec4<f32> = inputs0.position;
diff --git a/test/shader_io/fragment_input_mixed.wgsl.expected.wgsl b/test/shader_io/fragment_input_mixed.wgsl.expected.wgsl
index bca1e79..78911e6 100644
--- a/test/shader_io/fragment_input_mixed.wgsl.expected.wgsl
+++ b/test/shader_io/fragment_input_mixed.wgsl.expected.wgsl
@@ -1,19 +1,19 @@
 struct FragmentInputs0 {
-  [[builtin(position)]]
+  @builtin(position)
   position : vec4<f32>;
-  [[location(0), interpolate(flat)]]
+  @location(0) @interpolate(flat)
   loc0 : i32;
 }
 
 struct FragmentInputs1 {
-  [[location(3)]]
+  @location(3)
   loc3 : vec4<f32>;
-  [[builtin(sample_mask)]]
+  @builtin(sample_mask)
   sample_mask : u32;
 }
 
-[[stage(fragment)]]
-fn main(inputs0 : FragmentInputs0, [[builtin(front_facing)]] front_facing : bool, [[location(1), interpolate(flat)]] loc1 : u32, [[builtin(sample_index)]] sample_index : u32, inputs1 : FragmentInputs1, [[location(2)]] loc2 : f32) {
+@stage(fragment)
+fn main(inputs0 : FragmentInputs0, @builtin(front_facing) front_facing : bool, @location(1) @interpolate(flat) loc1 : u32, @builtin(sample_index) sample_index : u32, inputs1 : FragmentInputs1, @location(2) loc2 : f32) {
   if (front_facing) {
     let foo : vec4<f32> = inputs0.position;
     let bar : u32 = (sample_index + inputs1.sample_mask);
diff --git a/test/shader_io/fragment_output_builtins.wgsl b/test/shader_io/fragment_output_builtins.wgsl
index 462cb77..914cbad 100644
--- a/test/shader_io/fragment_output_builtins.wgsl
+++ b/test/shader_io/fragment_output_builtins.wgsl
@@ -1,9 +1,9 @@
-[[stage(fragment)]]
-fn main1() -> [[builtin(frag_depth)]] f32 {
+@stage(fragment)
+fn main1() -> @builtin(frag_depth) f32 {
   return 1.0;
 }
 
-[[stage(fragment)]]
-fn main2() -> [[builtin(sample_mask)]] u32 {
+@stage(fragment)
+fn main2() -> @builtin(sample_mask) u32 {
   return 1u;
 }
diff --git a/test/shader_io/fragment_output_builtins.wgsl.expected.wgsl b/test/shader_io/fragment_output_builtins.wgsl.expected.wgsl
index 462cb77..914cbad 100644
--- a/test/shader_io/fragment_output_builtins.wgsl.expected.wgsl
+++ b/test/shader_io/fragment_output_builtins.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
-[[stage(fragment)]]
-fn main1() -> [[builtin(frag_depth)]] f32 {
+@stage(fragment)
+fn main1() -> @builtin(frag_depth) f32 {
   return 1.0;
 }
 
-[[stage(fragment)]]
-fn main2() -> [[builtin(sample_mask)]] u32 {
+@stage(fragment)
+fn main2() -> @builtin(sample_mask) u32 {
   return 1u;
 }
diff --git a/test/shader_io/fragment_output_builtins_struct.wgsl b/test/shader_io/fragment_output_builtins_struct.wgsl
index d7b37f8..a67765f 100644
--- a/test/shader_io/fragment_output_builtins_struct.wgsl
+++ b/test/shader_io/fragment_output_builtins_struct.wgsl
@@ -1,9 +1,9 @@
 struct FragmentOutputs {
-  [[builtin(frag_depth)]] frag_depth : f32;
-  [[builtin(sample_mask)]] sample_mask : u32;
+  @builtin(frag_depth) frag_depth : f32;
+  @builtin(sample_mask) sample_mask : u32;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> FragmentOutputs {
   return FragmentOutputs(1.0, 1u);
 }
diff --git a/test/shader_io/fragment_output_builtins_struct.wgsl.expected.wgsl b/test/shader_io/fragment_output_builtins_struct.wgsl.expected.wgsl
index e87f857..86551d3 100644
--- a/test/shader_io/fragment_output_builtins_struct.wgsl.expected.wgsl
+++ b/test/shader_io/fragment_output_builtins_struct.wgsl.expected.wgsl
@@ -1,11 +1,11 @@
 struct FragmentOutputs {
-  [[builtin(frag_depth)]]
+  @builtin(frag_depth)
   frag_depth : f32;
-  [[builtin(sample_mask)]]
+  @builtin(sample_mask)
   sample_mask : u32;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> FragmentOutputs {
   return FragmentOutputs(1.0, 1u);
 }
diff --git a/test/shader_io/fragment_output_locations.wgsl b/test/shader_io/fragment_output_locations.wgsl
index b5858e8..239589d 100644
--- a/test/shader_io/fragment_output_locations.wgsl
+++ b/test/shader_io/fragment_output_locations.wgsl
@@ -1,19 +1,19 @@
-[[stage(fragment)]]
-fn main0() -> [[location(0)]] i32 {
+@stage(fragment)
+fn main0() -> @location(0) i32 {
   return 1;
 }
 
-[[stage(fragment)]]
-fn main1() -> [[location(1)]] u32 {
+@stage(fragment)
+fn main1() -> @location(1) u32 {
   return 1u;
 }
 
-[[stage(fragment)]]
-fn main2() -> [[location(2)]] f32 {
+@stage(fragment)
+fn main2() -> @location(2) f32 {
   return 1.0;
 }
 
-[[stage(fragment)]]
-fn main3() -> [[location(3)]] vec4<f32> {
+@stage(fragment)
+fn main3() -> @location(3) vec4<f32> {
   return vec4<f32>(1.0, 2.0, 3.0, 4.0);
 }
diff --git a/test/shader_io/fragment_output_locations.wgsl.expected.wgsl b/test/shader_io/fragment_output_locations.wgsl.expected.wgsl
index b5858e8..239589d 100644
--- a/test/shader_io/fragment_output_locations.wgsl.expected.wgsl
+++ b/test/shader_io/fragment_output_locations.wgsl.expected.wgsl
@@ -1,19 +1,19 @@
-[[stage(fragment)]]
-fn main0() -> [[location(0)]] i32 {
+@stage(fragment)
+fn main0() -> @location(0) i32 {
   return 1;
 }
 
-[[stage(fragment)]]
-fn main1() -> [[location(1)]] u32 {
+@stage(fragment)
+fn main1() -> @location(1) u32 {
   return 1u;
 }
 
-[[stage(fragment)]]
-fn main2() -> [[location(2)]] f32 {
+@stage(fragment)
+fn main2() -> @location(2) f32 {
   return 1.0;
 }
 
-[[stage(fragment)]]
-fn main3() -> [[location(3)]] vec4<f32> {
+@stage(fragment)
+fn main3() -> @location(3) vec4<f32> {
   return vec4<f32>(1.0, 2.0, 3.0, 4.0);
 }
diff --git a/test/shader_io/fragment_output_locations_struct.wgsl b/test/shader_io/fragment_output_locations_struct.wgsl
index c196843..9d7c9c7 100644
--- a/test/shader_io/fragment_output_locations_struct.wgsl
+++ b/test/shader_io/fragment_output_locations_struct.wgsl
@@ -1,11 +1,11 @@
 struct FragmentOutputs {
-  [[location(0)]] loc0 : i32;
-  [[location(1)]] loc1 : u32;
-  [[location(2)]] loc2 : f32;
-  [[location(3)]] loc3 : vec4<f32>;
+  @location(0) loc0 : i32;
+  @location(1) loc1 : u32;
+  @location(2) loc2 : f32;
+  @location(3) loc3 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> FragmentOutputs {
   return FragmentOutputs(1, 1u, 1.0, vec4<f32>(1.0, 2.0, 3.0, 4.0));
 }
diff --git a/test/shader_io/fragment_output_locations_struct.wgsl.expected.wgsl b/test/shader_io/fragment_output_locations_struct.wgsl.expected.wgsl
index da4e7cf..5196236 100644
--- a/test/shader_io/fragment_output_locations_struct.wgsl.expected.wgsl
+++ b/test/shader_io/fragment_output_locations_struct.wgsl.expected.wgsl
@@ -1,15 +1,15 @@
 struct FragmentOutputs {
-  [[location(0)]]
+  @location(0)
   loc0 : i32;
-  [[location(1)]]
+  @location(1)
   loc1 : u32;
-  [[location(2)]]
+  @location(2)
   loc2 : f32;
-  [[location(3)]]
+  @location(3)
   loc3 : vec4<f32>;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> FragmentOutputs {
   return FragmentOutputs(1, 1u, 1.0, vec4<f32>(1.0, 2.0, 3.0, 4.0));
 }
diff --git a/test/shader_io/fragment_output_mixed.wgsl b/test/shader_io/fragment_output_mixed.wgsl
index 29e5108..58fe80b 100644
--- a/test/shader_io/fragment_output_mixed.wgsl
+++ b/test/shader_io/fragment_output_mixed.wgsl
@@ -1,13 +1,13 @@
 struct FragmentOutputs {
-  [[location(0)]] loc0 : i32;
-  [[builtin(frag_depth)]] frag_depth : f32;
-  [[location(1)]] loc1 : u32;
-  [[location(2)]] loc2 : f32;
-  [[builtin(sample_mask)]] sample_mask : u32;
-  [[location(3)]] loc3 : vec4<f32>;
+  @location(0) loc0 : i32;
+  @builtin(frag_depth) frag_depth : f32;
+  @location(1) loc1 : u32;
+  @location(2) loc2 : f32;
+  @builtin(sample_mask) sample_mask : u32;
+  @location(3) loc3 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> FragmentOutputs {
   return FragmentOutputs(1, 2.0, 1u, 1.0, 2u, vec4<f32>(1.0, 2.0, 3.0, 4.0));
 }
diff --git a/test/shader_io/fragment_output_mixed.wgsl.expected.wgsl b/test/shader_io/fragment_output_mixed.wgsl.expected.wgsl
index 8069265..3cc71b6 100644
--- a/test/shader_io/fragment_output_mixed.wgsl.expected.wgsl
+++ b/test/shader_io/fragment_output_mixed.wgsl.expected.wgsl
@@ -1,19 +1,19 @@
 struct FragmentOutputs {
-  [[location(0)]]
+  @location(0)
   loc0 : i32;
-  [[builtin(frag_depth)]]
+  @builtin(frag_depth)
   frag_depth : f32;
-  [[location(1)]]
+  @location(1)
   loc1 : u32;
-  [[location(2)]]
+  @location(2)
   loc2 : f32;
-  [[builtin(sample_mask)]]
+  @builtin(sample_mask)
   sample_mask : u32;
-  [[location(3)]]
+  @location(3)
   loc3 : vec4<f32>;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> FragmentOutputs {
   return FragmentOutputs(1, 2.0, 1u, 1.0, 2u, vec4<f32>(1.0, 2.0, 3.0, 4.0));
 }
diff --git a/test/shader_io/interpolate_input_parameters.wgsl b/test/shader_io/interpolate_input_parameters.wgsl
index 64556cd..3e350ea 100644
--- a/test/shader_io/interpolate_input_parameters.wgsl
+++ b/test/shader_io/interpolate_input_parameters.wgsl
@@ -1,11 +1,11 @@
-[[stage(fragment)]]
+@stage(fragment)
 fn main(
-  [[location(0)]] none : f32,
-  [[location(1), interpolate(flat)]] flat : f32,
-  [[location(2), interpolate(perspective, center)]] perspective_center : f32,
-  [[location(3), interpolate(perspective, centroid)]] perspective_centroid : f32,
-  [[location(4), interpolate(perspective, sample)]] perspective_sample : f32,
-  [[location(5), interpolate(linear, center)]] linear_center : f32,
-  [[location(6), interpolate(linear, centroid)]] linear_centroid : f32,
-  [[location(7), interpolate(linear, sample)]] linear_sample : f32) {
+  @location(0) none : f32,
+  @location(1) @interpolate(flat) flat : f32,
+  @location(2) @interpolate(perspective, center) perspective_center : f32,
+  @location(3) @interpolate(perspective, centroid) perspective_centroid : f32,
+  @location(4) @interpolate(perspective, sample) perspective_sample : f32,
+  @location(5) @interpolate(linear, center) linear_center : f32,
+  @location(6) @interpolate(linear, centroid) linear_centroid : f32,
+  @location(7) @interpolate(linear, sample) linear_sample : f32) {
 }
diff --git a/test/shader_io/interpolate_input_parameters.wgsl.expected.wgsl b/test/shader_io/interpolate_input_parameters.wgsl.expected.wgsl
index 3488ca7..8dbd5b1 100644
--- a/test/shader_io/interpolate_input_parameters.wgsl.expected.wgsl
+++ b/test/shader_io/interpolate_input_parameters.wgsl.expected.wgsl
@@ -1,3 +1,3 @@
-[[stage(fragment)]]
-fn main([[location(0)]] none : f32, [[location(1), interpolate(flat)]] flat : f32, [[location(2), interpolate(perspective, center)]] perspective_center : f32, [[location(3), interpolate(perspective, centroid)]] perspective_centroid : f32, [[location(4), interpolate(perspective, sample)]] perspective_sample : f32, [[location(5), interpolate(linear, center)]] linear_center : f32, [[location(6), interpolate(linear, centroid)]] linear_centroid : f32, [[location(7), interpolate(linear, sample)]] linear_sample : f32) {
+@stage(fragment)
+fn main(@location(0) none : f32, @location(1) @interpolate(flat) flat : f32, @location(2) @interpolate(perspective, center) perspective_center : f32, @location(3) @interpolate(perspective, centroid) perspective_centroid : f32, @location(4) @interpolate(perspective, sample) perspective_sample : f32, @location(5) @interpolate(linear, center) linear_center : f32, @location(6) @interpolate(linear, centroid) linear_centroid : f32, @location(7) @interpolate(linear, sample) linear_sample : f32) {
 }
diff --git a/test/shader_io/interpolate_input_struct.wgsl b/test/shader_io/interpolate_input_struct.wgsl
index 0299250..5f5c8c1 100644
--- a/test/shader_io/interpolate_input_struct.wgsl
+++ b/test/shader_io/interpolate_input_struct.wgsl
@@ -1,14 +1,14 @@
 struct In {
-  [[location(0)]] none : f32;
-  [[location(1), interpolate(flat)]] flat : f32;
-  [[location(2), interpolate(perspective, center)]] perspective_center : f32;
-  [[location(3), interpolate(perspective, centroid)]] perspective_centroid : f32;
-  [[location(4), interpolate(perspective, sample)]] perspective_sample : f32;
-  [[location(5), interpolate(linear, center)]] linear_center : f32;
-  [[location(6), interpolate(linear, centroid)]] linear_centroid : f32;
-  [[location(7), interpolate(linear, sample)]] linear_sample : f32;
+  @location(0) none : f32;
+  @location(1) @interpolate(flat) flat : f32;
+  @location(2) @interpolate(perspective, center) perspective_center : f32;
+  @location(3) @interpolate(perspective, centroid) perspective_centroid : f32;
+  @location(4) @interpolate(perspective, sample) perspective_sample : f32;
+  @location(5) @interpolate(linear, center) linear_center : f32;
+  @location(6) @interpolate(linear, centroid) linear_centroid : f32;
+  @location(7) @interpolate(linear, sample) linear_sample : f32;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main(in : In) {
 }
diff --git a/test/shader_io/interpolate_input_struct.wgsl.expected.wgsl b/test/shader_io/interpolate_input_struct.wgsl.expected.wgsl
index 20a8106..3a34745 100644
--- a/test/shader_io/interpolate_input_struct.wgsl.expected.wgsl
+++ b/test/shader_io/interpolate_input_struct.wgsl.expected.wgsl
@@ -1,22 +1,22 @@
 struct In {
-  [[location(0)]]
+  @location(0)
   none : f32;
-  [[location(1), interpolate(flat)]]
+  @location(1) @interpolate(flat)
   flat : f32;
-  [[location(2), interpolate(perspective, center)]]
+  @location(2) @interpolate(perspective, center)
   perspective_center : f32;
-  [[location(3), interpolate(perspective, centroid)]]
+  @location(3) @interpolate(perspective, centroid)
   perspective_centroid : f32;
-  [[location(4), interpolate(perspective, sample)]]
+  @location(4) @interpolate(perspective, sample)
   perspective_sample : f32;
-  [[location(5), interpolate(linear, center)]]
+  @location(5) @interpolate(linear, center)
   linear_center : f32;
-  [[location(6), interpolate(linear, centroid)]]
+  @location(6) @interpolate(linear, centroid)
   linear_centroid : f32;
-  [[location(7), interpolate(linear, sample)]]
+  @location(7) @interpolate(linear, sample)
   linear_sample : f32;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main(in : In) {
 }
diff --git a/test/shader_io/interpolate_integers.wgsl b/test/shader_io/interpolate_integers.wgsl
index 4b3ebe7..f961c8a 100644
--- a/test/shader_io/interpolate_integers.wgsl
+++ b/test/shader_io/interpolate_integers.wgsl
@@ -1,17 +1,17 @@
 struct Interface {
-  [[location(0), interpolate(flat)]] i : i32;
-  [[location(1), interpolate(flat)]] u : u32;
-  [[location(2), interpolate(flat)]] vi : vec4<i32>;
-  [[location(3), interpolate(flat)]] vu : vec4<u32>;
-  [[builtin(position)]] pos : vec4<f32>;
+  @location(0) @interpolate(flat) i : i32;
+  @location(1) @interpolate(flat) u : u32;
+  @location(2) @interpolate(flat) vi : vec4<i32>;
+  @location(3) @interpolate(flat) vu : vec4<u32>;
+  @builtin(position) pos : vec4<f32>;
 };
 
-[[stage(vertex)]]
+@stage(vertex)
 fn vert_main() -> Interface {
   return Interface();
 }
 
-[[stage(fragment)]]
-fn frag_main(inputs : Interface) -> [[location(0)]] i32 {
+@stage(fragment)
+fn frag_main(inputs : Interface) -> @location(0) i32 {
   return inputs.i;
 }
diff --git a/test/shader_io/interpolate_integers.wgsl.expected.wgsl b/test/shader_io/interpolate_integers.wgsl.expected.wgsl
index afabf7c..a6efd12 100644
--- a/test/shader_io/interpolate_integers.wgsl.expected.wgsl
+++ b/test/shader_io/interpolate_integers.wgsl.expected.wgsl
@@ -1,22 +1,22 @@
 struct Interface {
-  [[location(0), interpolate(flat)]]
+  @location(0) @interpolate(flat)
   i : i32;
-  [[location(1), interpolate(flat)]]
+  @location(1) @interpolate(flat)
   u : u32;
-  [[location(2), interpolate(flat)]]
+  @location(2) @interpolate(flat)
   vi : vec4<i32>;
-  [[location(3), interpolate(flat)]]
+  @location(3) @interpolate(flat)
   vu : vec4<u32>;
-  [[builtin(position)]]
+  @builtin(position)
   pos : vec4<f32>;
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn vert_main() -> Interface {
   return Interface();
 }
 
-[[stage(fragment)]]
-fn frag_main(inputs : Interface) -> [[location(0)]] i32 {
+@stage(fragment)
+fn frag_main(inputs : Interface) -> @location(0) i32 {
   return inputs.i;
 }
diff --git a/test/shader_io/interpolate_return_struct.wgsl b/test/shader_io/interpolate_return_struct.wgsl
index 9d24e61..0cff79e 100644
--- a/test/shader_io/interpolate_return_struct.wgsl
+++ b/test/shader_io/interpolate_return_struct.wgsl
@@ -1,16 +1,16 @@
 struct Out {
-  [[builtin(position)]] pos : vec4<f32>;
-  [[location(0)]] none : f32;
-  [[location(1), interpolate(flat)]] flat : f32;
-  [[location(2), interpolate(perspective, center)]] perspective_center : f32;
-  [[location(3), interpolate(perspective, centroid)]] perspective_centroid : f32;
-  [[location(4), interpolate(perspective, sample)]] perspective_sample : f32;
-  [[location(5), interpolate(linear, center)]] linear_center : f32;
-  [[location(6), interpolate(linear, centroid)]] linear_centroid : f32;
-  [[location(7), interpolate(linear, sample)]] linear_sample : f32;
+  @builtin(position) pos : vec4<f32>;
+  @location(0) none : f32;
+  @location(1) @interpolate(flat) flat : f32;
+  @location(2) @interpolate(perspective, center) perspective_center : f32;
+  @location(3) @interpolate(perspective, centroid) perspective_centroid : f32;
+  @location(4) @interpolate(perspective, sample) perspective_sample : f32;
+  @location(5) @interpolate(linear, center) linear_center : f32;
+  @location(6) @interpolate(linear, centroid) linear_centroid : f32;
+  @location(7) @interpolate(linear, sample) linear_sample : f32;
 };
 
-[[stage(vertex)]]
+@stage(vertex)
 fn main() -> Out {
   return Out();
 }
diff --git a/test/shader_io/interpolate_return_struct.wgsl.expected.wgsl b/test/shader_io/interpolate_return_struct.wgsl.expected.wgsl
index bcf8177..9a2164a 100644
--- a/test/shader_io/interpolate_return_struct.wgsl.expected.wgsl
+++ b/test/shader_io/interpolate_return_struct.wgsl.expected.wgsl
@@ -1,25 +1,25 @@
 struct Out {
-  [[builtin(position)]]
+  @builtin(position)
   pos : vec4<f32>;
-  [[location(0)]]
+  @location(0)
   none : f32;
-  [[location(1), interpolate(flat)]]
+  @location(1) @interpolate(flat)
   flat : f32;
-  [[location(2), interpolate(perspective, center)]]
+  @location(2) @interpolate(perspective, center)
   perspective_center : f32;
-  [[location(3), interpolate(perspective, centroid)]]
+  @location(3) @interpolate(perspective, centroid)
   perspective_centroid : f32;
-  [[location(4), interpolate(perspective, sample)]]
+  @location(4) @interpolate(perspective, sample)
   perspective_sample : f32;
-  [[location(5), interpolate(linear, center)]]
+  @location(5) @interpolate(linear, center)
   linear_center : f32;
-  [[location(6), interpolate(linear, centroid)]]
+  @location(6) @interpolate(linear, centroid)
   linear_centroid : f32;
-  [[location(7), interpolate(linear, sample)]]
+  @location(7) @interpolate(linear, sample)
   linear_sample : f32;
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn main() -> Out {
   return Out();
 }
diff --git a/test/shader_io/invariant.wgsl b/test/shader_io/invariant.wgsl
index 66b0649..9abbc94 100644
--- a/test/shader_io/invariant.wgsl
+++ b/test/shader_io/invariant.wgsl
@@ -1,4 +1,4 @@
-[[stage(vertex)]]
-fn main() -> [[builtin(position), invariant]] vec4<f32> {
+@stage(vertex)
+fn main() -> @builtin(position) @invariant vec4<f32> {
   return vec4<f32>();
 }
diff --git a/test/shader_io/invariant.wgsl.expected.wgsl b/test/shader_io/invariant.wgsl.expected.wgsl
index 66b0649..9abbc94 100644
--- a/test/shader_io/invariant.wgsl.expected.wgsl
+++ b/test/shader_io/invariant.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(vertex)]]
-fn main() -> [[builtin(position), invariant]] vec4<f32> {
+@stage(vertex)
+fn main() -> @builtin(position) @invariant vec4<f32> {
   return vec4<f32>();
 }
diff --git a/test/shader_io/invariant_struct_member.wgsl b/test/shader_io/invariant_struct_member.wgsl
index 97d813f..3b2a6ad 100644
--- a/test/shader_io/invariant_struct_member.wgsl
+++ b/test/shader_io/invariant_struct_member.wgsl
@@ -1,8 +1,8 @@
 struct Out {
-  [[builtin(position), invariant]] pos : vec4<f32>;
+  @builtin(position) @invariant pos : vec4<f32>;
 };
 
-[[stage(vertex)]]
+@stage(vertex)
 fn main() -> Out {
   return Out();
 }
diff --git a/test/shader_io/invariant_struct_member.wgsl.expected.wgsl b/test/shader_io/invariant_struct_member.wgsl.expected.wgsl
index 503a0ba..64d1f60 100644
--- a/test/shader_io/invariant_struct_member.wgsl.expected.wgsl
+++ b/test/shader_io/invariant_struct_member.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 struct Out {
-  [[builtin(position), invariant]]
+  @builtin(position) @invariant
   pos : vec4<f32>;
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn main() -> Out {
   return Out();
 }
diff --git a/test/shader_io/shared_struct_different_stages.wgsl b/test/shader_io/shared_struct_different_stages.wgsl
index 802ce43..2e52791 100644
--- a/test/shader_io/shared_struct_different_stages.wgsl
+++ b/test/shader_io/shared_struct_different_stages.wgsl
@@ -1,15 +1,15 @@
 struct Interface {
-  [[location(1)]] col1 : f32;
-  [[location(2)]] col2 : f32;
-  [[builtin(position)]] pos : vec4<f32>;
+  @location(1) col1 : f32;
+  @location(2) col2 : f32;
+  @builtin(position) pos : vec4<f32>;
 };
 
-[[stage(vertex)]]
+@stage(vertex)
 fn vert_main() -> Interface {
   return Interface(0.4, 0.6, vec4<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main(colors : Interface) {
   let r : f32 = colors.col1;
   let g : f32 = colors.col2;
diff --git a/test/shader_io/shared_struct_different_stages.wgsl.expected.wgsl b/test/shader_io/shared_struct_different_stages.wgsl.expected.wgsl
index 343afdd..81fbc7a 100644
--- a/test/shader_io/shared_struct_different_stages.wgsl.expected.wgsl
+++ b/test/shader_io/shared_struct_different_stages.wgsl.expected.wgsl
@@ -1,18 +1,18 @@
 struct Interface {
-  [[location(1)]]
+  @location(1)
   col1 : f32;
-  [[location(2)]]
+  @location(2)
   col2 : f32;
-  [[builtin(position)]]
+  @builtin(position)
   pos : vec4<f32>;
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn vert_main() -> Interface {
   return Interface(0.400000006, 0.600000024, vec4<f32>());
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main(colors : Interface) {
   let r : f32 = colors.col1;
   let g : f32 = colors.col2;
diff --git a/test/shader_io/shared_struct_helper_function.wgsl b/test/shader_io/shared_struct_helper_function.wgsl
index 2ebd094..7f7d203 100644
--- a/test/shader_io/shared_struct_helper_function.wgsl
+++ b/test/shader_io/shared_struct_helper_function.wgsl
@@ -1,18 +1,18 @@
 struct VertexOutput {
-  [[builtin(position)]] pos : vec4<f32>;
-  [[location(0), interpolate(flat)]] loc0 : i32;
+  @builtin(position) pos : vec4<f32>;
+  @location(0) @interpolate(flat) loc0 : i32;
 };
 
 fn foo(x : f32) -> VertexOutput {
   return VertexOutput(vec4<f32>(x, x, x, 1.0), 42);
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn vert_main1() -> VertexOutput {
   return foo(0.5);
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn vert_main2() -> VertexOutput {
   return foo(0.25);
 }
diff --git a/test/shader_io/shared_struct_helper_function.wgsl.expected.wgsl b/test/shader_io/shared_struct_helper_function.wgsl.expected.wgsl
index 034d5e1..4cad81a 100644
--- a/test/shader_io/shared_struct_helper_function.wgsl.expected.wgsl
+++ b/test/shader_io/shared_struct_helper_function.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 struct VertexOutput {
-  [[builtin(position)]]
+  @builtin(position)
   pos : vec4<f32>;
-  [[location(0), interpolate(flat)]]
+  @location(0) @interpolate(flat)
   loc0 : i32;
 }
 
@@ -9,12 +9,12 @@
   return VertexOutput(vec4<f32>(x, x, x, 1.0), 42);
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn vert_main1() -> VertexOutput {
   return foo(0.5);
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn vert_main2() -> VertexOutput {
   return foo(0.25);
 }
diff --git a/test/shader_io/shared_struct_storage_buffer.wgsl b/test/shader_io/shared_struct_storage_buffer.wgsl
index 5d3f93e..83b1ba5 100644
--- a/test/shader_io/shared_struct_storage_buffer.wgsl
+++ b/test/shader_io/shared_struct_storage_buffer.wgsl
@@ -1,13 +1,13 @@
 struct S {
-  [[align(64)]] [[location(0)]] f : f32;
-  [[size(32)]] [[location(1), interpolate(flat)]] u : u32;
-  [[align(128)]] [[builtin(position)]] v : vec4<f32>;
+  @align(64) @location(0) f : f32;
+  @size(32) @location(1) @interpolate(flat) u : u32;
+  @align(128) @builtin(position) v : vec4<f32>;
 };
 
-[[group(0), binding(0)]]
+@group(0) @binding(0)
 var<storage, write> output : S;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main(input : S) {
   let f : f32 = input.f;
   let u : u32 = input.u;
diff --git a/test/shader_io/shared_struct_storage_buffer.wgsl.expected.wgsl b/test/shader_io/shared_struct_storage_buffer.wgsl.expected.wgsl
index 7872704..f4667a4 100644
--- a/test/shader_io/shared_struct_storage_buffer.wgsl.expected.wgsl
+++ b/test/shader_io/shared_struct_storage_buffer.wgsl.expected.wgsl
@@ -1,15 +1,15 @@
 struct S {
-  [[align(64), location(0)]]
+  @align(64) @location(0)
   f : f32;
-  [[size(32), location(1), interpolate(flat)]]
+  @size(32) @location(1) @interpolate(flat)
   u : u32;
-  [[align(128), builtin(position)]]
+  @align(128) @builtin(position)
   v : vec4<f32>;
 }
 
-[[group(0), binding(0)]] var<storage, write> output : S;
+@group(0) @binding(0) var<storage, write> output : S;
 
-[[stage(fragment)]]
+@stage(fragment)
 fn frag_main(input : S) {
   let f : f32 = input.f;
   let u : u32 = input.u;
diff --git a/test/shader_io/vertex_input_builtins.wgsl b/test/shader_io/vertex_input_builtins.wgsl
index 6d207b5..a73ae88 100644
--- a/test/shader_io/vertex_input_builtins.wgsl
+++ b/test/shader_io/vertex_input_builtins.wgsl
@@ -1,8 +1,8 @@
-[[stage(vertex)]]
+@stage(vertex)
 fn main(
-  [[builtin(vertex_index)]] vertex_index : u32,
-  [[builtin(instance_index)]] instance_index : u32,
-) -> [[builtin(position)]] vec4<f32> {
+  @builtin(vertex_index) vertex_index : u32,
+  @builtin(instance_index) instance_index : u32,
+) -> @builtin(position) vec4<f32> {
   let foo : u32 = vertex_index + instance_index;
   return vec4<f32>();
 }
diff --git a/test/shader_io/vertex_input_builtins.wgsl.expected.wgsl b/test/shader_io/vertex_input_builtins.wgsl.expected.wgsl
index ef2f3ac..9955c16 100644
--- a/test/shader_io/vertex_input_builtins.wgsl.expected.wgsl
+++ b/test/shader_io/vertex_input_builtins.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
-[[stage(vertex)]]
-fn main([[builtin(vertex_index)]] vertex_index : u32, [[builtin(instance_index)]] instance_index : u32) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main(@builtin(vertex_index) vertex_index : u32, @builtin(instance_index) instance_index : u32) -> @builtin(position) vec4<f32> {
   let foo : u32 = (vertex_index + instance_index);
   return vec4<f32>();
 }
diff --git a/test/shader_io/vertex_input_builtins_struct.wgsl b/test/shader_io/vertex_input_builtins_struct.wgsl
index d81bcdc..03c295a 100644
--- a/test/shader_io/vertex_input_builtins_struct.wgsl
+++ b/test/shader_io/vertex_input_builtins_struct.wgsl
@@ -1,10 +1,10 @@
 struct VertexInputs {
-  [[builtin(vertex_index)]] vertex_index : u32;
-  [[builtin(instance_index)]] instance_index : u32;
+  @builtin(vertex_index) vertex_index : u32;
+  @builtin(instance_index) instance_index : u32;
 };
 
-[[stage(vertex)]]
-fn main(inputs : VertexInputs) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main(inputs : VertexInputs) -> @builtin(position) vec4<f32> {
   let foo : u32 = inputs.vertex_index + inputs.instance_index;
   return vec4<f32>();
 }
diff --git a/test/shader_io/vertex_input_builtins_struct.wgsl.expected.wgsl b/test/shader_io/vertex_input_builtins_struct.wgsl.expected.wgsl
index 7d885b4..e48655f 100644
--- a/test/shader_io/vertex_input_builtins_struct.wgsl.expected.wgsl
+++ b/test/shader_io/vertex_input_builtins_struct.wgsl.expected.wgsl
@@ -1,12 +1,12 @@
 struct VertexInputs {
-  [[builtin(vertex_index)]]
+  @builtin(vertex_index)
   vertex_index : u32;
-  [[builtin(instance_index)]]
+  @builtin(instance_index)
   instance_index : u32;
 }
 
-[[stage(vertex)]]
-fn main(inputs : VertexInputs) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main(inputs : VertexInputs) -> @builtin(position) vec4<f32> {
   let foo : u32 = (inputs.vertex_index + inputs.instance_index);
   return vec4<f32>();
 }
diff --git a/test/shader_io/vertex_input_locations.wgsl b/test/shader_io/vertex_input_locations.wgsl
index 13fad04..3627e13 100644
--- a/test/shader_io/vertex_input_locations.wgsl
+++ b/test/shader_io/vertex_input_locations.wgsl
@@ -1,10 +1,10 @@
-[[stage(vertex)]]
+@stage(vertex)
 fn main(
-  [[location(0)]] loc0 : i32,
-  [[location(1)]] loc1 : u32,
-  [[location(2)]] loc2 : f32,
-  [[location(3)]] loc3 : vec4<f32>,
-) -> [[builtin(position)]] vec4<f32> {
+  @location(0) loc0 : i32,
+  @location(1) loc1 : u32,
+  @location(2) loc2 : f32,
+  @location(3) loc3 : vec4<f32>,
+) -> @builtin(position) vec4<f32> {
   let i : i32 = loc0;
   let u : u32 = loc1;
   let f : f32 = loc2;
diff --git a/test/shader_io/vertex_input_locations.wgsl.expected.wgsl b/test/shader_io/vertex_input_locations.wgsl.expected.wgsl
index 3730fec..4964dc7 100644
--- a/test/shader_io/vertex_input_locations.wgsl.expected.wgsl
+++ b/test/shader_io/vertex_input_locations.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
-[[stage(vertex)]]
-fn main([[location(0)]] loc0 : i32, [[location(1)]] loc1 : u32, [[location(2)]] loc2 : f32, [[location(3)]] loc3 : vec4<f32>) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main(@location(0) loc0 : i32, @location(1) loc1 : u32, @location(2) loc2 : f32, @location(3) loc3 : vec4<f32>) -> @builtin(position) vec4<f32> {
   let i : i32 = loc0;
   let u : u32 = loc1;
   let f : f32 = loc2;
diff --git a/test/shader_io/vertex_input_locations_struct.wgsl b/test/shader_io/vertex_input_locations_struct.wgsl
index 441ffdc..96a8145 100644
--- a/test/shader_io/vertex_input_locations_struct.wgsl
+++ b/test/shader_io/vertex_input_locations_struct.wgsl
@@ -1,12 +1,12 @@
 struct VertexInputs {
-  [[location(0)]] loc0 : i32;
-  [[location(1)]] loc1 : u32;
-  [[location(2)]] loc2 : f32;
-  [[location(3)]] loc3 : vec4<f32>;
+  @location(0) loc0 : i32;
+  @location(1) loc1 : u32;
+  @location(2) loc2 : f32;
+  @location(3) loc3 : vec4<f32>;
 };
 
-[[stage(vertex)]]
-fn main(inputs : VertexInputs) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main(inputs : VertexInputs) -> @builtin(position) vec4<f32> {
   let i : i32 = inputs.loc0;
   let u : u32 = inputs.loc1;
   let f : f32 = inputs.loc2;
diff --git a/test/shader_io/vertex_input_locations_struct.wgsl.expected.wgsl b/test/shader_io/vertex_input_locations_struct.wgsl.expected.wgsl
index 7b7c1b0..c267c60 100644
--- a/test/shader_io/vertex_input_locations_struct.wgsl.expected.wgsl
+++ b/test/shader_io/vertex_input_locations_struct.wgsl.expected.wgsl
@@ -1,16 +1,16 @@
 struct VertexInputs {
-  [[location(0)]]
+  @location(0)
   loc0 : i32;
-  [[location(1)]]
+  @location(1)
   loc1 : u32;
-  [[location(2)]]
+  @location(2)
   loc2 : f32;
-  [[location(3)]]
+  @location(3)
   loc3 : vec4<f32>;
 }
 
-[[stage(vertex)]]
-fn main(inputs : VertexInputs) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main(inputs : VertexInputs) -> @builtin(position) vec4<f32> {
   let i : i32 = inputs.loc0;
   let u : u32 = inputs.loc1;
   let f : f32 = inputs.loc2;
diff --git a/test/shader_io/vertex_input_mixed.wgsl b/test/shader_io/vertex_input_mixed.wgsl
index 7c5eafe..8e3c764 100644
--- a/test/shader_io/vertex_input_mixed.wgsl
+++ b/test/shader_io/vertex_input_mixed.wgsl
@@ -1,19 +1,19 @@
 struct VertexInputs0 {
-  [[builtin(vertex_index)]] vertex_index : u32;
-  [[location(0)]] loc0 : i32;
+  @builtin(vertex_index) vertex_index : u32;
+  @location(0) loc0 : i32;
 };
 struct VertexInputs1 {
-  [[location(2)]] loc2 : f32;
-  [[location(3)]] loc3 : vec4<f32>;
+  @location(2) loc2 : f32;
+  @location(3) loc3 : vec4<f32>;
 };
 
-[[stage(vertex)]]
+@stage(vertex)
 fn main(
   inputs0 : VertexInputs0,
-  [[location(1)]] loc1 : u32,
-  [[builtin(instance_index)]] instance_index : u32,
+  @location(1) loc1 : u32,
+  @builtin(instance_index) instance_index : u32,
   inputs1 : VertexInputs1,
-) -> [[builtin(position)]] vec4<f32> {
+) -> @builtin(position) vec4<f32> {
   let foo : u32 = inputs0.vertex_index + instance_index;
   let i : i32 = inputs0.loc0;
   let u : u32 = loc1;
diff --git a/test/shader_io/vertex_input_mixed.wgsl.expected.wgsl b/test/shader_io/vertex_input_mixed.wgsl.expected.wgsl
index 81a6507..5830ebe 100644
--- a/test/shader_io/vertex_input_mixed.wgsl.expected.wgsl
+++ b/test/shader_io/vertex_input_mixed.wgsl.expected.wgsl
@@ -1,19 +1,19 @@
 struct VertexInputs0 {
-  [[builtin(vertex_index)]]
+  @builtin(vertex_index)
   vertex_index : u32;
-  [[location(0)]]
+  @location(0)
   loc0 : i32;
 }
 
 struct VertexInputs1 {
-  [[location(2)]]
+  @location(2)
   loc2 : f32;
-  [[location(3)]]
+  @location(3)
   loc3 : vec4<f32>;
 }
 
-[[stage(vertex)]]
-fn main(inputs0 : VertexInputs0, [[location(1)]] loc1 : u32, [[builtin(instance_index)]] instance_index : u32, inputs1 : VertexInputs1) -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main(inputs0 : VertexInputs0, @location(1) loc1 : u32, @builtin(instance_index) instance_index : u32, inputs1 : VertexInputs1) -> @builtin(position) vec4<f32> {
   let foo : u32 = (inputs0.vertex_index + instance_index);
   let i : i32 = inputs0.loc0;
   let u : u32 = loc1;
diff --git a/test/shader_io/vertex_output_builtins.wgsl b/test/shader_io/vertex_output_builtins.wgsl
index 46776de..d606b44 100644
--- a/test/shader_io/vertex_output_builtins.wgsl
+++ b/test/shader_io/vertex_output_builtins.wgsl
@@ -1,4 +1,4 @@
-[[stage(vertex)]]
-fn main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main() -> @builtin(position) vec4<f32> {
   return vec4<f32>(1.0, 2.0, 3.0, 4.0);
 }
diff --git a/test/shader_io/vertex_output_builtins.wgsl.expected.wgsl b/test/shader_io/vertex_output_builtins.wgsl.expected.wgsl
index 46776de..d606b44 100644
--- a/test/shader_io/vertex_output_builtins.wgsl.expected.wgsl
+++ b/test/shader_io/vertex_output_builtins.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(vertex)]]
-fn main() -> [[builtin(position)]] vec4<f32> {
+@stage(vertex)
+fn main() -> @builtin(position) vec4<f32> {
   return vec4<f32>(1.0, 2.0, 3.0, 4.0);
 }
diff --git a/test/shader_io/vertex_output_builtins_struct.wgsl b/test/shader_io/vertex_output_builtins_struct.wgsl
index 9e09d38..afdcdf5 100644
--- a/test/shader_io/vertex_output_builtins_struct.wgsl
+++ b/test/shader_io/vertex_output_builtins_struct.wgsl
@@ -1,8 +1,8 @@
 struct VertexOutputs {
-  [[builtin(position)]] position : vec4<f32>;
+  @builtin(position) position : vec4<f32>;
 };
 
-[[stage(vertex)]]
+@stage(vertex)
 fn main() -> VertexOutputs {
   return VertexOutputs(vec4<f32>(1.0, 2.0, 3.0, 4.0));
 }
diff --git a/test/shader_io/vertex_output_builtins_struct.wgsl.expected.wgsl b/test/shader_io/vertex_output_builtins_struct.wgsl.expected.wgsl
index 744325c..f08c3a8 100644
--- a/test/shader_io/vertex_output_builtins_struct.wgsl.expected.wgsl
+++ b/test/shader_io/vertex_output_builtins_struct.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
 struct VertexOutputs {
-  [[builtin(position)]]
+  @builtin(position)
   position : vec4<f32>;
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn main() -> VertexOutputs {
   return VertexOutputs(vec4<f32>(1.0, 2.0, 3.0, 4.0));
 }
diff --git a/test/shader_io/vertex_output_locations_struct.wgsl b/test/shader_io/vertex_output_locations_struct.wgsl
index e7c4db1..aca5f94 100644
--- a/test/shader_io/vertex_output_locations_struct.wgsl
+++ b/test/shader_io/vertex_output_locations_struct.wgsl
@@ -1,12 +1,12 @@
 struct VertexOutputs {
-  [[location(0), interpolate(flat)]] loc0 : i32;
-  [[location(1), interpolate(flat)]] loc1 : u32;
-  [[location(2)]] loc2 : f32;
-  [[location(3)]] loc3 : vec4<f32>;
-  [[builtin(position)]] position : vec4<f32>;
+  @location(0) @interpolate(flat) loc0 : i32;
+  @location(1) @interpolate(flat) loc1 : u32;
+  @location(2) loc2 : f32;
+  @location(3) loc3 : vec4<f32>;
+  @builtin(position) position : vec4<f32>;
 };
 
-[[stage(vertex)]]
+@stage(vertex)
 fn main() -> VertexOutputs {
   return VertexOutputs(1, 1u, 1.0, vec4<f32>(1.0, 2.0, 3.0, 4.0), vec4<f32>());
 }
diff --git a/test/shader_io/vertex_output_locations_struct.wgsl.expected.wgsl b/test/shader_io/vertex_output_locations_struct.wgsl.expected.wgsl
index a3df42d..a41d17a 100644
--- a/test/shader_io/vertex_output_locations_struct.wgsl.expected.wgsl
+++ b/test/shader_io/vertex_output_locations_struct.wgsl.expected.wgsl
@@ -1,17 +1,17 @@
 struct VertexOutputs {
-  [[location(0), interpolate(flat)]]
+  @location(0) @interpolate(flat)
   loc0 : i32;
-  [[location(1), interpolate(flat)]]
+  @location(1) @interpolate(flat)
   loc1 : u32;
-  [[location(2)]]
+  @location(2)
   loc2 : f32;
-  [[location(3)]]
+  @location(3)
   loc3 : vec4<f32>;
-  [[builtin(position)]]
+  @builtin(position)
   position : vec4<f32>;
 }
 
-[[stage(vertex)]]
+@stage(vertex)
 fn main() -> VertexOutputs {
   return VertexOutputs(1, 1u, 1.0, vec4<f32>(1.0, 2.0, 3.0, 4.0), vec4<f32>());
 }
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl b/test/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl
index 379856e..54e9eaa 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl
@@ -10,9 +10,9 @@
   a1 : array<InnerS, 8>;
 };
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl.expected.wgsl b/test/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl.expected.wgsl
index f6394af..70dc145 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl.expected.wgsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl.expected.wgsl
@@ -10,9 +10,9 @@
   a1 : array<InnerS, 8>;
 }
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl b/test/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl
index 5ca5836..626f7da 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl
@@ -10,9 +10,9 @@
   a1 : array<InnerS, 8>;
 };
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl.expected.wgsl b/test/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl.expected.wgsl
index 85d01c6..6668957 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl.expected.wgsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl.expected.wgsl
@@ -10,9 +10,9 @@
   a1 : array<InnerS, 8>;
 }
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl b/test/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl
index d9dd6b2..f8a0e7c 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl
@@ -10,9 +10,9 @@
   a1 : array<InnerS, 8>;
 };
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl.expected.wgsl b/test/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl.expected.wgsl
index 6d4ee1c..fa0f10b 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl.expected.wgsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl.expected.wgsl
@@ -10,9 +10,9 @@
   a1 : array<InnerS, 8>;
 }
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl b/test/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl
index 9d569e3..6ca184c 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl
@@ -21,9 +21,9 @@
   return nextIndex;
 }
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s : OuterS;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.wgsl b/test/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.wgsl
index 7ae55be..071143f 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.wgsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.wgsl
@@ -22,9 +22,9 @@
   return nextIndex;
 }
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s : OuterS;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl b/test/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl
index 2268109..0583104 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl
@@ -10,9 +10,9 @@
   a1 : array<InnerS, 8>;
 };
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl.expected.wgsl b/test/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl.expected.wgsl
index 22548cc..f41f74e 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl.expected.wgsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl.expected.wgsl
@@ -10,9 +10,9 @@
   a1 : array<InnerS, 8>;
 }
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl b/test/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl
index 2f0e920..b2f6451 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl
@@ -11,9 +11,9 @@
   a1 : array<array<InnerS, 8>, 8>;
 };
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl.expected.wgsl b/test/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl.expected.wgsl
index 555cf5d..bf83d2c 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl.expected.wgsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl.expected.wgsl
@@ -11,9 +11,9 @@
   a1 : array<array<InnerS, 8>, 8>;
 }
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl b/test/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl
index 2dfdfc8..a03babc 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl
@@ -14,9 +14,9 @@
   a1 : array<S1, 8>;
 };
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl.expected.wgsl b/test/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl.expected.wgsl
index cae1e5d..6bd5dd7 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl.expected.wgsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl.expected.wgsl
@@ -14,9 +14,9 @@
   a1 : array<S1, 8>;
 }
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl b/test/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl
index c8d97e5..6a377ec 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl
@@ -15,9 +15,9 @@
   a1 : array<S1, 8>;
 };
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s : OuterS;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl.expected.wgsl b/test/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl.expected.wgsl
index 6969d94..aa1010a 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl.expected.wgsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl.expected.wgsl
@@ -15,9 +15,9 @@
   a1 : array<S1, 8>;
 }
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s : OuterS;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array.wgsl b/test/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array.wgsl
index 99ad0f0..b4b4f71 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array.wgsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array.wgsl
@@ -10,10 +10,10 @@
   a1 : array<InnerS>;
 };
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
-[[binding(0), group(0)]] var<storage, read_write> s1 : OuterS;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
+@binding(0) @group(0) var<storage, read_write> s1 : OuterS;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : InnerS;
   s1.a1[uniforms.i] = v;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array.wgsl.expected.wgsl b/test/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array.wgsl.expected.wgsl
index c08a5f8..d5c02bc 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array.wgsl.expected.wgsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array.wgsl.expected.wgsl
@@ -10,11 +10,11 @@
   a1 : array<InnerS>;
 }
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[binding(0), group(0)]] var<storage, read_write> s1 : OuterS;
+@binding(0) @group(0) var<storage, read_write> s1 : OuterS;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : InnerS;
   s1.a1[uniforms.i] = v;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array_struct_array.wgsl b/test/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array_struct_array.wgsl
index 0d40e81..711e990 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array_struct_array.wgsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array_struct_array.wgsl
@@ -15,10 +15,10 @@
   a1 : array<S1>;
 };
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
-[[binding(0), group(0)]] var<storage, read_write> s : OuterS;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
+@binding(0) @group(0) var<storage, read_write> s : OuterS;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : InnerS;
   s.a1[uniforms.i].a2[uniforms.j] = v;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array_struct_array.wgsl.expected.wgsl b/test/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array_struct_array.wgsl.expected.wgsl
index c53b90d..56b7fd6 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array_struct_array.wgsl.expected.wgsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array_struct_array.wgsl.expected.wgsl
@@ -15,11 +15,11 @@
   a1 : array<S1>;
 }
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[binding(0), group(0)]] var<storage, read_write> s : OuterS;
+@binding(0) @group(0) var<storage, read_write> s : OuterS;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : InnerS;
   s.a1[uniforms.i].a2[uniforms.j] = v;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl b/test/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl
index 3c67742..ee95b91 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl
@@ -6,9 +6,9 @@
   m1 : mat2x4<f32>;
 };
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var s1 : OuterS;
   s1.m1[uniforms.i] = vec4<f32>(1.0);
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl.expected.wgsl b/test/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl.expected.wgsl
index aeb5f1b..9cb1a85 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl.expected.wgsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl.expected.wgsl
@@ -6,9 +6,9 @@
   m1 : mat2x4<f32>;
 }
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var s1 : OuterS;
   s1.m1[uniforms.i] = vec4<f32>(1.0);
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl b/test/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl
index 1fcd397..9d8ac68 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl
@@ -11,9 +11,9 @@
   a2 : array<InnerS, 8>;
 };
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl.expected.wgsl b/test/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl.expected.wgsl
index 55091c5..d39372f 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl.expected.wgsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl.expected.wgsl
@@ -11,9 +11,9 @@
   a2 : array<InnerS, 8>;
 }
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl b/test/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl
index bff1418..12591b3 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl
@@ -14,9 +14,9 @@
   s2 : S1;
 };
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl.expected.wgsl b/test/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl.expected.wgsl
index f2ebffe..2d65b1f 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl.expected.wgsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl.expected.wgsl
@@ -14,9 +14,9 @@
   s2 : S1;
 }
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl b/test/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl
index 578124f..b5baa12 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl
@@ -6,9 +6,9 @@
   v1 : vec3<f32>;
 };
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var s1 : OuterS;
   s1.v1[uniforms.i] = 1.0;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl.expected.wgsl b/test/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl.expected.wgsl
index da718cf..e47e024 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl.expected.wgsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl.expected.wgsl
@@ -6,9 +6,9 @@
   v1 : vec3<f32>;
 }
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var s1 : OuterS;
   s1.v1[uniforms.i] = 1.0;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl b/test/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl
index c8b46c5..49fbde7 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl
@@ -6,13 +6,13 @@
   a1 : array<u32, 8>;
 };
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
 fn f(i: u32) -> u32 {
   return i + 1u;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var s1 : OuterS;
   var v : vec3<f32>;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.wgsl b/test/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.wgsl
index 928e38d..bfa66c2 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.wgsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.wgsl
@@ -6,13 +6,13 @@
   a1 : array<u32, 8>;
 }
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
 fn f(i : u32) -> u32 {
   return (i + 1u);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var s1 : OuterS;
   var v : vec3<f32>;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl b/test/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl
index b44dcfa..133c000 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl
@@ -10,9 +10,9 @@
   a1 : array<InnerS, 8>;
 };
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl.expected.wgsl b/test/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl.expected.wgsl
index f65b285..5ae5fca 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl.expected.wgsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl.expected.wgsl
@@ -10,9 +10,9 @@
   a1 : array<InnerS, 8>;
 }
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl b/test/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl
index 2391e14..b7cedd0 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl
@@ -7,14 +7,14 @@
 struct OuterS {
   a1 : array<InnerS, 8>;
 };
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
 fn f(p : ptr<function, OuterS>) {
   var v : InnerS;
   (*p).a1[uniforms.i] = v;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var s1 : OuterS;
   f(&s1);
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl.expected.wgsl b/test/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl.expected.wgsl
index 86b031a..75cedf7 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl.expected.wgsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl.expected.wgsl
@@ -10,14 +10,14 @@
   a1 : array<InnerS, 8>;
 }
 
-[[group(1), binding(4)]] var<uniform> uniforms : Uniforms;
+@group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
 fn f(p : ptr<function, OuterS>) {
   var v : InnerS;
   (*(p)).a1[uniforms.i] = v;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var s1 : OuterS;
   f(&(s1));
diff --git a/test/statements/assign/phony/addr_of_non_constructable.wgsl b/test/statements/assign/phony/addr_of_non_constructable.wgsl
index 2ebe66d..f616560 100644
--- a/test/statements/assign/phony/addr_of_non_constructable.wgsl
+++ b/test/statements/assign/phony/addr_of_non_constructable.wgsl
@@ -2,9 +2,9 @@
     arr : array<i32>;
 };
 
-[[binding(0), group(0)]] var<storage, read_write> s : S;
+@binding(0) @group(0) var<storage, read_write> s : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = &s;
 }
diff --git a/test/statements/assign/phony/addr_of_non_constructable.wgsl.expected.wgsl b/test/statements/assign/phony/addr_of_non_constructable.wgsl.expected.wgsl
index 0952e9d..9a8aa90 100644
--- a/test/statements/assign/phony/addr_of_non_constructable.wgsl.expected.wgsl
+++ b/test/statements/assign/phony/addr_of_non_constructable.wgsl.expected.wgsl
@@ -2,9 +2,9 @@
   arr : array<i32>;
 }
 
-[[binding(0), group(0)]] var<storage, read_write> s : S;
+@binding(0) @group(0) var<storage, read_write> s : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = &(s);
 }
diff --git a/test/statements/assign/phony/addr_of_runtime_array.wgsl b/test/statements/assign/phony/addr_of_runtime_array.wgsl
index 9121fe8..bbf5448 100644
--- a/test/statements/assign/phony/addr_of_runtime_array.wgsl
+++ b/test/statements/assign/phony/addr_of_runtime_array.wgsl
@@ -2,9 +2,9 @@
     arr : array<i32>;
 };
 
-[[binding(0), group(0)]] var<storage, read_write> s : S;
+@binding(0) @group(0) var<storage, read_write> s : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = &s.arr;
 }
diff --git a/test/statements/assign/phony/addr_of_runtime_array.wgsl.expected.wgsl b/test/statements/assign/phony/addr_of_runtime_array.wgsl.expected.wgsl
index b6c7441..13a6462 100644
--- a/test/statements/assign/phony/addr_of_runtime_array.wgsl.expected.wgsl
+++ b/test/statements/assign/phony/addr_of_runtime_array.wgsl.expected.wgsl
@@ -2,9 +2,9 @@
   arr : array<i32>;
 }
 
-[[binding(0), group(0)]] var<storage, read_write> s : S;
+@binding(0) @group(0) var<storage, read_write> s : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = &(s.arr);
 }
diff --git a/test/statements/assign/phony/call.wgsl b/test/statements/assign/phony/call.wgsl
index 8be76ec..5f44585 100644
--- a/test/statements/assign/phony/call.wgsl
+++ b/test/statements/assign/phony/call.wgsl
@@ -2,7 +2,7 @@
     return a * b + c;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = f(1, 2, 3);
 }
diff --git a/test/statements/assign/phony/call.wgsl.expected.wgsl b/test/statements/assign/phony/call.wgsl.expected.wgsl
index c650359..cef5c5f 100644
--- a/test/statements/assign/phony/call.wgsl.expected.wgsl
+++ b/test/statements/assign/phony/call.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   return ((a * b) + c);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = f(1, 2, 3);
 }
diff --git a/test/statements/assign/phony/multiple_side_effects.wgsl b/test/statements/assign/phony/multiple_side_effects.wgsl
index fcfccd1..da2faf8 100644
--- a/test/statements/assign/phony/multiple_side_effects.wgsl
+++ b/test/statements/assign/phony/multiple_side_effects.wgsl
@@ -2,7 +2,7 @@
     return a * b + c;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = f(1, 2, 3) + f(4, 5, 6) * f(7, f(8, 9, 10), 11);
 }
diff --git a/test/statements/assign/phony/multiple_side_effects.wgsl.expected.wgsl b/test/statements/assign/phony/multiple_side_effects.wgsl.expected.wgsl
index 0c7cc23..e438785 100644
--- a/test/statements/assign/phony/multiple_side_effects.wgsl.expected.wgsl
+++ b/test/statements/assign/phony/multiple_side_effects.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   return ((a * b) + c);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = (f(1, 2, 3) + (f(4, 5, 6) * f(7, f(8, 9, 10), 11)));
 }
diff --git a/test/statements/assign/phony/storage_buffer.wgsl b/test/statements/assign/phony/storage_buffer.wgsl
index 9f78472..c8eb0ec 100644
--- a/test/statements/assign/phony/storage_buffer.wgsl
+++ b/test/statements/assign/phony/storage_buffer.wgsl
@@ -2,9 +2,9 @@
     i : i32;
 };
 
-[[binding(0), group(0)]] var<storage, read_write> s : S;
+@binding(0) @group(0) var<storage, read_write> s : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = s;
     _ = s.i;
diff --git a/test/statements/assign/phony/storage_buffer.wgsl.expected.wgsl b/test/statements/assign/phony/storage_buffer.wgsl.expected.wgsl
index c4caa99..5f2debd 100644
--- a/test/statements/assign/phony/storage_buffer.wgsl.expected.wgsl
+++ b/test/statements/assign/phony/storage_buffer.wgsl.expected.wgsl
@@ -2,9 +2,9 @@
   i : i32;
 }
 
-[[binding(0), group(0)]] var<storage, read_write> s : S;
+@binding(0) @group(0) var<storage, read_write> s : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = s;
   _ = s.i;
diff --git a/test/statements/assign/phony/uniform_buffer.wgsl b/test/statements/assign/phony/uniform_buffer.wgsl
index c0526bc..f7286c9 100644
--- a/test/statements/assign/phony/uniform_buffer.wgsl
+++ b/test/statements/assign/phony/uniform_buffer.wgsl
@@ -2,9 +2,9 @@
     i : i32;
 };
 
-[[binding(0), group(0)]] var<uniform> u : S;
+@binding(0) @group(0) var<uniform> u : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = u;
     _ = u.i;
diff --git a/test/statements/assign/phony/uniform_buffer.wgsl.expected.wgsl b/test/statements/assign/phony/uniform_buffer.wgsl.expected.wgsl
index 3ef1045..d20153a 100644
--- a/test/statements/assign/phony/uniform_buffer.wgsl.expected.wgsl
+++ b/test/statements/assign/phony/uniform_buffer.wgsl.expected.wgsl
@@ -2,9 +2,9 @@
   i : i32;
 }
 
-[[binding(0), group(0)]] var<uniform> u : S;
+@binding(0) @group(0) var<uniform> u : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = u;
   _ = u.i;
diff --git a/test/statements/switch/common.wgsl b/test/statements/switch/common.wgsl
index ada8f5e..bed7942 100644
--- a/test/statements/switch/common.wgsl
+++ b/test/statements/switch/common.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var i : i32;
     var result : i32;
diff --git a/test/statements/switch/common.wgsl.expected.wgsl b/test/statements/switch/common.wgsl.expected.wgsl
index 9aad3f1..8b56b03 100644
--- a/test/statements/switch/common.wgsl.expected.wgsl
+++ b/test/statements/switch/common.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var i : i32;
   var result : i32;
diff --git a/test/statements/switch/fallthrough.wgsl b/test/statements/switch/fallthrough.wgsl
index 20eae21..70691c8 100644
--- a/test/statements/switch/fallthrough.wgsl
+++ b/test/statements/switch/fallthrough.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var i : i32;
     switch(i) {
diff --git a/test/statements/switch/fallthrough.wgsl.expected.wgsl b/test/statements/switch/fallthrough.wgsl.expected.wgsl
index 37163f5..b04e882 100644
--- a/test/statements/switch/fallthrough.wgsl.expected.wgsl
+++ b/test/statements/switch/fallthrough.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var i : i32;
   switch(i) {
diff --git a/test/statements/switch/only_default_case.wgsl b/test/statements/switch/only_default_case.wgsl
index cb12fb9..0f61d18 100644
--- a/test/statements/switch/only_default_case.wgsl
+++ b/test/statements/switch/only_default_case.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
     var i : i32;
     var result : i32;
diff --git a/test/statements/switch/only_default_case.wgsl.expected.wgsl b/test/statements/switch/only_default_case.wgsl.expected.wgsl
index bd050b7..234f256 100644
--- a/test/statements/switch/only_default_case.wgsl.expected.wgsl
+++ b/test/statements/switch/only_default_case.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn f() {
   var i : i32;
   var result : i32;
diff --git a/test/struct/type_constructor.wgsl b/test/struct/type_constructor.wgsl
index 1725ffa..f79b527 100644
--- a/test/struct/type_constructor.wgsl
+++ b/test/struct/type_constructor.wgsl
@@ -20,7 +20,7 @@
   a : array<i32, 2>;
 };
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let x : i32 = 42;
 
diff --git a/test/struct/type_constructor.wgsl.expected.wgsl b/test/struct/type_constructor.wgsl.expected.wgsl
index c526e3f..d4a5bbd 100644
--- a/test/struct/type_constructor.wgsl.expected.wgsl
+++ b/test/struct/type_constructor.wgsl.expected.wgsl
@@ -20,7 +20,7 @@
   a : array<i32, 2>;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let x : i32 = 42;
   let empty : S1 = S1();
diff --git a/test/types/function_scope_declarations.wgsl b/test/types/function_scope_declarations.wgsl
index 9f13250..fe560bb 100644
--- a/test/types/function_scope_declarations.wgsl
+++ b/test/types/function_scope_declarations.wgsl
@@ -2,7 +2,7 @@
   a : f32;
 };
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var bool_var : bool = bool();
   let bool_let : bool = bool();
diff --git a/test/types/function_scope_declarations.wgsl.expected.wgsl b/test/types/function_scope_declarations.wgsl.expected.wgsl
index 3845786..e5168c2 100644
--- a/test/types/function_scope_declarations.wgsl.expected.wgsl
+++ b/test/types/function_scope_declarations.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   a : f32;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var bool_var : bool = bool();
   let bool_let : bool = bool();
diff --git a/test/types/function_scope_var_conversions.wgsl b/test/types/function_scope_var_conversions.wgsl
index 66cc378..4f58b71 100644
--- a/test/types/function_scope_var_conversions.wgsl
+++ b/test/types/function_scope_var_conversions.wgsl
@@ -3,7 +3,7 @@
   var b : vec2<f32> = vec2<f32>(f32(i32(1)), a);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var bool_var1 : bool = bool(123u);
   var bool_var2 : bool = bool(123);
diff --git a/test/types/function_scope_var_conversions.wgsl.expected.wgsl b/test/types/function_scope_var_conversions.wgsl.expected.wgsl
index de961c6..53206b3 100644
--- a/test/types/function_scope_var_conversions.wgsl.expected.wgsl
+++ b/test/types/function_scope_var_conversions.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   var b : vec2<f32> = vec2<f32>(f32(i32(1)), a);
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var bool_var1 : bool = bool(123u);
   var bool_var2 : bool = bool(123);
diff --git a/test/types/module_scope_let.wgsl b/test/types/module_scope_let.wgsl
index 85b317c..54718f4 100644
--- a/test/types/module_scope_let.wgsl
+++ b/test/types/module_scope_let.wgsl
@@ -13,6 +13,6 @@
 let arr_let : array<f32, 4> = array<f32, 4>();
 let struct_let : S = S();
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
 }
diff --git a/test/types/module_scope_let.wgsl.expected.wgsl b/test/types/module_scope_let.wgsl.expected.wgsl
index be35814..8d091d3 100644
--- a/test/types/module_scope_let.wgsl.expected.wgsl
+++ b/test/types/module_scope_let.wgsl.expected.wgsl
@@ -22,6 +22,6 @@
 
 let struct_let : S = S();
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
 }
diff --git a/test/types/module_scope_var.wgsl b/test/types/module_scope_var.wgsl
index e9ab444..a748f59 100644
--- a/test/types/module_scope_var.wgsl
+++ b/test/types/module_scope_var.wgsl
@@ -13,7 +13,7 @@
 var<private> arr_var : array<f32, 4>;
 var<private> struct_var : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   // Reference the module-scope variables to stop them from being removed.
   bool_var = bool();
diff --git a/test/types/module_scope_var.wgsl.expected.wgsl b/test/types/module_scope_var.wgsl.expected.wgsl
index 55f4e0a..31ee7a7 100644
--- a/test/types/module_scope_var.wgsl.expected.wgsl
+++ b/test/types/module_scope_var.wgsl.expected.wgsl
@@ -22,7 +22,7 @@
 
 var<private> struct_var : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   bool_var = bool();
   i32_var = i32();
diff --git a/test/types/module_scope_var_conversions.wgsl b/test/types/module_scope_var_conversions.wgsl
index 935a1e4..ce6fa2e 100644
--- a/test/types/module_scope_var_conversions.wgsl
+++ b/test/types/module_scope_var_conversions.wgsl
@@ -25,7 +25,7 @@
 var<private> v3bool_var4 : vec3<bool> = vec3<bool>(vec2<bool>(vec2<f32>(123.0)), true);
 var<private> v4bool_var5 : vec4<bool> = vec4<bool>(vec2<bool>(vec2<f32>(123.0, 0.0)), vec2<bool>(true, bool(f32(0.0))));
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   // Reference the module-scope variables to stop them from being removed.
   bool_var1 = bool();
diff --git a/test/types/module_scope_var_conversions.wgsl.expected.wgsl b/test/types/module_scope_var_conversions.wgsl.expected.wgsl
index f3b8876..b5373bf 100644
--- a/test/types/module_scope_var_conversions.wgsl.expected.wgsl
+++ b/test/types/module_scope_var_conversions.wgsl.expected.wgsl
@@ -38,7 +38,7 @@
 
 var<private> v4bool_var5 : vec4<bool> = vec4<bool>(vec2<bool>(vec2<f32>(123.0, 0.0)), vec2<bool>(true, bool(f32(0.0))));
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   bool_var1 = bool();
   bool_var2 = bool();
diff --git a/test/types/module_scope_var_initializers.wgsl b/test/types/module_scope_var_initializers.wgsl
index b7402d0..fb2eb8c 100644
--- a/test/types/module_scope_var_initializers.wgsl
+++ b/test/types/module_scope_var_initializers.wgsl
@@ -13,7 +13,7 @@
 var<private> arr_var : array<f32, 4> = array<f32, 4>();
 var<private> struct_var : S = S();
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   // Reference the module-scope variables to stop them from being removed.
   bool_var = bool();
diff --git a/test/types/module_scope_var_initializers.wgsl.expected.wgsl b/test/types/module_scope_var_initializers.wgsl.expected.wgsl
index d9dcf61..e2b011b 100644
--- a/test/types/module_scope_var_initializers.wgsl.expected.wgsl
+++ b/test/types/module_scope_var_initializers.wgsl.expected.wgsl
@@ -22,7 +22,7 @@
 
 var<private> struct_var : S = S();
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   bool_var = bool();
   i32_var = i32();
diff --git a/test/types/parameters.wgsl b/test/types/parameters.wgsl
index 21987c9..1ea45ae 100644
--- a/test/types/parameters.wgsl
+++ b/test/types/parameters.wgsl
@@ -18,6 +18,6 @@
   param_ptr_arr : ptr<function, array<f32, 4>>,
 ) {}
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
 }
diff --git a/test/types/parameters.wgsl.expected.wgsl b/test/types/parameters.wgsl.expected.wgsl
index 2720ce3..2bda0fb 100644
--- a/test/types/parameters.wgsl.expected.wgsl
+++ b/test/types/parameters.wgsl.expected.wgsl
@@ -5,6 +5,6 @@
 fn foo(param_bool : bool, param_i32 : i32, param_u32 : u32, param_f32 : f32, param_v2i32 : vec2<i32>, param_v3u32 : vec3<u32>, param_v4f32 : vec4<f32>, param_m2x3 : mat2x3<f32>, param_arr : array<f32, 4>, param_struct : S, param_ptr_f32 : ptr<function, f32>, param_ptr_vec : ptr<function, vec4<f32>>, param_ptr_arr : ptr<function, array<f32, 4>>) {
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
 }
diff --git a/test/types/return_types.wgsl b/test/types/return_types.wgsl
index c65b996..1ed77ff 100644
--- a/test/types/return_types.wgsl
+++ b/test/types/return_types.wgsl
@@ -13,6 +13,6 @@
 fn ret_arr() -> array<f32, 4> { return array<f32, 4>(); }
 fn ret_struct() -> S { return S(); }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
 }
diff --git a/test/types/return_types.wgsl.expected.wgsl b/test/types/return_types.wgsl.expected.wgsl
index d34a095..c888b19 100644
--- a/test/types/return_types.wgsl.expected.wgsl
+++ b/test/types/return_types.wgsl.expected.wgsl
@@ -42,6 +42,6 @@
   return S();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
 }
diff --git a/test/types/sampler.wgsl b/test/types/sampler.wgsl
index 1085620..edeb51e 100644
--- a/test/types/sampler.wgsl
+++ b/test/types/sampler.wgsl
@@ -1,7 +1,7 @@
-[[group(0), binding(0)]] var s : sampler;
-[[group(0), binding(1)]] var sc : sampler_comparison;
+@group(0) @binding(0) var s : sampler;
+@group(0) @binding(1) var sc : sampler_comparison;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = s;
   _ = sc;
diff --git a/test/types/sampler.wgsl.expected.wgsl b/test/types/sampler.wgsl.expected.wgsl
index 315599b..3d873eb 100644
--- a/test/types/sampler.wgsl.expected.wgsl
+++ b/test/types/sampler.wgsl.expected.wgsl
@@ -1,8 +1,8 @@
-[[group(0), binding(0)]] var s : sampler;
+@group(0) @binding(0) var s : sampler;
 
-[[group(0), binding(1)]] var sc : sampler_comparison;
+@group(0) @binding(1) var sc : sampler_comparison;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = s;
   _ = sc;
diff --git a/test/types/struct_members.wgsl b/test/types/struct_members.wgsl
index 2bd0f33..e179bdb 100644
--- a/test/types/struct_members.wgsl
+++ b/test/types/struct_members.wgsl
@@ -15,7 +15,7 @@
   member_struct : S_inner;
 };
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let s : S = S();
 }
diff --git a/test/types/struct_members.wgsl.expected.wgsl b/test/types/struct_members.wgsl.expected.wgsl
index 7ff178c..6778410 100644
--- a/test/types/struct_members.wgsl.expected.wgsl
+++ b/test/types/struct_members.wgsl.expected.wgsl
@@ -15,7 +15,7 @@
   member_struct : S_inner;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   let s : S = S();
 }
diff --git a/test/types/texture/depth/2d.wgsl b/test/types/texture/depth/2d.wgsl
index 853e277..e3a53cd 100644
--- a/test/types/texture/depth/2d.wgsl
+++ b/test/types/texture/depth/2d.wgsl
@@ -1,6 +1,6 @@
-[[group(0), binding(0)]] var t_f : texture_depth_2d;
+@group(0) @binding(0) var t_f : texture_depth_2d;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = t_f;
 }
diff --git a/test/types/texture/depth/2d.wgsl.expected.wgsl b/test/types/texture/depth/2d.wgsl.expected.wgsl
index 853e277..e3a53cd 100644
--- a/test/types/texture/depth/2d.wgsl.expected.wgsl
+++ b/test/types/texture/depth/2d.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[group(0), binding(0)]] var t_f : texture_depth_2d;
+@group(0) @binding(0) var t_f : texture_depth_2d;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = t_f;
 }
diff --git a/test/types/texture/depth/2d_array.wgsl b/test/types/texture/depth/2d_array.wgsl
index 9338fe5..e6fac8c 100644
--- a/test/types/texture/depth/2d_array.wgsl
+++ b/test/types/texture/depth/2d_array.wgsl
@@ -1,6 +1,6 @@
-[[group(0), binding(0)]] var t_f : texture_depth_2d_array;
+@group(0) @binding(0) var t_f : texture_depth_2d_array;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = t_f;
 }
diff --git a/test/types/texture/depth/2d_array.wgsl.expected.wgsl b/test/types/texture/depth/2d_array.wgsl.expected.wgsl
index 9338fe5..e6fac8c 100644
--- a/test/types/texture/depth/2d_array.wgsl.expected.wgsl
+++ b/test/types/texture/depth/2d_array.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[group(0), binding(0)]] var t_f : texture_depth_2d_array;
+@group(0) @binding(0) var t_f : texture_depth_2d_array;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = t_f;
 }
diff --git a/test/types/texture/depth/cube.wgsl b/test/types/texture/depth/cube.wgsl
index bd16ce8..785b96c 100644
--- a/test/types/texture/depth/cube.wgsl
+++ b/test/types/texture/depth/cube.wgsl
@@ -1,6 +1,6 @@
-[[group(0), binding(0)]] var t_f : texture_depth_cube;
+@group(0) @binding(0) var t_f : texture_depth_cube;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = t_f;
 }
diff --git a/test/types/texture/depth/cube.wgsl.expected.wgsl b/test/types/texture/depth/cube.wgsl.expected.wgsl
index bd16ce8..785b96c 100644
--- a/test/types/texture/depth/cube.wgsl.expected.wgsl
+++ b/test/types/texture/depth/cube.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[group(0), binding(0)]] var t_f : texture_depth_cube;
+@group(0) @binding(0) var t_f : texture_depth_cube;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = t_f;
 }
diff --git a/test/types/texture/depth/cube_array.wgsl b/test/types/texture/depth/cube_array.wgsl
index d30008f..0e1b07e 100644
--- a/test/types/texture/depth/cube_array.wgsl
+++ b/test/types/texture/depth/cube_array.wgsl
@@ -1,6 +1,6 @@
-[[group(0), binding(0)]] var t_f : texture_depth_cube_array;
+@group(0) @binding(0) var t_f : texture_depth_cube_array;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = t_f;
 }
diff --git a/test/types/texture/depth/cube_array.wgsl.expected.wgsl b/test/types/texture/depth/cube_array.wgsl.expected.wgsl
index d30008f..0e1b07e 100644
--- a/test/types/texture/depth/cube_array.wgsl.expected.wgsl
+++ b/test/types/texture/depth/cube_array.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[group(0), binding(0)]] var t_f : texture_depth_cube_array;
+@group(0) @binding(0) var t_f : texture_depth_cube_array;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = t_f;
 }
diff --git a/test/types/texture/multisampled/2d.wgsl b/test/types/texture/multisampled/2d.wgsl
index 9de9f26..76521e5 100644
--- a/test/types/texture/multisampled/2d.wgsl
+++ b/test/types/texture/multisampled/2d.wgsl
@@ -1,8 +1,8 @@
-[[group(0), binding(0)]] var t_f : texture_multisampled_2d<f32>;
-[[group(0), binding(1)]] var t_i : texture_multisampled_2d<i32>;
-[[group(0), binding(2)]] var t_u : texture_multisampled_2d<u32>;
+@group(0) @binding(0) var t_f : texture_multisampled_2d<f32>;
+@group(0) @binding(1) var t_i : texture_multisampled_2d<i32>;
+@group(0) @binding(2) var t_u : texture_multisampled_2d<u32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = t_f;
   _ = t_i;
diff --git a/test/types/texture/multisampled/2d.wgsl.expected.wgsl b/test/types/texture/multisampled/2d.wgsl.expected.wgsl
index 4c078ca..d8eb77b 100644
--- a/test/types/texture/multisampled/2d.wgsl.expected.wgsl
+++ b/test/types/texture/multisampled/2d.wgsl.expected.wgsl
@@ -1,10 +1,10 @@
-[[group(0), binding(0)]] var t_f : texture_multisampled_2d<f32>;
+@group(0) @binding(0) var t_f : texture_multisampled_2d<f32>;
 
-[[group(0), binding(1)]] var t_i : texture_multisampled_2d<i32>;
+@group(0) @binding(1) var t_i : texture_multisampled_2d<i32>;
 
-[[group(0), binding(2)]] var t_u : texture_multisampled_2d<u32>;
+@group(0) @binding(2) var t_u : texture_multisampled_2d<u32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = t_f;
   _ = t_i;
diff --git a/test/types/texture/sampled/1d.wgsl b/test/types/texture/sampled/1d.wgsl
index bfc4cf0..ed97090 100644
--- a/test/types/texture/sampled/1d.wgsl
+++ b/test/types/texture/sampled/1d.wgsl
@@ -1,8 +1,8 @@
-[[group(0), binding(0)]] var t_f : texture_1d<f32>;
-[[group(0), binding(1)]] var t_i : texture_1d<i32>;
-[[group(0), binding(2)]] var t_u : texture_1d<u32>;
+@group(0) @binding(0) var t_f : texture_1d<f32>;
+@group(0) @binding(1) var t_i : texture_1d<i32>;
+@group(0) @binding(2) var t_u : texture_1d<u32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = t_f;
   _ = t_i;
diff --git a/test/types/texture/sampled/1d.wgsl.expected.wgsl b/test/types/texture/sampled/1d.wgsl.expected.wgsl
index a14ff96..565089e 100644
--- a/test/types/texture/sampled/1d.wgsl.expected.wgsl
+++ b/test/types/texture/sampled/1d.wgsl.expected.wgsl
@@ -1,10 +1,10 @@
-[[group(0), binding(0)]] var t_f : texture_1d<f32>;
+@group(0) @binding(0) var t_f : texture_1d<f32>;
 
-[[group(0), binding(1)]] var t_i : texture_1d<i32>;
+@group(0) @binding(1) var t_i : texture_1d<i32>;
 
-[[group(0), binding(2)]] var t_u : texture_1d<u32>;
+@group(0) @binding(2) var t_u : texture_1d<u32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = t_f;
   _ = t_i;
diff --git a/test/types/texture/sampled/2d.wgsl b/test/types/texture/sampled/2d.wgsl
index eac8459..b6be42b 100644
--- a/test/types/texture/sampled/2d.wgsl
+++ b/test/types/texture/sampled/2d.wgsl
@@ -1,8 +1,8 @@
-[[group(0), binding(0)]] var t_f : texture_2d<f32>;
-[[group(0), binding(1)]] var t_i : texture_2d<i32>;
-[[group(0), binding(2)]] var t_u : texture_2d<u32>;
+@group(0) @binding(0) var t_f : texture_2d<f32>;
+@group(0) @binding(1) var t_i : texture_2d<i32>;
+@group(0) @binding(2) var t_u : texture_2d<u32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = t_f;
   _ = t_i;
diff --git a/test/types/texture/sampled/2d.wgsl.expected.wgsl b/test/types/texture/sampled/2d.wgsl.expected.wgsl
index 7536291..007b85f 100644
--- a/test/types/texture/sampled/2d.wgsl.expected.wgsl
+++ b/test/types/texture/sampled/2d.wgsl.expected.wgsl
@@ -1,10 +1,10 @@
-[[group(0), binding(0)]] var t_f : texture_2d<f32>;
+@group(0) @binding(0) var t_f : texture_2d<f32>;
 
-[[group(0), binding(1)]] var t_i : texture_2d<i32>;
+@group(0) @binding(1) var t_i : texture_2d<i32>;
 
-[[group(0), binding(2)]] var t_u : texture_2d<u32>;
+@group(0) @binding(2) var t_u : texture_2d<u32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = t_f;
   _ = t_i;
diff --git a/test/types/texture/sampled/2d_array.wgsl b/test/types/texture/sampled/2d_array.wgsl
index ff687c1..1dcfc6c 100644
--- a/test/types/texture/sampled/2d_array.wgsl
+++ b/test/types/texture/sampled/2d_array.wgsl
@@ -1,8 +1,8 @@
-[[group(0), binding(0)]] var t_f : texture_2d_array<f32>;
-[[group(0), binding(1)]] var t_i : texture_2d_array<i32>;
-[[group(0), binding(2)]] var t_u : texture_2d_array<u32>;
+@group(0) @binding(0) var t_f : texture_2d_array<f32>;
+@group(0) @binding(1) var t_i : texture_2d_array<i32>;
+@group(0) @binding(2) var t_u : texture_2d_array<u32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = t_f;
   _ = t_i;
diff --git a/test/types/texture/sampled/2d_array.wgsl.expected.wgsl b/test/types/texture/sampled/2d_array.wgsl.expected.wgsl
index 487e672..5201bbe 100644
--- a/test/types/texture/sampled/2d_array.wgsl.expected.wgsl
+++ b/test/types/texture/sampled/2d_array.wgsl.expected.wgsl
@@ -1,10 +1,10 @@
-[[group(0), binding(0)]] var t_f : texture_2d_array<f32>;
+@group(0) @binding(0) var t_f : texture_2d_array<f32>;
 
-[[group(0), binding(1)]] var t_i : texture_2d_array<i32>;
+@group(0) @binding(1) var t_i : texture_2d_array<i32>;
 
-[[group(0), binding(2)]] var t_u : texture_2d_array<u32>;
+@group(0) @binding(2) var t_u : texture_2d_array<u32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = t_f;
   _ = t_i;
diff --git a/test/types/texture/sampled/3d.wgsl b/test/types/texture/sampled/3d.wgsl
index cd8f0ec..37a525e 100644
--- a/test/types/texture/sampled/3d.wgsl
+++ b/test/types/texture/sampled/3d.wgsl
@@ -1,8 +1,8 @@
-[[group(0), binding(0)]] var t_f : texture_3d<f32>;
-[[group(0), binding(1)]] var t_i : texture_3d<i32>;
-[[group(0), binding(2)]] var t_u : texture_3d<u32>;
+@group(0) @binding(0) var t_f : texture_3d<f32>;
+@group(0) @binding(1) var t_i : texture_3d<i32>;
+@group(0) @binding(2) var t_u : texture_3d<u32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = t_f;
   _ = t_i;
diff --git a/test/types/texture/sampled/3d.wgsl.expected.wgsl b/test/types/texture/sampled/3d.wgsl.expected.wgsl
index ddfc2db..747bc8f 100644
--- a/test/types/texture/sampled/3d.wgsl.expected.wgsl
+++ b/test/types/texture/sampled/3d.wgsl.expected.wgsl
@@ -1,10 +1,10 @@
-[[group(0), binding(0)]] var t_f : texture_3d<f32>;
+@group(0) @binding(0) var t_f : texture_3d<f32>;
 
-[[group(0), binding(1)]] var t_i : texture_3d<i32>;
+@group(0) @binding(1) var t_i : texture_3d<i32>;
 
-[[group(0), binding(2)]] var t_u : texture_3d<u32>;
+@group(0) @binding(2) var t_u : texture_3d<u32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = t_f;
   _ = t_i;
diff --git a/test/types/texture/sampled/cube.wgsl b/test/types/texture/sampled/cube.wgsl
index 3e1d8f0..89859e9 100644
--- a/test/types/texture/sampled/cube.wgsl
+++ b/test/types/texture/sampled/cube.wgsl
@@ -1,8 +1,8 @@
-[[group(0), binding(0)]] var t_f : texture_cube<f32>;
-[[group(0), binding(1)]] var t_i : texture_cube<i32>;
-[[group(0), binding(2)]] var t_u : texture_cube<u32>;
+@group(0) @binding(0) var t_f : texture_cube<f32>;
+@group(0) @binding(1) var t_i : texture_cube<i32>;
+@group(0) @binding(2) var t_u : texture_cube<u32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = t_f;
   _ = t_i;
diff --git a/test/types/texture/sampled/cube.wgsl.expected.wgsl b/test/types/texture/sampled/cube.wgsl.expected.wgsl
index 151c68f..28c6881 100644
--- a/test/types/texture/sampled/cube.wgsl.expected.wgsl
+++ b/test/types/texture/sampled/cube.wgsl.expected.wgsl
@@ -1,10 +1,10 @@
-[[group(0), binding(0)]] var t_f : texture_cube<f32>;
+@group(0) @binding(0) var t_f : texture_cube<f32>;
 
-[[group(0), binding(1)]] var t_i : texture_cube<i32>;
+@group(0) @binding(1) var t_i : texture_cube<i32>;
 
-[[group(0), binding(2)]] var t_u : texture_cube<u32>;
+@group(0) @binding(2) var t_u : texture_cube<u32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = t_f;
   _ = t_i;
diff --git a/test/types/texture/sampled/cube_array.wgsl b/test/types/texture/sampled/cube_array.wgsl
index e3bb1b1..c7249c8 100644
--- a/test/types/texture/sampled/cube_array.wgsl
+++ b/test/types/texture/sampled/cube_array.wgsl
@@ -1,8 +1,8 @@
-[[group(0), binding(0)]] var t_f : texture_cube_array<f32>;
-[[group(0), binding(1)]] var t_i : texture_cube_array<i32>;
-[[group(0), binding(2)]] var t_u : texture_cube_array<u32>;
+@group(0) @binding(0) var t_f : texture_cube_array<f32>;
+@group(0) @binding(1) var t_i : texture_cube_array<i32>;
+@group(0) @binding(2) var t_u : texture_cube_array<u32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = t_f;
   _ = t_i;
diff --git a/test/types/texture/sampled/cube_array.wgsl.expected.wgsl b/test/types/texture/sampled/cube_array.wgsl.expected.wgsl
index bb5c804..12dc114 100644
--- a/test/types/texture/sampled/cube_array.wgsl.expected.wgsl
+++ b/test/types/texture/sampled/cube_array.wgsl.expected.wgsl
@@ -1,10 +1,10 @@
-[[group(0), binding(0)]] var t_f : texture_cube_array<f32>;
+@group(0) @binding(0) var t_f : texture_cube_array<f32>;
 
-[[group(0), binding(1)]] var t_i : texture_cube_array<i32>;
+@group(0) @binding(1) var t_i : texture_cube_array<i32>;
 
-[[group(0), binding(2)]] var t_u : texture_cube_array<u32>;
+@group(0) @binding(2) var t_u : texture_cube_array<u32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = t_f;
   _ = t_i;
diff --git a/test/types/texture/storage/1d.wgsl b/test/types/texture/storage/1d.wgsl
index 939b921..7adad9e 100644
--- a/test/types/texture/storage/1d.wgsl
+++ b/test/types/texture/storage/1d.wgsl
@@ -1,21 +1,21 @@
-[[group(0), binding(0)]] var t_rgba8unorm : texture_storage_1d<rgba8unorm, write>;
-[[group(0), binding(1)]] var t_rgba8snorm : texture_storage_1d<rgba8snorm, write>;
-[[group(0), binding(2)]] var t_rgba8uint : texture_storage_1d<rgba8uint, write>;
-[[group(0), binding(3)]] var t_rgba8sint : texture_storage_1d<rgba8sint, write>;
-[[group(0), binding(4)]] var t_rgba16uint : texture_storage_1d<rgba16uint, write>;
-[[group(0), binding(5)]] var t_rgba16sint : texture_storage_1d<rgba16sint, write>;
-[[group(0), binding(6)]] var t_rgba16float : texture_storage_1d<rgba16float, write>;
-[[group(0), binding(7)]] var t_r32uint : texture_storage_1d<r32uint, write>;
-[[group(0), binding(8)]] var t_r32sint : texture_storage_1d<r32sint, write>;
-[[group(0), binding(9)]] var t_r32float : texture_storage_1d<r32float, write>;
-[[group(0), binding(10)]] var t_rg32uint : texture_storage_1d<rg32uint, write>;
-[[group(0), binding(11)]] var t_rg32sint : texture_storage_1d<rg32sint, write>;
-[[group(0), binding(12)]] var t_rg32float : texture_storage_1d<rg32float, write>;
-[[group(0), binding(13)]] var t_rgba32uint : texture_storage_1d<rgba32uint, write>;
-[[group(0), binding(14)]] var t_rgba32sint : texture_storage_1d<rgba32sint, write>;
-[[group(0), binding(15)]] var t_rgba32float : texture_storage_1d<rgba32float, write>;
+@group(0) @binding(0) var t_rgba8unorm : texture_storage_1d<rgba8unorm, write>;
+@group(0) @binding(1) var t_rgba8snorm : texture_storage_1d<rgba8snorm, write>;
+@group(0) @binding(2) var t_rgba8uint : texture_storage_1d<rgba8uint, write>;
+@group(0) @binding(3) var t_rgba8sint : texture_storage_1d<rgba8sint, write>;
+@group(0) @binding(4) var t_rgba16uint : texture_storage_1d<rgba16uint, write>;
+@group(0) @binding(5) var t_rgba16sint : texture_storage_1d<rgba16sint, write>;
+@group(0) @binding(6) var t_rgba16float : texture_storage_1d<rgba16float, write>;
+@group(0) @binding(7) var t_r32uint : texture_storage_1d<r32uint, write>;
+@group(0) @binding(8) var t_r32sint : texture_storage_1d<r32sint, write>;
+@group(0) @binding(9) var t_r32float : texture_storage_1d<r32float, write>;
+@group(0) @binding(10) var t_rg32uint : texture_storage_1d<rg32uint, write>;
+@group(0) @binding(11) var t_rg32sint : texture_storage_1d<rg32sint, write>;
+@group(0) @binding(12) var t_rg32float : texture_storage_1d<rg32float, write>;
+@group(0) @binding(13) var t_rgba32uint : texture_storage_1d<rgba32uint, write>;
+@group(0) @binding(14) var t_rgba32sint : texture_storage_1d<rgba32sint, write>;
+@group(0) @binding(15) var t_rgba32float : texture_storage_1d<rgba32float, write>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = t_rgba8unorm;
   _ = t_rgba8snorm;
diff --git a/test/types/texture/storage/1d.wgsl.expected.wgsl b/test/types/texture/storage/1d.wgsl.expected.wgsl
index 72ebb80..a3e5555 100644
--- a/test/types/texture/storage/1d.wgsl.expected.wgsl
+++ b/test/types/texture/storage/1d.wgsl.expected.wgsl
@@ -1,36 +1,36 @@
-[[group(0), binding(0)]] var t_rgba8unorm : texture_storage_1d<rgba8unorm, write>;
+@group(0) @binding(0) var t_rgba8unorm : texture_storage_1d<rgba8unorm, write>;
 
-[[group(0), binding(1)]] var t_rgba8snorm : texture_storage_1d<rgba8snorm, write>;
+@group(0) @binding(1) var t_rgba8snorm : texture_storage_1d<rgba8snorm, write>;
 
-[[group(0), binding(2)]] var t_rgba8uint : texture_storage_1d<rgba8uint, write>;
+@group(0) @binding(2) var t_rgba8uint : texture_storage_1d<rgba8uint, write>;
 
-[[group(0), binding(3)]] var t_rgba8sint : texture_storage_1d<rgba8sint, write>;
+@group(0) @binding(3) var t_rgba8sint : texture_storage_1d<rgba8sint, write>;
 
-[[group(0), binding(4)]] var t_rgba16uint : texture_storage_1d<rgba16uint, write>;
+@group(0) @binding(4) var t_rgba16uint : texture_storage_1d<rgba16uint, write>;
 
-[[group(0), binding(5)]] var t_rgba16sint : texture_storage_1d<rgba16sint, write>;
+@group(0) @binding(5) var t_rgba16sint : texture_storage_1d<rgba16sint, write>;
 
-[[group(0), binding(6)]] var t_rgba16float : texture_storage_1d<rgba16float, write>;
+@group(0) @binding(6) var t_rgba16float : texture_storage_1d<rgba16float, write>;
 
-[[group(0), binding(7)]] var t_r32uint : texture_storage_1d<r32uint, write>;
+@group(0) @binding(7) var t_r32uint : texture_storage_1d<r32uint, write>;
 
-[[group(0), binding(8)]] var t_r32sint : texture_storage_1d<r32sint, write>;
+@group(0) @binding(8) var t_r32sint : texture_storage_1d<r32sint, write>;
 
-[[group(0), binding(9)]] var t_r32float : texture_storage_1d<r32float, write>;
+@group(0) @binding(9) var t_r32float : texture_storage_1d<r32float, write>;
 
-[[group(0), binding(10)]] var t_rg32uint : texture_storage_1d<rg32uint, write>;
+@group(0) @binding(10) var t_rg32uint : texture_storage_1d<rg32uint, write>;
 
-[[group(0), binding(11)]] var t_rg32sint : texture_storage_1d<rg32sint, write>;
+@group(0) @binding(11) var t_rg32sint : texture_storage_1d<rg32sint, write>;
 
-[[group(0), binding(12)]] var t_rg32float : texture_storage_1d<rg32float, write>;
+@group(0) @binding(12) var t_rg32float : texture_storage_1d<rg32float, write>;
 
-[[group(0), binding(13)]] var t_rgba32uint : texture_storage_1d<rgba32uint, write>;
+@group(0) @binding(13) var t_rgba32uint : texture_storage_1d<rgba32uint, write>;
 
-[[group(0), binding(14)]] var t_rgba32sint : texture_storage_1d<rgba32sint, write>;
+@group(0) @binding(14) var t_rgba32sint : texture_storage_1d<rgba32sint, write>;
 
-[[group(0), binding(15)]] var t_rgba32float : texture_storage_1d<rgba32float, write>;
+@group(0) @binding(15) var t_rgba32float : texture_storage_1d<rgba32float, write>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = t_rgba8unorm;
   _ = t_rgba8snorm;
diff --git a/test/types/texture/storage/2d.wgsl b/test/types/texture/storage/2d.wgsl
index 0ea57e9..44d0dfd 100644
--- a/test/types/texture/storage/2d.wgsl
+++ b/test/types/texture/storage/2d.wgsl
@@ -1,21 +1,21 @@
-[[group(0), binding(0)]] var t_rgba8unorm : texture_storage_2d<rgba8unorm, write>;
-[[group(0), binding(1)]] var t_rgba8snorm : texture_storage_2d<rgba8snorm, write>;
-[[group(0), binding(2)]] var t_rgba8uint : texture_storage_2d<rgba8uint, write>;
-[[group(0), binding(3)]] var t_rgba8sint : texture_storage_2d<rgba8sint, write>;
-[[group(0), binding(4)]] var t_rgba16uint : texture_storage_2d<rgba16uint, write>;
-[[group(0), binding(5)]] var t_rgba16sint : texture_storage_2d<rgba16sint, write>;
-[[group(0), binding(6)]] var t_rgba16float : texture_storage_2d<rgba16float, write>;
-[[group(0), binding(7)]] var t_r32uint : texture_storage_2d<r32uint, write>;
-[[group(0), binding(8)]] var t_r32sint : texture_storage_2d<r32sint, write>;
-[[group(0), binding(9)]] var t_r32float : texture_storage_2d<r32float, write>;
-[[group(0), binding(10)]] var t_rg32uint : texture_storage_2d<rg32uint, write>;
-[[group(0), binding(11)]] var t_rg32sint : texture_storage_2d<rg32sint, write>;
-[[group(0), binding(12)]] var t_rg32float : texture_storage_2d<rg32float, write>;
-[[group(0), binding(13)]] var t_rgba32uint : texture_storage_2d<rgba32uint, write>;
-[[group(0), binding(14)]] var t_rgba32sint : texture_storage_2d<rgba32sint, write>;
-[[group(0), binding(15)]] var t_rgba32float : texture_storage_2d<rgba32float, write>;
+@group(0) @binding(0) var t_rgba8unorm : texture_storage_2d<rgba8unorm, write>;
+@group(0) @binding(1) var t_rgba8snorm : texture_storage_2d<rgba8snorm, write>;
+@group(0) @binding(2) var t_rgba8uint : texture_storage_2d<rgba8uint, write>;
+@group(0) @binding(3) var t_rgba8sint : texture_storage_2d<rgba8sint, write>;
+@group(0) @binding(4) var t_rgba16uint : texture_storage_2d<rgba16uint, write>;
+@group(0) @binding(5) var t_rgba16sint : texture_storage_2d<rgba16sint, write>;
+@group(0) @binding(6) var t_rgba16float : texture_storage_2d<rgba16float, write>;
+@group(0) @binding(7) var t_r32uint : texture_storage_2d<r32uint, write>;
+@group(0) @binding(8) var t_r32sint : texture_storage_2d<r32sint, write>;
+@group(0) @binding(9) var t_r32float : texture_storage_2d<r32float, write>;
+@group(0) @binding(10) var t_rg32uint : texture_storage_2d<rg32uint, write>;
+@group(0) @binding(11) var t_rg32sint : texture_storage_2d<rg32sint, write>;
+@group(0) @binding(12) var t_rg32float : texture_storage_2d<rg32float, write>;
+@group(0) @binding(13) var t_rgba32uint : texture_storage_2d<rgba32uint, write>;
+@group(0) @binding(14) var t_rgba32sint : texture_storage_2d<rgba32sint, write>;
+@group(0) @binding(15) var t_rgba32float : texture_storage_2d<rgba32float, write>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = t_rgba8unorm;
   _ = t_rgba8snorm;
diff --git a/test/types/texture/storage/2d.wgsl.expected.wgsl b/test/types/texture/storage/2d.wgsl.expected.wgsl
index 960e724..97824ad 100644
--- a/test/types/texture/storage/2d.wgsl.expected.wgsl
+++ b/test/types/texture/storage/2d.wgsl.expected.wgsl
@@ -1,36 +1,36 @@
-[[group(0), binding(0)]] var t_rgba8unorm : texture_storage_2d<rgba8unorm, write>;
+@group(0) @binding(0) var t_rgba8unorm : texture_storage_2d<rgba8unorm, write>;
 
-[[group(0), binding(1)]] var t_rgba8snorm : texture_storage_2d<rgba8snorm, write>;
+@group(0) @binding(1) var t_rgba8snorm : texture_storage_2d<rgba8snorm, write>;
 
-[[group(0), binding(2)]] var t_rgba8uint : texture_storage_2d<rgba8uint, write>;
+@group(0) @binding(2) var t_rgba8uint : texture_storage_2d<rgba8uint, write>;
 
-[[group(0), binding(3)]] var t_rgba8sint : texture_storage_2d<rgba8sint, write>;
+@group(0) @binding(3) var t_rgba8sint : texture_storage_2d<rgba8sint, write>;
 
-[[group(0), binding(4)]] var t_rgba16uint : texture_storage_2d<rgba16uint, write>;
+@group(0) @binding(4) var t_rgba16uint : texture_storage_2d<rgba16uint, write>;
 
-[[group(0), binding(5)]] var t_rgba16sint : texture_storage_2d<rgba16sint, write>;
+@group(0) @binding(5) var t_rgba16sint : texture_storage_2d<rgba16sint, write>;
 
-[[group(0), binding(6)]] var t_rgba16float : texture_storage_2d<rgba16float, write>;
+@group(0) @binding(6) var t_rgba16float : texture_storage_2d<rgba16float, write>;
 
-[[group(0), binding(7)]] var t_r32uint : texture_storage_2d<r32uint, write>;
+@group(0) @binding(7) var t_r32uint : texture_storage_2d<r32uint, write>;
 
-[[group(0), binding(8)]] var t_r32sint : texture_storage_2d<r32sint, write>;
+@group(0) @binding(8) var t_r32sint : texture_storage_2d<r32sint, write>;
 
-[[group(0), binding(9)]] var t_r32float : texture_storage_2d<r32float, write>;
+@group(0) @binding(9) var t_r32float : texture_storage_2d<r32float, write>;
 
-[[group(0), binding(10)]] var t_rg32uint : texture_storage_2d<rg32uint, write>;
+@group(0) @binding(10) var t_rg32uint : texture_storage_2d<rg32uint, write>;
 
-[[group(0), binding(11)]] var t_rg32sint : texture_storage_2d<rg32sint, write>;
+@group(0) @binding(11) var t_rg32sint : texture_storage_2d<rg32sint, write>;
 
-[[group(0), binding(12)]] var t_rg32float : texture_storage_2d<rg32float, write>;
+@group(0) @binding(12) var t_rg32float : texture_storage_2d<rg32float, write>;
 
-[[group(0), binding(13)]] var t_rgba32uint : texture_storage_2d<rgba32uint, write>;
+@group(0) @binding(13) var t_rgba32uint : texture_storage_2d<rgba32uint, write>;
 
-[[group(0), binding(14)]] var t_rgba32sint : texture_storage_2d<rgba32sint, write>;
+@group(0) @binding(14) var t_rgba32sint : texture_storage_2d<rgba32sint, write>;
 
-[[group(0), binding(15)]] var t_rgba32float : texture_storage_2d<rgba32float, write>;
+@group(0) @binding(15) var t_rgba32float : texture_storage_2d<rgba32float, write>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = t_rgba8unorm;
   _ = t_rgba8snorm;
diff --git a/test/types/texture/storage/2d_array.wgsl b/test/types/texture/storage/2d_array.wgsl
index 15a3f80..6919fda 100644
--- a/test/types/texture/storage/2d_array.wgsl
+++ b/test/types/texture/storage/2d_array.wgsl
@@ -1,21 +1,21 @@
-[[group(0), binding(0)]] var t_rgba8unorm : texture_storage_2d_array<rgba8unorm, write>;
-[[group(0), binding(1)]] var t_rgba8snorm : texture_storage_2d_array<rgba8snorm, write>;
-[[group(0), binding(2)]] var t_rgba8uint : texture_storage_2d_array<rgba8uint, write>;
-[[group(0), binding(3)]] var t_rgba8sint : texture_storage_2d_array<rgba8sint, write>;
-[[group(0), binding(4)]] var t_rgba16uint : texture_storage_2d_array<rgba16uint, write>;
-[[group(0), binding(5)]] var t_rgba16sint : texture_storage_2d_array<rgba16sint, write>;
-[[group(0), binding(6)]] var t_rgba16float : texture_storage_2d_array<rgba16float, write>;
-[[group(0), binding(7)]] var t_r32uint : texture_storage_2d_array<r32uint, write>;
-[[group(0), binding(8)]] var t_r32sint : texture_storage_2d_array<r32sint, write>;
-[[group(0), binding(9)]] var t_r32float : texture_storage_2d_array<r32float, write>;
-[[group(0), binding(10)]] var t_rg32uint : texture_storage_2d_array<rg32uint, write>;
-[[group(0), binding(11)]] var t_rg32sint : texture_storage_2d_array<rg32sint, write>;
-[[group(0), binding(12)]] var t_rg32float : texture_storage_2d_array<rg32float, write>;
-[[group(0), binding(13)]] var t_rgba32uint : texture_storage_2d_array<rgba32uint, write>;
-[[group(0), binding(14)]] var t_rgba32sint : texture_storage_2d_array<rgba32sint, write>;
-[[group(0), binding(15)]] var t_rgba32float : texture_storage_2d_array<rgba32float, write>;
+@group(0) @binding(0) var t_rgba8unorm : texture_storage_2d_array<rgba8unorm, write>;
+@group(0) @binding(1) var t_rgba8snorm : texture_storage_2d_array<rgba8snorm, write>;
+@group(0) @binding(2) var t_rgba8uint : texture_storage_2d_array<rgba8uint, write>;
+@group(0) @binding(3) var t_rgba8sint : texture_storage_2d_array<rgba8sint, write>;
+@group(0) @binding(4) var t_rgba16uint : texture_storage_2d_array<rgba16uint, write>;
+@group(0) @binding(5) var t_rgba16sint : texture_storage_2d_array<rgba16sint, write>;
+@group(0) @binding(6) var t_rgba16float : texture_storage_2d_array<rgba16float, write>;
+@group(0) @binding(7) var t_r32uint : texture_storage_2d_array<r32uint, write>;
+@group(0) @binding(8) var t_r32sint : texture_storage_2d_array<r32sint, write>;
+@group(0) @binding(9) var t_r32float : texture_storage_2d_array<r32float, write>;
+@group(0) @binding(10) var t_rg32uint : texture_storage_2d_array<rg32uint, write>;
+@group(0) @binding(11) var t_rg32sint : texture_storage_2d_array<rg32sint, write>;
+@group(0) @binding(12) var t_rg32float : texture_storage_2d_array<rg32float, write>;
+@group(0) @binding(13) var t_rgba32uint : texture_storage_2d_array<rgba32uint, write>;
+@group(0) @binding(14) var t_rgba32sint : texture_storage_2d_array<rgba32sint, write>;
+@group(0) @binding(15) var t_rgba32float : texture_storage_2d_array<rgba32float, write>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = t_rgba8unorm;
   _ = t_rgba8snorm;
diff --git a/test/types/texture/storage/2d_array.wgsl.expected.wgsl b/test/types/texture/storage/2d_array.wgsl.expected.wgsl
index c541689..c4aa337 100644
--- a/test/types/texture/storage/2d_array.wgsl.expected.wgsl
+++ b/test/types/texture/storage/2d_array.wgsl.expected.wgsl
@@ -1,36 +1,36 @@
-[[group(0), binding(0)]] var t_rgba8unorm : texture_storage_2d_array<rgba8unorm, write>;
+@group(0) @binding(0) var t_rgba8unorm : texture_storage_2d_array<rgba8unorm, write>;
 
-[[group(0), binding(1)]] var t_rgba8snorm : texture_storage_2d_array<rgba8snorm, write>;
+@group(0) @binding(1) var t_rgba8snorm : texture_storage_2d_array<rgba8snorm, write>;
 
-[[group(0), binding(2)]] var t_rgba8uint : texture_storage_2d_array<rgba8uint, write>;
+@group(0) @binding(2) var t_rgba8uint : texture_storage_2d_array<rgba8uint, write>;
 
-[[group(0), binding(3)]] var t_rgba8sint : texture_storage_2d_array<rgba8sint, write>;
+@group(0) @binding(3) var t_rgba8sint : texture_storage_2d_array<rgba8sint, write>;
 
-[[group(0), binding(4)]] var t_rgba16uint : texture_storage_2d_array<rgba16uint, write>;
+@group(0) @binding(4) var t_rgba16uint : texture_storage_2d_array<rgba16uint, write>;
 
-[[group(0), binding(5)]] var t_rgba16sint : texture_storage_2d_array<rgba16sint, write>;
+@group(0) @binding(5) var t_rgba16sint : texture_storage_2d_array<rgba16sint, write>;
 
-[[group(0), binding(6)]] var t_rgba16float : texture_storage_2d_array<rgba16float, write>;
+@group(0) @binding(6) var t_rgba16float : texture_storage_2d_array<rgba16float, write>;
 
-[[group(0), binding(7)]] var t_r32uint : texture_storage_2d_array<r32uint, write>;
+@group(0) @binding(7) var t_r32uint : texture_storage_2d_array<r32uint, write>;
 
-[[group(0), binding(8)]] var t_r32sint : texture_storage_2d_array<r32sint, write>;
+@group(0) @binding(8) var t_r32sint : texture_storage_2d_array<r32sint, write>;
 
-[[group(0), binding(9)]] var t_r32float : texture_storage_2d_array<r32float, write>;
+@group(0) @binding(9) var t_r32float : texture_storage_2d_array<r32float, write>;
 
-[[group(0), binding(10)]] var t_rg32uint : texture_storage_2d_array<rg32uint, write>;
+@group(0) @binding(10) var t_rg32uint : texture_storage_2d_array<rg32uint, write>;
 
-[[group(0), binding(11)]] var t_rg32sint : texture_storage_2d_array<rg32sint, write>;
+@group(0) @binding(11) var t_rg32sint : texture_storage_2d_array<rg32sint, write>;
 
-[[group(0), binding(12)]] var t_rg32float : texture_storage_2d_array<rg32float, write>;
+@group(0) @binding(12) var t_rg32float : texture_storage_2d_array<rg32float, write>;
 
-[[group(0), binding(13)]] var t_rgba32uint : texture_storage_2d_array<rgba32uint, write>;
+@group(0) @binding(13) var t_rgba32uint : texture_storage_2d_array<rgba32uint, write>;
 
-[[group(0), binding(14)]] var t_rgba32sint : texture_storage_2d_array<rgba32sint, write>;
+@group(0) @binding(14) var t_rgba32sint : texture_storage_2d_array<rgba32sint, write>;
 
-[[group(0), binding(15)]] var t_rgba32float : texture_storage_2d_array<rgba32float, write>;
+@group(0) @binding(15) var t_rgba32float : texture_storage_2d_array<rgba32float, write>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = t_rgba8unorm;
   _ = t_rgba8snorm;
diff --git a/test/types/texture/storage/3d.wgsl b/test/types/texture/storage/3d.wgsl
index 915be52..710d0d3 100644
--- a/test/types/texture/storage/3d.wgsl
+++ b/test/types/texture/storage/3d.wgsl
@@ -1,21 +1,21 @@
-[[group(0), binding(0)]] var t_rgba8unorm : texture_storage_3d<rgba8unorm, write>;
-[[group(0), binding(1)]] var t_rgba8snorm : texture_storage_3d<rgba8snorm, write>;
-[[group(0), binding(2)]] var t_rgba8uint : texture_storage_3d<rgba8uint, write>;
-[[group(0), binding(3)]] var t_rgba8sint : texture_storage_3d<rgba8sint, write>;
-[[group(0), binding(4)]] var t_rgba16uint : texture_storage_3d<rgba16uint, write>;
-[[group(0), binding(5)]] var t_rgba16sint : texture_storage_3d<rgba16sint, write>;
-[[group(0), binding(6)]] var t_rgba16float : texture_storage_3d<rgba16float, write>;
-[[group(0), binding(7)]] var t_r32uint : texture_storage_3d<r32uint, write>;
-[[group(0), binding(8)]] var t_r32sint : texture_storage_3d<r32sint, write>;
-[[group(0), binding(9)]] var t_r32float : texture_storage_3d<r32float, write>;
-[[group(0), binding(10)]] var t_rg32uint : texture_storage_3d<rg32uint, write>;
-[[group(0), binding(11)]] var t_rg32sint : texture_storage_3d<rg32sint, write>;
-[[group(0), binding(12)]] var t_rg32float : texture_storage_3d<rg32float, write>;
-[[group(0), binding(13)]] var t_rgba32uint : texture_storage_3d<rgba32uint, write>;
-[[group(0), binding(14)]] var t_rgba32sint : texture_storage_3d<rgba32sint, write>;
-[[group(0), binding(15)]] var t_rgba32float : texture_storage_3d<rgba32float, write>;
+@group(0) @binding(0) var t_rgba8unorm : texture_storage_3d<rgba8unorm, write>;
+@group(0) @binding(1) var t_rgba8snorm : texture_storage_3d<rgba8snorm, write>;
+@group(0) @binding(2) var t_rgba8uint : texture_storage_3d<rgba8uint, write>;
+@group(0) @binding(3) var t_rgba8sint : texture_storage_3d<rgba8sint, write>;
+@group(0) @binding(4) var t_rgba16uint : texture_storage_3d<rgba16uint, write>;
+@group(0) @binding(5) var t_rgba16sint : texture_storage_3d<rgba16sint, write>;
+@group(0) @binding(6) var t_rgba16float : texture_storage_3d<rgba16float, write>;
+@group(0) @binding(7) var t_r32uint : texture_storage_3d<r32uint, write>;
+@group(0) @binding(8) var t_r32sint : texture_storage_3d<r32sint, write>;
+@group(0) @binding(9) var t_r32float : texture_storage_3d<r32float, write>;
+@group(0) @binding(10) var t_rg32uint : texture_storage_3d<rg32uint, write>;
+@group(0) @binding(11) var t_rg32sint : texture_storage_3d<rg32sint, write>;
+@group(0) @binding(12) var t_rg32float : texture_storage_3d<rg32float, write>;
+@group(0) @binding(13) var t_rgba32uint : texture_storage_3d<rgba32uint, write>;
+@group(0) @binding(14) var t_rgba32sint : texture_storage_3d<rgba32sint, write>;
+@group(0) @binding(15) var t_rgba32float : texture_storage_3d<rgba32float, write>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = t_rgba8unorm;
   _ = t_rgba8snorm;
diff --git a/test/types/texture/storage/3d.wgsl.expected.wgsl b/test/types/texture/storage/3d.wgsl.expected.wgsl
index af8ae71..c3ba672 100644
--- a/test/types/texture/storage/3d.wgsl.expected.wgsl
+++ b/test/types/texture/storage/3d.wgsl.expected.wgsl
@@ -1,36 +1,36 @@
-[[group(0), binding(0)]] var t_rgba8unorm : texture_storage_3d<rgba8unorm, write>;
+@group(0) @binding(0) var t_rgba8unorm : texture_storage_3d<rgba8unorm, write>;
 
-[[group(0), binding(1)]] var t_rgba8snorm : texture_storage_3d<rgba8snorm, write>;
+@group(0) @binding(1) var t_rgba8snorm : texture_storage_3d<rgba8snorm, write>;
 
-[[group(0), binding(2)]] var t_rgba8uint : texture_storage_3d<rgba8uint, write>;
+@group(0) @binding(2) var t_rgba8uint : texture_storage_3d<rgba8uint, write>;
 
-[[group(0), binding(3)]] var t_rgba8sint : texture_storage_3d<rgba8sint, write>;
+@group(0) @binding(3) var t_rgba8sint : texture_storage_3d<rgba8sint, write>;
 
-[[group(0), binding(4)]] var t_rgba16uint : texture_storage_3d<rgba16uint, write>;
+@group(0) @binding(4) var t_rgba16uint : texture_storage_3d<rgba16uint, write>;
 
-[[group(0), binding(5)]] var t_rgba16sint : texture_storage_3d<rgba16sint, write>;
+@group(0) @binding(5) var t_rgba16sint : texture_storage_3d<rgba16sint, write>;
 
-[[group(0), binding(6)]] var t_rgba16float : texture_storage_3d<rgba16float, write>;
+@group(0) @binding(6) var t_rgba16float : texture_storage_3d<rgba16float, write>;
 
-[[group(0), binding(7)]] var t_r32uint : texture_storage_3d<r32uint, write>;
+@group(0) @binding(7) var t_r32uint : texture_storage_3d<r32uint, write>;
 
-[[group(0), binding(8)]] var t_r32sint : texture_storage_3d<r32sint, write>;
+@group(0) @binding(8) var t_r32sint : texture_storage_3d<r32sint, write>;
 
-[[group(0), binding(9)]] var t_r32float : texture_storage_3d<r32float, write>;
+@group(0) @binding(9) var t_r32float : texture_storage_3d<r32float, write>;
 
-[[group(0), binding(10)]] var t_rg32uint : texture_storage_3d<rg32uint, write>;
+@group(0) @binding(10) var t_rg32uint : texture_storage_3d<rg32uint, write>;
 
-[[group(0), binding(11)]] var t_rg32sint : texture_storage_3d<rg32sint, write>;
+@group(0) @binding(11) var t_rg32sint : texture_storage_3d<rg32sint, write>;
 
-[[group(0), binding(12)]] var t_rg32float : texture_storage_3d<rg32float, write>;
+@group(0) @binding(12) var t_rg32float : texture_storage_3d<rg32float, write>;
 
-[[group(0), binding(13)]] var t_rgba32uint : texture_storage_3d<rgba32uint, write>;
+@group(0) @binding(13) var t_rgba32uint : texture_storage_3d<rgba32uint, write>;
 
-[[group(0), binding(14)]] var t_rgba32sint : texture_storage_3d<rgba32sint, write>;
+@group(0) @binding(14) var t_rgba32sint : texture_storage_3d<rgba32sint, write>;
 
-[[group(0), binding(15)]] var t_rgba32float : texture_storage_3d<rgba32float, write>;
+@group(0) @binding(15) var t_rgba32float : texture_storage_3d<rgba32float, write>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = t_rgba8unorm;
   _ = t_rgba8snorm;
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_SingleBlock_Back.spvasm.expected.hlsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_SingleBlock_Back.spvasm.expected.hlsl
index ad191b8..545d602 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_SingleBlock_Back.spvasm.expected.hlsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_SingleBlock_Back.spvasm.expected.hlsl
@@ -12,7 +12,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_SingleBlock_Back.spvasm.expected.msl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_SingleBlock_Back.spvasm.expected.msl
index ad191b8..545d602 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_SingleBlock_Back.spvasm.expected.msl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_SingleBlock_Back.spvasm.expected.msl
@@ -12,7 +12,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_SingleBlock_Back.spvasm.expected.spvasm b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_SingleBlock_Back.spvasm.expected.spvasm
index ad191b8..9e7e684 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_SingleBlock_Back.spvasm.expected.spvasm
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_SingleBlock_Back.spvasm.expected.spvasm
@@ -1,20 +1,20 @@
-SKIP: FAILED
+SKIP FAILED
 
 
-var<private> var_1 : u32;
+var private var_1 u32 ;
 
-fn main_1() {
-  var_1 = 0u;
-  loop {
-    var_1 = 1u;
-  }
-  var_1 = 5u;
-  return;
-}
+fn main_1
+var_1 = 0u ;
+loop
+var_1 = 1u ;
 
-[[stage(fragment)]]
-fn main() {
-  main_1();
-}
+var_1 = 5u ;
+return ;
 
-error: loop does not exit
+
+stage fragment
+fn main
+main_1 ;
+
+
+error loop does not exit
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_SingleBlock_Back.spvasm.expected.wgsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_SingleBlock_Back.spvasm.expected.wgsl
index ad191b8..545d602 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_SingleBlock_Back.spvasm.expected.wgsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_SingleBlock_Back.spvasm.expected.wgsl
@@ -12,7 +12,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Conditional.spvasm.expected.hlsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Conditional.spvasm.expected.hlsl
index 791ac1a..ed3372c 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Conditional.spvasm.expected.hlsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Conditional.spvasm.expected.hlsl
@@ -22,7 +22,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Conditional.spvasm.expected.msl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Conditional.spvasm.expected.msl
index 791ac1a..ed3372c 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Conditional.spvasm.expected.msl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Conditional.spvasm.expected.msl
@@ -22,7 +22,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Conditional.spvasm.expected.spvasm b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Conditional.spvasm.expected.spvasm
index 791ac1a..b9ead81 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Conditional.spvasm.expected.spvasm
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Conditional.spvasm.expected.spvasm
@@ -1,30 +1,30 @@
-SKIP: FAILED
+SKIP FAILED
 
 
-var<private> var_1 : u32;
+var private var_1 u32 ;
 
-fn main_1() {
-  var_1 = 0u;
-  loop {
-    var_1 = 1u;
-    var_1 = 2u;
-    if (true) {
-      var_1 = 3u;
-      continue;
-    }
-    var_1 = 4u;
+fn main_1
+var_1 = 0u ;
+loop
+var_1 = 1u ;
+var_1 = 2u ;
+if true
+var_1 = 3u ;
+continue ;
 
-    continuing {
-      var_1 = 5u;
-    }
-  }
-  var_1 = 6u;
-  return;
-}
+var_1 = 4u ;
 
-[[stage(fragment)]]
-fn main() {
-  main_1();
-}
+continuing
+var_1 = 5u ;
 
-error: loop does not exit
+
+var_1 = 6u ;
+return ;
+
+
+stage fragment
+fn main
+main_1 ;
+
+
+error loop does not exit
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Conditional.spvasm.expected.wgsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Conditional.spvasm.expected.wgsl
index 791ac1a..ed3372c 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Conditional.spvasm.expected.wgsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Conditional.spvasm.expected.wgsl
@@ -22,7 +22,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Conditional_EmptyContinuing.spvasm.expected.hlsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Conditional_EmptyContinuing.spvasm.expected.hlsl
index 776810f..167379a 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Conditional_EmptyContinuing.spvasm.expected.hlsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Conditional_EmptyContinuing.spvasm.expected.hlsl
@@ -18,7 +18,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Conditional_EmptyContinuing.spvasm.expected.msl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Conditional_EmptyContinuing.spvasm.expected.msl
index 776810f..167379a 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Conditional_EmptyContinuing.spvasm.expected.msl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Conditional_EmptyContinuing.spvasm.expected.msl
@@ -18,7 +18,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Conditional_EmptyContinuing.spvasm.expected.spvasm b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Conditional_EmptyContinuing.spvasm.expected.spvasm
index 776810f..6c6758e 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Conditional_EmptyContinuing.spvasm.expected.spvasm
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Conditional_EmptyContinuing.spvasm.expected.spvasm
@@ -1,26 +1,26 @@
-SKIP: FAILED
+SKIP FAILED
 
 
-var<private> var_1 : u32;
+var private var_1 u32 ;
 
-fn main_1() {
-  var_1 = 0u;
-  loop {
-    var_1 = 1u;
-    var_1 = 2u;
-    if (true) {
-      var_1 = 3u;
-      continue;
-    }
-    var_1 = 4u;
-  }
-  var_1 = 6u;
-  return;
-}
+fn main_1
+var_1 = 0u ;
+loop
+var_1 = 1u ;
+var_1 = 2u ;
+if true
+var_1 = 3u ;
+continue ;
 
-[[stage(fragment)]]
-fn main() {
-  main_1();
-}
+var_1 = 4u ;
 
-error: loop does not exit
+var_1 = 6u ;
+return ;
+
+
+stage fragment
+fn main
+main_1 ;
+
+
+error loop does not exit
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Conditional_EmptyContinuing.spvasm.expected.wgsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Conditional_EmptyContinuing.spvasm.expected.wgsl
index 776810f..167379a 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Conditional_EmptyContinuing.spvasm.expected.wgsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Conditional_EmptyContinuing.spvasm.expected.wgsl
@@ -18,7 +18,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Unconditional.spvasm.expected.hlsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Unconditional.spvasm.expected.hlsl
index 99d5de3..586a7db 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Unconditional.spvasm.expected.hlsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Unconditional.spvasm.expected.hlsl
@@ -17,7 +17,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Unconditional.spvasm.expected.msl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Unconditional.spvasm.expected.msl
index 99d5de3..586a7db 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Unconditional.spvasm.expected.msl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Unconditional.spvasm.expected.msl
@@ -17,7 +17,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Unconditional.spvasm.expected.spvasm b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Unconditional.spvasm.expected.spvasm
index 99d5de3..b06f4ca 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Unconditional.spvasm.expected.spvasm
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Unconditional.spvasm.expected.spvasm
@@ -1,25 +1,25 @@
-SKIP: FAILED
+SKIP FAILED
 
 
-var<private> var_1 : u32;
+var private var_1 u32 ;
 
-fn main_1() {
-  var_1 = 0u;
-  loop {
-    var_1 = 1u;
-    var_1 = 2u;
+fn main_1
+var_1 = 0u ;
+loop
+var_1 = 1u ;
+var_1 = 2u ;
 
-    continuing {
-      var_1 = 4u;
-    }
-  }
-  var_1 = 5u;
-  return;
-}
+continuing
+var_1 = 4u ;
 
-[[stage(fragment)]]
-fn main() {
-  main_1();
-}
 
-error: loop does not exit
+var_1 = 5u ;
+return ;
+
+
+stage fragment
+fn main
+main_1 ;
+
+
+error loop does not exit
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Unconditional.spvasm.expected.wgsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Unconditional.spvasm.expected.wgsl
index 99d5de3..586a7db 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Unconditional.spvasm.expected.wgsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_AfterHeader_Unconditional.spvasm.expected.wgsl
@@ -17,7 +17,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_FromHeader.spvasm.expected.hlsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_FromHeader.spvasm.expected.hlsl
index d64a6b8..e76fca4 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_FromHeader.spvasm.expected.hlsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_FromHeader.spvasm.expected.hlsl
@@ -16,7 +16,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_FromHeader.spvasm.expected.msl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_FromHeader.spvasm.expected.msl
index d64a6b8..e76fca4 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_FromHeader.spvasm.expected.msl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_FromHeader.spvasm.expected.msl
@@ -16,7 +16,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_FromHeader.spvasm.expected.spvasm b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_FromHeader.spvasm.expected.spvasm
index d64a6b8..038fea8 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_FromHeader.spvasm.expected.spvasm
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_FromHeader.spvasm.expected.spvasm
@@ -1,24 +1,24 @@
-SKIP: FAILED
+SKIP FAILED
 
 
-var<private> var_1 : u32;
+var private var_1 u32 ;
 
-fn main_1() {
-  var_1 = 0u;
-  loop {
-    var_1 = 1u;
+fn main_1
+var_1 = 0u ;
+loop
+var_1 = 1u ;
 
-    continuing {
-      var_1 = 4u;
-    }
-  }
-  var_1 = 5u;
-  return;
-}
+continuing
+var_1 = 4u ;
 
-[[stage(fragment)]]
-fn main() {
-  main_1();
-}
 
-error: loop does not exit
+var_1 = 5u ;
+return ;
+
+
+stage fragment
+fn main
+main_1 ;
+
+
+error loop does not exit
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_FromHeader.spvasm.expected.wgsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_FromHeader.spvasm.expected.wgsl
index d64a6b8..e76fca4 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_FromHeader.spvasm.expected.wgsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Continue_FromHeader.spvasm.expected.wgsl
@@ -16,7 +16,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Fallthrough_OnFalse.spvasm.expected.hlsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Fallthrough_OnFalse.spvasm.expected.hlsl
index d678069..cc547df 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Fallthrough_OnFalse.spvasm.expected.hlsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Fallthrough_OnFalse.spvasm.expected.hlsl
@@ -32,7 +32,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Fallthrough_OnFalse.spvasm.expected.msl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Fallthrough_OnFalse.spvasm.expected.msl
index d678069..cc547df 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Fallthrough_OnFalse.spvasm.expected.msl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Fallthrough_OnFalse.spvasm.expected.msl
@@ -32,7 +32,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Fallthrough_OnFalse.spvasm.expected.spvasm b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Fallthrough_OnFalse.spvasm.expected.spvasm
index d678069..341c905 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Fallthrough_OnFalse.spvasm.expected.spvasm
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Fallthrough_OnFalse.spvasm.expected.spvasm
@@ -1,40 +1,40 @@
-SKIP: FAILED
+SKIP FAILED
 
 
-var<private> var_1 : u32;
+var private var_1 u32 ;
 
-fn main_1() {
-  var_1 = 0u;
-  loop {
-    var_1 = 1u;
-    var_1 = 2u;
-    switch(42u) {
-      case 40u: {
-        var_1 = 40u;
-        if (false) {
-          continue;
-        }
-        fallthrough;
-      }
-      case 50u: {
-        var_1 = 50u;
-      }
-      default: {
-      }
-    }
-    var_1 = 3u;
+fn main_1
+var_1 = 0u ;
+loop
+var_1 = 1u ;
+var_1 = 2u ;
+switch 42u
+case 40u
+var_1 = 40u ;
+if false
+continue ;
 
-    continuing {
-      var_1 = 4u;
-    }
-  }
-  var_1 = 5u;
-  return;
-}
+fallthrough ;
 
-[[stage(fragment)]]
-fn main() {
-  main_1();
-}
+case 50u
+var_1 = 50u ;
 
-error: loop does not exit
+default
+
+
+var_1 = 3u ;
+
+continuing
+var_1 = 4u ;
+
+
+var_1 = 5u ;
+return ;
+
+
+stage fragment
+fn main
+main_1 ;
+
+
+error loop does not exit
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Fallthrough_OnFalse.spvasm.expected.wgsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Fallthrough_OnFalse.spvasm.expected.wgsl
index d678069..cc547df 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Fallthrough_OnFalse.spvasm.expected.wgsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Fallthrough_OnFalse.spvasm.expected.wgsl
@@ -32,7 +32,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Fallthrough_OnTrue.spvasm.expected.hlsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Fallthrough_OnTrue.spvasm.expected.hlsl
index 6ee0306..181cd62 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Fallthrough_OnTrue.spvasm.expected.hlsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Fallthrough_OnTrue.spvasm.expected.hlsl
@@ -33,7 +33,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Fallthrough_OnTrue.spvasm.expected.msl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Fallthrough_OnTrue.spvasm.expected.msl
index 6ee0306..181cd62 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Fallthrough_OnTrue.spvasm.expected.msl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Fallthrough_OnTrue.spvasm.expected.msl
@@ -33,7 +33,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Fallthrough_OnTrue.spvasm.expected.spvasm b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Fallthrough_OnTrue.spvasm.expected.spvasm
index 6ee0306..a58bc55 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Fallthrough_OnTrue.spvasm.expected.spvasm
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Fallthrough_OnTrue.spvasm.expected.spvasm
@@ -1,41 +1,41 @@
-SKIP: FAILED
+SKIP FAILED
 
 
-var<private> var_1 : u32;
+var private var_1 u32 ;
 
-fn main_1() {
-  var_1 = 0u;
-  loop {
-    var_1 = 1u;
-    var_1 = 2u;
-    switch(42u) {
-      case 40u: {
-        var_1 = 40u;
-        if (false) {
-        } else {
-          continue;
-        }
-        fallthrough;
-      }
-      case 50u: {
-        var_1 = 50u;
-      }
-      default: {
-      }
-    }
-    var_1 = 3u;
+fn main_1
+var_1 = 0u ;
+loop
+var_1 = 1u ;
+var_1 = 2u ;
+switch 42u
+case 40u
+var_1 = 40u ;
+if false
+else
+continue ;
 
-    continuing {
-      var_1 = 4u;
-    }
-  }
-  var_1 = 5u;
-  return;
-}
+fallthrough ;
 
-[[stage(fragment)]]
-fn main() {
-  main_1();
-}
+case 50u
+var_1 = 50u ;
 
-error: loop does not exit
+default
+
+
+var_1 = 3u ;
+
+continuing
+var_1 = 4u ;
+
+
+var_1 = 5u ;
+return ;
+
+
+stage fragment
+fn main
+main_1 ;
+
+
+error loop does not exit
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Fallthrough_OnTrue.spvasm.expected.wgsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Fallthrough_OnTrue.spvasm.expected.wgsl
index 6ee0306..181cd62 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Fallthrough_OnTrue.spvasm.expected.wgsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Fallthrough_OnTrue.spvasm.expected.wgsl
@@ -33,7 +33,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Forward_OnFalse.spvasm.expected.hlsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Forward_OnFalse.spvasm.expected.hlsl
index f1f3c5d..bd16703 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Forward_OnFalse.spvasm.expected.hlsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Forward_OnFalse.spvasm.expected.hlsl
@@ -21,7 +21,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Forward_OnFalse.spvasm.expected.msl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Forward_OnFalse.spvasm.expected.msl
index f1f3c5d..bd16703 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Forward_OnFalse.spvasm.expected.msl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Forward_OnFalse.spvasm.expected.msl
@@ -21,7 +21,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Forward_OnFalse.spvasm.expected.spvasm b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Forward_OnFalse.spvasm.expected.spvasm
index f1f3c5d..95953ca 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Forward_OnFalse.spvasm.expected.spvasm
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Forward_OnFalse.spvasm.expected.spvasm
@@ -1,29 +1,29 @@
-SKIP: FAILED
+SKIP FAILED
 
 
-var<private> var_1 : u32;
+var private var_1 u32 ;
 
-fn main_1() {
-  var_1 = 0u;
-  loop {
-    var_1 = 1u;
-    var_1 = 2u;
-    if (false) {
-      continue;
-    }
-    var_1 = 3u;
+fn main_1
+var_1 = 0u ;
+loop
+var_1 = 1u ;
+var_1 = 2u ;
+if false
+continue ;
 
-    continuing {
-      var_1 = 4u;
-    }
-  }
-  var_1 = 5u;
-  return;
-}
+var_1 = 3u ;
 
-[[stage(fragment)]]
-fn main() {
-  main_1();
-}
+continuing
+var_1 = 4u ;
 
-error: loop does not exit
+
+var_1 = 5u ;
+return ;
+
+
+stage fragment
+fn main
+main_1 ;
+
+
+error loop does not exit
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Forward_OnFalse.spvasm.expected.wgsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Forward_OnFalse.spvasm.expected.wgsl
index f1f3c5d..bd16703 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Forward_OnFalse.spvasm.expected.wgsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Forward_OnFalse.spvasm.expected.wgsl
@@ -21,7 +21,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Forward_OnTrue.spvasm.expected.hlsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Forward_OnTrue.spvasm.expected.hlsl
index d3f4646..a789380 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Forward_OnTrue.spvasm.expected.hlsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Forward_OnTrue.spvasm.expected.hlsl
@@ -22,7 +22,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Forward_OnTrue.spvasm.expected.msl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Forward_OnTrue.spvasm.expected.msl
index d3f4646..a789380 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Forward_OnTrue.spvasm.expected.msl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Forward_OnTrue.spvasm.expected.msl
@@ -22,7 +22,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Forward_OnTrue.spvasm.expected.spvasm b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Forward_OnTrue.spvasm.expected.spvasm
index d3f4646..faa5d1c 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Forward_OnTrue.spvasm.expected.spvasm
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Forward_OnTrue.spvasm.expected.spvasm
@@ -1,30 +1,30 @@
-SKIP: FAILED
+SKIP FAILED
 
 
-var<private> var_1 : u32;
+var private var_1 u32 ;
 
-fn main_1() {
-  var_1 = 0u;
-  loop {
-    var_1 = 1u;
-    var_1 = 2u;
-    if (false) {
-    } else {
-      continue;
-    }
-    var_1 = 3u;
+fn main_1
+var_1 = 0u ;
+loop
+var_1 = 1u ;
+var_1 = 2u ;
+if false
+else
+continue ;
 
-    continuing {
-      var_1 = 4u;
-    }
-  }
-  var_1 = 5u;
-  return;
-}
+var_1 = 3u ;
 
-[[stage(fragment)]]
-fn main() {
-  main_1();
-}
+continuing
+var_1 = 4u ;
 
-error: loop does not exit
+
+var_1 = 5u ;
+return ;
+
+
+stage fragment
+fn main
+main_1 ;
+
+
+error loop does not exit
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Forward_OnTrue.spvasm.expected.wgsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Forward_OnTrue.spvasm.expected.wgsl
index d3f4646..a789380 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Forward_OnTrue.spvasm.expected.wgsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_Forward_OnTrue.spvasm.expected.wgsl
@@ -22,7 +22,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_IfBreak_OnFalse.spvasm.expected.hlsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_IfBreak_OnFalse.spvasm.expected.hlsl
index 7f23c27..ec64472 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_IfBreak_OnFalse.spvasm.expected.hlsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_IfBreak_OnFalse.spvasm.expected.hlsl
@@ -24,7 +24,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_IfBreak_OnFalse.spvasm.expected.msl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_IfBreak_OnFalse.spvasm.expected.msl
index 7f23c27..ec64472 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_IfBreak_OnFalse.spvasm.expected.msl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_IfBreak_OnFalse.spvasm.expected.msl
@@ -24,7 +24,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_IfBreak_OnFalse.spvasm.expected.spvasm b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_IfBreak_OnFalse.spvasm.expected.spvasm
index 7f23c27..b5d3c49 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_IfBreak_OnFalse.spvasm.expected.spvasm
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_IfBreak_OnFalse.spvasm.expected.spvasm
@@ -1,32 +1,32 @@
-SKIP: FAILED
+SKIP FAILED
 
 
-var<private> var_1 : u32;
+var private var_1 u32 ;
 
-fn main_1() {
-  var_1 = 0u;
-  loop {
-    var_1 = 1u;
-    var_1 = 2u;
-    if (true) {
-      var_1 = 3u;
-      if (false) {
-        continue;
-      }
-    }
-    var_1 = 4u;
+fn main_1
+var_1 = 0u ;
+loop
+var_1 = 1u ;
+var_1 = 2u ;
+if true
+var_1 = 3u ;
+if false
+continue ;
 
-    continuing {
-      var_1 = 5u;
-    }
-  }
-  var_1 = 6u;
-  return;
-}
 
-[[stage(fragment)]]
-fn main() {
-  main_1();
-}
+var_1 = 4u ;
 
-error: loop does not exit
+continuing
+var_1 = 5u ;
+
+
+var_1 = 6u ;
+return ;
+
+
+stage fragment
+fn main
+main_1 ;
+
+
+error loop does not exit
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_IfBreak_OnFalse.spvasm.expected.wgsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_IfBreak_OnFalse.spvasm.expected.wgsl
index 7f23c27..ec64472 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_IfBreak_OnFalse.spvasm.expected.wgsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_IfBreak_OnFalse.spvasm.expected.wgsl
@@ -24,7 +24,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_IfBreak_OnTrue.spvasm.expected.hlsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_IfBreak_OnTrue.spvasm.expected.hlsl
index b80786e..457c6ec 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_IfBreak_OnTrue.spvasm.expected.hlsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_IfBreak_OnTrue.spvasm.expected.hlsl
@@ -25,7 +25,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_IfBreak_OnTrue.spvasm.expected.msl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_IfBreak_OnTrue.spvasm.expected.msl
index b80786e..457c6ec 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_IfBreak_OnTrue.spvasm.expected.msl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_IfBreak_OnTrue.spvasm.expected.msl
@@ -25,7 +25,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_IfBreak_OnTrue.spvasm.expected.spvasm b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_IfBreak_OnTrue.spvasm.expected.spvasm
index b80786e..de9fe3c 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_IfBreak_OnTrue.spvasm.expected.spvasm
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_IfBreak_OnTrue.spvasm.expected.spvasm
@@ -1,33 +1,33 @@
-SKIP: FAILED
+SKIP FAILED
 
 
-var<private> var_1 : u32;
+var private var_1 u32 ;
 
-fn main_1() {
-  var_1 = 0u;
-  loop {
-    var_1 = 1u;
-    var_1 = 2u;
-    if (true) {
-      var_1 = 3u;
-      if (false) {
-      } else {
-        continue;
-      }
-    }
-    var_1 = 4u;
+fn main_1
+var_1 = 0u ;
+loop
+var_1 = 1u ;
+var_1 = 2u ;
+if true
+var_1 = 3u ;
+if false
+else
+continue ;
 
-    continuing {
-      var_1 = 5u;
-    }
-  }
-  var_1 = 6u;
-  return;
-}
 
-[[stage(fragment)]]
-fn main() {
-  main_1();
-}
+var_1 = 4u ;
 
-error: loop does not exit
+continuing
+var_1 = 5u ;
+
+
+var_1 = 6u ;
+return ;
+
+
+stage fragment
+fn main
+main_1 ;
+
+
+error loop does not exit
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_IfBreak_OnTrue.spvasm.expected.wgsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_IfBreak_OnTrue.spvasm.expected.wgsl
index b80786e..457c6ec 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_IfBreak_OnTrue.spvasm.expected.wgsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Continue_IfBreak_OnTrue.spvasm.expected.wgsl
@@ -25,7 +25,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopContinue_FromSwitch.spvasm.expected.hlsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopContinue_FromSwitch.spvasm.expected.hlsl
index 7b5bc4f..82610e2 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopContinue_FromSwitch.spvasm.expected.hlsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopContinue_FromSwitch.spvasm.expected.hlsl
@@ -26,7 +26,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopContinue_FromSwitch.spvasm.expected.msl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopContinue_FromSwitch.spvasm.expected.msl
index 7b5bc4f..82610e2 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopContinue_FromSwitch.spvasm.expected.msl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopContinue_FromSwitch.spvasm.expected.msl
@@ -26,7 +26,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopContinue_FromSwitch.spvasm.expected.spvasm b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopContinue_FromSwitch.spvasm.expected.spvasm
index 7b5bc4f..992c540 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopContinue_FromSwitch.spvasm.expected.spvasm
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopContinue_FromSwitch.spvasm.expected.spvasm
@@ -1,34 +1,34 @@
-SKIP: FAILED
+SKIP FAILED
 
 
-var<private> var_1 : u32;
+var private var_1 u32 ;
 
-fn main_1() {
-  var_1 = 1u;
-  loop {
-    var_1 = 2u;
-    var_1 = 3u;
-    switch(42u) {
-      case 40u: {
-        var_1 = 4u;
-        continue;
-      }
-      default: {
-      }
-    }
-    var_1 = 5u;
+fn main_1
+var_1 = 1u ;
+loop
+var_1 = 2u ;
+var_1 = 3u ;
+switch 42u
+case 40u
+var_1 = 4u ;
+continue ;
 
-    continuing {
-      var_1 = 6u;
-    }
-  }
-  var_1 = 7u;
-  return;
-}
+default
 
-[[stage(fragment)]]
-fn main() {
-  main_1();
-}
 
-error: loop does not exit
+var_1 = 5u ;
+
+continuing
+var_1 = 6u ;
+
+
+var_1 = 7u ;
+return ;
+
+
+stage fragment
+fn main
+main_1 ;
+
+
+error loop does not exit
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopContinue_FromSwitch.spvasm.expected.wgsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopContinue_FromSwitch.spvasm.expected.wgsl
index 7b5bc4f..82610e2 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopContinue_FromSwitch.spvasm.expected.wgsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopContinue_FromSwitch.spvasm.expected.wgsl
@@ -26,7 +26,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_Continue_OnFalse.spvasm.expected.hlsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_Continue_OnFalse.spvasm.expected.hlsl
index 90f16be..9a46eeb 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_Continue_OnFalse.spvasm.expected.hlsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_Continue_OnFalse.spvasm.expected.hlsl
@@ -29,7 +29,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_Continue_OnFalse.spvasm.expected.msl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_Continue_OnFalse.spvasm.expected.msl
index 90f16be..9a46eeb 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_Continue_OnFalse.spvasm.expected.msl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_Continue_OnFalse.spvasm.expected.msl
@@ -29,7 +29,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_Continue_OnFalse.spvasm.expected.spvasm b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_Continue_OnFalse.spvasm.expected.spvasm
index 90f16be..e31a3d5 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_Continue_OnFalse.spvasm.expected.spvasm
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_Continue_OnFalse.spvasm.expected.spvasm
@@ -1,37 +1,37 @@
-SKIP: FAILED
+SKIP FAILED
 
 
-var<private> var_1 : u32;
+var private var_1 u32 ;
 
-fn main_1() {
-  var_1 = 1u;
-  loop {
-    var_1 = 2u;
-    var_1 = 3u;
-    switch(42u) {
-      case 40u: {
-        var_1 = 40u;
-        if (false) {
-        } else {
-          continue;
-        }
-      }
-      default: {
-      }
-    }
-    var_1 = 6u;
+fn main_1
+var_1 = 1u ;
+loop
+var_1 = 2u ;
+var_1 = 3u ;
+switch 42u
+case 40u
+var_1 = 40u ;
+if false
+else
+continue ;
 
-    continuing {
-      var_1 = 7u;
-    }
-  }
-  var_1 = 8u;
-  return;
-}
 
-[[stage(fragment)]]
-fn main() {
-  main_1();
-}
+default
 
-error: loop does not exit
+
+var_1 = 6u ;
+
+continuing
+var_1 = 7u ;
+
+
+var_1 = 8u ;
+return ;
+
+
+stage fragment
+fn main
+main_1 ;
+
+
+error loop does not exit
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_Continue_OnFalse.spvasm.expected.wgsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_Continue_OnFalse.spvasm.expected.wgsl
index 90f16be..9a46eeb 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_Continue_OnFalse.spvasm.expected.wgsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_Continue_OnFalse.spvasm.expected.wgsl
@@ -29,7 +29,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_Continue_OnTrue.spvasm.expected.hlsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_Continue_OnTrue.spvasm.expected.hlsl
index 79d355b..083e426 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_Continue_OnTrue.spvasm.expected.hlsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_Continue_OnTrue.spvasm.expected.hlsl
@@ -28,7 +28,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_Continue_OnTrue.spvasm.expected.msl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_Continue_OnTrue.spvasm.expected.msl
index 79d355b..083e426 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_Continue_OnTrue.spvasm.expected.msl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_Continue_OnTrue.spvasm.expected.msl
@@ -28,7 +28,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_Continue_OnTrue.spvasm.expected.spvasm b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_Continue_OnTrue.spvasm.expected.spvasm
index 79d355b..01ea61e 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_Continue_OnTrue.spvasm.expected.spvasm
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_Continue_OnTrue.spvasm.expected.spvasm
@@ -1,36 +1,36 @@
-SKIP: FAILED
+SKIP FAILED
 
 
-var<private> var_1 : u32;
+var private var_1 u32 ;
 
-fn main_1() {
-  var_1 = 1u;
-  loop {
-    var_1 = 2u;
-    var_1 = 3u;
-    switch(42u) {
-      case 40u: {
-        var_1 = 40u;
-        if (false) {
-          continue;
-        }
-      }
-      default: {
-      }
-    }
-    var_1 = 6u;
+fn main_1
+var_1 = 1u ;
+loop
+var_1 = 2u ;
+var_1 = 3u ;
+switch 42u
+case 40u
+var_1 = 40u ;
+if false
+continue ;
 
-    continuing {
-      var_1 = 7u;
-    }
-  }
-  var_1 = 8u;
-  return;
-}
 
-[[stage(fragment)]]
-fn main() {
-  main_1();
-}
+default
 
-error: loop does not exit
+
+var_1 = 6u ;
+
+continuing
+var_1 = 7u ;
+
+
+var_1 = 8u ;
+return ;
+
+
+stage fragment
+fn main
+main_1 ;
+
+
+error loop does not exit
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_Continue_OnTrue.spvasm.expected.wgsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_Continue_OnTrue.spvasm.expected.wgsl
index 79d355b..083e426 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_Continue_OnTrue.spvasm.expected.wgsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_Continue_OnTrue.spvasm.expected.wgsl
@@ -28,7 +28,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_BackEdge_MultiBlockLoop.spvasm.expected.hlsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_BackEdge_MultiBlockLoop.spvasm.expected.hlsl
index 54db413..2efe2a8 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_BackEdge_MultiBlockLoop.spvasm.expected.hlsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_BackEdge_MultiBlockLoop.spvasm.expected.hlsl
@@ -13,7 +13,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_BackEdge_MultiBlockLoop.spvasm.expected.msl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_BackEdge_MultiBlockLoop.spvasm.expected.msl
index 54db413..2efe2a8 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_BackEdge_MultiBlockLoop.spvasm.expected.msl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_BackEdge_MultiBlockLoop.spvasm.expected.msl
@@ -13,7 +13,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_BackEdge_MultiBlockLoop.spvasm.expected.spvasm b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_BackEdge_MultiBlockLoop.spvasm.expected.spvasm
index 54db413..e4c47d6 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_BackEdge_MultiBlockLoop.spvasm.expected.spvasm
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_BackEdge_MultiBlockLoop.spvasm.expected.spvasm
@@ -1,21 +1,21 @@
-SKIP: FAILED
+SKIP FAILED
 
 
-var<private> var_1 : u32;
+var private var_1 u32 ;
 
-fn main_1() {
-  loop {
+fn main_1
+loop
 
-    continuing {
-      var_1 = 1u;
-    }
-  }
-  return;
-}
+continuing
+var_1 = 1u ;
 
-[[stage(fragment)]]
-fn main() {
-  main_1();
-}
 
-error: loop does not exit
+return ;
+
+
+stage fragment
+fn main
+main_1 ;
+
+
+error loop does not exit
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_BackEdge_MultiBlockLoop.spvasm.expected.wgsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_BackEdge_MultiBlockLoop.spvasm.expected.wgsl
index 54db413..2efe2a8 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_BackEdge_MultiBlockLoop.spvasm.expected.wgsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_BackEdge_MultiBlockLoop.spvasm.expected.wgsl
@@ -13,7 +13,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_BackEdge_SingleBlockLoop.spvasm.expected.hlsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_BackEdge_SingleBlockLoop.spvasm.expected.hlsl
index 8c9f743..12d2d6f 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_BackEdge_SingleBlockLoop.spvasm.expected.hlsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_BackEdge_SingleBlockLoop.spvasm.expected.hlsl
@@ -10,7 +10,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_BackEdge_SingleBlockLoop.spvasm.expected.msl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_BackEdge_SingleBlockLoop.spvasm.expected.msl
index 8c9f743..12d2d6f 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_BackEdge_SingleBlockLoop.spvasm.expected.msl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_BackEdge_SingleBlockLoop.spvasm.expected.msl
@@ -10,7 +10,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_BackEdge_SingleBlockLoop.spvasm.expected.spvasm b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_BackEdge_SingleBlockLoop.spvasm.expected.spvasm
index 8c9f743..9348637 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_BackEdge_SingleBlockLoop.spvasm.expected.spvasm
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_BackEdge_SingleBlockLoop.spvasm.expected.spvasm
@@ -1,18 +1,18 @@
-SKIP: FAILED
+SKIP FAILED
 
 
-var<private> var_1 : u32;
+var private var_1 u32 ;
 
-fn main_1() {
-  loop {
-    var_1 = 1u;
-  }
-  return;
-}
+fn main_1
+loop
+var_1 = 1u ;
 
-[[stage(fragment)]]
-fn main() {
-  main_1();
-}
+return ;
 
-error: loop does not exit
+
+stage fragment
+fn main
+main_1 ;
+
+
+error loop does not exit
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_BackEdge_SingleBlockLoop.spvasm.expected.wgsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_BackEdge_SingleBlockLoop.spvasm.expected.wgsl
index 8c9f743..12d2d6f 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_BackEdge_SingleBlockLoop.spvasm.expected.wgsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_BackEdge_SingleBlockLoop.spvasm.expected.wgsl
@@ -10,7 +10,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_BeforeLast.spvasm.expected.hlsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_BeforeLast.spvasm.expected.hlsl
index 084d93f..5709df3 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_BeforeLast.spvasm.expected.hlsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_BeforeLast.spvasm.expected.hlsl
@@ -18,7 +18,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_BeforeLast.spvasm.expected.msl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_BeforeLast.spvasm.expected.msl
index 084d93f..5709df3 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_BeforeLast.spvasm.expected.msl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_BeforeLast.spvasm.expected.msl
@@ -18,7 +18,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_BeforeLast.spvasm.expected.spvasm b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_BeforeLast.spvasm.expected.spvasm
index 084d93f..23786d8 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_BeforeLast.spvasm.expected.spvasm
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_BeforeLast.spvasm.expected.spvasm
@@ -1,26 +1,26 @@
-SKIP: FAILED
+SKIP FAILED
 
 
-var<private> var_1 : u32;
+var private var_1 u32 ;
 
-fn main_1() {
-  loop {
-    if (false) {
-      var_1 = 1u;
-      continue;
-    }
-    var_1 = 2u;
+fn main_1
+loop
+if false
+var_1 = 1u ;
+continue ;
 
-    continuing {
-      var_1 = 3u;
-    }
-  }
-  return;
-}
+var_1 = 2u ;
 
-[[stage(fragment)]]
-fn main() {
-  main_1();
-}
+continuing
+var_1 = 3u ;
 
-error: loop does not exit
+
+return ;
+
+
+stage fragment
+fn main
+main_1 ;
+
+
+error loop does not exit
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_BeforeLast.spvasm.expected.wgsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_BeforeLast.spvasm.expected.wgsl
index 084d93f..5709df3 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_BeforeLast.spvasm.expected.wgsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_BeforeLast.spvasm.expected.wgsl
@@ -18,7 +18,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_FromSwitch.spvasm.expected.hlsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_FromSwitch.spvasm.expected.hlsl
index 7b5bc4f..82610e2 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_FromSwitch.spvasm.expected.hlsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_FromSwitch.spvasm.expected.hlsl
@@ -26,7 +26,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_FromSwitch.spvasm.expected.msl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_FromSwitch.spvasm.expected.msl
index 7b5bc4f..82610e2 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_FromSwitch.spvasm.expected.msl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_FromSwitch.spvasm.expected.msl
@@ -26,7 +26,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_FromSwitch.spvasm.expected.spvasm b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_FromSwitch.spvasm.expected.spvasm
index 7b5bc4f..992c540 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_FromSwitch.spvasm.expected.spvasm
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_FromSwitch.spvasm.expected.spvasm
@@ -1,34 +1,34 @@
-SKIP: FAILED
+SKIP FAILED
 
 
-var<private> var_1 : u32;
+var private var_1 u32 ;
 
-fn main_1() {
-  var_1 = 1u;
-  loop {
-    var_1 = 2u;
-    var_1 = 3u;
-    switch(42u) {
-      case 40u: {
-        var_1 = 4u;
-        continue;
-      }
-      default: {
-      }
-    }
-    var_1 = 5u;
+fn main_1
+var_1 = 1u ;
+loop
+var_1 = 2u ;
+var_1 = 3u ;
+switch 42u
+case 40u
+var_1 = 4u ;
+continue ;
 
-    continuing {
-      var_1 = 6u;
-    }
-  }
-  var_1 = 7u;
-  return;
-}
+default
 
-[[stage(fragment)]]
-fn main() {
-  main_1();
-}
 
-error: loop does not exit
+var_1 = 5u ;
+
+continuing
+var_1 = 6u ;
+
+
+var_1 = 7u ;
+return ;
+
+
+stage fragment
+fn main
+main_1 ;
+
+
+error loop does not exit
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_FromSwitch.spvasm.expected.wgsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_FromSwitch.spvasm.expected.wgsl
index 7b5bc4f..82610e2 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_FromSwitch.spvasm.expected.wgsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_FromSwitch.spvasm.expected.wgsl
@@ -26,7 +26,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_LastInLoopConstruct.spvasm.expected.hlsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_LastInLoopConstruct.spvasm.expected.hlsl
index d43665e..eb514ee 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_LastInLoopConstruct.spvasm.expected.hlsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_LastInLoopConstruct.spvasm.expected.hlsl
@@ -14,7 +14,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_LastInLoopConstruct.spvasm.expected.msl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_LastInLoopConstruct.spvasm.expected.msl
index d43665e..eb514ee 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_LastInLoopConstruct.spvasm.expected.msl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_LastInLoopConstruct.spvasm.expected.msl
@@ -14,7 +14,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_LastInLoopConstruct.spvasm.expected.spvasm b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_LastInLoopConstruct.spvasm.expected.spvasm
index d43665e..211cb2c 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_LastInLoopConstruct.spvasm.expected.spvasm
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_LastInLoopConstruct.spvasm.expected.spvasm
@@ -1,22 +1,22 @@
-SKIP: FAILED
+SKIP FAILED
 
 
-var<private> var_1 : u32;
+var private var_1 u32 ;
 
-fn main_1() {
-  loop {
-    var_1 = 1u;
+fn main_1
+loop
+var_1 = 1u ;
 
-    continuing {
-      var_1 = 2u;
-    }
-  }
-  return;
-}
+continuing
+var_1 = 2u ;
 
-[[stage(fragment)]]
-fn main() {
-  main_1();
-}
 
-error: loop does not exit
+return ;
+
+
+stage fragment
+fn main
+main_1 ;
+
+
+error loop does not exit
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_LastInLoopConstruct.spvasm.expected.wgsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_LastInLoopConstruct.spvasm.expected.wgsl
index d43665e..eb514ee 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_LastInLoopConstruct.spvasm.expected.wgsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopContinue_LastInLoopConstruct.spvasm.expected.wgsl
@@ -14,7 +14,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_FalseBranch_LoopContinue.spvasm.expected.hlsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_FalseBranch_LoopContinue.spvasm.expected.hlsl
index b7ad7d3..d538de1 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_FalseBranch_LoopContinue.spvasm.expected.hlsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_FalseBranch_LoopContinue.spvasm.expected.hlsl
@@ -13,7 +13,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_FalseBranch_LoopContinue.spvasm.expected.msl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_FalseBranch_LoopContinue.spvasm.expected.msl
index b7ad7d3..d538de1 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_FalseBranch_LoopContinue.spvasm.expected.msl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_FalseBranch_LoopContinue.spvasm.expected.msl
@@ -13,7 +13,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_FalseBranch_LoopContinue.spvasm.expected.spvasm b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_FalseBranch_LoopContinue.spvasm.expected.spvasm
index b7ad7d3..42119a0 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_FalseBranch_LoopContinue.spvasm.expected.spvasm
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_FalseBranch_LoopContinue.spvasm.expected.spvasm
@@ -1,21 +1,21 @@
-SKIP: FAILED
+SKIP FAILED
 
 
-var<private> var_1 : u32;
+var private var_1 u32 ;
 
-fn main_1() {
-  loop {
-    if (false) {
-    } else {
-      continue;
-    }
-  }
-  return;
-}
+fn main_1
+loop
+if false
+else
+continue ;
 
-[[stage(fragment)]]
-fn main() {
-  main_1();
-}
 
-error: loop does not exit
+return ;
+
+
+stage fragment
+fn main
+main_1 ;
+
+
+error loop does not exit
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_FalseBranch_LoopContinue.spvasm.expected.wgsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_FalseBranch_LoopContinue.spvasm.expected.wgsl
index b7ad7d3..d538de1 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_FalseBranch_LoopContinue.spvasm.expected.wgsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_FalseBranch_LoopContinue.spvasm.expected.wgsl
@@ -13,7 +13,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_LoopInternallyDiverge_Simple.spvasm.expected.hlsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_LoopInternallyDiverge_Simple.spvasm.expected.hlsl
index c9b1ed7..3122cf9 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_LoopInternallyDiverge_Simple.spvasm.expected.hlsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_LoopInternallyDiverge_Simple.spvasm.expected.hlsl
@@ -22,7 +22,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_LoopInternallyDiverge_Simple.spvasm.expected.msl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_LoopInternallyDiverge_Simple.spvasm.expected.msl
index c9b1ed7..3122cf9 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_LoopInternallyDiverge_Simple.spvasm.expected.msl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_LoopInternallyDiverge_Simple.spvasm.expected.msl
@@ -22,7 +22,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_LoopInternallyDiverge_Simple.spvasm.expected.spvasm b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_LoopInternallyDiverge_Simple.spvasm.expected.spvasm
index c9b1ed7..bf12209 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_LoopInternallyDiverge_Simple.spvasm.expected.spvasm
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_LoopInternallyDiverge_Simple.spvasm.expected.spvasm
@@ -1,30 +1,30 @@
-SKIP: FAILED
+SKIP FAILED
 
 
-var<private> var_1 : u32;
+var private var_1 u32 ;
 
-fn main_1() {
-  var_1 = 10u;
-  loop {
-    var_1 = 20u;
-    if (false) {
-      var_1 = 30u;
-      continue;
-    } else {
-      var_1 = 40u;
-    }
+fn main_1
+var_1 = 10u ;
+loop
+var_1 = 20u ;
+if false
+var_1 = 30u ;
+continue ;
+else
+var_1 = 40u ;
 
-    continuing {
-      var_1 = 90u;
-    }
-  }
-  var_1 = 99u;
-  return;
-}
 
-[[stage(fragment)]]
-fn main() {
-  main_1();
-}
+continuing
+var_1 = 90u ;
 
-error: loop does not exit
+
+var_1 = 99u ;
+return ;
+
+
+stage fragment
+fn main
+main_1 ;
+
+
+error loop does not exit
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_LoopInternallyDiverge_Simple.spvasm.expected.wgsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_LoopInternallyDiverge_Simple.spvasm.expected.wgsl
index c9b1ed7..3122cf9 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_LoopInternallyDiverge_Simple.spvasm.expected.wgsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_LoopInternallyDiverge_Simple.spvasm.expected.wgsl
@@ -22,7 +22,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_NestedIfContinue.spvasm.expected.hlsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_NestedIfContinue.spvasm.expected.hlsl
index 084d93f..5709df3 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_NestedIfContinue.spvasm.expected.hlsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_NestedIfContinue.spvasm.expected.hlsl
@@ -18,7 +18,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_NestedIfContinue.spvasm.expected.msl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_NestedIfContinue.spvasm.expected.msl
index 084d93f..5709df3 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_NestedIfContinue.spvasm.expected.msl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_NestedIfContinue.spvasm.expected.msl
@@ -18,7 +18,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_NestedIfContinue.spvasm.expected.spvasm b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_NestedIfContinue.spvasm.expected.spvasm
index 084d93f..23786d8 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_NestedIfContinue.spvasm.expected.spvasm
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_NestedIfContinue.spvasm.expected.spvasm
@@ -1,26 +1,26 @@
-SKIP: FAILED
+SKIP FAILED
 
 
-var<private> var_1 : u32;
+var private var_1 u32 ;
 
-fn main_1() {
-  loop {
-    if (false) {
-      var_1 = 1u;
-      continue;
-    }
-    var_1 = 2u;
+fn main_1
+loop
+if false
+var_1 = 1u ;
+continue ;
 
-    continuing {
-      var_1 = 3u;
-    }
-  }
-  return;
-}
+var_1 = 2u ;
 
-[[stage(fragment)]]
-fn main() {
-  main_1();
-}
+continuing
+var_1 = 3u ;
 
-error: loop does not exit
+
+return ;
+
+
+stage fragment
+fn main
+main_1 ;
+
+
+error loop does not exit
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_NestedIfContinue.spvasm.expected.wgsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_NestedIfContinue.spvasm.expected.wgsl
index 084d93f..5709df3 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_NestedIfContinue.spvasm.expected.wgsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_NestedIfContinue.spvasm.expected.wgsl
@@ -18,7 +18,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_BothBackedge.spvasm.expected.hlsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_BothBackedge.spvasm.expected.hlsl
index 0fcda02..bac39a4 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_BothBackedge.spvasm.expected.hlsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_BothBackedge.spvasm.expected.hlsl
@@ -12,7 +12,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_BothBackedge.spvasm.expected.msl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_BothBackedge.spvasm.expected.msl
index 0fcda02..bac39a4 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_BothBackedge.spvasm.expected.msl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_BothBackedge.spvasm.expected.msl
@@ -12,7 +12,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_BothBackedge.spvasm.expected.spvasm b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_BothBackedge.spvasm.expected.spvasm
index 0fcda02..f712098 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_BothBackedge.spvasm.expected.spvasm
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_BothBackedge.spvasm.expected.spvasm
@@ -1,20 +1,20 @@
-SKIP: FAILED
+SKIP FAILED
 
 
-var<private> var_1 : u32;
+var private var_1 u32 ;
 
-fn main_1() {
-  var_1 = 0u;
-  loop {
-    var_1 = 1u;
-  }
-  var_1 = 999u;
-  return;
-}
+fn main_1
+var_1 = 0u ;
+loop
+var_1 = 1u ;
 
-[[stage(fragment)]]
-fn main() {
-  main_1();
-}
+var_1 = 999u ;
+return ;
 
-error: loop does not exit
+
+stage fragment
+fn main
+main_1 ;
+
+
+error loop does not exit
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_BothBackedge.spvasm.expected.wgsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_BothBackedge.spvasm.expected.wgsl
index 0fcda02..bac39a4 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_BothBackedge.spvasm.expected.wgsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_BothBackedge.spvasm.expected.wgsl
@@ -12,7 +12,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_UnconditionalBackege.spvasm.expected.hlsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_UnconditionalBackege.spvasm.expected.hlsl
index 0fcda02..bac39a4 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_UnconditionalBackege.spvasm.expected.hlsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_UnconditionalBackege.spvasm.expected.hlsl
@@ -12,7 +12,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_UnconditionalBackege.spvasm.expected.msl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_UnconditionalBackege.spvasm.expected.msl
index 0fcda02..bac39a4 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_UnconditionalBackege.spvasm.expected.msl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_UnconditionalBackege.spvasm.expected.msl
@@ -12,7 +12,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_UnconditionalBackege.spvasm.expected.spvasm b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_UnconditionalBackege.spvasm.expected.spvasm
index 0fcda02..f712098 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_UnconditionalBackege.spvasm.expected.spvasm
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_UnconditionalBackege.spvasm.expected.spvasm
@@ -1,20 +1,20 @@
-SKIP: FAILED
+SKIP FAILED
 
 
-var<private> var_1 : u32;
+var private var_1 u32 ;
 
-fn main_1() {
-  var_1 = 0u;
-  loop {
-    var_1 = 1u;
-  }
-  var_1 = 999u;
-  return;
-}
+fn main_1
+var_1 = 0u ;
+loop
+var_1 = 1u ;
 
-[[stage(fragment)]]
-fn main() {
-  main_1();
-}
+var_1 = 999u ;
+return ;
 
-error: loop does not exit
+
+stage fragment
+fn main
+main_1 ;
+
+
+error loop does not exit
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_UnconditionalBackege.spvasm.expected.wgsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_UnconditionalBackege.spvasm.expected.wgsl
index 0fcda02..bac39a4 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_UnconditionalBackege.spvasm.expected.wgsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_UnconditionalBackege.spvasm.expected.wgsl
@@ -12,7 +12,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_ContinueNestIf.spvasm.expected.hlsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_ContinueNestIf.spvasm.expected.hlsl
index ae96510..74c752d 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_ContinueNestIf.spvasm.expected.hlsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_ContinueNestIf.spvasm.expected.hlsl
@@ -21,7 +21,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_ContinueNestIf.spvasm.expected.msl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_ContinueNestIf.spvasm.expected.msl
index ae96510..74c752d 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_ContinueNestIf.spvasm.expected.msl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_ContinueNestIf.spvasm.expected.msl
@@ -21,7 +21,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_ContinueNestIf.spvasm.expected.spvasm b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_ContinueNestIf.spvasm.expected.spvasm
index ae96510..bd2e4a6 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_ContinueNestIf.spvasm.expected.spvasm
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_ContinueNestIf.spvasm.expected.spvasm
@@ -1,29 +1,29 @@
-SKIP: FAILED
+SKIP FAILED
 
 
-var<private> var_1 : u32;
+var private var_1 u32 ;
 
-fn main_1() {
-  var_1 = 0u;
-  loop {
-    var_1 = 1u;
-    var_1 = 2u;
+fn main_1
+var_1 = 0u ;
+loop
+var_1 = 1u ;
+var_1 = 2u ;
 
-    continuing {
-      var_1 = 3u;
-      if (true) {
-        var_1 = 4u;
-      }
-      var_1 = 5u;
-    }
-  }
-  var_1 = 999u;
-  return;
-}
+continuing
+var_1 = 3u ;
+if true
+var_1 = 4u ;
 
-[[stage(fragment)]]
-fn main() {
-  main_1();
-}
+var_1 = 5u ;
 
-error: loop does not exit
+
+var_1 = 999u ;
+return ;
+
+
+stage fragment
+fn main
+main_1 ;
+
+
+error loop does not exit
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_ContinueNestIf.spvasm.expected.wgsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_ContinueNestIf.spvasm.expected.wgsl
index ae96510..74c752d 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_ContinueNestIf.spvasm.expected.wgsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_ContinueNestIf.spvasm.expected.wgsl
@@ -21,7 +21,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_MultiBlockContinue.spvasm.expected.hlsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_MultiBlockContinue.spvasm.expected.hlsl
index 9e69952..13fc2c7 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_MultiBlockContinue.spvasm.expected.hlsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_MultiBlockContinue.spvasm.expected.hlsl
@@ -18,7 +18,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_MultiBlockContinue.spvasm.expected.msl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_MultiBlockContinue.spvasm.expected.msl
index 9e69952..13fc2c7 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_MultiBlockContinue.spvasm.expected.msl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_MultiBlockContinue.spvasm.expected.msl
@@ -18,7 +18,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_MultiBlockContinue.spvasm.expected.spvasm b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_MultiBlockContinue.spvasm.expected.spvasm
index 9e69952..2688c57 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_MultiBlockContinue.spvasm.expected.spvasm
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_MultiBlockContinue.spvasm.expected.spvasm
@@ -1,26 +1,26 @@
-SKIP: FAILED
+SKIP FAILED
 
 
-var<private> var_1 : u32;
+var private var_1 u32 ;
 
-fn main_1() {
-  var_1 = 0u;
-  loop {
-    var_1 = 1u;
-    var_1 = 2u;
+fn main_1
+var_1 = 0u ;
+loop
+var_1 = 1u ;
+var_1 = 2u ;
 
-    continuing {
-      var_1 = 3u;
-      var_1 = 4u;
-    }
-  }
-  var_1 = 999u;
-  return;
-}
+continuing
+var_1 = 3u ;
+var_1 = 4u ;
 
-[[stage(fragment)]]
-fn main() {
-  main_1();
-}
 
-error: loop does not exit
+var_1 = 999u ;
+return ;
+
+
+stage fragment
+fn main
+main_1 ;
+
+
+error loop does not exit
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_MultiBlockContinue.spvasm.expected.wgsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_MultiBlockContinue.spvasm.expected.wgsl
index 9e69952..13fc2c7 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_MultiBlockContinue.spvasm.expected.wgsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_MultiBlockContinue.spvasm.expected.wgsl
@@ -18,7 +18,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_SingleBlockContinue.spvasm.expected.hlsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_SingleBlockContinue.spvasm.expected.hlsl
index e32d9bd..cb60399 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_SingleBlockContinue.spvasm.expected.hlsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_SingleBlockContinue.spvasm.expected.hlsl
@@ -17,7 +17,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_SingleBlockContinue.spvasm.expected.msl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_SingleBlockContinue.spvasm.expected.msl
index e32d9bd..cb60399 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_SingleBlockContinue.spvasm.expected.msl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_SingleBlockContinue.spvasm.expected.msl
@@ -17,7 +17,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_SingleBlockContinue.spvasm.expected.spvasm b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_SingleBlockContinue.spvasm.expected.spvasm
index e32d9bd..7ba8ccb 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_SingleBlockContinue.spvasm.expected.spvasm
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_SingleBlockContinue.spvasm.expected.spvasm
@@ -1,25 +1,25 @@
-SKIP: FAILED
+SKIP FAILED
 
 
-var<private> var_1 : u32;
+var private var_1 u32 ;
 
-fn main_1() {
-  var_1 = 0u;
-  loop {
-    var_1 = 1u;
-    var_1 = 2u;
+fn main_1
+var_1 = 0u ;
+loop
+var_1 = 1u ;
+var_1 = 2u ;
 
-    continuing {
-      var_1 = 3u;
-    }
-  }
-  var_1 = 999u;
-  return;
-}
+continuing
+var_1 = 3u ;
 
-[[stage(fragment)]]
-fn main() {
-  main_1();
-}
 
-error: loop does not exit
+var_1 = 999u ;
+return ;
+
+
+stage fragment
+fn main
+main_1 ;
+
+
+error loop does not exit
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_SingleBlockContinue.spvasm.expected.wgsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_SingleBlockContinue.spvasm.expected.wgsl
index e32d9bd..cb60399 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_SingleBlockContinue.spvasm.expected.wgsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Unconditional_Body_SingleBlockContinue.spvasm.expected.wgsl
@@ -17,7 +17,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_TrueBranch_LoopContinue.spvasm.expected.hlsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_TrueBranch_LoopContinue.spvasm.expected.hlsl
index 32e75fb..9de1e7e 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_TrueBranch_LoopContinue.spvasm.expected.hlsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_TrueBranch_LoopContinue.spvasm.expected.hlsl
@@ -12,7 +12,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_TrueBranch_LoopContinue.spvasm.expected.msl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_TrueBranch_LoopContinue.spvasm.expected.msl
index 32e75fb..9de1e7e 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_TrueBranch_LoopContinue.spvasm.expected.msl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_TrueBranch_LoopContinue.spvasm.expected.msl
@@ -12,7 +12,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_TrueBranch_LoopContinue.spvasm.expected.spvasm b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_TrueBranch_LoopContinue.spvasm.expected.spvasm
index 32e75fb..03faabe 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_TrueBranch_LoopContinue.spvasm.expected.spvasm
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_TrueBranch_LoopContinue.spvasm.expected.spvasm
@@ -1,20 +1,20 @@
-SKIP: FAILED
+SKIP FAILED
 
 
-var<private> var_1 : u32;
+var private var_1 u32 ;
 
-fn main_1() {
-  loop {
-    if (false) {
-      continue;
-    }
-  }
-  return;
-}
+fn main_1
+loop
+if false
+continue ;
 
-[[stage(fragment)]]
-fn main() {
-  main_1();
-}
 
-error: loop does not exit
+return ;
+
+
+stage fragment
+fn main
+main_1 ;
+
+
+error loop does not exit
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_TrueBranch_LoopContinue.spvasm.expected.wgsl b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_TrueBranch_LoopContinue.spvasm.expected.wgsl
index 32e75fb..9de1e7e 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_TrueBranch_LoopContinue.spvasm.expected.wgsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_EmitBody_TrueBranch_LoopContinue.spvasm.expected.wgsl
@@ -12,7 +12,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_FalseBranch_LoopContinue_Ok.spvasm.expected.hlsl b/test/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_FalseBranch_LoopContinue_Ok.spvasm.expected.hlsl
index b7ad7d3..d538de1 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_FalseBranch_LoopContinue_Ok.spvasm.expected.hlsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_FalseBranch_LoopContinue_Ok.spvasm.expected.hlsl
@@ -13,7 +13,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_FalseBranch_LoopContinue_Ok.spvasm.expected.msl b/test/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_FalseBranch_LoopContinue_Ok.spvasm.expected.msl
index b7ad7d3..d538de1 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_FalseBranch_LoopContinue_Ok.spvasm.expected.msl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_FalseBranch_LoopContinue_Ok.spvasm.expected.msl
@@ -13,7 +13,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_FalseBranch_LoopContinue_Ok.spvasm.expected.spvasm b/test/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_FalseBranch_LoopContinue_Ok.spvasm.expected.spvasm
index b7ad7d3..42119a0 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_FalseBranch_LoopContinue_Ok.spvasm.expected.spvasm
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_FalseBranch_LoopContinue_Ok.spvasm.expected.spvasm
@@ -1,21 +1,21 @@
-SKIP: FAILED
+SKIP FAILED
 
 
-var<private> var_1 : u32;
+var private var_1 u32 ;
 
-fn main_1() {
-  loop {
-    if (false) {
-    } else {
-      continue;
-    }
-  }
-  return;
-}
+fn main_1
+loop
+if false
+else
+continue ;
 
-[[stage(fragment)]]
-fn main() {
-  main_1();
-}
 
-error: loop does not exit
+return ;
+
+
+stage fragment
+fn main
+main_1 ;
+
+
+error loop does not exit
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_FalseBranch_LoopContinue_Ok.spvasm.expected.wgsl b/test/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_FalseBranch_LoopContinue_Ok.spvasm.expected.wgsl
index b7ad7d3..d538de1 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_FalseBranch_LoopContinue_Ok.spvasm.expected.wgsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_FalseBranch_LoopContinue_Ok.spvasm.expected.wgsl
@@ -13,7 +13,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_TrueBranch_LoopContinue_Ok.spvasm.expected.hlsl b/test/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_TrueBranch_LoopContinue_Ok.spvasm.expected.hlsl
index 32e75fb..9de1e7e 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_TrueBranch_LoopContinue_Ok.spvasm.expected.hlsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_TrueBranch_LoopContinue_Ok.spvasm.expected.hlsl
@@ -12,7 +12,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_TrueBranch_LoopContinue_Ok.spvasm.expected.msl b/test/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_TrueBranch_LoopContinue_Ok.spvasm.expected.msl
index 32e75fb..9de1e7e 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_TrueBranch_LoopContinue_Ok.spvasm.expected.msl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_TrueBranch_LoopContinue_Ok.spvasm.expected.msl
@@ -12,7 +12,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_TrueBranch_LoopContinue_Ok.spvasm.expected.spvasm b/test/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_TrueBranch_LoopContinue_Ok.spvasm.expected.spvasm
index 32e75fb..03faabe 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_TrueBranch_LoopContinue_Ok.spvasm.expected.spvasm
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_TrueBranch_LoopContinue_Ok.spvasm.expected.spvasm
@@ -1,20 +1,20 @@
-SKIP: FAILED
+SKIP FAILED
 
 
-var<private> var_1 : u32;
+var private var_1 u32 ;
 
-fn main_1() {
-  loop {
-    if (false) {
-      continue;
-    }
-  }
-  return;
-}
+fn main_1
+loop
+if false
+continue ;
 
-[[stage(fragment)]]
-fn main() {
-  main_1();
-}
 
-error: loop does not exit
+return ;
+
+
+stage fragment
+fn main
+main_1 ;
+
+
+error loop does not exit
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_TrueBranch_LoopContinue_Ok.spvasm.expected.wgsl b/test/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_TrueBranch_LoopContinue_Ok.spvasm.expected.wgsl
index 32e75fb..9de1e7e 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_TrueBranch_LoopContinue_Ok.spvasm.expected.wgsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_TrueBranch_LoopContinue_Ok.spvasm.expected.wgsl
@@ -12,7 +12,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_LoopInterallyDiverge.spvasm.expected.hlsl b/test/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_LoopInterallyDiverge.spvasm.expected.hlsl
index 32e75fb..9de1e7e 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_LoopInterallyDiverge.spvasm.expected.hlsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_LoopInterallyDiverge.spvasm.expected.hlsl
@@ -12,7 +12,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_LoopInterallyDiverge.spvasm.expected.msl b/test/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_LoopInterallyDiverge.spvasm.expected.msl
index 32e75fb..9de1e7e 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_LoopInterallyDiverge.spvasm.expected.msl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_LoopInterallyDiverge.spvasm.expected.msl
@@ -12,7 +12,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_LoopInterallyDiverge.spvasm.expected.spvasm b/test/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_LoopInterallyDiverge.spvasm.expected.spvasm
index 32e75fb..03faabe 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_LoopInterallyDiverge.spvasm.expected.spvasm
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_LoopInterallyDiverge.spvasm.expected.spvasm
@@ -1,20 +1,20 @@
-SKIP: FAILED
+SKIP FAILED
 
 
-var<private> var_1 : u32;
+var private var_1 u32 ;
 
-fn main_1() {
-  loop {
-    if (false) {
-      continue;
-    }
-  }
-  return;
-}
+fn main_1
+loop
+if false
+continue ;
 
-[[stage(fragment)]]
-fn main() {
-  main_1();
-}
 
-error: loop does not exit
+return ;
+
+
+stage fragment
+fn main
+main_1 ;
+
+
+error loop does not exit
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_LoopInterallyDiverge.spvasm.expected.wgsl b/test/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_LoopInterallyDiverge.spvasm.expected.wgsl
index 32e75fb..9de1e7e 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_LoopInterallyDiverge.spvasm.expected.wgsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_LabelControlFlowConstructs_LoopInterallyDiverge.spvasm.expected.wgsl
@@ -12,7 +12,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_RegisterMerges_GoodLoopMerge_MultiBlockLoop_ContinueIsHeader.spvasm.expected.hlsl b/test/unittest/reader/spirv/SpvParserCFGTest_RegisterMerges_GoodLoopMerge_MultiBlockLoop_ContinueIsHeader.spvasm.expected.hlsl
index 2d78e5b..461b205 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_RegisterMerges_GoodLoopMerge_MultiBlockLoop_ContinueIsHeader.spvasm.expected.hlsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_RegisterMerges_GoodLoopMerge_MultiBlockLoop_ContinueIsHeader.spvasm.expected.hlsl
@@ -9,7 +9,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_RegisterMerges_GoodLoopMerge_MultiBlockLoop_ContinueIsHeader.spvasm.expected.msl b/test/unittest/reader/spirv/SpvParserCFGTest_RegisterMerges_GoodLoopMerge_MultiBlockLoop_ContinueIsHeader.spvasm.expected.msl
index 2d78e5b..461b205 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_RegisterMerges_GoodLoopMerge_MultiBlockLoop_ContinueIsHeader.spvasm.expected.msl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_RegisterMerges_GoodLoopMerge_MultiBlockLoop_ContinueIsHeader.spvasm.expected.msl
@@ -9,7 +9,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_RegisterMerges_GoodLoopMerge_MultiBlockLoop_ContinueIsHeader.spvasm.expected.spvasm b/test/unittest/reader/spirv/SpvParserCFGTest_RegisterMerges_GoodLoopMerge_MultiBlockLoop_ContinueIsHeader.spvasm.expected.spvasm
index 2d78e5b..6247458 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_RegisterMerges_GoodLoopMerge_MultiBlockLoop_ContinueIsHeader.spvasm.expected.spvasm
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_RegisterMerges_GoodLoopMerge_MultiBlockLoop_ContinueIsHeader.spvasm.expected.spvasm
@@ -1,17 +1,17 @@
-SKIP: FAILED
+SKIP FAILED
 
 
-var<private> var_1 : u32;
+var private var_1 u32 ;
 
-fn main_1() {
-  loop {
-  }
-  return;
-}
+fn main_1
+loop
 
-[[stage(fragment)]]
-fn main() {
-  main_1();
-}
+return ;
 
-error: loop does not exit
+
+stage fragment
+fn main
+main_1 ;
+
+
+error loop does not exit
diff --git a/test/unittest/reader/spirv/SpvParserCFGTest_RegisterMerges_GoodLoopMerge_MultiBlockLoop_ContinueIsHeader.spvasm.expected.wgsl b/test/unittest/reader/spirv/SpvParserCFGTest_RegisterMerges_GoodLoopMerge_MultiBlockLoop_ContinueIsHeader.spvasm.expected.wgsl
index 2d78e5b..461b205 100644
--- a/test/unittest/reader/spirv/SpvParserCFGTest_RegisterMerges_GoodLoopMerge_MultiBlockLoop_ContinueIsHeader.spvasm.expected.wgsl
+++ b/test/unittest/reader/spirv/SpvParserCFGTest_RegisterMerges_GoodLoopMerge_MultiBlockLoop_ContinueIsHeader.spvasm.expected.wgsl
@@ -9,7 +9,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialValue_Immediate_UsedOnceDifferentConstruct.spvasm.expected.hlsl b/test/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialValue_Immediate_UsedOnceDifferentConstruct.spvasm.expected.hlsl
index 016ae84..f7f27eb 100644
--- a/test/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialValue_Immediate_UsedOnceDifferentConstruct.spvasm.expected.hlsl
+++ b/test/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialValue_Immediate_UsedOnceDifferentConstruct.spvasm.expected.hlsl
@@ -21,7 +21,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialValue_Immediate_UsedOnceDifferentConstruct.spvasm.expected.msl b/test/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialValue_Immediate_UsedOnceDifferentConstruct.spvasm.expected.msl
index 016ae84..f7f27eb 100644
--- a/test/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialValue_Immediate_UsedOnceDifferentConstruct.spvasm.expected.msl
+++ b/test/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialValue_Immediate_UsedOnceDifferentConstruct.spvasm.expected.msl
@@ -21,7 +21,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialValue_Immediate_UsedOnceDifferentConstruct.spvasm.expected.spvasm b/test/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialValue_Immediate_UsedOnceDifferentConstruct.spvasm.expected.spvasm
index 016ae84..8d88c46 100644
--- a/test/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialValue_Immediate_UsedOnceDifferentConstruct.spvasm.expected.spvasm
+++ b/test/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialValue_Immediate_UsedOnceDifferentConstruct.spvasm.expected.spvasm
@@ -1,29 +1,29 @@
-SKIP: FAILED
+SKIP FAILED
 
 
-struct S {
-  field0 : u32;
-  field1 : f32;
-  field2 : array<u32, 2u>;
-};
+struct S
+field0 u32 ;
+field1 f32 ;
+field2 array u32 2u ;
+;
 
-fn main_1() {
-  var x_25 : u32;
-  let x_2 : u32 = (1u + 1u);
-  x_25 = 1u;
-  loop {
+fn main_1
+var x_25 u32 ;
+let x_2 u32 = 1u + 1u ;
+x_25 = 1u ;
+loop
 
-    continuing {
-      x_25 = x_2;
-    }
-  }
-  x_25 = 2u;
-  return;
-}
+continuing
+x_25 = x_2 ;
 
-[[stage(fragment)]]
-fn main() {
-  main_1();
-}
 
-error: loop does not exit
+x_25 = 2u ;
+return ;
+
+
+stage fragment
+fn main
+main_1 ;
+
+
+error loop does not exit
diff --git a/test/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialValue_Immediate_UsedOnceDifferentConstruct.spvasm.expected.wgsl b/test/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialValue_Immediate_UsedOnceDifferentConstruct.spvasm.expected.wgsl
index 016ae84..f7f27eb 100644
--- a/test/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialValue_Immediate_UsedOnceDifferentConstruct.spvasm.expected.wgsl
+++ b/test/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialValue_Immediate_UsedOnceDifferentConstruct.spvasm.expected.wgsl
@@ -21,7 +21,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_ValueFromLoopBodyAndContinuing.spvasm.expected.hlsl b/test/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_ValueFromLoopBodyAndContinuing.spvasm.expected.hlsl
index f9ae993..099f55e 100644
--- a/test/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_ValueFromLoopBodyAndContinuing.spvasm.expected.hlsl
+++ b/test/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_ValueFromLoopBodyAndContinuing.spvasm.expected.hlsl
@@ -38,7 +38,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_ValueFromLoopBodyAndContinuing.spvasm.expected.msl b/test/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_ValueFromLoopBodyAndContinuing.spvasm.expected.msl
index f9ae993..099f55e 100644
--- a/test/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_ValueFromLoopBodyAndContinuing.spvasm.expected.msl
+++ b/test/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_ValueFromLoopBodyAndContinuing.spvasm.expected.msl
@@ -38,7 +38,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_ValueFromLoopBodyAndContinuing.spvasm.expected.spvasm b/test/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_ValueFromLoopBodyAndContinuing.spvasm.expected.spvasm
index f9ae993..5bc3ceb 100644
--- a/test/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_ValueFromLoopBodyAndContinuing.spvasm.expected.spvasm
+++ b/test/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_ValueFromLoopBodyAndContinuing.spvasm.expected.spvasm
@@ -1,46 +1,46 @@
-SKIP: FAILED
+SKIP FAILED
 
 
-struct S {
-  field0 : u32;
-  field1 : f32;
-  field2 : array<u32, 2u>;
-};
+struct S
+field0 u32 ;
+field1 f32 ;
+field2 array u32 2u ;
+;
 
-var<private> x_1 : u32;
+var private x_1 u32 ;
 
-var<private> x_17 : bool;
+var private x_17 bool ;
 
-fn main_1() {
-  let x_101 : bool = x_17;
-  loop {
-    var x_2_phi : u32;
-    var x_5_phi : u32;
-    x_2_phi = 0u;
-    x_5_phi = 1u;
-    loop {
-      var x_7 : u32;
-      let x_2 : u32 = x_2_phi;
-      let x_5 : u32 = x_5_phi;
-      let x_4 : u32 = (x_2 + 1u);
-      let x_6 : u32 = (x_4 + 1u);
-      if (x_101) {
-        break;
-      }
+fn main_1
+let x_101 bool = x_17 ;
+loop
+var x_2_phi u32 ;
+var x_5_phi u32 ;
+x_2_phi = 0u ;
+x_5_phi = 1u ;
+loop
+var x_7 u32 ;
+let x_2 u32 = x_2_phi ;
+let x_5 u32 = x_5_phi ;
+let x_4 u32 = x_2 + 1u ;
+let x_6 u32 = x_4 + 1u ;
+if x_101
+break ;
 
-      continuing {
-        x_7 = (x_4 + x_6);
-        x_2_phi = x_4;
-        x_5_phi = x_7;
-      }
-    }
-  }
-  return;
-}
 
-[[stage(fragment)]]
-fn main() {
-  main_1();
-}
+continuing
+x_7 = x_4 + x_6 ;
+x_2_phi = x_4 ;
+x_5_phi = x_7 ;
 
-error: loop does not exit
+
+
+return ;
+
+
+stage fragment
+fn main
+main_1 ;
+
+
+error loop does not exit
diff --git a/test/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_ValueFromLoopBodyAndContinuing.spvasm.expected.wgsl b/test/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_ValueFromLoopBodyAndContinuing.spvasm.expected.wgsl
index f9ae993..099f55e 100644
--- a/test/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_ValueFromLoopBodyAndContinuing.spvasm.expected.wgsl
+++ b/test/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_ValueFromLoopBodyAndContinuing.spvasm.expected.wgsl
@@ -38,7 +38,7 @@
   return;
 }
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() {
   main_1();
 }
diff --git a/test/var/inferred/function.wgsl b/test/var/inferred/function.wgsl
index 0d39fe0..c1bea4c 100644
--- a/test/var/inferred/function.wgsl
+++ b/test/var/inferred/function.wgsl
@@ -33,7 +33,7 @@
     var v15 = ret_MyArray();
 }
 
-[[stage(fragment)]]
-fn main() -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn main() -> @location(0) vec4<f32> {
     return vec4<f32>(0.0,0.0,0.0,0.0);
 }
diff --git a/test/var/inferred/function.wgsl.expected.wgsl b/test/var/inferred/function.wgsl.expected.wgsl
index 2c8b7ab..bd60a83 100644
--- a/test/var/inferred/function.wgsl.expected.wgsl
+++ b/test/var/inferred/function.wgsl.expected.wgsl
@@ -42,7 +42,7 @@
   var v15 = ret_MyArray();
 }
 
-[[stage(fragment)]]
-fn main() -> [[location(0)]] vec4<f32> {
+@stage(fragment)
+fn main() -> @location(0) vec4<f32> {
   return vec4<f32>(0.0, 0.0, 0.0, 0.0);
 }
diff --git a/test/var/initialization/function/array.wgsl b/test/var/initialization/function/array.wgsl
index 269c9ed..c261a3a 100644
--- a/test/var/initialization/function/array.wgsl
+++ b/test/var/initialization/function/array.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     var v : array<i32, 3>;
     _ = v;
diff --git a/test/var/initialization/function/array.wgsl.expected.wgsl b/test/var/initialization/function/array.wgsl.expected.wgsl
index 0dd6ece..8ff70f2 100644
--- a/test/var/initialization/function/array.wgsl.expected.wgsl
+++ b/test/var/initialization/function/array.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : array<i32, 3>;
   _ = v;
diff --git a/test/var/initialization/function/matrix.wgsl b/test/var/initialization/function/matrix.wgsl
index 7f3830d..ea336e8 100644
--- a/test/var/initialization/function/matrix.wgsl
+++ b/test/var/initialization/function/matrix.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     var v : mat2x3<f32>;
     _ = v;
diff --git a/test/var/initialization/function/matrix.wgsl.expected.wgsl b/test/var/initialization/function/matrix.wgsl.expected.wgsl
index f4fadc6..d8bb391 100644
--- a/test/var/initialization/function/matrix.wgsl.expected.wgsl
+++ b/test/var/initialization/function/matrix.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : mat2x3<f32>;
   _ = v;
diff --git a/test/var/initialization/function/scalar.wgsl b/test/var/initialization/function/scalar.wgsl
index d945843..5d3b86e 100644
--- a/test/var/initialization/function/scalar.wgsl
+++ b/test/var/initialization/function/scalar.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     var v : i32;
     _ = v;
diff --git a/test/var/initialization/function/scalar.wgsl.expected.wgsl b/test/var/initialization/function/scalar.wgsl.expected.wgsl
index 778a994..67ee18d 100644
--- a/test/var/initialization/function/scalar.wgsl.expected.wgsl
+++ b/test/var/initialization/function/scalar.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : i32;
   _ = v;
diff --git a/test/var/initialization/function/struct.wgsl b/test/var/initialization/function/struct.wgsl
index 5f80b50..55babed 100644
--- a/test/var/initialization/function/struct.wgsl
+++ b/test/var/initialization/function/struct.wgsl
@@ -3,7 +3,7 @@
     b : f32;
 };
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     var v : S;
     _ = v;
diff --git a/test/var/initialization/function/struct.wgsl.expected.wgsl b/test/var/initialization/function/struct.wgsl.expected.wgsl
index 538187c..2dd4381 100644
--- a/test/var/initialization/function/struct.wgsl.expected.wgsl
+++ b/test/var/initialization/function/struct.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   b : f32;
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : S;
   _ = v;
diff --git a/test/var/initialization/function/vector.wgsl b/test/var/initialization/function/vector.wgsl
index 95516f6..40bc481 100644
--- a/test/var/initialization/function/vector.wgsl
+++ b/test/var/initialization/function/vector.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     var v : vec3<i32>;
     _ = v;
diff --git a/test/var/initialization/function/vector.wgsl.expected.wgsl b/test/var/initialization/function/vector.wgsl.expected.wgsl
index 796b9e3..37600e5 100644
--- a/test/var/initialization/function/vector.wgsl.expected.wgsl
+++ b/test/var/initialization/function/vector.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   var v : vec3<i32>;
   _ = v;
diff --git a/test/var/initialization/private/array.wgsl b/test/var/initialization/private/array.wgsl
index 8f7374a..f01730a 100644
--- a/test/var/initialization/private/array.wgsl
+++ b/test/var/initialization/private/array.wgsl
@@ -1,6 +1,6 @@
 var<private> v : array<i32, 3>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = v;
 }
diff --git a/test/var/initialization/private/array.wgsl.expected.wgsl b/test/var/initialization/private/array.wgsl.expected.wgsl
index 6f76127..ba967ec 100644
--- a/test/var/initialization/private/array.wgsl.expected.wgsl
+++ b/test/var/initialization/private/array.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 var<private> v : array<i32, 3>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = v;
 }
diff --git a/test/var/initialization/private/matrix.wgsl b/test/var/initialization/private/matrix.wgsl
index 2530cc6..e46734c 100644
--- a/test/var/initialization/private/matrix.wgsl
+++ b/test/var/initialization/private/matrix.wgsl
@@ -1,6 +1,6 @@
 var<private> v : mat2x3<f32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = v;
 }
diff --git a/test/var/initialization/private/matrix.wgsl.expected.wgsl b/test/var/initialization/private/matrix.wgsl.expected.wgsl
index 73501a1..c3042ab 100644
--- a/test/var/initialization/private/matrix.wgsl.expected.wgsl
+++ b/test/var/initialization/private/matrix.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 var<private> v : mat2x3<f32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = v;
 }
diff --git a/test/var/initialization/private/scalar.wgsl b/test/var/initialization/private/scalar.wgsl
index 7c298cf..8e46653 100644
--- a/test/var/initialization/private/scalar.wgsl
+++ b/test/var/initialization/private/scalar.wgsl
@@ -1,6 +1,6 @@
 var<private> v : i32;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = v;
 }
diff --git a/test/var/initialization/private/scalar.wgsl.expected.wgsl b/test/var/initialization/private/scalar.wgsl.expected.wgsl
index c412580..911081b 100644
--- a/test/var/initialization/private/scalar.wgsl.expected.wgsl
+++ b/test/var/initialization/private/scalar.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 var<private> v : i32;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = v;
 }
diff --git a/test/var/initialization/private/struct.wgsl b/test/var/initialization/private/struct.wgsl
index d1b70f2..db44563 100644
--- a/test/var/initialization/private/struct.wgsl
+++ b/test/var/initialization/private/struct.wgsl
@@ -5,7 +5,7 @@
 
 var<private> v : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = v;
 }
diff --git a/test/var/initialization/private/struct.wgsl.expected.wgsl b/test/var/initialization/private/struct.wgsl.expected.wgsl
index a91da6a..6d46d0d 100644
--- a/test/var/initialization/private/struct.wgsl.expected.wgsl
+++ b/test/var/initialization/private/struct.wgsl.expected.wgsl
@@ -5,7 +5,7 @@
 
 var<private> v : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = v;
 }
diff --git a/test/var/initialization/private/vector.wgsl b/test/var/initialization/private/vector.wgsl
index 621a3ff..2af1bf5 100644
--- a/test/var/initialization/private/vector.wgsl
+++ b/test/var/initialization/private/vector.wgsl
@@ -1,6 +1,6 @@
 var<private> v : vec3<i32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = v;
 }
diff --git a/test/var/initialization/private/vector.wgsl.expected.wgsl b/test/var/initialization/private/vector.wgsl.expected.wgsl
index 7ed65cd..183418e 100644
--- a/test/var/initialization/private/vector.wgsl.expected.wgsl
+++ b/test/var/initialization/private/vector.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 var<private> v : vec3<i32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = v;
 }
diff --git a/test/var/initialization/workgroup/array.wgsl b/test/var/initialization/workgroup/array.wgsl
index 1a91ef5..1d9aa8b 100644
--- a/test/var/initialization/workgroup/array.wgsl
+++ b/test/var/initialization/workgroup/array.wgsl
@@ -1,6 +1,6 @@
 var<workgroup> v : array<i32, 3>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = v;
 }
diff --git a/test/var/initialization/workgroup/array.wgsl.expected.wgsl b/test/var/initialization/workgroup/array.wgsl.expected.wgsl
index e9ea7eb..cc53b73 100644
--- a/test/var/initialization/workgroup/array.wgsl.expected.wgsl
+++ b/test/var/initialization/workgroup/array.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 var<workgroup> v : array<i32, 3>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = v;
 }
diff --git a/test/var/initialization/workgroup/matrix.wgsl b/test/var/initialization/workgroup/matrix.wgsl
index 2410685..f494319 100644
--- a/test/var/initialization/workgroup/matrix.wgsl
+++ b/test/var/initialization/workgroup/matrix.wgsl
@@ -1,6 +1,6 @@
 var<workgroup> v : mat2x3<f32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = v;
 }
diff --git a/test/var/initialization/workgroup/matrix.wgsl.expected.wgsl b/test/var/initialization/workgroup/matrix.wgsl.expected.wgsl
index df1a415..62ce905 100644
--- a/test/var/initialization/workgroup/matrix.wgsl.expected.wgsl
+++ b/test/var/initialization/workgroup/matrix.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 var<workgroup> v : mat2x3<f32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = v;
 }
diff --git a/test/var/initialization/workgroup/scalar.wgsl b/test/var/initialization/workgroup/scalar.wgsl
index b9fcda7..37c8a4f 100644
--- a/test/var/initialization/workgroup/scalar.wgsl
+++ b/test/var/initialization/workgroup/scalar.wgsl
@@ -1,6 +1,6 @@
 var<workgroup> v : i32;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = v;
 }
diff --git a/test/var/initialization/workgroup/scalar.wgsl.expected.wgsl b/test/var/initialization/workgroup/scalar.wgsl.expected.wgsl
index 4a2272a..3cfef70 100644
--- a/test/var/initialization/workgroup/scalar.wgsl.expected.wgsl
+++ b/test/var/initialization/workgroup/scalar.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 var<workgroup> v : i32;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = v;
 }
diff --git a/test/var/initialization/workgroup/struct.wgsl b/test/var/initialization/workgroup/struct.wgsl
index 4651335..5fa28ed 100644
--- a/test/var/initialization/workgroup/struct.wgsl
+++ b/test/var/initialization/workgroup/struct.wgsl
@@ -5,7 +5,7 @@
 
 var<workgroup> v : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = v;
 }
diff --git a/test/var/initialization/workgroup/struct.wgsl.expected.wgsl b/test/var/initialization/workgroup/struct.wgsl.expected.wgsl
index b67e95a..c42ae1c 100644
--- a/test/var/initialization/workgroup/struct.wgsl.expected.wgsl
+++ b/test/var/initialization/workgroup/struct.wgsl.expected.wgsl
@@ -5,7 +5,7 @@
 
 var<workgroup> v : S;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = v;
 }
diff --git a/test/var/initialization/workgroup/vector.wgsl b/test/var/initialization/workgroup/vector.wgsl
index c1ff6bb..37ff6f2 100644
--- a/test/var/initialization/workgroup/vector.wgsl
+++ b/test/var/initialization/workgroup/vector.wgsl
@@ -1,6 +1,6 @@
 var<workgroup> v : vec3<i32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = v;
 }
diff --git a/test/var/initialization/workgroup/vector.wgsl.expected.wgsl b/test/var/initialization/workgroup/vector.wgsl.expected.wgsl
index a3aead5..a6f967c 100644
--- a/test/var/initialization/workgroup/vector.wgsl.expected.wgsl
+++ b/test/var/initialization/workgroup/vector.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 var<workgroup> v : vec3<i32>;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = v;
 }
diff --git a/test/var/override/named/no_init/bool.wgsl b/test/var/override/named/no_init/bool.wgsl
index 4b58e68..fe69ac3 100644
--- a/test/var/override/named/no_init/bool.wgsl
+++ b/test/var/override/named/no_init/bool.wgsl
@@ -1,6 +1,6 @@
-[[override]] let o : bool;
+@override let o : bool;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/var/override/named/no_init/bool.wgsl.expected.wgsl b/test/var/override/named/no_init/bool.wgsl.expected.wgsl
index 8fcab9b..c4b5efd 100644
--- a/test/var/override/named/no_init/bool.wgsl.expected.wgsl
+++ b/test/var/override/named/no_init/bool.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[override]] let o : bool;
+@override let o : bool;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/var/override/named/no_init/f32.wgsl b/test/var/override/named/no_init/f32.wgsl
index c09196d..5328e9d 100644
--- a/test/var/override/named/no_init/f32.wgsl
+++ b/test/var/override/named/no_init/f32.wgsl
@@ -1,6 +1,6 @@
-[[override]] let o : f32;
+@override let o : f32;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/var/override/named/no_init/f32.wgsl.expected.wgsl b/test/var/override/named/no_init/f32.wgsl.expected.wgsl
index 5e60be6..1d09452 100644
--- a/test/var/override/named/no_init/f32.wgsl.expected.wgsl
+++ b/test/var/override/named/no_init/f32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[override]] let o : f32;
+@override let o : f32;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/var/override/named/no_init/i32.wgsl b/test/var/override/named/no_init/i32.wgsl
index 790c56d..0a3ed57 100644
--- a/test/var/override/named/no_init/i32.wgsl
+++ b/test/var/override/named/no_init/i32.wgsl
@@ -1,6 +1,6 @@
-[[override]] let o : i32;
+@override let o : i32;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/var/override/named/no_init/i32.wgsl.expected.wgsl b/test/var/override/named/no_init/i32.wgsl.expected.wgsl
index 56a81dd..92a7426 100644
--- a/test/var/override/named/no_init/i32.wgsl.expected.wgsl
+++ b/test/var/override/named/no_init/i32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[override]] let o : i32;
+@override let o : i32;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/var/override/named/no_init/u32.wgsl b/test/var/override/named/no_init/u32.wgsl
index b4826d8..bce0c77 100644
--- a/test/var/override/named/no_init/u32.wgsl
+++ b/test/var/override/named/no_init/u32.wgsl
@@ -1,6 +1,6 @@
-[[override]] let o : u32;
+@override let o : u32;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/var/override/named/no_init/u32.wgsl.expected.wgsl b/test/var/override/named/no_init/u32.wgsl.expected.wgsl
index ad44144..31db066 100644
--- a/test/var/override/named/no_init/u32.wgsl.expected.wgsl
+++ b/test/var/override/named/no_init/u32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[override]] let o : u32;
+@override let o : u32;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/var/override/named/val_init/bool.wgsl b/test/var/override/named/val_init/bool.wgsl
index 0cb9566..9edeffa 100644
--- a/test/var/override/named/val_init/bool.wgsl
+++ b/test/var/override/named/val_init/bool.wgsl
@@ -1,6 +1,6 @@
-[[override]] let o : bool = true;
+@override let o : bool = true;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/var/override/named/val_init/bool.wgsl.expected.wgsl b/test/var/override/named/val_init/bool.wgsl.expected.wgsl
index 8e9edf5..cbcd033 100644
--- a/test/var/override/named/val_init/bool.wgsl.expected.wgsl
+++ b/test/var/override/named/val_init/bool.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[override]] let o : bool = true;
+@override let o : bool = true;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/var/override/named/val_init/f32.wgsl b/test/var/override/named/val_init/f32.wgsl
index 904a8ad..a58f753 100644
--- a/test/var/override/named/val_init/f32.wgsl
+++ b/test/var/override/named/val_init/f32.wgsl
@@ -1,6 +1,6 @@
-[[override]] let o : f32 = 1.0;
+@override let o : f32 = 1.0;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/var/override/named/val_init/f32.wgsl.expected.wgsl b/test/var/override/named/val_init/f32.wgsl.expected.wgsl
index 32660b8..18e6ceb 100644
--- a/test/var/override/named/val_init/f32.wgsl.expected.wgsl
+++ b/test/var/override/named/val_init/f32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[override]] let o : f32 = 1.0;
+@override let o : f32 = 1.0;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/var/override/named/val_init/i32.wgsl b/test/var/override/named/val_init/i32.wgsl
index c94ee67..642096d 100644
--- a/test/var/override/named/val_init/i32.wgsl
+++ b/test/var/override/named/val_init/i32.wgsl
@@ -1,6 +1,6 @@
-[[override]] let o : i32 = 1;
+@override let o : i32 = 1;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/var/override/named/val_init/i32.wgsl.expected.wgsl b/test/var/override/named/val_init/i32.wgsl.expected.wgsl
index b897fd53..46adcb7 100644
--- a/test/var/override/named/val_init/i32.wgsl.expected.wgsl
+++ b/test/var/override/named/val_init/i32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[override]] let o : i32 = 1;
+@override let o : i32 = 1;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/var/override/named/val_init/u32.wgsl b/test/var/override/named/val_init/u32.wgsl
index 8c8df63..582f7ab 100644
--- a/test/var/override/named/val_init/u32.wgsl
+++ b/test/var/override/named/val_init/u32.wgsl
@@ -1,6 +1,6 @@
-[[override]] let o : u32 = 1u;
+@override let o : u32 = 1u;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/var/override/named/val_init/u32.wgsl.expected.wgsl b/test/var/override/named/val_init/u32.wgsl.expected.wgsl
index 3a62e22..06b1aa0 100644
--- a/test/var/override/named/val_init/u32.wgsl.expected.wgsl
+++ b/test/var/override/named/val_init/u32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[override]] let o : u32 = 1u;
+@override let o : u32 = 1u;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/var/override/named/zero_init/bool.wgsl b/test/var/override/named/zero_init/bool.wgsl
index 1e03a45..8869f16 100644
--- a/test/var/override/named/zero_init/bool.wgsl
+++ b/test/var/override/named/zero_init/bool.wgsl
@@ -1,6 +1,6 @@
-[[override]] let o : bool = bool();
+@override let o : bool = bool();
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/var/override/named/zero_init/bool.wgsl.expected.wgsl b/test/var/override/named/zero_init/bool.wgsl.expected.wgsl
index 511bd67..f686612 100644
--- a/test/var/override/named/zero_init/bool.wgsl.expected.wgsl
+++ b/test/var/override/named/zero_init/bool.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[override]] let o : bool = bool();
+@override let o : bool = bool();
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/var/override/named/zero_init/f32.wgsl b/test/var/override/named/zero_init/f32.wgsl
index a47d934..4af2466 100644
--- a/test/var/override/named/zero_init/f32.wgsl
+++ b/test/var/override/named/zero_init/f32.wgsl
@@ -1,6 +1,6 @@
-[[override]] let o : f32 = f32();
+@override let o : f32 = f32();
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/var/override/named/zero_init/f32.wgsl.expected.wgsl b/test/var/override/named/zero_init/f32.wgsl.expected.wgsl
index fe1468f..9398382 100644
--- a/test/var/override/named/zero_init/f32.wgsl.expected.wgsl
+++ b/test/var/override/named/zero_init/f32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[override]] let o : f32 = f32();
+@override let o : f32 = f32();
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/var/override/named/zero_init/i32.wgsl b/test/var/override/named/zero_init/i32.wgsl
index 6455227..132987a 100644
--- a/test/var/override/named/zero_init/i32.wgsl
+++ b/test/var/override/named/zero_init/i32.wgsl
@@ -1,6 +1,6 @@
-[[override]] let o : i32 = i32();
+@override let o : i32 = i32();
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/var/override/named/zero_init/i32.wgsl.expected.wgsl b/test/var/override/named/zero_init/i32.wgsl.expected.wgsl
index 5cde670..afa82db 100644
--- a/test/var/override/named/zero_init/i32.wgsl.expected.wgsl
+++ b/test/var/override/named/zero_init/i32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[override]] let o : i32 = i32();
+@override let o : i32 = i32();
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/var/override/named/zero_init/u32.wgsl b/test/var/override/named/zero_init/u32.wgsl
index 9d1205e..047aeb5 100644
--- a/test/var/override/named/zero_init/u32.wgsl
+++ b/test/var/override/named/zero_init/u32.wgsl
@@ -1,6 +1,6 @@
-[[override]] let o : u32 = u32();
+@override let o : u32 = u32();
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/var/override/named/zero_init/u32.wgsl.expected.wgsl b/test/var/override/named/zero_init/u32.wgsl.expected.wgsl
index f9d5644..9146204 100644
--- a/test/var/override/named/zero_init/u32.wgsl.expected.wgsl
+++ b/test/var/override/named/zero_init/u32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[override]] let o : u32 = u32();
+@override let o : u32 = u32();
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/var/override/numbered/no_init/bool.wgsl b/test/var/override/numbered/no_init/bool.wgsl
index a8b81c7..407941d 100644
--- a/test/var/override/numbered/no_init/bool.wgsl
+++ b/test/var/override/numbered/no_init/bool.wgsl
@@ -1,6 +1,6 @@
-[[override(1234)]] let o : bool;
+@override(1234) let o : bool;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/var/override/numbered/no_init/bool.wgsl.expected.wgsl b/test/var/override/numbered/no_init/bool.wgsl.expected.wgsl
index e8d6daf..d51cd82 100644
--- a/test/var/override/numbered/no_init/bool.wgsl.expected.wgsl
+++ b/test/var/override/numbered/no_init/bool.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[override(1234)]] let o : bool;
+@override(1234) let o : bool;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/var/override/numbered/no_init/f32.wgsl b/test/var/override/numbered/no_init/f32.wgsl
index 95e9dfd..796c8ad 100644
--- a/test/var/override/numbered/no_init/f32.wgsl
+++ b/test/var/override/numbered/no_init/f32.wgsl
@@ -1,6 +1,6 @@
-[[override(1234)]] let o : f32;
+@override(1234) let o : f32;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/var/override/numbered/no_init/f32.wgsl.expected.wgsl b/test/var/override/numbered/no_init/f32.wgsl.expected.wgsl
index cabed6a..2315774 100644
--- a/test/var/override/numbered/no_init/f32.wgsl.expected.wgsl
+++ b/test/var/override/numbered/no_init/f32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[override(1234)]] let o : f32;
+@override(1234) let o : f32;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/var/override/numbered/no_init/i32.wgsl b/test/var/override/numbered/no_init/i32.wgsl
index 74846ef..5778c73 100644
--- a/test/var/override/numbered/no_init/i32.wgsl
+++ b/test/var/override/numbered/no_init/i32.wgsl
@@ -1,6 +1,6 @@
-[[override(1234)]] let o : i32;
+@override(1234) let o : i32;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/var/override/numbered/no_init/i32.wgsl.expected.wgsl b/test/var/override/numbered/no_init/i32.wgsl.expected.wgsl
index 68fb678..cdd1bdd 100644
--- a/test/var/override/numbered/no_init/i32.wgsl.expected.wgsl
+++ b/test/var/override/numbered/no_init/i32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[override(1234)]] let o : i32;
+@override(1234) let o : i32;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/var/override/numbered/no_init/u32.wgsl b/test/var/override/numbered/no_init/u32.wgsl
index 152c709..7992da9 100644
--- a/test/var/override/numbered/no_init/u32.wgsl
+++ b/test/var/override/numbered/no_init/u32.wgsl
@@ -1,6 +1,6 @@
-[[override(1234)]] let o : u32;
+@override(1234) let o : u32;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/var/override/numbered/no_init/u32.wgsl.expected.wgsl b/test/var/override/numbered/no_init/u32.wgsl.expected.wgsl
index 40cb6c0..2a2fc96 100644
--- a/test/var/override/numbered/no_init/u32.wgsl.expected.wgsl
+++ b/test/var/override/numbered/no_init/u32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[override(1234)]] let o : u32;
+@override(1234) let o : u32;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/var/override/numbered/val_init/bool.wgsl b/test/var/override/numbered/val_init/bool.wgsl
index c29ec30..91cbe00 100644
--- a/test/var/override/numbered/val_init/bool.wgsl
+++ b/test/var/override/numbered/val_init/bool.wgsl
@@ -1,6 +1,6 @@
-[[override(1234)]] let o : bool = true;
+@override(1234) let o : bool = true;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/var/override/numbered/val_init/bool.wgsl.expected.wgsl b/test/var/override/numbered/val_init/bool.wgsl.expected.wgsl
index 2ab9051..57c6d05 100644
--- a/test/var/override/numbered/val_init/bool.wgsl.expected.wgsl
+++ b/test/var/override/numbered/val_init/bool.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[override(1234)]] let o : bool = true;
+@override(1234) let o : bool = true;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/var/override/numbered/val_init/f32.wgsl b/test/var/override/numbered/val_init/f32.wgsl
index 649d4e8..7251986 100644
--- a/test/var/override/numbered/val_init/f32.wgsl
+++ b/test/var/override/numbered/val_init/f32.wgsl
@@ -1,6 +1,6 @@
-[[override(1234)]] let o : f32 = 1.0;
+@override(1234) let o : f32 = 1.0;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/var/override/numbered/val_init/f32.wgsl.expected.wgsl b/test/var/override/numbered/val_init/f32.wgsl.expected.wgsl
index bb12693..d2a4882 100644
--- a/test/var/override/numbered/val_init/f32.wgsl.expected.wgsl
+++ b/test/var/override/numbered/val_init/f32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[override(1234)]] let o : f32 = 1.0;
+@override(1234) let o : f32 = 1.0;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/var/override/numbered/val_init/i32.wgsl b/test/var/override/numbered/val_init/i32.wgsl
index d867f6a..1036ba5 100644
--- a/test/var/override/numbered/val_init/i32.wgsl
+++ b/test/var/override/numbered/val_init/i32.wgsl
@@ -1,6 +1,6 @@
-[[override(1234)]] let o : i32 = 1;
+@override(1234) let o : i32 = 1;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/var/override/numbered/val_init/i32.wgsl.expected.wgsl b/test/var/override/numbered/val_init/i32.wgsl.expected.wgsl
index 592dd92..8f8e5f1 100644
--- a/test/var/override/numbered/val_init/i32.wgsl.expected.wgsl
+++ b/test/var/override/numbered/val_init/i32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[override(1234)]] let o : i32 = 1;
+@override(1234) let o : i32 = 1;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/var/override/numbered/val_init/u32.wgsl b/test/var/override/numbered/val_init/u32.wgsl
index 22c55f2..3ee87d3 100644
--- a/test/var/override/numbered/val_init/u32.wgsl
+++ b/test/var/override/numbered/val_init/u32.wgsl
@@ -1,6 +1,6 @@
-[[override(1234)]] let o : u32 = 1u;
+@override(1234) let o : u32 = 1u;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/var/override/numbered/val_init/u32.wgsl.expected.wgsl b/test/var/override/numbered/val_init/u32.wgsl.expected.wgsl
index 18bb63b..4712fda 100644
--- a/test/var/override/numbered/val_init/u32.wgsl.expected.wgsl
+++ b/test/var/override/numbered/val_init/u32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[override(1234)]] let o : u32 = 1u;
+@override(1234) let o : u32 = 1u;
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/var/override/numbered/zero_init/bool.wgsl b/test/var/override/numbered/zero_init/bool.wgsl
index 894b584..27a68b3 100644
--- a/test/var/override/numbered/zero_init/bool.wgsl
+++ b/test/var/override/numbered/zero_init/bool.wgsl
@@ -1,6 +1,6 @@
-[[override(1234)]] let o : bool = bool();
+@override(1234) let o : bool = bool();
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/var/override/numbered/zero_init/bool.wgsl.expected.wgsl b/test/var/override/numbered/zero_init/bool.wgsl.expected.wgsl
index 653b1da..2e68a0e 100644
--- a/test/var/override/numbered/zero_init/bool.wgsl.expected.wgsl
+++ b/test/var/override/numbered/zero_init/bool.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[override(1234)]] let o : bool = bool();
+@override(1234) let o : bool = bool();
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/var/override/numbered/zero_init/f32.wgsl b/test/var/override/numbered/zero_init/f32.wgsl
index 0a3908c..a022f0b 100644
--- a/test/var/override/numbered/zero_init/f32.wgsl
+++ b/test/var/override/numbered/zero_init/f32.wgsl
@@ -1,6 +1,6 @@
-[[override(1234)]] let o : f32 = f32();
+@override(1234) let o : f32 = f32();
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/var/override/numbered/zero_init/f32.wgsl.expected.wgsl b/test/var/override/numbered/zero_init/f32.wgsl.expected.wgsl
index 589751b..e5d2086 100644
--- a/test/var/override/numbered/zero_init/f32.wgsl.expected.wgsl
+++ b/test/var/override/numbered/zero_init/f32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[override(1234)]] let o : f32 = f32();
+@override(1234) let o : f32 = f32();
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/var/override/numbered/zero_init/i32.wgsl b/test/var/override/numbered/zero_init/i32.wgsl
index 4dd63fd..448f14a 100644
--- a/test/var/override/numbered/zero_init/i32.wgsl
+++ b/test/var/override/numbered/zero_init/i32.wgsl
@@ -1,6 +1,6 @@
-[[override(1234)]] let o : i32 = i32();
+@override(1234) let o : i32 = i32();
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/var/override/numbered/zero_init/i32.wgsl.expected.wgsl b/test/var/override/numbered/zero_init/i32.wgsl.expected.wgsl
index 8c0adca..c250241 100644
--- a/test/var/override/numbered/zero_init/i32.wgsl.expected.wgsl
+++ b/test/var/override/numbered/zero_init/i32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[override(1234)]] let o : i32 = i32();
+@override(1234) let o : i32 = i32();
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/var/override/numbered/zero_init/u32.wgsl b/test/var/override/numbered/zero_init/u32.wgsl
index d525204..ff50cba 100644
--- a/test/var/override/numbered/zero_init/u32.wgsl
+++ b/test/var/override/numbered/zero_init/u32.wgsl
@@ -1,6 +1,6 @@
-[[override(1234)]] let o : u32 = u32();
+@override(1234) let o : u32 = u32();
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/var/override/numbered/zero_init/u32.wgsl.expected.wgsl b/test/var/override/numbered/zero_init/u32.wgsl.expected.wgsl
index d45213b..1dc6121 100644
--- a/test/var/override/numbered/zero_init/u32.wgsl.expected.wgsl
+++ b/test/var/override/numbered/zero_init/u32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
-[[override(1234)]] let o : u32 = u32();
+@override(1234) let o : u32 = u32();
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/var/uses/many_workgroup_vars.wgsl b/test/var/uses/many_workgroup_vars.wgsl
index 7857da9..56df492 100644
--- a/test/var/uses/many_workgroup_vars.wgsl
+++ b/test/var/uses/many_workgroup_vars.wgsl
@@ -99,8 +99,8 @@
 var<workgroup> m98 : mat2x2<f32>;
 var<workgroup> m99 : mat2x2<f32>;
 
-[[stage(compute), workgroup_size(1)]]
-fn tint_symbol([[builtin(local_invocation_index)]] idx : u32) {
+@stage(compute) @workgroup_size(1)
+fn tint_symbol(@builtin(local_invocation_index) idx : u32) {
   m00[0][0] = 1.0;
   m01[0][0] = 1.0;
   m02[0][0] = 1.0;
@@ -201,4 +201,4 @@
   m97[0][0] = 1.0;
   m98[0][0] = 1.0;
   m99[0][0] = 1.0;
-}
\ No newline at end of file
+}
diff --git a/test/var/uses/many_workgroup_vars.wgsl.expected.wgsl b/test/var/uses/many_workgroup_vars.wgsl.expected.wgsl
index 873700f..9d1822e 100644
--- a/test/var/uses/many_workgroup_vars.wgsl.expected.wgsl
+++ b/test/var/uses/many_workgroup_vars.wgsl.expected.wgsl
@@ -198,8 +198,8 @@
 
 var<workgroup> m99 : mat2x2<f32>;
 
-[[stage(compute), workgroup_size(1)]]
-fn tint_symbol([[builtin(local_invocation_index)]] idx : u32) {
+@stage(compute) @workgroup_size(1)
+fn tint_symbol(@builtin(local_invocation_index) idx : u32) {
   m00[0][0] = 1.0;
   m01[0][0] = 1.0;
   m02[0][0] = 1.0;
diff --git a/test/var/uses/private.wgsl b/test/var/uses/private.wgsl
index a08e705..6ec289a 100644
--- a/test/var/uses/private.wgsl
+++ b/test/var/uses/private.wgsl
@@ -25,25 +25,25 @@
   no_uses();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main1() {
   a = 42;
   uses_a();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main2() {
   b = 7;
   uses_b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main3() {
   outer();
   no_uses();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main4() {
   no_uses();
 }
diff --git a/test/var/uses/private.wgsl.expected.wgsl b/test/var/uses/private.wgsl.expected.wgsl
index ae27b42..4770447 100644
--- a/test/var/uses/private.wgsl.expected.wgsl
+++ b/test/var/uses/private.wgsl.expected.wgsl
@@ -27,25 +27,25 @@
   no_uses();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main1() {
   a = 42;
   uses_a();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main2() {
   b = 7;
   uses_b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main3() {
   outer();
   no_uses();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main4() {
   no_uses();
 }
diff --git a/test/var/uses/workgroup.wgsl b/test/var/uses/workgroup.wgsl
index d47c3da..23736b5 100644
--- a/test/var/uses/workgroup.wgsl
+++ b/test/var/uses/workgroup.wgsl
@@ -25,25 +25,25 @@
   no_uses();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main1() {
   a = 42;
   uses_a();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main2() {
   b = 7;
   uses_b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main3() {
   outer();
   no_uses();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main4() {
   no_uses();
 }
diff --git a/test/var/uses/workgroup.wgsl.expected.wgsl b/test/var/uses/workgroup.wgsl.expected.wgsl
index 95d9b6b..a3386fe 100644
--- a/test/var/uses/workgroup.wgsl.expected.wgsl
+++ b/test/var/uses/workgroup.wgsl.expected.wgsl
@@ -27,25 +27,25 @@
   no_uses();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main1() {
   a = 42;
   uses_a();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main2() {
   b = 7;
   uses_b();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main3() {
   outer();
   no_uses();
 }
 
-[[stage(compute), workgroup_size(1)]]
+@stage(compute) @workgroup_size(1)
 fn main4() {
   no_uses();
 }
diff --git a/test/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.wgsl b/test/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.wgsl
index cd91ab7..cb95b58 100644
--- a/test/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.wgsl
+++ b/test/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.wgsl
@@ -16,13 +16,13 @@
   data2 : i32;
 };
 
-[[group(0), binding(3)]] var<storage, read_write> x_4 : result;
+@group(0) @binding(3) var<storage, read_write> x_4 : result;
 
-[[group(0), binding(0)]] var<uniform> x_6 : block0;
+@group(0) @binding(0) var<uniform> x_6 : block0;
 
-[[group(0), binding(1)]] var<uniform> x_8 : block1;
+@group(0) @binding(1) var<uniform> x_8 : block1;
 
-[[group(0), binding(2)]] var<uniform> x_10 : block2;
+@group(0) @binding(2) var<uniform> x_10 : block2;
 
 fn main_1() {
   let x_25 : i32 = x_6.data0;
@@ -34,7 +34,7 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   main_1();
 }
diff --git a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.wgsl b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.wgsl
index 8d78d1e..0e4fce3 100644
--- a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.wgsl
+++ b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.wgsl
@@ -2,14 +2,14 @@
   data : vec4<f32>;
 };
 
-[[group(0), binding(1)]] var<storage, read_write> x_4 : block0;
+@group(0) @binding(1) var<storage, read_write> x_4 : block0;
 
 fn main_1() {
   x_4.data = vec4<f32>(1.0, 2.0, 3.0, 4.0);
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   main_1();
 }
diff --git a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.wgsl b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.wgsl
index 465aac8..5cdad21 100644
--- a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.wgsl
+++ b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.wgsl
@@ -6,7 +6,7 @@
 
 var<private> frag_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_8 : block0;
+@group(0) @binding(1) var<uniform> x_8 : block0;
 
 var<private> gl_Position : vec4<f32>;
 
@@ -19,14 +19,14 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
-  [[location(0)]]
+  @location(0)
   frag_color_1 : vec4<f32>;
 };
 
-[[stage(vertex)]]
-fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+@stage(vertex)
+fn main(@location(0) position_param : vec4<f32>) -> main_out {
   position = position_param;
   main_1();
   return main_out(gl_Position, frag_color);
diff --git a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.wgsl b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.wgsl
index 0901c1f..eae3d41 100644
--- a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.wgsl
+++ b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.wgsl
@@ -9,12 +9,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   final_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[location(0)]] frag_color_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@location(0) frag_color_param : vec4<f32>) -> main_out {
   frag_color = frag_color_param;
   main_1();
   return main_out(final_color);
diff --git a/test/vk-gl-cts/combined_operations/negintdivand/0-opt.wgsl b/test/vk-gl-cts/combined_operations/negintdivand/0-opt.wgsl
index b9cc524..8e480df 100644
--- a/test/vk-gl-cts/combined_operations/negintdivand/0-opt.wgsl
+++ b/test/vk-gl-cts/combined_operations/negintdivand/0-opt.wgsl
@@ -13,14 +13,14 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
-  [[location(1)]]
+  @location(1)
   frag_color_1 : vec4<f32>;
 };
 
-[[stage(vertex)]]
-fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+@stage(vertex)
+fn main(@location(0) position_param : vec4<f32>) -> main_out {
   position = position_param;
   main_1();
   return main_out(gl_Position, frag_color);
diff --git a/test/vk-gl-cts/combined_operations/negintdivand/1.wgsl b/test/vk-gl-cts/combined_operations/negintdivand/1.wgsl
index cbbd626..0ad4fe9 100644
--- a/test/vk-gl-cts/combined_operations/negintdivand/1.wgsl
+++ b/test/vk-gl-cts/combined_operations/negintdivand/1.wgsl
@@ -16,12 +16,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   color_out_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[location(1)]] frag_color_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@location(1) frag_color_param : vec4<f32>) -> main_out {
   frag_color = frag_color_param;
   main_1();
   return main_out(color_out);
diff --git a/test/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.wgsl
index 8432d48..6d1ff1f 100644
--- a/test/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.wgsl
@@ -11,11 +11,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.wgsl
index 32cc07e..ae0c7b0 100644
--- a/test/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.wgsl
@@ -6,7 +6,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_11 : buf0;
+@group(0) @binding(0) var<uniform> x_11 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -101,11 +101,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.wgsl
index c345dfc..58049a1 100644
--- a/test/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.wgsl
@@ -10,7 +10,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_30 : buf0;
+@group(0) @binding(0) var<uniform> x_30 : buf0;
 
 fn swap_i1_i1_(i : ptr<function, i32>, j : ptr<function, i32>) {
   var temp : i32;
@@ -185,11 +185,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.wgsl
index 75f4bd37..db02da6 100644
--- a/test/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -91,12 +91,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.wgsl
index a09f0d4..63e9675 100644
--- a/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.wgsl
@@ -102,12 +102,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.wgsl
index 19735ee..9c19516 100644
--- a/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.wgsl
@@ -83,11 +83,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.wgsl
index 5793a6f..6200ff3 100644
--- a/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.wgsl
@@ -1,4 +1,4 @@
-type RTArr = [[stride(4)]] array<i32>;
+type RTArr = @stride(4) array<i32>;
 
 struct doesNotMatter {
   global_seed : i32;
@@ -11,9 +11,9 @@
 
 var<private> gl_LocalInvocationID : vec3<u32>;
 
-[[group(0), binding(0)]] var<storage, read_write> x_7 : doesNotMatter;
+@group(0) @binding(0) var<storage, read_write> x_7 : doesNotMatter;
 
-[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+@group(0) @binding(1) var<uniform> x_10 : buf1;
 
 fn main_1() {
   var lid : i32;
@@ -55,8 +55,8 @@
   return;
 }
 
-[[stage(compute), workgroup_size(16, 1, 1)]]
-fn main([[builtin(local_invocation_id)]] gl_LocalInvocationID_param : vec3<u32>) {
+@stage(compute) @workgroup_size(16, 1, 1)
+fn main(@builtin(local_invocation_id) gl_LocalInvocationID_param : vec3<u32>) {
   gl_LocalInvocationID = gl_LocalInvocationID_param;
   main_1();
 }
diff --git a/test/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.wgsl
index 5ac0f1a..557b89c 100644
--- a/test/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 fn main_1() {
   var GLF_live12c5 : bool;
@@ -34,11 +34,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.wgsl
index 817d91b..04662ee 100644
--- a/test/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.wgsl
@@ -2,7 +2,7 @@
   one : f32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -28,11 +28,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.wgsl
index d68a5ec..f655e42 100644
--- a/test/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -62,11 +62,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.wgsl
index 520dccb..8af8b73 100644
--- a/test/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -20,11 +20,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.wgsl b/test/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.wgsl
index 088c0f8..1f03990 100644
--- a/test/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.wgsl
@@ -61,12 +61,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.wgsl
index 937a8df..4de0ebd 100644
--- a/test/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> GLF_live6tree : array<i32, 10>;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -39,11 +39,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.wgsl
index 4affd4f..2a4df80 100644
--- a/test/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_25 : buf0;
+@group(0) @binding(0) var<uniform> x_25 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -304,12 +304,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.wgsl
index c7a4fe2..b4400e6 100644
--- a/test/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.wgsl
@@ -6,7 +6,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_11 : buf0;
+@group(0) @binding(0) var<uniform> x_11 : buf0;
 
 fn func_i1_(b : ptr<function, i32>) -> f32 {
   var ndx : i32;
@@ -112,12 +112,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.wgsl
index 021c3f7..dd80eb3 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 3>;
+type Arr_1 = @stride(16) array<f32, 3>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -54,11 +54,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.wgsl
index b046ca1..c361951 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.wgsl
@@ -2,7 +2,7 @@
   zero : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -63,11 +63,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.wgsl
index 1fff19f..a652c56 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 3>;
+type Arr = @stride(16) array<f32, 3>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
@@ -12,11 +12,11 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 fn main_1() {
   var v : vec2<i32>;
@@ -45,12 +45,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.wgsl
index 6c62828..9630567 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.wgsl
@@ -2,7 +2,7 @@
   two : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -23,11 +23,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.wgsl
index 32c79b7..a4a925f 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<i32, 10>;
+type Arr = @stride(16) array<i32, 10>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+@group(0) @binding(1) var<uniform> x_7 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -58,11 +58,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.wgsl
index d1079cb..87c4fe3 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -48,11 +48,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-module-small-number/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-module-small-number/0-opt.wgsl
index 019dd07..9a72028 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-module-small-number/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-module-small-number/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
@@ -12,9 +12,9 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 fn main_1() {
   var f0 : f32;
@@ -77,11 +77,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.wgsl
index e8b285f..fd64516 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<i32, 5>;
+type Arr = @stride(16) array<i32, 5>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 3>;
+type Arr_1 = @stride(16) array<f32, 3>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+@group(0) @binding(1) var<uniform> x_9 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -53,11 +53,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.wgsl
index 57cbd69..3b441f6e 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -46,11 +46,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.wgsl
index 8bcb3a5..be02bf8 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.wgsl
@@ -22,11 +22,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.wgsl
index 3c3604a..4861cdf 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.wgsl
@@ -1,20 +1,20 @@
-type Arr = [[stride(16)]] array<i32, 12>;
+type Arr = @stride(16) array<i32, 12>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_15 : buf0;
+@group(0) @binding(0) var<uniform> x_15 : buf0;
 
 fn main_1() {
   var m0 : mat3x4<f32>;
@@ -79,11 +79,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.wgsl
index 058b636..f9187ee 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -44,11 +44,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.wgsl
index ba3f0fe..fdeb85a 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.wgsl
@@ -1,20 +1,20 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_11 : buf1;
+@group(0) @binding(1) var<uniform> x_11 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -58,12 +58,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.wgsl
index ab2be50..f7f4488 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<i32, 20>;
+type Arr = @stride(16) array<i32, 20>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
@@ -8,11 +8,11 @@
   one : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_19 : buf1;
+@group(0) @binding(1) var<uniform> x_19 : buf1;
 
 fn main_1() {
   var arr0 : array<i32, 10>;
@@ -219,11 +219,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.wgsl
index f95fe55..f71829a 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 7>;
+type Arr = @stride(16) array<f32, 7>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -84,11 +84,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.wgsl
index 74ba82b..2ffa4ac 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 2>;
+type Arr_1 = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -53,11 +53,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.wgsl
index fbe9843..26f7859 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.wgsl
@@ -2,7 +2,7 @@
   zero : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -47,11 +47,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.wgsl
index 8cbbc01..383dd2b 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 1>;
+type Arr = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 3>;
+type Arr_1 = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
@@ -12,9 +12,9 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_11 : buf1;
+@group(0) @binding(1) var<uniform> x_11 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -61,12 +61,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.wgsl
index f5e5913..5ab1ec2 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 4>;
+type Arr = @stride(16) array<i32, 4>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -57,11 +57,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.wgsl
index 1d88159..b8d916b 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.wgsl
@@ -2,23 +2,23 @@
   zero : f32;
 };
 
-type Arr = [[stride(16)]] array<f32, 1>;
+type Arr = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(2)]] var<uniform> x_6 : buf2;
+@group(0) @binding(2) var<uniform> x_6 : buf2;
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+@group(0) @binding(1) var<uniform> x_10 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -53,11 +53,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.wgsl
index 73515b9..9b8061d 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.wgsl
@@ -149,12 +149,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.wgsl
index b8f5efd..90b17bf 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<i32, 4>;
+type Arr = @stride(16) array<i32, 4>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 3>;
+type Arr_1 = @stride(16) array<f32, 3>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -137,11 +137,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.wgsl
index 3319941..e8560ca 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
@@ -6,7 +6,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 fn main_1() {
   var f : f32;
@@ -27,11 +27,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.wgsl
index 6cc8571..82acf85 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 3>;
+type Arr_1 = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+@group(0) @binding(1) var<uniform> x_9 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -65,11 +65,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.wgsl
index f53bccb..a5ffc0e 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.wgsl
@@ -1,20 +1,20 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+@group(0) @binding(1) var<uniform> x_7 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 fn main_1() {
   var a : f32;
@@ -41,11 +41,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.wgsl
index 6251946..c01653c 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<i32, 5>;
+type Arr = @stride(16) array<i32, 5>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 2>;
+type Arr_1 = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -71,11 +71,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.wgsl
index e0b9928..bbd9843 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.wgsl
@@ -1,20 +1,20 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 fn main_1() {
   var v0 : vec2<f32>;
@@ -42,11 +42,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.wgsl
index dc68ea4..3fc8857 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.wgsl
@@ -1,20 +1,20 @@
-type Arr = [[stride(16)]] array<f32, 3>;
+type Arr = @stride(16) array<f32, 3>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 fn main_1() {
   var v0 : vec2<f32>;
@@ -42,11 +42,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.wgsl
index 8d15f49..4b9df77 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
@@ -8,9 +8,9 @@
   zero : f32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+@group(0) @binding(1) var<uniform> x_9 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -43,11 +43,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.wgsl
index 7094098..f0c0fa1 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 3>;
+type Arr = @stride(16) array<f32, 3>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 4>;
+type Arr_1 = @stride(16) array<i32, 4>;
 
 struct buf2 {
   x_GLF_uniform_int_values : Arr_1;
@@ -14,7 +14,7 @@
   three : i32;
 };
 
-type Arr_2 = [[stride(16)]] array<u32, 1>;
+type Arr_2 = @stride(16) array<u32, 1>;
 
 struct buf0 {
   x_GLF_uniform_uint_values : Arr_2;
@@ -22,15 +22,15 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(2)]] var<uniform> x_12 : buf2;
+@group(0) @binding(2) var<uniform> x_12 : buf2;
 
-[[group(0), binding(3)]] var<uniform> x_14 : buf3;
+@group(0) @binding(3) var<uniform> x_14 : buf3;
 
-[[group(0), binding(0)]] var<uniform> x_16 : buf0;
+@group(0) @binding(0) var<uniform> x_16 : buf0;
 
 fn func0_() {
   var tmp : vec4<f32>;
@@ -128,12 +128,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.wgsl
index 4287868..3468018 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<f32, 5>;
+type Arr = @stride(16) array<f32, 5>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
@@ -6,7 +6,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -32,12 +32,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.wgsl
index 5049fc2..181cfc2 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.wgsl
@@ -2,17 +2,17 @@
   v1 : vec2<f32>;
 };
 
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 fn main_1() {
   var b : bool;
@@ -42,11 +42,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.wgsl
index 8cc5601..0b91056 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -50,11 +50,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.wgsl
index 3860701..fc6c715 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
@@ -8,7 +8,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr_1;
@@ -16,11 +16,11 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(2)]] var<uniform> x_9 : buf2;
+@group(0) @binding(2) var<uniform> x_9 : buf2;
 
-[[group(0), binding(1)]] var<uniform> x_11 : buf1;
+@group(0) @binding(1) var<uniform> x_11 : buf1;
 
 fn main_1() {
   var a : i32;
@@ -60,11 +60,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.wgsl
index 279f432..1bf8ce0 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.wgsl
@@ -2,7 +2,7 @@
   quarter : f32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -20,11 +20,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.wgsl
index 367bf40..e0b9f7d 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.wgsl
@@ -28,11 +28,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.wgsl
index c3e6f5d..95c8f9c 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.wgsl
@@ -2,7 +2,7 @@
   zero : f32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -18,11 +18,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.wgsl
index 45f886f..3801059 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 fn main_1() {
   var f : f32;
@@ -23,11 +23,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.wgsl
index b2ed065..cbea4ee 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.wgsl
@@ -2,7 +2,7 @@
   fourtytwo : f32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -29,11 +29,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.wgsl
index 2617e9c..348724f 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.wgsl
@@ -13,11 +13,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.wgsl
index 78b9651..a0b52a6 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -20,12 +20,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.wgsl
index bab28c3..c5e47de 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.wgsl
@@ -2,7 +2,7 @@
   zero : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -68,11 +68,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.wgsl
index 919120b..fe33aad 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
@@ -6,7 +6,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 fn main_1() {
   if (((1.0 % 1.0) <= 0.01)) {
@@ -23,11 +23,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.wgsl
index 9bdf93e..cb84651 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -48,11 +48,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.wgsl
index 92d63c5..cf2d376 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 fn main_1() {
   var x_30 : bool;
@@ -40,11 +40,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-sinh-inf/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-sinh-inf/0-opt.wgsl
index f14b530..5dd0328 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-sinh-inf/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-sinh-inf/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -30,11 +30,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.wgsl
index 2d4b641..a9f8c0d 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.wgsl
@@ -42,11 +42,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.wgsl
index aa69903..aff4ac4 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.wgsl
@@ -14,11 +14,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.wgsl
index 0fdf48f..903cd15 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 5>;
+type Arr = @stride(16) array<i32, 5>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -74,11 +74,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.wgsl
index 9853546..9a4d15f 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.wgsl
@@ -2,7 +2,7 @@
   one : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -21,11 +21,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.wgsl
index 3af5bf9..9822ce0 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<i32, 4>;
+type Arr = @stride(16) array<i32, 4>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
@@ -10,9 +10,9 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+@group(0) @binding(1) var<uniform> x_7 : buf1;
 
 fn main_1() {
   let x_28 : i32 = x_5.x_GLF_uniform_int_values[0];
@@ -52,11 +52,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.wgsl
index 91ec687..c0a411d 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.wgsl
@@ -6,7 +6,7 @@
   zero : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -58,11 +58,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.wgsl
index be4b0ae..6c2ce38 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.wgsl
@@ -6,7 +6,7 @@
   zero : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -30,11 +30,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.wgsl
index 1604234..9438771 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.wgsl
@@ -6,7 +6,7 @@
   zero : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -65,11 +65,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.wgsl
index 56180ef..6301e66 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.wgsl
@@ -1,20 +1,20 @@
-type Arr = [[stride(16)]] array<f32, 1>;
+type Arr = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 1>;
+type Arr_1 = @stride(16) array<i32, 1>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
 fn main_1() {
   var v : vec4<f32>;
@@ -29,11 +29,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.wgsl
index a5bfcb9..0eaf9df 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 5>;
+type Arr = @stride(16) array<i32, 5>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -91,11 +91,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.wgsl
index c7c18d1..659ece3 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.wgsl
@@ -65,11 +65,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.wgsl
index 645096c..6544198 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 3>;
+type Arr = @stride(16) array<f32, 3>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 3>;
+type Arr_1 = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -65,11 +65,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.wgsl
index 5c74b32..ff92b48 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 4>;
+type Arr = @stride(16) array<i32, 4>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -52,11 +52,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.wgsl
index 1a131cd..5cc135e 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 4>;
+type Arr = @stride(16) array<f32, 4>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
@@ -12,9 +12,9 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+@group(0) @binding(1) var<uniform> x_7 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_12 : buf0;
+@group(0) @binding(0) var<uniform> x_12 : buf0;
 
 fn func_f1_(b : ptr<function, f32>) -> f32 {
   let x_90 : f32 = x_7.x_GLF_uniform_float_values[0];
@@ -78,11 +78,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.wgsl
index 06ea4a2..01e8325 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 4>;
+type Arr = @stride(16) array<f32, 4>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -36,11 +36,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.wgsl
index eadf964..1964f4c 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 4>;
+type Arr = @stride(16) array<i32, 4>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -44,11 +44,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.wgsl
index 1a4e159..308fa1a 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.wgsl
@@ -6,9 +6,9 @@
   minusEight : i32;
 };
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -51,11 +51,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.wgsl
index d6f28e9..52f8b42 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.wgsl
@@ -2,7 +2,7 @@
   one : f32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -66,11 +66,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.wgsl
index 14ef8d3..76343c7 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.wgsl
@@ -108,11 +108,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.wgsl
index 46da53a..cb78e4d 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.wgsl
@@ -8,7 +8,7 @@
 
 var<private> array1 : array<f32, 3>;
 
-[[group(0), binding(0)]] var<uniform> x_11 : buf0;
+@group(0) @binding(0) var<uniform> x_11 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -72,12 +72,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.wgsl
index e1e2a9e..ddd7fa4 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 3>;
+type Arr_1 = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
@@ -16,11 +16,11 @@
 
 var<private> x_GLF_global_loop_count : i32;
 
-[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+@group(0) @binding(1) var<uniform> x_7 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
-[[group(0), binding(2)]] var<uniform> x_12 : buf2;
+@group(0) @binding(2) var<uniform> x_12 : buf2;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -79,11 +79,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.wgsl
index 0155704..ffdf893 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 3>;
+type Arr_1 = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+@group(0) @binding(1) var<uniform> x_9 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -55,11 +55,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.wgsl
index af5a1c1..cd8f3f0 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.wgsl
@@ -13,11 +13,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.wgsl
index b93b128..6006a29 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -53,11 +53,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.wgsl
index 690c3dd..9237ad8 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -60,11 +60,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.wgsl
index 620e1b8..e09ab73 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.wgsl
@@ -13,11 +13,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.wgsl
index 28e53df..4ca3a57 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 4>;
+type Arr_1 = @stride(16) array<i32, 4>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+@group(0) @binding(1) var<uniform> x_7 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -50,11 +50,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.wgsl
index 35a6b62..af347a5 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.wgsl
@@ -2,7 +2,7 @@
   one : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -42,11 +42,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.wgsl
index 57dfb87..91e2f98 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.wgsl
@@ -2,7 +2,7 @@
   one : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -17,11 +17,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.wgsl
index 76cdd76..92a2bb7 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.wgsl
@@ -2,7 +2,7 @@
   one : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -17,11 +17,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.wgsl
index a475384..4244472 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.wgsl
@@ -16,11 +16,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.wgsl
index 3d02048..7b6d3b1 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.wgsl
@@ -13,11 +13,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.wgsl
index 4fa9901..3926937 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.wgsl
@@ -27,12 +27,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.wgsl
index 56678ab..ad83063 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.wgsl
@@ -13,12 +13,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.wgsl
index 10c8137..cdfde15 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.wgsl
@@ -2,7 +2,7 @@
   minusOne : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -24,11 +24,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.wgsl
index ec3893d..41c2d79 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.wgsl
@@ -13,11 +13,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.wgsl
index 9e985c7..7cb34b0 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.wgsl
@@ -2,7 +2,7 @@
   one : u32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -64,11 +64,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.wgsl
index f04d8e2..45e24a8 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.wgsl
@@ -13,11 +13,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.wgsl
index be6fc47..350df86 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.wgsl
@@ -16,11 +16,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.wgsl
index 6795d45..e86e68c 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.wgsl
@@ -2,7 +2,7 @@
   one : f32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -33,11 +33,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.wgsl
index 485238c..865cffe 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.wgsl
@@ -2,7 +2,7 @@
   one : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -17,11 +17,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.wgsl
index eb49629..3aeb232 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.wgsl
@@ -2,7 +2,7 @@
   twoandthree : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -34,11 +34,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.wgsl
index 017d331..5e92a1d 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.wgsl
@@ -2,7 +2,7 @@
   three : f32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -17,11 +17,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.wgsl
index c832a10..cd134b6 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.wgsl
@@ -2,7 +2,7 @@
   three : f32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -17,11 +17,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.wgsl
index 7c7b28a..1446989 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.wgsl
@@ -24,11 +24,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.wgsl
index eb97819..7e63c10 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.wgsl
@@ -2,7 +2,7 @@
   one : f32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -21,11 +21,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.wgsl
index 82d53fc..b9dc403 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.wgsl
@@ -2,7 +2,7 @@
   four : f32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -21,11 +21,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.wgsl
index 738c840..dbdf48c 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.wgsl
@@ -2,7 +2,7 @@
   one : f32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -21,11 +21,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.wgsl
index 99ec59a..d7f03d8 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.wgsl
@@ -34,11 +34,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.wgsl
index 44ac190..b4a3e58 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.wgsl
@@ -34,11 +34,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.wgsl
index 1bba57f..6ae5084 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.wgsl
@@ -2,7 +2,7 @@
   five : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -31,11 +31,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.wgsl
index 1315b97..fa13a35 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.wgsl
@@ -2,7 +2,7 @@
   one : f32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -24,11 +24,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.wgsl
index a762a7d..115f201 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.wgsl
@@ -2,7 +2,7 @@
   four : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -17,11 +17,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.wgsl
index edfae00..37d278a 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.wgsl
@@ -2,7 +2,7 @@
   one : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -20,11 +20,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.wgsl
index 5938fe4..2397e0e 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -17,11 +17,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.wgsl
index bbb0ca6..16eb822 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -17,11 +17,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.wgsl
index 49c9205..7049b33 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.wgsl
@@ -2,7 +2,7 @@
   threeandfour : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -23,11 +23,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.wgsl
index 13ebbb0..e857996 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.wgsl
@@ -16,11 +16,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.wgsl
index bca2411..479f215 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.wgsl
@@ -2,7 +2,7 @@
   zeroOne : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -25,11 +25,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.wgsl
index c13349f..3d3d0e4 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 4>;
+type Arr = @stride(16) array<i32, 4>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -41,11 +41,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.wgsl
index c5585de..6a728fd 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 4>;
+type Arr = @stride(16) array<f32, 4>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 3>;
+type Arr_1 = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+@group(0) @binding(1) var<uniform> x_9 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -59,11 +59,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.wgsl
index af6ec42..b6ec115 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -54,11 +54,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl
index 05228f7..9e1b201 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 1>;
+type Arr = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
@@ -12,11 +12,11 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+@group(0) @binding(1) var<uniform> x_10 : buf1;
 
 fn main_1() {
   var f0 : f32;
@@ -40,12 +40,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.wgsl
index a1ab4e0..089938b 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 1>;
+type Arr = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -48,11 +48,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.wgsl
index 9d5718a..3a9c135 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
@@ -6,7 +6,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -36,12 +36,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl
index 0ea6e7d..a905e60 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 1>;
+type Arr = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 4>;
+type Arr_1 = @stride(16) array<i32, 4>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+@group(0) @binding(1) var<uniform> x_10 : buf1;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -85,12 +85,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.wgsl
index baa752e..ddb1417 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 4>;
+type Arr = @stride(16) array<f32, 4>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 1>;
+type Arr_1 = @stride(16) array<i32, 1>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
@@ -12,11 +12,11 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 fn main_1() {
   var icoord : vec2<i32>;
@@ -62,12 +62,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.wgsl
index 0791d46..20851de 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 4>;
+type Arr = @stride(16) array<f32, 4>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
@@ -12,11 +12,11 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_11 : buf0;
+@group(0) @binding(0) var<uniform> x_11 : buf0;
 
 fn func_f1_(x : ptr<function, f32>) -> f32 {
   loop {
@@ -82,12 +82,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.wgsl
index b695c16..85ca151 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
@@ -8,21 +8,21 @@
   zero : f32;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
-[[group(0), binding(2)]] var<uniform> x_10 : buf2;
+@group(0) @binding(2) var<uniform> x_10 : buf2;
 
 var<private> gl_FragCoord : vec4<f32>;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+@group(0) @binding(0) var<uniform> x_13 : buf0;
 
 fn func_vf2_(pos : ptr<function, vec2<f32>>) -> bool {
   let x_62 : f32 = (*(pos)).x;
@@ -60,12 +60,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.wgsl
index 9c26d44..b2ded57 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
@@ -8,7 +8,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 fn main_1() {
   x_GLF_global_loop_count = 0;
@@ -55,11 +55,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.wgsl
index 57432b7..caf4f3a 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 18>;
+type Arr = @stride(16) array<f32, 18>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 4>;
+type Arr_1 = @stride(16) array<i32, 4>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
@@ -16,11 +16,11 @@
 
 var<private> x_GLF_global_loop_count : i32;
 
-[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+@group(0) @binding(1) var<uniform> x_7 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_12 : buf0;
+@group(0) @binding(0) var<uniform> x_12 : buf0;
 
-[[group(0), binding(2)]] var<uniform> x_15 : buf2;
+@group(0) @binding(2) var<uniform> x_15 : buf2;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -130,11 +130,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.wgsl
index 19d84ed..96ce6a3 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
@@ -6,7 +6,7 @@
 
 var<private> x_GLF_global_loop_count : i32;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -63,11 +63,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.wgsl
index 510a02a..3ae2436 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -68,11 +68,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.wgsl
index 231d414..531a3d4 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
@@ -8,7 +8,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 fn main_1() {
   x_GLF_global_loop_count = 0;
@@ -42,11 +42,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.wgsl
index 080e3ba..c5c2c0c 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.wgsl
@@ -2,7 +2,7 @@
   zero : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -28,11 +28,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.wgsl
index fa50b1e..eae9e89 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
@@ -12,11 +12,11 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
 fn main_1() {
   let x_31 : f32 = x_6.x_GLF_uniform_float_values[1];
@@ -45,12 +45,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.wgsl
index e31894b..aed3c77 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 4>;
+type Arr = @stride(16) array<i32, 4>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -67,11 +67,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.wgsl
index ff058e8..883acb7 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -46,11 +46,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.wgsl
index e18c700..885ecab 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.wgsl
@@ -2,7 +2,7 @@
   three : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -43,11 +43,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.wgsl
index 9dc640b..d210920 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 3>;
+type Arr = @stride(16) array<f32, 3>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 3>;
+type Arr_1 = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -77,11 +77,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.wgsl
index d9a10ba..f649776 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 3>;
+type Arr = @stride(16) array<f32, 3>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 3>;
+type Arr_1 = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+@group(0) @binding(1) var<uniform> x_10 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -71,11 +71,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.wgsl
index d16fa14..3d51f22 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<i32, 4>;
+type Arr = @stride(16) array<i32, 4>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
@@ -6,7 +6,7 @@
 
 var<private> x_GLF_global_loop_count : i32;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -81,11 +81,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.wgsl
index 5f11cde..27f748f 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.wgsl
@@ -2,7 +2,7 @@
   one : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -39,11 +39,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.wgsl
index 0bb69b8..a98a0ef 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 5>;
+type Arr = @stride(16) array<i32, 5>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -52,11 +52,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.wgsl
index a1adef2..ba4cf88 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 5>;
+type Arr = @stride(16) array<i32, 5>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -87,11 +87,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.wgsl
index 5a5096d..2a3bb62 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<i32, 4>;
+type Arr = @stride(16) array<i32, 4>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 2>;
+type Arr_1 = @stride(16) array<f32, 2>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+@group(0) @binding(1) var<uniform> x_9 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -58,11 +58,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.wgsl
index 02f7508..02e7cd8 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 4>;
+type Arr_1 = @stride(16) array<f32, 4>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+@group(0) @binding(1) var<uniform> x_9 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -56,11 +56,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.wgsl
index 7d42f20..5ea2613 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.wgsl
@@ -27,12 +27,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.wgsl
index ab1fd10..badcf70 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.wgsl
@@ -2,7 +2,7 @@
   zero : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -68,11 +68,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.wgsl
index c5a9a86..7405541 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.wgsl
@@ -38,11 +38,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.wgsl
index cf1481a..0a01338 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.wgsl
@@ -29,12 +29,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.wgsl
index 95eb9e4..6df84d8 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.wgsl
@@ -1,20 +1,20 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+@group(0) @binding(1) var<uniform> x_7 : buf1;
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_11 : buf0;
+@group(0) @binding(0) var<uniform> x_11 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -73,12 +73,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.wgsl
index de17bea..4b2c476 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -58,11 +58,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.wgsl
index 46580ae..95e3e82 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 5>;
+type Arr = @stride(16) array<i32, 5>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -74,11 +74,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.wgsl
index 10bc47e..ce4f886 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.wgsl
@@ -1,20 +1,20 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_12 : buf0;
+@group(0) @binding(0) var<uniform> x_12 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -79,12 +79,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.wgsl
index d0f8b62..6284f25 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 4>;
+type Arr_1 = @stride(16) array<i32, 4>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+@group(0) @binding(1) var<uniform> x_10 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -89,11 +89,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.wgsl
index 3e90ab3..c40e683 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 5>;
+type Arr = @stride(16) array<i32, 5>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -69,11 +69,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.wgsl
index 8b9be4e..5515fa1 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 2>;
+type Arr_1 = @stride(16) array<f32, 2>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -44,11 +44,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-isnan/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-isnan/0-opt.wgsl
index 41a1c55..9f58cd8 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-isnan/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-isnan/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
@@ -6,7 +6,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 fn main_1() {
   let x_7 : i32 = x_5.x_GLF_uniform_int_values[0];
@@ -24,11 +24,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.wgsl
index a691939..b69d2c2 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.wgsl
@@ -1,20 +1,20 @@
-type Arr = [[stride(16)]] array<f32, 1>;
+type Arr = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+@group(0) @binding(1) var<uniform> x_7 : buf1;
 
 fn main_1() {
   let x_29 : f32 = x_5.x_GLF_uniform_float_values[0];
@@ -36,11 +36,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.wgsl
index 5e268e0..4de5b47 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 3>;
+type Arr = @stride(16) array<f32, 3>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
@@ -12,11 +12,11 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_14 : buf1;
+@group(0) @binding(1) var<uniform> x_14 : buf1;
 
 fn f1_f1_(a : ptr<function, f32>) -> f32 {
   var b : i32;
@@ -66,12 +66,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.wgsl
index 4cc9cf8..d9c43db 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 4>;
+type Arr = @stride(16) array<f32, 4>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
@@ -12,11 +12,11 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+@group(0) @binding(1) var<uniform> x_10 : buf1;
 
 fn main_1() {
   var a : i32;
@@ -46,12 +46,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.wgsl
index ed48840..a31725e 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.wgsl
@@ -1,20 +1,20 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 fn main_1() {
   var i : i32;
@@ -43,11 +43,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.wgsl
index 585c193..2465cc6 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 2>;
+type Arr_1 = @stride(16) array<f32, 2>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr_1;
@@ -12,11 +12,11 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+@group(0) @binding(1) var<uniform> x_10 : buf1;
 
 fn f1_f1_(a : ptr<function, f32>) -> f32 {
   let x_100 : f32 = *(a);
@@ -64,12 +64,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.wgsl
index 2b819ba..d84f847 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 7>;
+type Arr = @stride(16) array<f32, 7>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 4>;
+type Arr_1 = @stride(16) array<i32, 4>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -85,11 +85,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.wgsl
index eae85ef..62a1158 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr_1;
@@ -12,11 +12,11 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+@group(0) @binding(1) var<uniform> x_9 : buf1;
 
 fn main_1() {
   var i : i32;
@@ -59,12 +59,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.wgsl
index 628a5ec..b67d22f 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 2>;
+type Arr_1 = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -82,11 +82,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.wgsl
index c18fcc8..6f2a0b3 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<i32, 4>;
+type Arr = @stride(16) array<i32, 4>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 3>;
+type Arr_1 = @stride(16) array<f32, 3>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -84,11 +84,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.wgsl
index c423f55..d912c18 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 4>;
+type Arr = @stride(16) array<f32, 4>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 4>;
+type Arr_1 = @stride(16) array<i32, 4>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -86,11 +86,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.wgsl
index 7b441cf..b3b842d 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -39,11 +39,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.wgsl
index 58bf348..5daa6ea 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 4>;
+type Arr = @stride(16) array<f32, 4>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 3>;
+type Arr_1 = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+@group(0) @binding(1) var<uniform> x_9 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -77,11 +77,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.wgsl
index 3591994..054e604 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -24,11 +24,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.wgsl
index 2c3b18f..2ff0ddf 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -29,11 +29,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.wgsl
index ebf9237..450004f 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -38,11 +38,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.wgsl
index 6b0ffef..e6a5f8c 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 12>;
+type Arr = @stride(16) array<i32, 12>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -165,11 +165,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.wgsl
index dbbbe2b..ad8bed6 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 2>;
+type Arr_1 = @stride(16) array<f32, 2>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr_1;
@@ -12,9 +12,9 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
 fn main_1() {
   var a : f32;
@@ -35,11 +35,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.wgsl
index e3df98e..04e7908 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 2>;
+type Arr_1 = @stride(16) array<f32, 2>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr_1;
@@ -12,9 +12,9 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
 fn main_1() {
   var a : f32;
@@ -35,11 +35,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.wgsl
index 43f4562..fd3b6cd 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.wgsl
@@ -1,20 +1,20 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+@group(0) @binding(1) var<uniform> x_7 : buf1;
 
 fn main_1() {
   let x_31 : f32 = x_5.x_GLF_uniform_float_values[0];
@@ -33,11 +33,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.wgsl
index fb49913..9dda7ec 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.wgsl
@@ -6,15 +6,15 @@
   v1 : vec2<f32>;
 };
 
-type Arr = [[stride(16)]] array<i32, 5>;
+type Arr = @stride(16) array<i32, 5>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -147,11 +147,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.wgsl
index 0590a0e..277fb3a 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 2>;
+type Arr_1 = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
@@ -12,9 +12,9 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_5 : buf1;
+@group(0) @binding(1) var<uniform> x_5 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 fn main_1() {
   var i : i32;
@@ -50,11 +50,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.wgsl
index b584e24..c915bc3 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -30,11 +30,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.wgsl
index ab9a5fd..31c63ab 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
@@ -6,7 +6,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -47,12 +47,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.wgsl
index 054f760..c2cd62a 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -51,11 +51,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.wgsl
index a0443e6..195dfd7 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.wgsl
@@ -91,11 +91,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.wgsl
index a317457..da37a46 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -38,11 +38,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.wgsl
index cf4338c..1736a9c 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -37,11 +37,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.wgsl
index 6029823..0429c3b 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
@@ -6,7 +6,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 fn main_1() {
   var x_32_phi : i32;
@@ -39,11 +39,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.wgsl
index 0a12739..0d9ad36 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.wgsl
@@ -77,11 +77,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.wgsl
index c13d80f..76b7072 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 4>;
+type Arr = @stride(16) array<f32, 4>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 3>;
+type Arr_1 = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+@group(0) @binding(1) var<uniform> x_9 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -68,11 +68,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.wgsl
index 4c1cc2e..e839854 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.wgsl
@@ -2,7 +2,7 @@
   one : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -42,11 +42,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.wgsl
index 8f286a3..7f75d10 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 3>;
+type Arr = @stride(16) array<f32, 3>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 3>;
+type Arr_1 = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
@@ -12,9 +12,9 @@
 
 var<private> x_GLF_global_loop_count : i32;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+@group(0) @binding(1) var<uniform> x_10 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -65,11 +65,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.wgsl
index 3dc9b8f..4d7396f 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 6>;
+type Arr = @stride(16) array<i32, 6>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -79,11 +79,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.wgsl
index 4f881f0..da7adbc 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 3>;
+type Arr_1 = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_11 : buf1;
+@group(0) @binding(1) var<uniform> x_11 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -71,11 +71,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.wgsl
index d17d686..043f22e 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 4>;
+type Arr_1 = @stride(16) array<i32, 4>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+@group(0) @binding(1) var<uniform> x_7 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -81,12 +81,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.wgsl
index 6bee0d7..c2a9270 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 4>;
+type Arr = @stride(16) array<i32, 4>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -53,11 +53,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.wgsl
index 61e176c..4fb7bb4 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -38,11 +38,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.wgsl
index fbaf576..749e41d 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -33,11 +33,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.wgsl
index 5d36dbd..95223c0 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
@@ -6,7 +6,7 @@
 
 var<private> x_GLF_global_loop_count : i32;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -62,11 +62,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.wgsl
index 3edff4c..5603562 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+@group(0) @binding(1) var<uniform> x_9 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -81,11 +81,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.wgsl
index b2a62e1..1afd0fb 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 6>;
+type Arr = @stride(16) array<i32, 6>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
@@ -12,11 +12,11 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_12 : buf0;
+@group(0) @binding(0) var<uniform> x_12 : buf0;
 
 fn main_1() {
   var data : array<i32, 5>;
@@ -119,12 +119,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.wgsl
index f9b028d..e4181c5 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 4>;
+type Arr = @stride(16) array<f32, 4>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
@@ -12,9 +12,9 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_12 : buf0;
+@group(0) @binding(0) var<uniform> x_12 : buf0;
 
 var<private> x_GLF_v1 : vec4<f32>;
 
@@ -81,12 +81,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_v1_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_v1);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.wgsl
index 633587b..92c33ac 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -40,11 +40,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.wgsl
index 97d05ee..595d15c 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
@@ -6,7 +6,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -61,12 +61,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.wgsl
index bacb0e9..6063cf2 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 5>;
+type Arr = @stride(16) array<i32, 5>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -85,11 +85,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.wgsl
index 745d306..80a5f2f 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -32,11 +32,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.wgsl
index 7556722..3000605 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -37,11 +37,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.wgsl
index 6847d17..0b552c2 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.wgsl
@@ -2,7 +2,7 @@
   one : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -19,11 +19,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.wgsl
index 4168f03..7c8e12d 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
@@ -8,7 +8,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 fn main_1() {
   var a : i32;
@@ -29,12 +29,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.wgsl
index 7987ab9..beb04a2 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.wgsl
@@ -8,7 +8,7 @@
   one : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -86,11 +86,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.wgsl
index 9c1a3af..dcf3f7d 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.wgsl
@@ -2,7 +2,7 @@
   two : f32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -32,11 +32,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.wgsl
index a30ca1f..3860032 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.wgsl
@@ -2,7 +2,7 @@
   three : f32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -50,11 +50,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.wgsl
index 194355f..75ef009 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 1>;
+type Arr = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
@@ -12,11 +12,11 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+@group(0) @binding(1) var<uniform> x_9 : buf1;
 
 fn main_1() {
   var f : f32;
@@ -37,12 +37,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.wgsl
index 6c6f442..c91bc5b 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.wgsl
@@ -12,12 +12,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.wgsl
index 0eacd57..970ec3a 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.wgsl
@@ -2,7 +2,7 @@
   one : u32;
 };
 
-type Arr = [[stride(16)]] array<i32, 1>;
+type Arr = @stride(16) array<i32, 1>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
@@ -10,11 +10,11 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 fn func_() -> f32 {
   switch(1) {
@@ -51,12 +51,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.wgsl
index ee397ee..4e092af 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<f32, 3>;
+type Arr = @stride(16) array<f32, 3>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
@@ -6,7 +6,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 fn main_1() {
   var a : f32;
@@ -26,11 +26,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.wgsl
index 45050a1..8dc1059 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.wgsl
@@ -1,28 +1,28 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf2 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-type Arr_2 = [[stride(16)]] array<u32, 1>;
+type Arr_2 = @stride(16) array<u32, 1>;
 
 struct buf1 {
   x_GLF_uniform_uint_values : Arr_2;
 };
 
-[[group(0), binding(2)]] var<uniform> x_8 : buf2;
+@group(0) @binding(2) var<uniform> x_8 : buf2;
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_12 : buf1;
+@group(0) @binding(1) var<uniform> x_12 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -56,12 +56,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.wgsl
index 6dbe667..c840fa9 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.wgsl
@@ -648,11 +648,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.wgsl
index 85ab856..c5a7eec 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.wgsl
@@ -2,13 +2,13 @@
   one : f32;
 };
 
-type Arr = [[stride(16)]] array<f32, 1>;
+type Arr = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 4>;
+type Arr_1 = @stride(16) array<i32, 4>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
@@ -16,13 +16,13 @@
 
 var<private> m : mat4x2<f32>;
 
-[[group(0), binding(2)]] var<uniform> x_10 : buf2;
+@group(0) @binding(2) var<uniform> x_10 : buf2;
 
-[[group(0), binding(0)]] var<uniform> x_12 : buf0;
+@group(0) @binding(0) var<uniform> x_12 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_16 : buf1;
+@group(0) @binding(1) var<uniform> x_16 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -118,12 +118,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.wgsl
index 888c7e3..fa8927b 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 4>;
+type Arr_1 = @stride(16) array<i32, 4>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+@group(0) @binding(1) var<uniform> x_10 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -88,11 +88,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.wgsl
index 6961cb2..bc23f2a 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 3>;
+type Arr = @stride(16) array<f32, 3>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 4>;
+type Arr_1 = @stride(16) array<i32, 4>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
@@ -12,9 +12,9 @@
 
 var<private> x_GLF_global_loop_count : i32;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+@group(0) @binding(1) var<uniform> x_10 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -319,11 +319,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.wgsl
index 3542b4b..45c6006 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 19>;
+type Arr = @stride(16) array<i32, 19>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -116,11 +116,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.wgsl
index 014de3f..07176d9 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 3>;
+type Arr_1 = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+@group(0) @binding(1) var<uniform> x_9 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -63,11 +63,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.wgsl
index 8033cb9..ab44f55 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
@@ -12,9 +12,9 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
 fn main_1() {
   var a : f32;
@@ -63,11 +63,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.wgsl
index c83f471..ebcbd97 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 5>;
+type Arr = @stride(16) array<f32, 5>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 3>;
+type Arr_1 = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+@group(0) @binding(1) var<uniform> x_10 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -64,11 +64,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.wgsl
index 045939d..503dd1c 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -31,11 +31,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.wgsl
index 40c7d3e..892a12c 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.wgsl
@@ -1,20 +1,20 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+@group(0) @binding(1) var<uniform> x_7 : buf1;
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_11 : buf0;
+@group(0) @binding(0) var<uniform> x_11 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -94,12 +94,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.wgsl
index 07eb0ab..9439fb8 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 3>;
+type Arr_1 = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_11 : buf1;
+@group(0) @binding(1) var<uniform> x_11 : buf1;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -219,12 +219,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.wgsl
index 25ac138..7ea4c74 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 4>;
+type Arr = @stride(16) array<f32, 4>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 4>;
+type Arr_1 = @stride(16) array<i32, 4>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+@group(0) @binding(1) var<uniform> x_10 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -91,11 +91,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.wgsl
index 967e25d..fbcbd37 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.wgsl
@@ -2,7 +2,7 @@
   one : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -29,11 +29,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.wgsl
index 23deeb0..a562dab 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.wgsl
@@ -2,7 +2,7 @@
   three : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -17,11 +17,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.wgsl
index 9526fa4..d437610 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 2>;
+type Arr_1 = @stride(16) array<f32, 2>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr_1;
@@ -12,11 +12,11 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+@group(0) @binding(1) var<uniform> x_9 : buf1;
 
 fn main_1() {
   var i : i32;
@@ -71,12 +71,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.wgsl
index 45a9af8..21a1811 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
@@ -8,17 +8,17 @@
   one : f32;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(2)]] var<uniform> x_11 : buf2;
+@group(0) @binding(2) var<uniform> x_11 : buf2;
 
-[[group(0), binding(1)]] var<uniform> x_13 : buf1;
+@group(0) @binding(1) var<uniform> x_13 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -57,11 +57,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.wgsl
index ed5b89a..76a7c6f 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
@@ -8,17 +8,17 @@
   zero : i32;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(2)]] var<uniform> x_8 : buf2;
+@group(0) @binding(2) var<uniform> x_8 : buf2;
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -54,11 +54,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.wgsl
index 7418f6e..a213691 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
@@ -6,7 +6,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 fn main_1() {
   var a : f32;
@@ -35,11 +35,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.wgsl
index c40a4c6..3dc8f01 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -29,11 +29,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.wgsl
index 04d4193..04e7a73 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -29,11 +29,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.wgsl
index dad9c78..c72ff22 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.wgsl
@@ -4,7 +4,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 fn main_1() {
   var x_9 : array<i32, 1>;
@@ -32,11 +32,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.wgsl
index 9d610146..af3e4e9 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.wgsl
@@ -7,7 +7,7 @@
   one : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -57,11 +57,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.wgsl
index 8e1fa65..41448e1 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 2>;
+type Arr_1 = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+@group(0) @binding(1) var<uniform> x_7 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -70,12 +70,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_v1_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_v1);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.wgsl
index 149bcab..de85f78 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 4>;
+type Arr = @stride(16) array<i32, 4>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -75,11 +75,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.wgsl
index 708e046..8fcba9c 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.wgsl
@@ -6,7 +6,7 @@
   one : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_11 : buf0;
+@group(0) @binding(0) var<uniform> x_11 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -77,11 +77,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl
index d902f3f..25b4aee 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
@@ -6,7 +6,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf1;
+@group(0) @binding(0) var<uniform> x_5 : buf1;
 
 fn main_1() {
   let x_22 : i32 = x_5.x_GLF_uniform_int_values[0];
@@ -37,11 +37,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.wgsl
index 5fbcdd9..8d05b1d 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
@@ -16,13 +16,13 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+@group(0) @binding(1) var<uniform> x_7 : buf1;
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
-[[group(0), binding(2)]] var<uniform> x_11 : buf2;
+@group(0) @binding(2) var<uniform> x_11 : buf2;
 
 fn main_1() {
   var i : i32;
@@ -58,12 +58,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.wgsl
index 4f29ab6..d1c4406 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.wgsl
@@ -1,20 +1,20 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_11 : buf1;
+@group(0) @binding(1) var<uniform> x_11 : buf1;
 
 fn func_() -> vec2<f32> {
   var v : vec2<f32>;
@@ -50,11 +50,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.wgsl
index 97c49ab..5e613ad 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<i32, 7>;
+type Arr = @stride(16) array<i32, 7>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 3>;
+type Arr_1 = @stride(16) array<f32, 3>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -218,11 +218,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.wgsl
index 3e5c910..5dac995 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.wgsl
@@ -2,7 +2,7 @@
   one : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -179,11 +179,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.wgsl
index 2794ec5..7428919 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 5>;
+type Arr = @stride(16) array<f32, 5>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -44,11 +44,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.wgsl
index d74e3c2..b903685 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
@@ -6,7 +6,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 fn main_1() {
   var v : vec4<f32>;
@@ -24,11 +24,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.wgsl
index b2a778b..5229944 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -48,11 +48,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.wgsl
index 27faee3..776fce0 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.wgsl
@@ -2,17 +2,17 @@
   v1 : vec2<f32>;
 };
 
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(1)]] var<uniform> x_5 : buf1;
+@group(0) @binding(1) var<uniform> x_5 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 fn main_1() {
   let x_29 : f32 = x_5.v1.x;
@@ -40,11 +40,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.wgsl
index b48fce6..530c5ac 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 fn main_1() {
   var x_29 : bool;
@@ -28,11 +28,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.wgsl
index 8b99a56..a683057 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 6>;
+type Arr = @stride(16) array<i32, 6>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -101,11 +101,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.wgsl
index 75a7f4c..133ac57 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -69,12 +69,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.wgsl
index 30873ed..58cee81 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.wgsl
@@ -6,7 +6,7 @@
   one : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -77,11 +77,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.wgsl
index 47c21ce..f0082cf 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.wgsl
@@ -8,9 +8,9 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+@group(0) @binding(1) var<uniform> x_9 : buf1;
 
 fn main_1() {
   var i : i32;
@@ -51,11 +51,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.wgsl
index 3fd60e5..0cf0b49 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.wgsl
@@ -2,7 +2,7 @@
   sequence : vec4<i32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -52,11 +52,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.wgsl
index 4480579..8100eda 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -30,11 +30,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.wgsl
index 36eceec..a9510ff 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.wgsl
@@ -2,7 +2,7 @@
   two : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -38,11 +38,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.wgsl
index 99296b4..0d58bc3 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.wgsl
@@ -2,7 +2,7 @@
   two : u32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -20,11 +20,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.wgsl
index 98b5b4c..b58a8b9 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -49,11 +49,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.wgsl
index 66ce6c9..7c308e3 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.wgsl
@@ -2,7 +2,7 @@
   three : f32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -20,11 +20,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.wgsl
index 2336efa..a92ccaf 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 5>;
+type Arr = @stride(16) array<i32, 5>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -86,11 +86,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.wgsl
index 2ac7c5e..b5acf65 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.wgsl
@@ -1,20 +1,20 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 1>;
+type Arr_1 = @stride(16) array<i32, 1>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
 fn main_1() {
   var a : f32;
@@ -36,11 +36,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.wgsl
index a54df57..65a65c4 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.wgsl
@@ -2,7 +2,7 @@
   one : f32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -24,11 +24,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.wgsl
index 8395eda..cd777be 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.wgsl
@@ -2,7 +2,7 @@
   three : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -29,12 +29,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.wgsl
index 318f16a..68db28f 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -25,11 +25,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.wgsl
index a903014..6b82628 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.wgsl
@@ -2,7 +2,7 @@
   one : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -26,11 +26,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.wgsl
index 2b24d07..648957e 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -44,12 +44,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.wgsl
index a3418a9..853116d 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+@group(0) @binding(1) var<uniform> x_9 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -76,11 +76,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.wgsl
index 2e51071..99d7851 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> g : i32;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -45,11 +45,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.wgsl
index 0814ab2..9875dc8 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 4>;
+type Arr = @stride(16) array<f32, 4>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -58,11 +58,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.wgsl
index cc2ab67..878b143 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.wgsl
@@ -2,7 +2,7 @@
   one : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -51,11 +51,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.wgsl
index a52a30a..71aaee0 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.wgsl
@@ -15,11 +15,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.wgsl
index ba81461..5656cd6 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.wgsl
@@ -2,7 +2,7 @@
   numbers : array<f32, 3>;
 };
 
-type Arr = [[stride(16)]] array<f32, 5>;
+type Arr = @stride(16) array<f32, 5>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
@@ -16,19 +16,19 @@
   oneVec : vec2<f32>;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+@group(0) @binding(1) var<uniform> x_7 : buf1;
 
-[[group(0), binding(2)]] var<uniform> x_9 : buf2;
+@group(0) @binding(2) var<uniform> x_9 : buf2;
 
-[[group(0), binding(3)]] var<uniform> x_12 : buf3;
+@group(0) @binding(3) var<uniform> x_12 : buf3;
 
-[[group(0), binding(0)]] var<uniform> x_15 : buf0;
+@group(0) @binding(0) var<uniform> x_15 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -78,11 +78,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.wgsl
index 5174f36..be7e4b8 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<f32, 3>;
+type Arr = @stride(16) array<f32, 3>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
@@ -8,19 +8,19 @@
   resolution : vec2<f32>;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(2)]] var<uniform> x_8 : buf2;
+@group(0) @binding(2) var<uniform> x_8 : buf2;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 fn main_1() {
   var f : f32;
@@ -47,11 +47,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.wgsl
index 0397e5b..47f7183 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_11 : buf1;
+@group(0) @binding(1) var<uniform> x_11 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -91,11 +91,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl
index 210236b..a95343e 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
@@ -8,7 +8,7 @@
   zero : f32;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
@@ -16,11 +16,11 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_5 : buf1;
+@group(0) @binding(1) var<uniform> x_5 : buf1;
 
-[[group(0), binding(2)]] var<uniform> x_7 : buf2;
+@group(0) @binding(2) var<uniform> x_7 : buf2;
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 fn main_1() {
   var i : i32;
@@ -84,11 +84,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.wgsl
index c1757e6..496f779 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -27,12 +27,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.wgsl
index 0ee891d..0f1c0bb 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.wgsl
@@ -6,15 +6,15 @@
   v1 : vec2<f32>;
 };
 
-type Arr = [[stride(16)]] array<i32, 5>;
+type Arr = @stride(16) array<i32, 5>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -153,11 +153,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.wgsl
index 891a913..49874e8 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.wgsl
@@ -18,11 +18,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.wgsl
index d2a1597..a0ae7b1 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
@@ -12,11 +12,11 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+@group(0) @binding(1) var<uniform> x_7 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 fn main_1() {
   var f : f32;
@@ -40,12 +40,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.wgsl
index cb2e891..7e44271 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 fn main_1() {
   var x_24 : vec4<f32>;
@@ -19,11 +19,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.wgsl
index 97b93bc..f73e0ea 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<f32, 1>;
+type Arr = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
@@ -8,9 +8,9 @@
   v1 : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -46,11 +46,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.wgsl
index 8691174..a2cb24f 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.wgsl
@@ -2,13 +2,13 @@
   data : i32;
 };
 
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -85,11 +85,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.wgsl
index ce444a3..2255ea4 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.wgsl
@@ -1,26 +1,26 @@
-type Arr = [[stride(16)]] array<u32, 1>;
+type Arr = @stride(16) array<u32, 1>;
 
 struct buf0 {
   x_GLF_uniform_uint_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-type Arr_2 = [[stride(16)]] array<f32, 3>;
+type Arr_2 = @stride(16) array<f32, 3>;
 
 struct buf2 {
   x_GLF_uniform_float_values : Arr_2;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
-[[group(0), binding(2)]] var<uniform> x_10 : buf2;
+@group(0) @binding(2) var<uniform> x_10 : buf2;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -51,11 +51,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl
index b2e8650..eb55b50 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 3>;
+type Arr = @stride(16) array<f32, 3>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 4>;
+type Arr_1 = @stride(16) array<i32, 4>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -84,11 +84,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl
index f99a3bc..a353c90 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<i32, 4>;
+type Arr = @stride(16) array<i32, 4>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -83,11 +83,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.wgsl
index 4aa9d43..f74488d 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.wgsl
@@ -2,7 +2,7 @@
   one : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -31,11 +31,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.wgsl
index 00262c5..b301222 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -51,11 +51,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.wgsl
index 4c3b34b..18e91bc 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 4>;
+type Arr = @stride(16) array<i32, 4>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -52,11 +52,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.wgsl
index 36afb2f..d5df523 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 fn main_1() {
   var a : i32;
@@ -35,11 +35,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.wgsl
index c80f332..5cd4d7e 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 4>;
+type Arr = @stride(16) array<i32, 4>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -55,11 +55,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.wgsl
index 240d9d9..d54fa3d 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.wgsl
@@ -1,28 +1,28 @@
-type Arr = [[stride(16)]] array<u32, 1>;
+type Arr = @stride(16) array<u32, 1>;
 
 struct buf2 {
   x_GLF_uniform_uint_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-type Arr_2 = [[stride(16)]] array<i32, 2>;
+type Arr_2 = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_2;
 };
 
-[[group(0), binding(2)]] var<uniform> x_6 : buf2;
+@group(0) @binding(2) var<uniform> x_6 : buf2;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 fn main_1() {
   var f : f32;
@@ -45,11 +45,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.wgsl
index 2c1e642..6e1e0ba 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 16>;
+type Arr = @stride(16) array<i32, 16>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -149,11 +149,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.wgsl
index da47422..22314e6 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.wgsl
@@ -2,7 +2,7 @@
   quarter : f32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -29,11 +29,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.wgsl
index 941df15..50fc802 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.wgsl
@@ -2,7 +2,7 @@
   zero : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -27,11 +27,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.wgsl
index 5be7339..d431a77 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.wgsl
@@ -18,11 +18,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.wgsl
index 2cecb75..d7062ee 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.wgsl
@@ -14,11 +14,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.wgsl
index c5a9449..85f68d3 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 3>;
+type Arr_1 = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -55,11 +55,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.wgsl
index 9a7681c..007b027 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.wgsl
@@ -1,20 +1,20 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 2>;
+type Arr_1 = @stride(16) array<f32, 2>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
 fn main_1() {
   var v1 : vec2<f32>;
@@ -50,11 +50,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.wgsl
index f3f84a4..549b310 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.wgsl
@@ -1,28 +1,28 @@
-type Arr = [[stride(16)]] array<u32, 2>;
+type Arr = @stride(16) array<u32, 2>;
 
 struct buf1 {
   x_GLF_uniform_uint_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf2 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-type Arr_2 = [[stride(16)]] array<i32, 2>;
+type Arr_2 = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_2;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(2)]] var<uniform> x_8 : buf2;
+@group(0) @binding(2) var<uniform> x_8 : buf2;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_12 : buf0;
+@group(0) @binding(0) var<uniform> x_12 : buf0;
 
 fn main_1() {
   var a : u32;
@@ -51,11 +51,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.wgsl
index 814eae3..854255f 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 3>;
+type Arr = @stride(16) array<f32, 3>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 4>;
+type Arr_1 = @stride(16) array<i32, 4>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -103,11 +103,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.wgsl
index 8551242..4440fe2 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.wgsl
@@ -4,13 +4,13 @@
   c : i32;
 };
 
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -52,11 +52,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.wgsl
index d154e28..54c80fc 100644
--- a/test/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -87,12 +87,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.wgsl
index 765114d..6f1e3d1 100644
--- a/test/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.wgsl
@@ -6,9 +6,9 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<storage, read_write> x_4 : theSSBO;
+@group(0) @binding(0) var<storage, read_write> x_4 : theSSBO;
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
 fn main_1() {
   var i : i32;
@@ -101,7 +101,7 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   main_1();
 }
diff --git a/test/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.wgsl
index c416382..8a5dbfb 100644
--- a/test/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -65,11 +65,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.wgsl
index 549895b..0be3eee 100644
--- a/test/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -44,12 +44,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.wgsl
index 6981641..d043efa 100644
--- a/test/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.wgsl
@@ -32,12 +32,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.wgsl
index 8ff5ce8..724ac94 100644
--- a/test/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -39,12 +39,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.wgsl
index 83948ce..12ab32e 100644
--- a/test/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.wgsl
@@ -50,12 +50,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.wgsl
index 926c273..8d86b69 100644
--- a/test/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.wgsl
@@ -33,12 +33,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.wgsl
index c2fa551..e826d0a 100644
--- a/test/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.wgsl
@@ -43,11 +43,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.wgsl
index 45e2a65..9784c8b 100644
--- a/test/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -64,11 +64,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.wgsl
index 2c077a3..60ed7c9 100644
--- a/test/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.wgsl
@@ -24,12 +24,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.wgsl b/test/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.wgsl
index 82a7bae..1267e46 100644
--- a/test/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.wgsl
@@ -2,7 +2,7 @@
   out_data : i32;
 };
 
-[[group(0), binding(0)]] var<storage, read_write> x_4 : theSSBO;
+@group(0) @binding(0) var<storage, read_write> x_4 : theSSBO;
 
 fn main_1() {
   var x_30 : mat2x2<f32>;
@@ -37,7 +37,7 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   main_1();
 }
diff --git a/test/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.wgsl
index c02f2ce..b468753 100644
--- a/test/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -73,12 +73,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.wgsl
index 3817d55..bf208d3 100644
--- a/test/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.wgsl
@@ -31,11 +31,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(color);
diff --git a/test/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.wgsl b/test/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.wgsl
index 1478c3b..f8bd3f3 100644
--- a/test/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.wgsl
@@ -17,11 +17,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.wgsl
index 869d8a9..0eff67b 100644
--- a/test/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.wgsl
@@ -31,12 +31,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.wgsl
index 64ef616..1eefb0f 100644
--- a/test/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -77,12 +77,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl
index 2fffb92..2285d25 100644
--- a/test/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -50,12 +50,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.wgsl
index 999c03a..b57810b 100644
--- a/test/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.wgsl
@@ -2,7 +2,7 @@
   one : f32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -139,11 +139,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/if-and-switch/0.wgsl b/test/vk-gl-cts/graphicsfuzz/if-and-switch/0.wgsl
index 7948d49..58d409d 100644
--- a/test/vk-gl-cts/graphicsfuzz/if-and-switch/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/if-and-switch/0.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -37,11 +37,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.wgsl b/test/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.wgsl
index 944e589..751210a 100644
--- a/test/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -261,12 +261,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.wgsl b/test/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.wgsl
index 8d4edc0..b98eed5 100644
--- a/test/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -100,11 +100,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.wgsl
index 132e8f0..10bf29a 100644
--- a/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.wgsl
@@ -34,12 +34,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.wgsl
index 2002e51..c8a6e22 100644
--- a/test/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -73,11 +73,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.wgsl
index b8234b5..f4302e5 100644
--- a/test/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.wgsl
@@ -37,11 +37,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.wgsl b/test/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.wgsl
index eb27e35..14c39b0 100644
--- a/test/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.wgsl
@@ -6,7 +6,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -80,11 +80,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.wgsl b/test/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.wgsl
index ee6e11e..b582c1b 100644
--- a/test/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.wgsl
@@ -25,12 +25,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.wgsl
index 03312ac..235bcc2 100644
--- a/test/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> gv : vec4<f32>;
 
@@ -28,11 +28,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.wgsl
index 99c613e..7dbb3e0 100644
--- a/test/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.wgsl
@@ -11,11 +11,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl b/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl
index a1058d6..599f7fb 100644
--- a/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -61,12 +61,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.wgsl
index f37535c..e5ed27a 100644
--- a/test/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.wgsl
@@ -31,12 +31,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.wgsl
index 515f38a..ae18c57 100644
--- a/test/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 fn main_1() {
   var i : i32;
@@ -34,11 +34,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.wgsl b/test/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.wgsl
index 1921a1c..0f6d9e5 100644
--- a/test/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -109,11 +109,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.wgsl
index ac98e18..a1432ca 100644
--- a/test/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -36,12 +36,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.wgsl
index 3a6e54e..428f9a3 100644
--- a/test/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 fn main_1() {
   var x_10 : array<i32, 1>;
@@ -37,11 +37,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.wgsl
index c9c712e..610bced 100644
--- a/test/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -43,12 +43,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.wgsl
index 8e2cc4c..f16375f 100644
--- a/test/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.wgsl
@@ -49,11 +49,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.wgsl b/test/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.wgsl
index def4326..3be5acb 100644
--- a/test/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.wgsl
@@ -63,11 +63,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.wgsl
index dc15751..39c139e 100644
--- a/test/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -101,11 +101,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.wgsl b/test/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.wgsl
index ff67040..96f0064 100644
--- a/test/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.wgsl
@@ -6,7 +6,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 fn main_1() {
   loop {
@@ -89,12 +89,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.wgsl
index 6af14a0..077959b 100644
--- a/test/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> gv : f32;
 
@@ -66,12 +66,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.wgsl
index 3f8d86d..23403a2 100644
--- a/test/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.wgsl
@@ -21,11 +21,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.wgsl
index df653e8..f45ccdd 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> map : array<i32, 256>;
 
@@ -335,12 +335,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.wgsl
index 532521f..fd017fb 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.wgsl
@@ -2,7 +2,7 @@
   resolution : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -184,12 +184,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.wgsl
index ec923c0..8ab78ee 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.wgsl
@@ -2,7 +2,7 @@
   resolution : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -189,12 +189,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite2/0.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-composite2/0.wgsl
index 2081172..bbc0147 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-composite2/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite2/0.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -43,12 +43,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite2/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-composite2/1.wgsl
index f104dd3..eace056 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-composite2/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite2/1.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -44,12 +44,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composites/0.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-composites/0.wgsl
index 57ef309..e9cce2e 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-composites/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composites/0.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -81,12 +81,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composites/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-composites/1.wgsl
index 57c0006..0ee298a 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-composites/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composites/1.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -86,12 +86,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.wgsl
index 8400b67..b09ced5 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> map : array<i32, 256>;
 
@@ -344,12 +344,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.wgsl
index 4d73d20..3d8680e 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_20 : buf0;
+@group(0) @binding(0) var<uniform> x_20 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -100,12 +100,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.wgsl
index 1d54a26..1deee30 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_20 : buf0;
+@group(0) @binding(0) var<uniform> x_20 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -101,12 +101,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.wgsl
index e41e03c..12607ba 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.wgsl
@@ -10,13 +10,13 @@
 
 var<private> temp : array<i32, 10>;
 
-[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+@group(0) @binding(0) var<uniform> x_28 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_32 : buf1;
+@group(0) @binding(1) var<uniform> x_32 : buf1;
 
 fn merge_i1_i1_i1_(from : ptr<function, i32>, mid : ptr<function, i32>, to : ptr<function, i32>) {
   var k : i32;
@@ -299,12 +299,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.wgsl
index 39cf669..2e55508 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.wgsl
@@ -10,13 +10,13 @@
 
 var<private> temp : array<i32, 10>;
 
-[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+@group(0) @binding(0) var<uniform> x_28 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_32 : buf1;
+@group(0) @binding(1) var<uniform> x_32 : buf1;
 
 fn merge_i1_i1_i1_(from : ptr<function, i32>, mid : ptr<function, i32>, to : ptr<function, i32>) {
   var k : i32;
@@ -303,12 +303,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.wgsl
index 7899f1b..2a098b0 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.wgsl
@@ -8,9 +8,9 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -106,12 +106,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.wgsl
index 6d8202a..78974c6 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.wgsl
@@ -8,9 +8,9 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -106,12 +106,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.wgsl
index 03f5d4a..c38f746 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.wgsl
@@ -10,13 +10,13 @@
 
 var<private> temp : array<i32, 10>;
 
-[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+@group(0) @binding(0) var<uniform> x_28 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_32 : buf1;
+@group(0) @binding(1) var<uniform> x_32 : buf1;
 
 fn merge_i1_i1_i1_(from : ptr<function, i32>, mid : ptr<function, i32>, to : ptr<function, i32>) {
   var k : i32;
@@ -303,12 +303,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl
index 0c19b19..333d424 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl
@@ -644,11 +644,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.wgsl
index 62fb33d..f8056fa 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -84,12 +84,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.wgsl
index 913b37e..016470f 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -47,12 +47,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.wgsl
index 8954930..310e34e 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -44,12 +44,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.wgsl
index 6ee1e3f..e666f6f 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.wgsl
@@ -8,9 +8,9 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+@group(0) @binding(1) var<uniform> x_9 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+@group(0) @binding(0) var<uniform> x_13 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -126,12 +126,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.wgsl
index ce2fc53..9564b95 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.wgsl
@@ -8,9 +8,9 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+@group(0) @binding(1) var<uniform> x_9 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+@group(0) @binding(0) var<uniform> x_13 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -183,12 +183,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.wgsl
index 502e8b7..dba5558 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -50,12 +50,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.wgsl
index 0f6f3db..188c3b9 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -57,12 +57,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.wgsl
index 3626dd3..a57be40 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.wgsl
@@ -2,7 +2,7 @@
   resolution : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -184,12 +184,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.wgsl
index a2c109a..f652923 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> map : array<i32, 256>;
 
@@ -379,12 +379,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.wgsl
index 1012c1f..26ad9ba 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> map : array<i32, 256>;
 
@@ -341,12 +341,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.wgsl
index 633a6d5..322b118 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -328,12 +328,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.wgsl
index bafcb6d..b480a86 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -325,12 +325,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.wgsl
index 5b0e2fe..066c0ac 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.wgsl
@@ -6,7 +6,7 @@
 
 var<private> temp : array<i32, 10>;
 
-[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+@group(0) @binding(0) var<uniform> x_28 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -293,12 +293,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.wgsl
index 2f33bdb..a61c509 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.wgsl
@@ -6,7 +6,7 @@
 
 var<private> temp : array<i32, 10>;
 
-[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+@group(0) @binding(0) var<uniform> x_28 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -308,12 +308,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.wgsl
index f9628e7..c1fb481 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.wgsl
@@ -6,7 +6,7 @@
 
 var<private> temp : array<i32, 10>;
 
-[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+@group(0) @binding(0) var<uniform> x_28 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -401,12 +401,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.wgsl
index 1007714..4b36bd5 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.wgsl
@@ -6,7 +6,7 @@
 
 var<private> temp : array<i32, 10>;
 
-[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+@group(0) @binding(0) var<uniform> x_28 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -400,12 +400,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.wgsl
index c2695fb..8c64b73 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.wgsl
@@ -6,7 +6,7 @@
 
 var<private> temp : array<i32, 10>;
 
-[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+@group(0) @binding(0) var<uniform> x_28 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -291,12 +291,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.wgsl
index 90086b8..ac0f111 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.wgsl
@@ -6,7 +6,7 @@
 
 var<private> temp : array<i32, 10>;
 
-[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+@group(0) @binding(0) var<uniform> x_28 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -288,12 +288,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.wgsl
index 6c17b27..66ff6af 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -92,12 +92,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.wgsl
index 6821821..7f55dec 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -95,12 +95,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.wgsl
index 6afaa07..49dd9ad 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -92,12 +92,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.wgsl
index 12209a3..a7bed31 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -96,12 +96,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.wgsl
index a28de2c..4f2ceb5 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -93,12 +93,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.wgsl
index af34df2..67a46a0 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -93,12 +93,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.wgsl
index fdca5df..6bceeee 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -86,12 +86,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.wgsl
index de4a473..ddb4094 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+@group(0) @binding(0) var<uniform> x_13 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -71,12 +71,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.wgsl
index 8ec24b1..9300937 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+@group(0) @binding(0) var<uniform> x_13 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -77,12 +77,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.wgsl
index bb41ccf..339dc23 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.wgsl
@@ -10,7 +10,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_32 : buf0;
+@group(0) @binding(0) var<uniform> x_32 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -243,12 +243,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.wgsl
index 843a743..e30253e 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.wgsl
@@ -10,7 +10,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_32 : buf0;
+@group(0) @binding(0) var<uniform> x_32 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -243,12 +243,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.wgsl
index 9c26329..45b69b1 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -90,12 +90,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.wgsl
index 2f0c558..31783ae 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -87,12 +87,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl
index 76d569e..fb898a5 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl
@@ -642,11 +642,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.wgsl
index dcb31b3..5e42687 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.wgsl
@@ -8,7 +8,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -964,12 +964,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl
index 0016d4c..fa23bb3 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl
@@ -253,11 +253,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl
index 4d268f6..a546ac5 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl
@@ -265,12 +265,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.wgsl
index 1f17892..571ad7a 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.wgsl
@@ -10,7 +10,7 @@
 
 var<private> tree_1 : array<BST, 10>;
 
-[[group(0), binding(0)]] var<uniform> x_16 : buf0;
+@group(0) @binding(0) var<uniform> x_16 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -281,11 +281,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl
index 19d6c9d..495c99b 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl
@@ -253,11 +253,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl
index 80872f4..3831d37 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl
@@ -16,7 +16,7 @@
 
 var<private> tree : array<BST, 10>;
 
-[[group(0), binding(0)]] var<uniform> x_50 : buf0;
+@group(0) @binding(0) var<uniform> x_50 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -307,11 +307,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.wgsl
index e1656b7..1eb7ba1 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -55,12 +55,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.wgsl
index eaaaea2..9c0e908 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.wgsl
@@ -6,9 +6,9 @@
   resolution : vec2<f32>;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -205,12 +205,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.wgsl
index b30f116..c51aa77 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.wgsl
@@ -2,7 +2,7 @@
   resolution : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+@group(0) @binding(0) var<uniform> x_13 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -103,12 +103,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.wgsl
index 7520419..c089d3b 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.wgsl
@@ -6,13 +6,13 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+@group(0) @binding(0) var<uniform> x_13 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_20 : buf1;
+@group(0) @binding(1) var<uniform> x_20 : buf1;
 
 fn compute_value_f1_f1_(limit : ptr<function, f32>, thirty_two : ptr<function, f32>) -> f32 {
   var result : f32;
@@ -119,12 +119,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.wgsl
index 848cfcd..f0d8b20 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.wgsl
@@ -2,7 +2,7 @@
   resolution : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -106,12 +106,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.wgsl
index 046ec18..c1ee8ba 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.wgsl
@@ -6,11 +6,11 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_16 : buf1;
+@group(0) @binding(1) var<uniform> x_16 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -120,12 +120,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.wgsl
index f3cb6eb..c97f756 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.wgsl
@@ -6,11 +6,11 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+@group(0) @binding(0) var<uniform> x_13 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_19 : buf1;
+@group(0) @binding(1) var<uniform> x_19 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -135,12 +135,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.wgsl
index 3bafe44..ebbb314 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.wgsl
@@ -2,7 +2,7 @@
   resolution : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+@group(0) @binding(0) var<uniform> x_13 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -108,12 +108,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.wgsl
index eca86f4..5fd4664 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.wgsl
@@ -8,7 +8,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_34 : buf0;
+@group(0) @binding(0) var<uniform> x_34 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -327,12 +327,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.wgsl
index 30d100d..f58028b 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -331,12 +331,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.wgsl
index 13e6965..b471144 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.wgsl
@@ -6,7 +6,7 @@
 
 var<private> temp : array<i32, 10>;
 
-[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+@group(0) @binding(0) var<uniform> x_28 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -303,12 +303,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.wgsl
index a800ba9..d6dc1ae 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.wgsl
@@ -10,7 +10,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_34 : buf0;
+@group(0) @binding(0) var<uniform> x_34 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -267,12 +267,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.wgsl
index c3d31af..cf9871e 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.wgsl
@@ -12,7 +12,7 @@
 
 var<private> x_GLF_pos : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_34 : buf0;
+@group(0) @binding(0) var<uniform> x_34 : buf0;
 
 var<private> frag_color : vec4<f32>;
 
@@ -249,14 +249,14 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   frag_color_1 : vec4<f32>;
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
 };
 
-[[stage(vertex)]]
-fn main([[location(0)]] x_GLF_pos_param : vec4<f32>) -> main_out {
+@stage(vertex)
+fn main(@location(0) x_GLF_pos_param : vec4<f32>) -> main_out {
   x_GLF_pos = x_GLF_pos_param;
   main_1();
   return main_out(frag_color, gl_Position);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.wgsl
index b7d3ed1..99980d9 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.wgsl
@@ -9,12 +9,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[location(0)]] frag_color_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@location(0) frag_color_param : vec4<f32>) -> main_out {
   frag_color = frag_color_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl
index 7a24166..71d617e 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl
@@ -16,9 +16,9 @@
 
 var<private> x_GLF_pos : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_33 : buf0;
+@group(0) @binding(0) var<uniform> x_33 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_36 : buf1;
+@group(0) @binding(1) var<uniform> x_36 : buf1;
 
 var<private> frag_color : vec4<f32>;
 
@@ -260,14 +260,14 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   frag_color_1 : vec4<f32>;
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
 };
 
-[[stage(vertex)]]
-fn main([[location(0)]] x_GLF_pos_param : vec4<f32>) -> main_out {
+@stage(vertex)
+fn main(@location(0) x_GLF_pos_param : vec4<f32>) -> main_out {
   x_GLF_pos = x_GLF_pos_param;
   main_1();
   return main_out(frag_color, gl_Position);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.wgsl
index a6b6c61..877d1cb 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.wgsl
@@ -12,7 +12,7 @@
 
 var<private> x_GLF_pos : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_34 : buf0;
+@group(0) @binding(0) var<uniform> x_34 : buf0;
 
 var<private> frag_color : vec4<f32>;
 
@@ -247,14 +247,14 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   frag_color_1 : vec4<f32>;
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
 };
 
-[[stage(vertex)]]
-fn main([[location(0)]] x_GLF_pos_param : vec4<f32>) -> main_out {
+@stage(vertex)
+fn main(@location(0) x_GLF_pos_param : vec4<f32>) -> main_out {
   x_GLF_pos = x_GLF_pos_param;
   main_1();
   return main_out(frag_color, gl_Position);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.wgsl
index 89fc186..ad578ea 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.wgsl
@@ -12,7 +12,7 @@
 
 var<private> x_GLF_pos : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_34 : buf0;
+@group(0) @binding(0) var<uniform> x_34 : buf0;
 
 var<private> frag_color : vec4<f32>;
 
@@ -253,14 +253,14 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   frag_color_1 : vec4<f32>;
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
 };
 
-[[stage(vertex)]]
-fn main([[location(0)]] x_GLF_pos_param : vec4<f32>) -> main_out {
+@stage(vertex)
+fn main(@location(0) x_GLF_pos_param : vec4<f32>) -> main_out {
   x_GLF_pos = x_GLF_pos_param;
   main_1();
   return main_out(frag_color, gl_Position);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.wgsl
index 8f8de06..fe18daa 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.wgsl
@@ -16,9 +16,9 @@
 
 var<private> x_GLF_pos : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_34 : buf1;
+@group(0) @binding(1) var<uniform> x_34 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_37 : buf0;
+@group(0) @binding(0) var<uniform> x_37 : buf0;
 
 var<private> frag_color : vec4<f32>;
 
@@ -258,14 +258,14 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   frag_color_1 : vec4<f32>;
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
 };
 
-[[stage(vertex)]]
-fn main([[location(0)]] x_GLF_pos_param : vec4<f32>) -> main_out {
+@stage(vertex)
+fn main(@location(0) x_GLF_pos_param : vec4<f32>) -> main_out {
   x_GLF_pos = x_GLF_pos_param;
   main_1();
   return main_out(frag_color, gl_Position);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.wgsl
index 518cf6b..448c4ce 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_20 : buf0;
+@group(0) @binding(0) var<uniform> x_20 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -113,12 +113,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.wgsl
index 697b608..c2deab3 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_24 : buf0;
+@group(0) @binding(0) var<uniform> x_24 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -130,12 +130,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.wgsl
index 357f622..6aa6b53 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_24 : buf0;
+@group(0) @binding(0) var<uniform> x_24 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -121,12 +121,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.wgsl
index 048a25e..2c60f19 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.wgsl
@@ -2,7 +2,7 @@
   resolution : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_15 : buf0;
+@group(0) @binding(0) var<uniform> x_15 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -150,12 +150,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.wgsl
index 12eb944..1f81ee1 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_24 : buf0;
+@group(0) @binding(0) var<uniform> x_24 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -121,12 +121,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.wgsl
index 6b3a7b0..7ba773c 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_17 : buf0;
+@group(0) @binding(0) var<uniform> x_17 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -115,12 +115,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.wgsl
index acb40bf..a3eecf8 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.wgsl
@@ -6,13 +6,13 @@
   resolution : vec2<f32>;
 };
 
-[[group(0), binding(1)]] var<uniform> x_11 : buf1;
+@group(0) @binding(1) var<uniform> x_11 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_19 : buf0;
+@group(0) @binding(0) var<uniform> x_19 : buf0;
 
 fn pointInTriangle_vf2_vf2_vf2_vf2_(p : ptr<function, vec2<f32>>, a : ptr<function, vec2<f32>>, b : ptr<function, vec2<f32>>, c : ptr<function, vec2<f32>>) -> i32 {
   var x_78 : f32;
@@ -159,12 +159,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-array-index/0.wgsl b/test/vk-gl-cts/graphicsfuzz/struct-array-index/0.wgsl
index f28293a..5540bb1 100644
--- a/test/vk-gl-cts/graphicsfuzz/struct-array-index/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/struct-array-index/0.wgsl
@@ -10,7 +10,7 @@
 
 var<private> struct_array : array<struct_base, 3>;
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -39,11 +39,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.wgsl
index a46cd46..646af01 100644
--- a/test/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.wgsl
@@ -7,7 +7,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -40,11 +40,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.wgsl
index 0ea59c0..703abb7 100644
--- a/test/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.wgsl
@@ -8,7 +8,7 @@
 
 var<private> x_3 : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_5 : S;
+@group(0) @binding(0) var<uniform> x_5 : S;
 
 fn main_1() {
   let x_20 : vec4<f32> = x_5.field0;
@@ -20,11 +20,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_3_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_3);
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.wgsl
index 1fe3437..148481e 100644
--- a/test/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -24,11 +24,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.wgsl
index 027c6a7..121453e 100644
--- a/test/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.wgsl
@@ -2,7 +2,7 @@
   zero : f32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -43,11 +43,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.wgsl
index a458da5..893499c 100644
--- a/test/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -62,11 +62,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.wgsl b/test/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.wgsl
index cdab78b..95517da 100644
--- a/test/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.wgsl
@@ -14,11 +14,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.wgsl
index 7c355bb..718f257 100644
--- a/test/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -62,11 +62,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.wgsl b/test/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.wgsl
index cf0d932..6199c0e 100644
--- a/test/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.wgsl
@@ -29,12 +29,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.wgsl
index d9ba1c9..f5a69b7 100644
--- a/test/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.wgsl
@@ -6,7 +6,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 fn main_1() {
   var odd_index : i32;
@@ -97,12 +97,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.wgsl
index 73c71d0..3588452 100644
--- a/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-type RTArr = [[stride(4)]] array<u32>;
+type RTArr = @stride(4) array<u32>;
 
 struct doesNotMatter {
   x_compute_data : RTArr;
@@ -10,9 +10,9 @@
 
 var<private> GLF_live2gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_9 : buf0;
+@group(0) @binding(1) var<uniform> x_9 : buf0;
 
-[[group(0), binding(0)]] var<storage, read_write> x_12 : doesNotMatter;
+@group(0) @binding(0) var<storage, read_write> x_12 : doesNotMatter;
 
 fn main_1() {
   var GLF_live2_looplimiter1 : i32;
@@ -91,7 +91,7 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 18, 6)]]
+@stage(compute) @workgroup_size(1, 18, 6)
 fn main() {
   main_1();
 }
diff --git a/test/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.wgsl b/test/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.wgsl
index 3177b79..e307b1e 100644
--- a/test/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.wgsl
@@ -2,7 +2,7 @@
   matrix_a_uni : mat4x4<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -57,11 +57,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.wgsl b/test/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.wgsl
index 027fc0f..c2ae08c 100644
--- a/test/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.wgsl
@@ -7,7 +7,7 @@
   bbbb : vec4<bool>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -67,11 +67,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.wgsl
index a5541a2..6fd343d 100644
--- a/test/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.wgsl
@@ -56,11 +56,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.wgsl
index b68fb06..fff1f46 100644
--- a/test/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -80,12 +80,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.wgsl
index 21c6a7b..e38b6c6 100644
--- a/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.wgsl
@@ -1,10 +1,10 @@
-type RTArr = [[stride(4)]] array<f32>;
+type RTArr = @stride(4) array<f32>;
 
 struct doesNotMatter {
   x_compute_data : RTArr;
 };
 
-[[group(0), binding(0)]] var<storage, read_write> x_9 : doesNotMatter;
+@group(0) @binding(0) var<storage, read_write> x_9 : doesNotMatter;
 
 fn nb_mod_() -> f32 {
   var s : f32;
@@ -55,7 +55,7 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   main_1();
 }
diff --git a/test/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl b/test/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl
index 2124377..4ac1a23 100644
--- a/test/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl
@@ -4,7 +4,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 fn main_1() {
   var GLF_dead6index : i32;
@@ -30,11 +30,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.wgsl
index b6321d8..e684e37 100644
--- a/test/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 fn performPartition_() -> i32 {
   var GLF_live0i : i32;
@@ -60,11 +60,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.wgsl
index dd73656..91df442 100644
--- a/test/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -32,11 +32,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.wgsl
index 3b84978..fbd4862 100644
--- a/test/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.wgsl
@@ -22,12 +22,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.wgsl
index aed1aee..5df2899 100644
--- a/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.wgsl
@@ -6,7 +6,7 @@
   resolution : vec2<f32>;
 };
 
-type RTArr = [[stride(4)]] array<i32>;
+type RTArr = @stride(4) array<i32>;
 
 struct doesNotMatter {
   x_compute_data : RTArr;
@@ -14,11 +14,11 @@
 
 var<private> gl_GlobalInvocationID : vec3<u32>;
 
-[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+@group(0) @binding(1) var<uniform> x_10 : buf1;
 
-[[group(0), binding(2)]] var<uniform> x_13 : buf2;
+@group(0) @binding(2) var<uniform> x_13 : buf2;
 
-[[group(0), binding(0)]] var<storage, read_write> x_15 : doesNotMatter;
+@group(0) @binding(0) var<storage, read_write> x_15 : doesNotMatter;
 
 fn main_1() {
   var A : array<f32, 1>;
@@ -135,8 +135,8 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
-fn main([[builtin(global_invocation_id)]] gl_GlobalInvocationID_param : vec3<u32>) {
+@stage(compute) @workgroup_size(1, 1, 1)
+fn main(@builtin(global_invocation_id) gl_GlobalInvocationID_param : vec3<u32>) {
   gl_GlobalInvocationID = gl_GlobalInvocationID_param;
   main_1();
 }
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.wgsl b/test/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.wgsl
index a7740fe..f448ed4 100644
--- a/test/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.wgsl
@@ -4,7 +4,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 fn computeColor_() -> vec3<f32> {
   var x_injected_loop_counter : i32;
@@ -32,11 +32,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.wgsl
index 54af3d3..d4b87d8 100644
--- a/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -35,12 +35,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.wgsl b/test/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.wgsl
index 473428a..6c95054 100644
--- a/test/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.wgsl
@@ -52,11 +52,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl
index e6da47e..2fc3c26 100644
--- a/test/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 fn main_1() {
   var m : i32;
@@ -34,11 +34,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.wgsl b/test/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.wgsl
index 005fa19..4fbd06f 100644
--- a/test/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.wgsl
@@ -38,11 +38,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.wgsl b/test/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.wgsl
index bd4cfad..2606dcd 100644
--- a/test/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.wgsl
@@ -37,11 +37,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.wgsl
index 3761ab1..e5dac5c 100644
--- a/test/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -99,12 +99,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.wgsl b/test/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.wgsl
index 3461a66..83ac163 100644
--- a/test/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.wgsl
@@ -29,11 +29,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.wgsl
index 9770d45..1cb22a3 100644
--- a/test/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 fn main_1() {
   var j : i32;
@@ -35,11 +35,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl
index ad7b1a1..1aded6e 100644
--- a/test/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl
@@ -2,7 +2,7 @@
   injected : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -94,11 +94,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.wgsl
index 086a895..b0aa989 100644
--- a/test/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.wgsl
@@ -15,7 +15,7 @@
 
 var<private> tree_1 : array<BST, 10>;
 
-[[group(0), binding(0)]] var<uniform> x_27 : buf0;
+@group(0) @binding(0) var<uniform> x_27 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -407,12 +407,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.wgsl
index dd18573..dbb226a 100644
--- a/test/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.wgsl
@@ -87,11 +87,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.wgsl
index aabebad..acfcdf2 100644
--- a/test/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -19,11 +19,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.wgsl b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.wgsl
index ef817f7..6b386e9 100644
--- a/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.wgsl
+++ b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(4)]] array<i32, 8>;
+type Arr = @stride(4) array<i32, 8>;
 
 struct In2 {
   data_in2 : Arr;
 };
 
-type Arr_1 = [[stride(4)]] array<i32, 1024>;
+type Arr_1 = @stride(4) array<i32, 1024>;
 
 struct Out0 {
   data_out0 : Arr_1;
 };
 
-type Arr_2 = [[stride(4)]] array<i32, 512>;
+type Arr_2 = @stride(4) array<i32, 512>;
 
-type Arr_3 = [[stride(4)]] array<i32, 512>;
+type Arr_3 = @stride(4) array<i32, 512>;
 
 struct In1 {
   data_in1 : Arr_3;
@@ -24,13 +24,13 @@
 
 var<private> gl_WorkGroupID : vec3<u32>;
 
-[[group(0), binding(2)]] var<storage, read> x_13 : In2;
+@group(0) @binding(2) var<storage, read> x_13 : In2;
 
-[[group(0), binding(3)]] var<storage, read_write> x_15 : Out0;
+@group(0) @binding(3) var<storage, read_write> x_15 : Out0;
 
-[[group(0), binding(1)]] var<storage, read> x_17 : In1;
+@group(0) @binding(1) var<storage, read> x_17 : In1;
 
-[[group(0), binding(0)]] var<storage, read> x_19 : In0;
+@group(0) @binding(0) var<storage, read> x_19 : In0;
 
 fn main_1() {
   var base_index_in : u32;
@@ -109,8 +109,8 @@
   return;
 }
 
-[[stage(compute), workgroup_size(4, 1, 1)]]
-fn main([[builtin(workgroup_id)]] gl_WorkGroupID_param : vec3<u32>) {
+@stage(compute) @workgroup_size(4, 1, 1)
+fn main(@builtin(workgroup_id) gl_WorkGroupID_param : vec3<u32>) {
   gl_WorkGroupID = gl_WorkGroupID_param;
   main_1();
 }
diff --git a/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.wgsl b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.wgsl
index 7665283..646cf0f 100644
--- a/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.wgsl
+++ b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(4)]] array<i32, 8>;
+type Arr = @stride(4) array<i32, 8>;
 
 struct In2 {
   data_in2 : Arr;
 };
 
-type Arr_1 = [[stride(4)]] array<i32, 1024>;
+type Arr_1 = @stride(4) array<i32, 1024>;
 
 struct Out0 {
   data_out0 : Arr_1;
 };
 
-type Arr_2 = [[stride(4)]] array<i32, 512>;
+type Arr_2 = @stride(4) array<i32, 512>;
 
-type Arr_3 = [[stride(4)]] array<i32, 512>;
+type Arr_3 = @stride(4) array<i32, 512>;
 
 struct In0 {
   data_in0 : Arr_3;
@@ -24,13 +24,13 @@
 
 var<private> gl_WorkGroupID : vec3<u32>;
 
-[[group(0), binding(2)]] var<storage, read> x_13 : In2;
+@group(0) @binding(2) var<storage, read> x_13 : In2;
 
-[[group(0), binding(3)]] var<storage, read_write> x_15 : Out0;
+@group(0) @binding(3) var<storage, read_write> x_15 : Out0;
 
-[[group(0), binding(0)]] var<storage, read> x_17 : In0;
+@group(0) @binding(0) var<storage, read> x_17 : In0;
 
-[[group(0), binding(1)]] var<storage, read> x_19 : In1;
+@group(0) @binding(1) var<storage, read> x_19 : In1;
 
 fn main_1() {
   var base_index_in : u32;
@@ -109,8 +109,8 @@
   return;
 }
 
-[[stage(compute), workgroup_size(4, 1, 1)]]
-fn main([[builtin(workgroup_id)]] gl_WorkGroupID_param : vec3<u32>) {
+@stage(compute) @workgroup_size(4, 1, 1)
+fn main(@builtin(workgroup_id) gl_WorkGroupID_param : vec3<u32>) {
   gl_WorkGroupID = gl_WorkGroupID_param;
   main_1();
 }
diff --git a/test/vk-gl-cts/rasterization/line_continuity/line-strip/0.wgsl b/test/vk-gl-cts/rasterization/line_continuity/line-strip/0.wgsl
index c1d101c..a4fc561 100644
--- a/test/vk-gl-cts/rasterization/line_continuity/line-strip/0.wgsl
+++ b/test/vk-gl-cts/rasterization/line_continuity/line-strip/0.wgsl
@@ -6,11 +6,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(color);
diff --git a/test/vk-gl-cts/rasterization/line_continuity/line-strip/1.wgsl b/test/vk-gl-cts/rasterization/line_continuity/line-strip/1.wgsl
index 702b117..6f3e895 100644
--- a/test/vk-gl-cts/rasterization/line_continuity/line-strip/1.wgsl
+++ b/test/vk-gl-cts/rasterization/line_continuity/line-strip/1.wgsl
@@ -1,6 +1,6 @@
 var<private> color_out : vec4<f32>;
 
-[[group(0), binding(0)]] var texture : texture_2d<f32>;
+@group(0) @binding(0) var texture : texture_2d<f32>;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -12,12 +12,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   color_out_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(color_out);
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.wgsl
index 2b3b645..dfcbf44 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.wgsl
@@ -2,15 +2,15 @@
   result : i32;
 };
 
-type RTArr = [[stride(4)]] array<u32>;
+type RTArr = @stride(4) array<u32>;
 
 struct Buf0 {
   values : RTArr;
 };
 
-[[group(0), binding(1)]] var<storage, read_write> x_4 : Buf1;
+@group(0) @binding(1) var<storage, read_write> x_4 : Buf1;
 
-[[group(0), binding(0)]] var<storage, read_write> x_7 : Buf0;
+@group(0) @binding(0) var<storage, read_write> x_7 : Buf0;
 
 fn main_1() {
   var i : u32;
@@ -37,7 +37,7 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   main_1();
 }
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.wgsl
index 0fee5ee..bed026c 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.wgsl
@@ -1,4 +1,4 @@
-type RTArr = [[stride(4)]] array<u32>;
+type RTArr = @stride(4) array<u32>;
 
 struct S {
   field0 : RTArr;
@@ -6,11 +6,11 @@
 
 var<private> x_2 : vec3<u32>;
 
-[[group(0), binding(0)]] var<storage, read_write> x_5 : S;
+@group(0) @binding(0) var<storage, read_write> x_5 : S;
 
-[[group(0), binding(1)]] var<storage, read_write> x_6 : S;
+@group(0) @binding(1) var<storage, read_write> x_6 : S;
 
-[[group(0), binding(2)]] var<storage, read_write> x_7 : S;
+@group(0) @binding(2) var<storage, read_write> x_7 : S;
 
 fn main_1() {
   let x_21 : u32 = x_2.x;
@@ -20,8 +20,8 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
-fn main([[builtin(global_invocation_id)]] x_2_param : vec3<u32>) {
+@stage(compute) @workgroup_size(1, 1, 1)
+fn main(@builtin(global_invocation_id) x_2_param : vec3<u32>) {
   x_2 = x_2_param;
   main_1();
 }
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.wgsl
index cf2536e..98535f6 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.wgsl
@@ -1,4 +1,4 @@
-type RTArr = [[stride(4)]] array<u32>;
+type RTArr = @stride(4) array<u32>;
 
 struct S {
   field0 : RTArr;
@@ -6,11 +6,11 @@
 
 var<private> x_2 : vec3<u32>;
 
-[[group(0), binding(0)]] var<storage, read_write> x_5 : S;
+@group(0) @binding(0) var<storage, read_write> x_5 : S;
 
-[[group(0), binding(1)]] var<storage, read_write> x_6 : S;
+@group(0) @binding(1) var<storage, read_write> x_6 : S;
 
-[[group(0), binding(2)]] var<storage, read_write> x_7 : S;
+@group(0) @binding(2) var<storage, read_write> x_7 : S;
 
 fn main_1() {
   let x_21 : u32 = x_2.x;
@@ -20,8 +20,8 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
-fn main([[builtin(global_invocation_id)]] x_2_param : vec3<u32>) {
+@stage(compute) @workgroup_size(1, 1, 1)
+fn main(@builtin(global_invocation_id) x_2_param : vec3<u32>) {
   x_2 = x_2_param;
   main_1();
 }
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.wgsl
index f842e24..516e08b 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.wgsl
@@ -1,4 +1,4 @@
-type RTArr = [[stride(4)]] array<u32>;
+type RTArr = @stride(4) array<u32>;
 
 struct S {
   field0 : RTArr;
@@ -6,11 +6,11 @@
 
 var<private> x_2 : vec3<u32>;
 
-[[group(0), binding(0)]] var<storage, read_write> x_5 : S;
+@group(0) @binding(0) var<storage, read_write> x_5 : S;
 
-[[group(0), binding(1)]] var<storage, read_write> x_6 : S;
+@group(0) @binding(1) var<storage, read_write> x_6 : S;
 
-[[group(0), binding(2)]] var<storage, read_write> x_7 : S;
+@group(0) @binding(2) var<storage, read_write> x_7 : S;
 
 fn main_1() {
   let x_21 : u32 = x_2.x;
@@ -20,8 +20,8 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
-fn main([[builtin(global_invocation_id)]] x_2_param : vec3<u32>) {
+@stage(compute) @workgroup_size(1, 1, 1)
+fn main(@builtin(global_invocation_id) x_2_param : vec3<u32>) {
   x_2 = x_2_param;
   main_1();
 }
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.wgsl
index 21548c6..fc4ae4a 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.wgsl
@@ -1,4 +1,4 @@
-type RTArr = [[stride(4)]] array<u32>;
+type RTArr = @stride(4) array<u32>;
 
 struct S {
   field0 : RTArr;
@@ -6,11 +6,11 @@
 
 var<private> x_2 : vec3<u32>;
 
-[[group(0), binding(0)]] var<storage, read_write> x_5 : S;
+@group(0) @binding(0) var<storage, read_write> x_5 : S;
 
-[[group(0), binding(1)]] var<storage, read_write> x_6 : S;
+@group(0) @binding(1) var<storage, read_write> x_6 : S;
 
-[[group(0), binding(2)]] var<storage, read_write> x_7 : S;
+@group(0) @binding(2) var<storage, read_write> x_7 : S;
 
 fn main_1() {
   let x_21 : u32 = x_2.x;
@@ -20,8 +20,8 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
-fn main([[builtin(global_invocation_id)]] x_2_param : vec3<u32>) {
+@stage(compute) @workgroup_size(1, 1, 1)
+fn main(@builtin(global_invocation_id) x_2_param : vec3<u32>) {
   x_2 = x_2_param;
   main_1();
 }
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.wgsl
index 51319ac..4f4872e 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.wgsl
@@ -1,4 +1,4 @@
-type RTArr = [[stride(4)]] array<i32>;
+type RTArr = @stride(4) array<i32>;
 
 struct S {
   field0 : RTArr;
@@ -6,13 +6,13 @@
 
 var<private> x_3 : vec3<u32>;
 
-[[group(0), binding(0)]] var<storage, read_write> x_6 : S;
+@group(0) @binding(0) var<storage, read_write> x_6 : S;
 
-[[group(0), binding(1)]] var<storage, read_write> x_7 : S;
+@group(0) @binding(1) var<storage, read_write> x_7 : S;
 
-[[group(0), binding(2)]] var<storage, read_write> x_8 : S;
+@group(0) @binding(2) var<storage, read_write> x_8 : S;
 
-[[group(0), binding(3)]] var<storage, read_write> x_9 : S;
+@group(0) @binding(3) var<storage, read_write> x_9 : S;
 
 fn main_1() {
   let x_26 : u32 = x_3.x;
@@ -23,8 +23,8 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
-fn main([[builtin(global_invocation_id)]] x_3_param : vec3<u32>) {
+@stage(compute) @workgroup_size(1, 1, 1)
+fn main(@builtin(global_invocation_id) x_3_param : vec3<u32>) {
   x_3 = x_3_param;
   main_1();
 }
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.wgsl
index 8abb109..0a7a6fd 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.wgsl
@@ -1,4 +1,4 @@
-type RTArr = [[stride(4)]] array<u32>;
+type RTArr = @stride(4) array<u32>;
 
 struct S {
   field0 : RTArr;
@@ -6,9 +6,9 @@
 
 var<private> x_3 : vec3<u32>;
 
-[[group(0), binding(0)]] var<storage, read_write> x_6 : S;
+@group(0) @binding(0) var<storage, read_write> x_6 : S;
 
-[[group(0), binding(1)]] var<storage, read_write> x_7 : S;
+@group(0) @binding(1) var<storage, read_write> x_7 : S;
 
 fn main_1() {
   let x_21 : u32 = x_3.x;
@@ -17,8 +17,8 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
-fn main([[builtin(global_invocation_id)]] x_3_param : vec3<u32>) {
+@stage(compute) @workgroup_size(1, 1, 1)
+fn main(@builtin(global_invocation_id) x_3_param : vec3<u32>) {
   x_3 = x_3_param;
   main_1();
 }
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.wgsl
index fce79f04..52902a4 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.wgsl
@@ -1,4 +1,4 @@
-type RTArr = [[stride(4)]] array<u32>;
+type RTArr = @stride(4) array<u32>;
 
 struct S {
   field0 : RTArr;
@@ -6,13 +6,13 @@
 
 var<private> x_3 : vec3<u32>;
 
-[[group(0), binding(0)]] var<storage, read_write> x_6 : S;
+@group(0) @binding(0) var<storage, read_write> x_6 : S;
 
-[[group(0), binding(1)]] var<storage, read_write> x_7 : S;
+@group(0) @binding(1) var<storage, read_write> x_7 : S;
 
-[[group(0), binding(2)]] var<storage, read_write> x_8 : S;
+@group(0) @binding(2) var<storage, read_write> x_8 : S;
 
-[[group(0), binding(3)]] var<storage, read_write> x_9 : S;
+@group(0) @binding(3) var<storage, read_write> x_9 : S;
 
 fn main_1() {
   let x_23 : u32 = x_3.x;
@@ -23,8 +23,8 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
-fn main([[builtin(global_invocation_id)]] x_3_param : vec3<u32>) {
+@stage(compute) @workgroup_size(1, 1, 1)
+fn main(@builtin(global_invocation_id) x_3_param : vec3<u32>) {
   x_3 = x_3_param;
   main_1();
 }
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.wgsl
index c21661d..04a0297 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.wgsl
@@ -1,4 +1,4 @@
-type RTArr = [[stride(4)]] array<u32>;
+type RTArr = @stride(4) array<u32>;
 
 struct S {
   field0 : RTArr;
@@ -6,11 +6,11 @@
 
 var<private> x_3 : vec3<u32>;
 
-[[group(0), binding(0)]] var<storage, read_write> x_6 : S;
+@group(0) @binding(0) var<storage, read_write> x_6 : S;
 
-[[group(0), binding(1)]] var<storage, read_write> x_7 : S;
+@group(0) @binding(1) var<storage, read_write> x_7 : S;
 
-[[group(0), binding(2)]] var<storage, read_write> x_8 : S;
+@group(0) @binding(2) var<storage, read_write> x_8 : S;
 
 fn main_1() {
   let x_21 : u32 = x_3.x;
@@ -20,8 +20,8 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
-fn main([[builtin(global_invocation_id)]] x_3_param : vec3<u32>) {
+@stage(compute) @workgroup_size(1, 1, 1)
+fn main(@builtin(global_invocation_id) x_3_param : vec3<u32>) {
   x_3 = x_3_param;
   main_1();
 }
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.wgsl
index f83857f..fd0938c 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.wgsl
@@ -1,4 +1,4 @@
-type RTArr = [[stride(4)]] array<u32>;
+type RTArr = @stride(4) array<u32>;
 
 struct S {
   field0 : RTArr;
@@ -6,11 +6,11 @@
 
 var<private> x_3 : vec3<u32>;
 
-[[group(0), binding(0)]] var<storage, read_write> x_6 : S;
+@group(0) @binding(0) var<storage, read_write> x_6 : S;
 
-[[group(0), binding(1)]] var<storage, read_write> x_7 : S;
+@group(0) @binding(1) var<storage, read_write> x_7 : S;
 
-[[group(0), binding(2)]] var<storage, read_write> x_8 : S;
+@group(0) @binding(2) var<storage, read_write> x_8 : S;
 
 fn main_1() {
   let x_21 : u32 = x_3.x;
@@ -20,8 +20,8 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
-fn main([[builtin(global_invocation_id)]] x_3_param : vec3<u32>) {
+@stage(compute) @workgroup_size(1, 1, 1)
+fn main(@builtin(global_invocation_id) x_3_param : vec3<u32>) {
   x_3 = x_3_param;
   main_1();
 }
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.wgsl
index de05c79..2bbbe0b 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.wgsl
@@ -1,4 +1,4 @@
-type RTArr = [[stride(4)]] array<u32>;
+type RTArr = @stride(4) array<u32>;
 
 struct S {
   field0 : RTArr;
@@ -6,11 +6,11 @@
 
 var<private> x_2 : vec3<u32>;
 
-[[group(0), binding(0)]] var<storage, read_write> x_5 : S;
+@group(0) @binding(0) var<storage, read_write> x_5 : S;
 
-[[group(0), binding(1)]] var<storage, read_write> x_6 : S;
+@group(0) @binding(1) var<storage, read_write> x_6 : S;
 
-[[group(0), binding(2)]] var<storage, read_write> x_7 : S;
+@group(0) @binding(2) var<storage, read_write> x_7 : S;
 
 fn main_1() {
   let x_20 : u32 = x_2.x;
@@ -20,8 +20,8 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
-fn main([[builtin(global_invocation_id)]] x_2_param : vec3<u32>) {
+@stage(compute) @workgroup_size(1, 1, 1)
+fn main(@builtin(global_invocation_id) x_2_param : vec3<u32>) {
   x_2 = x_2_param;
   main_1();
 }
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.wgsl
index 3e60e98..f34494a 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.wgsl
@@ -1,4 +1,4 @@
-type RTArr = [[stride(4)]] array<u32>;
+type RTArr = @stride(4) array<u32>;
 
 struct S {
   field0 : RTArr;
@@ -6,9 +6,9 @@
 
 var<private> x_2 : vec3<u32>;
 
-[[group(0), binding(0)]] var<storage, read_write> x_5 : S;
+@group(0) @binding(0) var<storage, read_write> x_5 : S;
 
-[[group(0), binding(1)]] var<storage, read_write> x_6 : S;
+@group(0) @binding(1) var<storage, read_write> x_6 : S;
 
 fn main_1() {
   let x_20 : u32 = x_2.x;
@@ -17,8 +17,8 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
-fn main([[builtin(global_invocation_id)]] x_2_param : vec3<u32>) {
+@stage(compute) @workgroup_size(1, 1, 1)
+fn main(@builtin(global_invocation_id) x_2_param : vec3<u32>) {
   x_2 = x_2_param;
   main_1();
 }
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.wgsl
index eef9fd1..5c734e3 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.wgsl
@@ -14,14 +14,14 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_4_1 : u32;
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
 };
 
-[[stage(vertex)]]
-fn main([[location(0)]] x_3_param : vec2<f32>) -> main_out {
+@stage(vertex)
+fn main(@location(0) x_3_param : vec2<f32>) -> main_out {
   x_3 = x_3_param;
   main_1();
   return main_out(x_4, gl_Position);
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.wgsl
index bf7b1a4..74923da 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.wgsl
@@ -10,12 +10,12 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
 };
 
-[[stage(vertex)]]
-fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+@stage(vertex)
+fn main(@location(0) position_param : vec4<f32>) -> main_out {
   position = position_param;
   main_1();
   return main_out(gl_Position);
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.wgsl
index 48a9583..1c90a48 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.wgsl
@@ -9,13 +9,13 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   color_out_1 : vec4<f32>;
-  [[builtin(frag_depth)]]
+  @builtin(frag_depth)
   gl_FragDepth_1 : f32;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(color_out, gl_FragDepth);
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.wgsl
index 574d2de..5707fa3 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.wgsl
@@ -10,12 +10,12 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
 };
 
-[[stage(vertex)]]
-fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+@stage(vertex)
+fn main(@location(0) position_param : vec4<f32>) -> main_out {
   position = position_param;
   main_1();
   return main_out(gl_Position);
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.wgsl
index df3c7e3..1620bac 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.wgsl
@@ -9,13 +9,13 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   color_out_1 : vec4<f32>;
-  [[builtin(frag_depth)]]
+  @builtin(frag_depth)
   gl_FragDepth_1 : f32;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(color_out, gl_FragDepth);
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.wgsl
index f3aec87..507511d 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.wgsl
@@ -10,12 +10,12 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
 };
 
-[[stage(vertex)]]
-fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+@stage(vertex)
+fn main(@location(0) position_param : vec4<f32>) -> main_out {
   position = position_param;
   main_1();
   return main_out(gl_Position);
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.wgsl
index 8bf833a..d20dbea 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.wgsl
@@ -9,13 +9,13 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   color_out_1 : vec4<f32>;
-  [[builtin(frag_depth)]]
+  @builtin(frag_depth)
   gl_FragDepth_1 : f32;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(color_out, gl_FragDepth);
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.wgsl
index 1cc00dd..6e13950 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.wgsl
@@ -10,12 +10,12 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
 };
 
-[[stage(vertex)]]
-fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+@stage(vertex)
+fn main(@location(0) position_param : vec4<f32>) -> main_out {
   position = position_param;
   main_1();
   return main_out(gl_Position);
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.wgsl
index 5051169..eabe436 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.wgsl
@@ -9,13 +9,13 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   color_out_1 : vec4<f32>;
-  [[builtin(frag_depth)]]
+  @builtin(frag_depth)
   gl_FragDepth_1 : f32;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(color_out, gl_FragDepth);
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.wgsl
index 788ee5b..ac55a23 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.wgsl
@@ -10,12 +10,12 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
 };
 
-[[stage(vertex)]]
-fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+@stage(vertex)
+fn main(@location(0) position_param : vec4<f32>) -> main_out {
   position = position_param;
   main_1();
   return main_out(gl_Position);
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.wgsl
index f71b320..7b85214 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.wgsl
@@ -10,12 +10,12 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
 };
 
-[[stage(vertex)]]
-fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+@stage(vertex)
+fn main(@location(0) position_param : vec4<f32>) -> main_out {
   position = position_param;
   main_1();
   return main_out(gl_Position);
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.wgsl
index b6e0701..1566cc9 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.wgsl
@@ -9,13 +9,13 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   outColor_1 : vec4<f32>;
-  [[builtin(frag_depth)]]
+  @builtin(frag_depth)
   gl_FragDepth_1 : f32;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(outColor, gl_FragDepth);
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.wgsl
index 9f726a7..310e6db 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.wgsl
@@ -9,13 +9,13 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   outColor_1 : vec4<f32>;
-  [[builtin(frag_depth)]]
+  @builtin(frag_depth)
   gl_FragDepth_1 : f32;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(outColor, gl_FragDepth);
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.wgsl
index bc535ca..293f469 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.wgsl
@@ -9,13 +9,13 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   outColor_1 : vec4<f32>;
-  [[builtin(frag_depth)]]
+  @builtin(frag_depth)
   gl_FragDepth_1 : f32;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(outColor, gl_FragDepth);
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.wgsl
index 0fe24e6..269e7da 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.wgsl
@@ -12,14 +12,14 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   outColor_1 : vec4<f32>;
-  [[builtin(frag_depth)]]
+  @builtin(frag_depth)
   gl_FragDepth_1 : f32;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(outColor, gl_FragDepth);
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.wgsl
index 04a6db7..656c0ed 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.wgsl
@@ -9,13 +9,13 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   outColor_1 : vec4<f32>;
-  [[builtin(frag_depth)]]
+  @builtin(frag_depth)
   gl_FragDepth_1 : f32;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(outColor, gl_FragDepth);
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.wgsl
index f6cb3ea..7c01a5c 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.wgsl
@@ -9,13 +9,13 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   outColor_1 : vec4<f32>;
-  [[builtin(frag_depth)]]
+  @builtin(frag_depth)
   gl_FragDepth_1 : f32;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(outColor, gl_FragDepth);
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.wgsl
index 081740c..1ab42ae 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.wgsl
@@ -12,14 +12,14 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
-  [[location(0)]]
+  @location(0)
   pos_1 : u32;
 };
 
-[[stage(vertex)]]
-fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+@stage(vertex)
+fn main(@location(0) position_param : vec4<f32>) -> main_out {
   position = position_param;
   main_1();
   return main_out(gl_Position, pos);
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.wgsl
index 9959aa6..0e32731 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.wgsl
@@ -14,14 +14,14 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_4_1 : i32;
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
 };
 
-[[stage(vertex)]]
-fn main([[location(0)]] x_2_param : vec3<f32>, [[location(1)]] x_3_param : i32) -> main_out {
+@stage(vertex)
+fn main(@location(0) x_2_param : vec3<f32>, @location(1) x_3_param : i32) -> main_out {
   x_2 = x_2_param;
   x_3 = x_3_param;
   main_1();
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl
index 0f3c732..2cd673e 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl
@@ -4,7 +4,7 @@
 
 var<private> x_4 : i32;
 
-[[group(0), binding(0)]] var x_5 : texture_storage_2d<r32sint, write>;
+@group(0) @binding(0) var x_5 : texture_storage_2d<r32sint, write>;
 
 fn main_1() {
   x_4 = 1;
@@ -19,12 +19,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_4_1 : i32;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) x_2_param : vec4<f32>, @location(0) x_3_param : i32) -> main_out {
   x_2 = x_2_param;
   x_3 = x_3_param;
   main_1();
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl.expected.glsl
index f63590e..34862ac 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 SKIP: FAILED
 
 vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl:27:70 warning: integral user-defined fragment inputs must have a flat interpolation attribute
-fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+fn main(@builtin(position) x_2_param : vec4<f32>, @location(0) x_3_param : i32) -> main_out {
                                                                      ^^^^^^^^^
 
 #version 310 es
@@ -62,7 +62,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:45: 'int' : must be qualified as flat in
-ERROR: 0:45: '' : compilation terminated 
+ERROR: 0:45: '' : compilation terminated
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl
index affcd63..07e6992 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl
@@ -14,12 +14,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_4_1 : i32;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) x_2_param : vec4<f32>, @location(0) x_3_param : i32) -> main_out {
   x_2 = x_2_param;
   x_3 = x_3_param;
   main_1();
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl.expected.glsl
index c7468bb..2da1cc8 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 SKIP: FAILED
 
 vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl:22:70 warning: integral user-defined fragment inputs must have a flat interpolation attribute
-fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+fn main(@builtin(position) x_2_param : vec4<f32>, @location(0) x_3_param : i32) -> main_out {
                                                                      ^^^^^^^^^
 
 #version 310 es
@@ -58,7 +58,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:41: 'int' : must be qualified as flat in
-ERROR: 0:41: '' : compilation terminated 
+ERROR: 0:41: '' : compilation terminated
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.wgsl
index 3820a70..e1c76c9 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.wgsl
@@ -16,12 +16,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   out_data_1 : i32;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(out_data);
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl
index e0e933a..a849b1d 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl
@@ -14,12 +14,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_4_1 : i32;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) x_2_param : vec4<f32>, @location(0) x_3_param : i32) -> main_out {
   x_2 = x_2_param;
   x_3 = x_3_param;
   main_1();
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl.expected.glsl
index 42a8717..fe31b1c 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 SKIP: FAILED
 
 vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl:22:70 warning: integral user-defined fragment inputs must have a flat interpolation attribute
-fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+fn main(@builtin(position) x_2_param : vec4<f32>, @location(0) x_3_param : i32) -> main_out {
                                                                      ^^^^^^^^^
 
 #version 310 es
@@ -59,7 +59,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:42: 'int' : must be qualified as flat in
-ERROR: 0:42: '' : compilation terminated 
+ERROR: 0:42: '' : compilation terminated
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl
index fd8dd5f..da18d12 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl
@@ -1,4 +1,4 @@
-type RTArr = [[stride(4)]] array<i32>;
+type RTArr = @stride(4) array<i32>;
 
 struct S {
   field0 : RTArr;
@@ -10,7 +10,7 @@
 
 var<private> x_4 : i32;
 
-[[group(0), binding(0)]] var<storage, read_write> x_5 : S;
+@group(0) @binding(0) var<storage, read_write> x_5 : S;
 
 fn main_1() {
   x_4 = 1;
@@ -25,12 +25,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_4_1 : i32;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) x_2_param : vec4<f32>, @location(0) x_3_param : i32) -> main_out {
   x_2 = x_2_param;
   x_3 = x_3_param;
   main_1();
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl.expected.glsl
index 41b83dd..f7d8197 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 SKIP: FAILED
 
 vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl:33:70 warning: integral user-defined fragment inputs must have a flat interpolation attribute
-fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+fn main(@builtin(position) x_2_param : vec4<f32>, @location(0) x_3_param : i32) -> main_out {
                                                                      ^^^^^^^^^
 
 #version 310 es
@@ -67,8 +67,8 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:5: '' : array size required 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: '' : array size required
+ERROR: 0:6: '' : compilation terminated
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl
index 4a8c8a7..48083ee 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl
@@ -1,4 +1,4 @@
-type RTArr = [[stride(4)]] array<i32>;
+type RTArr = @stride(4) array<i32>;
 
 struct S {
   field0 : RTArr;
@@ -10,7 +10,7 @@
 
 var<private> x_4 : i32;
 
-[[group(0), binding(0)]] var<storage, read_write> x_5 : S;
+@group(0) @binding(0) var<storage, read_write> x_5 : S;
 
 fn main_1() {
   x_4 = 1;
@@ -25,12 +25,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_4_1 : i32;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) x_2_param : vec4<f32>, @location(0) x_3_param : i32) -> main_out {
   x_2 = x_2_param;
   x_3 = x_3_param;
   main_1();
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl.expected.glsl
index 4b8208a..6fe04b3 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 SKIP: FAILED
 
 vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl:33:70 warning: integral user-defined fragment inputs must have a flat interpolation attribute
-fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+fn main(@builtin(position) x_2_param : vec4<f32>, @location(0) x_3_param : i32) -> main_out {
                                                                      ^^^^^^^^^
 
 #version 310 es
@@ -68,8 +68,8 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:5: '' : array size required 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: '' : array size required
+ERROR: 0:6: '' : compilation terminated
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl
index 5142f3d..78ca88f 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl
@@ -29,12 +29,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_4_1 : i32;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) x_2_param : vec4<f32>, @location(0) x_3_param : i32) -> main_out {
   x_2 = x_2_param;
   x_3 = x_3_param;
   main_1();
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl.expected.glsl
index 2d61612..b9ab85d 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 SKIP: FAILED
 
 vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl:37:70 warning: integral user-defined fragment inputs must have a flat interpolation attribute
-fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+fn main(@builtin(position) x_2_param : vec4<f32>, @location(0) x_3_param : i32) -> main_out {
                                                                      ^^^^^^^^^
 
 #version 310 es
@@ -73,7 +73,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:56: 'int' : must be qualified as flat in
-ERROR: 0:56: '' : compilation terminated 
+ERROR: 0:56: '' : compilation terminated
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.wgsl b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.wgsl
index cfebf74..e62f918 100644
--- a/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.wgsl
+++ b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.wgsl
@@ -9,12 +9,12 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
 };
 
-[[stage(vertex)]]
-fn main([[location(0)]] position_param : vec3<f32>) -> main_out {
+@stage(vertex)
+fn main(@location(0) position_param : vec3<f32>) -> main_out {
   position = position_param;
   main_1();
   return main_out(gl_Position);
diff --git a/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.wgsl b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.wgsl
index a3e9f61..bdf8be5 100644
--- a/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.wgsl
+++ b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.wgsl
@@ -22,12 +22,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   expect_1 : i32;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(expect);
diff --git a/test/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.wgsl b/test/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.wgsl
index cd7d76c..711a401 100644
--- a/test/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.wgsl
+++ b/test/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.wgsl
@@ -9,12 +9,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   color_out_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[location(0)]] color_in_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@location(0) color_in_param : vec4<f32>) -> main_out {
   color_in = color_in_param;
   main_1();
   return main_out(color_out);
diff --git a/test/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.wgsl b/test/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.wgsl
index 2130c1a..ac4ba8a 100644
--- a/test/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.wgsl
+++ b/test/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.wgsl
@@ -10,12 +10,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   result_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(result);
diff --git a/tools/src/cmd/check-spec-examples/main.go b/tools/src/cmd/check-spec-examples/main.go
index 733b340..760fb68 100644
--- a/tools/src/cmd/check-spec-examples/main.go
+++ b/tools/src/cmd/check-spec-examples/main.go
@@ -202,7 +202,7 @@
 func tryCompile(compiler, wd string, e example) error {
 	code := e.code
 	if e.functionScope {
-		code = "\n[[stage(vertex)]] fn main() -> [[builtin(position)]] vec4<f32> {\n" + code + " return vec4<f32>();}\n"
+		code = "\n@stage(vertex) fn main() -> @builtin(position) vec4<f32> {\n" + code + " return vec4<f32>();}\n"
 	}
 
 	addedStubFunction := false
@@ -213,7 +213,7 @@
 		}
 
 		if !addedStubFunction {
-			code += "\n[[stage(vertex)]] fn main() {}\n"
+			code += "\n@stage(vertex) fn main() {}\n"
 			addedStubFunction = true
 			continue
 		}
