I finished fixing #3099 today, which was because the name resolution pass wasn't checking for multiple items with the same name. So you could declare two functions in the same scope, both called a, and one of them would just be silently ignored. That's not good, so I fixed resolve to error out in that case. This was only non-straightforward because we have several different namespaces (modules, types, values, and implementations) and you can re-declare the same name in a different namespace, just not in the same one (which is what "namespace" usually means). So I had to make sure not to error out when the names were in different namespaces, but otherwise, the machinery was already all there to fix this. Also, I was in the pleasant situation of already having done most of the work for this last week, and the first time I tried running the tests today was the first time it actually worked. That's always nice. ( Read more... )
Aug. 6th, 2012
I keep putting off this dependency graph project. I thought that faster compile times (and less mental context-switching for me) would be enough motivation, but I guess not; I keep wanting to bite off smaller chunks of work to deal with. Smaller chunks seems safer.