struct S  {
    float f;
    float af[5];
    half4 h4;
    half4 ah4[5];
};

void main() {
    /* assign to scalar */               int i; i = 0;
    /* assign to vector */               int4 i4; i4 = int4(1,2,3,4);
    /* assign to matrix */               float3x3 f3x3; f3x3 = float3x3(1,2,3,4,5,6,7,8,9);
    /* assign to swizzle */              half4 x; x.w = 0; x.yx = half2(0);
    /* assign to array of scalar */      int ai[1]; ai[0] = 0;
    /* assign to array of vector */      int4 ai4[1]; ai4[0] = int4(1,2,3,4);
    /* assign to array of matrix */      half2x4 ah2x4[1]; ah2x4[0] = half2x4(1,2,3,4,5,6,7,8);
    /* assign to array idx by lookup */  ai[0] = 0; ai[ai[0]] = 0;
    /* assign to array swizzle */        float4 af4[1]; af4[0].x = 0; af4[0].ywxz = float4(1);
    /* assign to struct variable */      S s; s.f = 0;
    /* assign to struct array */         s.af[1] = 0;
    /* assign to struct swizzle */       s.h4.zxy = half3(9);
    /* assign to struct array swizzle */ s.ah4[2].yw = half2(5);

// Not allowed natively in GLSL, but SkSL will turn these into valid GLSL expressions.
    /* assign to folded ternary */       float l; float r; (true ? l : r) = 0;
    /* assign to unary plus */           +s.f = 1; +s.af[0] = 2;
                                         +s.h4 = half4(1); +s.ah4[0] = half4(2);

    sk_FragColor = half(i).xxxx;
    sk_FragColor = half4(i4);
    sk_FragColor = half4(f3x3[0].xxyz);
    sk_FragColor = x;
    sk_FragColor = half(ai[0]).xxxx;
    sk_FragColor = half4(ai4[0]);
    sk_FragColor = ah2x4[0][0];
    sk_FragColor = half4(af4[0]);
    sk_FragColor = half(l).xxxx;
    sk_FragColor = half(s.f).xxxx;
    sk_FragColor = half(s.af[1]).xxxx;
    sk_FragColor = s.h4;
    sk_FragColor = s.ah4[0];
}
