Commit graph

45910 commits

Author SHA1 Message Date
Ali MJ Al-Nasrawy
030d60f1c7 more tests 2023-01-07 13:42:16 +03:00
Ali MJ Al-Nasrawy
c6a17bf8bc make ascribe_user_type a TypeOp
Projection types in user annotations may contain inference variables.
This makes the normalization depend on the unification with the actual
type and thus requires a separate TypeOp to track the obligations.
Otherwise simply calling `TypeChecker::normalize` would ICE with
"unexpected ambiguity"
2023-01-07 13:41:41 +03:00
Ali MJ Al-Nasrawy
37b40e471a fix method substs 2023-01-07 13:38:40 +03:00
Ali MJ Al-Nasrawy
be5a45d392 fix struct path 2023-01-07 13:38:39 +03:00
Ali MJ Al-Nasrawy
d227506683 don't normalize in astconv
We delay projection normalization to further stages in order to
register user type annotations before normalization in HIR typeck.

There are two consumers of astconv: ItemCtxt and FnCtxt.
The former already expects unnormalized types from astconv, see its
AstConv trait impl.
The latter needs `RawTy` for a cleaner interface.

Unfortunately astconv still needs the normalization machinery in
order to resolve enum variants that have projections in the self type,
e.g. `<<T as Trait>::Assoc>::StructVariant {}`.
This is why `AstConv::normalize_ty_2` is necessary.
2023-01-07 13:38:38 +03:00
bors
93bf84c902 Auto merge of #106538 - aDotInTheVoid:strip-use-doc-hidden, r=notriddle
rustdoc: Strip imports of items which are `#[doc(hidden)]`

Closes #106379
2023-01-07 04:00:24 +00:00
bors
84f22e44c5 Auto merge of #106544 - matthiaskrgr:rollup-e9prjed, r=matthiaskrgr
Rollup of 7 pull requests

Successful merges:

 - #106287 (Add some docs to `bug`, `span_bug` and `delay_span_bug`)
 - #106341 (refactor: clean up `errors.rs` and `error_codes_check.rs`)
 - #106453 (Improve include macro documentation)
 - #106466 (Fix rustdoc source code rendering for `#[path = "../path/to/mod.rs"]` links)
 - #106528 (Tiny formatting fix)
 - #106534 (rustdoc-gui: Use new block syntax for define-function in goml scripts)
 - #106542 (Add default and latest stable edition to --edition in rustc (attempt 2))

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2023-01-07 00:53:19 +00:00
Matthias Krüger
92d812de1d
Rollup merge of #106534 - GuillaumeGomez:block-syntax, r=notriddle
rustdoc-gui: Use new block syntax for define-function in goml scripts

r? `@notriddle`
2023-01-06 21:26:12 +01:00
Matthias Krüger
eb27b613b6
Rollup merge of #106466 - clubby789:relative-module-fix, r=notriddle
Fix rustdoc source code rendering for `#[path = "../path/to/mod.rs"]` links

Fixes #103517

While generating the location for modules source HTML to be saved at, a `..` path component appeared to be translated to `/up/`.
Additionally, while generating the navigation sidebar, `..` path components were ignored. This means that (as in the issue above), a *real* directory structure of:
```
sys/
  unix/
    mod.rs  <-- contains #![path = "../unix/mod.rs]
    cmath.rs
```
was rendered as:
```
sys/
  unix/
    mod.rs
    unix/
      cmath.rs  <-- links to sys/unix/unix/cmath.rs.html, 404
```
While the *files* were stored as
```
sys/
  unix/
    mod.rs.html
    up/
      unix/
        cmath.rs.html
```
2023-01-06 21:26:11 +01:00
Nixon Enraght-Moony
ff46d116c1 rustdoc: Strip imports of items which are #[doc(hidden)]
Closes #106379
2023-01-06 18:44:37 +00:00
bors
0fb8b72ce4 Auto merge of #106501 - cjgillot:resolved-elided-apit, r=compiler-errors
Correct detection of elided lifetimes in impl-trait.

Fixes https://github.com/rust-lang/rust/issues/106338

r? `@compiler-errors`
cc `@pnkfelix`
2023-01-06 18:15:56 +00:00
Guillaume Gomez
009064f890 Use new block syntax for define-function in goml scripts 2023-01-06 17:52:42 +01:00
clubby789
d5d1c57167 Update tests 2023-01-06 16:48:23 +00:00
bors
afe8c4537c Auto merge of #106474 - erikdesjardins:noalias, r=bjorn3
cleanup: handle -Zmutable-noalias like -Zbox-noalias

