Commit graph

7124 commits

Author SHA1 Message Date
Piotr Jawniak
f8e06c4965 Remove unnecessary to_string calls
This commit removes superfluous to_string calls from various places
2014-06-26 08:56:49 +02:00
bors
edb4e599ab auto merge of #15184 : jbclements/rust/for-loop-hygiene-etc, r=jbclements
It turns out that bindings introduced by 'for' loops were not treated hygienically. The fix for this is to make the 'for' expansion more like a macro; rather than expanding sub-pieces and then assembling them, we need to rewrite the for and then call expand again on the whole thing.

This PR includes a test and the fix.

It also contains a number of other things:
- unit tests for other forms of hygiene (currently ignored)
- a fix for the isaac.rs macro that (it turned out) was relying on capturing
- other miscellaneous cleanup and comments
2014-06-26 02:21:28 +00:00
John Clements
e880c42920 more loops to be ignored by pretty-rpass 2014-06-25 19:15:34 -07:00
John Clements
d8d48e4aae work around 15189 in test cases 2014-06-25 17:08:47 -07:00
John Clements
43c7bbe735 added compile-fail test for 15167 2014-06-25 14:36:15 -07:00
John Clements
c8558f2300 tidy macro just a bit 2014-06-25 14:14:27 -07:00
bors
9f8149e185 auto merge of #15171 : pcwalton/rust/remove-cross-borrowing, r=brson
This will break code like:

    fn f(x: &mut int) {}

    let mut a = box 1i;
    f(a);

Change it to:

    fn f(x: &mut int) {}

    let mut a = box 1i;
    f(&mut *a);

RFC 33; issue #10504.

[breaking-change]

r? @brson
2014-06-25 18:51:21 +00:00
Patrick Walton
315f2a7054 librustc: Don't try to perform the magical
vector-reference-to-unsafe-pointer-to-element cast if the type to be
casted to is not fully specified.

This is a conservative change to fix the user-visible symptoms of the
issue. A more flexible treatment would delay cast checks to after
function typechecking.

This can break code that did:

    let x: *u8 = &([0, 0]) as *_;

Change this code to:

    let x: *u8 = &([0, 0]) as *u8;

Closes #14893.

[breaking-change]
2014-06-24 23:27:41 -07:00
Patrick Walton
f6bfd2c65b librustc: Remove cross borrowing from mutable Boxes to &mut.
This will break code like:

    fn f(x: &mut int) {}

    let mut a = box 1i;
    f(a);

Change it to:

    fn f(x: &mut int) {}

    let mut a = box 1i;
    f(&mut *a);

RFC 33; issue #10504.

[breaking-change]
2014-06-24 23:14:42 -07:00
bors
7a93beef7f auto merge of #15160 : alexcrichton/rust/remove-f128, r=brson
The f128 type has very little support in the compiler and the feature is
basically unusable today. Supporting half-baked features in the compiler can be
detrimental to the long-term development of the compiler, and hence this feature
is being removed.
2014-06-25 04:31:19 +00:00
Alex Crichton
cdccecb24f Test fixes from the rollup
Closes #14482 (std: Bring back half of Add on String)
Closes #15026 (librustc: Remove the fallback to `int` from typechecking.)
Closes #15119 (Add more description to c_str::unwrap().)
Closes #15120 (Add tests for #12470 and #14285)
Closes #15122 (Remove the cheat sheet.)
Closes #15126 (rustc: Always include the morestack library)
Closes #15127 (Improve ambiguous pronoun.)
Closes #15130 (Fix #15129)
Closes #15131 (Add the Guide, add warning to tutorial.)
Closes #15134 (Xfailed tests for hygiene, etc.)
Closes #15135 (core: Add stability attributes to Clone)
Closes #15136 (Some minor improvements to core::bool)
Closes #15137 (std: Add stability attributes to primitive numeric modules)
Closes #15141 (Fix grammar in tutorial)
Closes #15143 (Remove few FIXMEs)
Closes #15145 (Avoid unnecessary temporary on assignments)
Closes #15147 (Small improvements for metaprogramming)
Closes #15153 (librustc: Check function argument patterns for legality of by-move)
Closes #15154 (test: Add a test for regions, traits, and variance.)
Closes #15159 (rustc: Don't register syntax crates twice)
Closes #13816 (Stabilize version output for rustc and rustdoc)
2014-06-24 18:57:01 -07:00
Robert Buonpastore
d6a4c431f4 Stabilize version output for rustc and rustdoc 2014-06-24 17:24:34 -07:00
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
Piotr Jawniak
e4e3550ff6 Remove few FIXMEs
This commit removes FIXMEs of few closed issues.

