Niko Matsakis
4856456dd7
Move mem-categorization more things to use TYPER for the method origin
2014-12-25 07:04:07 -05:00
Niko Matsakis
a583ba2fa0
Remove McResult
from the mem-categorization interface.
2014-12-25 07:04:07 -05:00
Niko Matsakis
8f770f10b2
Extend Typer interface to include expr_ty_adjusted
so that we can
...
remove another direct dependency on tcx from euv.
2014-12-25 07:04:07 -05:00
Niko Matsakis
f3ff084d01
Remove the regionck impl of Typer and just use fcx. This requires
...
modifying fcx to remove type variables where possible, but that's it.
2014-12-25 07:04:07 -05:00
bors
14597f980a
auto merge of #19813 : barosl/rust/autoderef-type-inference-ice, r=pnkfelix
...
`check::autoderef()` returns a `ty_err` when it fails to infer the type. `probe::probe()` should respect this failure and fail together to prevent further corruption.
Fixes #19692 .
Fixes #19583 .
Fixes #19297 .
2014-12-24 18:37:07 +00:00
bors
e64a8193b0
auto merge of #19858 : nick29581/rust/ranges, r=aturon
...
Closes #19794
r? @aturon for the first patch
r? @nikomatsakis for the rest
2014-12-24 06:31:13 +00:00
Nick Cameron
e82215d4e2
Review changes
2014-12-24 09:24:59 +13:00
Nick Cameron
17826e10a2
Type checking and trans for ranges
2014-12-24 09:12:45 +13:00
Nick Cameron
8a357e1d87
Add syntax for ranges
2014-12-24 09:12:45 +13:00
Eduard Burtescu
adabf4e63d
rustc_typeck: don't expect rvalues to have unsized types.
2014-12-23 13:30:36 +02:00
Alex Crichton
3583d613b9
Test fixes and rebase conflicts
2014-12-22 15:17:26 -08:00
Alex Crichton
de11710d80
rollup merge of #19891 : nikomatsakis/unique-fn-types-3
...
Conflicts:
src/libcore/str.rs
src/librustc_trans/trans/closure.rs
src/librustc_typeck/collect.rs
src/libstd/path/posix.rs
src/libstd/path/windows.rs
2014-12-22 12:51:23 -08:00
Alex Crichton
6938d51122
rollup merge of #20141 : frewsxcv/rfc438
...
RFC 248? I think you meant RFC 438.
There ain’t an RFC 248, while 438 looks to be what is being referred to:
https://github.com/rust-lang/rfcs/blob/master/text/0438-precedence-of-plus.md
--------------
Chis Morgan has a pretty important documentation fix in #19385 and he hasn't responded in a while to that pull request so I rebased it for him
Closes #19385
2014-12-22 12:48:19 -08:00
Alex Crichton
d3f3ae3aa2
rollup merge of #20084 : barosl/struct-variant-field-err
...
Fixes #19922 .
2014-12-22 12:47:34 -08:00
Chris Morgan
7f0d2e8a2b
RFC 248? I think you meant RFC 438.
...
There ain’t an RFC 248, while 438 looks to be what is being referred to:
https://github.com/rust-lang/rfcs/blob/master/text/0438-precedence-of-plus.md
2014-12-22 11:50:15 -08:00
Niko Matsakis
211782fef5
Perform coercions on LHS assignments.
2014-12-22 12:27:07 -05:00
Niko Matsakis
2a43b352f7
Rote changes that don't care to distinguish between a fn pointer and a fn item.
2014-12-22 12:27:07 -05:00
Niko Matsakis
f46099575a
Make ty_bare_fn carry an optional def-id indicating whether it is the
...
type of a fn item or a fn pointer, which are now differentiated.
Introduce coercion from fn item to fn pointer.
2014-12-22 12:27:07 -05:00
Alex Crichton
082bfde412
Fallout of std::str stabilization
2014-12-21 23:31:42 -08:00
Alex Crichton
eb47e1e446
rollup merge of #20039 : barosl/if-let-friendly-error
...
Fixes #19991 .
2014-12-21 09:27:34 -08:00
Alex Crichton
e654491960
rollup merge of #19926 : eddyb/less-sty
...
r? @nikomatsakis
2014-12-21 09:26:42 -08:00
Corey Farwell
98af642f5c
Remove a ton of public reexports
...
Remove most of the public reexports mentioned in #19253
These are all leftovers from the enum namespacing transition
In particular:
* src/libstd/num/strconv.rs
* ExponentFormat
* SignificantDigits
* SignFormat
* src/libstd/path/windows.rs
* PathPrefix
* src/libstd/sys/windows/timer.rs
* Req
* src/libcollections/str.rs
* MaybeOwned
* src/libstd/collections/hash/map.rs
* Entry
* src/libstd/collections/hash/table.rs
* BucketState
* src/libstd/dynamic_lib.rs
* Rtld
* src/libstd/io/net/ip.rs
* IpAddr
* src/libstd/os.rs
* MemoryMapKind
* MapOption
* MapError
* src/libstd/sys/common/net.rs
* SocketStatus
* InAddr
* src/libstd/sys/unix/timer.rs
* Req
[breaking-change]
2014-12-21 09:26:41 -08:00
Barosl Lee
c9010bff6c
Fix error message on invalid field names for a struct variant
...
Fixes #19922 .
2014-12-21 10:20:54 +09:00
Jared Roesch
d87b308b67
Add support for multiple region bounds in where clauses
2014-12-20 03:54:39 -08:00
Jared Roesch
e0cac488ac
Add parser support for generalized where clauses
...
Implement support in the parser for generalized where clauses,
as well as the conversion of ast::WherePredicates to
ty::Predicate in `collect.rs`.
2014-12-20 02:48:17 -08:00
bors
8f51ad2420
auto merge of #19511 : eddyb/rust/no-shadow, r=alexcrichton
...
r? @erickt
2014-12-20 08:10:23 +00:00
Eduard Burtescu
f0276072a3
rustc: middle: move TraitMap from resolve to ty.
2014-12-20 07:25:41 +02:00
Eduard Burtescu
e0d44386d3
rustc: use Ty instead of passing ty::sty around.
2014-12-20 07:04:42 +02:00
Eduard Burtescu
d5267d5845
Remove feature(import_shadowing) from all crates.
2014-12-20 06:37:14 +02:00
Barosl Lee
314ed2df09
Drop the Match prefix from the MatchSource variants
2014-12-20 09:17:14 +09:00
Barosl Lee
7023bea22c
Print a friendly error for the if-let construct without an else block
...
Fixes #19991 .
2014-12-20 09:17:14 +09:00
Barosl Lee
d9f306757d
Detect type inference failure when auto-dereferencing a pointer
...
check::autoderef() returns a ty_err when it fails to infer the type.
probe::probe() should respect this failure and fail together to prevent
further corruption.
Call stack: check::check_method_call() -> method::lookup() ->
probe::probe() + confirm::confirm()
Fixes #19692 .
Fixes #19583 .
Fixes #19297 .
2014-12-20 04:54:43 +09:00
Jorge Aparicio
fa0383f38d
librustc_typeck: use #[deriving(Copy)]
2014-12-19 10:51:00 -05:00
Niko Matsakis
f45c0ef51e
Implement "perfect forwarding" for HR impls ( #19730 ).
2014-12-19 03:29:31 -05:00
Niko Matsakis
c2ca1a4b62
Make all predicates higher-ranked, not just trait references.
2014-12-19 03:29:30 -05:00
Niko Matsakis
1205fd88df
Centralize on using Binder
to introduce new binding levels, rather than having FnSig carry an implicit binding level. This means that we be more typesafe in general, since things that instantiate bound regions can drop the Binder to reflect that.
2014-12-19 03:29:30 -05:00
Niko Matsakis
3cf0fbeee9
Create distinct types for a PolyTraitRef (with bindings) and a normal TraitRef.
2014-12-19 03:29:30 -05:00
Niko Matsakis
b3dcb85404
Fix a bug in the opt-in-copy work: it was failing to liberate the regions bound in the impl before searching for Copy
implements for all fields, leading to problems in the "copyability check". Basically the copyability check would wind up looking for an impl of for<'tcx> Foo<&'tcx T>
. The impl that exists however is impl<T> Copy for Foo<T>
and the current rules do not consider that a match (something I would like to revise in a later PR).
2014-12-19 03:29:30 -05:00
Niko Matsakis
7be059ffcd
Propagate expected type more widely so that we can rewrite the
...
issue-14039 test in a more natural way. Previously the "type we will
cast to" was hidden unless it was an integer.
2014-12-19 03:29:29 -05:00
Niko Matsakis
eb6ea5d49b
Cleanup type resolution to use type folding infrastructure and not
...
have such a silly over-engineered interface.
2014-12-19 03:29:29 -05:00
Niko Matsakis
3efc9d2c55
Fix bug in higher-ranked code that would sometimes leak skolemized regions and/or cause incorrect results.
2014-12-19 03:29:29 -05:00
Jorge Aparicio
9b5de39c25
Address Niko's comments
2014-12-18 15:02:29 -05:00
Jorge Aparicio
5caebb23cd
Tell regionck that user unops are by value
2014-12-18 14:56:00 -05:00
Jorge Aparicio
c5b6d9412d
Tell typeck that user unops are by value
2014-12-18 14:56:00 -05:00
Patrick Walton
ddb2466f6a
librustc: Always parse macro!()
/macro![]
as expressions if not
...
followed by a semicolon.
This allows code like `vec![1i, 2, 3].len();` to work.
This breaks code that uses macros as statements without putting
semicolons after them, such as:
fn main() {
...
assert!(a == b)
assert!(c == d)
println(...);
}
It also breaks code that uses macros as items without semicolons:
local_data_key!(foo)
fn main() {
println("hello world")
}
Add semicolons to fix this code. Those two examples can be fixed as
follows:
fn main() {
...
assert!(a == b);
assert!(c == d);
println(...);
}
local_data_key!(foo);
fn main() {
println("hello world")
}
RFC #378 .
Closes #18635 .
[breaking-change]
2014-12-18 12:09:07 -05:00
Nick Cameron
46eb72453f
Propagate coercions through match expressions.
2014-12-18 13:48:05 +13:00
Alex Crichton
a02885e167
rollup merge of #19918 : pnkfelix/ast-refactor-make-place-in-exprbox-an-option
...
This is to allow us to migrate away from UnUniq in a followup commit,
and thus unify the code paths related to all forms of `box`.
2014-12-17 11:50:30 -08:00
Alex Crichton
4a7757038a
rollup merge of #19892 : pnkfelix/region-graphviz
...
Added -Z print-region-graph debugging option; produces graphviz visualization of region inference constraint graph.
Optionally uses environment variables `RUST_REGION_GRAPH=<path_template>` and `RUST_REGION_GRAPH_NODE=<node-id>` to select which file to output to and which AST node to print.
2014-12-17 11:50:29 -08:00
bors
4e8ba4955c
auto merge of #19789 : nick29581/rust/assoc-ufcs2, r=nikomatsakis
...
Closes #18433
2014-12-17 08:13:07 +00:00
bors
4265e86844
auto merge of #19761 : nick29581/rust/coerce-double, r=nikomatsakis
...
Part of #18469
[breaking-change]
A receiver will only ever get a single auto-reference. Previously arrays and strings would get two, e.g., [T] would be auto-ref'ed to &&[T]. This is usually apparent when a trait is implemented for `&[T]` and has a method takes self by reference. The usual solution is to implement the trait for `[T]` (the DST form).
r? @nikomatsakis (or anyone else, really)
2014-12-17 02:42:57 +00:00