Commit graph

39666 commits

Author SHA1 Message Date
Alex Crichton
d5d834551c rustc: Add a debug_assertions #[cfg] directive
This commit is an implementation of [RFC 563][rfc] which adds a new
`cfg(debug_assertions)` directive which is specially recognized and calculated
by the compiler. The flag is turned off at any optimization level greater than 1
and may also be explicitly controlled through the `-C debug-assertions`
flag.

[rfc]: https://github.com/rust-lang/rfcs/pull/563

The `debug_assert!` and `debug_assert_eq!` macros now respect this instead of
the `ndebug` variable and `ndebug` no longer holds any meaning to the standard
library.

Code which was previously relying on `not(ndebug)` to gate expensive code should
be updated to rely on `debug_assertions` instead.

Closes #22492
[breaking-change]
2015-03-05 14:51:38 -08:00
Alex Crichton
93192524fb rustc: Don't emit dep-info for imported files
Closes #23089
2015-03-05 14:49:58 -08:00
Jorge Aparicio
f0897aa17f OIBIT: for PhantomData<T> check T rather than the struct itself 2015-03-05 17:10:59 -05:00
bors
b0746ff19b Auto merge of #23031 - Manishearth:rollup, r=Manishearth 2015-03-05 21:03:10 +00:00
Pascal Hertleif
1eb37bf457 Fix Playpen Links Containing Multiple Examples
Fixes #22615.
2015-03-05 20:53:53 +01:00
Alex Crichton
7ed418c3b4 std: Deprecate the old_io::process module
This module is now superseded by the `std::process` module. This module still
has some room to expand to get quite back up to parity with the `old_io`
version, and there is a [tracking issue][issue] for feature requests as well as
known room for expansion.

[issue]: https://github.com/rust-lang/rfcs/issues/941
[breaking-change]
2015-03-05 10:41:42 -08:00
bors
f0c74f85f3 Auto merge of #23026 - nikomatsakis:issue-20220-supertrait, r=nikomatsakis
The main gist of this PR is commit 1077efb which removes the list of supertraits from the `TraitDef` and pulls them into a separate table, which is accessed via `lookup_super_predicates`. This is analogous to `lookup_predicates`, which gets the complete where clause. This allows us to create the `TraitDef`, which contains the list generics and so forth, without fully knowing the list of supertraits. This in turn allows the *supertrait listing* to contain references to associated types like `<Self as Foo>::Item`, which were previously impossible because conversion required having the `TraitDef` for `Foo`.

We do not yet support `Self::Item` in a supertrait listing. This doesn't work because to convert that, it attempts to expand out the full set of supertraits, which are in the process of being created. This could potentially be worked out by having the expansion of supertraits proceed in a lazy fashion, but we'd have to define shadowing rules for associated types which we don't currently have.

Along the way (in 9de9ec5) I also removed the restriction against duplicate bounds and generalized the code so that it can handle having the same supertrait multiple times with different arguments, e.g. `Foo : Bar<i32> + Bar<u32>`. This restriction was serving no particular purpose, since the same trait could be extended multiple times indirectly, and in the era of multidispatch it is actively harmful.

This is technically a [breaking-change] because it affects the definition of a super-trait. Anything in a where clause that looks like `where Self : Foo` is now considered a supertrait. Because cycles are disallowed in supertraits, that could lead to some errors. This has not been observed in any existing code.