Closes #13992
2014-06-24 17:23:16 -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
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
Jakub Wieczorek
c484c2d1f8 Fix #15129
Add support for unit literals to const_eval.
2014-06-24 17:22:48 -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
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
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
3d308fe65b Remove the quad_precision_float feature gate
The f128 type has very little support in the compiler and the feature is
basically unusable today. Supporting half-baked features in the compiler can be
detrimental to the long-term development of the compiler, and hence this feature
is being removed.
2014-06-24 16:36:12 -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
7dc724bf88 Test lint plugins 2014-06-24 11:36:28 -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
Tom Jakubowski
0af4985332 librustc: Remove outdated reference to ~ and @
Fix #15052
2014-06-24 05:02:53 -07:00
bors
71fe44def9 auto merge of #15113 : pnkfelix/rust/fsk-add-regression-test-for-ice-from-10846, r=alexcrichton
Includes a bit more comments than usual for a regression test; I felt like documenting Niko's diagnosis of the original problem here. 

Fix #15111 

r? anyone.
2014-06-24 12:01:50 +00:00
Patrick Walton
5466d13d43 librustc: Feature gate lang items and intrinsics.
If you define lang items in your crate, add `#[feature(lang_items)]`.

If you define intrinsics (`extern "rust-intrinsic"`), add
`#[feature(intrinsics)]`.

Closes #12858.

[breaking-change]
2014-06-23 23:28:28 -07:00
bors
7689213713 auto merge of #14952 : alexcrichton/rust/const-unsafe-pointers, r=brson
This does not yet change the compiler and libraries from `*T` to `*const T` as
it will require a snapshot to do so.

cc #7362

---

Note that the corresponding RFC, https://github.com/rust-lang/rfcs/pull/68, has not yet been accepted. It was [discussed at the last meeting](https://github.com/rust-lang/rust/wiki/Meeting-weekly-2014-06-10#rfc-pr-68-unsafe-pointers-rename-t-to-const-t) and decided to be accepted, however. I figured I'd get started on the preliminary work for the RFC that will be required regardless.
2014-06-24 04:16:53 +00:00
bors
e07cec6f9a auto merge of #14885 : pcwalton/rust/struct-literal-tightening, r=alexcrichton
`for...in`.

Closes #14803.

If you used a structure literal after one of these keywords, surround it
in parentheses.

[breaking-change]

r? @nick29581
2014-06-24 00:36:54 +00:00
Patrick Walton
654d6444fe libsyntax: Disallow struct literals after if, while, match, and
`for...in`.

Closes #14803.

If you used a structure literal after one of these keywords, surround it
in parentheses.

[breaking-change]
2014-06-23 15:39:29 -07:00
bors
d6c1b85246 auto merge of #14974 : Ryman/rust/non_trait_method, r=alexcrichton
Closes #3973.
2014-06-23 21:46:46 +00:00
Kevin Butler
ab24d29f0d rustc: catch impl X for Y where X is not a trait in resolve. 2014-06-23 17:38:32 +01:00
Kevin Butler
579a139215 rustc: catch non-trait methods before typeck.
Closes #3973.
2014-06-23 17:38:32 +01:00
bors
575710f6ce auto merge of #15106 : Sawyer47/rust/rm-duplicated-tests, r=alexcrichton
Even if they used to test different things in the past, they are
now identical to other files.

Closes #11496
2014-06-23 16:16:37 +00:00
Stepan Koltsov
85467b6b41 Allow trailing comma in concat!
(And in other extensions implemented with `get_exprs_from_tts` function).
2014-06-23 15:51:40 +00:00
bors
baa72085f4 auto merge of #15098 : ben0x539/rust/nullary-tuple-struct, r=pcwalton
Reject `struct Foo();` to fix #15095.
2014-06-23 12:46:33 +00:00
Felix S. Klock II
7be2019428 Add regression test for ICE from issue 10846. 2014-06-23 14:17:18 +02:00
Benjamin Herr
17108207b1 test: readd TMPDIR to LD_LIBRARY_PATH for run-make
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-23 13:12:37 +02:00
bors
9a583bb931 auto merge of #15086 : jakub-/rust/xc-struct-variants-match, r=alexcrichton
Turns out field names of struct variants are not encoded in crate metadata.
2014-06-23 09:16:36 +00:00
bors
1efc02a9ec auto merge of #15083 : edwardw/rust/destructure-trait-ref, r=pcwalton
Closes #15031.
2014-06-23 07:26:37 +00:00
bors
ca3e557ee8 auto merge of #15081 : jakub-/rust/issue-15080, r=alexcrichton
Fixes #15080.
2014-06-22 21:31:39 +00:00
Benjamin Herr
ff50ce9a1b libsyntax: don't allow enum structs with no fields
Unit-like structs are written as `struct Foo;`, but we erroneously
accepted `struct Foo();` and took it to mean the same thing. Now we
don't, so use the `struct Foo;` form!

[breaking-change]
2014-06-22 20:21:11 +02:00
Piotr Jawniak
37b8ce0064 Remove duplicated test files
Even if they used to test different things in the past, they are
now identical to other files.

Closes #11496
2014-06-22 15:55:27 +02:00
Jakub Wieczorek
26e692dd39 Fix spurious non-exhaustive errors for cross-crate struct variants 2014-06-21 23:54:48 +02:00
Edward Wang
f87bc6a5d1 Make destructuring trait reference work
Closes #15031.
2014-06-22 04:03:15 +08:00