JarrettBillingsley
Joined: 20 Jun 2006 Posts: 457 Location: Pennsylvania!
|
Posted: Tue May 22, 2007 6:56 pm Post subject: May 22 -- Lots of compiler bugfixes |
|
|
Got virtually 100% coverage in the compiler (basically the only things aren't covered are assert(false)s and a few harmless things that I'm not sure are used or not). Found lots of bugs. Notably some serious upvalue and scoping bugs with all five kinds of loops.
Changed
- Characters now have a truth value. U+000000 is false; all others are true.
Fixed
- Fixed infinite loop in parsing floats.
- Float parsing now follows the spec to the letter.
- Hex parsing now allows an underscore directly after the 0x.
- Fixed assignment parsing -- conditional expressions now allowed on the RHS of assignments. Weird that I never caught that.
- The compiler would allow one-character long files to be compiled (into nothing, but still.). No longer allows that.
- Compiler no longer allows super calls in classes without a base class.
- Compiler no longer crashes when declaring and assigning multiple globals in one declaration.
- Fixed LOTS of scoping and upvalue bugs with C-style for, numeric for, while, do-while, and foreach loops.
- Parenthesized multiple return expressions (like (vararg)) used as conditions crashed the compiler.
Other than that, not much else. Got virtually 100% on all the stdlibs too. I'm kind of beat from all this testing, though I know types.d has to be tested.. it's a bit trickier than the rest of the files though.. |
|