Now that we've removed generics, we need to generate some functions at compile time. For example, operator.length of an int. There is no way of describing this generically in the standard library, so we do it at compile time.
These newly-generated functions need to be created inside the type checker, because that's the only place which the type of every expression in the program. However, this is halfway through compilation. We need to make sure these newly-generated functions don't have any observable difference than regular functions in the standard library.
Migrated to https://github.com/gpuweb/WHLSL/issues/86