r? @nrc
2015-03-05 17:52:21 +00:00
awlnx
951ef9d1f1 fix for new attributes failing. issue #22964 2015-03-05 11:53:51 -05:00
Michael Woerister
215d287982 debuginfo: Add test case for extern "C" functions. 2015-03-05 16:41:10 +01:00
Kang Seonghoon
4a6fb45ee1 rustdoc: Reworded comments to give the rationale for JS. 2015-03-05 23:10:15 +09:00
Michael Woerister
e316c662f8 debuginfo: Add debuginfo::with_source_location_override() function...
... and use it to fix a debug-location issue with constants.
2015-03-05 15:00:25 +01:00
Huon Wilson
b5c6ab20b7 Run feature-gating on the final AST passed to the compiler.
This ensures we catch everything; previously, an unknown attribute
inserted by #[cfg_attr(...)] in a macro expansion would not be detected.
2015-03-06 00:18:29 +11:00
Huon Wilson
10426f69da Add more debugging to syntax::feature_gate. 2015-03-06 00:18:29 +11:00
Huon Wilson
ab7ef7402b Use #[allow_internal_unstable] for thread_local!
This destabilises all the implementation details of `thread_local!`,
since they do not *need* to be stable with the new attribute.
2015-03-06 00:18:29 +11:00
Huon Wilson
84b060ce29 Add #[allow_internal_unstable] to track stability for macros better.
Unstable items used in a macro expansion will now always trigger
stability warnings, *unless* the unstable items are directly inside a
macro marked with `#[allow_internal_unstable]`. IOW, the compiler warns
unless the span of the unstable item is a subspan of the definition of a
macro marked with that attribute.

E.g.

    #[allow_internal_unstable]
    macro_rules! foo {
        ($e: expr) => {{
            $e;
            unstable(); // no warning
            only_called_by_foo!();
        }}
    }

    macro_rules! only_called_by_foo {
        () => { unstable() } // warning
    }

    foo!(unstable()) // warning

The unstable inside `foo` is fine, due to the attribute. But the
`unstable` inside `only_called_by_foo` is not, since that macro doesn't
have the attribute, and the `unstable` passed into `foo` is also not
fine since it isn't contained in the macro itself (that is, even though
it is only used directly in the macro).

In the process this makes the stability tracking much more precise,
e.g. previously `println!("{}", unstable())` got no warning, but now it
does. As such, this is a bug fix that may cause [breaking-change]s.

