Skip to content
  • Douglas Gregor's avatar
    Initial implementation of a code-completion interface in Clang. In · 2436e711
    Douglas Gregor authored
    essence, code completion is triggered by a magic "code completion"
    token produced by the lexer [*], which the parser recognizes at
    certain points in the grammar. The parser then calls into the Action
    object with the appropriate CodeCompletionXXX action.
    
    Sema implements the CodeCompletionXXX callbacks by performing minimal
    translation, then forwarding them to a CodeCompletionConsumer
    subclass, which uses the results of semantic analysis to provide
    code-completion results. At present, only a single, "printing" code
    completion consumer is available, for regression testing and
    debugging. However, the design is meant to permit other
    code-completion consumers.
    
    This initial commit contains two code-completion actions: one for
    member access, e.g., "x." or "p->", and one for
    nested-name-specifiers, e.g., "std::". More code-completion actions
    will follow, along with improved gathering of code-completion results
    for the various contexts.
    
    [*] In the current -code-completion-dump testing/debugging mode, the
    file is truncated at the completion point and EOF is translated into
    "code completion".
    
    llvm-svn: 82166
    2436e711
Loading