### Godot version

4.0 Beta 11 to 13

### System information

Windows 10

### Issue description

When trying to upgrade from Beta 10 one of my projects would immediately crash when opening the editor, with no error in the console which also crashed. I managed to isolate it to this enum:

```
enum { # Directions, clockwise, powers of 100, each direction gets 2 digits, allowing 100 terrains
	CENTER = 01,
	NORTH = 0100, # -Z
	NORTH_EAST = 010000,
	EAST = 01000000, # +X
	SOUTH_EAST = 0100000000,
	SOUTH = 010000000000, # +Z
	SOUTH_WEST = 01000000000000,
	WEST = 0100000000000000, # -X
	NORTH_WEST = 010000000000000000,
	ALL = 010101010101010101,
	ALL_CORNERS = NORTH_EAST + SOUTH_EAST + SOUTH_WEST + NORTH_WEST,
}
```

With this last line causing the crash:
`ALL_CORNERS = NORTH_EAST + SOUTH_EAST + SOUTH_WEST + NORTH_WEST,`

This worked in all the betas I've used up to and including Beta 10


### Steps to reproduce

Copy and paste that enum into a script, and save. Simply having a script with this enum will cause the editor to crash, the script doesn't need to be used anywhere.

### Minimal reproduction project

N/A
bool all_is_constant = true;
					Vector<Variant> args;
					args.resize(call->arguments.size());
					for (int i = 0; i < call->arguments.size(); i++) {
						reduce_expression(call->arguments[i]);
						if (!call->arguments[i]->is_constant) {
							all_is_constant = false;
						} else if (all_is_constant) {
							args.write[i] = call->arguments[i]->reduced_value;
						}
						GDScriptParser::DataType arg_type = call->arguments[i]->get_datatype();
						if (!arg_type.is_variant()) {
							if (arg_type.kind != GDScriptParser::DataType::BUILTIN) {
								all_is_constant = false;
								push_error(vformat(R"*(Invalid argument for "range()" call. Argument %d should be int or float but "%s" was given.)*", i + 1, arg_type.to_string()), call->arguments[i]);
							} else if (arg_type.builtin_type != Variant::INT && arg_type.builtin_type != Variant::FLOAT) {
								all_is_constant = false;
								push_error(vformat(R"*(Invalid argument for "range()" call. Argument %d should be int or float but "%s" was given.)*", i + 1, arg_type.to_string()), call->arguments[i]);
							}
						}
					}
					Variant reduced;
					if (all_is_constant) {
						switch (args.size()) {
							case 1:
								reduced = (int32_t)args[0];
								break;
							case 2:
								reduced = Vector2i(args[0], args[1]);