Niko Matsakis
becbd81aaa
Integrate projection bounds to ExistentialBounds
but do not use them for anything.
2014-12-30 09:36:21 -05:00
Niko Matsakis
4404592f36
Implement associated type projection and normalization.
2014-12-30 09:36:21 -05:00
Niko Matsakis
771dd54ea6
Rename Polytype
to TypeScheme
to differentiate type schemes (early bound) from higher-ranked things (late-bound), which also use the Poly
prefix.
2014-12-30 09:32:42 -05:00
Huon Wilson
91db254c81
More rebase fixes.
2014-12-30 00:11:30 +11:00
Huon Wilson
d442f77561
Rebase fixes.
...
I've totally mangled the history with these rebases; sorry, future programmer!
2014-12-29 23:55:25 +11:00
Huon Wilson
85970d49df
Intern Region in tcx.
...
This makes sty only 32 bytes on machines with 64-bit pointers.
2014-12-29 23:55:25 +11:00
Huon Wilson
4f2b0f032a
Store Substs in an arena in the tcx.
...
This current inflates memory use more than 3 times.
2014-12-29 23:55:24 +11: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
Niko Matsakis
69a1d0e610
Change print out to include the path to the fn, a bit ad-hoc for now .
2014-12-22 12:27:08 -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
Alex Crichton
082bfde412
Fallout of std::str stabilization
2014-12-21 23:31:42 -08:00
Alex Crichton
fb7c08876e
Test fixes and rebase conflicts
2014-12-21 13:49:04 -08:00
Alex Crichton
bc1d818b83
rollup merge of #20057 : nick29581/array-syntax
...
This does NOT break any existing programs because the `[_, ..n]` syntax is also supported.
Part of #19999
r? @nikomatsakis
2014-12-21 09:27:35 -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
ca521fb7a9
rollup merge of #19979 : Munksgaard/19978
...
This fixes #19978 . The bug was introduced by 570325d
, where if the type
of an Fn has not been inferred (strs[0] is "_") we slice from 1 to 0.
2014-12-21 09:26:44 -08:00
Nick Cameron
2e86929a4a
Allow use of [_ ; n]
syntax for fixed length and repeating arrays.
...
This does NOT break any existing programs because the `[_, ..n]` syntax is also supported.
2014-12-20 15:23:29 +13:00
Barosl Lee
314ed2df09
Drop the Match prefix from the MatchSource variants
2014-12-20 09:17:14 +09:00
Philip Munksgaard
3bb91aa28f
Add a check for uninferred type parameter
...
This fixes #19978 . The bug was introduced by 570325d
, where if the type
of an Fn has not been inferred (strs[0] is "_") we slice from 1 to
0. We now explicitly check if `strs[0]` is a single element tuple.
2014-12-19 11:06:38 +01: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
416e62924e
Rename the code that replaces unbound variables to "freshen" rather than "skolemize" -- strictly speaking, this is not skolemization, because it is not discharging quantifiers. Also, the trait selection code will still be doing true skolemization, so it would be a confusing overlap of names.
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
P1start
570325dd3c
Use the sugary syntax to print the Fn
traits in error messages
2014-12-17 09:33:09 +13:00
Niko Matsakis
092d04a40a
Rename FnStyle trait to Unsafety.
2014-12-14 11:11:55 -05:00
Niko Matsakis
d258d68db6
Remove proc
types/expressions from the parser, compiler, and
...
language. Recommend `move||` instead.
2014-12-14 04:21:56 -05:00
Jorge Aparicio
fd06ef24bb
librustc: fix fallout
2014-12-13 17:03:44 -05:00
Niko Matsakis
9f492fefef
Switch to using predicates to drive checking. Correct various tests --
...
in most cases, just the error message changed, but in some cases we
are reporting new errors that OUGHT to have been reported before but
we're overlooked (mostly involving the `'static` bound on `Send`).
2014-12-12 20:25:21 -05:00
Jorge Aparicio
00f3c3f7a7
librustc: remove unnecessary as_slice()
calls
2014-12-06 19:05:58 -05:00
Niko Matsakis
9aeaaab334
Remove dependence on typeck from ppaux.
2014-12-04 10:04:51 -05:00
Niko Matsakis
7c44561ad6
Move various data structures out of typeck and into ty.
2014-12-04 10:04:26 -05:00
Steve Klabnik
cd5c8235c5
/*! -> //!
...
Sister pull request of https://github.com/rust-lang/rust/pull/19288 , but
for the other style of block doc comment.
2014-11-26 16:50:14 -08:00
Felix S. Klock II
5ff9087e05
Refactored new CodeExtent type for improved abstraction.
...
(Previously, statically identifiable scopes/regions were solely
identified with NodeId's; this refactoring prepares for a future
where that 1:1 correspondence does not hold.)
2014-11-20 13:10:03 +01:00
Eduard Burtescu
5bc98954d5
rustc: fix fallout of adding the 'tcx
lifetime to Ty
.
2014-11-19 06:24:34 +02:00
Eduard Burtescu
9706d8f602
rustc: middle: rename ty::t
to Ty
and use it unqualified everywhere.
2014-11-19 06:24:34 +02:00
Niko Matsakis
5a28d178af
Allow impl's to have late-bound regions. Introduces another level of
...
region binding at the impl site, so for method types that come from impls,
it is necessary to liberate/instantiate late-bound regions at multiple
depths.
2014-11-18 12:32:38 -05:00
Niko Matsakis
4ab0c588ff
Switch the code to use De Bruijn indices rather than binder-ids.
2014-11-18 12:27:35 -05:00
Jorge Aparicio
d50e80f449
librustc: DSTify ClassList
, LlvmRepr
and Repr
2014-11-17 18:43:28 -05:00
Niko Matsakis
08d6774f39
Try to remove ty_nil, some kind of error in exhaustiveness checking
2014-11-16 14:23:14 +01:00
Niko Matsakis
c18a1327e3
Make TyTrait embed a TraitRef
, so that when we extend TraitRef, it naturally carries over to object types.
...
I wanted to embed an `Rc<TraitRef>`, but I was foiled by the current
static rules, which prohibit non-Sync values from being stored in
static locations. This means that the constants for `ty_int` and so
forth cannot be initialized.
2014-11-07 15:51:30 -05:00
Alexis Beingessner
eec145be3f
Fallout from collection conventions
2014-11-06 12:26:08 -05:00
Niko Matsakis
81c00e66f5
Better debug printouts
2014-11-05 11:29:15 -05:00
Niko Matsakis
0b5bc3314f
Implement new operator dispatch semantics.
...
Key points are:
1. `a + b` maps directly to `Add<A,B>`, where `A` and `B` are the types of `a` and `b`.
2. Indexing and slicing autoderefs consistently.
2014-11-05 11:29:15 -05:00
Alex Crichton
eb793616dc
rollup merge of #18506 : nikomatsakis/assoc-type-bounds
2014-11-03 15:55:58 -08:00
Niko Matsakis
fb9d0ccc2f
Move associated types into the Assoc space and add in the builtin bounds
...
from the definition (including Sized).
2014-11-03 17:41:01 -05:00
Niko Matsakis
d2f8074eac
Add a 4th space for associated types defined in a trait (currently unused)
2014-11-03 17:41:01 -05:00
P1start
5bf9ef2122
Convert some notes to help messages
...
Closes #18126 .
2014-11-02 16:12:23 +13:00
Jakub Bukaj
a2624fc908
Use the _
representation for integral variables as well
2014-10-30 21:38:20 +01:00
Jakub Bukaj
3db13f4892
Always drop var IDs from type variables modulo -Z verbose, per PR discussion
2014-10-29 23:56:22 +01:00
Jakub Bukaj
1b79303f49
Address review comments
2014-10-29 23:56:22 +01:00
Jakub Bukaj
0c0365d33f
Improve the readability of diagnostics that involve unresolved type variables
...
Diagnostics such as the following
```
mismatched types: expected `core::result::Result<uint,()>`, found `core::option::Option<<generic #1>>`
<anon>:6 let a: Result<uint, ()> = None;
^~~~
mismatched types: expected `&mut <generic #2>`, found `uint`
<anon>:7 f(42u);
^~~
```
tend to be fairly unappealing to new users. While specific type var IDs are valuable in
diagnostics that deal with more than one such variable, in practice many messages
only mention one. In those cases, leaving out the specific number makes the messages
slightly less terrifying.
In addition, type variables have been changed to use the type hole syntax `_` in diagnostics.
With a variable ID, they're printed as `_#id` (e.g. `_#1`). In cases where the ID is left out,
it's simply `_`. Integer and float variables have an additional suffix after the number, e.g.
`_#1i` or `_#3f`.
2014-10-29 23:55:56 +01:00