Synthesize concrete type constants from defaults, fix naming
Summary:
This implements the default behavior of abstract type constants.
```
abstract class A {
abstract const type T = int;
}
class B extends A {
// const type T = int; (implicit) <<<<<<
}
class C extends A {
const type T = string; // normal behavior
}
```
I fixed the naming of the default (before, class A was being named as "A" rather than "\\A") and changed the `ttc_type` to match the `None` of abstract type constants without defaults.
This diff only implements legacy decl of type consts. Doesn't touch class consts or lazy decl.
Reviewed By: Matt-Schellhas
Differential Revision:
D14967542
fbshipit-source-id:
9a4c5868c7e8628544ce769727918787ccbc66ae