#include <metal_stdlib>

using namespace metal;
void constant_with_non_constant() {
  float a = 0.0f;
  float2 b = float2(1.0f, a);
}

kernel void tint_symbol() {
  bool bool_var1 = true;
  bool bool_var2 = true;
  bool bool_var3 = true;
  int i32_var1 = 123;
  int i32_var2 = 123;
  int i32_var3 = 1;
  uint u32_var1 = 123u;
  uint u32_var2 = 123u;
  uint u32_var3 = 1u;
  bool3 v3bool_var1 = bool3(true);
  bool3 v3bool_var11 = bool3(true);
  bool3 v3bool_var2 = bool3(true);
  bool3 v3bool_var3 = bool3(true);
  int3 v3i32_var1 = int3(123);
  int3 v3i32_var2 = int3(123);
  int3 v3i32_var3 = int3(1);
  uint3 v3u32_var1 = uint3(123u);
  uint3 v3u32_var2 = uint3(123u);
  uint3 v3u32_var3 = uint3(1u);
  bool3 v3bool_var4 = bool3(true);
  bool4 v4bool_var5 = bool4(true, false, true, false);
  return;
}

