Eduard Burtescu
d31b9ebef5
Implement <T>::method
UFCS expression syntax.
2015-02-24 14:16:02 +02:00
Eduard Burtescu
ffb8092ccf
syntax: use a single Path for Trait::Item in QPath.
2015-02-24 14:14:16 +02:00
Eduard Burtescu
004df413aa
syntax: don't use TraitRef in QPath.
2015-02-24 14:14:16 +02:00
Eduard Burtescu
a817c69297
syntax: don't store a secondary NodeId for TyPath.
2015-02-24 14:14:16 +02:00
Flavio Percoco
d38aab397e
Rename DefTrait to DefaultImpl
2015-02-22 02:14:25 +01:00
Flavio Percoco
6a2f16e136
Add support for default trait impls in libsyntax
2015-02-22 02:14:24 +01:00
Alex Crichton
bbc8a54c63
rollup merge of #22116 : kmcallister/cfg_attr
...
Fixes #22070 .
Fixes #19372 .
r? @sfackler
2015-02-10 08:43:01 -08:00
Keegan McAllister
0110f5e03c
syntax::fold: Allow removing attributes
2015-02-09 09:01:50 -08:00
Nick Cameron
8122ce81d0
Accept quantification of lifetimes outside the self type in where clauses.
...
Closes #20022
2015-02-09 09:29:53 +13:00
Jorge Aparicio
17bc7d8d5b
cleanup: replace as[_mut]_slice()
calls with deref coercions
2015-02-05 13:45:01 -05:00
Niko Matsakis
0431134119
Remove the explicit closure kind syntax from the parser and AST;
...
upgrade the inference based on expected type so that it is able to
infer the fn kind in isolation even if the full signature is not
available (and we could perhaps do better still in some cases, such as
extracting just the types of the arguments but not the return value).
2015-02-03 11:56:16 -05:00
Jorge Aparicio
d5f61b4332
for x in xs.iter_mut()
-> for x in &mut xs
...
Also `for x in option.iter_mut()` -> `if let Some(ref mut x) = option`
2015-02-02 13:40:18 -05:00
Niko Matsakis
07cdb85331
Move return type an associated type of the Fn*
traits. Mostly this involves tweaking things in
...
the compiler that assumed two input types to assume two ouputs; we also have to teach `project.rs`
to project `Output` from the unboxed closure and fn traits.
2015-01-28 05:15:23 -05:00
Alex Crichton
3a07f859b8
Fallout of io => old_io
2015-01-26 16:01:16 -08:00
Alex Crichton
df1cddf20a
rollup merge of #20179 : eddyb/blind-items
...
Conflicts:
src/librustc/diagnostics.rs
src/librustdoc/clean/mod.rs
src/librustdoc/html/format.rs
src/libsyntax/parse/parser.rs
2015-01-21 11:56:00 -08:00
Alex Crichton
0c981875e4
rollup merge of #21340 : pshc/libsyntax-no-more-ints
...
Collaboration with @rylev!
I didn't change `int` in the [quasi-quoter](99ae1a30f3/src/libsyntax/ext/quote.rs (L328)
), because I'm not sure if there will be adverse effects.
Addresses #21095 .
2015-01-21 09:13:51 -08:00
Eduard Burtescu
7cece8725b
syntax: fix fallout of merging ast::ViewItem into ast::Item.
2015-01-21 16:27:26 +02:00
Seo Sanghyeon
3f0cc8011a
Make output type in ast::FnDecl optional
2015-01-18 22:49:19 +09:00
Paul Collier
d5c83652b3
libsyntax: rename functions from uint to usize
2015-01-17 20:47:30 -08:00
Paul Collier
a32249d447
libsyntax: uint types to usize
2015-01-17 23:45:29 +00:00
bors
8903c21d61
auto merge of #21052 : nick29581/rust/methods-ext, r=sfackler
...
Allows modifiers to be used on methods, associated types, etc.
r? @sfackler
2015-01-15 22:42:58 +00:00
Eduard Burtescu
2cdc86c180
syntax: add fully qualified UFCS expressions.
2015-01-15 18:51:14 +02:00
Nick Cameron
98d471120a
Syntax extensions on trait and impl items.
...
Allows modifiers to be used on methods, associated types, etc.
2015-01-15 08:58:44 +13:00
Alex Crichton
7975fd9cee
rollup merge of #20482 : kmcallister/macro-reform
...
Conflicts:
src/libflate/lib.rs
src/libstd/lib.rs
src/libstd/macros.rs
src/libsyntax/feature_gate.rs
src/libsyntax/parse/parser.rs
src/libsyntax/show_span.rs
src/test/auxiliary/macro_crate_test.rs
src/test/compile-fail/lint-stability.rs
src/test/run-pass/intrinsics-math.rs
src/test/run-pass/tcp-connect-timeouts.rs
2015-01-05 19:01:17 -08:00
Alex Crichton
bb5e16b4b8
rollup merge of #20554 : huonw/mut-pattern
...
Conflicts:
src/librustc_typeck/check/_match.rs
2015-01-05 18:38:51 -08:00
Keegan McAllister
c9f0ff3813
Reserve the keyword 'macro'
2015-01-05 18:21:14 -08:00
Jorge Aparicio
714a5b7f5e
remove TyClosure
2015-01-05 17:22:15 -05:00
Keegan McAllister
677b7cad3d
Reformat metadata for exported macros
...
Instead of copy-pasting the whole macro_rules! item from the original .rs file,
we serialize a separate name, attributes list, and body, the latter as
pretty-printed TTs. The compilation of macro_rules! macros is decoupled
somewhat from the expansion of macros in item position.
This filters out comments, and facilitates selective imports.
2015-01-05 12:00:57 -08:00
Huon Wilson
bf6c007760
Change &
pat to only work with &T, and &mut
with &mut T.
...
This implements RFC 179 by making the pattern `&<pat>` require matching
against a variable of type `&T`, and introducing the pattern `&mut
<pat>` which only works with variables of type `&mut T`.
The pattern `&mut x` currently parses as `&(mut x)` i.e. a pattern match
through a `&T` or a `&mut T` that binds the variable `x` to have type
`T` and to be mutable. This should be rewritten as follows, for example,
for &mut x in slice.iter() {
becomes
for &x in slice.iter() {
let mut x = x;
Due to this, this is a
[breaking-change]
Closes #20496 .
2015-01-05 16:14:17 +11:00
Flavio Percoco
8b883ab268
Add syntax for negative implementations of traits
...
This commit introduces the syntax for negative implmenetations of traits
as shown below:
`impl !Trait for Type {}`
cc #13231
Part of RFC #3
2015-01-04 23:16:13 +01:00
Alex Crichton
4459b1dced
rollup merge of #20341 : nikomatsakis/impl-trait-for-trait-2
...
Conflicts:
src/librustc/middle/traits/mod.rs
src/libstd/io/mod.rs
src/test/run-pass/builtin-superkinds-self-type.rs
2015-01-02 11:13:05 -08:00
Niko Matsakis
1b3734f8ae
Fix fallout from change, adding explicit Sized
annotations where necessary.
2015-01-02 12:06:59 -05:00
Seo Sanghyeon
f2a06f760b
Make type in ast::Local optional
2015-01-02 20:55:31 +09:00
Alex Crichton
2a8547783f
rollup merge of #20194 : nick29581/dst-syntax
...
Part of #19607 .
r? @nikomatsakis
2014-12-29 16:35:59 -08:00
Nick Cameron
4e2afb0052
Remove ExprSlice by hacking the compiler
...
[breaking-change]
The `mut` in slices is now redundant. Mutability is 'inferred' from position. This means that if mutability is only obvious from the type, you will need to use explicit calls to the slicing methods.
2014-12-30 13:06:25 +13:00
Nick Cameron
ed8f503911
Add hypothetical support for ranges with only an upper bound
...
Note that this doesn't add the surface syntax.
2014-12-30 13:06:24 +13:00
Huon Wilson
5e5cc6749e
Slash the ast::Stmt type from 104 to 24 bytes.
...
(on platforms with 64-bit pointers.)
The StmtMac variant is rather large and also fairly rare, so let's
optimise the common case.
2014-12-29 23:55:25 +11:00
Nick Cameron
e656081b70
Accept ?Sized
as well as Sized?
...
Includes a bit of refactoring to store `?` unbounds as bounds with a modifier, rather than in their own world, in the AST at least.
2014-12-26 10:16:24 +13:00
Nick Cameron
8a357e1d87
Add syntax for ranges
2014-12-24 09:12:45 +13: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
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
Felix S. Klock II
7d4e7f0795
AST refactor: make the 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-16 14:30:30 +01:00
Niko Matsakis
22f777ba2e
Parse unsafe impl
but don't do anything particularly interesting with the results.
2014-12-14 11:11:55 -05:00
Niko Matsakis
5686a91914
Parse unsafe trait
but do not do anything with it beyond parsing and integrating into rustdoc etc.
2014-12-14 11:11:55 -05: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
0dac05dd62
libsyntax: use unboxed closures
2014-12-13 17:03:47 -05:00
Nick Cameron
397dda8aa0
Add support for equality constraints on associated types
2014-12-12 19:11:59 +13:00
Niko Matsakis
c4a3be6bd1
Rote changes due to the fact that ast paths no longer carry this extraneous bounds.
2014-11-26 11:42:06 -05:00