Commit Graph

29994 Commits

Author SHA1 Message Date
Alex Crichton
fb296b8011 rustc: Don't register syntax crates twice
We only need to register them once, and once they're registered twice warnings
will start being spewed or worse may happen!

Closes #14330
2014-06-24 17:24:19 -07:00
Patrick Walton
86dda1b6f3 test: Add a test for regions, traits, and variance.
Closes #12470.
2014-06-24 17:23:44 -07:00
Patrick Walton
75146fd59c librustc: Check function argument patterns for legality of by-move
bindings.

This will break code that incorrectly did things like:

    fn f(a @ box b: Box<String>) {}

Fix such code to not rely on undefined behavior.

Closes #12534.

[breaking-change]
2014-06-24 17:23:41 -07:00
Keegan McAllister
5ccf056a02 Make parse_expr_res public 2014-06-24 17:23:21 -07:00
Keegan McAllister
26b2fa052f Allow splicing more things in quotes 2014-06-24 17:23:21 -07:00
Keegan McAllister
4e26e2d8ca Use macros to implement syntax::ext::quote::ToSource
This code deserves a bigger refactor, but here's a local improvement.
2014-06-24 17:23:21 -07:00
Björn Steinbrink
a0ec902e23 Avoid unnecessary temporary on assignments
We only need the temporary when the type needs to be dropped, for other
types, we can use trans_into to directly place the value into the
destination.
2014-06-24 17:23:19 -07:00
Piotr Jawniak
e4e3550ff6 Remove few FIXMEs
This commit removes FIXMEs of few closed issues.

Closes #13992
2014-06-24 17:23:16 -07:00
Michael Zhou
58078005cf Fix grammar in tutorial
"as this document" should be "than this document"
2014-06-24 17:23:12 -07:00
Brian Anderson
808b848eaf std: Add stability attributes to primitive numeric modules
The following are unstable:

- core::int, i8, i16, i32, i64
- core::uint, u8, u16, u32, u64
- core::int::{BITS, BYTES, MIN, MAX}, etc.
- std::int, i8, i16, i32, i64
- std::uint, u8, u16, u32, u64

The following are experimental:
- std::from_str::FromStr and impls - may need to return Result instead of Option
- std::int::parse_bytes, etc. - ditto
- std::num::FromStrRadix and impls - ditto
- std::num::from_str_radix - ditto

The following are deprecated:
- std::num::ToStrRadix and imples - Wrapper around fmt::radix. Wrong name (Str vs String)

See https://github.com/rust-lang/rust/wiki/Meeting-API-review-2014-06-23#uint
2014-06-24 17:23:05 -07:00
Brian Anderson
250e2362de Move core::bool tests to run-pass
These are closer to language tests than library.
2014-06-24 17:22:59 -07:00
Brian Anderson
4203dcb351 core: Remove bool::to_bit
This is an unused one-liner.
2014-06-24 17:22:59 -07:00
Brian Anderson
adbd5d7a42 core: Add stability attributes to Clone
The following are tagged 'unstable'

- core::clone
- Clone
- Clone::clone
- impl Clone for Arc
- impl Clone for arc::Weak
- impl Clone for Rc
- impl Clone for rc::Weak
- impl Clone for Vec
- impl Clone for Cell
- impl Clone for RefCell
- impl Clone for small tuples

The following are tagged 'experimental'

- Clone::clone_from - may not provide enough utility
- impls for various extern "Rust" fns - may not handle lifetimes correctly

See https://github.com/rust-lang/rust/wiki/Meeting-API-review-2014-06-23#clone
2014-06-24 17:22:57 -07:00
John Clements
1ea2efece1 added xfailed test for issue 9737 2014-06-24 17:22:54 -07:00
John Clements
a4a0c69209 added xfailed tests for two other flavors of var hygiene 2014-06-24 17:22:54 -07:00
Steve Klabnik
3ed78f5b6b Add the Guide, add warning to tutorial.
In line with what @brson, @cmr, @nikomatsakis and I discussed this morning, my
redux of the tutorial will be implemented as the Guide. This way, I can work in
small iterations, rather than dropping a huge PR, which is hard to review.  In
addition, the community can observe my work as I'm doing it.

This adds a note in line with [this comment][reddit] that clarifies the state
of the tutorial, and the community's involvement with it.

[reddit]: http://www.reddit.com/r/rust/comments/28bew8/rusts_documentation_is_about_to_drastically/ci9c98k
2014-06-24 17:22:50 -07:00
Jakub Wieczorek
c484c2d1f8 Fix #15129
Add support for unit literals to const_eval.
2014-06-24 17:22:48 -07:00
Steve Klabnik
85effb9f3e Improve ambiguous pronoun.
Fixes #14806
2014-06-24 17:22:45 -07:00
Alex Crichton
b18c4cfef0 rustc: Always include the morestack library
It was previously assumed that the object file generated by LLVM would always
require the __morestack function, but that assumption appears to be incorrect,
as outlined in #15108. This commit forcibly tells the linker to include the
entire archive, regardless of whether it's currently necessary or not.

Closes #15108
2014-06-24 17:22:41 -07:00
Steve Klabnik
e16a87513a Remove the cheat sheet.
Rust by Example is far better.

Fixes #14380.
2014-06-24 17:22:39 -07:00
Edward Wang
bf61bb6b7f Add tests for #12470 and #14285
The #14869 removed `TraitStore` from `ty_trait` and represented trait
reference as regular `ty_rptr`. An old bug of the missing constraint
upon lifetime parameter of trait reference then is fixed as a side
effect. Adds tests for affected bugs and closes them.

