Diagnostic and cause
링크Negative integer exponent
- 계열
- topaz
- 단계
- run
- 코드
TPZ4005
원인과 조건
For two int operands, exponentiation rejects a negative exponent at runtime with TPZ4005. A nonnegative exponent is accepted when the exponent and result fit their required integer ranges.
관련 규칙 · Integer exponentiation requires a nonnegative exponent →대응
Use a nonnegative integer exponent whose result fits int, or use float operands for a fractional result.
Compiler phase: runtime.
Compiler explanation: Integer exponentiation received a negative exponent.
Message templates are Pending. The explanation above is not an observed CLI message.
Observed for the candidate in Topaz 5.21.3. Execution
- error[TPZ4005]: integer exponent must be non-negative; use float operands
Integer exponentiation with two int operands rejects a negative exponent at runtime with TPZ4005. The guard runs before conversion to u32 and checked exponentiation.
Integer exponentiation requires a nonnegative exponent
For two int operands, exponentiation rejects a negative exponent at runtime with TPZ4005. A nonnegative exponent is accepted when the exponent and result fit their required integer ranges.
Response
링크Use a nonnegative integer exponent whose result fits int, or use float operands for a fractional result.
Reproduction and verification
링크Rejected program
링크function power(exponent: int) -> int {2 ** exponent}power(-1)
표준 출력 없음.기대 결과
Run these runtime diagnostic assertions with TOPAZ_BIN set using node docs/topaz-reference/templates/diagnostics-p5-runtime.product.mjs. The shared example observer currently evaluates check diagnostics.
Repaired program
링크function power(exponent: int) -> int {2 ** exponent}power(0)
표준 출력 없음.기대 결과
기대 결과
실행을 마칩니다. 종료 코드 0.
Run these runtime diagnostic assertions with TOPAZ_BIN set using node docs/topaz-reference/templates/diagnostics-p5-runtime.product.mjs. The shared example observer currently evaluates check diagnostics.