# Incompatible length or index units

Rule ID: correctness.regex-range-units@1.0.0. Availability below refers to source-scan at product 524fa07e.

## V-COR-03 — Incompatible length or index units

Incompatible length or index units. It examines value, collection, identity, ordering, and control-flow contracts.

### Availability

Not available in source-scan. There is no source-scan flag to activate this condition.

A separate [experimental source preview](https://docs.swift-analyzer.com/guides/experimental/) recognizes a limited local pattern for this condition:

```text
"$ANALYZER" experimental-scan <path> --rule correctness.regex-range-units --format json
```

Use the terminal from [Installation](https://docs.swift-analyzer.com/get-started/installation/), with ANALYZER set, and replace `<path>` with a Swift file or directory. This preview is not compiler-backed source-scan coverage.

### Example and action

Illustrative pattern only. This is not a complete runnable package or a reproduced source-scan result. Helper APIs and omitted context must be supplied by the application.

```swift
import Foundation
let text = "😀"
let regex = try NSRegularExpression(pattern: ".")
let range = NSRange(location: 0, length: text.count)
let matches = regex.matches(in: text, range: range)
```

NSRegularExpression consumes a UTF-16 range. Convert the indices of this same String with NSRange(_:in:), rather than supplying the grapheme count. Include emoji and composed characters when checking the consuming operation. The experimental selector is specific to this regex range context.

```swift
import Foundation
let text = "😀"
let regex = try NSRegularExpression(pattern: ".")
let range = NSRange(text.startIndex..<text.endIndex, in: text)
let matches = regex.matches(in: text, range: range)
```

### Intended analysis

Intended reasoning: Compare the value, unit, identity or protocol assumptions at each operation. The intended conclusion requires consistent source identities and the relevant path constraints; an unrecognized abstraction can invalidate the comparison. Required evidence: value, identity, ordering, collection, and control-flow facts

### Assumptions and unknown

The relevant facts must be admitted for the selected immutable build world. Unknown aliases, external effects, unsupported source forms or incomplete consumers can prevent a conclusion. Availability in this workflow is stated above; the illustration does not expand that availability.

### Evidence and interpretation

The target catalog describes the intended condition. It is not evidence of an active source-scan diagnostic.

Historical evidence at 4558458d: accepted-subset (a limited set of source forms and profiles passed historical checks). That evidence has not been requalified for this product revision.

[How we validate checks](https://docs.swift-analyzer.com/concepts/validation/) explains the evidence boundary. [Foundations](https://docs.swift-analyzer.com/concepts/foundations/) separates method assumptions from implementation claims.


---

Language: en
Canonical: https://docs.swift-analyzer.com/catalog/correctness.regex-range-units/
Product revision: 524fa07e0ae4153c84ac12ae9eb6559df89ec2be
Catalog revision: 4558458d
Documentation digest: 1f17ba58ab08627e0de898f1442067b09e960b48cd5605d6529e9275f8930d68
Channel: pre-prod; maturity: experimental; access: owner-provided checkout.
