19ExprResult Parser::ParseCXXReflectExpression() {
25 assert(Tok.is(tok::caretcaret));
27 SourceLocation OperandLoc = Tok.getLocation();
34 TypeSourceInfo *TSI =
nullptr;
35 QualType QT = Actions.GetTypeFromParser(TR.
get(), &TSI);
41 TSI = Actions.getASTContext().getTrivialTypeSourceInfo(QT, OperandLoc);
46 return Actions.ActOnCXXReflectExpr(CaretCaretLoc, TSI);
50 Diag(OperandLoc, diag::err_cannot_reflect_operand);
TypeResult ParseTypeName(SourceRange *Range=nullptr, DeclaratorContext Context=DeclaratorContext::TypeName, AccessSpecifier AS=AS_none, Decl **OwnedType=nullptr, ParsedAttributes *Attrs=nullptr)
ParseTypeName.
DiagnosticBuilder Diag(SourceLocation Loc, unsigned DiagID)
SourceLocation ConsumeToken()
ConsumeToken - Consume the current 'peek token' and lex the next one.
bool isNull() const
Return true if this QualType doesn't point to a type yet.
const Type * getTypePtr() const
Retrieves a pointer to the underlying (unqualified) type.
QualType getCanonicalType() const
QualType getUnqualifiedType() const
Retrieve the unqualified variant of the given type, removing as little sugar as possible.
@ Unevaluated
The current expression and its subexpressions occur within an unevaluated operand (C++11 [expr]p7),...
bool isBuiltinType() const
Helper methods to distinguish type categories.
The JSON file list parser is used to communicate input to InstallAPI.
ActionResult< ParsedType > TypeResult
ActionResult< Expr * > ExprResult