Commit Graph

57166 Commits

Author SHA1 Message Date
Andre Bogus
41d1cd7196 add static_in_const feature gate
also updates tests and deletes the spurious .bk files I inadvertently
added last time.
2016-09-07 23:18:46 +02:00
Jakob Demler
f6aab5b9e5 Fixed typo in nomicon 2016-09-07 22:15:32 +02:00
Jake Goldsborough
7e46f2ceaa moving nodejs detection logic to configure and adding
a nodejs cmd sanity check
2016-09-07 13:13:37 -07:00
Aleksey Kladov
f9a340804c Add a test for CString drop 2016-09-07 22:33:10 +03:00
bors
9627e9ef6e Auto merge of #36266 - Sawyer47:issue-35169, r=alexcrichton
rustdoc: Filter more incorrect methods inherited through Deref

Old code filtered out only static methods. This code also excludes &mut self methods if there is no DerefMut implementation.

Fixes #35169
2016-09-07 12:30:03 -07:00
Aleksey Kladov
04b776e5ec Zero first byte of CString on drop
This should prevent code like

```
let ptr = CString::new("hello").unwrap().as_ptr();
```

from working by accident.
2016-09-07 22:17:58 +03:00
Ulrich Weigand
ce3cecf116 Use layout_of to detect C enums 2016-09-07 21:03:21 +02:00
Nick Cameron
b58294e328 save-analysis: strip /// or whatever from doc comments 2016-09-07 11:03:57 -07:00
Nick Cameron
493544a1f9 save-analysis: only emit type in the value for variables 2016-09-07 11:03:56 -07:00
Nick Cameron
ce413e0da2 save-analysis: tweak the type value for functions 2016-09-07 11:03:56 -07:00
bors
cf0cdc452b Auto merge of #36304 - TimNN:fix-36299, r=eddyb
re-add accidentally removed line in wfcheck

Fixes #36299, introduced in #36119.

r? @eddyb
2016-09-07 09:15:30 -07:00
Ulrich Weigand
3f0462acbb Fix argument to FIONBIO ioctl
The FIONBIO ioctl takes as argument a pointer to an integer, which
should be either 0 or 1 to indicate whether nonblocking mode is to
be switched off or on.  The type of the pointed-to variable is "int".

However, the set_nonblocking routine in libstd/sys/unix/net.rs passes
a pointer to a libc::c_ulong variable.  This doesn't matter on all
32-bit platforms and on all litte-endian platforms, but it will
break on big-endian 64-bit platforms.

Found while porting Rust to s390x (a big-endian 64-bit platform).

Signed-off-by: Ulrich Weigand <ulrich.weigand@de.ibm.com>
2016-09-07 17:21:10 +02:00
Ulrich Weigand
8760a5e3cc Follow target ABI sign-/zero-extension rules for enum types
While attempting to port Rust to s390x, I ran into an ABI violation
(that caused rust_eh_personality to be miscompiled, breaking unwinding).
The problem is that this function returns an enum type, which is
supposed to be sign-extended according to the s390x ABI.  However,
common code would ignore target sign-/zero-extension rules for any
types that do not satisfy is_integral(), which includes enums.

For the general case of Rust enum types, which map to structure types
with a discriminant, that seems correct.  However, in the special case
of simple enums that map directly to C enum types (i.e. LLVM integers),
this is incorrect; we must follow the target extension rules for those.

Signed-off-by: Ulrich Weigand <ulrich.weigand@de.ibm.com>
2016-09-07 17:14:10 +02:00
Corey Farwell
102b3a937b Add doc example for std::time::Instant::elapsed. 2016-09-07 09:23:17 -04:00
bors
f707582a43 Auto merge of #36289 - euclio:self-suggestion, r=jseyfried
resolve: Suggest `use self` when import resolves

Improves errors messages by replacing "Maybe a missing `extern crate`" messages
with "Did you mean `self::...`" when the `self` import would succeed.

Fixes #34191.

Thank you for the help @jseyfried!
2016-09-07 05:59:50 -07:00
bors
2819eca69c Auto merge of #36296 - nagisa:pass-timing, r=eddyb
Count and report time taken by MIR passes

There’s some desire for deeper introspectability into what MIR passes cost us.

-Z time-passes after this PR:

