rust/src
bors 09064a21b0 Auto merge of #96316 - michaelwoerister:debuginfo-fix-unit-msvc, r=wesleywiser
debuginfo: Emit ZST struct debuginfo for unit type when CPP-like debuginfo is enabled

As already discovered in 24a728a8eb, PDB does not play well with custom basic types. This PR extends to the fix to `()`: Instead of a custom basic type, we treat it like an empty tuple (i.e. it is described as a struct which happens to have no fields).

Before this change anything with a `()` in it would cause trouble, which is especially bad for `*const ()` and `*mut ()` which are often used for opaque pointers. E.g. the test case added in this PR would look like:
```
0:000>  dx _ref
Error: Unable to bind name '_ref'
0:000>  dx _ptr
Error: Unable to bind name '_ptr'
0:000>  dx _local
Error: Unable to bind name '_local'
0:000>  dx _field,d
_field,d         [Type: unit_type::_TypeContainingUnitField]
    [+0x008] _a               : 123 [Type: unsigned int]
    [+0x000] _unit            : Unexpected failure to dereference object
    [+0x000] _b               : 456 [Type: unsigned __int64]
0:000>  dx ((__int64 *)_ptr),x
Error: Unable to bind name '_ptr'
```

With the PR it produces the expected output:
```
0:000>  dx _ref
_ref             : 0x7ff6f2012230 : () [Type: tuple$<> *]
0:000>  dx _ptr
_ptr             : 0x7e8ddffc20 : () [Type: tuple$<> *]
0:000>  dx _local
_local           : () [Type: tuple$<>]
0:000>  dx _field,d
_field,d         [Type: unit_type::_TypeContainingUnitField]
    [+0x008] _a               : 123 [Type: unsigned int]
    [+0x000] _unit            : () [Type: tuple$<>]
    [+0x000] _b               : 456 [Type: unsigned __int64]
0:000>  dx ((__int64 *)_ptr),x
((__int64 *)_ptr),x : 0x7e8ddffc20 : 0x1122334455667788 [Type: __int64 *]
```

r? `@wesleywiser`
2022-04-23 07:12:52 +00:00
..
bootstrap Auto merge of #96207 - nikic:distcheck-dir, r=Mark-Simulacrum 2022-04-22 08:01:28 +00:00
ci update: actions/checkout@v2 to actions/checkout@v3 2022-04-14 13:20:39 -07:00
doc Update books 2022-04-20 07:04:50 -07:00
etc Fix --bless not working anymore in htmldocck 2022-04-17 12:42:27 +02:00
librustdoc Auto merge of #96301 - notriddle:notriddle/synthetic-impl-prim, r=GuillaumeGomez 2022-04-22 16:47:13 +00:00
llvm-project@fd336816c3 Update LLVM submodule 2022-04-18 10:16:56 +02:00
rustdoc-json-types rustdoc-json-types: implementors -> implementations 2022-03-14 00:05:11 +00:00
test Auto merge of #96316 - michaelwoerister:debuginfo-fix-unit-msvc, r=wesleywiser 2022-04-23 07:12:52 +00:00
tools Auto merge of #96144 - c410-f3r:z-errors, r=petrochenkov 2022-04-22 05:15:47 +00:00
README.md
stage0.json bump stage0 to the latest beta 2022-04-05 22:24:32 +02:00
version bump version to 1.62.0 2022-04-04 09:21:03 +02:00

This directory contains the source code of the rust project, including:

  • The test suite
  • The bootstrapping build system
  • Various submodules for tools, like rustdoc, rls, etc.

For more information on how various parts of the compiler work, see the rustc dev guide.