// All of these cases should produce IJ highlights where marked.
library highlighting.test;

const string bad_single_char_escape = "\q";
const string bad_octal = "octal \01";
const string bad_hex = "\x1 hex";
const string octal = "\017 octal";
const string hex = "\x12";
const string unicode_wrong_braces = "\u{}\u{\u1234";
const string slash_u_terminated = "\u";
const string too_much_unicode = "\u{cafe111}";
const string unicode_64 = "unicode code point \u{12abcd34}";

// Second `flexible` should be flagged.
type FlexibleCantRepeat = flexible flexible enum {
    FOO = 1;
};

// Second `strict` should be flagged.
type StrictCantRepeat = strict strict enum {
    FOO = 1;
};

// `flexible` should be flagged.
type StrictnessCantRepeat = strict flexible bits {
    FOO = 1;
};

// Second `resource` should be flagged.
type ResourceCantRepeat = resource resource struct {};

// `resource` should be flagged.
type BitsCantBeResource = resource bits {
    FOO = 1;
};

// `resource` should be flagged.
type EnumCantBeResource = resource enum {
    FOO = 1;
};

// `flexible` should be flagged.
type StructCantHaveStrictness = flexible struct {};

// `strict` should be flagged.
type TableCantHaveStrictness = strict table {};

// `@foo` should be flagged.
type ReservedCantHaveAttribute = flexible union {
    1: u1 bool;
    @foo
    2: reserved;
};

// `FOO = 0.1` should be flagged.
type BitsNotIntegral = strict bits {
    FOO = 0.1;
};

// `FOO = 0.1` should be flagged.
type EnumNotIntegral = strict enum {
    FOO = 0.1;
};

// `FOO = 3` should be flagged.
type BitsNotPowerOfTwo = flexible bits {
    FOO = 3;
};

// FOO = 2048 should be flagged.
type TooBigEnumValue = strict enum : uint8 {
    FOO = 2048;
};

// `int8` should be flagged.
type BitsSubtypeNotUnsignedIntegral = flexible bits : int8 {
    FOO = 1;
};

// `bool` should be flagged.
type EnumSubtypeNotIntegral = flexible enum : bool {
    FOO = 1;
};