On 5/24/2016 9:22 AM, Timon Gehr wrote:
Yes, it does. The compiler does not use exponential space to store the AST.
BTW, all types in dmd have a 'deco' string which is the AST linearized as a string. This string is also used to build the mangled names.
All the deco's are put into a hashtable, and then all types can be uniquely identified by their address in the hashtable. This reduces type comparisons to a single pointer comparison.