Commit Graph

32470 Commits

Author SHA1 Message Date
bors 63eaba24d6 auto merge of #17221 : bkoropoff/rust/strinterner-unsafe, r=sfackler
The `StrInterner::clear()` method takes self immutably but can invalidate references returned by `StrInterner::get_ref`. Since `get_ref` is unused, just remove it.

Closes #17181
2014-09-15 21:56:00 +00:00
Jonathan Boyett 53c3b83070 add missing semicolon to fix configure on darwin 2014-09-15 17:08:04 -04:00
Martin Olsson 7caf2ab802 Fix two typos 2014-09-15 23:04:08 +02:00
Daniel Micay 84b37374bf heap: optimize EMPTY to avoid relocations
Sized deallocation makes it pointless to provide an address that never
overlaps with pointers returned by an allocator. Code can branch on the
capacity of the allocation instead of a comparison with this sentinel.

This improves the situation in #8859, and the remaining issues are only
from the logging API, which should be disabled by default in optimized
release builds anyway along with debug assertions. The remaining issues
are part of #17081.

Closes #8859
2014-09-15 16:48:20 -04:00
Jakub Wieczorek c2a25a4a83 Add missing unused variable warnings for for loop bindings 2014-09-15 22:24:14 +02:00
Daniel Micay 396f910617 heap: rm out-of-date FIXMEs 2014-09-15 15:28:25 -04:00
Niko Matsakis 48bc291a80 silence various warnings in stdlib, no idea why they suddenly started 2014-09-15 15:28:12 -04:00
Niko Matsakis a2b95624fd add Send bound on impl because stricter trait checking requires it 2014-09-15 15:28:12 -04:00
Niko Matsakis 5ba0196cb8 misc ppaux changes 2014-09-15 15:28:12 -04:00
Niko Matsakis 688ddf7915 typeck/kind -- stop using old trait framework.
- Unify the "well-formedness" checking that typeck was already doing with what
  was taking place in kind.
- Move requirements that things be sized into typeck.
- I left the checking on upvars in kind, though I think it should eventually be
  refactored into regionck (which would perhaps be renamed).

This reflects a general plan to convert typeck so that it registers
obligations or other pending things for conditions it cannot check
eventually. This makes it easier to identify all the conditions that
apply to an AST expression, but can also influence inference in somec
cases (e.g., `Send` implies `'static`, so I already had to promote a lot
of the checking that `kind.rs` was doing into typeck, this branch just
continues the process).
2014-09-15 15:28:12 -04:00
Niko Matsakis 088c94ae96 trans -- stop tracking vtables precisely, instead recompute as needed. 2014-09-15 15:28:12 -04:00
Niko Matsakis 6349a61231 Port coherence to use the new trait matching code 2014-09-15 15:28:12 -04:00
bors 382fc45759 auto merge of #17199 : jakub-/rust/issues-that-need-tests, r=alexcrichton
Closes #7813.
Closes #10902.
Closes #11374.
Closes #11714.
Closes #12920.
Closes #13202.
Closes #13624.
Closes #14039.
Closes #15730.
Closes #15783.
2014-09-15 19:10:55 +00:00
Niko Matsakis c5754f3971 Guts of the new trait matching algorithm, not yet in use 2014-09-15 14:58:49 -04:00
Niko Matsakis 713cf373c1 Take core as a dependency on librlibc. This is needed so that it can
see the lang-items for Sized etc. @acrichto and @thestinger had no
objections.
2014-09-15 14:58:49 -04:00
Niko Matsakis b88f86782e Update error messages in compile-fail tests 2014-09-15 14:58:49 -04:00
Dan Connolly 2ee91ea437 use _sample configurations..._ rather than _here_ as link text 2014-09-15 13:40:16 -04:00
Steve Klabnik 51b4c515f4 remove rendundant function
Fixes #17230.
2014-09-15 13:23:46 -04:00
Steve Klabnik b45853860c remove references to HM inference
Fixes #17229.
2014-09-15 13:23:31 -04:00
Steve Klabnik df6240dc9e properly annotate C code in the guide
Without 'notrust,' we were getting a playpen link.

