detectPathCollision function

PathCollision? detectPathCollision(
  1. Iterable<String> paths
)

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;
}