# Integer literals

## Literals

We can infer an integer literal type:

```py
reveal_type(1)  # revealed: Literal[1]
```

## Variable

```py
x = 1
reveal_type(x)  # revealed: Literal[1]
```

## Overflow

We only track integer literals within the range of an i64:

```py
reveal_type(9223372036854775808)  # revealed: int
```

## Big int

We don't support big integer literals; we just infer `int` type instead:

```py
x = 10_000_000_000_000_000_000
reveal_type(x)  # revealed: int
```

## Negated

```py
x = -1
y = -1234567890987654321
z = --987
reveal_type(x)  # revealed: Literal[-1]
reveal_type(y)  # revealed: Literal[-1234567890987654321]
reveal_type(z)  # revealed: Literal[987]
```

## Floats

```py
reveal_type(1.0)  # revealed: float*
```

## Complex

```py
reveal_type(2j)  # revealed: complex*
```