Fixes #17228.
2014-09-15 13:23:12 -04:00
Steve Klabnik b3432b267d Don't use 'here'
Fixes #17225
2014-09-15 13:21:50 -04:00
Jonas Hietala fb299bd85f json: Properly handle trailing comma error in object decoding.
Closes #16945
2014-09-15 19:12:15 +02:00
bors a8d478db51 auto merge of #17208 : kmcallister/rust/llvm-diagnostics, r=thestinger
I would like to map this information back to AST nodes, so that we can print remarks with spans, and so that remarks can be enabled on a per-function basis.  Unfortunately, doing this would require a lot more code restructuring — for example, we currently throw away the AST map and lots of other information before LLVM optimizations run.  So for the time being, we print the remarks with debug location strings from LLVM.  There's a warning if you use `-C remark` without `--debuginfo`.

Fixes #17116.
2014-09-15 16:56:03 +00:00
Jakub Wieczorek 8a4ef62570 Add tests for a few A-needstest issues
Closes #7813.
Closes #10902.
Closes #11374.
Closes #11714.
Closes #12920.
Closes #13202.
Closes #13624.
Closes #14039.
Closes #15730.
Closes #15783.
2014-09-15 18:09:24 +02:00
bors 8e2860407b auto merge of #16887 : steveklabnik/rust/guide_iterators, r=alexcrichton
This isn't ready to merge yet.

The 'containers and iterators' guide is basically just a collection of stuff that should be in the module definitions. So I'm moving the guide to just an 'iterators' guide, and moved the info that was there into the right places.

So, is this a good path forward, and is all of the information still correct?
2014-09-15 15:11:12 +00:00
bors e73156fe32 auto merge of #17200 : brson/rust/wintrip-w64, r=cmr
This updates our build system to prefer `i686-w64-mingw32` as the 32-bit windows triple instead of `i686-pc-mingw32`. This is an interim step to make the build artifacts consistent until https://github.com/rust-lang/rust/issues/15717 is done.
2014-09-15 12:56:13 +00:00
bors 1f5ee97184 auto merge of #17192 : skade/rust/fix-osx-linking, r=alexcrichton
Don't pass -fno-use-linker-plugin on OS X as clang does not accept it.

clang fails linking with:

```
error: linking with `cc` failed: exit code: 1
... arg list omitted...
note: clang: error: unknown argument: '-fno-use-linker-plugin' [-Wunused-command-line-argument-hard-error-in-future]
clang: note: this will be a hard error (cannot be downgraded to a warning) in the future
```

clang version:

```
$ clang -v
Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
Target: x86_64-apple-darwin13.2.0
Thread model: posix
```
2014-09-15 09:56:11 +00:00
bors 3e7e2af472 auto merge of #17256 : alexcrichton/rust/issue-17183, r=sfackler
This file is touched during the build process and will trigger more rebuilds
than necessary.

Closes #17183
2014-09-15 07:06:09 +00:00
Florian Gilcher e9c4efb1bf Only pass -fno-use-linker-plugin on Windows
Only pass -fno-use-linker-plugin on Windows where it avoids pulling in
dependencies. Passing it to clang on OS X and Linux would make it fail
though.
2014-09-15 07:12:52 +02:00
bors e4771d142b auto merge of #16853 : tbu-/rust/pr_mapinplace, r=aturon
This is implemented using a new struct PartialVec which implements the proper
drop semantics in case the conversion is interrupted by an unwind.

For the old pull requests, see #15302, #16369.
2014-09-15 04:46:13 +00:00
Brian Koropoff 0818955905 Add regression test for issue #17252 2014-09-14 20:58:34 -07:00
Brian Koropoff 83b7cb7ceb Separate static item recursion check into its own pass
This new pass is run before type checking so that recursive items
are detected beforehand.  This prevents going into an infinite
recursion during type checking when a recursive item is used in
an array type.

As a bonus, use `span_err` instead of `span_fatal` so multiple
errors can be reported.

Closes issue #17252
2014-09-14 20:56:07 -07:00
Alexis Beingessner 975569b380 impl ExactSize for vec::MoveItems 2014-09-14 23:25:08 -04:00
Alex Crichton 134c1e954e mk: Don't depend on src/jemalloc/VERSION
This file is touched during the build process and will trigger more rebuilds
than necessary.

