[LLVMdev] Proposal for GSoC project for clang front end

Argiris Kirtzidis akyrtzi at gmail.com
Thu Mar 20 13:52:02 PDT 2008


Thanks for your feedback Chris,

Chris Lattner wrote:
> If I were going to pick, I would suggest focusing on getting simple 
> methods implemented, along with instance variables, etc through 
> -fsyntax-only.  This should be a reasonable amount of work for a summer. 
> Something like this should work for example:
>
> class foo {
>    int X;
>    typedef float Z;
>    int test(Z a) { return a+X; }
>    int test2(q r);
>    tyepdef float q;
> };
>
> int foo::test2(q r) {
>    return X+r;
> }
>
> No overloading, not templates, but handling the basic "class issues". 
> Static methods would be a bonus :)
Ok, adding basic class support sounds great. It will include:

1) declaring methods, nested classes, enumerations and typedefs. (nested 
types will be accessible
    only by class methods, unless class scope resolution is implemented; 
see below)
2) member access control ("public:" etc)
3) calling instance methods.
> int foo::test2(q r) {
>    return X+r;
> }
This is actually quite tricky, because clang currently assumes that a 
declaration can be "found"
only by using an identifier (support for '::' in "foo::test2" needed), 
and for name lookup it
assumes that the declaration is accessible at the current scope or at an 
enclosing scope of the
current one (support for resolving X in "return X+r;" needed).

So either a kind of "hack" would be employed to get correct parsing for 
this situation only,
or "proper" C++ name lookup would be developed to also accommodate 
access to class nested types
and static members. Personally I'd prefer the latter, but I'd like to 
hear your opinion whether
[1) - 3)] plus "C++ name lookup" is a reasonable amount of work for the 
summer or something
should be dropped or simplified.


-Argiris



More information about the llvm-dev mailing list