Skip to content

failed to produce diagnostic for ... a range expression #72533

Open
@shin-ckane

Description

@shin-ckane

Description

% swift coord.swift 
coord.swift:8:9: error: failed to produce diagnostic for expression; please submit a bug report (https://swift.org/contributing/#reporting-bugs)
        for b in Int(minB) ..< ValueType.max {
        ^

when the left-hand side of the range operator was changed from 0 to Int(minB).

Reproduction

struct Coord {

    private typealias ValueType = Int16

    init<T>(clamping value: T) where T : BinaryInteger {
        let minB = (Double(value - T(ValueType.max)) / 3.0).rounded(.down)
        for b in Int(minB) ..< ValueType.max {

        }
        fatalError("TODO")
    }

}

Stack dump

none

Expected behavior

The rhs to the range operator is of type Int16. If that is changed to Int(ValueType.max), to match the type of the lhs, problem goes away.
Is "failed to produce diagnostic" the best diagnostic the compiler can produce to explain what is wrong with the source code?

Environment

% swift -version
swift-driver version: 1.90.11.1 Apple Swift version 5.10 (swiftlang-5.10.0.13 clang-1500.3.9.4)
Target: arm64-apple-macosx14.0

Additional information

No response

Metadata

Metadata

Assignees

Labels

bugA deviation from expected or documented behavior. Also: expected but undesirable behavior.compilerThe Swift compiler itselfdiagnostics QoIBug: Diagnostics Quality of ImplementationexpressionsFeature: expressionsfor-in loopsFeature: for-in loopsgenericsFeature: generic declarations and typesinternal errorBug: Internal erroroperatorsFeature: operatorsstatementsFeature: statementsswift 6.0type checkerArea → compiler: Semantic analysis

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions