|
clang
5.0.0
|
#include "clang/Lex/LiteralSupport.h"#include "clang/Basic/CharInfo.h"#include "clang/Basic/LangOptions.h"#include "clang/Basic/SourceLocation.h"#include "clang/Basic/TargetInfo.h"#include "clang/Lex/LexDiagnostic.h"#include "clang/Lex/Lexer.h"#include "clang/Lex/Preprocessor.h"#include "clang/Lex/Token.h"#include "llvm/ADT/APInt.h"#include "llvm/ADT/SmallVector.h"#include "llvm/ADT/StringExtras.h"#include "llvm/ADT/StringSwitch.h"#include "llvm/Support/ConvertUTF.h"#include "llvm/Support/ErrorHandling.h"#include <algorithm>#include <cassert>#include <cstddef>#include <cstdint>#include <cstring>#include <string>Go to the source code of this file.
Functions | |
| static unsigned | getCharWidth (tok::TokenKind kind, const TargetInfo &Target) |
| static CharSourceRange | MakeCharSourceRange (const LangOptions &Features, FullSourceLoc TokLoc, const char *TokBegin, const char *TokRangeBegin, const char *TokRangeEnd) |
| static DiagnosticBuilder | Diag (DiagnosticsEngine *Diags, const LangOptions &Features, FullSourceLoc TokLoc, const char *TokBegin, const char *TokRangeBegin, const char *TokRangeEnd, unsigned DiagID) |
| Produce a diagnostic highlighting some portion of a literal. More... | |
| static unsigned | ProcessCharEscape (const char *ThisTokBegin, const char *&ThisTokBuf, const char *ThisTokEnd, bool &HadError, FullSourceLoc Loc, unsigned CharWidth, DiagnosticsEngine *Diags, const LangOptions &Features) |
| ProcessCharEscape - Parse a standard C escape sequence, which can occur in either a character or a string literal. More... | |
| static void | appendCodePoint (unsigned Codepoint, llvm::SmallVectorImpl< char > &Str) |
| static bool | ProcessUCNEscape (const char *ThisTokBegin, const char *&ThisTokBuf, const char *ThisTokEnd, uint32_t &UcnVal, unsigned short &UcnLen, FullSourceLoc Loc, DiagnosticsEngine *Diags, const LangOptions &Features, bool in_char_string_literal=false) |
| ProcessUCNEscape - Read the Universal Character Name, check constraints and return the UTF32. More... | |
| static int | MeasureUCNEscape (const char *ThisTokBegin, const char *&ThisTokBuf, const char *ThisTokEnd, unsigned CharByteWidth, const LangOptions &Features, bool &HadError) |
| MeasureUCNEscape - Determine the number of bytes within the resulting string which this UCN will occupy. More... | |
| static void | EncodeUCNEscape (const char *ThisTokBegin, const char *&ThisTokBuf, const char *ThisTokEnd, char *&ResultBuf, bool &HadError, FullSourceLoc Loc, unsigned CharByteWidth, DiagnosticsEngine *Diags, const LangOptions &Features) |
| EncodeUCNEscape - Read the Universal Character Name, check constraints and convert the UTF32 to UTF8 or UTF16. More... | |
| static bool | alwaysFitsInto64Bits (unsigned Radix, unsigned NumDigits) |
| static const char * | resyncUTF8 (const char *Err, const char *End) |
Definition at line 911 of file LiteralSupport.cpp.
Referenced by clang::NumericLiteralParser::GetIntegerValue().
|
static |
Definition at line 230 of file LiteralSupport.cpp.
Referenced by clang::expandUCNs().
|
static |
Produce a diagnostic highlighting some portion of a literal.
Emits the diagnostic DiagID, highlighting the range of characters from TokRangeBegin (inclusive) to TokRangeEnd (exclusive), which must be a substring of a spelling buffer for the token beginning at TokBegin.
Definition at line 78 of file LiteralSupport.cpp.
References clang::Lexer::AdvanceToTokenCharacter(), Begin, clang::FullSourceLoc::getManager(), MakeCharSourceRange(), and clang::DiagnosticsEngine::Report().
Referenced by clang::Sema::ActOnBreakStmt(), clang::Sema::ActOnCapScopeReturnStmt(), clang::Sema::ActOnCaseStmt(), clang::Sema::ActOnCharacterConstant(), clang::Sema::ActOnClassTemplateSpecialization(), clang::Sema::ActOnCompoundStmt(), clang::Sema::ActOnContinueStmt(), clang::Sema::ActOnCoroutineBodyStart(), clang::Sema::ActOnCXXForRangeStmt(), clang::Sema::ActOnCXXTryBlock(), clang::Sema::ActOnCXXTypeid(), clang::Sema::ActOnCXXUuidof(), clang::Sema::ActOnDefaultStmt(), clang::Sema::ActOnDependentMemberExpr(), clang::Sema::ActOnDependentTag(), clang::Sema::ActOnDependentTemplateName(), clang::Sema::ActOnExplicitInstantiation(), clang::Sema::ActOnFinishSwitchStmt(), clang::Sema::ActOnForEachDeclStmt(), clang::Sema::ActOnForStmt(), clang::Sema::ActOnGCCAsmStmt(), clang::Sema::ActOnLabelStmt(), clang::Sema::ActOnMemberAccessExpr(), clang::Sema::ActOnMSVCUnknownTypeName(), clang::Sema::ActOnNonTypeTemplateParameter(), clang::Sema::ActOnNumericConstant(), clang::Sema::ActOnObjCAtSynchronizedOperand(), clang::Sema::ActOnObjCAtThrowStmt(), clang::Sema::ActOnObjCAtTryStmt(), clang::Sema::ActOnObjCForCollectionStmt(), clang::Sema::ActOnPopScope(), clang::Sema::ActOnSEHExceptBlock(), clang::Sema::ActOnSEHLeaveStmt(), clang::Sema::ActOnSEHTryBlock(), clang::Sema::ActOnStartOfLambdaDefinition(), clang::Sema::ActOnStringLiteral(), clang::Sema::ActOnTagTemplateIdType(), clang::Sema::ActOnTemplateIdType(), clang::Sema::ActOnTemplateParameterList(), clang::Sema::ActOnTemplateTemplateParameter(), clang::Sema::ActOnTypedefDeclarator(), clang::Sema::ActOnTypenameType(), clang::Sema::ActOnTypeParameter(), clang::Sema::ActOnVariableDeclarator(), clang::Sema::ActOnVarTemplateSpecialization(), applyEditsToTemp(), clang::Sema::BuildAnonymousStructOrUnion(), clang::Sema::BuildAnonymousStructUnionMemberReference(), clang::Sema::BuildCXXForRangeStmt(), clang::Sema::BuildCXXThrow(), clang::Sema::BuildCXXTypeId(), clang::Sema::BuildCXXUuidof(), clang::Sema::BuildDeclarationNameExpr(), clang::Sema::BuildMemberReferenceExpr(), clang::Sema::BuildObjCArrayLiteral(), clang::Sema::BuildObjCAtThrowStmt(), clang::Sema::BuildObjCBoxedExpr(), clang::Sema::BuildObjCDictionaryLiteral(), clang::Sema::BuildObjCStringLiteral(), clang::Sema::BuildPossibleImplicitMemberExpr(), clang::Sema::BuildPredefinedExpr(), clang::Sema::BuildQualifiedDeclarationNameExpr(), clang::Sema::BuildQualifiedTemplateIdExpr(), clang::Sema::BuildReturnStmt(), clang::Sema::BuildUnresolvedCoawaitExpr(), checkAttributeNumArgsImpl(), clang::Sema::CheckCastAlign(), clang::Sema::CheckClassTemplate(), clang::Sema::CheckCompletedCoroutineBody(), CheckCXX98CompatAccessibleCopy(), clang::Sema::CheckDeductionGuideTemplate(), clang::Sema::CheckFunctionTemplateSpecialization(), checkIntToPointerCast(), clang::Sema::checkLiteralOperatorId(), clang::Sema::CheckLoopHintExpr(), clang::Sema::CheckMemberPointerConversion(), clang::Sema::CheckMemberSpecialization(), checkMoreSpecializedThanPrimary(), checkNewAttributesAfterDef(), clang::Sema::CheckNonTypeTemplateParameterType(), clang::Sema::CheckObjCForCollectionOperand(), checkObjCPointerIntrospection(), clang::Sema::CheckParmsForFunctionDef(), clang::Sema::CheckPointerConversion(), clang::Sema::checkPseudoObjectIncDec(), clang::Sema::CheckSpecializationInstantiationRedecl(), clang::Sema::checkStringLiteralArgumentAttr(), clang::Sema::CheckSubscriptingKind(), clang::Sema::CheckTemplateArgument(), clang::Sema::CheckTemplateArgumentList(), clang::Sema::CheckTemplateDeclScope(), clang::Sema::CheckTemplateIdType(), clang::Sema::CheckTemplateParameterList(), CheckTemplateSpecializationScope(), clang::Sema::CheckTemplateTypeArgument(), clang::Sema::CheckTypedefForVariablyModifiedType(), clang::Sema::CheckTypenameType(), clang::Sema::checkUnsafeExprAssigns(), clang::Sema::checkVarDeclRedefinition(), clang::Sema::checkVariadicArgument(), clang::Sema::CheckVarTemplateId(), clang::Sema::CreateGenericSelectionExpr(), clang::Sema::deduceClosureReturnType(), clang::Sema::DeduceFunctionTypeFromReturnExpr(), clang::Sema::DefaultFunctionArrayConversion(), clang::Sema::DefaultLvalueConversion(), clang::DeductionFailureInfo::Destroy(), clang::Sema::DiagnoseAlwaysNonNullPointer(), clang::Sema::DiagnoseAssignmentEnum(), clang::Sema::DiagnoseClassNameShadow(), clang::Sema::DiagnoseEmptyLookup(), clang::Sema::DiagnoseEmptyLoopBody(), clang::Sema::DiagnoseEmptyStmtBody(), clang::Sema::diagnoseExprIntendedAsTemplateName(), clang::Sema::DiagnoseFunctionSpecifiers(), clang::Sema::DiagnoseMisalignedMembers(), clang::Sema::diagnoseQualifiedDeclaration(), clang::Sema::DiagnoseSelfMove(), clang::Sema::DiagnoseSentinelCalls(), clang::Sema::DiagnoseTemplateParameterShadow(), clang::Sema::DiagnoseUninstantiableTemplate(), clang::Sema::DiagnoseUnknownTemplateName(), clang::Sema::DiagnoseUnknownTypeName(), clang::Sema::DiagnoseUnusedDecl(), clang::Sema::DiagnoseUnusedExprResult(), clang::Sema::DiagnoseUnusedLambdaCapture(), clang::Sema::DiagnoseUseOfDecl(), emitNullabilityConsistencyWarning(), clang::DiagnosticRenderer::emitStoredDiagnostic(), EvaluateFeatureLikeBuiltinMacro(), clang::Expr::EvaluateKnownConstInt(), clang::Sema::FindInstantiatedDecl(), clang::arcmt::FileRemapper::flushToFile(), clang::Diagnostic::FormatDiagnostic(), clang::Sema::getDestructorName(), clang::Sema::getDestructorTypeForDecltype(), clang::DiagnosticIDs::getDiagnosticFlags(), GetFullTypeForDeclarator(), clang::Sema::GetNameFromUnqualifiedId(), clang::Sema::getTypeName(), clang::Sema::HandleDeclarator(), clang::Sema::inferObjCARCLifetime(), clang::Sema::InstantiateExceptionSpec(), clang::Sema::InstantiateFunctionDefinition(), clang::Sema::InstantiateVariableDefinition(), clang::Sema::isIncompatibleTypedef(), clang::Sema::IsOverload(), clang::Sema::LazilyCreateBuiltin(), clang::Sema::LookupInObjCMethod(), clang::Sema::LookupTemplateName(), clang::MakeDeductionFailureInfo(), clang::Sema::MatchTemplateParametersToScopeSpecifier(), clang::Sema::MaybeSuggestAddingStaticToDecl(), clang::Sema::mergeDeclAttributes(), clang::Sema::MergeFunctionDecl(), clang::Sema::MergeTypedefNameDecl(), clang::Sema::MergeVarDecl(), clang::Sema::NoteAllFoundTemplates(), clang::Sema::NoteDeletedFunction(), clang::Sema::notePreviousDefinition(), clang::arcmt::FileRemapper::overwriteOriginal(), clang::Sema::ParsedFreeStandingDeclSpec(), ParseLangArgs(), clang::Sema::ParseObjCStringLiteral(), ProcessCharEscape(), ProcessUCNEscape(), SelectPropertyForSynthesisFromProtocols(), clang::Sema::SemaBuiltinShuffleVector(), clang::Sema::SemaConvertVectorExpr(), clang::DiagnosticsEngine::setDiagnosticGroupErrorAsFatal(), clang::DiagnosticsEngine::setDiagnosticGroupWarningAsError(), clang::Sema::SetMemberAccessSpecifier(), clang::DiagnosticsEngine::setSeverityForAll(), clang::DiagnosticsEngine::setSeverityForGroup(), and clang::Sema::setTagNameForLinkagePurposes().
|
static |
EncodeUCNEscape - Read the Universal Character Name, check constraints and convert the UTF32 to UTF8 or UTF16.
This is a subroutine of StringLiteralParser. When we decide to implement UCN's for identifiers, we will likely rework our support for UCN's.
Definition at line 381 of file LiteralSupport.cpp.
References ProcessUCNEscape().
|
static |
Definition at line 39 of file LiteralSupport.cpp.
References clang::TargetInfo::getChar16Width(), clang::TargetInfo::getChar32Width(), clang::TargetInfo::getCharWidth(), and clang::TargetInfo::getWCharWidth().
Referenced by clang::CharLiteralParser::CharLiteralParser().
|
static |
Definition at line 59 of file LiteralSupport.cpp.
References clang::Lexer::AdvanceToTokenCharacter(), Begin, End, clang::CharSourceRange::getCharRange(), and clang::FullSourceLoc::getManager().
Referenced by Diag().
|
static |
MeasureUCNEscape - Determine the number of bytes within the resulting string which this UCN will occupy.
Definition at line 346 of file LiteralSupport.cpp.
References ProcessUCNEscape().
Referenced by clang::StringLiteralParser::getOffsetOfStringByte().
|
static |
ProcessCharEscape - Parse a standard C escape sequence, which can occur in either a character or a string literal.
Definition at line 91 of file LiteralSupport.cpp.
References Diag(), clang::isHexDigit(), and clang::isPrintable().
Referenced by clang::CharLiteralParser::CharLiteralParser(), and clang::StringLiteralParser::getOffsetOfStringByte().
|
static |
ProcessUCNEscape - Read the Universal Character Name, check constraints and return the UTF32.
Definition at line 274 of file LiteralSupport.cpp.
References Diag(), and clang::isHexDigit().
Referenced by clang::CharLiteralParser::CharLiteralParser(), EncodeUCNEscape(), and MeasureUCNEscape().
|
static |
Definition at line 1574 of file LiteralSupport.cpp.
References End.
1.8.6