detectPathCollision function
Detects case-insensitive path collisions among a set of paths.
Returns a PathCollision if two paths map to the same case-insensitive logical path but differ in their case. Returns null otherwise.
Binds: FR-107.
Implementation
PathCollision? detectPathCollision(Iterable<String> paths) {
final Map<String, String> seen =
{}; // lowercase logical path -> original logical path
for (final rawPath in paths) {
final logical = toLogicalPath(rawPath);
final lower = logical.toLowerCase();
if (seen.containsKey(lower)) {
final existing = seen[lower]!;
if (existing != logical) {
return PathCollision(existing, logical);
}
} else {
seen[lower] = logical;
}
}
return null;
}