begin

  byte b
  short sh
  integer i
  longinteger li

  b = 255
  b = 127
  b = -128
  b = 16_FF
  b = 16_7F
  b = 16_80

  sh = 65535        ;! Too big - warning or error - "Short numerical constant too big"  Should cause runtime integer overflow
  sh = 32767
  sh = -32768
  sh = 16_FFFF      ;! Too big - warning or error - "Short numerical constant too big"  Should cause runtime integer overflow
  sh = 16_7FFF
  sh = 16_8000
  
  sh <- b
  sh = b
  sh <- i
  sh <- li

  ! i = 4294967295    ;! Too big - type error
  i = 2147483647
  ! i = -2147483648   ;! Too big - type error!  Because it is compiled as -(2147483648)
  i = -2147483647     ;! Too big - type error!  Because it is compiled as -(2147483648)
  i = 16_FFFFFFFF     ;! Too big - warning or error  Should cause runtime integer overflow
  i = 16_7FFFFFFF
  i = 16_80000000
  
  i <- b
  i = b
  i <- sh
  i = sh
  i <- li

  ! li = 18446744073709551615  ;! Too big - type error
  ! li = -9223372036854775808  ;! Too big - type error
  ! li =  9223372036854775807  ;! Too big - type error
  
  li = 16_FFFFFFFFFFFFFFFF        ;! These three are accepted, but I believe will be truncated because our pass1 is 32-bit    Should cause runtime integer overflow
  li = 16_7FFFFFFFFFFFFFFF
  li = 16_8000000000000000
  
  li <- b
  li = b
  li <- sh
  li = sh
  li <- i
  li = i

endofprogram