clang 20.0.0git
|
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... | |
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. | |
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. | |
QualType | get (SourceLocation Tok) const |
Get the expected type associated with this location, if any. | |
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.
|
inline |
void PreferredTypeBuilder::enterBinary | ( | Sema & | S, |
SourceLocation | Tok, | ||
Expr * | LHS, | ||
tok::TokenKind | Op | ||
) |
Definition at line 581 of file SemaCodeComplete.cpp.
References getPreferredTypeOfBinaryRHS().
void PreferredTypeBuilder::enterCondition | ( | Sema & | S, |
SourceLocation | Tok | ||
) |
Definition at line 629 of file SemaCodeComplete.cpp.
References clang::ASTContext::BoolTy, and clang::Sema::getASTContext().
void PreferredTypeBuilder::enterDesignatedInitializer | ( | SourceLocation | Tok, |
QualType | BaseType, | ||
const Designation & | D | ||
) |
Handles e.g. BaseType{ .D = Tok...
Definition at line 443 of file SemaCodeComplete.cpp.
References D, and getDesignatedType().
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 function, 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 453 of file SemaCodeComplete.cpp.
void PreferredTypeBuilder::enterMemAccess | ( | Sema & | S, |
SourceLocation | Tok, | ||
Expr * | Base | ||
) |
Definition at line 590 of file SemaCodeComplete.cpp.
void PreferredTypeBuilder::enterParenExpr | ( | SourceLocation | Tok, |
SourceLocation | LParLoc | ||
) |
Definition at line 462 of file SemaCodeComplete.cpp.
void PreferredTypeBuilder::enterReturn | ( | Sema & | S, |
SourceLocation | Tok | ||
) |
Definition at line 412 of file SemaCodeComplete.cpp.
References clang::Sema::CurContext, clang::Function, and clang::Sema::getCurBlock().
void PreferredTypeBuilder::enterSubscript | ( | Sema & | S, |
SourceLocation | Tok, | ||
Expr * | LHS | ||
) |
Definition at line 611 of file SemaCodeComplete.cpp.
References clang::Sema::getASTContext(), and clang::ASTContext::IntTy.
void PreferredTypeBuilder::enterTypeCast | ( | SourceLocation | Tok, |
QualType | CastType | ||
) |
Handles all type casts, including C-style cast, C++ casts, etc.
Definition at line 620 of file SemaCodeComplete.cpp.
void PreferredTypeBuilder::enterUnary | ( | Sema & | S, |
SourceLocation | Tok, | ||
tok::TokenKind | OpKind, | ||
SourceLocation | OpLoc | ||
) |
Definition at line 601 of file SemaCodeComplete.cpp.
References get(), and getPreferredTypeOfUnaryArg().
void PreferredTypeBuilder::enterVariableInit | ( | SourceLocation | Tok, |
Decl * | D | ||
) |
Definition at line 432 of file SemaCodeComplete.cpp.
References D.
|
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 307 of file Sema.h.
Referenced by enterUnary(), clang::Parser::ParseAssignmentExpression(), and clang::Parser::ParseConditionalExpression().