Before milestone 1.1, I would like to finish the following - as a final touch up.
These will be taken up after high priority tasks
[ ] use named parameters in Expr data structure. It was easier to comprehend before, and now that's not the case anymore
[ ] Variable scoping - a small revisit- we never had variable scope bugs and therefore I never had to look at this part of the code. However, with more new features such as list comprehension, its good to tackle this properly with added tests under variable_scope module
[ ] A bit more user friendly error message for block expressions such as "the last line in a block cannot end with ; . Currently expected ; at position x is slightly polluted with more messages.
[ ] A few re-namings (review code)
[ ] More tests on API definition deletions (component deletion and constraints)
[ ] While clone is being avoided for every PR merges, a final review is good to have
[ ] More steps in type check module to not leak wrong code into unification. There was about 2000+ lines of code addition during the type-check module addition and that covers a lot. However, it is still not good enough!
[ ] Extend complex_rib_test. Tests take time. Currently there are 500 required tests which covers a lot. But good to have a test coverage setup
[x] Make sure list flatmap is enabled
[x] Make sure math operations have flexibility with types. The current type inference is very strict. let z: u64 = 1u8+ 2u32. Currently type inference fails if a variable is found to have AllOf(U64, U8, U32), which is the case in the above example - given our standard type inference machinery. Probably the best way to overcome this is to consider resolve initial value's type with yield type during push down phase. It is during push down the initial value type is pushed down to the yield type. If yield type is OneOf(u64, u32) but initial value is u8, then we cast down yield type to the initial value. If number overflows then that's runtime exception obviously.
[x] Make sure the type mismatch in input http request body is returned as bad-request-error
[x] Allow anything to be part of string interpolation including tabs, special characters, newlines
[x] Allow yaml support
It will be good to have this as 1 single PR, or max 2 as many of them can be minor changes, or in fact no changes required.
This will be unfortunately long running, and I will take a bit of time with this while I finish other high priority tickets, as already mentioned in the issue descirption
Before milestone 1.1, I would like to finish the following - as a final touch up. These will be taken up after high priority tasks
;
. Currentlyexpected ; at position x
is slightly polluted with more messages.clone
is being avoided for every PR merges, a final review is good to havelet z: u64 = 1u8+ 2u32
. Currently type inference fails if a variable is found to haveAllOf(U64, U8, U32)
, which is the case in the above example - given our standard type inference machinery. Probably the best way to overcome this is to consider resolve initial value's type with yield type during push down phase. It is during push down the initial value type is pushed down to the yield type. If yield type is OneOf(u64, u32) but initial value is u8, then we cast down yield type to the initial value. If number overflows then that's runtime exception obviously.It will be good to have this as 1 single PR, or max 2 as many of them can be minor changes, or in fact no changes required.