The attribute is definitely feature gated, since it explicitly allows
side-stepping the feature gating system.
2015-03-06 00:18:28 +11:00
Oliver Schneider
18f1e40eaa doc example does nothing 2015-03-05 13:30:30 +01:00
Huon Wilson
7bcf7fb500 Use more associated types in core::iter.
This concretely improves type inference of some cases (see included
test). I assume the compiler struggles to reason about multiple layers
of generic type parameters (even with associated-type equalities) but
*can* understand pure associated types, since they are always directly
computable from the input types.
2015-03-05 22:50:09 +11:00
Manish Goregaokar
340d1cc7d7 Fix tag align tests for 32bit linux (fixes #7340) 2015-03-05 17:09:12 +05:30
Niko Matsakis
9b332ff2c7 Address nits by @nrc. 2015-03-05 05:46:12 -05:00
Valerii Hiora
3f4181a6e5 iOS: open file on aarch64 breaks permissions
According to Apple arm64 calling convention varargs always are passed
through stack. Since `open` is actually a vararg function on Darwin's,
it means that older declaration caused permissions to be taken from
stack, while passed through register => it set file permissions
to garbage and it was simply impossible to read/delete files after they
were created.

They way this commit handles it is to preserve compatibility with
existing code - it simply creates a shim unsafe function so all existing
callers continue work as nothing happened.
2015-03-05 12:41:59 +02:00
Kang Seonghoon
9e28156551 rustdoc: Move sidebar items into shared JavaScript.
It had been a source of huge bloat in rustdoc outputs. Of course,
we can simply disable compiler docs (as `rustc` generates over 90M
of HTML) but this approach fares better even after such decision.

Each directory now has `sidebar-items.js`, which immediately calls
`initSidebarItems` with a JSON sidebar data. This file is shared
throughout every item in the sidebar. The current item is
highlighted via a separate JS snippet (`window.sidebarCurrent`).
The JS file is designed to be loaded asynchronously, as the sidebar
is rendered before the content and slow sidebar loading blocks
the entire rendering. For the minimal accessibility without JS,
links to the parent items are left in HTML.

In the future, it might also be possible to integrate crates data
with the same fashion: `sidebar-items.js` at the root path will do
that. (Currently rustdoc skips writing JS in that case.)

This has a huge impact on the size of rustdoc outputs. Originally
it was 326MB uncompressed (37.7MB gzipped, 6.1MB xz compressed);
it is 169MB uncompressed (11.9MB gzipped, 5.9MB xz compressed) now.
The sidebar JS only takes 10MB uncompressed & 0.3MB gzipped.
2015-03-05 16:35:43 +09:00
Manish Goregaokar
455aa62e4d Rollup merge of #23033 - pelmers:patch-3, r=steveklabnik
I came across a couple of grammar mistakes when refreshing myself on enums.
2015-03-05 12:39:07 +05:30
Manish Goregaokar
8a55fce389 Rollup merge of #23029 - vhbit:ios-env-stab, r=alexcrichton
"body": null,
2015-03-05 12:39:07 +05:30
Manish Goregaokar
acd9554fd6 Rollup merge of #23027 - fenhl:patch-1, r=sfackler
The docs for `std::time::duration::Duration::weeks` were formatted incorrectly.
2015-03-05 12:39:06 +05:30
Manish Goregaokar
4c2bd63d17 Rollup merge of #23006 - dhuseby:master, r=alexcrichton
as the subject says.
2015-03-05 12:39:06 +05:30
Manish Goregaokar
44f8ac0b4d Rollup merge of #22947 - ic:master, r=steveklabnik
Changed guaranteed for \"quaranteed\", and
Made failing/working examples look alike.

r? @steveklabnik
2015-03-05 12:39:06 +05:30
Manish Goregaokar
eab5d0d0ae Rollup merge of #22937 - MDCox:str-docs, r=steveklabnik
Fixes #22902
r? @steveklabnik
2015-03-05 12:39:06 +05:30
Manish Goregaokar
faca553a01 Rollup merge of #22994 - eddyb:unsuffix-ints-good, r=alexcrichton
Automatic has-same-types testing methodology can be found in #22501.
Because most of them don't work with `--pretty=typed`, compile-fail tests were manually audited.

r? @aturon
2015-03-05 12:39:05 +05:30
Manish Goregaokar
931c55ab00 Move span in error (fixup #22764) 2015-03-05 12:38:36 +05:30
Manish Goregaokar
3d3ccfff9e Rollup merge of #23006 - dhuseby:master, r=alexcrichton
as the subject says.
2015-03-05 12:38:36 +05:30
Dave Huseby
13720b5571 updating llvm-auto-clean-trigger too 2015-03-05 12:38:35 +05:30
Dave Huseby
07e51ec7e0 adding bitrig snapshot to snapshots file 2015-03-05 12:38:35 +05:30
Dave Huseby
4ca07af526 bumping again to get the updated configure 2015-03-05 12:38:35 +05:30
Dave Huseby
a73fc0fe83 bumping the jemalloc revision to include the bitrig changes 2015-03-05 12:38:35 +05:30
Manish Goregaokar
ca13fd2a07 Rollup merge of #22973 - djmally:coll_docs, r=Gankro 2015-03-05 12:38:34 +05:30
Dave Huseby
5d003c6f79 updating llvm submodule to include bitrig support 2015-03-05 12:38:34 +05:30
Manish Goregaokar
145b83e633 Rollup merge of #22994 - eddyb:unsuffix-ints-good, r=alexcrichton
Automatic has-same-types testing methodology can be found in #22501.
Because most of them don't work with `--pretty=typed`, compile-fail tests were manually audited.

r? @aturon
2015-03-05 12:38:33 +05:30
Eduard Burtescu
34410ec748 Fix compile-fail error messages after integer suffix removal. 2015-03-05 12:38:33 +05:30
Eduard Burtescu
e64670888a Remove integer suffixes where the types in compiled code are identical. 2015-03-05 12:38:33 +05:30
Manish Goregaokar
c8c4d85b50 Rollup merge of #22764 - ivanradanov:fileline_help, r=huonw
When warnings and errors occur, the associated help message should not print the same code snippet.
https://github.com/rust-lang/rust/issues/21938
2015-03-05 12:38:32 +05:30
Manish Goregaokar
4de4234795 Rollup merge of #23018 - sanxiyn:quote-question, r=huonw
Fix #22957.
2015-03-05 12:38:32 +05:30
Seo Sanghyeon
951118b74f Fix quoting of ?Sized 2015-03-05 12:38:30 +05:30
Manish Goregaokar
71ef0734e7 Rollup merge of #23013 - nikomatsakis:syncbox, r=pnkfelix
When generating WF criteria, do not visit the same type more than once. Fixes an infinite stack overflow (#23003).

r? @aturon
2015-03-05 12:37:49 +05:30
Manish Goregaokar
bedfca0fb3 Rollup merge of #23004 - alexcrichton:libc-stable, r=brson
This same source is being built in the Cargo ecosystem and hence needs to build
on stable Rust as well. This commit places the `no_std` attribute along with the
`no_std` feature behind a `cfg_attr` flag so they are not processed when
compiled on crates.io
2015-03-05 12:37:49 +05:30
Manish Goregaokar
24f00eb2ae Rollup merge of #23001 - alexcrichton:index-output-stable, r=nikomatsakis
This stability attribute was left out by accident and the stability pass has
since picked up the ability to check for this. As a result, crates are currently
getting warnings for implementations of `Index`.
2015-03-05 12:37:49 +05:30
Manish Goregaokar
bb459bf95b Rollup merge of #23000 - Florob:unicode-FL, r=brson
This handles the ranges contained in UnicodeData.txt.
Counterintuitively this actually makes the tables shorter.
2015-03-05 12:37:48 +05:30
Manish Goregaokar
478c396b7a Rollup merge of #22939 - bleibig:grammar-updates, r=sanxiyn
Updates to the bison grammar to account for recent grammar additions and new tests. In particular:

* Support parsing `impl MyTrait for .. { }`
* Support parsing ExprQualifiedPaths without \"as TRAIT_REF\" such as `<Foo>::bar(&Foo)`
* Support parsing \"for\" clauses at the beginning of where clauses such as `where for<'a, 'b> &'a T: Bar<'b>`
2015-03-05 12:37:48 +05:30
Manish Goregaokar
d693ec17a5 Rollup merge of #22029 - iKevinY:tidy-changes, r=brson
Currently, the list of files linted in `tidy.py` is unordered. It seems more appropriate for more frequently appearing files (like `.rs`) to appear at the top of the list and for \"other files\" to appear at the very end. This PR also changes the wildcard import of `check_license()` into an explicit one.

```
Before:                     After:
* linted 4 .sh files        * linted 5034 .rs files
* linted 4 .h files         * linted 29 .c files
* linted 29 .c files        * linted 28 .py files
* linted 2 .js files        * linted 4 .sh files
* linted 0 other files      * linted 4 .h files
* linted 28 .py files       * linted 2 .js files
* linted 5034 .rs files     * linted 0 other files
```

r? @brson
2015-03-05 12:37:48 +05:30
bors
68740b4054 Auto merge of #22061 - pczarn:quote_matcher_and_attr, r=kmcallister
Fixes #19674
Fixes #17396 (already closed, yeah)

cc @kmcallister , @cmr
2015-03-05 04:32:51 +00:00
bors
cc722a4dd3 Auto merge of #22873 - alexcrichton:deprecate-fs, r=aturon
This commit deprecates the majority of std::old_io::fs in favor of std::fs and
its new functionality. Some functions remain non-deprecated but are now behind a
feature gate called `old_fs`. These functions will be deprecated once
suitable replacements have been implemented.

The compiler has been migrated to new `std::fs` and `std::path` APIs where
appropriate as part of this change.

[breaking-change]
2015-03-05 01:19:15 +00:00