Add documents to PDB for types that have no methods with IL#56278
Add documents to PDB for types that have no methods with IL#56278davidwengier merged 27 commits intodotnet:mainfrom
Conversation
…B. This new information adds expands the type definition table by including types that do not contain IL or types that have a method or methods that do not include all the documents under the method debug information table. Also expanded the pdb tests to test the information added and also tested navigating from a symbol to its corresponding document(s).
src/Compilers/Core/Portable/PEWriter/MetadataWriter.PortablePdb.cs
Outdated
Show resolved
Hide resolved
src/Compilers/Core/Portable/PEWriter/MetadataWriter.PortablePdb.cs
Outdated
Show resolved
Hide resolved
|
Tips for solving, or investigating, determinism and rebuild issues are readily accepted. Or even just a DLL diff tool :) |
I added two comments to give you an idea what to look for. Basically, we need to make sure that from build to build the same information is emitted in the same order and using the same values (ids, etc.). |
Thank you very much, I think that's solved it. I probably should have realised too, as I had sorted the results in the test validate method too 🤦♂️ |
|
The rebuild tests don't like using the mapped document name. I'm guessing, based on the failures, that the custom debug info isn't being serialized and needs to be? I guess I need to add that? Not really sure how it all works. @RikkiGibson do you have any insight here? |
src/Compilers/CSharp/Test/Emit/PDB/TypeDefinitionDocumentTests.cs
Outdated
Show resolved
Hide resolved
src/Compilers/CSharp/Test/Emit/PDB/TypeDefinitionDocumentTests.cs
Outdated
Show resolved
Hide resolved
…s in nested types to prevent duplicate documents being output
|
@cston if you can have another look at this today, I'd really appreciate it, so we can get it in before the snap at 4pm. |
Co-authored-by: Charles Stoner <chucks@microsoft.com>
Part of #55834
First two commits are from Samuel, subsequent is my cleanup/changes, but easiest to just look at the entire changeset as one.