about summary refs log tree commit diff
path: root/src/libsyntax/ext/pipes/ast_builder.rs
AgeCommit message (Collapse)AuthorLines
2013-08-01Remove the pipes compilerBrian Anderson-63/+0
The pipes compiler produced data types that encoded efficient and safe bounded message passing protocols between two endpoints. It was also capable of producing unbounded protocols. It was useful research but was arguably done before its proper time. I am removing it for the following reasons: * In practice we used it only for producing the `oneshot` and `stream` unbounded protocols and all communication in Rust use those. * The interface between the proto! macro and the standard library has a large surface area and was difficult to maintain through language and library changes. * It is now written in an old dialect of Rust and generates code which would likely be considered non-idiomatic. * Both the compiler and the runtime are difficult to understand, and likewise the relationship between the generated code and the library is hard to understand. Debugging is difficult. * The new scheduler implements `stream` and `oneshot` by hand in a way that will be significantly easier to maintain. This shouldn't be taken as an indication that 'channel protocols' for Rust are not worth pursuing again in the future.
2013-07-17librustc: Remove all uses of "copy".Patrick Walton-4/+4
2013-07-07De-share ast::TyJames Miller-4/+4
2013-07-07De-managed ast::PathJames Miller-13/+13
2013-06-25great renaming propagation: syntaxCorey Richardson-3/+1
2013-06-13automated whitespace fixesDaniel Micay-1/+0
2013-05-30Remove unnecessary 'use' formsDaniel Farina-2/+1
Fix a laundry list of warnings involving unused imports that glutted up compilation output. There are more, but there seems to be some false positives (where 'remedy' appears to break the build), but this particular set of fixes seems safe.
2013-05-29librustc: Stop reexporting the standard modules from prelude.Patrick Walton-0/+3
2013-05-23cleanup warnings from libsyntaxErick Tryzelaar-2/+0
2013-05-22syntax: Change syntax extensions to expand to `std::foo` instead of `core::foo`Patrick Walton-0/+1
2013-05-22libextra: Rename the actual metadata names of libcore to libstd and libstd ↵Patrick Walton-0/+3
to libextra
2013-05-22syntax/ext: convert all AstBuilder methods to a uniform syntax.Huon Wilson-1/+1
2013-05-22syntax/ext: collect the ast building traits into a single trait.Huon Wilson-381/+1
2013-05-22syntax/ext: modernise ext_ctxt to be CamelCase and use new.Huon Wilson-2/+2
2013-05-09Use a specialized string interner to reduce the need for owned stringsBjörn Steinbrink-7/+7
&str can be turned into @~str on demand, using to_owned(), so for strings, we can create a specialized interner that accepts &str for intern() and find() but stores and returns @~str.
2013-04-29librustc: Remove the concept of modes from the compiler.Patrick Walton-1/+0
This commit does not remove `ty::arg`, although that should be possible to do now.
2013-04-27only use #[no_core] in libcoreDaniel Micay-4/+0
2013-04-22librustc: Remove `use mod` from the languagePatrick Walton-1/+0
2013-04-19syntax: de-mode and prepare for de-modeing rustcAlex Crichton-42/+42
2013-04-10path -> PathJohn Clements-15/+15
2013-03-31Fix warningsBrian Anderson-1/+1
2013-03-29Add AbiSet and integrate it into the AST.Niko Matsakis-1/+3
I believe this patch incorporates all expected syntax changes from extern function reform (#3678). You can now write things like: extern "<abi>" fn foo(s: S) -> T { ... } extern "<abi>" mod { ... } extern "<abi>" fn(S) -> T The ABI for foreign functions is taken from this syntax (rather than from an annotation). We support the full ABI specification I described on the mailing list. The correct ABI is chosen based on the target architecture. Calls by pointer to C functions are not yet supported, and the Rust type of crust fns is still *u8.
2013-03-28Removing unused importsAlex Crichton-2/+2
2013-03-13librustc: Don't accept `as Trait` anymore; fix all occurrences of it.Patrick Walton-1/+1
2013-03-04Remove unused imports throughout src/Alex Crichton-2/+0
2013-03-01Merge remote-tracking branch 'remotes/origin/incoming' into incomingErick Tryzelaar-4/+6
2013-03-01Avoid calling to_vec() unnecessarily in parser.Niko Matsakis-4/+6
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-01Merge remote-tracking branch 'remotes/origin/incoming' into incomingErick Tryzelaar-1/+1
2013-02-28Fix implicit leaks of imports throughout librariesAlex Crichton-1/+1
Also touch up use of 'pub' and move some tests around so the tested functions don't have to be 'pub'
2013-02-28Merge remote-tracking branch 'remotes/origin/incoming' into incomingErick Tryzelaar-56/+96
2013-02-27auto merge of #5141 : nikomatsakis/rust/region-syntax-expl-lifetimes, ↵bors-32/+40
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-32/+40
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-2/+2
2013-02-27librustc: Forbid `pub` or `priv` before trait implementationsPatrick Walton-2/+2
2013-02-26libsyntax: remove vecs_implicitly_copyable from the syntax extensionsErick Tryzelaar-8/+8
2013-02-25libsyntax: add explicit modes where required to copy strs/vecsErick Tryzelaar-33/+41
2013-02-25libsyntax: Convert ast::attribute_ to store a @meta_itemErick Tryzelaar-1/+1
2013-02-20librustc: Separate most trait bounds with '+'. rs=plussingPatrick Walton-1/+1
2013-02-19convert ast::meta_items to take @~strsErick Tryzelaar-2/+3
2013-02-18auto merge of #5004 : luqmana/rust/rename-use-import, r=catamorphismbors-1/+1
Seems like my previous pull request got lost along the way somehow. So here it is updated.
2013-02-17libsyntax: Update view_item_use/import to reflect actual usageLuqman Aden-1/+1
2013-02-17libsyntax: Long lines.Luqman Aden-4/+8
2013-02-17libsyntax: Explicit-self-ify pipes compiler.Luqman Aden-65/+60
2013-02-17libsyntax: Remove last use of structural records in pipes compiler.Luqman Aden-20/+28
2013-02-15librustc: Stop parsing `impl Type : Trait` and fix several declarations that ↵Patrick Walton-2/+2
slipped through. r=tjc
2013-01-31test cases, cleanupJohn Clements-6/+7
2013-01-31Finalize moves-based-on-type implementation.Niko Matsakis-11/+1
Changes: - Refactor move mode computation - Removes move mode arguments, unary move, capture clauses (though they still parse for backwards compatibility) - Simplify how moves are handled in trans - Fix a number of illegal copies that cropped up - Workaround for bug involving def-ids in params (see details below) Future work (I'll open bugs for these...): - Improve error messages for moves that are due to bindings - Add support for moving owned content like a.b.c to borrow check, test in trans (but I think it'll "just work") - Proper fix for def-ids in params Def ids in params: Move captures into a map instead of recomputing. This is a workaround for a larger bug having to do with the def-ids associated with ty_params, which are not always properly preserved when inlining. I am not sure of my preferred fix for the larger bug yet. This current fix removes the only code in trans that I know of which relies on ty_param def-ids, but feels fragile.
2013-01-29libsyntax: De-export a lot of libsyntax. rs=deëxportingPatrick Walton-6/+5
2013-01-29librustc: Disallow trait bounds in types, enumerations, and structure ↵Patrick Walton-0/+7
definitions. r=tjc
2013-01-29libstd: Remove "dual impls" from the language and enforce coherence rules. ↵Patrick Walton-1/+1
r=brson "Dual impls" are impls that are both type implementations and trait implementations. They can lead to ambiguity and so this patch removes them from the language. This also enforces coherence rules. Without this patch, records can implement traits not defined in the current crate. This patch fixes this, and updates all of rustc to adhere to the new enforcement. Most of this patch is fixing rustc to obey the coherence rules, which involves converting a bunch of records to structs.