Yeah, this is a side-effect of Erlang's record handling - there's not really much that can be done for it.
Since records can be "chained" to be modified, if you miss a comma between two records, you will get one of two results:
1) If the record types are the same (e.g. 2 #panels{}), the fields from the second one will overwrite the fields from the first, or
2) If the record types are different, it'll produce an even weirder "this clause can never match" error.
This is to allow things like:
MyThing = #panel{class=something},
MyThing#panel{text="whatever"}.
That second line is more or less functionally equivalent to:
#panel{class=something}#panel{text=whatever}.
And that *looks* odd, but it's syntactically legal.
As far as I understand, earlier versions of Erlang required the first record in that term to be wrapped in parentheses, but that was removed sometime ago, so it had to look like this:
(#panel{class=something})#panel{text=whatever}.
I wonder if I could build a parse-transform that would look at Nitrogen code and give a warning of "you have two records without a comma separating." I hadn't thought of it before, but it is an odd error to fix.
-Jesse