[pixel shader]
typedef float2 Dword;
typedef float3 dWord;
typedef float2 fLoat;

float4 f()
{
    typedef Dword dword;
    typedef fLoat float;
    dword v1 = {1, 2};
    float v2 = {2, 3};
    DWORD v4 = 4;
    return float4(v1.x, v2.x, v2.y, v4);
}

float4 f2()
{
    typedef dword dword;
    typedef float float;
    dword v1 = 1;
    float v2 = 1;
    return float4(v1, v2, v1, v1);
}

float4 main() : SV_TARGET
{
    return f() + f2();
}

[test]
draw quad
probe all rgba (2.0, 3.0, 4.0, 5.0)

% The "dword" alias is pre-defined as lowercase
[pixel shader fail]
typedef float2 dword;

float4 main() : sv_target
{
    return float4(0, 0, 0, 0);
}

[pixel shader fail]
struct DWORD s;

float4 main() : sv_target
{
    return float4(0, 0, 0, 0);
}

[pixel shader fail]
typedef float2 float;

float4 main() : sv_target
{
    return float4(0, 0, 0, 0);
}