Frank Benoit wrote: > Find the bug: > static string[] KEYWORDS = [ "abstract", "alias", "align", "asm", > "assert", "auto", "body", "bool", "break", "byte", "case", > "cast", "catch", "cdouble", "cent", "cfloat", "char", "class", > "const", "continue", "creal", "dchar", "debug", "default", > "delegate", "delete", "deprecated", "do", "double", "else", > "enum", "export", "extern", "false", "final", "finally", > "float", "for", "foreach", "foreach_reverse", "function", > "goto", "idouble", "if", "ifloat", "import", "in", "inout", > "int", "interface", "invariant", "ireal", "is", "lazy", "long", > "mixin", "module", "new", "null", "out", "override", "package", > "pragma", "private", "private:", "protected", "protected:", > "public", "public:", "real", "return", "scope", "short", > "static", "struct", "super", "switch", "synchronized", > "template", "this", "throw", "true", "try", "typedef", "typeid", > "typeof", "ubyte", "ucent", "uint" "ulong", "union", "unittest", > "ushort", "version", "void", "volatile", "wchar", "while", > "with", "~this" ]; > > There is a comma missing : "uint" "ulong"
I have a personal style rule that says: if a list like that (be it function parameters, initializers, whatever) is more than one line, it's one element per line. I hate having to visually parse things, or play the re-wrap game as the lists change. I hadn't really thought about, until now, the side benefit of making it easier to spot missing trailing commas. Back in c and c++, with it's pre-processor, merging adjacent string literals is very handy. In D, it's only marginally so, but not completely useless. It can still be used to break a really long string literal into parts. There's other string boundary tokens in D which might well provide viable alternatives. Just my two cents, Brad