Diagnostic and cause
링크Loop break values do not agree
- 계열
- topaz
- 단계
- check
- 코드
TPZ5721
원인과 조건
When a value-producing loop has no contextual result type, incompatible break-value types are rejected with TPZ5721. The int and string break values in this program are assignable in neither direction.
대응
Make the breaks produce compatible values. The repaired program returns int from both branches.
Compiler phase: check.
Compiler explanation: A loop expression has break values whose types cannot join to one result type.
Message templates. The marker ⟨value⟩ stands for text computed for the reported program.
breakvalues targeting this loop disagree — earlierbreakis⟨value⟩, this is⟨value⟩(all break values must have the same type) Source
When a value-producing loop has no contextual result type, incompatible break-value types are rejected with TPZ5721. The int and string break values in this program are assignable in neither direction.
Inferred loop break types must be compatible
When a value-producing loop has no contextual result type, incompatible break-value types are rejected with TPZ5721. The int and string break values in this program are assignable in neither direction.
Response
링크Make the breaks produce compatible values. The repaired program returns int from both branches.
Reproduction and verification
링크Rejected program
링크let flag: bool = truelet result = loop {if (flag) { break 1 } else { break "text" }}
표준 출력 없음.기대 결과
This condition applies to a value loop with no expected result type and concrete incompatible break types. The checker compares assignability in both directions; the example does not impose a type-spelling equality rule on other loop contexts.
Repaired program
링크let flag: bool = truelet result = loop {if (flag) { break 1 } else { break 2 }}
기대 결과
기대 결과
검사가 프로그램을 받아들입니다. 종료 코드 0.
This condition applies to a value loop with no expected result type and concrete incompatible break types. The checker compares assignability in both directions; the example does not impose a type-spelling equality rule on other loop contexts.