Example of illegal code:

```ada
   type T is access Integer;
   X : T := new Integer; -- error
```

This error is issued on uses of uninitialized allocators. Instead, an
initialized allocator should be used in SPARK, where the value provided is used
to initialized the memory allocated. Here is a fix for the code above:

```ada
   type T is access Integer;
   X : T := new Integer'(42);
```

Note the use of a quote symbol. Indeed, the syntax of initialized allocators
uses a qualified expression (with quote), while the syntax of uninitialized
allocators uses the subtype name (without quote).

In cases where the type being allocated defines a default value, using an
uninitialized allocator is allowed in SPARK, since the default value is used in
that case. The following code is allowed:

```ada
   type Int is new Integer with Default_Value => 42;
   type T is access Int;
   X : T := new Int;
```
