Previously, the arc liberate workflow would choke on codebases using 5.3+ features such as traits and namespaces despite XHPAST being updated to parse this code. This change adds the necessary changes into the symbol map script to resolve most namespaces and handle trait use and declaration.
There are two main limitations:
- Files which use multiple namespaces remain unsupported. It's unlikely to be a problem in practice (unless trying to liberate test fixtures) as there's effectively no overlap between people/codebases that use PHP namespaces and those that would not put them in their own file
- There's no support for resolving needed namespaced functions. Due to how the PHP engine works this can only be done at runtime, so all "need"s are assumed to be in the global namespace (exception: the function was declared in the same file as the code that requires it)