SKIP: FAILED

#include <metal_stdlib>

using namespace metal;
struct main_out {
  uint x_2_1;
  uint x_4_1;
};
struct tint_symbol_2 {
  uint x_1_param [[user(locn0)]];
  uint x_3_param [[user(locn30)]];
};
struct tint_symbol_3 {
  uint x_2_1 [[color(0)]];
  uint x_4_1 [[color(40)]];
};

void main_1() {
  return;
}

fragment tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
  thread uint tint_symbol_6 = 0u;
  thread uint tint_symbol_7 = 0u;
  thread uint tint_symbol_8 = 0u;
  thread uint tint_symbol_9 = 0u;
  uint const x_1_param = tint_symbol_1.x_1_param;
  uint const x_3_param = tint_symbol_1.x_3_param;
  tint_symbol_6 = x_1_param;
  tint_symbol_7 = x_3_param;
  main_1();
  main_out const tint_symbol_4 = {.x_2_1=tint_symbol_8, .x_4_1=tint_symbol_9};
  tint_symbol_3 const tint_symbol_5 = {.x_2_1=tint_symbol_4.x_2_1, .x_4_1=tint_symbol_4.x_4_1};
  return tint_symbol_5;
}

Compilation failed: 

program_source:14:22: error: 'color' attribute parameter is out of bounds: must be between 0 and 7
  uint x_4_1 [[color(40)]];
                     ^
program_source:21:10: error: invalid return type 'tint_symbol_3' for fragment function
fragment tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
         ^