r? `@bjorn3`

cc `@RalfJung` this will conflict with #106180
2023-01-06 15:20:58 +00:00
bors
7bbbaabbb6 Auto merge of #105805 - yanchen4791:issue-105227-fix, r=estebank
Suggest adding named lifetime when the return contains value borrowed from more than one lifetimes of function inputs

fix for #105227.

The problem: The suggestion of adding an explicit `'_` lifetime bound is **incorrect** when the function's return type contains a value which could be borrowed from more than one lifetimes of the function's inputs. Instead, a named lifetime parameter can be introduced in such a case.

The solution: Checking the number of elided lifetimes in the function signature. If more than one lifetimes found in the function inputs when the suggestion of adding explicit `'_` lifetime, change it to using named lifetime parameter `'a` instead.
2023-01-06 12:08:49 +00:00
bors
1146560e1a Auto merge of #106529 - Dylan-DPC:rollup-mvncmrk, r=Dylan-DPC
Rollup of 5 pull requests

Successful merges:

 - #106400 (Point at expressions where inference refines an unexpected type)
 - #106491 (Fix error-index redirect to work with the back button.)
 - #106494 (Add regression test for #58355)
 - #106499 (fix [type error] for error E0029 and E0277)
 - #106502 (rustdoc: remove legacy user-select CSS)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2023-01-06 09:17:14 +00:00
Dylan DPC
a8f7ec2c48
Rollup merge of #106499 - lyming2007:issue-105946-fix, r=estebank
fix [type error] for error E0029 and E0277

check explicitly for the type references error
if ty.references_error() is true change the error to be err.delay_as_bug() and prevent the error E0029 and E0277 from emitting out this fix #105946
2023-01-06 11:38:57 +05:30
Dylan DPC
4b094c5933
Rollup merge of #106494 - JohnTitor:issue-58355, r=compiler-errors
Add regression test for #58355

Closes #58355
r? `@compiler-errors`
Signed-off-by: Yuki Okushi <jtitor@2k36.org>
2023-01-06 11:38:57 +05:30
Dylan DPC
6ae0f08c19
Rollup merge of #106400 - estebank:type-errs, r=compiler-errors
Point at expressions where inference refines an unexpected type

Fix #106355. Fix #14007. (!)

```
error[E0308]: mismatched types
  --> src/test/ui/type/type-check/point-at-inference.rs:12:9
   |
9  |         foo.push(i);
   |                  - this is of type `&{integer}`, which makes `foo` to be inferred as `Vec<&{integer}>`
...
12 |     bar(foo);
   |     --- ^^^ expected `i32`, found `&{integer}`
   |     |
   |     arguments to this function are incorrect
   |
   = note: expected struct `Vec<i32>`
              found struct `Vec<&{integer}>`
note: function defined here
  --> src/test/ui/type/type-check/point-at-inference.rs:2:4
   |
2  | fn bar(_: Vec<i32>) {}
   |    ^^^ -----------
help: consider dereferencing the borrow
   |
9  |         foo.push(*i);
   |                  +
```
2023-01-06 11:38:56 +05:30
bors
ce8fbe7901 Auto merge of #106429 - djkoloski:add_vendor_to_fuchsia_target_triple, r=nagisa
Add vendor to Fuchsia's target triple

Historically, Rust's Fuchsia targets have been labeled x86_64-fuchsia and aarch64-fuchsia. However, they should technically contain vendor information. This CL changes Fuchsia's target triples to include the "unknown" vendor since Clang now does normalization and handles all triple spellings.

