about summary refs log tree commit diff
path: root/src/libsyntax/ext
AgeCommit message (Collapse)AuthorLines
2013-03-12auto merge of #5320 : apasel422/rust/metaderive, r=graydonbors-0/+45
This is the first in a series of patches I'm working on to clean up the code related to `deriving`. This patch allows ``` #[deriving_eq] #[deriving_iter_bytes] #[deriving_clone] struct Foo { bar: uint } ``` to be replaced with: ``` #[deriving(Eq, IterBytes, Clone)] struct Foo { bar: uint } ``` It leaves the old attributes alone for the time being. Eventually I'd like to incorporate the new closest-match-suggestion infrastructure for mistyped trait names, and also pass the sub-attributes to the deriving code, so that the following will be possible: ``` #[deriving(TotalOrd(qux, bar))] struct Foo { bar: uint, baz: char, qux: int } ``` This says to derive an `impl` in which the objects' `qux` fields are compared first, followed by `bar`, while `baz` is ignored in the comparison. If no fields are specified explicitly, all fields will be compared in the order they're defined in the `struct`. This might also be useful for `Eq`. Coming soon.
2013-03-12syntax: implement #[deriving] meta-attributeAndrew Paseltiner-0/+45
2013-03-12Add alignstack option for inline asm.Luqman Aden-1/+4
2013-03-12Keep everything tidy.Luqman Aden-9/+8
2013-03-12Parse operands properly and add a way to indicate volatile asm.Luqman Aden-11/+129
2013-03-12Create asm! syntax extension.Luqman Aden-0/+56
2013-03-11Remove the log keyword (by renaming it to __log)Brian Anderson-8/+8
We can't quite remove logging from the language, but this hides the keyword.
2013-03-11core: Remove logging constantsBrian Anderson-8/+8
2013-03-11Remove uses of logBrian Anderson-11/+10
2013-03-11libsyntax: Remove newtype enums from libsyntax. rs=deenumPatrick Walton-15/+1
2013-03-11librustc: Replace all uses of `fn()` with `&fn()`. rs=defunPatrick Walton-17/+17
2013-03-09Remove @ast::Region and replace with @ast::Lifetime.Niko Matsakis-11/+4
Modify pretty-printer to emit lifetimes and fix a few minor parser bugs that this uncovered.
2013-03-08auto merge of #5278 : brson/rust/logplusplus, r=brsonbors-8/+32
r? `log` can polymorphically log anything, but debug!, etc. requires a format string. With this patch you can equivalently write `debug!(foo)` or `debug!("%?", foo)`. I'm doing this because I was trying to remove `log` (replacing it with nothing, at least temporarily), but there are a number of logging statements that just want to print an arbitrary value and don't care about the format string. I'm not entirely convinced this is a good change, since it overloads the implementation of these macros and makes their usage slightly more nuanced.
2013-03-08syntax: Remove uses of DVecAlex Crichton-24/+18
2013-03-07test: Fix tests.Patrick Walton-1/+2
2013-03-07librustc: Convert all uses of `assert` over to `fail_unless!`Patrick Walton-3/+3
2013-03-07libsyntax: Remove struct literal expressions from the compilerPatrick Walton-8/+4
2013-03-07Make debug!, etc. macros not require a format stringBrian Anderson-8/+32
The one thing `log` can still do is polymorphically log anything, but debug!, etc. require a format string. With this patch you can equivalently write `debug!(foo)` or `debug!("%?", foo)`
2013-03-06auto merge of #5255 : jbclements/rust/remove-parse-value-ident, r=graydonbors-0/+1
After the removal of the "restricted keyword" feature in 0c82c00dc4f49aeb9b57c92c9a40ae35d8a1ee29 , there's no longer any difference between parse_ident() and parse_value_ident(), and therefore no difference between parse parse_path_without_tps() and parse_value_path(). I've collapsed all of these, removing the redundant functions and eliminating the need for two higher-order arguments.
2013-03-06Add manual &self/ and &static/ and /&self declarations thatNiko Matsakis-16/+15
are currently inferred. New rules are coming that will require them to be explicit. All add some explicit self declarations.
2013-03-06removed unused abstraction over paths and value_pathsJohn Clements-0/+1
2013-03-05core: convert vec::{last,last_opt} to return referencesErick Tryzelaar-1/+1
2013-03-05auto merge of #5231 : jbclements/rust/better-macro-error-message, r=graydonbors-5/+13
Macro invocations with path separators (e.g. foo::bar!()) now produce a sensible error message, rather than an assertion failure. Also added compile-fail test case. Fixes #5218 ?
2013-03-05auto merge of #5179 : alexcrichton/rust/default-warn-unused-import, r=graydonbors-35/+1
I've found that unused imports can often start cluttering a project after a long time, and it's very useful to keep them under control. I don't like how Go forces a compiler error by default and it can't be changed, but I certainly want to know about them so I think that a warn is a good default. Now that the `unused_imports` lint option is a bit smarter, I think it's possible to change the default level to warn. This commit also removes all unused imports throughout the compiler and libraries (500+). The only odd things that I ran into were that some `use` statements had to have `#[cfg(notest)]` or `#[cfg(test)]` based on where they were. The ones with `notest` were mostly in core for modules like `cmp` whereas `cfg(test)` was for tests that weren't part of a normal `mod test` module.
2013-03-04simplified msg (TMI on old one)John Clements-2/+2
2013-03-04better error message for macros with MOD_SEPsJohn Clements-5/+13
2013-03-04libsyntax: Implement `#[deriving_clone]`Patrick Walton-16/+288
2013-03-04Adding missing imports for tests, and gate off othersAlex Crichton-9/+0
2013-03-04Remove unused imports throughout src/Alex Crichton-26/+1
2013-03-03libsyntax: add &self to extensionsErick Tryzelaar-24/+34
2013-03-02auto merge of #5203 : erickt/rust/incoming, r=brsonbors-7/+8
My merges for #5143 missed a couple other copies. This patch corrects this, and gets stage0 to compile libsyntax with `#[deny(vecs_implicitly_copyable)]`. stage1 still fails though.
2013-03-02librustc: Stop parsing `fn@`, `fn~`, and `fn&`Patrick Walton-3/+3
2013-03-02libsyntax: Remove `fn@`, `fn~`, and `fn&` from libsyntax. rs=defunPatrick Walton-26/+46
2013-03-02librustc: Forbid chained imports and fix the logic for one-level renaming ↵Patrick Walton-1/+2
imports
2013-03-02libsyntax: add some more explicit copies for vecs_implicitly_copyable)Erick Tryzelaar-7/+8
2013-03-02Merge remote-tracking branch 'remotes/origin/incoming' into incomingErick Tryzelaar-2/+2
2013-03-01Merge remote-tracking branch 'remotes/origin/incoming' into incomingErick Tryzelaar-6/+8
2013-03-01auto merge of #5165 : brson/rust/unstable, r=brsonbors-2/+2
r? This probably isn't controversial, but I want somebody else to sign off on it.
2013-03-01Avoid calling to_vec() unnecessarily in parser.Niko Matsakis-6/+8
Also, rename the OptVec-to-vector conversion method to opt_vec::take_vec() and convert from a method into a fn because I fear strange bugs.
2013-03-01Rename core::private to core::unstable. #4743Brian Anderson-2/+2
2013-03-01Merge remote-tracking branch 'remotes/origin/incoming' into incomingErick Tryzelaar-21/+44
2013-02-28Remove legacy object creation mode, and convert remaining uses of itNiko Matsakis-5/+3
2013-02-28Fix implicit leaks of imports throughout librariesAlex Crichton-9/+36
Also touch up use of 'pub' and move some tests around so the tested functions don't have to be 'pub'
2013-02-28librustc: Mark all type implementations public. rs=impl-publicityPatrick Walton-1/+1
2013-02-28Merge remote-tracking branch 'remotes/origin/incoming' into incomingErick Tryzelaar-234/+348
2013-02-27auto merge of #5141 : nikomatsakis/rust/region-syntax-expl-lifetimes, ↵bors-190/+260
r=nikomatsakis Major changes are: - replace ~[ty_param] with Generics structure, which includes both OptVec<TyParam> and OptVec<Lifetime>; - the use of syntax::opt_vec to avoid allocation for empty lists; cc #4846 r? @graydon
2013-02-27Introduce lifetime declarations into the lists of type parameters.Niko Matsakis-190/+260
Major changes are: - replace ~[ty_param] with Generics structure, which includes both OptVec<TyParam> and OptVec<Lifetime>; - the use of syntax::opt_vec to avoid allocation for empty lists; cc #4846
2013-02-27Merge remote-tracking branch 'remotes/origin/incoming' into incomingErick Tryzelaar-132/+526
2013-02-27librustc: Forbid `pub` or `priv` before trait implementationsPatrick Walton-9/+9
2013-02-26libsyntax: add some more explicit copiesErick Tryzelaar-12/+21