Closes #17183
2014-09-14 14:42:45 -07:00
Tobias Bucher 2c7f6eee0c Fixed `map_in_place` tests after rustc upgrade
This replaces the now obsolete syntax `&[]` with `[].as_slice()`.
2014-09-14 21:35:49 +02:00
Tobias Bucher 7ccab3ae8a Added missing `}` from `map_in_place` rebase 2014-09-14 21:35:49 +02:00
Tobias Bucher 79427f0bc0 Remove the unused `Iterator` implementation of the private `PartialVec` 2014-09-14 21:35:49 +02:00
Tobias Bucher b7e0969a49 Minimize the public interface and rename it to `map_in_place` 2014-09-14 21:35:48 +02:00
Tobias Bucher 5efa232160 Check that the `min_align_of` the both types in a `PartialVec` matches
This is important because the underlying allocator of the `Vec` passes that
information to the deallocator which needs the guarantee that it is the same
parameters that were also passed to the allocation function.
2014-09-14 21:35:48 +02:00
Tobias Bucher 23f2c78d21 Fix some of the issues mentioned in the PR on Github
This specifically includes:
- Fix of the tests
- Remove `transmute` between `Vec`s of different types
2014-09-14 21:35:48 +02:00
Tobias Bucher af293372e4 PartialVec: Remove TODOs and rename `unwrap` to `into_vec` 2014-09-14 21:35:48 +02:00
Tobias Bucher dbc3cb3a54 Add support for in-place map for `Vec`s of types with same size
This is implemented using a new struct `PartialVec` which implements the proper
drop semantics in case the conversion is interrupted by an unwind.
2014-09-14 21:35:48 +02:00
Felix Raimundo 06e85fd1e2 inlines contains in bitflags!
Closes #17210
2014-09-14 20:07:45 +02:00
bors 793a36617b auto merge of #17196 : vhbit/rust/jemalloc-update, r=thestinger
Fixes #17168
2014-09-14 12:56:05 +00:00
bors 21d1f4d7c0 auto merge of #17195 : tbu-/rust/pr_strfindoverflow2, r=alexcrichton 2014-09-14 10:36:08 +00:00
bors 13037a3727 auto merge of #17163 : pcwalton/rust/impls-next-to-struct, r=alexcrichton
type they provide an implementation for.

This breaks code like:

    mod foo {
        struct Foo { ... }
    }

    impl foo::Foo {
        ...
    }

Change this code to:

    mod foo {
        struct Foo { ... }

        impl Foo {
            ...
        }
    }

Closes #17059.

RFC #155.

[breaking-change]

r? @brson
2014-09-14 08:11:04 +00:00
bors 0f99abae9c auto merge of #17130 : jakub-/rust/issue-17033, r=pcwalton
Fixes #17033.
Fixes #15965.

cc @nikomatsakis
2014-09-14 05:46:05 +00:00
bors 19311b6103 auto merge of #13316 : eddyb/rust/ast-ptr, r=brson
Replaces Gc<T> in the AST with a custom owned smart pointer, P<T>. Fixes #7929.

## Benefits
* **Identity** (affinity?): sharing AST nodes is bad for the various analysis passes (e.g. one could bypass borrowck with a shared `ExprAddrOf` node taking a mutable borrow), the only reason we haven't hit any serious issues with it is because of inefficient folding passes which will always deduplicate any such shared nodes. Even if we were to switch to an arena, this would still hold, i.e. we wouldn't just use `&'a T` in the AST, but rather an wrapper (`P<'a, T>`?).

* **Immutability**: `P<T>` disallows mutating its inner `T` (unless that contains an `Unsafe` interior, which won't happen in the AST), unlike `~T`.

* **Efficiency**: folding can reuse allocation space for `P<T>` and `Vec<T>`, the latter even when the input and output types differ (as it would be the case with arenas or an AST with type parameters to toggle macro support). Also, various algorithms have been changed from copying `Gc<T>` to using `&T` and iterators.

* **Maintainability**: there is another reason I didn't just replace `Gc<T>` with `~T`: `P<T>` provides a fixed interface (`Deref`, `and_then` and `map`) which can remain fully functional even if the implementation changes (using a special thread-local heap, for example). Moreover, switching to, e.g. `P<'a, T>` (for a contextual arena) is easy and mostly automated.
2014-09-14 03:21:07 +00:00
Huon Wilson 0deb77d382 Display the doc-block toggle on everything again.
This needs a clone otherwise each successive insertion detaches `toggle`
from the previous position.

Fixes #17125.
2014-09-14 12:07:48 +10:00
Brian Koropoff f1c4e476e9 Add regression test for issue #17216 2014-09-13 18:26:51 -07:00