X-Git-Url: https://ocean-lang.org/code/?p=ocean-D;a=blobdiff_plain;f=00-TODO;h=c4978a79fa6b4b2a913fe20df4e38d7b72c4cb2f;hp=a973953e12a8706bc8299e8e87cad186f1a17ecf;hb=95060a31f56b05d2ac6dd87c9d102f76be1b8174;hpb=bb468d738e5edf523e47206c7eafa0b293b736a6 diff --git a/00-TODO b/00-TODO index a973953..c4978a7 100644 --- a/00-TODO +++ b/00-TODO @@ -4,8 +4,12 @@ ### Current version (Cataract Creek) +- allow global names to be used before they are declared. Assume global + if undeclared, and complain in final analysis. + If used in 'use' and 'case', then make it a label +- avoid definition loops in global constants - allow type names to be used before declared. Need to re-evaluate all - type sizes after parse. + type sizes after parse. avoid loops - resolve the HACK of allowing assign from struct when name starts space. - '?' prefix operator returns Boolean, index operator for strings. Can be used to test for end-of-string @@ -18,6 +22,7 @@ - int nat cyc {i,n,c}{8,16,32,64} - maybe not cyc - it needs size. - ops: # & | ~ &~ - no shift: use (N * #shift) or (N / #shift) - op= +- make '.' modifier interpolate a deref if needed - 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 @@ -25,8 +30,6 @@ 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??