Niko Matsakis
e6a1936d26
Implement "method matching". Similar to trait matching, but with the twist that we
...
have to take the transformed self type into account, and allow for coercion between
the receiver and the actual type declared on the impl.
2014-10-21 11:49:38 -04:00
Ariel Ben-Yehuda
0eb17e3f31
Ensure that the return type of a function is Sized
...
While no real rvalue of an unsized type can exist, a diverging function
can still "return" a value of such a type, which causes an ICE.
Fixes #18107 .
2014-10-19 23:54:45 +03:00
Niko Matsakis
389ef6601d
Implement multidispatch and conditional dispatch. Because we do not
...
attempt to preserve crate concatenation, this is a backwards compatible
change.
Conflicts:
src/librustc/middle/traits/select.rs
2014-10-09 17:19:50 -04:00
Nick Cameron
1c36d1c71d
Emit an error rather than ICEing for a missing built-in bound lang item.
...
closes #17392
2014-09-30 11:30:08 +13:00
Niko Matsakis
3694f42b8c
Move checking of whether fields are Sized or not into wf / trait code.
2014-09-25 07:09:13 -04:00
Niko Matsakis
2ec305d1bc
Move checks for closure bounds out of kind.rs
2014-09-25 07:09:08 -04:00
Niko Matsakis
7119974f82
Move unsafe destructor check from kind.rs into wf.rs
2014-09-25 07:06:28 -04:00
Niko Matsakis
c31623b0e4
Integrate caching of results. Measurements show approx 90% hit rate.
2014-09-25 07:06:27 -04:00
Niko Matsakis
effb3636cc
Integrate builtin bounds fully into the trait checker
2014-09-25 07:06:27 -04:00
Nick Cameron
ce0907e46e
Add enum variants to the type namespace
...
Change to resolve and update compiler and libs for uses.
[breaking-change]
Enum variants are now in both the value and type namespaces. This means that
if you have a variant with the same name as a type in scope in a module, you
will get a name clash and thus an error. The solution is to either rename the
type or the variant.
2014-09-19 15:11:00 +12:00
Niko Matsakis
c5754f3971
Guts of the new trait matching algorithm, not yet in use
2014-09-15 14:58:49 -04:00