This was previously attempted in #90510, which was closed due to inactivity.
2023-01-06 06:05:40 +00:00
Yiming Lei
10dbcf0630 fix [type error] for error E0029 and E0277
check explicitly for the type references error
if ty.references_error() is true change the error to be err.delay_as_bug()
and prevent the error E0029 and E0277 from emitting out
this fix #105946
2023-01-05 21:21:13 -08:00
yanchen4791
523fe7a121 Suggests adding named lifetime when the return contains value borrowed from more than one lifetimes of the function's inputs 2023-01-05 21:09:27 -08:00
Camille GILLOT
de1859fc32 Correct detection of elided lifetimes in impl-trait. 2023-01-05 18:00:45 +00:00
Esteban Küber
f98f2fcb5e fix rebase 2023-01-05 17:09:41 +00:00
Esteban Küber
b182259d39 review comments: reword 2023-01-05 16:51:17 +00:00
Esteban Küber
f571862d17 Suggest changing argument on type error 2023-01-05 16:51:17 +00:00
Esteban Küber
c905f5e1b0 Account for type error on method arg caused by earlier inference
```rust
fn main() {
    let v = Vec::new();
    v.push(0);
    v.push(0);
    v.push("");
}
```

now produces

```
error[E0308]: mismatched types
  --> $DIR/point-at-inference-3.rs:6:12
   |
LL |     v.push(0);
   |            - this is of type `{integer}`, which makes `v` to be inferred as `Vec<{integer}>`
...
LL |     v.push("");
   |       ---- ^^ expected integer, found `&str`
   |       |
   |       arguments to this function are incorrect
   |
note: associated function defined here
  --> $SRC_DIR/alloc/src/vec/mod.rs:LL:COL
```
2023-01-05 16:51:17 +00:00
Esteban Küber
9cc8d86190 Tweak output
- Only point at a the single expression where the found type was first
  inferred.
- Find method call argument that might have caused the found type to be
  inferred.
- Provide structured suggestion.
- Apply some review comments.
- Tweak wording.
2023-01-05 16:51:16 +00:00
Esteban Küber
6b0cce4b50 review comments: do not always point at init expr 2023-01-05 16:51:16 +00:00
Esteban Küber
48094a4a6f More eagerly resolve expr tys before writing them
This allows the expressions to have more accurate types
when showing inference steps.
2023-01-05 16:51:16 +00:00
Esteban Küber
05c30b0ca5 Skip macros to avoid talking about bindings the user can't see 2023-01-05 16:51:16 +00:00
Esteban Küber
ea43eb3721 Point at expressions where inference refines an unexpected type
Address #106355.
2023-01-05 16:51:16 +00:00
bors
388538fc96 Auto merge of #106487 - GuillaumeGomez:fix-kbd-var, r=notriddle
Fix --kbd-color variable name in rustdoc.css

Interestingly enough, it only impacted the dark theme.

Before:

