TMI: Lots and lots of bugs
Feb. 21st, 2013 06:01 pmI'm mostly done with the typechecker refactoring I talked about in my last post, though when I say I'm done I mostly mean I'm done getting it to compile. Tests passing is another matter! Plus, with a change like this, there's the nagging fear that (since we don't know what our test coverage is like) some subtle bug will slip through the cracks. I guess that's what code review is for.
In the meantime, bug triage! I spent my bug triage time today just looking at new bugs, although I'd been hoping to come up with a slightly shorter list of critical traits-related bugs for 0.6.
In the meantime, though, I'm going to prioritize these five trait-inheritance-related bugs:
There's also my pending work on 4678 -- refactoring how "self" and type parameters get handled -- which I really don't know how to make progress on; I have to talk to Niko about it when it's not late at night in his time zone. I'm thinking that maybe if a trait A has n type parameters -- including self -- then a *reference* to T (like in fn f<T: A>) should only require n - 1 type parameters. That seems weird, though, since the point is "treat self like any other type parameter".
In the meantime, bug triage! I spent my bug triage time today just looking at new bugs, although I'd been hoping to come up with a slightly shorter list of critical traits-related bugs for 0.6.
In the meantime, though, I'm going to prioritize these five trait-inheritance-related bugs:
- Check that for each impl of a trait, impls of the supertraits exist
- ICEs with traits that inherit generic traits -- also this one, which I hope is closely related
- Several examples of incorrect typechecking
- Something bad happens with trait inheritance and type synonyms of traits
There's also my pending work on 4678 -- refactoring how "self" and type parameters get handled -- which I really don't know how to make progress on; I have to talk to Niko about it when it's not late at night in his time zone. I'm thinking that maybe if a trait A has n type parameters -- including self -- then a *reference* to T (like in fn f<T: A>) should only require n - 1 type parameters. That seems weird, though, since the point is "treat self like any other type parameter".