Dmitry Lomov (2013-09-04T08:23:07.000Z)
domenic at domenicdenicola.com (2013-09-09T01:51:57.394Z)
(sorry for not getting on this thread earlier - I was off the grid for a bit) I think we should consider fixed-length ArrayTypes in this discussion. They can be parts of structs. Consider ```js var A = new ArrayType(uint8, 10); var S = new Struct({a : A}); var a = new A(); var s = new S(); a[0] = 10; a.foo = "foo"; s.a = a; ``` Assignment to a struct field is a copy, essentially. Of course, s.a[0] is now 10. But does s.a.foo exist? In the current semantics, there is no place to store it, because a field 'a' of struct 'S' is just a storage designator - there is no "place" in struct s to store the expando properties of fields and fields of fields and fields of fields of fields.... Therefore in current semantics fixed-length ArrayTypes, just like StructTypes, are either non-expandable, or have to lose their expanded properties on assignments - big surprise for the user! Now of course variable-sized ArrayTypes do not suffer from this issue, but one could argue for consistency with fixed-sized ArrayTypes.