Commit 97d83e7
Fix MarshalAs IID parameter index parsing (#128364)
Fixes native AOT outerloop runs that are currently broken.
NativeAOT could assert while parsing valid `MarshalAs` metadata emitted
for COM interface parameters using `IidParameterIndex`, leaving unread
bytes in the marshal descriptor blob.
- **Parser**
- Consume optional `IidParameterIndex` payloads for COM interface native
types:
- `IUnknown`
- `IDispatch`
- `Interface`
- Keep existing behavior of using only the native type in NativeAOT.
- **Regression coverage**
- Added TypeSystem coverage for descriptors like:
```csharp
[MarshalAs(UnmanagedType.Interface, IidParameterIndex = 0)] out object value
```
- Covered `Interface`, `IUnknown`, and `IDispatch` marshal descriptors.
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: MichalStrehovsky <13110571+MichalStrehovsky@users.noreply.github.com>
Co-authored-by: Michal Strehovský <MichalStrehovsky@users.noreply.github.com>1 parent 0f580f7 commit 97d83e7
4 files changed
Lines changed: 45 additions & 0 deletions
File tree
- src/coreclr/tools
- Common/TypeSystem/Ecma
- aot/ILCompiler.TypeSystem.Tests
- CoreTestAssembly
Lines changed: 12 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
612 | 612 | | |
613 | 613 | | |
614 | 614 | | |
| 615 | + | |
| 616 | + | |
| 617 | + | |
| 618 | + | |
| 619 | + | |
| 620 | + | |
| 621 | + | |
| 622 | + | |
| 623 | + | |
| 624 | + | |
| 625 | + | |
| 626 | + | |
615 | 627 | | |
616 | 628 | | |
617 | 629 | | |
| |||
Lines changed: 18 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
179 | 179 | | |
180 | 180 | | |
181 | 181 | | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
182 | 200 | | |
183 | 201 | | |
Lines changed: 1 addition & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
214 | 214 | | |
215 | 215 | | |
216 | 216 | | |
| 217 | + | |
217 | 218 | | |
218 | 219 | | |
219 | 220 | | |
| |||
Lines changed: 14 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
80 | 80 | | |
81 | 81 | | |
82 | 82 | | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
83 | 97 | | |
84 | 98 | | |
0 commit comments