about summary refs log tree commit diff
path: root/src/libsyntax/ext
AgeCommit message (Collapse)AuthorLines
2013-03-28Removing unused importsAlex Crichton-41/+20
2013-03-28auto merge of #5593 : luqmana/rust/inline-asm, r=catamorphismbors-3/+13
Clean things up a bit. Also, allow selecting intel syntax in addition to the default AT&T dialect.
2013-03-28librustc: Remove common fields and nested enums from the languagePatrick Walton-15/+5
2013-03-27auto merge of #5578 : erickt/rust/incoming, r=jbclements,ericktbors-23/+245
Hey folks, This patch series does some work on the json decoder, specifically with auto decoding of enums. Previously, we would take this code: ``` enum A { B, C(~str, uint) } ``` and would encode a value of this enum to either `["B", []]` or `["C", ["D", 123]]`. I've changed this to `"B"` or `["C", "D", 123]`. This matches the style of the O'Caml json library [json-wheel](http://mjambon.com/json-wheel.html). I've added tests to make sure all this work. In order to make this change, I added passing a `&[&str]` vec to `Decode::emit_enum_variant` so the json decoder can convert the name of a variant into it's position. I also changed the impl of `Encodable` for `Option<T>` to have the right upper casing. I also did some work on the parser, which allows for `fn foo<T: ::cmp::Eq>() { ... }` statements (#5572), fixed the pretty printer properly expanding `debug!("...")` expressions, and removed `ast::expr_vstore_fixed`, which doesn't appear to be used anymore.
2013-03-27libsyntax: Allow selecting intel style asm.Luqman Aden-1/+5
2013-03-27libsyntax: use a struct for inline asm in ast.Luqman Aden-3/+9
2013-03-27syntax: Remove deprecated expr_vstore_fixedErick Tryzelaar-5/+0
2013-03-27std: Decode::read_enum_variant should pass in the variant namesErick Tryzelaar-3/+14
Because the json::Decoder uses the string variant name, we need a way to correlate the string to the enum index. This passes in a static &[&str] to read_enum_variant, which allows the json::Decoder to know which branch it's trying to process.
2013-03-27std: add option type directly to serialize::{En,De}codeErick Tryzelaar-9/+70
2013-03-27syntax: pass some values around by referenceErick Tryzelaar-4/+4
2013-03-27syntax: Add new values that can be used with the quasiquoterErick Tryzelaar-2/+157
2013-03-27remove sty_by_ref, though traces still remain due to dtorsNiko Matsakis-4/+4
2013-03-26librustc: Modify all code to use new lifetime binder syntaxPatrick Walton-10/+12
2013-03-26option: rm functions that duplicate methodsDaniel Micay-3/+1
2013-03-26syntax: Removing uses of HashMapAlex Crichton-14/+18
2013-03-26Remove unused imports throughoutAlex Crichton-6/+2
2013-03-26Rip out old code that still structured method calls as aNiko Matsakis-119/+93
expr_call(expr_field(...)) rather than an expr_method_call. There is probably more such code in trans that should be removed.
2013-03-22librustc: Add explicit lifetime binders and new lifetime notation in ↵Patrick Walton-2/+2
core/std/syntax/rustc
2013-03-22librustc: Remove the `const` declaration form everywherePatrick Walton-1/+1
2013-03-22libsyntax: Introduce the new `assert!` macro; make `assert` no longer a keywordPatrick Walton-0/+13
2013-03-22auto merge of #5488 : pcwalton/rust/depure, r=pcwaltonbors-13/+13
2013-03-22librustc: Remove `pure` from libsyntax and librustc.Patrick Walton-10/+10
2013-03-22librustc: Remove all uses of `static` from functions. rs=destaticPatrick Walton-3/+3
2013-03-22Pass the fmt! buffer to each conversion methodAlex Crichton-58/+59
Achieves a little more speedup and avoids allocations around some strings in conv_str
2013-03-22Build up the result of fmt! in a buffer instead of a vectorAlex Crichton-30/+44
2013-03-22syntax: make old `#[deriving_foo]` attribute obsoleteAndrew Paseltiner-3/+31
2013-03-22syntax: replace uses of old deriving attribute with new oneAndrew Paseltiner-4/+4
2013-03-21auto merge of #5407 : jbclements/rust/add-assert-eq-macro, r=jbclementsbors-18/+25
Adds an assert_eq! macro that asserts that its two arguments are equal. Error messages can therefore be somewhat more informative than a simple assert, because the error message includes "expected" and "given" values.
2013-03-21back-renamed slice_DBG_BRWD, slice_V_DBG_BRWD -> slice, slice_DBG_UNIQ -> ↵Marvin Löbel-1/+1
slice_unique
2013-03-21renamed str::view -> slice_DBG_BRWDMarvin Löbel-1/+1
renamed str::slice -> slice_DBG_UNIQ changed vec slice method -> to_owned() renamed vec view method -> slice_V_DBG_BRWD
2013-03-20change some uses of fail_unless to assert_eqJohn Clements-18/+15
2013-03-20add assert_eq! macroJohn Clements-0/+10
the assert_eq! macro compares its arguments and fails if they're not equal. It's more informative than fail_unless!, because it explicitly writes the given and expected arguments on failure.
2013-03-20auto merge of #5434 : apasel422/rust/deriving, r=nikomatsakisbors-1271/+1356
This is the first step in refactoring the deriving code in libsyntax. No code is changed, just rearranged.
2013-03-20syntax: Removing some bad copiesAlex Crichton-7/+7
2013-03-19syntax: split deriving module into submodules for each traitAndrew Paseltiner-977/+1062
2013-03-19auto merge of #5436 : alexcrichton/rust/assert-message, r=pcwaltonbors-0/+5
This would close #2761. I figured that if you're supplying your own custom message, you probably don't mind the stringification of the condition to not be in the message.
2013-03-19syntax: move ext/deriving.rs to ext/deriving/mod.rsAndrew Paseltiner-0/+0
2013-03-19auto merge of #5426 : nikomatsakis/rust/issue-4846-lifetimes-in-expl-self, ↵bors-5/+7
r=pcwalton (this will be needed for snapshotting at some point) r? @pcwalton
2013-03-19Allow custom messages on assert statementsAlex Crichton-0/+5
2013-03-18librustc: Make the compiler ignore purity.Patrick Walton-17/+35
For bootstrapping purposes, this commit does not remove all uses of the keyword "pure" -- doing so would cause the compiler to no longer bootstrap due to some syntax extensions ("deriving" in particular). Instead, it makes the compiler ignore "pure". Post-snapshot, we can remove "pure" from the language. There are quite a few (~100) borrow check errors that were essentially all the result of mutable fields or partial borrows of `@mut`. Per discussions with Niko I think we want to allow partial borrows of `@mut` but detect obvious footguns. We should also improve the error message when `@mut` is erroneously reborrowed.
2013-03-18librustc: Convert all uses of old lifetime notation to new lifetime ↵Patrick Walton-4/+10
notation. rs=delifetiming
2013-03-18Make &self permit explicit lifetimes, but don't really use themNiko Matsakis-5/+7
(this will be needed for snapshotting at some point).
2013-03-15auto merge of #5359 : luqmana/rust/inline-asm, r=pcwaltonbors-1/+9
Continuation of #5317. Actually use operands properly now, including any number of output operands. Which means you can do things like call printf: ```Rust fn main() { unsafe { do str::as_c_str(~"The answer is %d.\n") |c| { let a = 42; asm!("mov $0, %rdi\n\t\ mov $1, %rsi\n\t\ xorl %eax, %eax\n\t\ call _printf" : : "r"(c), "r"(a) : "rdi", "rsi", "eax" : "volatile","alignstack" ); } } } ``` ``` % rustc foo.rs % ./foo The answer is 42. ``` Or just add 2 numbers: ```Rust fn add(a: int, b: int) -> int { let mut c = 0; unsafe { asm!("add $2, $0" : "=r"(c) : "0"(a), "r"(b) ); } c } fn main() { io::println(fmt!("%d", add(1, 2))); } ``` ``` % rustc foo.rs % ./foo 3 ``` Multiple outputs! ```Rust fn addsub(a: int, b: int) -> (int, int) { let mut c = 0; let mut d = 0; unsafe { asm!("add $4, $0\n\t\ sub $4, $1" : "=r"(c), "=r"(d) : "0"(a), "1"(a), "r"(b) ); } (c, d) } fn main() { io::println(fmt!("%?", addsub(5, 1))); } ``` ``` % rustc foo.rs % ./foo (6, 4) ``` This also classifies inline asm as RvalueStmtExpr instead of the somewhat arbitrary kind I made it initially. There are a few XXX's regarding what to do in the liveness and move passes.
2013-03-15Tidy.Luqman Aden-1/+1
2013-03-15Implicitly use addr_of for output operands in asm.Luqman Aden-0/+7
2013-03-15Actually pass inline asm operands around.Luqman Aden-1/+2
2013-03-15impl Clone for ~T, ~[T], ~strBen Striegel-1/+1
2013-03-13librustc: Remove "base types" from the language.Patrick Walton-4/+8
2013-03-13librustc: Don't accept `as Trait` anymore; fix all occurrences of it.Patrick Walton-237/+247
2013-03-13auto merge of #5293 : brson/rust/logging, r=brsonbors-19/+18
r? @graydon This removes `log` from the language. Because we can't quite implement it as a syntax extension (probably need globals at the least) it simply renames the keyword to `__log` and hides it behind macros. After this the only way to log is with `debug!`, `info!`, etc. I figure that if there is demand for `log!` we can add it back later. I am not sure that we ever agreed on this course of action, though I *think* there is consensus that `log` shouldn't be a statement.