Repository navigation
Commit ec4ce5c
committed
fix(extractor): keep dispose-optional exemption in resolve-aware path (Codex); tighten CI assertion (CodeRabbit)
Codex P2: the resolve-aware IsOwnedDisposableType flagged EVERY real IDisposable, so
dispose-optional types the flat name path skipped for free — Task / ValueTask /
DataTable / DataSet / DataView — would re-FP as undisposed fields. Reuse the existing
ImplementsIDisposable + IsDisposeOptional helpers (shared with the flow detector):
`ImplementsIDisposable(sym) && !IsDisposeOptional(sym)`. Dropped the duplicate
ImplementsDisposable/IsDisposableInterface helpers I had added.
Sample gains a HolderWithDisposeOptional control (a new'd, undisposed Task + DataTable)
that must stay silent. CI: strengthen the positive assertion to OWN001 + the
disposable-field resource on ResolvedDisposableSample (CodeRabbit), kept
severity-agnostic since the disposable-field leak renders as error, not warning.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Rg8kSk1YT14x7A1vo5zgED1 parent d2c0f92 commit ec4ce5c
3 files changed
Lines changed: 30 additions & 18 deletions
File tree
- .github/workflows
- frontend/roslyn
- OwnSharp.Extractor
- samples
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
211 | 211 | | |
212 | 212 | | |
213 | 213 | | |
214 | | - | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
215 | 219 | | |
216 | | - | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
217 | 226 | | |
218 | 227 | | |
219 | 228 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1537 | 1537 | | |
1538 | 1538 | | |
1539 | 1539 | | |
1540 | | - | |
| 1540 | + | |
| 1541 | + | |
| 1542 | + | |
| 1543 | + | |
| 1544 | + | |
| 1545 | + | |
1541 | 1546 | | |
1542 | 1547 | | |
1543 | | - | |
1544 | | - | |
1545 | | - | |
1546 | | - | |
1547 | | - | |
1548 | | - | |
1549 | | - | |
1550 | | - | |
1551 | | - | |
1552 | | - | |
1553 | | - | |
1554 | | - | |
1555 | | - | |
1556 | | - | |
1557 | | - | |
1558 | 1548 | | |
1559 | 1549 | | |
1560 | 1550 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
1 | 2 | | |
2 | 3 | | |
| 4 | + | |
3 | 5 | | |
4 | 6 | | |
5 | 7 | | |
| |||
39 | 41 | | |
40 | 42 | | |
41 | 43 | | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
0 commit comments