[GSoC] Improve shell autocompletion for Clang

Hi Yuka and Vassil,

My name is Shivam Gupta, currently I am in third year of Bachelor of Engineering major in computer science from Samrat Ashok Technological Institute,India and completed compiler theory course with the Dragon book in last semester.

I interested to work on “Improving the shell auto-completion for clang” project.As a student I think It will a great project to understand llvm development process and also have the pleasure to contribute to a infrastructure that is use by million of developers.

I have following basic queries regarding project-
1.Actually I have not much experience with working on shell scripting projects but I committed to this project and want to improve my skills so can you suggest link of some well documented related scripting projects to gain some more understanding.

2.I had goes through your 2017 GSoC project’s bash completion script and watch phabricator review of patches,you had major work on llvm’s option and clang’s driver directory but for llvm-opt tool completion which part of source code and document should I need to focus.

3 Can you assign some beginner level bugs or issue that should help to better understand of project and gain the required confidence for future works.

Thanks for help and previous contributions

Best regard
Shivam

Hi Shivam,

Thank you for your interest!

  1. Don’t worry so much about shell scripting, but if you want to practice, I would recommend writing an autocompletion script for zsh. You can reuse bash-autocompletion script but need to adjust here and there to zsh features. You can, for example, refer to this repository to get a sense of how zsh autocompletion works. Let us know if you made some progress!

  2. Wow, you’ve already done research, great! llvm-opt-fuzzer’s code is in llvm/tools/llvm-opt-fuzzer but I would suggest looking into projects which include “llvm/Option/OptTable.h”. Out implementation in 2017 was in llvm/Option, as you noticed, and it can be reused at the place where it’s using llvm Option/OptTable. So what about looking into lld/lib/Driver/DarwinLdDriver.cpp for example?

  3. How about those bugs?
    Driver:
    https://bugs.llvm.org/show_bug.cgi?id=17342

https://bugs.llvm.org/show_bug.cgi?id=39782

https://bugs.llvm.org/show_bug.cgi?id=41094

Frontend:
https://bugs.llvm.org/show_bug.cgi?id=40234

But I would suggest looking into 1&2 materials first!

Let us know if you have further questions!

Cheers,
Yuka