about summary refs log tree commit diff
path: root/src
AgeCommit message (Collapse)AuthorLines
2019-11-20Auto merge of #66104 - yodaldevoid:generic-arg-disambiguation, r=petrochenkovbors-98/+221
Generic arg disambiguation Using the tactic suggested by @petrochenkov in https://github.com/rust-lang/rust/issues/60804#issuecomment-516769465 and on [zulip](https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/generic.20argument.20disambiguation), this change checks type arguments to see if they are really incorrectly-parsed const arguments. it should be noted that `segments.len() == 1 && segments[0].arg.is_none()` was reduced to `segments.len() == 1` as suggested by @petrochenkov in [zulip](https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/generic.20argument.20disambiguation/near/177848002). This change allowed a few more existing tests to have their braces removed. There are a couple of "problems" with these changes that I should note. First, there was a regression in the error messages found in "src/test/ui/privacy-ns1.rs" and "src/test/ui/privacy-ns1.rs". Second, some braces were unable to be removed from "src/test/ui/const-generics/fn-const-param-infer.rs". Those on line 24 caused the statement to stop equating when removed, and those on line 20 cause a statement that should not equate to produce no error when removed. I have not looked further into any of these issues yet, though I would be willing to look into them before landing this. I simply wanted to get some other eyes on this before going further. Fixes #60804 cc @varkor @jplatte
2019-11-19Auto merge of #66454 - cjgillot:lift, r=Zoxcbors-322/+87
Derive Lift using a proc-macro Based on #66384 r? @Zoxc
2019-11-19Rollup merge of #66538 - dingelish:master, r=CentrilMazdak Farrokhzad-1/+0
Remove compiler_builtins_lib feature from libstd Test if we can close #66368 by this patch.
2019-11-19Rollup merge of #66536 - nnethercote:mv-QueryResult, r=CentrilMazdak Farrokhzad-13/+11
Move the definition of `QueryResult` into `plumbing.rs`. Because it's the only file that uses it, and removes the need for importing it. r? @Centril
2019-11-19Rollup merge of #66529 - petrochenkov:reshelp2, r=davidtwcoMazdak Farrokhzad-48/+47
resolve: Give derive helpers highest priority during resolution So they just shadow everything else and don't create ambiguity errors. This matches the old pre-#64694 behavior most closely. --- The change doesn't apply to this "compatibility" case ```rust #[trait_helper] // The helper attribute is used before it introduced. // Sadly, compiles on stable, supported via hacks. // I plan to make a compatibility warning for this. #[derive(Trait)] struct S; ``` , such attributes still create ambiguities, but #64694 didn't change anything for this case. Fixes https://github.com/rust-lang/rust/issues/66508 Fixes https://github.com/rust-lang/rust/issues/66525
2019-11-19Rollup merge of #66511 - haraldh:error_chain_nocopy, r=dtolnayMazdak Farrokhzad-1/+1
std::error::Chain: remove Copy remove Copy from Iterator as per comment https://github.com/rust-lang/rust/issues/58520#issuecomment-553682166 Tracker: #58520
2019-11-19Rollup merge of #66493 - JohnTitor:ping-me-rustc-guide, r=spastorinoMazdak Farrokhzad-4/+4
Add JohnTitor to rustc-guide toolstate notification list Add JohnTitor to rustc-guide toolstate notification list Also, update org names of some books r? @spastorino
2019-11-19Rollup merge of #66461 - clemencetbk:master, r=GuillaumeGomezMazdak Farrokhzad-1/+22
Add explanation message for E0641 Part of #61137
2019-11-19Rollup merge of #66431 - Aaron1011:fix/opaque-type-infer, r=varkorMazdak Farrokhzad-66/+205
Fix 'type annotations needed' error with opaque types Related: #66426 This commit adds handling for opaque types during inference variable fallback. Type variables generated from the instantiation of opaque types now fallback to the opaque type itself. Normally, the type variable for an instantiated opaque type is either unified with the concrete type, or with the opaque type itself (e.g when a function returns an opaque type by calling another function). However, it's possible for the type variable to be left completely unconstrained. This can occur in code like this: ```rust pub type Foo = impl Copy; fn produce() -> Option<Foo> { None } ``` Here, we'll instantatiate the `Foo` in `Option<Foo>` to a fresh type variable, but we will never unify it with anything due to the fact that we return a `None`. This results in the error message: ``` type annotations needed: cannot resolve `_: std::marker::Copy ``` pointing at `pub type Foo = impl Copy`. This message is not only confusing, it's incorrect. When an opaque type inference variable is completely unconstrained, we can always fall back to using the opaque type itself. This effectively turns that particular use of the opaque type into a non-defining use, even if it appears in a defining scope.
2019-11-19Rollup merge of #66430 - dns2utf8:fix_code_selection_click_handler, ↵Mazdak Farrokhzad-24/+37
r=GuillaumeGomez [doc] Fix the source code highlighting on source comments The code would always forget the previous selection. r? @GuillaumeGomez
2019-11-19Rollup merge of #66239 - estebank:suggest-async-closure-call, r=CentrilMazdak Farrokhzad-65/+175
Suggest calling async closure when needed When using an async closure as a value in a place that expects a future, suggest calling the closure. Fix #65923.
2019-11-19Rollup merge of #66155 - GuillaumeGomez:long-err-explanation-E0594, r=Dylan-DPCMazdak Farrokhzad-22/+88
Add long error explanation for E0594 Part of #61137. r? @Dylan-DPC
2019-11-19Rollup merge of #66090 - pietroalbini:ci-improvements, r=alexcrichtonMazdak Farrokhzad-101/+114
Misc CI improvements This PR contains some misc improvements to our CI configuration: * The environment variables for MinGW builders were greatly simplified, with just `CUSTOM_MINGW=1` to tell the install scripts to install the vendored copy. All the others (`MINGW_URL`, `MINGW_DIR`, `MINGW_ARCHIVE` and `MSYS_BITS`) are detected either from the builder name or the environment. * Collecting CPU stats and running the build were moved into scripts. * Toolstate scripts validation was previously a separate step, ran just when `IMAGE=mingw-check`. This moves the validation code inside the actual image. * Vendored copies are now fetched from https://ci-mirrors.rust-lang.org instead of directly from the bucket. r? @alexcrichton
2019-11-19Auto merge of #66206 - PotHix:master, r=estebankbors-6/+6
Suggest `#[repr(C)]` instead of `#[repr(C, packed, ...)]` The code was previously suggesting `#[repr(C, packed, ...)]` for incorrect uses of `repr` (e.g. `#[repr = "C"]`). This change suggests the usage of `#[repr(C)]` instead. r? @estebank Ref: #61286.
2019-11-19Move the definition of `QueryResult` into `plumbing.rs`.Nicholas Nethercote-13/+11
Because it's the only file that uses it, and removes the need for importing it.
2019-11-19Auto merge of #66074 - wesleywiser:test_run_const_prop, r=oli-obkbors-24/+37
[mir-opt] Turn on the `ConstProp` pass by default perf.rlo shows that running the `ConstProp` pass results in across-the-board wins regardless of debug or opt complilation mode. As a result, we're turning it on to get the compile time benefits.
2019-11-18Remove compiler_builtins_lib feature from libstdYu Ding-1/+0
2019-11-19Auto merge of #65821 - SimonSapin:in-place, r=Amanieubors-4/+18
Use `drop_in_place` in `array::IntoIter::drop` This skips the loop when the element type is known not to have drop glue, even in debug mode.
2019-11-18Move E0594 to new error code systemGuillaume Gomez-2578/+24
2019-11-18test: Update tests with fallout of changesGabriel Smith-74/+54
The error messages of the two tests effected degraded in quality. The errors no longer suggest types in other modules as they now assume that the arguments are const args, not type args.
2019-11-18test: const-generics: Update tests removing unrequired bracesGabriel Smith-19/+19
Braces were left in cases where generic args were in the generic const paths.
2019-11-18rustc: lowering: Lower type args as const args when resolved in valueGabriel Smith-5/+56
namespace
2019-11-18Auto merge of #58281 - mark-i-m:synthesis, r=estebankbors-6/+1144
Add outlives suggestions for some lifetime errors This PR implements suggestion diagnostics for some lifetime mismatch errors. When the borrow checker finds that some lifetime 'a doesn't outlive some other lifetime 'b that it should outlive, then in addition to the current lifetime error, we also emit a suggestion for how to fix the problem by adding a bound: - If a and b are normal named regions, suggest to add the bound `'a: 'b` - If b is static, suggest to replace a with static - If b also needs to outlive a, they must be the same, so suggest unifying them We start with a simpler implementation that avoids diagnostic regression or implementation complexity: - We only makes suggestions for lifetimes the user can already name (eg not closure regions or elided regions) - For now, we only emit a help note, not an actually suggestion because it is significantly easier. Finally, there is one hack: it seems that implicit regions in async fn are given the name '_ incorrectly. To avoid suggesting '_: 'x, we simply filter out such lifetimes by name. For more info, see this internals thread: https://internals.rust-lang.org/t/mechanical-suggestions-for-some-borrow-checker-errors/9049/3 TL;DR Make suggestions to add a `where 'a: 'b` constraint for some lifetime errors. Details are in the paper linked from the internals thread above. r? @estebank TODO - [x] Clean up code - [x] Only make idiomatic suggestions - [x] don't suggest naming `&'a self` - [x] rather than `'a: 'static`, suggest replacing `'a` with `'static` - [x] rather than `'a: 'b, 'b: 'a`, suggest replacing `'a` with `'b` or vice versa - [x] Performance (maybe need a perf run when this is closer to the finish line?) - perf run was clean... - EDIT: perf run seems to only check non-error performance... How do we check that error performance didn't regress? - [x] Needs ui tests - [x] Integrate the `help` message into the main lifetime `error`
2019-11-18resolve: late: Check if type arg is really a const argGabriel Smith-0/+46
A path type argument could be a generic const argument due to limitations as to what we can determine at parsing. We double check just to be sure by trying to resolve in the type namespace first, and if that fails we try again in the value namespace. If resolution in the value namespace succeeds, we have a generic const argument on our hands.
2019-11-18rustc: hir: Add method to check validity of a Res/Def in a namespaceGabriel Smith-0/+38
2019-11-18resolve: Allow idents to resolve to primitives in the type namespaceGabriel Smith-0/+8
2019-11-19resolve: Give derive helpers highest priority during resolutionVadim Petrochenkov-48/+47
2019-11-18review commentsEsteban Küber-33/+45
2019-11-18Auto merge of #54733 - GuillaumeGomez:stabilize-rustdoc-theme, ↵bors-52/+88
r=ollie27,Dylan-DPC Stabilize rustdoc theme options Closes #54730 This PR stabilizes the `--themes` (now `--theme`) and `--theme-checker` (now `--check-theme`) options, for allowing users to add custom themes to their documentation. Rustdoc includes two themes by default: `light` and `dark`. Using the `--theme` option, you can give rustdoc a CSS file to include as an extra theme for that render. Themes are named after the CSS file used, so using `--theme /path/to/your/custom-theme.css` will add a theme called `custom-theme` to the documentation. Even though the CLI flag to add a theme is getting stabilized, there's no guarantee that a theme file will always have the same effect on documentation generated with future versions of rustdoc. To aid in ensuring that a theme will work, the flag `--check-theme` is also available, which compares the CSS rules defined by a custom theme against the ones used in the `light` theme. If the `light` theme defines a CSS rule that the custom theme does not, rustdoc will report an error. (Rustdoc also performs this check for themes given to `--theme`, but only reports a warning when a difference is found.)
2019-11-18Update test outputAaron Hill-57/+45
2019-11-18Replace bool with new `FallbackMode` enumAaron Hill-8/+18
2019-11-18Add explanation of unconstrained opaque typeAaron Hill-2/+8
2019-11-18Fix 'type annotations needed' error with opaque typesAaron Hill-9/+144
Related: #66426 This commit adds handling for opaque types during inference variable fallback. Type variables generated from the instantiatino of opaque types now fallback to the opque type itself. Normally, the type variable for an instantiated opaque type is either unified with the concrete type, or with the opaque type itself (e.g when a function returns an opaque type by calling another function). However, it's possible for the type variable to be left completely unconstrained. This can occur in code like this: ```rust pub type Foo = impl Copy; fn produce() -> Option<Foo> { None } ``` Here, we'll instantatiate the `Foo` in `Option<Foo>` to a fresh type variable, but we will never unify it with anything due to the fact that we return a `None`. This results in the error message: `type annotations needed: cannot resolve `_: std::marker::Copy`` pointing at `pub type Foo = impl Copy`. This message is not only confusing, it's incorrect. When an opaque type inference variable is completely unconstrained, we can always fall back to using the opaque type itself. This effectively turns that particular use of the opaque type into a non-defining use, even if it appears in a defining scope.
2019-11-18Update ui testsGuillaume Gomez-21/+64
2019-11-18Add long error explanation for E0594Guillaume Gomez-0/+2577
2019-11-18Fix Makefile themes checkGuillaume Gomez-1/+2
2019-11-18Remove redundant html checkGuillaume Gomez-1/+0
2019-11-18improve error messages and documentationGuillaume Gomez-16/+24
2019-11-18remove -Z option from rustdoc theme checker toolGuillaume Gomez-1/+0
2019-11-18Apply review commentsGuillaume Gomez-9/+9
2019-11-18Rename rustdoc options --themes and --check-themes to --theme and --check-themeGuillaume Gomez-18/+21
2019-11-18remove unstable docsGuillaume Gomez-26/+2
2019-11-18rename check-theme option into check-themesGuillaume Gomez-12/+9
2019-11-18Improve documentation, add checks for themes option arguments, make sure the ↵Guillaume Gomez-3/+12
themes file names are js compatible
2019-11-18Fix typosGuillaume Gomez-2/+2
Co-Authored-By: Oliver Middleton <olliemail27@gmail.com>
2019-11-18Rename theme-checker option to check-themeGuillaume Gomez-9/+9
2019-11-18Add sentence to tell other options are ignored when running check-themeGuillaume Gomez-3/+3
2019-11-18Prevent invalid html characters in themes nameGuillaume Gomez-1/+3
2019-11-18add test for rustdoc's --themes flagQuietMisdreavus-0/+14
2019-11-18Apply review commentsGuillaume Gomez-5/+11