GSoC Project Idea: "Extend clang AST to provide information for the type as written in template instantiations"

Hello to all clang developers,

I am interested in participating in Google Summer of Code 2020.

The project idea that caught my eye is "Extend clang AST to provide

information for the type as written in template instantiations".

Currently I am trying to assemble a proposal for this project idea.

This is the first time that I try to get involved in an open-source project.

The past week I looked into some parts of clang like the

AST, ASTContext, Decl, ParseTemplate, SemaTemplateInstantiate,

in order to get familiar with the code. Also, i used the AST dump

to understand what is being generated for a sample c++ program with templates.

This documentation seemed useful too: “Clang” CFE Internals Manual — Clang 16.0.0git documentation

I could use some guidance on how to continue.

For example, the project description states that: "Clang does not preserve

type sugar when subsequently accessing members of the instantiation".

Where should i look for the template argument canonicalization

before the substitution in the template pattern?

Any general advice on how to get familiar with the llvm-project/clang is welcome.

Thanks in advance,

Aristotelis Koutsouridis, University of Athens.