```
   Compiling test_shim v0.1.0 (file:///home/nagisa/Documents/rust/rust/src/rustc/test_shim)
time: 0.000; rss: 29MB	parsing
time: 0.000; rss: 29MB	configuration
time: 0.000; rss: 29MB	recursion limit
time: 0.000; rss: 29MB	crate injection
time: 0.000; rss: 29MB	plugin loading
time: 0.000; rss: 29MB	plugin registration
time: 0.032; rss: 54MB	expansion
time: 0.000; rss: 54MB	maybe building test harness
time: 0.000; rss: 54MB	assigning node ids
time: 0.000; rss: 54MB	checking for inline asm in case the target doesn't support it
time: 0.000; rss: 54MB	complete gated feature checking
time: 0.000; rss: 54MB	collecting defs
time: 0.004; rss: 54MB	external crate/lib resolution
time: 0.000; rss: 54MB	early lint checks
time: 0.000; rss: 54MB	AST validation
time: 0.001; rss: 54MB	name resolution
time: 0.000; rss: 54MB	lowering ast -> hir
time: 0.000; rss: 56MB	indexing hir
time: 0.000; rss: 56MB	attribute checking
time: 0.000; rss: 56MB	language item collection
time: 0.000; rss: 56MB	lifetime resolution
time: 0.000; rss: 56MB	looking for entry point
time: 0.000; rss: 56MB	looking for plugin registrar
time: 0.000; rss: 56MB	region resolution
time: 0.000; rss: 56MB	loop checking
time: 0.000; rss: 56MB	static item recursion checking
time: 0.000; rss: 56MB	compute_incremental_hashes_map
time: 0.000; rss: 56MB	load_dep_graph
time: 0.000; rss: 56MB	type collecting
time: 0.000; rss: 56MB	variance inference
time: 0.011; rss: 59MB	coherence checking
time: 0.000; rss: 59MB	wf checking
time: 0.000; rss: 59MB	item-types checking
time: 0.000; rss: 59MB	item-bodies checking
time: 0.000; rss: 59MB	drop-impl checking
time: 0.000; rss: 59MB	const checking
time: 0.000; rss: 59MB	privacy checking
time: 0.000; rss: 59MB	stability index
time: 0.000; rss: 59MB	intrinsic checking
time: 0.000; rss: 59MB	effect checking
time: 0.000; rss: 59MB	match checking
time: 0.000; rss: 59MB	liveness checking
time: 0.000; rss: 59MB	rvalue checking
time: 0.000; rss: 59MB	MIR dump
  time: 0.000; rss: 59MB	SimplifyCfg
  time: 0.000; rss: 59MB	QualifyAndPromoteConstants
  time: 0.000; rss: 59MB	TypeckMir
  time: 0.000; rss: 59MB	SimplifyBranches
  time: 0.000; rss: 59MB	SimplifyCfg
time: 0.000; rss: 59MB	MIR passes
time: 0.000; rss: 59MB	borrow checking
time: 0.000; rss: 59MB	reachability checking
time: 0.000; rss: 59MB	death checking
time: 0.000; rss: 59MB	stability checking
time: 0.000; rss: 59MB	unused lib feature checking
time: 0.000; rss: 59MB	lint checking
time: 0.000; rss: 59MB	resolving dependency formats
  time: 0.000; rss: 59MB	NoLandingPads
  time: 0.000; rss: 59MB	SimplifyCfg
  time: 0.000; rss: 59MB	EraseRegions
  time: 0.000; rss: 59MB	AddCallGuards
  time: 0.000; rss: 59MB	ElaborateDrops
  time: 0.000; rss: 59MB	NoLandingPads
  time: 0.000; rss: 59MB	SimplifyCfg
  time: 0.000; rss: 59MB	Deaggregator
  time: 0.000; rss: 59MB	AddCallGuards
  time: 0.000; rss: 59MB	PreTrans
time: 0.000; rss: 59MB	Prepare MIR codegen passes
  time: 0.000; rss: 59MB	write metadata
  time: 0.000; rss: 61MB	translation item collection
  time: 0.000; rss: 61MB	codegen unit partitioning
  time: 0.000; rss: 61MB	internalize symbols
time: 0.007; rss: 61MB	translation
time: 0.000; rss: 61MB	assert dep graph
time: 0.000; rss: 61MB	serialize dep graph
time: 0.000; rss: 61MB	llvm function passes [2]
time: 0.000; rss: 61MB	llvm function passes [3]
time: 0.000; rss: 61MB	llvm function passes [1]
time: 0.000; rss: 61MB	llvm function passes [0]
time: 0.000; rss: 61MB	llvm module passes [2]
time: 0.000; rss: 61MB	llvm module passes [1]
time: 0.000; rss: 61MB	llvm module passes [0]
time: 0.000; rss: 61MB	llvm module passes [3]
time: 0.001; rss: 62MB	codegen passes [1]
time: 0.001; rss: 62MB	codegen passes [2]
time: 0.001; rss: 62MB	codegen passes [0]
time: 0.001; rss: 62MB	codegen passes [3]
time: 0.001; rss: 63MB	codegen passes [1]
time: 0.005; rss: 63MB	LLVM passes
time: 0.000; rss: 63MB	serialize work products
time: 0.001; rss: 63MB	linking
```

r? @eddyb or @nikomatsakis

cc @nrc, @Mark-Simulacrum
2016-09-07 02:47:35 -07:00
Jeffrey Seyfried
d6ea10ec76 Add regression test. 2016-09-07 07:38:29 +00:00
Jeffrey Seyfried
f84d081a7e Avoid instaiblity errors in code generated by syntax_ext::deriving::call_intrinsic(). 2016-09-07 07:38:26 +00:00
bors
fe278a8a32 Auto merge of #36252 - joshtriplett:union-field-never-used, r=sanxiyn
Fix "field is never used" warning to take unions into account

When compiling code containing a union with an unused field, rustc says
"struct field is never used".

Rather than saying "struct or union", or adding logic to determine the
type of the item, just change the message to "field is never used",
dropping the "struct".

Update tests accordingly.
2016-09-06 20:06:34 -07:00
Jorge Aparicio
8cfc69ecea add utility musl_root method, update config.toml.example 2016-09-06 21:49:02 -05:00
Tshepang Lekhonkhobe
b99c5cf109 doc: we got coercion going on here, so no need to be this explicit 2016-09-07 04:15:56 +02:00
Jake Goldsborough
0adcf46cdf detecting nodejs in configure 2016-09-06 18:31:00 -07:00
Justin LeFebvre
a77b55d58f remove the extraneous not_equal implementation for slices. 2016-09-06 20:39:58 -04:00
bors
3b272bf310 Auto merge of #36303 - jonathandturner:rollup, r=jonathandturner
Rollup of 8 pull requests

- Successful merges: #36121, #36128, #36241, #36243, #36263, #36267, #36273, #36298
- Failed merges:
2016-09-06 16:45:41 -07:00
Nick Cameron
31100403fd save-analysis: add a kind tag to JSON dumps 2016-09-07 11:28:13 +12:00
Nick Cameron
68d29cba95 save-analysis: add docs data 2016-09-07 11:23:49 +12:00
David Tolnay
3784067edc Point macros 1.1 errors to the input item
Before:

```rust
error[E0106]: missing lifetime specifier
  --> src/main.rs:10:10
   |
10 | #[derive(Serialize, Deserialize)]
   |          ^ expected lifetime parameter

error[E0038]: the trait `T` cannot be made into an object
  --> src/main.rs:15:15
   |
15 | #[derive(Serialize, Deserialize)]
   |          ^^^^^^^^^^ the trait `T` cannot be made into an object
```

After:

```rust
error[E0106]: missing lifetime specifier
  --> src/main.rs:11:1
   |
11 | struct A {
   | ^ expected lifetime parameter

error[E0038]: the trait `T` cannot be made into an object
  --> src/main.rs:16:1
   |
16 | struct B<'a> {
   | ^ the trait `T` cannot be made into an object
```
2016-09-06 14:11:19 -07:00
bors
923bac4596 Auto merge of #36025 - michaelwoerister:incr-comp-hash-spans, r=nikomatsakis
incr. comp.: Take spans into account for ICH

This PR makes the ICH (incr. comp. hash) take spans into account when debuginfo is enabled.

A side-effect of this is that the SVH (which is based on the ICHs of all items in the crate) becomes sensitive to the tiniest change in a code base if debuginfo is enabled. Since we are not trying to model ABI compatibility via the SVH anymore (this is done via the crate disambiguator now), this should be not be a problem.

Fixes #33888.
Fixes #32753.
2016-09-06 13:22:35 -07:00
Tim Neumann
d8c58d40ef re-add accidentally removed line 2016-09-06 18:53:43 +02:00
Jonathan Turner
20cce247e1 Rollup merge of #36298 - GuillaumeGomez:hashmap_doc, r=steveklabnik
Add missing urls

r? @steveklabnik
2016-09-06 09:38:04 -07:00
Jonathan Turner
8156761e65 Rollup merge of #36273 - apasel422:unsafe_no_drop_flag, r=steveklabnik
Remove mention of `unsafe_no_drop_flag` from Reference and Nomicon
2016-09-06 09:38:03 -07:00
Jonathan Turner
c0e5a777d4 Rollup merge of #36267 - Cobrand:E0559, r=jonathandturner
Updated E0559 to new format

