clang  14.0.0git
Public Member Functions | List of all members
clang::PreferredTypeBuilder Class Reference

Tracks expected type during expression parsing, for use in code completion. More...

#include "clang/Sema/Sema.h"

Public Member Functions

 PreferredTypeBuilder (bool Enabled)
 
void enterCondition (Sema &S, SourceLocation Tok)
 
void enterReturn (Sema &S, SourceLocation Tok)
 
void enterVariableInit (SourceLocation Tok, Decl *D)
 
void enterDesignatedInitializer (SourceLocation Tok, QualType BaseType, const Designation &D)
 Handles e.g. BaseType{ .D = Tok... More...
 
void enterFunctionArgument (SourceLocation Tok, llvm::function_ref< QualType()> ComputeType)
 Computing a type for the function argument may require running overloading, so we postpone its computation until it is actually needed. More...
 
void enterParenExpr (SourceLocation Tok, SourceLocation LParLoc)
 
void enterUnary (Sema &S, SourceLocation Tok, tok::TokenKind OpKind, SourceLocation OpLoc)
 
void enterBinary (Sema &S, SourceLocation Tok, Expr *LHS, tok::TokenKind Op)
 
void enterMemAccess (Sema &S, SourceLocation Tok, Expr *Base)
 
void enterSubscript (Sema &S, SourceLocation Tok, Expr *LHS)
 
void enterTypeCast (SourceLocation Tok, QualType CastType)
 Handles all type casts, including C-style cast, C++ casts, etc. More...
 
QualType get (SourceLocation Tok) const
 Get the expected type associated with this location, if any. More...
 

Detailed Description

Tracks expected type during expression parsing, for use in code completion.

The type is tied to a particular token, all functions that update or consume the type take a start location of the token they are looking at as a parameter. This avoids updating the type on hot paths in the parser.

Definition at line 296 of file Sema.h.

Constructor & Destructor Documentation

◆ PreferredTypeBuilder()

clang::PreferredTypeBuilder::PreferredTypeBuilder ( bool  Enabled)
inline

Definition at line 298 of file Sema.h.

Member Function Documentation

◆ enterBinary()

void PreferredTypeBuilder::enterBinary ( Sema S,
SourceLocation  Tok,
Expr LHS,
tok::TokenKind  Op 
)

Definition at line 554 of file SemaCodeComplete.cpp.

◆ enterCondition()

void PreferredTypeBuilder::enterCondition ( Sema S,
SourceLocation  Tok 
)

Definition at line 603 of file SemaCodeComplete.cpp.

◆ enterDesignatedInitializer()

void PreferredTypeBuilder::enterDesignatedInitializer ( SourceLocation  Tok,
QualType  BaseType,
const Designation D 
)

Handles e.g. BaseType{ .D = Tok...

Definition at line 416 of file SemaCodeComplete.cpp.

References getDesignatedType().

◆ enterFunctionArgument()

void PreferredTypeBuilder::enterFunctionArgument ( SourceLocation  Tok,
llvm::function_ref< QualType()>  ComputeType 
)

Computing a type for the function argument may require running overloading, so we postpone its computation until it is actually needed.

Clients should be very careful when using this funciton, as it stores a function_ref, clients should make sure all calls to get() with the same location happen while function_ref is alive.

The callback should also emit signature help as a side-effect, but only if the completion point has been reached.

Definition at line 426 of file SemaCodeComplete.cpp.

◆ enterMemAccess()

void PreferredTypeBuilder::enterMemAccess ( Sema S,
SourceLocation  Tok,
Expr Base 
)

Definition at line 563 of file SemaCodeComplete.cpp.

◆ enterParenExpr()

void PreferredTypeBuilder::enterParenExpr ( SourceLocation  Tok,
SourceLocation  LParLoc 
)

Definition at line 435 of file SemaCodeComplete.cpp.

◆ enterReturn()

void PreferredTypeBuilder::enterReturn ( Sema S,
SourceLocation  Tok 
)

Definition at line 385 of file SemaCodeComplete.cpp.

◆ enterSubscript()

void PreferredTypeBuilder::enterSubscript ( Sema S,
SourceLocation  Tok,
Expr LHS 
)

Definition at line 585 of file SemaCodeComplete.cpp.

◆ enterTypeCast()

void PreferredTypeBuilder::enterTypeCast ( SourceLocation  Tok,
QualType  CastType 
)

Handles all type casts, including C-style cast, C++ casts, etc.

Definition at line 594 of file SemaCodeComplete.cpp.

◆ enterUnary()

void PreferredTypeBuilder::enterUnary ( Sema S,
SourceLocation  Tok,
tok::TokenKind  OpKind,
SourceLocation  OpLoc 
)

Definition at line 575 of file SemaCodeComplete.cpp.

◆ enterVariableInit()

void PreferredTypeBuilder::enterVariableInit ( SourceLocation  Tok,
Decl D 
)

Definition at line 405 of file SemaCodeComplete.cpp.

◆ get()

QualType clang::PreferredTypeBuilder::get ( SourceLocation  Tok) const
inline

Get the expected type associated with this location, if any.

If the location is a function argument, determining the expected type involves considering all function overloads and the arguments so far. In this case, signature help for these function overloads will be reported as a side-effect (only if the completion point has been reached).

Definition at line 333 of file Sema.h.

Referenced by clang::Parser::ParseAssignmentExpression().


The documentation for this class was generated from the following files: