Commits

John McCall committed b0033443886
When performing member lookup into a type during type-checking, immediately discard as non-viable any declarations that cannot be called due to argument-label mismatch. This heuristic already existed, but it was badly out-of-date vs. the current language rules on argument-passing. Change it to use the standard argument matching algorithm. This greatly reduces the number of overloads we consider for certain kinds of expression, most importantly explicit initialization syntax ('T(x)'). Ordinary type-matching will quickly reject such calls, but backtracking will discard this rejection. Thus this heuristic can greatly decrease the total work done by the type-checker when something else in the system is causing a combinatorial explosion. The diagnostic changes in the test-suite seem acceptable to me. Shout-out to Doug for pointing out multiple places where I didn't need to reinvent the wheel.