Merging the resolving and typechecking passes into one might help performance. The resulting pass can be called “semantic analysis”, or “Sema”.