workgroup atomicUint wgCounterA;
workgroup atomicUint wgCounterB;

struct S {
    atomicUint memberAtomic;
};
workgroup S wgStructWithAtomicMember;
workgroup atomicUint wgAtomicArray[2];
workgroup atomicUint wgAtomicArray2[2];
workgroup S wgStructWithAtomicMemberArray[2];

struct NestedS {
    S nestedStructWithAtomicMember;
};
workgroup NestedS wgNestedStructWithAtomicMember;

void main() {
    wgCounterA = 1;
    wgCounterA = atomicUint(1);

    +wgCounterA;
    -wgCounterA;
    !wgCounterA;
    ~wgCounterA;

    wgCounterA++;
    wgCounterA--;
    ++wgCounterA;
    --wgCounterA;

    wgCounterA = -wgCounterA;
    wgCounterA = +wgCounterA;
    wgCounterA = wgCounterB;
    wgCounterA += wgCounterB;
    wgCounterA -= wgCounterB;
    wgCounterA *= wgCounterB;
    wgCounterA /= wgCounterB;

    wgCounterA = wgCounterA + 1;
    wgCounterA = wgCounterA - 1;
    wgCounterA = wgCounterA * 1;
    wgCounterA = wgCounterA / 1;
    wgCounterA = wgCounterA + wgCounterB;
    wgCounterA = wgCounterA - wgCounterB;
    wgCounterA = wgCounterA * wgCounterB;
    wgCounterA = wgCounterA / wgCounterB;

    wgCounterA == wgCounterB;
    wgCounterA != wgCounterB;
    wgCounterA < wgCounterB;
    wgCounterA <= wgCounterB;
    wgCounterA > wgCounterB;
    wgCounterA >= wgCounterB;
    wgCounterA && wgCounterB;
    wgCounterA || wgCounterB;
    wgCounterA & wgCounterB;
    wgCounterA | wgCounterB;

    uint a = wgCounterA;
    wgStructWithAtomicMember = S(1);
    wgStructWithAtomicMember = S(atomicUint(1));
    wgStructWithAtomicMember = S(wgCounterA);

    wgAtomicArray[0] = wgCounterA;
    wgAtomicArray[1] = wgCounterB;
    wgAtomicArray = wgAtomicArray2;
    wgAtomicArray = atomicUint[2](wgCounterA, wgCounterB);

    wgStructWithAtomicMemberArray[0] = wgStructWithAtomicMember;
    wgStructWithAtomicMemberArray = S[2](wgStructWithAtomicMember,
                                         wgStructWithAtomicMember);
    wgNestedStructWithAtomicMember = NestedS(wgStructWithAtomicMember);
}

/*%%*
type mismatch: '=' cannot operate on 'atomicUint', 'int'
cannot construct 'atomicUint'
'+' cannot operate on 'atomicUint'
'-' cannot operate on 'atomicUint'
'!' cannot operate on 'atomicUint'
'~' cannot operate on 'atomicUint'
'++' cannot operate on 'atomicUint'
'--' cannot operate on 'atomicUint'
'++' cannot operate on 'atomicUint'
'--' cannot operate on 'atomicUint'
'-' cannot operate on 'atomicUint'
'+' cannot operate on 'atomicUint'
assignments to opaque type 'atomicUint' are not permitted
type mismatch: '+=' cannot operate on 'atomicUint', 'atomicUint'
type mismatch: '-=' cannot operate on 'atomicUint', 'atomicUint'
type mismatch: '*=' cannot operate on 'atomicUint', 'atomicUint'
type mismatch: '/=' cannot operate on 'atomicUint', 'atomicUint'
type mismatch: '+' cannot operate on 'atomicUint', 'int'
type mismatch: '-' cannot operate on 'atomicUint', 'int'
type mismatch: '*' cannot operate on 'atomicUint', 'int'
type mismatch: '/' cannot operate on 'atomicUint', 'int'
type mismatch: '+' cannot operate on 'atomicUint', 'atomicUint'
type mismatch: '-' cannot operate on 'atomicUint', 'atomicUint'
type mismatch: '*' cannot operate on 'atomicUint', 'atomicUint'
type mismatch: '/' cannot operate on 'atomicUint', 'atomicUint'
type mismatch: '==' cannot operate on 'atomicUint', 'atomicUint'
type mismatch: '!=' cannot operate on 'atomicUint', 'atomicUint'
type mismatch: '<' cannot operate on 'atomicUint', 'atomicUint'
type mismatch: '<=' cannot operate on 'atomicUint', 'atomicUint'
type mismatch: '>' cannot operate on 'atomicUint', 'atomicUint'
type mismatch: '>=' cannot operate on 'atomicUint', 'atomicUint'
type mismatch: '&&' cannot operate on 'atomicUint', 'atomicUint'
type mismatch: '||' cannot operate on 'atomicUint', 'atomicUint'
type mismatch: '&' cannot operate on 'atomicUint', 'atomicUint'
type mismatch: '|' cannot operate on 'atomicUint', 'atomicUint'
expected 'uint', but found 'atomicUint'
construction of struct type 'S' with atomic member is not allowed
cannot construct 'atomicUint'
construction of struct type 'S' with atomic member is not allowed
construction of struct type 'S' with atomic member is not allowed
assignments to opaque type 'atomicUint' are not permitted
assignments to opaque type 'atomicUint' are not permitted
assignments to opaque type 'atomicUint[2]' are not permitted
construction of array type 'atomicUint[2]' with atomic member is not allowed
assignments to opaque type 'S' are not permitted
construction of array type 'S[2]' with atomic member is not allowed
construction of struct type 'NestedS' with atomic member is not allowed
*%%*/
