// Tests diagnostics of __traits(targetCPU) and __traits(targetHasFeature, ...)

// RUN: not %ldc -c -w %s 2>&1 | FileCheck %s

void main()
{
// CHECK: Warning: ignoring arguments for __traits targetCPU
    enum a = __traits(targetCPU, 1);

// CHECK: Error: __traits targetHasFeature expects one argument, not 0
    enum b = __traits(targetHasFeature);
// CHECK: Error: __traits targetHasFeature expects one argument, not 2
    enum c = __traits(targetHasFeature, "fma", 1);
// CHECK: Error: expression expected as argument of __traits targetHasFeature
    enum d = __traits(targetHasFeature, main);
// CHECK: Error: string expected as argument of __traits targetHasFeature instead of 1
    enum e = __traits(targetHasFeature, 1);

// Diagnostics of an unrecognized feature depends on the LLVM version (LLVM < 3.7 does not warn at all)
// Newer LLVM versions do warn.
// TODO: Re-enable test when LLVM < 3.7 is no longer supported.
// CHE CK: 夜畔' is not a recognized feature for this target (ignoring feature)
    enum f = __traits(targetHasFeature, "夜畔");
}

