Files
c3c/missing.txt
2020-05-05 16:57:11 +02:00

75 lines
1.6 KiB
Plaintext

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, <value>(), fromValue()
* Error reporting
- When a variable fails to parse correctly, store it to prevent follow up errors.