#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);
}
