blob: 3125ff7039c52673a70edae60d6e0efe215734d9 [file] [log] [blame]
cue eval -i bound.cue
cmp stdout expect-stdout-cue
-- frontmatter.toml --
title = "Predefined Bounds"
description = ""
-- text.md --
CUE numbers have arbitrary precision.
Also there is no unsigned integer type.
CUE defines the following predefined identifiers to restrict the bounds of
integers to common values.
```
uint >=0
uint8 >=0 & <=255
int8 >=-128 & <=127
uint16 >=0 & <=65536
int16 >=-32_768 & <=32_767
rune >=0 & <=0x10FFFF
uint32 >=0 & <=4_294_967_296
int32 >=-2_147_483_648 & <=2_147_483_647
uint64 >=0 & <=18_446_744_073_709_551_615
int64 >=-9_223_372_036_854_775_808 & <=9_223_372_036_854_775_807
int128 >=-170_141_183_460_469_231_731_687_303_715_884_105_728 &
<=170_141_183_460_469_231_731_687_303_715_884_105_727
uint128 >=0 & <=340_282_366_920_938_463_463_374_607_431_768_211_455
```
-- bound.cue --
positive: uint
byte: uint8
word: int32
{
a: positive & -1
b: byte & 128
c: word & 2_000_000_000
}
-- expect-stdout-cue --
a: _|_ // invalid value -1 (out of bound int & >=0)
b: 128
c: 2000000000