diff --git a/src/resolver/entry_point_validation_test.cc b/src/resolver/entry_point_validation_test.cc
index 8f90a22..4971107 100644
--- a/src/resolver/entry_point_validation_test.cc
+++ b/src/resolver/entry_point_validation_test.cc
@@ -530,9 +530,7 @@
 12:34 note: while analysing entry point main)");
 }
 
-// TODO(bclayton): Reenable after CTS is updated
-TEST_F(ResolverEntryPointValidationTest,
-       DISABLED_VertexShaderMustReturnPosition) {
+TEST_F(ResolverEntryPointValidationTest, VertexShaderMustReturnPosition) {
   // [[stage(vertex)]]
   // fn main() {}
   Func(Source{{12, 34}}, "main", {}, ty.void_(), {},
diff --git a/src/resolver/resolver.cc b/src/resolver/resolver.cc
index bec3f4b..467f55d 100644
--- a/src/resolver/resolver.cc
+++ b/src/resolver/resolver.cc
@@ -1119,8 +1119,7 @@
         }
       }
     }
-    // TODO(bclayton): Reenable after CTS is updated
-    if (((false)) && !found) {
+    if (!found) {
       diagnostics_.add_error(
           "a vertex shader must include the 'position' builtin in its return "
           "type",
diff --git a/src/transform/single_entry_point_test.cc b/src/transform/single_entry_point_test.cc
index d882620..d8fe14a 100644
--- a/src/transform/single_entry_point_test.cc
+++ b/src/transform/single_entry_point_test.cc
@@ -103,7 +103,8 @@
 TEST_F(SingleEntryPointTest, MultipleEntryPoints) {
   auto* src = R"(
 [[stage(vertex)]]
-fn vert_main() {
+fn vert_main() -> [[builtin(position)]] vec4<f32> {
+  return vec4<f32>();
 }
 
 [[stage(fragment)]]
@@ -145,8 +146,9 @@
 var<private> d : f32;
 
 [[stage(vertex)]]
-fn vert_main() {
+fn vert_main() -> [[builtin(position)]] vec4<f32> {
   a = 0.0;
+  return vec4<f32>();
 }
 
 [[stage(fragment)]]
@@ -194,8 +196,9 @@
 let d : f32 = 1.0;
 
 [[stage(vertex)]]
-fn vert_main() {
+fn vert_main() -> [[builtin(position)]] vec4<f32> {
   let local_a : f32 = a;
+  return vec4<f32>();
 }
 
 [[stage(fragment)]]
diff --git a/test/bug/tint/292.wgsl b/test/bug/tint/292.wgsl
index b1edc34..78f469c 100644
--- a/test/bug/tint/292.wgsl
+++ b/test/bug/tint/292.wgsl
@@ -1,6 +1,6 @@
 [[stage(vertex)]]
-fn main() {
+fn main() -> [[builtin(position)]] vec4<f32> {
   var light : vec3<f32> = vec3<f32>(1.2, 1., 2.);
   var negative_light : vec3<f32> = -light;
-  return;
+  return vec4<f32>();
 }
diff --git a/test/bug/tint/292.wgsl.expected.hlsl b/test/bug/tint/292.wgsl.expected.hlsl
index 55ca3b7..fe6d7b6 100644
--- a/test/bug/tint/292.wgsl.expected.hlsl
+++ b/test/bug/tint/292.wgsl.expected.hlsl
@@ -1,5 +1,10 @@
-void main() {
+struct tint_symbol {
+  float4 value : SV_Position;
+};
+
+tint_symbol main() {
   float3 light = float3(1.200000048f, 1.0f, 2.0f);
   float3 negative_light = -(light);
-  return;
+  const tint_symbol tint_symbol_1 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
+  return tint_symbol_1;
 }
diff --git a/test/bug/tint/292.wgsl.expected.msl b/test/bug/tint/292.wgsl.expected.msl
index e69b692..8d10ef8 100644
--- a/test/bug/tint/292.wgsl.expected.msl
+++ b/test/bug/tint/292.wgsl.expected.msl
@@ -1,9 +1,14 @@
 #include <metal_stdlib>
 
 using namespace metal;
-vertex void tint_symbol() {
+struct tint_symbol_1 {
+  float4 value [[position]];
+};
+
+vertex tint_symbol_1 tint_symbol() {
   float3 light = float3(1.200000048f, 1.0f, 2.0f);
   float3 negative_light = -(light);
-  return;
+  tint_symbol_1 const tint_symbol_2 = {.value=float4()};
+  return tint_symbol_2;
 }
 
diff --git a/test/bug/tint/292.wgsl.expected.spvasm b/test/bug/tint/292.wgsl.expected.spvasm
index 66dcae4..fe735fc 100644
--- a/test/bug/tint/292.wgsl.expected.spvasm
+++ b/test/bug/tint/292.wgsl.expected.spvasm
@@ -1,37 +1,53 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 20
+; Bound: 29
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
-               OpEntryPoint Vertex %main "main" %tint_pointsize
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol_1
                OpName %tint_pointsize "tint_pointsize"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
                OpName %main "main"
                OpName %light "light"
                OpName %negative_light "negative_light"
                OpDecorate %tint_pointsize BuiltIn PointSize
+               OpDecorate %tint_symbol_1 BuiltIn Position
       %float = OpTypeFloat 32
 %_ptr_Output_float = OpTypePointer Output %float
           %4 = OpConstantNull %float
 %tint_pointsize = OpVariable %_ptr_Output_float Output %4
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %8 = OpConstantNull %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
        %void = OpTypeVoid
-          %5 = OpTypeFunction %void
+          %9 = OpTypeFunction %void %v4float
+         %14 = OpTypeFunction %void
     %float_1 = OpConstant %float 1
     %v3float = OpTypeVector %float 3
 %float_1_20000005 = OpConstant %float 1.20000005
     %float_2 = OpConstant %float 2
-         %13 = OpConstantComposite %v3float %float_1_20000005 %float_1 %float_2
+         %21 = OpConstantComposite %v3float %float_1_20000005 %float_1 %float_2
 %_ptr_Function_v3float = OpTypePointer Function %v3float
-         %16 = OpConstantNull %v3float
-       %main = OpFunction %void None %5
-          %8 = OpLabel
-      %light = OpVariable %_ptr_Function_v3float Function %16
-%negative_light = OpVariable %_ptr_Function_v3float Function %16
+         %24 = OpConstantNull %v3float
+%tint_symbol_2 = OpFunction %void None %9
+%tint_symbol = OpFunctionParameter %v4float
+         %13 = OpLabel
+               OpStore %tint_symbol_1 %tint_symbol
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %16 = OpLabel
+      %light = OpVariable %_ptr_Function_v3float Function %24
+%negative_light = OpVariable %_ptr_Function_v3float Function %24
                OpStore %tint_pointsize %float_1
-               OpStore %light %13
-         %18 = OpLoad %v3float %light
-         %17 = OpFNegate %v3float %18
-               OpStore %negative_light %17
+               OpStore %light %21
+         %26 = OpLoad %v3float %light
+         %25 = OpFNegate %v3float %26
+               OpStore %negative_light %25
+         %28 = OpFunctionCall %void %tint_symbol_2 %8
                OpReturn
                OpFunctionEnd
diff --git a/test/bug/tint/292.wgsl.expected.wgsl b/test/bug/tint/292.wgsl.expected.wgsl
index 0ad3c99..08967d9 100644
--- a/test/bug/tint/292.wgsl.expected.wgsl
+++ b/test/bug/tint/292.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 [[stage(vertex)]]
-fn main() {
+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;
+  return vec4<f32>();
 }