Refactored a method that printed one suggested field name,
into a method that returns an `Option` of a suggestion

(Updated test cases accordingly)

r? @jonathandturner

Closes #36197
2016-09-06 09:38:03 -07:00
Jonathan Turner
2d26603219 Rollup merge of #36263 - apasel422:scoped, r=steveklabnik
Clean up thread-local storage docs

`std` no longer contains an implementation of scoped TLS.

r? @steveklabnik
2016-09-06 09:38:02 -07:00
Jonathan Turner
b5f5f8b865 Rollup merge of #36243 - GuillaumeGomez:hash_map_links, r=steveklabnik
Add missing urls

r? @steveklabnik
2016-09-06 09:38:02 -07:00
Jonathan Turner
c8140bde4a Rollup merge of #36241 - Cobrand:contributing-md, r=steveklabnik
doc: Contributing.md: Added mention of `make tidy`

r? @steveklabnik
2016-09-06 09:38:02 -07:00
Jonathan Turner
4f74f837b6 Rollup merge of #36128 - gavinb:error_msgs_p2, r=jonathandturner
Update Error format for E0516, E0517, E0518

- E0518 Update error format #36111
- E0517 Update error format #36109
- E0516 Update error format #36108
- Part of #35233

r? @jonathandturner
2016-09-06 09:38:02 -07:00
Jonathan Turner
613f35051f Rollup merge of #36121 - Cobrand:master, r=jonathandturner
Updated E0527 to new error format

* Closes #36113
2016-09-06 09:38:01 -07:00
Michael Woerister
3057b7b974 ICH: Make CachingCodemapView robustly handle invalid spans. 2016-09-06 12:14:43 -04:00
Niko Matsakis
c2ffa2f938 pacify the mercilous tidy
add licenses to shadow.rs
2016-09-06 11:18:10 -04:00
Niko Matsakis
dadce2521e always print def-path in Debug impl for DefId
I also added an `opt_def_path` so that we can deal with DefIds that are
missing a `DefPath` entry.
2016-09-06 11:18:10 -04:00
Niko Matsakis
2446e258fc kill extra use 2016-09-06 11:18:10 -04:00
Niko Matsakis
07df8125e6 kill the forbidden code
supplanted by RUST_FORBID_DEP_GRAPH_EDGE
2016-09-06 11:18:10 -04:00
Niko Matsakis
fe6557eb62 expanding a def-id is not a read
Across crates only, converting a def-id into its def-key or def-path was
considered a read. This caused spurious reads when computing the symbol
name for some item.
2016-09-06 11:18:10 -04:00
Niko Matsakis
2f91ba05fd implement a debugging "shadow graph"
The shadow graph supercedes the existing code that checked for
reads/writes without an active task and now adds the ability
to filter for specific edges.
2016-09-06 11:18:10 -04:00
Niko Matsakis
4c2f3ff442 remove the "misc-items" from meta-data
It was duplicating information available elsewhere.
2016-09-06 11:18:10 -04:00
Niko Matsakis
2a84449169 allow testing DepNode::Krate edges directly 2016-09-06 11:18:09 -04:00
Niko Matsakis
753590f0c5 add a debugging mechanism to forbid edges
It is useful to track down an errant edge that is being added.  This is
not a perfect mechanism, since it doesn't consider (e.g.) if we are
in an ignored task, but it's helpful enough for now.
2016-09-06 11:17:03 -04:00
Niko Matsakis
c6363b8013 ignore dep-graph when loading inlined HIR
We touch the krate to adjust the maps, but we don't expose that data
widely.
2016-09-06 11:17:03 -04:00
Niko Matsakis
5415b34ca6 write to inherent_impls during the visitor
The goal here is to avoid writing to the `inherent_impls` map from
within the general `Coherence` task, and instead write to it as we
visit. Writing to it from the Coherence task is actually an information
leak; it happened to be safe because Coherence read from
`DepNode::Krate`, but that was very coarse.

I removed the `Rc` here because, upon manual inspection, nobody clones
the data in this table, and it meant that we can accumulate the data in
place. That said, the pattern that is used for the inherent impls map
is *generally* an anti-pattern (that is, holding the borrow lock for the
duration of using the contents), so it'd probably be better to
clone (and I doubt that would be expensive -- how many inherent impls
does a typical type have?).
2016-09-06 11:17:03 -04:00
bors
13c4e32e7a Auto merge of #36288 - nrc:save-var-value, r=eddyb
save-analysis: some refinement to the value string for variables
2016-09-06 07:46:06 -07:00