Things missing: * Attributes - All types: @noreflect, @deprecated - Struct: @packed, @aligned, @opaque - Enums: @distinct, @noreflect - Unions: @packed, @aligned, @opaque - Functions: @inline, @reflect, @noreturn, @section, @unused, @used, @interrupt, @naked, @convention() - Calls: @noinline, @inline - Variables, parameters: @unused - Constants, globals: @unused, @used, @section - Labels: @unused * Designated initializer - Array range initializer { [1..2] = 2 } * Initializers - Vararray initializers - Incremental array initializers - Slice initializers - Constant initializers for globals * Asserts - assert, $assert - @unreachable * Types - Vararrays - Strings - Array - Slice - Values: size, alignment, name, qualifiedName - Functions: offsetof - Distinct types - Simd types? - Complex types? - Subtype casts - Bitstruct - Enumset - Typeid - Ranges * Arrays - Allow fixed arrays with no larger size than 32 bit unsigned. * Struct / union - Cast to union? - Structural typed anonymous structs and casts to them. - Auto deref on access. * Expressions - Disallow x >= 0 and x < 0 on unsigned types unless in a macro. - Range check arrays on debug - Allow negating int if assigned to a larger type. E.g short x = 1; int y = -x; - Expression block does not handle defer correctly. * Switch - String switch - Range case * Functions - C ABI - Safe varargs - Malloc/free * Pre-post conditions - Breakdown here * Enum - Values: min, max, array - Functions: fomOrdinal, ordinal, fromName, name, fromFullName, fullName, fromQualifiedName, qualifiedName, (), fromValue() * Error reporting - When a variable fails to parse correctly, store it to prevent follow up errors.