![Screenshot from 2023-01-05 11-03-17](https://user-images.githubusercontent.com/3050060/210754145-c3bb0f50-d35f-4543-bf73-010a4524a803.png)

After:

![Screenshot from 2023-01-05 11-03-05](https://user-images.githubusercontent.com/3050060/210754190-85c2f146-a774-4463-9cd3-9495b7c91bd7.png)

r? `@notriddle`
2023-01-05 15:47:39 +00:00
Yuki Okushi
b83fa06c56
Add regression test for #58355
Signed-off-by: Yuki Okushi <jtitor@2k36.org>
2023-01-06 00:24:42 +09:00
David Koloski
f6ef039775 Add vendor to Fuchsia's target triple
Historically, Rust's Fuchsia targets have been labeled x86_64-fuchsia
and aarch64-fuchsia. However, they should technically contain vendor
information. This CL changes Fuchsia's target triples to include the
"unknown" vendor since Clang now does normalization and handles all
triple spellings.

This was previously attempted in #90510, which was closed due to
inactivity.
2023-01-05 09:34:22 -05:00
Guillaume Gomez
112723b4e3 Update kbd GUI test 2023-01-05 11:03:45 +01:00
bors
1429899700 Auto merge of #106482 - compiler-errors:rollup-g7n1p39, r=compiler-errors
Rollup of 6 pull requests

Successful merges:

 - #105846 (Account for return-position `impl Trait` in trait in `opt_suggest_box_span`)
 - #106385 (Split `-Zchalk` flag into `-Ztrait-solver=(classic|chalk|next)` flag)
 - #106403 (Rename `hir::Map::{get_,find_}parent_node` to `hir::Map::{,opt_}parent_id`, and add `hir::Map::{get,find}_parent`)
 - #106462 (rustdoc: remove unnecessary wrapper around sidebar and mobile logos)
 - #106464 (Update Fuchsia walkthrough with new configs)
 - #106478 (Tweak wording of fn call with wrong number of args)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2023-01-05 06:47:02 +00:00
Michael Goulet
e048ee2ac1
Rollup merge of #106478 - estebank:tweak-fn-mismatch, r=compiler-errors
Tweak wording of fn call with wrong number of args
2023-01-04 20:36:29 -08:00
Michael Goulet
13bb8a8b15
Rollup merge of #106385 - compiler-errors:new-solver-flag, r=jackh726
Split `-Zchalk` flag into `-Ztrait-solver=(classic|chalk|next)` flag

We'll eventually need a way to select more than chalk + not-chalk.

Does this need an MCP since it's touching a `-Z` flag? Or perhaps I should preserve `-Zchalk` for the time being... maybe I could make it a warning to use that flag? cc ``@rust-lang/types``

r? types
2023-01-04 20:36:27 -08:00
Michael Goulet
f9ccbf084f
Rollup merge of #105846 - compiler-errors:issue-105838, r=jackh726
Account for return-position `impl Trait` in trait in `opt_suggest_box_span`

RPITITs are the only types where their opaque bounds might normalize to some other self type than the opaque type itself. To avoid needing to do normalization, let's just match on either alias kind.

Ideally, we'd just get rid of `opt_suggest_box_span`. It's kind of a wart on type-checking `if`/`match`. I've recently refactored this expression for being confusing/wrong, but moving it into the error path is pretty hard.

Fixes #105838
2023-01-04 20:36:27 -08:00
bors
03b9e1d154 Auto merge of #105409 - compiler-errors:closure-infer-cycle, r=jackh726
Don't deduce a signature that makes a closure cyclic

Sometimes when elaborating supertrait bounds for closure signature inference, we end up deducing a closure signature that is cyclical because either a parameter or the return type references a projection mentioning `Self` that also has escaping bound vars, which means that it's not eagerly replaced with an inference variable.

Interestingly, this is not *just* related to my PR that elaborates supertrait bounds for closure signature deduction. The committed test `supertrait-hint-cycle-3.rs` shows **stable** code that is fixed by this PR:

```rust
trait Foo<'a> {
    type Input;
}

impl<F: Fn(u32)> Foo<'_> for F {
    type Input = u32;
}

fn needs_super<F: for<'a> Fn(<F as Foo<'a>>::Input) + for<'a> Foo<'a>>(_: F) {}

fn main() {
    needs_super(|_: u32| {});
}
```

Fixes #105401
Fixes #105396

r? types
2023-01-05 03:59:31 +00:00
Esteban Küber
5393c6bbd1 Tweak wording of fn call with wrong number of args 2023-01-05 03:02:10 +00:00
Erik Desjardins
d165a6d708 cleanup: handle -Zmutable-noalias like -Zbox-noalias 2023-01-04 19:24:42 -05:00
Matthias Krüger
3df7cd9553
Rollup merge of #106460 - c410-f3r:moar-errors, r=compiler-errors
Move tests

r? `@petrochenkov`
2023-01-04 23:39:51 +01:00
Matthias Krüger
836321effb
Rollup merge of #106437 - notriddle:notriddle/http-url, r=GuillaumeGomez
rustdoc: fix buggy JS check for absolute URL

The old code did the wrong thing when faced with a crate named "http".
2023-01-04 23:39:50 +01:00
Matthias Krüger
d214402128
Rollup merge of #106412 - GuillaumeGomez:fix-links-to-primitive-rustdoc-json, r=aDotInTheVoid
Fix link generation for local primitive types in rustdoc JSON output

Fixes https://github.com/rust-lang/rust/issues/104064.

As mentioned in the issue, I'm not super happy about this fix which is more a hack rather than a sound-proof solution. However I couldn't find a better way to fix it.

r? `@aDotInTheVoid`
2023-01-04 23:39:50 +01:00
Matthias Krüger
b41d81ca96
Rollup merge of #106391 - ardislu:fix-popover-child-link, r=GuillaumeGomez
rustdoc: allow popover child links to work

No need to prevent default click behavior on a `<div>`, it will also disable all child click behavior.

Closes #106390
2023-01-04 23:39:49 +01:00
Caio
7ffcedf665 Move tests 2023-01-04 16:44:30 -03:00
Michael Goulet
8b0f43b19d Rename stock solver to classic 2023-01-04 18:40:02 +00:00
Michael Goulet
1e81f9a47f Update tests, etc 2023-01-04 18:12:43 +00:00