报告使用实参类型实现 `Iterable`,且接收者是具有相同元素类型的 Kotlin `Collection` 或 `Sequence` 的 `plus`/`minus`。

如果实参类型实现了 `Iterable`,则会将其视为元素集合,而不是单个元素。 这可能会意外地添加或移除多个元素,而不是针对对象本身进行操作。

一个常见的例子是 `java.nio.file.Path`,它实现了 `Iterable<Path>`(遍历其名称元素)。 因此,使用 `+` 或 `-` 将 `Path` 添加到 `Collection<Path>` 可能会作用于其组成部分,而不是整个 `Path` 实例。

该检查包括运算符语法(`a + b`、`a - b`)和显式调用(`a.plus(b)`、`a.minus(b)`)两种形式。

示例:


// 运算符形式
val paths = listOf(path) + somePath
val paths2 = setOf(path) - somePath

// 常规调用形式
val paths = listOf(path).plus(somePath)
val paths2 = setOf(path).minus(somePath)

// 序列
val seq = sequenceOf(path) + somePath

// 路径 + 路径(两侧都可迭代)
val combined = path1 + path2  // 返回段列表,而不是组合路径

快速修复: