### Current version (Cataract Creek)
-- allow global names to be used before they are declared. Assume global
- if undeclared, and complain in final analysis.
- allow type names to be used before declared. Need to re-evaluate all
type sizes after parse.
- resolve the HACK of allowing assign from struct when name starts space.
- enum, with multi-valued names. enum foo { yes, no, many(10) }
bar:foo=.yes; if bar == .no... if ?bar.many: print bar.many, "items"
Maybe .true and .false for Boolean
+- change use/case labels in ".name" which creates a local enum if no
+ type is evident.
- set, with bool or int members. set foo { pinned, memalloc, priority(4) }
bar:foo = .memalloc | .priority(2). if bar.pinned: bar.priority += 1
+- allow global names to be used before they are declared. Assume global
+ if undeclared, and complain in final analysis.
. array slices - references to arrays
- array access to read bytes from strings. How to get length? "?string[4]" ??
array[] gets length??
- const structures can inherit from another, and update select fields.
- 'use' labels *must* appear in case statements.
- 'then' can extend a case section into some other.
-
+
## Needs Design
+- const arrays that are initialized incrementally throughout the code,
+ and post-processed at compile-time, e.g. to sort or derive LR tables.
+ Maybe even across modules.
+ Need a syntax
- union types - how do I want to support these? inheritance with variance?
- lambda
- 'error' value for various types. NIL for pointer NaN for float, extra flag bit