Skip to content

fix(build): duplicate InverseBoolToVisibilityConverter after #161 + #173 - #187

Merged
Adron merged 1 commit into
mainfrom
fix-duplicate-inverse-converter
Sep 24, 2026
Merged

Adron merged 1 commit into
mainfrom
fix-duplicate-inverse-converter

Conversation

@Adron

@Adron Adron commented Sep 24, 2026

Copy link
Copy Markdown
Member

/tmp/batch.sh $(gh pr list --repo $R --state open --limit 5 --json number,headRefName --jq '.[]|select(.headRefName=="fix-duplicate-inverse-converter")|.number') 174 177

```
error CS0101: The namespace 'InterlinedList.Views' already contains a definition
              for 'InverseBoolToVisibilityConverter'
error CS0111: Type 'InverseBoolToVisibilityConverter' already defines a member
              called 'Convert' with the same parameter types
```

## Cause

#161 (lists schema UI) added it to `Views/ListsViewConverters.cs`; #173 (AI gating) added it to `Views/AiConverters.cs`. Same namespace, **byte-identical implementations**, different files — so git reported both `MERGEABLE` and only the compiler objected.

**Fourth break of this exact shape in this merge pass**, after:
- #183 — duplicate `ReadRetryAfter`/`ReadHeader`/`ReadIntHeader` in the `InterlinedApiClient` partial
- #185 — the contract suite's missing compile-includes
- #186 — `App.xaml.cs` calling the renamed `SessionService.Logout()`

The pattern is consistent: **parallel PRs adding same-named members to different files.** `MERGEABLE` means "no textual overlap", which is not the same as "compiles after merging". Building after every single merge is what caught all four within one merge each.

## Fix

Removed the copy in `AiConverters.cs`; `ListsViewConverters.cs` keeps it. Nothing is lost — the implementations were identical, and the AI views resolve it through namespace visibility without a `using`.

Left a comment where it was, naming the two PRs and pointing at the two files that already hold shared converters, since a "missing" converter is exactly the thing someone re-adds:

```csharp
// InverseBoolToVisibilityConverter is NOT declared here. It already exists in
// ListsViewConverters.cs, in this same InterlinedList.Views namespace...
// If you need a converter here, check ListsViewConverters.cs and
// CommonConverters.cs first.
```

## Verification

- `dotnet build -c Debug` — **green**
- `dotnet build -c Release` — **green**

Note there are now three converter homes (`ListsViewConverters.cs`, `CommonConverters.cs`, `AiConverters.cs`) plus per-view resource declarations. Consolidating them would prevent a fifth instance of this — worth a follow-up, not folded in here.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
PRBODY
fix(build): duplicate InverseBoolToVisibilityConverter after #161 + #173

main did not compile after #173 merged — CS0101 plus two CS0111s.

#161 (lists schema UI) added InverseBoolToVisibilityConverter to
Views/ListsViewConverters.cs; #173 (AI gating) added it to Views/AiConverters.cs.
Same namespace, byte-identical implementations, different files — so git
reported both MERGEABLE and only the compiler objected.

Fourth break of this exact shape in this merge pass, after #183 (duplicate
header helpers in the InterlinedApiClient partial), #185 (contract suite's
missing compile-includes) and #186 (App.xaml.cs calling the renamed
SessionService.Logout). The pattern is parallel PRs adding same-named members to
different files: MERGEABLE means "no textual overlap", not "compiles after
merging".

Removed the AiConverters.cs copy; ListsViewConverters.cs keeps it. Nothing lost —
the implementations were identical and the AI views resolve it through namespace
visibility. Left a comment naming both PRs and pointing at the existing
converter files, since a "missing" converter is what someone re-adds.

Verified: Debug and Release both build clean.

Follow-up worth doing: there are now three converter homes plus per-view
resource declarations. Consolidating would prevent a fifth instance.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@Adron
Adron merged commit 297f54b into main Sep 24, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant