bors
440ef8b154
Auto merge of #30184 - petrochenkov:ascr, r=nikomatsakis
...
This PR is a rebase of the original PR by @eddyb https://github.com/rust-lang/rust/pull/21836 with some unrebasable parts manually reapplied, feature gate added + type equality restriction added as described below.
This implementation is partial because the type equality restriction is applied to all type ascription expressions and not only those in lvalue contexts. Thus, all difficulties with detection of these contexts and translation of coercions having effect in runtime are avoided.
So, you can't write things with coercions like `let slice = &[1, 2, 3]: &[u8];`. It obviously makes type ascription less useful than it should be, but it's still much more useful than not having type ascription at all.
In particular, things like `let v = something.iter().collect(): Vec<_>;` and `let u = t.into(): U;` work as expected and I'm pretty happy with these improvements alone.
Part of https://github.com/rust-lang/rust/issues/23416
2015-12-19 02:45:15 +00:00
Vadim Petrochenkov
0cc69f0ea3
rustc: Remove def::DefUse
2015-12-16 18:19:11 +03:00
Eduard Burtescu
b8157cc67f
Implement type ascription.
2015-12-16 17:12:35 +03:00
Nick Cameron
18b4fe0e3e
Make name resolution errors non-fatal
2015-12-11 21:00:15 +13:00
Vadim Petrochenkov
35749923ee
Fix the fallout
2015-11-19 11:41:09 +03:00
bors
4aa1f59e1e
Auto merge of #29515 - Manishearth:ice-itembody, r=eddyb
...
r? @eddyb or @nrc
2015-11-03 15:19:07 +00:00
Manish Goregaokar
6468292c35
Fix ICE with unresolved associated items in closures ( fixes #28971 )
2015-11-03 20:09:20 +05:30
bors
5b11b286bc
Auto merge of #28846 - Ms2ger:categorization, r=nikomatsakis
2015-11-02 10:44:08 +00:00
Vadim Petrochenkov
3468b8d42c
Remove PatWildMulti
2015-10-31 03:44:43 +03:00
Ms2ger
9e135f7b15
Rename categorization and stop re-exporting its variants.
2015-10-29 09:38:11 +01:00
Seo Sanghyeon
4e2189fe45
Remove NodeArg
2015-10-27 01:32:04 +09:00
Seo Sanghyeon
d7944cee12
Distinguish argument from local variable
2015-10-27 00:46:11 +09:00
Niko Matsakis
a0dc2d9a29
Introduce semi-duplicate DefIds into DefLocal/DefUpvar to remove use
...
of xxx_local.
2015-10-01 10:37:19 -04:00
Niko Matsakis
cb784b70ba
Remove DefRegion, which is not used
2015-10-01 10:37:19 -04:00
Vadim Petrochenkov
2a779062d8
Use Names in the remaining HIR structures with exception of...
...
PathSegment, PatIdent, ExprWhile, ExprLoop, ExprBreak and ExprAgain - they need Idents for resolve
2015-09-22 19:58:29 +03:00
Vadim Petrochenkov
64fb709f99
Use Names in hir::{Field, ExprMethodCall, ExprField}
2015-09-22 19:53:53 +03:00
Nick Cameron
d21bfff78c
Remove hir::ExprParen
2015-09-17 12:16:46 +12:00
Ariel Ben-Yehuda
5a95acb8ab
split ty::util and ty::adjustment
2015-09-14 14:55:56 +03:00
Niko Matsakis
004d70212a
track, for each upvar, its index in list of upvars
2015-09-06 07:27:22 -04:00
Andrew Paseltiner
b8dad48435
Fix multiple mutable autoderefs with Box
...
Closes #26205 .
2015-09-03 14:41:27 -04:00
Nick Cameron
facdf2ebb1
Add an intital HIR and lowering step
2015-09-03 10:02:36 +12:00
Ariel Ben-Yehuda
65e9bc0c93
store the CodeExtent directly in FreeRegion
...
this makes the code cleaner
2015-08-24 20:46:52 +03:00
Niko Matsakis
e91bef2e05
fallout from moving def-id
2015-08-24 05:35:34 -04:00
Ariel Ben-Yehuda
5f3c1412ad
use VariantDef instead of struct_fields
2015-08-06 16:54:40 +03:00
Niko Matsakis
4172c8237b
Add some debugging to help identify when errors get reported.
2015-07-24 04:53:19 -04:00
Niko Matsakis
1e2677be72
Introduce ClosureSubsts rather than just having random fields in the
...
TyClosure variant; thread this through wherever closure substitutions
are expected, which leads to a net simplification. Simplify trans
treatment of closures in particular.
2015-07-24 04:53:17 -04:00
Niko Matsakis
69d62e04e5
introduce a Vec<Ty> to TyClosure for storing upvar types
2015-07-24 04:50:45 -04:00
Jared Roesch
1a268f4d1b
Rename TypeWithMutability to TypeAndMut
2015-07-10 18:27:06 -07:00
Jared Roesch
754aaea88c
Remove snake_case names from ty.rs
2015-07-08 12:38:19 -07:00
Jared Roesch
7a8f83a6e5
Clean up patch
2015-06-30 02:41:40 -07:00
Jared Roesch
9faae6a5ca
Remove Typer and ClosureTyper
...
This commit finalizes the work of the past commits by fully moving the fulfillment context into
the InferCtxt, cleaning up related context interfaces, removing the Typer and ClosureTyper
traits and cleaning up related intefaces
2015-06-30 02:41:40 -07:00
Jared Roesch
05c57e0e6a
Remove Typer + ClosureTyper impls for BlockS
2015-06-30 02:41:02 -07:00
Jared Roesch
79d02895ff
Begin refactor type checking state
...
This first patch starts by moving around pieces of state related to
type checking. The goal is to slowly unify the type checking state
into a single typing context. This initial patch moves the
ParameterEnvironment into the InferCtxt and moves shared tables
from Inherited and ty::ctxt into their own struct Tables. This
is the foundational work to refactoring the type checker to
enable future evolution of the language and tooling.
2015-06-27 13:43:20 -07:00
Eduard Burtescu
ad66c215aa
rustc: switch most remaining middle::ty functions to methods.
2015-06-26 07:34:57 +03:00
Eduard Burtescu
59935f70e0
rustc: move some functions in middle::ty working on Ty to methods.
2015-06-26 07:34:56 +03:00
Eduard Burtescu
0b58fdf925
rustc: remove Repr and UserString.
2015-06-19 01:39:26 +03:00
Eduard Burtescu
dfbc9608ce
rustc: replace Repr/UserString impls with Debug/Display ones.
2015-06-19 01:36:20 +03:00
Eduard Burtescu
b510ea1487
Clean up unused argument/variable warnings.
2015-06-19 01:32:45 +03:00
Eduard Burtescu
a3727559c6
rustc: use the TLS type context in Repr and UserString.
2015-06-19 01:32:44 +03:00
Eli Friedman
199e60aa22
Remove unused type InteriorSafety.
2015-06-16 13:05:07 -07:00
Eli Friedman
33b7386d39
Split TyArray into TyArray and TySlice.
...
Arrays and slices are closely related, but not that closely; making the
separation more explicit is generally more clear.
2015-06-12 16:50:13 -07:00
Eli Friedman
3c69db4c3c
Cleanup: rename middle::ty::sty and its variants.
...
Use camel-case naming, and use names which actually make sense in modern Rust.
2015-06-12 11:07:16 -07:00
bors
ae8a3c92a7
Auto merge of #26182 - Manishearth:rollup, r=Manishearth
...
- Successful merges: #26142 , #26143 , #26145 , #26146 , #26164 , #26174
- Failed merges:
2015-06-10 18:41:42 +00:00
Manish Goregaokar
7d9427e6cd
Rollup merge of #26146 - steveklabnik:remove_unsafe_pointer, r=Gankro
...
Using two terms for one thing is confusing, these are called 'raw pointers' today.
2015-06-10 22:07:10 +05:30
Eduard Burtescu
76eaed44d9
syntax: move ast_map to librustc.
2015-06-10 02:40:45 +03:00
Steve Klabnik
2c75256c15
Exise 'unsafe pointer' in favor of 'raw pointer'
...
Using two terms for one thing is confusing, these are called 'raw pointers' today.
2015-06-09 16:49:24 -04:00
Steve Klabnik
a3cd5eb1bd
Exise 'owned pointer' from the codebase
...
Still some references left to this old term, I've updated them to say boxes.
Related to #25851
2015-06-09 16:26:21 -04:00
Tamir Duberstein
5cfa713a1c
Use empty()
instead of a special const
2015-05-05 22:03:45 -04:00
Tamir Duberstein
8c58fe1739
Fallout
2015-04-29 08:55:31 -07:00
Sean Patrick Santos
29eb550ee6
Get associated consts working in match patterns.
2015-04-23 21:02:29 -06:00