Closes #12470.
Closes #14285.
2014-06-24 17:19:19 -07:00
Steve Klabnik
d58412bfa1 Add more description to c_str::unwrap().
It's unclear what you are supposed to do with this memory.
Let's make that more clear.
2014-06-24 17:19:17 -07:00
Niko Matsakis
9e3d0b002a librustc: Remove the fallback to int from typechecking.
This breaks a fair amount of code. The typical patterns are:

* `for _ in range(0, 10)`: change to `for _ in range(0u, 10)`;

* `println!("{}", 3)`: change to `println!("{}", 3i)`;

* `[1, 2, 3].len()`: change to `[1i, 2, 3].len()`.

RFC #30. Closes #6023.

[breaking-change]
2014-06-24 17:18:48 -07:00
Alex Crichton
f7f95c8f5a std: Bring back half of Add on String
This adds an implementation of Add for String where the rhs is <S: Str>. The
other half of adding strings is where the lhs is <S: Str>, but coherence and
the libcore separation currently prevent that.
2014-06-24 17:17:09 -07:00
bors
05ca9f747d auto merge of #15024 : kmcallister/rust/lint, r=alexcrichton
This is a rebase of #14804 with two new commits on top to implement and test lint plugins.

r? @alexcrichton @huonw: Can you take a look at the new commits, and also weigh in about any issues from the old PR that you feel are still unresolved? I'm leaving the old branch alone to preserve discussion history.
2014-06-24 22:06:48 +00:00
bors
87f3741fdf auto merge of #15118 : stepancheg/rust/concat, r=alexcrichton
(And in other extensions implemented with `get_exprs_from_tts` function).
2014-06-24 19:36:47 +00:00
Keegan McAllister
7e694e7115 More upstream lint changes 2014-06-24 11:36:28 -07:00
Keegan McAllister
7dc724bf88 Test lint plugins 2014-06-24 11:36:28 -07:00
Keegan McAllister
2f274d11ba Implement lint plugins 2014-06-24 11:36:28 -07:00
Keegan McAllister
51d438e568 Incorporate upstream changes to old lint code 2014-06-24 11:36:28 -07:00
Keegan McAllister
e67e6e678d List builtin lints one per line for better diffs 2014-06-24 11:36:28 -07:00
Keegan McAllister
c747626ced Reindent function call continuations, and other style fixes 2014-06-24 11:36:27 -07:00
Keegan McAllister
ba1c0c4232 Drop the ExportedItems argument from LintPass::check_crate
None of the builtin lints use this, and it's now available through the Context.
2014-06-24 11:36:27 -07:00
Keegan McAllister
6fede93475 Make the crate and its exported items available in the lint context 2014-06-24 11:36:27 -07:00
Keegan McAllister
a813a3779b Rework lint attr parsing and use it in middle::dead 2014-06-24 11:36:27 -07:00
Keegan McAllister
b5542f7f5b Convert builtin lints to uppercase names for style consistency 2014-06-24 11:36:27 -07:00
Keegan McAllister
21e7b936d3 Use names in Lint structs in an ASCII-case-insensitive way
In preparation for the next commit.
2014-06-24 11:36:27 -07:00
Keegan McAllister
609552e195 Run lint passes using the Option dance instead of RefCells 2014-06-24 11:36:27 -07:00
Keegan McAllister
c1898b9acb Stop using Default for initializing builtin lints
It wasn't a very appropriate use of the trait. Instead, just enumerate
unit structs and those with a `fn new()` separately.
2014-06-24 11:36:27 -07:00
Keegan McAllister
c7af6060dd Clean up and document the public lint API
Also change some code formatting.

lint::builtin becomes a sibling of lint::context in order to ensure that lints
implemented there use the same public API as lint plugins.
2014-06-24 11:36:27 -07:00
Keegan McAllister
819f76ca82 Store the registered lints in the Session 2014-06-24 11:36:27 -07:00
Keegan McAllister
442fbc473e Replace enum LintId with an extensible alternative 2014-06-24 10:25:15 -07:00
Keegan McAllister
69b6bc5eee Convert lints to a trait-based infrastructure
The immediate benefits are

* moving the state specific to a single lint out of Context, and
* replacing the soup of function calls in the Visitor impl with
  more structured control flow

But this is also a step towards loadable lints.
2014-06-24 10:24:03 -07:00
Keegan McAllister
5d4c96a8f2 Rename lint::Lint to lint::LintId 2014-06-24 10:24:03 -07:00
Keegan McAllister
3144614f0b Move lint infrastructure and individual lints into separate files 2014-06-24 10:24:03 -07:00
Keegan McAllister
75bfedaef5 Move lint.rs out of middle
We're going to have more modules under lint, and the paths get unwieldy. We
also plan to have lints run at multiple points in the compilation pipeline.
2014-06-24 10:22:49 -07:00
bors
719ffc2484 auto merge of #15114 : ben0x539/rust/run-make-libpath, r=alexcrichton
It was accidentally removed in #15006 and that somehow got past the
build bots, causing `src/test/run-make/c-dynamic-dylib` to fail on at
least my linux system.

This resolves #15103 (thanks to @alexcrichton!).
2014-06-24 17:16:48 +00:00
bors
c38125987f auto merge of #15071 : tomjakubowski/rust/fix-15052, r=alexcrichton
Fix #15052
2014-06-24 15:32:29 +00:00
bors
82ec1aef29 auto merge of #14963 : w3ln4/rust/master, r=alexcrichton
The aim of these changes is not working out a generic bi-endianness architectures support but to allow people develop for little endian MIPS machines (issue #7190).
2014-06-24 13:46:54 +00:00
Tom Jakubowski
0af4985332 librustc: Remove outdated reference to ~ and @
Fix #15052
2014-06-24 05:02:53 -07:00