Bots, Bureaucrats, Interface administrators, smwadministrator, smwcurator, smweditor, Administrators
2,557
edits
Timo.stripf (talk | contribs) No edit summary |
Timo.stripf (talk | contribs) No edit summary |
||
Line 1: | Line 1: | ||
local a=" | local a=""; | ||
local b=" | local b="commit"; | ||
local c=" | local c="prefix"; | ||
local d=" | local d="type"; | ||
local e=" | local e="message"; | ||
local f=" | local f="regex1"; | ||
local g=" | local g="regex2"; | ||
local h=" | local h="regex3"; | ||
local i=" | local i="category"; | ||
local j=" | local j="title"; | ||
local k=" | local k="source"; | ||
local l=" | local l="error: "; | ||
local m=" | local m="Error"; | ||
local n=" | local n="(?:error|fatal error)\\: "; | ||
local o="Semantic Issue"; | local o="Semantic Issue"; | ||
local p=""; | local p="clang/lib/Sema/SemaDecl.cpp"; | ||
local q=" | local q="clang/lib/Sema/SemaExpr.cpp"; | ||
local r=" | local r="clang/lib/Sema/SemaDeclCXX.cpp"; | ||
local s=" | local s="Parse Issue"; | ||
local t=" | local t="Lexical or Preprocessor Issue"; | ||
local u=" | local u="clang/lib/Lex/ModuleMap.cpp"; | ||
local v=" | local v="clang/lib/Sema/SemaDeclAttr.cpp"; | ||
local w=" | local w="Update tablegen diagnostic files to be in sync with the def files."; | ||
local x=" | local x="5a8987ca5113"; | ||
local y=" | local y="clang/lib/Sema/SemaChecking.cpp"; | ||
local z=" | local z="b1c4d5507fad"; | ||
local A=" | local A="The basic representation of diagnostics information in tablegen format, plus (uncommented and incomp..."; | ||
local B="clang/lib/Sema/SemaExprCXX.cpp"; | |||
local | local C="clang/lib/Parse/ParseDecl.cpp"; | ||
local | local D="Modules Issue"; | ||
local | local E="clang/lib/Sema/SemaStmt.cpp"; | ||
local | local F="clang/lib/Sema/SemaType.cpp"; | ||
local | local G="clang/lib/Sema/DeclSpec.cpp"; | ||
local | local H="Fatal"; | ||
local I=" \\ | local I="fatal error: "; | ||
local | local J="fatal error\\: "; | ||
local | local K="clang/lib/Sema/SemaTemplate.cpp"; | ||
local | local L="clang/lib/Sema/SemaInit.cpp"; | ||
local | local M="95f50964fbf5"; | ||
local | local N="Implement P2361 Unevaluated string literals"; | ||
local | local O="clang/lib/Sema/SemaExprObjC.cpp"; | ||
local | local P="clang/lib/AST/ODRDiagsEmitter.cpp"; | ||
local | local Q="clang/lib/Parse/Parser.cpp"; | ||
local | local R="clang/lib/Parse/ParseDeclCXX.cpp"; | ||
local | local S="Lambda Issue"; | ||
local | local T="931fcd3ba011"; | ||
local | local U="[WebAssembly] Improve clang diagnostics for wasm attributes"; | ||
local | local V="clang/lib/Parse/ParseExprCXX.cpp"; | ||
local | local W="clang/lib/Lex/LiteralSupport.cpp"; | ||
local | local X="clang/lib/Sema/SemaModule.cpp"; | ||
local | local Y="Introduce -Wreserved-identifier"; | ||
local Z="b83b23275b74"; | |||
local | local ab="A has different definitions in different modules; first difference is ... found ..."; | ||
local | local bb="clang/lib/Serialization/ASTReader.cpp"; | ||
local | local cb="clang/lib/Sema/SemaCXXScopeSpec.cpp"; | ||
local | local db="clang/lib/Frontend/CompilerInstance.cpp"; | ||
local | local eb="clang/lib/Sema/SemaCoroutine.cpp"; | ||
local | local fb="clang/lib/Sema/SemaExprMember.cpp"; | ||
local | local gb="f881267db9a9"; | ||
local | local hb="clang/lib/Sema/SemaDeclObjC.cpp"; | ||
local | local ib="Mass-rename the handful of error_* diagnostics to err_*."; | ||
local | local jb="AST Deserialization Issue"; | ||
local | local kb="718292f260bf"; | ||
local | local lb="clang/lib/Sema/JumpDiagnostics.cpp"; | ||
local | local mb="Introduce basic support for parsing module map files."; | ||
local | local nb="5e77d76c953d"; | ||
local | local ob="Basic support for Microsoft property declarations and"; | ||
local | local pb="clang/lib/Sema/SemaPseudoObject.cpp"; | ||
local | local qb="clang/lib/Frontend/FrontendAction.cpp"; | ||
local | local rb="clang/lib/Lex/PPDirectives.cpp"; | ||
local | local sb="Inline Assembly Issue"; | ||
local | local tb="Coroutines Issue"; | ||
local | local ub="Implement Attribute Target MultiVersioning"; | ||
local | local vb="[SYCL] Add sycl_kernel attribute for accelerated code outlining"; | ||
local | local wb="ec273d3e3a8c"; | ||
local | local xb="281d20b601c8"; | ||
local | local yb="c094e7dc4b3f"; | ||
local | local zb="Add a warning for not packing non-POD members in packed structs"; | ||
local | local Ab="clang/lib/Sema/SemaOverload.cpp"; | ||
local Bb="clang/lib/Frontend/CompilerInvocation.cpp"; | |||
local | local Cb="f60dc3caa673"; | ||
local | local Db="clang/lib/Parse/ParseStmtAsm.cpp"; | ||
local | local Eb="[C++20][Modules] Adjust handling of exports of namespaces and using-decls."; | ||
local | local Fb="clang/lib/Parse/ParseExpr.cpp"; | ||
local Gb="clang/lib/Sema/SemaObjCProperty.cpp"; | |||
local Hb="clang/lib/Sema/SemaExceptionSpec.cpp"; | |||
local Ib="734410916a6d"; | |||
local Jb="Improve diagnostics for ill-formed literal operator declarations."; | |||
local Kb="clang/lib/Sema/AnalysisBasedWarnings.cpp"; | |||
local Lb="Parse inferred submodules in module maps, track their contents in"; | |||
local Mb="c28aee6a51a9"; | |||
local | |||
return { | return { | ||
[" | ["err_friend_is_member"]={ | ||
[ | [j]="friends cannot be members of the declaring class", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="friends cannot be members of the declaring class", | ||
[ | [f]=n, | ||
[ | [g]="friends cannot be members of the declaring class", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"07e91c04ba33",1249524943,"First pass at friend semantics."}, | ||
[k]={{r,15055,"NamedDecl *Sema::ActOnFriendFunctionDecl(Scope *S, Declarator &D, MultiTemplateParamsArg TemplateParams) {\n if ((SS.isInvalid() || !SS.isSet()) && (FunctionContainingLocalClass = cast<CXXRecordDecl>(CurContext)->isLocalClass())) {\n } else if (SS.isInvalid() || !SS.isSet()) {\n } else if (!SS.getScopeRep()->isDependent()) {\n // C++ [class.friend]p1: A friend of a class is a function or\n // class that is not a member of the class . . .\n if (DC->Equals(CurContext))\n Diag(DS.getFriendSpecLoc(), getLangOpts().CPlusPlus11 ? diag::warn_cxx98_compat_friend_is_member : diag::err_friend_is_member);"}} | |||
}, | }, | ||
[" | ["err_friend_not_first_in_declaration"]={ | ||
[ | [j]="\'friend\' must appear first in a non-function declaration", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'friend\' must appear first in a non-function declaration", | ||
[ | [f]=n, | ||
[ | [g]="\'friend\' must appear first in a non\\-function declaration", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"a31a89a38e8a",1348104660,"Per C++11 [class.friend]p3, the \'friend\' keyword must appear first in a"}, | ||
[k]={{r,14683,"/// Perform semantic analysis of the given friend type declaration.\n///\n/// \\returns A friend declaration that.\nFriendDecl *Sema::CheckFriendTypeDecl(SourceLocation LocStart, SourceLocation FriendLoc, TypeSourceInfo *TSInfo) {\n // C++03 [class.friend]p2:\n // An elaborated-type-specifier shall be used in a friend declaration\n // for a class.*\n //\n // * The class-key of the elaborated-type-specifier is required.\n if (!CodeSynthesisContexts.empty()) {\n } else {\n // C++11 [class.friend]p3:\n // A friend declaration that does not declare a function shall have one\n // of the following forms:\n // friend elaborated-type-specifier ;\n // friend simple-type-specifier ;\n // friend typename-specifier ;\n if (getLangOpts().CPlusPlus11 && LocStart != FriendLoc)\n Diag(FriendLoc, diag::err_friend_not_first_in_declaration) << T;"}} | |||
}, | }, | ||
[" | ["err_func_def_incomplete_result"]={ | ||
[ | [j]="incomplete result type A in function definition", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="incomplete result type %0 in function definition", | ||
[ | [f]=n, | ||
[ | [g]="incomplete result type (.*?) in function definition", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{p,13395,"Decl *Sema::ActOnStartOfFunctionDef(Scope *FnBodyScope, Decl *D, SkipBodyInfo *SkipBody, FnBodyKind BodyKind) {\n if (!ResultType->isDependentType() && !ResultType->isVoidType() && !FD->isInvalidDecl() && BodyKind != FnBodyKind::Delete && (RequireCompleteType(FD->getLocation(), ResultType, diag::err_func_def_incomplete_result) || RequireNonAbstractType(FD->getLocation(), FD->getReturnType(), diag::err_abstract_type_in_decl, AbstractReturnType)))"},{hb,317,"/// ActOnStartOfObjCMethodDef - This routine sets up parameters; invisible\n/// and user declared, in the method definition\'s AST.\nvoid Sema::ActOnStartOfObjCMethodDef(Scope *FnBodyScope, Decl *D) {\n if (!ResultType->isDependentType() && !ResultType->isVoidType() && !MDecl->isInvalidDecl() && RequireCompleteType(MDecl->getLocation(), ResultType, diag::err_func_def_incomplete_result))"}} | |||
}, | }, | ||
[" | ["err_func_def_no_params"]={ | ||
[ | [j]="function definition does not declare parameters", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="function definition does not declare parameters", | ||
[ | [f]=n, | ||
[ | [g]="function definition does not declare parameters", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={z,1236199783,A}, | ||
[k]={{R,2551,"/// ParseCXXClassMemberDeclaration - Parse a C++ class member declaration.\n///\n/// member-declaration:\n/// decl-specifier-seq[opt] member-declarator-list[opt] \';\'\n/// function-definition \';\'[opt]\n/// ::[opt] nested-name-specifier template[opt] unqualified-id \';\'[TODO]\n/// using-declaration [TODO]\n/// [C++0x] static_assert-declaration\n/// template-declaration\n/// [GNU] \'__extension__\' member-declaration\n///\n/// member-declarator-list:\n/// member-declarator\n/// member-declarator-list \',\' member-declarator\n///\n/// member-declarator:\n/// declarator virt-specifier-seq[opt] pure-specifier[opt]\n/// [C++2a] declarator requires-clause\n/// declarator constant-initializer[opt]\n/// [C++11] declarator brace-or-equal-initializer[opt]\n/// identifier[opt] \':\' constant-expression\n///\n/// virt-specifier-seq:\n/// virt-specifier\n/// virt-specifier-seq virt-specifier\n///\n/// virt-specifier:\n/// override\n/// final\n/// [MS] sealed\n///\n/// pure-specifier:\n/// \'= 0\'\n///\n/// constant-initializer:\n/// \'=\' constant-expression\n///\nParser::DeclGroupPtrTy Parser::ParseCXXClassMemberDeclaration(AccessSpecifier AS, ParsedAttributes &AccessAttrs, const ParsedTemplateInfo &TemplateInfo, ParsingDeclRAIIObject *TemplateDiags) {\n // Check for a member function definition.\n if (BitfieldSize.isUnset()) {\n if (DefinitionKind != FunctionDefinitionKind::Declaration) {\n if (!DeclaratorInfo.isFunctionDeclarator()) {\n Diag(DeclaratorInfo.getIdentifierLoc(), diag::err_func_def_no_params);"}} | |||
}, | }, | ||
[" | ["err_func_returning_array_function"]={ | ||
[ | [j]="function cannot return ... type A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="function cannot return %select{array|function}0 type %1", | ||
[ | [f]=n, | ||
[ | [g]="function cannot return (?:array|function) type (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{q,18412,"/// Rebuilds a call expression which yielded __unknown_anytype.\nExprResult RebuildUnknownAnyExpr::VisitCallExpr(CallExpr *E) {\n // Verify that this is a legal result type of a function.\n if (DestType->isArrayType() || DestType->isFunctionType()) {\n unsigned diagID = diag::err_func_returning_array_function;"},{q,18489,"ExprResult RebuildUnknownAnyExpr::VisitObjCMessageExpr(ObjCMessageExpr *E) {\n // Verify that this is a legal result type of a call.\n if (DestType->isArrayType() || DestType->isFunctionType()) {\n S.Diag(E->getExprLoc(), diag::err_func_returning_array_function) << DestType->isFunctionType() << DestType;"},{F,2551,"bool Sema::CheckFunctionReturnType(QualType T, SourceLocation Loc) {\n if (T->isArrayType() || T->isFunctionType()) {\n Diag(Loc, diag::err_func_returning_array_function) << T->isFunctionType() << T;"},{F,4647,"static TypeSourceInfo *GetFullTypeForDeclarator(TypeProcessingState &state, QualType declSpecType, TypeSourceInfo *TInfo) {\n for (unsigned i = 0, e = D.getNumTypeObjects(); i != e; ++i) {\n case DeclaratorChunk::Function: {\n // C99 6.7.5.3p1: The return type may not be a function or array type.\n // For conversion functions, we\'ll diagnose this particular error later.\n if (!D.isInvalidType() && (T->isArrayType() || T->isFunctionType()) && (D.getName().getKind() != UnqualifiedIdKind::IK_ConversionFunctionId)) {\n unsigned diagID = diag::err_func_returning_array_function;"}} | |||
}, | }, | ||
[" | ["err_func_returning_qualified_void"]={ | ||
[c]=" | [j]="function cannot return qualified void type A [-Wqualified-void-return-type]", | ||
[d]= | [c]="warning: ", | ||
[ | [d]="Warning", | ||
[ | ["groups"]={"qualified-void-return-type"}, | ||
[ | ["maingroup"]="qualified-void-return-type", | ||
[ | [e]="function cannot return qualified void type %0", | ||
[ | [f]="(?:warning|error|fatal error)\\: ", | ||
[ | [g]="function cannot return qualified void type (.*?)", | ||
[ | [h]=" \\[(?:\\-Werror,)?\\-Wqualified\\-void\\-return\\-type[^\\]]*\\]", | ||
[i]=o, | |||
[b]={"c116802ef387",1421340353,"PR 20146"}, | |||
[k]={{F,4722,"static TypeSourceInfo *GetFullTypeForDeclarator(TypeProcessingState &state, QualType declSpecType, TypeSourceInfo *TInfo) {\n for (unsigned i = 0, e = D.getNumTypeObjects(); i != e; ++i) {\n case DeclaratorChunk::Function: {\n // cv-qualifiers on return types are pointless except when the type is a\n // class type in C++.\n if ((T.getCVRQualifiers() || T->isAtomicType()) && !(S.getLangOpts().CPlusPlus && (T->isDependentType() || T->isRecordType()))) {\n if (T->isVoidType() && !S.getLangOpts().CPlusPlus && D.getFunctionDefinitionKind() == FunctionDefinitionKind::Definition) {\n S.Diag(DeclType.Loc, diag::err_func_returning_qualified_void) << T;"}} | |||
}, | }, | ||
[" | ["err_function_attribute_mismatch"]={ | ||
[ | [j]="function declared with A attribute was previously declared without the B attribute", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="function declared with %0 attribute was previously declared without the %0 attribute", | ||
[ | [f]=n, | ||
[ | [g]="function declared with (.*?) attribute was previously declared without the (.*?) attribute", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"318a6eae06dd",1493294460,"[X86] Support of no_caller_saved_registers attribute"}, | ||
[k]={{p,3454,"/// MergeFunctionDecl - We just parsed a function \'New\' from\n/// declarator D which has the same name and scope as a previous\n/// declaration \'Old\'. Figure out how to resolve this situation,\n/// merging decls or emitting diagnostics as appropriate.\n///\n/// In C++, New and Old must be declarations that are not\n/// overloaded. Use IsOverload to determine whether New and Old are\n/// overloaded, and to select the Old declaration that New should be\n/// merged with.\n///\n/// Returns true if there was an error, false otherwise.\nbool Sema::MergeFunctionDecl(FunctionDecl *New, NamedDecl *&OldD, Scope *S, bool MergeTypeWithOld, bool NewDeclIsDefn) {\n // Merge ns_returns_retained attribute.\n if (OldTypeInfo.getProducesResult() != NewTypeInfo.getProducesResult()) {\n if (NewTypeInfo.getProducesResult()) {\n Diag(New->getLocation(), diag::err_function_attribute_mismatch) << \"\'ns_returns_retained\'\";"},{p,3466,"/// MergeFunctionDecl - We just parsed a function \'New\' from\n/// declarator D which has the same name and scope as a previous\n/// declaration \'Old\'. Figure out how to resolve this situation,\n/// merging decls or emitting diagnostics as appropriate.\n///\n/// In C++, New and Old must be declarations that are not\n/// overloaded. Use IsOverload to determine whether New and Old are\n/// overloaded, and to select the Old declaration that New should be\n/// merged with.\n///\n/// Returns true if there was an error, false otherwise.\nbool Sema::MergeFunctionDecl(FunctionDecl *New, NamedDecl *&OldD, Scope *S, bool MergeTypeWithOld, bool NewDeclIsDefn) {\n if (OldTypeInfo.getNoCallerSavedRegs() != NewTypeInfo.getNoCallerSavedRegs()) {\n if (NewTypeInfo.getNoCallerSavedRegs()) {\n Diag(New->getLocation(), diag::err_function_attribute_mismatch) << Attr;"}} | |||
}, | }, | ||
[" | ["err_function_decl_cmse_ns_call"]={ | ||
[ | [j]="functions may not be declared with \'cmse_nonsecure_call\' attribute", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="functions may not be declared with \'cmse_nonsecure_call\' attribute", | ||
[ | [f]=n, | ||
[ | [g]="functions may not be declared with \'cmse_nonsecure_call\' attribute", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={T,1576908663,U}, | ||
[k]={{p,8490,"NamedDecl *Sema::ActOnFunctionDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamListsRef, bool &AddToScope) {\n if (R.getCanonicalType()->castAs<FunctionType>()->getCmseNSCallAttr())\n Diag(D.getIdentifierLoc(), diag::err_function_decl_cmse_ns_call);"}} | |||
}, | }, | ||
[" | ["err_function_declared_typedef"]={ | ||
[ | [j]="function definition declared \'typedef\'", | ||
[d]= | [c]=l, | ||
[f]= | [d]=m, | ||
[ | [e]="function definition declared \'typedef\'", | ||
[b]= | [f]=n, | ||
[ | [g]="function definition declared \'typedef\'", | ||
[h]=a, | |||
[i]=s, | |||
[b]={z,1236199783,A}, | |||
[k]={{C,1980,"/// ParseDeclGroup - Having concluded that this is either a function\n/// definition or a group of object declarations, actually parse the\n/// result.\nParser::DeclGroupPtrTy Parser::ParseDeclGroup(ParsingDeclSpec &DS, DeclaratorContext Context, ParsedAttributes &Attrs, SourceLocation *DeclEnd, ForRangeInit *FRI) {\n if (D.isFunctionDeclarator()) {\n // Look at the next token to make sure that this isn\'t a function\n // declaration. We have to check this because __attribute__ might be the\n // start of a function definition in GCC-extended K&R C.\n if (!isDeclarationAfterDeclarator()) {\n // Function definitions are only allowed at file scope and in C++ classes.\n // The C++ inline method definition case is handled elsewhere, so we only\n // need to handle the file scope definition case.\n if (Context == DeclaratorContext::File) {\n if (isStartOfFunctionDefinition(D)) {\n if (DS.getStorageClassSpec() == DeclSpec::SCS_typedef) {\n Diag(Tok, diag::err_function_declared_typedef);"},{R,2562,"/// ParseCXXClassMemberDeclaration - Parse a C++ class member declaration.\n///\n/// member-declaration:\n/// decl-specifier-seq[opt] member-declarator-list[opt] \';\'\n/// function-definition \';\'[opt]\n/// ::[opt] nested-name-specifier template[opt] unqualified-id \';\'[TODO]\n/// using-declaration [TODO]\n/// [C++0x] static_assert-declaration\n/// template-declaration\n/// [GNU] \'__extension__\' member-declaration\n///\n/// member-declarator-list:\n/// member-declarator\n/// member-declarator-list \',\' member-declarator\n///\n/// member-declarator:\n/// declarator virt-specifier-seq[opt] pure-specifier[opt]\n/// [C++2a] declarator requires-clause\n/// declarator constant-initializer[opt]\n/// [C++11] declarator brace-or-equal-initializer[opt]\n/// identifier[opt] \':\' constant-expression\n///\n/// virt-specifier-seq:\n/// virt-specifier\n/// virt-specifier-seq virt-specifier\n///\n/// virt-specifier:\n/// override\n/// final\n/// [MS] sealed\n///\n/// pure-specifier:\n/// \'= 0\'\n///\n/// constant-initializer:\n/// \'=\' constant-expression\n///\nParser::DeclGroupPtrTy Parser::ParseCXXClassMemberDeclaration(AccessSpecifier AS, ParsedAttributes &AccessAttrs, const ParsedTemplateInfo &TemplateInfo, ParsingDeclRAIIObject *TemplateDiags) {\n // Check for a member function definition.\n if (BitfieldSize.isUnset()) {\n if (DefinitionKind != FunctionDefinitionKind::Declaration) {\n if (DS.getStorageClassSpec() == DeclSpec::SCS_typedef) {\n Diag(DeclaratorInfo.getIdentifierLoc(), diag::err_function_declared_typedef);"},{"clang/lib/Parse/ParseTemplate.cpp",284,"/// Parse a single declaration that declares a template,\n/// template specialization, or explicit instantiation of a template.\n///\n/// \\param DeclEnd will receive the source location of the last token\n/// within this declaration.\n///\n/// \\param AS the access specifier associated with this\n/// declaration. Will be AS_none for namespace-scope declarations.\n///\n/// \\returns the new declaration.\nDecl *Parser::ParseSingleDeclarationAfterTemplate(DeclaratorContext Context, const ParsedTemplateInfo &TemplateInfo, ParsingDeclRAIIObject &DiagsFromTParams, SourceLocation &DeclEnd, ParsedAttributes &AccessAttrs, AccessSpecifier AS) {\n if (DeclaratorInfo.isFunctionDeclarator() && isStartOfFunctionDefinition(DeclaratorInfo)) {\n if (DS.getStorageClassSpec() == DeclSpec::SCS_typedef) {\n Diag(DS.getStorageClassSpecLoc(), diag::err_function_declared_typedef) << FixItHint::CreateRemoval(DS.getStorageClassSpecLoc());"}} | |||
}, | }, | ||
[" | ["err_function_definition_not_allowed"]={ | ||
[ | [j]="function definition is not allowed here", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="function definition is not allowed here", | ||
[ | [f]=n, | ||
[ | [g]="function definition is not allowed here", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={"012efe22bcf4",1366128092,"Fix PR4296: Add parser detection/error recovery for nested functions, from Serve Pavlov!"}, | ||
[k]={{C,2006,"/// ParseDeclGroup - Having concluded that this is either a function\n/// definition or a group of object declarations, actually parse the\n/// result.\nParser::DeclGroupPtrTy Parser::ParseDeclGroup(ParsingDeclSpec &DS, DeclaratorContext Context, ParsedAttributes &Attrs, SourceLocation *DeclEnd, ForRangeInit *FRI) {\n if (D.isFunctionDeclarator()) {\n // Look at the next token to make sure that this isn\'t a function\n // declaration. We have to check this because __attribute__ might be the\n // start of a function definition in GCC-extended K&R C.\n if (!isDeclarationAfterDeclarator()) {\n // Function definitions are only allowed at file scope and in C++ classes.\n // The C++ inline method definition case is handled elsewhere, so we only\n // need to handle the file scope definition case.\n if (Context == DeclaratorContext::File) {\n } else {\n if (Tok.is(tok::l_brace)) {\n Diag(Tok, diag::err_function_definition_not_allowed);"},{"clang/lib/Parse/ParseTemplate.cpp",275,"/// Parse a single declaration that declares a template,\n/// template specialization, or explicit instantiation of a template.\n///\n/// \\param DeclEnd will receive the source location of the last token\n/// within this declaration.\n///\n/// \\param AS the access specifier associated with this\n/// declaration. Will be AS_none for namespace-scope declarations.\n///\n/// \\returns the new declaration.\nDecl *Parser::ParseSingleDeclarationAfterTemplate(DeclaratorContext Context, const ParsedTemplateInfo &TemplateInfo, ParsingDeclRAIIObject &DiagsFromTParams, SourceLocation &DeclEnd, ParsedAttributes &AccessAttrs, AccessSpecifier AS) {\n if (DeclaratorInfo.isFunctionDeclarator() && isStartOfFunctionDefinition(DeclaratorInfo)) {\n // Function definitions are only allowed at file scope and in C++ classes.\n // The C++ inline method definition case is handled elsewhere, so we only\n // need to handle the file scope definition case.\n if (Context != DeclaratorContext::File) {\n Diag(Tok, diag::err_function_definition_not_allowed);"}} | |||
}, | }, | ||
[" | ["err_function_is_not_record"]={ | ||
[ | [j]="unexpected A in function call; perhaps remove the B?", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="unexpected %0 in function call; perhaps remove the %0?", | ||
[ | [f]=n, | ||
[ | [g]="unexpected (.*?) in function call; perhaps remove the (.*?)\\?", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={"638264ea2a3d",1373665382,"Provide a better diagnostic and a fixit for a \'.\' or \'->\' before the left paren"}, | ||
[k]={{Fb,1968,"/// Once the leading part of a postfix-expression is parsed, this\n/// method parses any suffixes that apply.\n///\n/// \\verbatim\n/// postfix-expression: [C99 6.5.2]\n/// primary-expression\n/// postfix-expression \'[\' expression \']\'\n/// postfix-expression \'[\' braced-init-list \']\'\n/// postfix-expression \'[\' expression-list [opt] \']\' [C++23 12.4.5]\n/// postfix-expression \'(\' argument-expression-list[opt] \')\'\n/// postfix-expression \'.\' identifier\n/// postfix-expression \'->\' identifier\n/// postfix-expression \'++\'\n/// postfix-expression \'--\'\n/// \'(\' type-name \')\' \'{\' initializer-list \'}\'\n/// \'(\' type-name \')\' \'{\' initializer-list \',\' \'}\'\n///\n/// argument-expression-list: [C99 6.5.2]\n/// argument-expression ...[opt]\n/// argument-expression-list \',\' assignment-expression ...[opt]\n/// \\endverbatim\nExprResult Parser::ParsePostfixExpressionSuffix(ExprResult LHS) {\n while (true) {\n case tok::period: {\n if (getLangOpts().CPlusPlus && !LHS.isInvalid()) {\n if (BaseType && Tok.is(tok::l_paren) && (BaseType->isFunctionType() || BaseType->isSpecificPlaceholderType(BuiltinType::BoundMember))) {\n Diag(OpLoc, diag::err_function_is_not_record) << OpKind << Base->getSourceRange() << FixItHint::CreateRemoval(OpLoc);"}} | |||
}, | }, | ||
[" | ["err_function_marked_override_not_overriding"]={ | ||
[ | [j]="A marked \'override\' but does not override any member functions", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%0 marked \'override\' but does not override any member functions", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) marked \'override\' but does not override any member functions", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"fd8355373333",1295503034,"Diagnose virtual member functions marked override but not overriding any virtual member functions."}, | ||
[k]={{r,2793,"/// CheckOverrideControl - Check C++11 override control semantics.\nvoid Sema::CheckOverrideControl(NamedDecl *D) {\n if (MD->hasAttr<OverrideAttr>() && !HasOverriddenMethods)\n Diag(MD->getLocation(), diag::err_function_marked_override_not_overriding) << MD->getDeclName();"}} | |||
}, | }, | ||
[" | ["err_function_needs_feature"]={ | ||
[ | [j]="always_inline function A requires target feature \'B\', but would be inlined into function C that is compiled without support for \'D\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="always_inline function %1 requires target feature \'%2\', but would be inlined into function %0 that is compiled without support for \'%2\'", | ||
[ | [f]=n, | ||
[ | [g]="always_inline function (.*?) requires target feature \'(.*?)\', but would be inlined into function (.*?) that is compiled without support for \'(.*?)\'", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"2b2d56f059e7",1447289052,"Provide a frontend based error for always_inline functions that require"}, | ||
[k]={{"clang/lib/CodeGen/CodeGenFunction.cpp",2344,"// Emits an error if we don\'t have a valid set of target features for the\n// called function.\nvoid CodeGenFunction::checkTargetFeatures(SourceLocation Loc, const FunctionDecl *TargetDecl) {\n if (BuiltinID) {\n } else if (!TargetDecl->isMultiVersion() && TargetDecl->hasAttr<TargetAttr>()) {\n if (!llvm::all_of(ReqFeatures, [&](StringRef Feature) {\n CGM.getDiags().Report(Loc, diag::err_function_needs_feature) << FD->getDeclName() << TargetDecl->getDeclName() << MissingFeature;"},{"clang/lib/CodeGen/CodeGenFunction.cpp",2351,"// Emits an error if we don\'t have a valid set of target features for the\n// called function.\nvoid CodeGenFunction::checkTargetFeatures(SourceLocation Loc, const FunctionDecl *TargetDecl) {\n if (BuiltinID) {\n } else if (!TargetDecl->isMultiVersion() && TargetDecl->hasAttr<TargetAttr>()) {\n } else if (!FD->isMultiVersion() && FD->hasAttr<TargetAttr>()) {\n for (const auto &F : CalleeFeatureMap) {\n if (F.getValue() && (!CallerFeatureMap.lookup(F.getKey()) || !CallerFeatureMap.find(F.getKey())->getValue()))\n CGM.getDiags().Report(Loc, diag::err_function_needs_feature) << FD->getDeclName() << TargetDecl->getDeclName() << F.getKey();"}} | |||
}, | }, | ||
[" | ["err_function_parameter_pack_without_parameter_packs"]={ | ||
[ | [j]="type A of function parameter pack does not contain any unexpanded parameter packs", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="type %0 of function parameter pack does not contain any unexpanded parameter packs", | ||
[ | [f]=n, | ||
[ | [g]="type (.*?) of function parameter pack does not contain any unexpanded parameter packs", | ||
[h]=a, | |||
[i]=o, | |||
[b]={"27b4c16fefde",1293144282,"Implement parsing of function parameter packs and non-type template"}, | |||
[k]={{"clang/lib/Sema/SemaTemplateInstantiate.cpp",2127,"ParmVarDecl *Sema::SubstParmVarDecl(ParmVarDecl *OldParm, const MultiLevelTemplateArgumentList &TemplateArgs, int indexAdjustment, std::optional<unsigned> NumExpansions, bool ExpectParameterPack, bool EvaluateConstraint) {\n if (PackExpansionTypeLoc ExpansionTL = OldTL.getAs<PackExpansionTypeLoc>()) {\n if (NewDI->getType()->containsUnexpandedParameterPack()) {\n } else if (ExpectParameterPack) {\n Diag(OldParm->getLocation(), diag::err_function_parameter_pack_without_parameter_packs) << NewDI->getType();"},{F,5205,"static TypeSourceInfo *GetFullTypeForDeclarator(TypeProcessingState &state, QualType declSpecType, TypeSourceInfo *TInfo) {\n // If there was an ellipsis in the declarator, the declaration declares a\n // parameter pack whose type may be a pack expansion type.\n if (D.hasEllipsis()) {\n case DeclaratorContext::RequiresExpr:\n // C++0x [dcl.fct]p13:\n // [...] When it is part of a parameter-declaration-clause, the\n // parameter pack is a function parameter pack (14.5.3). The type T\n // of the declarator-id of the function parameter pack shall contain\n // a template parameter pack; each template parameter pack in T is\n // expanded by the function parameter pack.\n //\n // We represent function parameter packs as function parameters whose\n // type is a pack expansion.\n if (!T->containsUnexpandedParameterPack() && (!LangOpts.CPlusPlus20 || !T->getContainedAutoType())) {\n S.Diag(D.getEllipsisLoc(), diag::err_function_parameter_pack_without_parameter_packs) << T << D.getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_function_scope_depth_exceeded"]={ | ||
[ | [j]="function scope depth exceeded maximum of A", | ||
[ | [c]=I, | ||
[ | [d]=H, | ||
[ | [e]="function scope depth exceeded maximum of %0", | ||
[ | [f]=J, | ||
[ | [g]="function scope depth exceeded maximum of (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={"739b410f1ff5",1570627358,"Add a warning, flags and pragmas to limit the number of pre-processor tokens in a translation unit"}, | ||
[k]={{C,6591,"/// ParseParameterDeclarationClause - Parse a (possibly empty) parameter-list\n/// after the opening parenthesis. This function will not parse a K&R-style\n/// identifier list.\n///\n/// DeclContext is the context of the declarator being parsed. If FirstArgAttrs\n/// is non-null, then the caller parsed those attributes immediately after the\n/// open paren - they will be applied to the DeclSpec of the first parameter.\n///\n/// After returning, ParamInfo will hold the parsed parameters. EllipsisLoc will\n/// be the location of the ellipsis, if any was parsed.\n///\n/// parameter-type-list: [C99 6.7.5]\n/// parameter-list\n/// parameter-list \',\' \'...\'\n/// [C++] parameter-list \'...\'\n///\n/// parameter-list: [C99 6.7.5]\n/// parameter-declaration\n/// parameter-list \',\' parameter-declaration\n///\n/// parameter-declaration: [C99 6.7.5]\n/// declaration-specifiers declarator\n/// [C++] declaration-specifiers declarator \'=\' assignment-expression\n/// [C++11] initializer-clause\n/// [GNU] declaration-specifiers declarator attributes\n/// declaration-specifiers abstract-declarator[opt]\n/// [C++] declaration-specifiers abstract-declarator[opt]\n/// \'=\' assignment-expression\n/// [GNU] declaration-specifiers abstract-declarator[opt] attributes\n/// [C++11] attribute-specifier-seq parameter-declaration\n///\nvoid Parser::ParseParameterDeclarationClause(DeclaratorContext DeclaratorCtx, ParsedAttributes &FirstArgAttrs, SmallVectorImpl<DeclaratorChunk::ParamInfo> &ParamInfo, SourceLocation &EllipsisLoc, bool IsACXXFunctionDeclaration) {\n // Avoid exceeding the maximum function scope depth.\n // See https://bugs.llvm.org/show_bug.cgi?id=19607\n // Note Sema::ActOnParamDeclarator calls ParmVarDecl::setScopeInfo with\n // getFunctionPrototypeDepth() - 1.\n if (getCurScope()->getFunctionPrototypeDepth() - 1 > ParmVarDecl::getMaxFunctionScopeDepth()) {\n Diag(Tok.getLocation(), diag::err_function_scope_depth_exceeded) << ParmVarDecl::getMaxFunctionScopeDepth();"}} | |||
}, | }, | ||
[" | ["err_function_start_invalid_type"]={ | ||
[ | [j]="argument must be a function", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="argument must be a function", | ||
[ | [f]=n, | ||
[ | [g]="argument must be a function", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"f9c3310d32c6",1616787805,"[OPENMP]Fix PR49366: crash on VLAs in task untied regions."}, | ||
[k]={{y,239,"/// Check that the argument to __builtin_function_start is a function.\nstatic bool SemaBuiltinFunctionStart(Sema &S, CallExpr *TheCall) {\n if (!FD) {\n S.Diag(TheCall->getBeginLoc(), diag::err_function_start_invalid_type) << TheCall->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_function_template_partial_spec"]={ | ||
[ | [j]="function template partial specialization is not allowed", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="function template partial specialization is not allowed", | ||
[ | [f]=n, | ||
[ | [g]="function template partial specialization is not allowed", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"a5f6f9c7a1bb",1295895279,"Disallow function template partial specializations, from Hans"}, | ||
[k]={{p,9069,"NamedDecl *Sema::ActOnFunctionDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamListsRef, bool &AddToScope) {\n if (!getLangOpts().CPlusPlus) {\n } else {\n // If the declarator is a template-id, translate the parser\'s template\n // argument list into our AST format.\n if (D.getName().getKind() == UnqualifiedIdKind::IK_TemplateId) {\n if (NewFD->isInvalidDecl()) {\n } else if (FunctionTemplate) {\n Diag(D.getIdentifierLoc(), diag::err_function_template_partial_spec) << SourceRange(TemplateId->LAngleLoc, TemplateId->RAngleLoc);"}} | |||
}, | }, | ||
[" | ["err_function_template_spec_ambiguous"]={ | ||
[ | [j]="function template specialization A ambiguously refers to more than one function template; explicitly specify... template arguments to identify a particular function template", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="function template specialization %0 ambiguously refers to more than one function template; explicitly specify%select{| additional}1 template arguments to identify a particular function template", | ||
[ | [f]=n, | ||
[ | [g]="function template specialization (.*?) ambiguously refers to more than one function template; explicitly specify(?:| additional) template arguments to identify a particular function template", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"3a923c2d3799",1253834087,"WIP implementation of explicit function template specialization. This"}, | ||
[k]={{K,7812,"/// Perform semantic analysis for the given function template\n/// specialization.\n///\n/// This routine performs all of the semantic analysis required for an\n/// explicit function template specialization. On successful completion,\n/// the function declaration \\p FD will become a function template\n/// specialization.\n///\n/// \\param FD the function declaration, which will be updated to become a\n/// function template specialization.\n///\n/// \\param ExplicitTemplateArgs the explicitly-provided template arguments,\n/// if any. Note that this may be valid info even when 0 arguments are\n/// explicitly provided as in, e.g., \\c void sort<>(char*, char*);\n/// as it anyway contains info on the angle brackets locations.\n///\n/// \\param Previous the set of declarations that may be specialized by\n/// this function specialization.\n///\n/// \\param QualifiedFriend whether this is a lookup for a qualified friend\n/// declaration with no explicit template argument list that might be\n/// befriending a function template specialization.\nbool Sema::CheckFunctionTemplateSpecialization(FunctionDecl *FD, TemplateArgumentListInfo *ExplicitTemplateArgs, LookupResult &Previous, bool QualifiedFriend) {\n UnresolvedSetIterator Result = getMostSpecialized(Candidates.begin(), Candidates.end(), FailedCandidates, FD->getLocation(), PDiag(diag::err_function_template_spec_no_match) << FD->getDeclName(), PDiag(diag::err_function_template_spec_ambiguous) << FD->getDeclName() << (ExplicitTemplateArgs != nullptr), PDiag(diag::note_function_template_spec_matched));"}} | |||
}, | }, | ||
[" | ["err_function_template_spec_no_match"]={ | ||
[ | [j]="no function template matches function template specialization A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="no function template matches function template specialization %0", | ||
[ | [f]=n, | ||
[ | [g]="no function template matches function template specialization (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"3a923c2d3799",1253834087,"WIP implementation of explicit function template specialization. This"}, | ||
[k]={{K,7812,"/// Perform semantic analysis for the given function template\n/// specialization.\n///\n/// This routine performs all of the semantic analysis required for an\n/// explicit function template specialization. On successful completion,\n/// the function declaration \\p FD will become a function template\n/// specialization.\n///\n/// \\param FD the function declaration, which will be updated to become a\n/// function template specialization.\n///\n/// \\param ExplicitTemplateArgs the explicitly-provided template arguments,\n/// if any. Note that this may be valid info even when 0 arguments are\n/// explicitly provided as in, e.g., \\c void sort<>(char*, char*);\n/// as it anyway contains info on the angle brackets locations.\n///\n/// \\param Previous the set of declarations that may be specialized by\n/// this function specialization.\n///\n/// \\param QualifiedFriend whether this is a lookup for a qualified friend\n/// declaration with no explicit template argument list that might be\n/// befriending a function template specialization.\nbool Sema::CheckFunctionTemplateSpecialization(FunctionDecl *FD, TemplateArgumentListInfo *ExplicitTemplateArgs, LookupResult &Previous, bool QualifiedFriend) {\n UnresolvedSetIterator Result = getMostSpecialized(Candidates.begin(), Candidates.end(), FailedCandidates, FD->getLocation(), PDiag(diag::err_function_template_spec_no_match) << FD->getDeclName(), PDiag(diag::err_function_template_spec_ambiguous) << FD->getDeclName() << (ExplicitTemplateArgs != nullptr), PDiag(diag::note_function_template_spec_matched));"}} | |||
}, | }, | ||
[" | ["err_gc_weak_property_strong_type"]={ | ||
[ | [j]="weak attribute declared on a __strong type property in GC mode", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="weak attribute declared on a __strong type property in GC mode", | ||
[ | [f]=n, | ||
[ | [g]="weak attribute declared on a __strong type property in GC mode", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"eebdb67420c1",1315412661,"objc-gc: More sema work for properties declared \'weak\'"}, | ||
[k]={{Gb,1022,"/// ActOnPropertyImplDecl - This routine performs semantic checks and\n/// builds the AST node for a property implementation declaration; declared\n/// as \\@synthesize or \\@dynamic.\n///\nDecl *Sema::ActOnPropertyImplDecl(Scope *S, SourceLocation AtLoc, SourceLocation PropertyLoc, bool Synthesize, IdentifierInfo *PropertyId, IdentifierInfo *PropertyIvar, SourceLocation PropertyIvarLoc, ObjCPropertyQueryKind QueryKind) {\n // Check that we have a valid, previously declared ivar for @synthesize\n if (Synthesize) {\n if (kind & ObjCPropertyAttribute::kind_weak) {\n // Add GC __weak to the ivar type if the property is weak.\n if (getLangOpts().getGC() != LangOptions::NonGC) {\n if (PropertyIvarType.isObjCGCStrong()) {\n Diag(PropertyDiagLoc, diag::err_gc_weak_property_strong_type);"}} | |||
}, | }, | ||
[" | ["err_generic_sel_multi_match"]={ | ||
[ | [j]="controlling expression type A compatible with B generic association types", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="controlling expression type %0 compatible with %1 generic association types", | ||
[ | [f]=n, | ||
[ | [g]="controlling expression type (.*?) compatible with (.*?) generic association types", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"91147596414d",1302827748,"C1X: implement generic selections"}, | ||
[k]={{q,1591,"ExprResult Sema::CreateGenericSelectionExpr(SourceLocation KeyLoc, SourceLocation DefaultLoc, SourceLocation RParenLoc, bool PredicateIsExpr, void *ControllingExprOrType, ArrayRef<TypeSourceInfo *> Types, ArrayRef<Expr *> Exprs) {\n // C11 6.5.1.1p2 \"The controlling expression of a generic selection shall have\n // type compatible with at most one of the types named in its generic\n // association list.\"\n if (CompatIndices.size() > 1) {\n Diag(SR.getBegin(), diag::err_generic_sel_multi_match) << SR << P.second << (unsigned)CompatIndices.size();"}} | |||
}, | }, | ||
[" | ["err_generic_sel_no_match"]={ | ||
[ | [j]="controlling expression type A not compatible with any generic association type", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="controlling expression type %0 not compatible with any generic association type", | ||
[ | [f]=n, | ||
[ | [g]="controlling expression type (.*?) not compatible with any generic association type", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"91147596414d",1302827748,"C1X: implement generic selections"}, | ||
[k]={{q,1604,"ExprResult Sema::CreateGenericSelectionExpr(SourceLocation KeyLoc, SourceLocation DefaultLoc, SourceLocation RParenLoc, bool PredicateIsExpr, void *ControllingExprOrType, ArrayRef<TypeSourceInfo *> Types, ArrayRef<Expr *> Exprs) {\n // C11 6.5.1.1p2 \"If a generic selection has no default generic association,\n // its controlling expression shall have type compatible with exactly one of\n // the types named in its generic association list.\"\n if (DefaultIndex == -1U && CompatIndices.size() == 0) {\n Diag(SR.getBegin(), diag::err_generic_sel_no_match) << SR << P.second;"}} | |||
}, | }, | ||
[" | ["err_getter_not_found"]={ | ||
[ | [j]="no getter method for read from property", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="no getter method for read from property", | ||
[ | [f]=n, | ||
[ | [g]="no getter method for read from property", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"0f0b302ffe8e",1293047195,"Complain on missing property getter method only"}, | ||
[k]={{pb,688,"/// @property-specific behavior for doing lvalue-to-rvalue conversion.\nExprResult ObjCPropertyOpBuilder::buildRValueOperation(Expr *op) {\n // Explicit properties always have getters, but implicit ones don\'t.\n // Check that before proceeding.\n if (RefExpr->isImplicitProperty() && !RefExpr->getImplicitPropertyGetter()) {\n S.Diag(RefExpr->getLocation(), diag::err_getter_not_found) << RefExpr->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_global_asm_qualifier_ignored"]={ | ||
[ | [j]="meaningless \'A\' on asm outside function", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="meaningless \'%0\' on asm outside function", | ||
[ | [f]=n, | ||
[ | [g]="meaningless \'(.*?)\' on asm outside function", | ||
[ | [h]=a, | ||
[ | [i]=sb, | ||
[ | [b]={"f08df464ae89",1582039343,"[OPENMP50]Add initial support for OpenMP 5.0 iterator."}, | ||
[k]={{Q,1509,"/// ParseSimpleAsm\n///\n/// [GNU] simple-asm-expr:\n/// \'asm\' \'(\' asm-string-literal \')\'\n///\nExprResult Parser::ParseSimpleAsm(bool ForAsmLabel, SourceLocation *EndLoc) {\n if (isGNUAsmQualifier(Tok)) {\n Diag(Tok, diag::err_global_asm_qualifier_ignored) << GNUAsmQualifiers::getQualifierName(getGNUAsmQualifier(Tok)) << FixItHint::CreateRemoval(RemovalRange);"}} | |||
}, | }, | ||
[" | ["err_global_call_not_config"]={ | ||
[ | [j]="call to global function A not configured", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="call to global function %0 not configured", | ||
[ | [f]=n, | ||
[ | [g]="call to global function (.*?) not configured", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"34a20b081e43",1317599355,"CUDA: diagnose unconfigured calls to global functions"}, | ||
[k]={{q,6459,"/// BuildResolvedCallExpr - Build a call to a resolved expression,\n/// i.e. an expression not of \\p OverloadTy. The expression should\n/// unary-convert to an expression of function-pointer or\n/// block-pointer type.\n///\n/// \\param NDecl the declaration being called, if available\nExprResult Sema::BuildResolvedCallExpr(Expr *Fn, NamedDecl *NDecl, SourceLocation LParenLoc, ArrayRef<Expr *> Args, SourceLocation RParenLoc, Expr *Config, bool IsExecConfig, ADLCallKind UsesADL) {\n if (getLangOpts().CUDA) {\n if (Config) {\n } else {\n // CUDA: Calls to global functions must be configured\n if (FDecl && FDecl->hasAttr<CUDAGlobalAttr>())\n return ExprError(Diag(LParenLoc, diag::err_global_call_not_config) << FDecl << Fn->getSourceRange());"}} | |||
}, | }, | ||
[" | ["err_global_module_introducer_not_at_start"]={ | ||
[ | [j]="\'module;\' introducing a global module fragment can appear only at the start of the translation unit", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'module;\' introducing a global module fragment can appear only at the start of the translation unit", | ||
[ | [f]=n, | ||
[ | [g]="\'module;\' introducing a global module fragment can appear only at the start of the translation unit", | ||
[ | [h]=a, | ||
[ | [i]=D, | ||
[ | [b]={"d652bdd05f1c",1555229219,"[c++20] Parsing support for module-declarations, import-declarations,"}, | ||
[k]={{Q,2178,"/// Parse a declaration beginning with the \'module\' keyword or C++20\n/// context-sensitive keyword (optionally preceded by \'export\').\n///\n/// module-declaration: [C++20]\n/// \'export\'[opt] \'module\' module-name attribute-specifier-seq[opt] \';\'\n///\n/// global-module-fragment: [C++2a]\n/// \'module\' \';\' top-level-declaration-seq[opt]\n/// module-declaration: [C++2a]\n/// \'export\'[opt] \'module\' module-name module-partition[opt]\n/// attribute-specifier-seq[opt] \';\'\n/// private-module-fragment: [C++2a]\n/// \'module\' \':\' \'private\' \';\' top-level-declaration-seq[opt]\nParser::DeclGroupPtrTy Parser::ParseModuleDecl(Sema::ModuleImportState &ImportState) {\n // Parse a global-module-fragment, if present.\n if (getLangOpts().CPlusPlusModules && Tok.is(tok::semi)) {\n if (ImportState != Sema::ModuleImportState::FirstDecl) {\n Diag(StartLoc, diag::err_global_module_introducer_not_at_start) << SourceRange(StartLoc, SemiLoc);"}} | |||
}, | }, | ||
[" | ["err_gnu_inline_asm_disabled"]={ | ||
[ | [j]="GNU-style inline assembly is disabled", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="GNU-style inline assembly is disabled", | ||
[ | [f]=n, | ||
[ | [g]="GNU\\-style inline assembly is disabled", | ||
[ | [h]=a, | ||
[ | [i]=sb, | ||
[ | [b]={"cb0d13fc2337",1421449528,"Adding option -fno-inline-asm to disallow inline asm"}, | ||
[k]={{Q,835,"/// ParseExternalDeclaration:\n///\n/// The `Attrs` that are passed in are C++11 attributes and appertain to the\n/// declaration.\n///\n/// external-declaration: [C99 6.9], declaration: [C++ dcl.dcl]\n/// function-definition\n/// declaration\n/// [GNU] asm-definition\n/// [GNU] __extension__ external-declaration\n/// [OBJC] objc-class-definition\n/// [OBJC] objc-class-declaration\n/// [OBJC] objc-alias-declaration\n/// [OBJC] objc-protocol-definition\n/// [OBJC] objc-method-definition\n/// [OBJC] @end\n/// [C++] linkage-specification\n/// [GNU] asm-definition:\n/// simple-asm-expr \';\'\n/// [C++11] empty-declaration\n/// [C++11] attribute-declaration\n///\n/// [C++11] empty-declaration:\n/// \';\'\n///\n/// [C++0x/GNU] \'extern\' \'template\' declaration\n///\n/// [C++20] module-import-declaration\n///\nParser::DeclGroupPtrTy Parser::ParseExternalDeclaration(ParsedAttributes &Attrs, ParsedAttributes &DeclSpecAttrs, ParsingDeclSpec *DS) {\n case tok::kw_asm: {\n // Check if GNU-style InlineAsm is disabled.\n // Empty asm string is allowed because it will not introduce\n // any assembly code.\n if (!(getLangOpts().GNUAsm || Result.isInvalid())) {\n if (!SL->getString().trim().empty())\n Diag(StartLoc, diag::err_gnu_inline_asm_disabled);"},{Db,675,"/// ParseAsmStatement - Parse a GNU extended asm statement.\n/// asm-statement:\n/// gnu-asm-statement\n/// ms-asm-statement\n///\n/// [GNU] gnu-asm-statement:\n/// \'asm\' asm-qualifier-list[opt] \'(\' asm-argument \')\' \';\'\n///\n/// [GNU] asm-argument:\n/// asm-string-literal\n/// asm-string-literal \':\' asm-operands[opt]\n/// asm-string-literal \':\' asm-operands[opt] \':\' asm-operands[opt]\n/// asm-string-literal \':\' asm-operands[opt] \':\' asm-operands[opt]\n/// \':\' asm-clobbers\n///\n/// [GNU] asm-clobbers:\n/// asm-string-literal\n/// asm-clobbers \',\' asm-string-literal\n///\nStmtResult Parser::ParseAsmStatement(bool &msAsm) {\n // Check if GNU-style InlineAsm is disabled.\n // Error on anything other than empty string.\n if (!(getLangOpts().GNUAsm || AsmString.isInvalid())) {\n if (!SL->getString().trim().empty())\n Diag(Loc, diag::err_gnu_inline_asm_disabled);"}} | |||
}, | }, | ||
[" | ["err_goto_into_protected_scope"]={ | ||
[ | [j]="cannot jump from this goto statement to its label", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot jump from this goto statement to its label", | ||
[ | [f]=n, | ||
[ | [g]="cannot jump from this goto statement to its label", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"960cc525ec72",1240047387,"rewrite the goto scope checking code to be more efficient, simpler,"}, | ||
[k]={{lb,599,"/// VerifyJumps - Verify each element of the Jumps array to see if they are\n/// valid, emitting diagnostics if not.\nvoid JumpScopeChecker::VerifyJumps() {\n while (!Jumps.empty()) {\n // With a goto,\n if (GotoStmt *GS = dyn_cast<GotoStmt>(Jump)) {\n // The label may not have a statement if it\'s coming from inline MS ASM.\n if (GS->getLabel()->getStmt()) {\n CheckJump(GS, GS->getLabel()->getStmt(), GS->getGotoLoc(), diag::err_goto_into_protected_scope, diag::ext_goto_into_protected_scope, diag::warn_cxx98_compat_goto_into_protected_scope);"},{lb,624,"/// VerifyJumps - Verify each element of the Jumps array to see if they are\n/// valid, emitting diagnostics if not.\nvoid JumpScopeChecker::VerifyJumps() {\n while (!Jumps.empty()) {\n // We only get indirect gotos here when they have a constant target.\n if (IndirectGotoStmt *IGS = dyn_cast<IndirectGotoStmt>(Jump)) {\n CheckJump(IGS, Target->getStmt(), IGS->getGotoLoc(), diag::err_goto_into_protected_scope, diag::ext_goto_into_protected_scope, diag::warn_cxx98_compat_goto_into_protected_scope);"},{lb,774,"static bool IsMicrosoftJumpWarning(unsigned JumpDiag, unsigned InDiagNote) { return (JumpDiag == diag::err_goto_into_protected_scope && (InDiagNote == diag::note_protected_by_variable_init || InDiagNote == diag::note_protected_by_variable_nontriv_destructor)); }"},{lb,859,"/// CheckJump - Validate that the specified jump statement is valid: that it is\n/// jumping within or out of its current scope, not into a deeper one.\nvoid JumpScopeChecker::CheckJump(Stmt *From, Stmt *To, SourceLocation DiagLoc, unsigned JumpDiagError, unsigned JumpDiagWarning, unsigned JumpDiagCXX98Compat) {\n // Warn on gotos out of __finally blocks.\n if (isa<GotoStmt>(From) || isa<IndirectGotoStmt>(From)) {\n // If FromScope > ToScope, FromScope is more nested and the jump goes to a\n // less nested scope. Check if it crosses a __finally along the way.\n for (unsigned I = FromScope; I > ToScope; I = Scopes[I].ParentScope) {\n if (Scopes[I].InDiag == diag::note_omp_protected_structured_block) {\n S.Diag(From->getBeginLoc(), diag::err_goto_into_protected_scope);"}} | |||
}, | }, | ||
[" | ["err_goto_ms_asm_label"]={ | ||
[ | [j]="cannot jump from this goto statement to label A inside an inline assembly block", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot jump from this goto statement to label %0 inside an inline assembly block", | ||
[ | [f]=n, | ||
[ | [g]="cannot jump from this goto statement to label (.*?) inside an inline assembly block", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"31097581aad8",1411352514,"ms-inline-asm: Scope inline asm labels to functions"}, | ||
[k]={{lb,909,"void JumpScopeChecker::CheckGotoStmt(GotoStmt *GS) {\n if (GS->getLabel()->isMSAsmLabel()) {\n S.Diag(GS->getGotoLoc(), diag::err_goto_ms_asm_label) << GS->getLabel()->getIdentifier();"}} | |||
}, | }, | ||
[" | ["err_half_const_requires_fp16"]={ | ||
[ | [j]="half precision constant requires cl_khr_fp16", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="half precision constant requires cl_khr_fp16", | ||
[ | [f]=n, | ||
[ | [g]="half precision constant requires cl_khr_fp16", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"5c1a2c5d3e8f",1455708877,"[OpenCL] Added half type literal with suffix h."}, | ||
[k]={{q,3512,"ExprResult Sema::ActOnNumericConstant(const Token &Tok, Scope *UDLScope) {\n if (Literal.isFixedPointLiteral()) {\n } else if (Literal.isFloatingLiteral()) {\n if (Literal.isHalf) {\n if (getOpenCLOptions().isAvailableOption(\"cl_khr_fp16\", getLangOpts()))\n else {\n Diag(Tok.getLocation(), diag::err_half_const_requires_fp16);"}} | |||
}, | }, | ||
[" | ["err_header_import_not_header_unit"]={ | ||
[ | [j]="header file A (aka \'B\') cannot be imported because it is not known to be a header unit", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="header file %0 (aka \'%1\') cannot be imported because it is not known to be a header unit", | ||
[ | [f]=n, | ||
[ | [g]="header file (.*?) \\(aka \'(.*?)\'\\) cannot be imported because it is not known to be a header unit", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={"8af8b8611c5d",1555017503,"[C++20] Implement context-sensitive header-name lexing and pp-import parsing in the preprocessor."}, | ||
[k]={{rb,2172,"/// Handle either a #include-like directive or an import declaration that names\n/// a header file.\n///\n/// \\param HashLoc The location of the \'#\' token for an include, or\n/// SourceLocation() for an import declaration.\n/// \\param IncludeTok The include / include_next / import token.\n/// \\param FilenameTok The header-name token.\n/// \\param EndLoc The location at which any imported macros become visible.\n/// \\param LookupFrom For #include_next, the starting directory for the\n/// directory lookup.\n/// \\param LookupFromFile For #include_next, the starting file for the directory\n/// lookup.\nPreprocessor::ImportAction Preprocessor::HandleHeaderIncludeOrImport(SourceLocation HashLoc, Token &IncludeTok, Token &FilenameTok, SourceLocation EndLoc, ConstSearchDirIterator LookupFrom, const FileEntry *LookupFromFile) {\n // If this is a C++20 pp-import declaration, diagnose if we didn\'t find any\n // module corresponding to the named header.\n if (IsImportDecl && !SuggestedModule) {\n Diag(FilenameTok, diag::err_header_import_not_header_unit) << OriginalFilename << File->getName();"}} | |||
}, | }, | ||
[" | ["err_header_import_semi_in_macro"]={ | ||
[ | [j]="semicolon terminating header import declaration cannot be produced by a macro", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="semicolon terminating header import declaration cannot be produced by a macro", | ||
[ | [f]=n, | ||
[ | [g]="semicolon terminating header import declaration cannot be produced by a macro", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={"8af8b8611c5d",1555017503,"[C++20] Implement context-sensitive header-name lexing and pp-import parsing in the preprocessor."}, | ||
[k]={{"clang/lib/Lex/Preprocessor.cpp",1118,"/// Lex a token following the \'import\' contextual keyword.\n///\n/// pp-import: [C++20]\n/// import header-name pp-import-suffix[opt] ;\n/// import header-name-tokens pp-import-suffix[opt] ;\n/// [ObjC] @ import module-name ;\n/// [Clang] import module-name ;\n///\n/// header-name-tokens:\n/// string-literal\n/// < [any sequence of preprocessing-tokens other than >] >\n///\n/// module-name:\n/// module-name-qualifier[opt] identifier\n///\n/// module-name-qualifier\n/// module-name-qualifier[opt] identifier .\n///\n/// We respond to a pp-import by importing macros from the named module.\nbool Preprocessor::LexAfterModuleImport(Token &Result) {\n if (ImportingHeader) {\n if (SemiLoc.isMacroID())\n Diag(SemiLoc, diag::err_header_import_semi_in_macro);"}} | |||
}, | }, | ||
[" | ["err_hex_constant_requires"]={ | ||
[ | [j]="hexadecimal floating ... requires ...", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="hexadecimal floating %select{constant|literal}0 requires %select{an exponent|a significand}1", | ||
[ | [f]=n, | ||
[ | [g]="hexadecimal floating (?:constant|literal) requires (?:an exponent|a significand)", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={"560a3579b29a",1457130726,"Update diagnostics now that hexadecimal literals look likely to be part of C++17."}, | ||
[k]={{W,1154,"/// ParseNumberStartingWithZero - This method is called when the first character\n/// of the number is found to be a zero. This means it is either an octal\n/// number (like \'04\') or a hex number (\'0x123a\') a binary number (\'0b1010\') or\n/// a floating point number (01239.123e4). Eat the prefix, determining the\n/// radix etc.\nvoid NumericLiteralParser::ParseNumberStartingWithZero(SourceLocation TokLoc) {\n // Handle a hex number like 0x1234.\n if ((c1 == \'x\' || c1 == \'X\') && (isHexDigit(s[1]) || s[1] == \'.\')) {\n if (!HasSignificandDigits) {\n Diags.Report(Lexer::AdvanceToTokenCharacter(TokLoc, s - ThisTokBegin, SM, LangOpts), diag::err_hex_constant_requires) << LangOpts.CPlusPlus << 1;"},{W,1184,"/// ParseNumberStartingWithZero - This method is called when the first character\n/// of the number is found to be a zero. This means it is either an octal\n/// number (like \'04\') or a hex number (\'0x123a\') a binary number (\'0b1010\') or\n/// a floating point number (01239.123e4). Eat the prefix, determining the\n/// radix etc.\nvoid NumericLiteralParser::ParseNumberStartingWithZero(SourceLocation TokLoc) {\n // Handle a hex number like 0x1234.\n if ((c1 == \'x\' || c1 == \'X\') && (isHexDigit(s[1]) || s[1] == \'.\')) {\n // A binary exponent can appear with or with a \'.\'. If dotted, the\n // binary exponent is required.\n if (*s == \'p\' || *s == \'P\') {\n } else if (saw_period) {\n Diags.Report(Lexer::AdvanceToTokenCharacter(TokLoc, s - ThisTokBegin, SM, LangOpts), diag::err_hex_constant_requires) << LangOpts.CPlusPlus << 0;"}} | |||
}, | }, | ||
[" | ["err_hex_escape_no_digits"]={ | ||
[ | [j]="\\A used with no following hex digits", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\\%0 used with no following hex digits", | ||
[ | [f]=n, | ||
[ | [g]="\\\\(.*?) used with no following hex digits", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={z,1236199783,A}, | ||
[k]={{"clang/lib/Lex/Lexer.cpp",3082,"std::optional<uint32_t> Lexer::tryReadNumericUCN(const char *&StartPtr, const char *SlashLoc, Token *Result) {\n if (Delimited && Kind == \'U\') {\n if (Diagnose)\n Diag(SlashLoc, diag::err_hex_escape_no_digits) << StringRef(KindLoc, 1);"},{W,181,"/// ProcessCharEscape - Parse a standard C escape sequence, which can occur in\n/// either a character or a string literal.\nstatic unsigned ProcessCharEscape(const char *ThisTokBegin, const char *&ThisTokBuf, const char *ThisTokEnd, bool &HadError, FullSourceLoc Loc, unsigned CharWidth, DiagnosticsEngine *Diags, const LangOptions &Features, StringLiteralEvalMethod EvalMethod) {\n case \'x\': { // Hex escape.\n if (ThisTokBuf != ThisTokEnd && *ThisTokBuf == \'{\') {\n } else if (ThisTokBuf == ThisTokEnd || !isHexDigit(*ThisTokBuf)) {\n if (Diags)\n Diag(Diags, Features, Loc, ThisTokBegin, EscapeBegin, ThisTokBuf, diag::err_hex_escape_no_digits) << \"x\";"},{W,414,"static bool ProcessNumericUCNEscape(const char *ThisTokBegin, const char *&ThisTokBuf, const char *ThisTokEnd, uint32_t &UcnVal, unsigned short &UcnLen, bool &Delimited, FullSourceLoc Loc, DiagnosticsEngine *Diags, const LangOptions &Features, bool in_char_string_literal = false) {\n if (UcnBegin[1] == \'u\' && in_char_string_literal && ThisTokBuf != ThisTokEnd && *ThisTokBuf == \'{\') {\n } else if (ThisTokBuf == ThisTokEnd || !isHexDigit(*ThisTokBuf)) {\n if (Diags)\n Diag(Diags, Features, Loc, ThisTokBegin, UcnBegin, ThisTokBuf, diag::err_hex_escape_no_digits) << StringRef(&ThisTokBuf[-1], 1);"}} | |||
}, | }, | ||
[" | ["err_hidden_visibility_dllexport"]={ | ||
[ | [j]="hidden visibility cannot be applied to \'dllexport\' declaration", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="hidden visibility cannot be applied to \'dllexport\' declaration", | ||
[ | [f]=n, | ||
[ | [g]="hidden visibility cannot be applied to \'dllexport\' declaration", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"6f9c4851ab7c",1663023396,"[MinGW] Reject explicit hidden visibility applied to dllexport and hidden/protected applied to dllim..."}, | ||
[k]={{"clang/lib/CodeGen/CodeGenModule.cpp",1195,"void CodeGenModule::setGlobalVisibility(llvm::GlobalValue *GV, const NamedDecl *D) const {\n if (GV->hasDLLExportStorageClass() || GV->hasDLLImportStorageClass()) {\n if (GV->hasDLLExportStorageClass()) {\n if (LV.getVisibility() == HiddenVisibility)\n getDiags().Report(D->getLocation(), diag::err_hidden_visibility_dllexport);"}} | |||
}, | }, | ||
[" | ["err_hip_invalid_args_builtin_mangled_name"]={ | ||
[ | [j]="invalid argument: symbol must be a device-side function or global variable", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="invalid argument: symbol must be a device-side function or global variable", | ||
[ | [f]=n, | ||
[ | [g]="invalid argument\\: symbol must be a device\\-side function or global variable", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"61d065e21ff3",1590001902,"Let clang atomic builtins fetch add/sub support floating point types"}, | ||
[k]={{y,2484,"#include \"clang/Basic/Builtins.def\"\n case Builtin::BI__builtin_get_device_side_mangled_name: {\n if (!Check(TheCall)) {\n Diag(TheCall->getBeginLoc(), diag::err_hip_invalid_args_builtin_mangled_name);"}} | |||
}, | }, | ||
[" | ["err_hlsl_attr_invalid_ast_node"]={ | ||
[ | [j]="attribute A only applies to B", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="attribute %0 only applies to %1", | ||
[ | [f]=n, | ||
[ | [g]="attribute (.*?) only applies to (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={M,1625925174,N}, | ||
[k]={{v,6320,"static void handleHLSLSV_DispatchThreadIDAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n // FIXME: support semantic on field.\n // See https://github.com/llvm/llvm-project/issues/57889.\n if (isa<FieldDecl>(D)) {\n S.Diag(AL.getLoc(), diag::err_hlsl_attr_invalid_ast_node) << AL << \"parameter\";"}} | |||
}, | }, | ||
[" | ["err_hlsl_attr_invalid_type"]={ | ||
[ | [j]="attribute A only applies to a field or parameter of type \'B\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="attribute %0 only applies to a field or parameter of type \'%1\'", | ||
[ | [f]=n, | ||
[ | [g]="attribute (.*?) only applies to a field or parameter of type \'(.*?)\'", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={M,1625925174,N}, | ||
[k]={{v,6326,"static void handleHLSLSV_DispatchThreadIDAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n if (!isLegalTypeForHLSLSV_DispatchThreadID(VD->getType())) {\n S.Diag(AL.getLoc(), diag::err_hlsl_attr_invalid_type) << AL << \"uint/uint2/uint3\";"}} | |||
}, | }, | ||
[" | ["err_hlsl_attr_unsupported_in_stage"]={ | ||
[ | [j]="attribute A is unsupported in ... shaders, requires B", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="attribute %0 is unsupported in %select{Pixel|Vertex|Geometry|Hull|Domain|Compute|Library|RayGeneration|Intersection|AnyHit|ClosestHit|Miss|Callable|Mesh|Amplification|Invalid}1 shaders, requires %2", | ||
[ | [f]=n, | ||
[ | [g]="attribute (.*?) is unsupported in (?:Pixel|Vertex|Geometry|Hull|Domain|Compute|Library|RayGeneration|Intersection|AnyHit|ClosestHit|Miss|Callable|Mesh|Amplification|Invalid) shaders, requires (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={Cb,1620118562,Eb}, | ||
[k]={{v,6223,"static void handleHLSLNumThreadsAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n if (!llvm::is_contained({Triple::Compute, Triple::Mesh, Triple::Amplification, Triple::Library}, Env)) {\n S.Diag(AL.getLoc(), diag::err_hlsl_attr_unsupported_in_stage) << AL << Pipeline << \"Compute, Amplification, Mesh or Library\";"},{v,6288,"static void handleHLSLSVGroupIndexAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n if (Env != Triple::Compute && Env != Triple::Library) {\n S.Diag(AL.getLoc(), diag::err_hlsl_attr_unsupported_in_stage) << AL << (uint32_t)Pipeline << \"Compute\";"},{v,6310,"static void handleHLSLSV_DispatchThreadIDAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n // FIXME: it is OK for a compute shader entry and pixel shader entry live in\n // same HLSL file.Issue https://github.com/llvm/llvm-project/issues/57880.\n if (Target.getEnvironment() != Triple::Compute && Target.getEnvironment() != Triple::Library) {\n S.Diag(AL.getLoc(), diag::err_hlsl_attr_unsupported_in_stage) << AL << Pipeline << \"Compute\";"}} | |||
}, | }, | ||
[" | ["err_hlsl_attribute_param_mismatch"]={ | ||
[ | [j]="A attribute parameters do not match the previous declaration", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%0 attribute parameters do not match the previous declaration", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) attribute parameters do not match the previous declaration", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={Cb,1620118562,Eb}, | ||
[k]={{v,6273,"HLSLNumThreadsAttr *Sema::mergeHLSLNumThreadsAttr(Decl *D, const AttributeCommonInfo &AL, int X, int Y, int Z) {\n if (HLSLNumThreadsAttr *NT = D->getAttr<HLSLNumThreadsAttr>()) {\n if (NT->getX() != X || NT->getY() != Y || NT->getZ() != Z) {\n Diag(NT->getLocation(), diag::err_hlsl_attribute_param_mismatch) << AL;"},{v,6359,"HLSLShaderAttr *Sema::mergeHLSLShaderAttr(Decl *D, const AttributeCommonInfo &AL, HLSLShaderAttr::ShaderType ShaderType) {\n if (HLSLShaderAttr *NT = D->getAttr<HLSLShaderAttr>()) {\n if (NT->getType() != ShaderType) {\n Diag(NT->getLocation(), diag::err_hlsl_attribute_param_mismatch) << AL;"}} | |||
}, | }, | ||
[" | ["err_hlsl_entry_shader_attr_mismatch"]={ | ||
[ | [j]="A attribute on entry function does not match the pipeline stage", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%0 attribute on entry function does not match the pipeline stage", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) attribute on entry function does not match the pipeline stage", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={M,1625925174,N}, | ||
[k]={{p,8997,"NamedDecl *Sema::ActOnFunctionDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamListsRef, bool &AddToScope) {\n if (getLangOpts().HLSL) {\n // Skip operator overload which not identifier.\n // Also make sure NewFD is in translation-unit scope.\n if (!NewFD->isInvalidDecl() && Name.isIdentifier() && NewFD->getName() == TargetInfo.getTargetOpts().HLSLEntry && S->getDepth() == 0) {\n if (!NewFD->isInvalidDecl()) {\n // To share code with HLSLShaderAttr, add HLSLShaderAttr to entry\n // function.\n if (HLSLShaderAttr *NT = NewFD->getAttr<HLSLShaderAttr>()) {\n if (NT->getType() != ShaderType)\n Diag(NT->getLocation(), diag::err_hlsl_entry_shader_attr_mismatch) << NT;"}} | |||
}, | }, | ||
[" | ["err_hlsl_expected_space"]={ | ||
[ | [j]="invalid space specifier \'A\' used; expected \'space\' followed by an integer, like space1", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="invalid space specifier \'%0\' used; expected \'space\' followed by an integer, like space1", | ||
[ | [f]=n, | ||
[ | [g]="invalid space specifier \'(.*?)\' used; expected \'space\' followed by an integer, like space1", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={M,1625925174,N}, | ||
[k]={{v,6417,"static void handleHLSLResourceBindingAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n if (!Space.startswith(\"space\")) {\n S.Diag(SpaceArgLoc, diag::err_hlsl_expected_space) << Space;"},{v,6423,"static void handleHLSLResourceBindingAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n if (SpaceNum.getAsInteger(10, Num)) {\n S.Diag(SpaceArgLoc, diag::err_hlsl_expected_space) << Space;"}} | |||
}, | }, | ||
[" | ["err_hlsl_init_priority_unsupported"]={ | ||
[ | [j]="initializer priorities are not supported in HLSL", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="initializer priorities are not supported in HLSL", | ||
[ | [f]=n, | ||
[ | [g]="initializer priorities are not supported in HLSL", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={M,1625925174,N}, | ||
[k]={{v,2105,"static void handleConstructorAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n if (S.getLangOpts().HLSL && AL.getNumArgs()) {\n S.Diag(AL.getLoc(), diag::err_hlsl_init_priority_unsupported);"},{v,3365,"/// Handle __attribute__((init_priority(priority))) attributes based on\n/// http://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Attributes.html\nstatic void handleInitPriorityAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n if (S.getLangOpts().HLSL) {\n S.Diag(AL.getLoc(), diag::err_hlsl_init_priority_unsupported);"}} | |||
}, | }, | ||
[" | ["err_hlsl_missing_numthreads"]={ | ||
[ | [j]="missing numthreads attribute for A shader entry", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="missing numthreads attribute for %0 shader entry", | ||
[ | [f]=n, | ||
[ | [g]="missing numthreads attribute for (.*?) shader entry", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={M,1625925174,N}, | ||
[k]={{p,10729,"void Sema::CheckHLSLEntryPoint(FunctionDecl *FD) {\n case llvm::Triple::EnvironmentType::Compute:\n if (!FD->hasAttr<HLSLNumThreadsAttr>()) {\n Diag(FD->getLocation(), diag::err_hlsl_missing_numthreads) << Triple.getEnvironmentName();"}} | |||
}, | }, | ||
[" | ["err_hlsl_missing_semantic_annotation"]={ | ||
[ | [j]="semantic annotations must be present for all parameters of an entry function or patch constant function", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="semantic annotations must be present for all parameters of an entry function or patch constant function", | ||
[ | [f]=n, | ||
[ | [g]="semantic annotations must be present for all parameters of an entry function or patch constant function", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={M,1625925174,N}, | ||
[k]={{p,10739,"void Sema::CheckHLSLEntryPoint(FunctionDecl *FD) {\n for (const auto *Param : FD->parameters()) {\n if (!Param->hasAttr<HLSLAnnotationAttr>()) {\n Diag(FD->getLocation(), diag::err_hlsl_missing_semantic_annotation);"}} | |||
}, | }, | ||
[" | ["err_hlsl_numthreads_argument_oor"]={ | ||
[ | [j]="argument \'...\' to numthreads attribute cannot exceed A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="argument \'%select{X|Y|Z}0\' to numthreads attribute cannot exceed %1", | ||
[ | [f]=n, | ||
[ | [g]="argument \'(?:X|Y|Z)\' to numthreads attribute cannot exceed (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={Cb,1620118562,Eb}, | ||
[k]={{v,6242,"static void handleHLSLNumThreadsAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n if (X > 1024) {\n S.Diag(AL.getArgAsExpr(0)->getExprLoc(), diag::err_hlsl_numthreads_argument_oor) << 0 << 1024;"},{v,6249,"static void handleHLSLNumThreadsAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n if (Y > 1024) {\n S.Diag(AL.getArgAsExpr(1)->getExprLoc(), diag::err_hlsl_numthreads_argument_oor) << 1 << 1024;"},{v,6256,"static void handleHLSLNumThreadsAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n if (Z > ZMax) {\n S.Diag(AL.getArgAsExpr(2)->getExprLoc(), diag::err_hlsl_numthreads_argument_oor) << 2 << ZMax;"}} | |||
}, | }, | ||
[" | ["err_hlsl_numthreads_invalid"]={ | ||
[ | [j]="total number of threads cannot exceed A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="total number of threads cannot exceed %0", | ||
[ | [f]=n, | ||
[ | [g]="total number of threads cannot exceed (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={Cb,1620118562,Eb}, | ||
[k]={{v,6261,"static void handleHLSLNumThreadsAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n if (X * Y * Z > ThreadMax) {\n S.Diag(AL.getLoc(), diag::err_hlsl_numthreads_invalid) << ThreadMax;"}} | |||
}, | }, | ||
[" | ["err_hlsl_operator_unsupported"]={ | ||
[ | [j]="the \'...\' operator is unsupported in HLSL", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="the \'%select{&|*|->}0\' operator is unsupported in HLSL", | ||
[ | [f]=n, | ||
[ | [g]="the \'(?:&|\\*|\\-\\>)\' operator is unsupported in HLSL", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"cb08f4aa4467",1620530452,"Support warn_unused_result on typedefs"}, | ||
[k]={{q,14020,"ExprResult Sema::CreateBuiltinUnaryOp(SourceLocation OpLoc, UnaryOperatorKind Opc, Expr *InputExpr, bool IsAfterAmp) {\n if (getLangOpts().HLSL && OpLoc.isValid()) {\n if (Opc == UO_AddrOf)\n return ExprError(Diag(OpLoc, diag::err_hlsl_operator_unsupported) << 0);"},{q,14022,"ExprResult Sema::CreateBuiltinUnaryOp(SourceLocation OpLoc, UnaryOperatorKind Opc, Expr *InputExpr, bool IsAfterAmp) {\n if (getLangOpts().HLSL && OpLoc.isValid()) {\n if (Opc == UO_Deref)\n return ExprError(Diag(OpLoc, diag::err_hlsl_operator_unsupported) << 1);"},{fb,1420,"/// The main callback when the parser finds something like\n/// expression . [nested-name-specifier] identifier\n/// expression -> [nested-name-specifier] identifier\n/// where \'identifier\' encompasses a fairly broad spectrum of\n/// possibilities, including destructor and operator references.\n///\n/// \\param OpKind either tok::arrow or tok::period\n/// \\param ObjCImpDecl the current Objective-C \\@implementation\n/// decl; this is an ugly hack around the fact that Objective-C\n/// \\@implementations aren\'t properly put in the context chain\nExprResult Sema::ActOnMemberAccessExpr(Scope *S, Expr *Base, SourceLocation OpLoc, tok::TokenKind OpKind, CXXScopeSpec &SS, SourceLocation TemplateKWLoc, UnqualifiedId &Id, Decl *ObjCImpDecl) {\n if (getLangOpts().HLSL && IsArrow)\n return ExprError(Diag(OpLoc, diag::err_hlsl_operator_unsupported) << 2);"}} | |||
}, | }, | ||
[" | ["err_hlsl_pointers_unsupported"]={ | ||
[ | [j]="... are unsupported in HLSL", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%select{pointers|references}0 are unsupported in HLSL", | ||
[ | [f]=n, | ||
[ | [g]="(?:pointers|references) are unsupported in HLSL", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"cb08f4aa4467",1620530452,"Support warn_unused_result on typedefs"}, | ||
[k]={{F,1926,"/// Build a pointer type.\n///\n/// \\param T The type to which we\'ll be building a pointer.\n///\n/// \\param Loc The location of the entity whose type involves this\n/// pointer type or, if there is no such entity, the location of the\n/// type that will have pointer type.\n///\n/// \\param Entity The name of the entity that involves the pointer\n/// type, if known.\n///\n/// \\returns A suitable pointer type, if there are no\n/// errors. Otherwise, returns a NULL type.\nQualType Sema::BuildPointerType(QualType T, SourceLocation Loc, DeclarationName Entity) {\n if (getLangOpts().HLSL && Loc.isValid()) {\n Diag(Loc, diag::err_hlsl_pointers_unsupported) << 0;"},{F,2008,"/// Build a reference type.\n///\n/// \\param T The type to which we\'ll be building a reference.\n///\n/// \\param Loc The location of the entity whose type involves this\n/// reference type or, if there is no such entity, the location of the\n/// type that will have reference type.\n///\n/// \\param Entity The name of the entity that involves the reference\n/// type, if known.\n///\n/// \\returns A suitable reference type, if there are no\n/// errors. Otherwise, returns a NULL type.\nQualType Sema::BuildReferenceType(QualType T, bool SpelledAsLValue, SourceLocation Loc, DeclarationName Entity) {\n if (getLangOpts().HLSL && Loc.isValid()) {\n Diag(Loc, diag::err_hlsl_pointers_unsupported) << 1;"},{F,2715,"/// Build a member pointer type \\c T Class::*.\n///\n/// \\param T the type to which the member pointer refers.\n/// \\param Class the class type into which the member pointer points.\n/// \\param Loc the location where this type begins\n/// \\param Entity the name of the entity that will have this member pointer type\n///\n/// \\returns a member pointer type, if successful, or a NULL type if there was\n/// an error.\nQualType Sema::BuildMemberPointerType(QualType T, QualType Class, SourceLocation Loc, DeclarationName Entity) {\n if (getLangOpts().HLSL && Loc.isValid()) {\n Diag(Loc, diag::err_hlsl_pointers_unsupported) << 0;"}} | |||
}, | }, | ||
[" | ["err_hlsl_separate_attr_arg_and_number"]={ | ||
[ | [j]="wrong argument format for hlsl attribute, use A instead", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="wrong argument format for hlsl attribute, use %0 instead", | ||
[ | [f]=n, | ||
[ | [g]="wrong argument format for hlsl attribute, use (.*?) instead", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"e3fd0b20731f",1658170225,"[HLSL] Add resource binding attribute for HLSL."}, | ||
[k]={{"clang/lib/Parse/ParseHLSL.cpp",101,"static void fixSeparateAttrArgAndNumber(StringRef ArgStr, SourceLocation ArgLoc, Token Tok, ArgsVector &ArgExprs, Parser &P, ASTContext &Ctx, Preprocessor &PP) {\n P.Diag(ArgLoc, diag::err_hlsl_separate_attr_arg_and_number) << FixedArg << FixItHint::CreateReplacement(SourceRange(ArgLoc, EndNumLoc), FixedArg);"}} | |||
}, | }, | ||
[" | ["err_hlsl_unsupported_register_number"]={ | ||
[ | [j]="register number should be an integer", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="register number should be an integer", | ||
[ | [f]=n, | ||
[ | [g]="register number should be an integer", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={M,1625925174,N}, | ||
[k]={{v,6411,"static void handleHLSLResourceBindingAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n // Validate.\n if (!Slot.empty()) {\n if (SlotNum.getAsInteger(10, Num)) {\n S.Diag(ArgLoc, diag::err_hlsl_unsupported_register_number);"}} | |||
}, | }, | ||
[" | ["err_hlsl_unsupported_register_type"]={ | ||
[ | [j]="invalid resource class specifier \'A\' used; expected \'b\', \'s\', \'t\', or \'u\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="invalid resource class specifier \'%0\' used; expected \'b\', \'s\', \'t\', or \'u\'", | ||
[ | [f]=n, | ||
[ | [g]="invalid resource class specifier \'(.*?)\' used; expected \'b\', \'s\', \'t\', or \'u\'", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={M,1625925174,N}, | ||
[k]={{v,6404,"static void handleHLSLResourceBindingAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n // Validate.\n if (!Slot.empty()) {\n default:\n S.Diag(ArgLoc, diag::err_hlsl_unsupported_register_type) << Slot.substr(0, 1);"}} | |||
}, | }, | ||
[" | ["err_iboutletcollection_builtintype"]={ | ||
[ | [j]="type argument of iboutletcollection attribute cannot be a builtin type", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="type argument of iboutletcollection attribute cannot be a builtin type", | ||
[ | [f]=n, | ||
[ | [g]="type argument of iboutletcollection attribute cannot be a builtin type", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"9d7d3d84ac95",1282087156,"Diagnose if type of iboutletcollection attribute is a builtin type."}, | ||
[k]={{v,1375,"static void handleIBOutletCollection(Sema &S, Decl *D, const ParsedAttr &AL) {\n // Diagnose use of non-object type in iboutletcollection attribute.\n // FIXME. Gnu attribute extension ignores use of builtin types in\n // attributes. So, __attribute__((iboutletcollection(char))) will be\n // treated as __attribute__((iboutletcollection())).\n if (!QT->isObjCIdType() && !QT->isObjCObjectType()) {\n S.Diag(AL.getLoc(), QT->isBuiltinType() ? diag::err_iboutletcollection_builtintype : diag::err_iboutletcollection_type) << QT;"}} | |||
}, | }, | ||
[" | ["err_iboutletcollection_type"]={ | ||
[ | [j]="invalid type A as argument of iboutletcollection attribute", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="invalid type %0 as argument of iboutletcollection attribute", | ||
[ | [f]=n, | ||
[ | [g]="invalid type (.*?) as argument of iboutletcollection attribute", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"b5d59b66c27e",1282076592,"Patch to add type parameter support for attribute iboutletcollection."}, | ||
[k]={{v,1360,"static void handleIBOutletCollection(Sema &S, Decl *D, const ParsedAttr &AL) {\n if (AL.hasParsedType())\n else {\n if (!PT) {\n S.Diag(AL.getLoc(), diag::err_iboutletcollection_type) << \"NSObject\";"},{v,1375,"static void handleIBOutletCollection(Sema &S, Decl *D, const ParsedAttr &AL) {\n // Diagnose use of non-object type in iboutletcollection attribute.\n // FIXME. Gnu attribute extension ignores use of builtin types in\n // attributes. So, __attribute__((iboutletcollection(char))) will be\n // treated as __attribute__((iboutletcollection())).\n if (!QT->isObjCIdType() && !QT->isObjCObjectType()) {\n S.Diag(AL.getLoc(), QT->isBuiltinType() ? diag::err_iboutletcollection_builtintype : diag::err_iboutletcollection_type) << QT;"}} | |||
}, | }, | ||
[" | ["err_ice_ambiguous_conversion"]={ | ||
[ | [j]="ambiguous conversion from type A to an integral or unscoped enumeration type", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="ambiguous conversion from type %0 to an integral or unscoped enumeration type", | ||
[ | [f]=n, | ||
[ | [g]="ambiguous conversion from type (.*?) to an integral or unscoped enumeration type", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"f4c51d9d7613",1328349193,"In C++11 mode, when an integral constant expression is desired and we have a"}, | ||
[k]={{q,15500,"ExprResult Sema::VerifyIntegerConstantExpression(Expr *E, llvm::APSInt *Result, VerifyICEDiagnoser &Diagnoser, AllowFoldKind CanFold) {\n if (getLangOpts().CPlusPlus11) {\n class CXX11ConvertDiagnoser : public ICEConvertDiagnoser {\n SemaDiagnosticBuilder diagnoseAmbiguous(Sema &S, SourceLocation Loc, QualType T) override { return S.Diag(Loc, diag::err_ice_ambiguous_conversion) << T; }"}} | |||
}, | }, | ||
[" | ["err_ice_explicit_conversion"]={ | ||
[ | [j]="integral constant expression requires explicit conversion from A to B", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="integral constant expression requires explicit conversion from %0 to %1", | ||
[ | [f]=n, | ||
[ | [g]="integral constant expression requires explicit conversion from (.*?) to (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"f4c51d9d7613",1328349193,"In C++11 mode, when an integral constant expression is desired and we have a"}, | ||
[k]={{q,15496,"ExprResult Sema::VerifyIntegerConstantExpression(Expr *E, llvm::APSInt *Result, VerifyICEDiagnoser &Diagnoser, AllowFoldKind CanFold) {\n if (getLangOpts().CPlusPlus11) {\n class CXX11ConvertDiagnoser : public ICEConvertDiagnoser {\n SemaDiagnosticBuilder diagnoseExplicitConv(Sema &S, SourceLocation Loc, QualType T, QualType ConvTy) override { return S.Diag(Loc, diag::err_ice_explicit_conversion) << T << ConvTy; }"}} | |||
}, | }, | ||
[" | ["err_ice_incomplete_type"]={ | ||
[ | [j]="integral constant expression has incomplete class type A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="integral constant expression has incomplete class type %0", | ||
[ | [f]=n, | ||
[ | [g]="integral constant expression has incomplete class type (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"f4c51d9d7613",1328349193,"In C++11 mode, when an integral constant expression is desired and we have a"}, | ||
[k]={{q,15494,"ExprResult Sema::VerifyIntegerConstantExpression(Expr *E, llvm::APSInt *Result, VerifyICEDiagnoser &Diagnoser, AllowFoldKind CanFold) {\n if (getLangOpts().CPlusPlus11) {\n class CXX11ConvertDiagnoser : public ICEConvertDiagnoser {\n SemaDiagnosticBuilder diagnoseIncomplete(Sema &S, SourceLocation Loc, QualType T) override { return S.Diag(Loc, diag::err_ice_incomplete_type) << T; }"}} | |||
}, | }, | ||
[" | ["err_ice_not_integral"]={ | ||
[ | [j]="... constant expression must have ... type, not A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%select{integer|integral}1 constant expression must have %select{integer|integral or unscoped enumeration}1 type, not %0", | ||
[ | [f]=n, | ||
[ | [g]="(?:integer|integral) constant expression must have (?:integer|integral or unscoped enumeration) type, not (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"f4c51d9d7613",1328349193,"In C++11 mode, when an integral constant expression is desired and we have a"}, | ||
[k]={{q,15452,"ExprResult Sema::VerifyIntegerConstantExpression(Expr *E, llvm::APSInt *Result, AllowFoldKind CanFold) {\n class SimpleICEDiagnoser : public VerifyICEDiagnoser {\n SemaDiagnosticBuilder diagnoseNotICEType(Sema &S, SourceLocation Loc, QualType T) override { return S.Diag(Loc, diag::err_ice_not_integral) << T << S.LangOpts.CPlusPlus; }"}} | |||
}, | }, | ||
[" | ["err_ice_too_large"]={ | ||
[ | [j]="integer constant expression evaluates to value A that cannot be represented in a B-bit ... integer type", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="integer constant expression evaluates to value %0 that cannot be represented in a %1-bit %select{signed|unsigned}2 integer type", | ||
[ | [f]=n, | ||
[ | [g]="integer constant expression evaluates to value (.*?) that cannot be represented in a (.*?)\\-bit (?:signed|unsigned) integer type", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"31f42318d833",1406213483,"Improving the \"integer constant too large\" diagnostics based on post-commit feedback from Richard Sm..."}, | ||
[k]={{v,210,"/// If Expr is a valid integer constant, get the value of the integer\n/// expression and return success or failure. May output an error.\n///\n/// Negative argument is implicitly converted to unsigned, unless\n/// \\p StrictlyUnsigned is true.\ntemplate <typename AttrInfo> static bool checkUInt32Argument(Sema &S, const AttrInfo &AI, const Expr *Expr, uint32_t &Val, unsigned Idx = UINT_MAX, bool StrictlyUnsigned = false) {\n if (!I->isIntN(32)) {\n S.Diag(Expr->getExprLoc(), diag::err_ice_too_large) << toString(*I, 10, false) << 32 << /* Unsigned */ 1;"},{v,234,"/// Wrapper around checkUInt32Argument, with an extra check to be sure\n/// that the result will fit into a regular (signed) int. All args have the same\n/// purpose as they do in checkUInt32Argument.\ntemplate <typename AttrInfo> static bool checkPositiveIntArgument(Sema &S, const AttrInfo &AI, const Expr *Expr, int &Val, unsigned Idx = UINT_MAX) {\n if (UVal > (uint32_t)std::numeric_limits<int>::max()) {\n S.Diag(Expr->getExprLoc(), diag::err_ice_too_large) << toString(I, 10, false) << 32 << /* Unsigned */ 0;"},{v,4961,"// Checks whether an argument of launch_bounds attribute is\n// acceptable, performs implicit conversion to Rvalue, and returns\n// non-nullptr Expr result on success. Otherwise, it returns nullptr\n// and may output an error.\nstatic Expr *makeLaunchBoundsArgExpr(Sema &S, Expr *E, const CUDALaunchBoundsAttr &AL, const unsigned Idx) {\n // Make sure we can fit it in 32 bits.\n if (!I->isIntN(32)) {\n S.Diag(E->getExprLoc(), diag::err_ice_too_large) << toString(*I, 10, false) << 32 << /* Unsigned */ 1;"}} | |||
}, | }, | ||
[" | ["err_id_after_template_in_nested_name_spec"]={ | ||
[ | [j]="expected template name after \'template\' keyword in nested name specifier", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="expected template name after \'template\' keyword in nested name specifier", | ||
[ | [f]=n, | ||
[ | [g]="expected template name after \'template\' keyword in nested name specifier", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={z,1236199783,A}, | ||
[k]={{V,288,"/// Parse global scope or nested-name-specifier if present.\n///\n/// Parses a C++ global scope specifier (\'::\') or nested-name-specifier (which\n/// may be preceded by \'::\'). Note that this routine will not parse ::new or\n/// ::delete; it will just leave them in the token stream.\n///\n/// \'::\'[opt] nested-name-specifier\n/// \'::\'\n///\n/// nested-name-specifier:\n/// type-name \'::\'\n/// namespace-name \'::\'\n/// nested-name-specifier identifier \'::\'\n/// nested-name-specifier \'template\'[opt] simple-template-id \'::\'\n///\n///\n/// \\param SS the scope specifier that will be set to the parsed\n/// nested-name-specifier (or empty)\n///\n/// \\param ObjectType if this nested-name-specifier is being parsed following\n/// the \".\" or \"->\" of a member access expression, this parameter provides the\n/// type of the object whose members are being accessed.\n///\n/// \\param ObjectHadErrors if this unqualified-id occurs within a member access\n/// expression, indicates whether the original subexpressions had any errors.\n/// When true, diagnostics for missing \'template\' keyword will be supressed.\n///\n/// \\param EnteringContext whether we will be entering into the context of\n/// the nested-name-specifier after parsing it.\n///\n/// \\param MayBePseudoDestructor When non-NULL, points to a flag that\n/// indicates whether this nested-name-specifier may be part of a\n/// pseudo-destructor name. In this case, the flag will be set false\n/// if we don\'t actually end up parsing a destructor name. Moreover,\n/// if we do end up determining that we are parsing a destructor name,\n/// the last component of the nested-name-specifier is not parsed as\n/// part of the scope specifier.\n///\n/// \\param IsTypename If \\c true, this nested-name-specifier is known to be\n/// part of a type name. This is used to improve error recovery.\n///\n/// \\param LastII When non-NULL, points to an IdentifierInfo* that will be\n/// filled in with the leading identifier in the last component of the\n/// nested-name-specifier, if any.\n///\n/// \\param OnlyNamespace If true, only considers namespaces in lookup.\n///\n///\n/// \\returns true if there was an error parsing a scope specifier\nbool Parser::ParseOptionalCXXScopeSpecifier(CXXScopeSpec &SS, ParsedType ObjectType, bool ObjectHadErrors, bool EnteringContext, bool *MayBePseudoDestructor, bool IsTypename, IdentifierInfo **LastII, bool OnlyNamespace, bool InUsingDeclaration) {\n while (true) {\n // Parse the optional \'template\' keyword, then make sure we have\n // \'identifier <\' after it.\n if (Tok.is(tok::kw_template)) {\n if (Tok.is(tok::identifier)) {\n } else if (Tok.is(tok::kw_operator)) {\n if (TemplateName.getKind() != UnqualifiedIdKind::IK_OperatorFunctionId && TemplateName.getKind() != UnqualifiedIdKind::IK_LiteralOperatorId) {\n Diag(TemplateName.getSourceRange().getBegin(), diag::err_id_after_template_in_nested_name_spec) << TemplateName.getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_ident_list_in_fn_declaration"]={ | ||
[ | [j]="a parameter list without types is only allowed in a function definition", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="a parameter list without types is only allowed in a function definition", | ||
[ | [f]=n, | ||
[ | [g]="a parameter list without types is only allowed in a function definition", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={z,1236199783,A}, | ||
[k]={{F,4805,"static TypeSourceInfo *GetFullTypeForDeclarator(TypeProcessingState &state, QualType declSpecType, TypeSourceInfo *TInfo) {\n for (unsigned i = 0, e = D.getNumTypeObjects(); i != e; ++i) {\n case DeclaratorChunk::Function: {\n // OpenCL disallows functions without a prototype, but it doesn\'t enforce\n // strict prototypes as in C2x because it allows a function definition to\n // have an identifier list. See OpenCL 3.0 6.11/g for more details.\n if (!FTI.NumParams && !FTI.isVariadic && !LangOpts.requiresStrictPrototypes() && !LangOpts.OpenCL) {\n } else {\n if (FTI.NumParams && FTI.Params[0].Param == nullptr) {\n S.Diag(FTI.Params[0].IdentLoc, diag::err_ident_list_in_fn_declaration);"}} | |||
}, | }, | ||
[" | ["err_ifunc_resolver_return"]={ | ||
[ | [j]="ifunc resolver function must return a pointer", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="ifunc resolver function must return a pointer", | ||
[ | [f]=n, | ||
[ | [g]="ifunc resolver function must return a pointer", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"85eda12d0937",1460360939,"[GCC] Attribute ifunc support in clang"}, | ||
[k]={{"clang/lib/CodeGen/CodeGenModule.cpp",539,"static bool checkAliasedGlobal(DiagnosticsEngine &Diags, SourceLocation Location, bool IsIFunc, const llvm::GlobalValue *Alias, const llvm::GlobalValue *&GV, const llvm::MapVector<GlobalDecl, StringRef> &MangledDeclNames, SourceRange AliasRange) {\n if (IsIFunc) {\n if (!FTy->getReturnType()->isPointerTy()) {\n Diags.Report(Location, diag::err_ifunc_resolver_return);"}} | |||
}, | }, | ||
[" | ["err_illegal_container_subscripting_op"]={ | ||
[ | [j]="illegal operation on Objective-C container subscripting", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="illegal operation on Objective-C container subscripting", | ||
[ | [f]=n, | ||
[ | [g]="illegal operation on Objective\\-C container subscripting", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"e65b086e07a6",1331064356,"Add clang support for new Objective-C literal syntax for NSDictionary, NSArray,"}, | ||
[k]={{pb,1280,"/// Check an increment or decrement of a pseudo-object expression.\nExprResult Sema::checkPseudoObjectIncDec(Scope *Sc, SourceLocation opcLoc, UnaryOperatorKind opcode, Expr *op) {\n if (ObjCPropertyRefExpr *refExpr = dyn_cast<ObjCPropertyRefExpr>(opaqueRef)) {\n } else if (isa<ObjCSubscriptRefExpr>(opaqueRef)) {\n Diag(opcLoc, diag::err_illegal_container_subscripting_op);"}} | |||
}, | }, | ||
[" | ["err_illegal_decl_array_of_functions"]={ | ||
[ | [j]="\'A\' declared as array of functions of type B", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'%0\' declared as array of functions of type %1", | ||
[ | [f]=n, | ||
[ | [g]="\'(.*?)\' declared as array of functions of type (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{F,2232,"/// Build an array type.\n///\n/// \\param T The type of each element in the array.\n///\n/// \\param ASM C99 array size modifier (e.g., \'*\', \'static\').\n///\n/// \\param ArraySize Expression describing the size of the array.\n///\n/// \\param Brackets The range from the opening \'[\' to the closing \']\'.\n///\n/// \\param Entity The name of the entity that involves the array\n/// type, if known.\n///\n/// \\returns A suitable array type, if there are no errors. Otherwise,\n/// returns a NULL type.\nQualType Sema::BuildArrayType(QualType T, ArrayType::ArraySizeModifier ASM, Expr *ArraySize, unsigned Quals, SourceRange Brackets, DeclarationName Entity) {\n if (T->isFunctionType()) {\n Diag(Loc, diag::err_illegal_decl_array_of_functions) << getPrintableNameForEntity(Entity) << T;"}} | |||
}, | }, | ||
[" | ["err_illegal_decl_array_of_references"]={ | ||
[ | [j]="\'A\' declared as array of references of type B", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'%0\' declared as array of references of type %1", | ||
[ | [f]=n, | ||
[ | [g]="\'(.*?)\' declared as array of references of type (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{F,2191,"/// Build an array type.\n///\n/// \\param T The type of each element in the array.\n///\n/// \\param ASM C99 array size modifier (e.g., \'*\', \'static\').\n///\n/// \\param ArraySize Expression describing the size of the array.\n///\n/// \\param Brackets The range from the opening \'[\' to the closing \']\'.\n///\n/// \\param Entity The name of the entity that involves the array\n/// type, if known.\n///\n/// \\returns A suitable array type, if there are no errors. Otherwise,\n/// returns a NULL type.\nQualType Sema::BuildArrayType(QualType T, ArrayType::ArraySizeModifier ASM, Expr *ArraySize, unsigned Quals, SourceRange Brackets, DeclarationName Entity) {\n if (getLangOpts().CPlusPlus) {\n // C++ [dcl.array]p1:\n // T is called the array element type; this type shall not be a reference\n // type, the (possibly cv-qualified) type void, a function type or an\n // abstract class type.\n //\n // C++ [dcl.array]p3:\n // When several \"array of\" specifications are adjacent, [...] only the\n // first of the constant expressions that specify the bounds of the arrays\n // may be omitted.\n //\n // Note: function types are handled in the common path with C.\n if (T->isReferenceType()) {\n Diag(Loc, diag::err_illegal_decl_array_of_references) << getPrintableNameForEntity(Entity) << T;"}} | |||
}, | }, | ||
[" | ["err_illegal_decl_mempointer_in_nonclass"]={ | ||
[ | [j]="\'A\' does not point into a class", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'%0\' does not point into a class", | ||
[ | [f]=n, | ||
[ | [g]="\'(.*?)\' does not point into a class", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{F,4999,"static TypeSourceInfo *GetFullTypeForDeclarator(TypeProcessingState &state, QualType declSpecType, TypeSourceInfo *TInfo) {\n for (unsigned i = 0, e = D.getNumTypeObjects(); i != e; ++i) {\n case DeclaratorChunk::MemberPointer: {\n if (SS.isInvalid()) {\n } else if (S.isDependentScopeSpecifier(SS) || isa_and_nonnull<CXXRecordDecl>(S.computeDeclContext(SS))) {\n } else {\n S.Diag(DeclType.Mem.Scope().getBeginLoc(), diag::err_illegal_decl_mempointer_in_nonclass) << (D.getIdentifier() ? D.getIdentifier()->getName() : \"type name\") << DeclType.Mem.Scope().getRange();"}} | |||
}, | }, | ||
[" | ["err_illegal_decl_mempointer_to_reference"]={ | ||
[ | [j]="\'A\' declared as a member pointer to a reference of type B", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'%0\' declared as a member pointer to a reference of type %1", | ||
[ | [f]=n, | ||
[ | [g]="\'(.*?)\' declared as a member pointer to a reference of type (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"124f34c15014",1246320417,"Make an error message more clear."}, | ||
[k]={{F,2695,"/// Build a member pointer type \\c T Class::*.\n///\n/// \\param T the type to which the member pointer refers.\n/// \\param Class the class type into which the member pointer points.\n/// \\param Loc the location where this type begins\n/// \\param Entity the name of the entity that will have this member pointer type\n///\n/// \\returns a member pointer type, if successful, or a NULL type if there was\n/// an error.\nQualType Sema::BuildMemberPointerType(QualType T, QualType Class, SourceLocation Loc, DeclarationName Entity) {\n // C++ 8.3.3p3: A pointer to member shall not point to ... a member\n // with reference type, or \"cv void.\"\n if (T->isReferenceType()) {\n Diag(Loc, diag::err_illegal_decl_mempointer_to_reference) << getPrintableNameForEntity(Entity) << T;"}} | |||
}, | }, | ||
[" | ["err_illegal_decl_mempointer_to_void"]={ | ||
[ | [j]="\'A\' declared as a member pointer to void", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'%0\' declared as a member pointer to void", | ||
[ | [f]=n, | ||
[ | [g]="\'(.*?)\' declared as a member pointer to void", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{F,2700,"/// Build a member pointer type \\c T Class::*.\n///\n/// \\param T the type to which the member pointer refers.\n/// \\param Class the class type into which the member pointer points.\n/// \\param Loc the location where this type begins\n/// \\param Entity the name of the entity that will have this member pointer type\n///\n/// \\returns a member pointer type, if successful, or a NULL type if there was\n/// an error.\nQualType Sema::BuildMemberPointerType(QualType T, QualType Class, SourceLocation Loc, DeclarationName Entity) {\n if (T->isVoidType()) {\n Diag(Loc, diag::err_illegal_decl_mempointer_to_void) << getPrintableNameForEntity(Entity);"}} | |||
}, | }, | ||
[" | ["err_illegal_decl_pointer_to_reference"]={ | ||
[ | [j]="\'A\' declared as a pointer to a reference of type B", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'%0\' declared as a pointer to a reference of type %1", | ||
[ | [f]=n, | ||
[ | [g]="\'(.*?)\' declared as a pointer to a reference of type (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{F,1916,"/// Build a pointer type.\n///\n/// \\param T The type to which we\'ll be building a pointer.\n///\n/// \\param Loc The location of the entity whose type involves this\n/// pointer type or, if there is no such entity, the location of the\n/// type that will have pointer type.\n///\n/// \\param Entity The name of the entity that involves the pointer\n/// type, if known.\n///\n/// \\returns A suitable pointer type, if there are no\n/// errors. Otherwise, returns a NULL type.\nQualType Sema::BuildPointerType(QualType T, SourceLocation Loc, DeclarationName Entity) {\n if (T->isReferenceType()) {\n Diag(Loc, diag::err_illegal_decl_pointer_to_reference) << getPrintableNameForEntity(Entity) << T;"}} | |||
}, | }, | ||
[" | ["err_illegal_decl_reference_to_reference"]={ | ||
[ | [j]="A declared as a reference to a reference", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%0 declared as a reference to a reference", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) declared as a reference to a reference", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={z,1236199783,A}, | ||
[k]={{C,5732,"/// ParseDeclaratorInternal - Parse a C or C++ declarator. The direct-declarator\n/// is parsed by the function passed to it. Pass null, and the direct-declarator\n/// isn\'t parsed at all, making this function effectively parse the C++\n/// ptr-operator production.\n///\n/// If the grammar of this construct is extended, matching changes must also be\n/// made to TryParseDeclarator and MightBeDeclarator, and possibly to\n/// isConstructorDeclarator.\n///\n/// declarator: [C99 6.7.5] [C++ 8p4, dcl.decl]\n/// [C] pointer[opt] direct-declarator\n/// [C++] direct-declarator\n/// [C++] ptr-operator declarator\n///\n/// pointer: [C99 6.7.5]\n/// \'*\' type-qualifier-list[opt]\n/// \'*\' type-qualifier-list[opt] pointer\n///\n/// ptr-operator:\n/// \'*\' cv-qualifier-seq[opt]\n/// \'&\'\n/// [C++0x] \'&&\'\n/// [GNU] \'&\' restrict[opt] attributes[opt]\n/// [GNU?] \'&&\' restrict[opt] attributes[opt]\n/// \'::\'[opt] nested-name-specifier \'*\' cv-qualifier-seq[opt]\nvoid Parser::ParseDeclaratorInternal(Declarator &D, DirectDeclParseFunction DirectDeclParser) {\n if (Kind == tok::star || Kind == tok::caret) {\n } else {\n if (D.getNumTypeObjects() > 0) {\n if (InnerChunk.Kind == DeclaratorChunk::Reference) {\n if (const IdentifierInfo *II = D.getIdentifier())\n Diag(InnerChunk.Loc, diag::err_illegal_decl_reference_to_reference) << II;"},{C,5734,"/// ParseDeclaratorInternal - Parse a C or C++ declarator. The direct-declarator\n/// is parsed by the function passed to it. Pass null, and the direct-declarator\n/// isn\'t parsed at all, making this function effectively parse the C++\n/// ptr-operator production.\n///\n/// If the grammar of this construct is extended, matching changes must also be\n/// made to TryParseDeclarator and MightBeDeclarator, and possibly to\n/// isConstructorDeclarator.\n///\n/// declarator: [C99 6.7.5] [C++ 8p4, dcl.decl]\n/// [C] pointer[opt] direct-declarator\n/// [C++] direct-declarator\n/// [C++] ptr-operator declarator\n///\n/// pointer: [C99 6.7.5]\n/// \'*\' type-qualifier-list[opt]\n/// \'*\' type-qualifier-list[opt] pointer\n///\n/// ptr-operator:\n/// \'*\' cv-qualifier-seq[opt]\n/// \'&\'\n/// [C++0x] \'&&\'\n/// [GNU] \'&\' restrict[opt] attributes[opt]\n/// [GNU?] \'&&\' restrict[opt] attributes[opt]\n/// \'::\'[opt] nested-name-specifier \'*\' cv-qualifier-seq[opt]\nvoid Parser::ParseDeclaratorInternal(Declarator &D, DirectDeclParseFunction DirectDeclParser) {\n if (Kind == tok::star || Kind == tok::caret) {\n } else {\n if (D.getNumTypeObjects() > 0) {\n if (InnerChunk.Kind == DeclaratorChunk::Reference) {\n if (const IdentifierInfo *II = D.getIdentifier())\n else\n Diag(InnerChunk.Loc, diag::err_illegal_decl_reference_to_reference) << \"type name\";"}} | |||
}, | }, | ||
[" | ["err_illegal_initializer"]={ | ||
[ | [j]="illegal initializer (only variables can be initialized)", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="illegal initializer (only variables can be initialized)", | ||
[ | [f]=n, | ||
[ | [g]="illegal initializer \\(only variables can be initialized\\)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{p,11467,"/// AddInitializerToDecl - Adds the initializer Init to the\n/// declaration dcl. If DirectInit is true, this is C++ direct\n/// initialization rather than copy initialization.\nvoid Sema::AddInitializerToDecl(Decl *RealDecl, Expr *Init, bool DirectInit) {\n if (!VDecl) {\n Diag(RealDecl->getLocation(), diag::err_illegal_initializer);"},{r,15506,"void Sema::ActOnPureSpecifier(Decl *D, SourceLocation ZeroLoc) {\n if (D->getFriendObjectKind())\n else if (auto *M = dyn_cast<CXXMethodDecl>(D))\n else\n Diag(D->getLocation(), diag::err_illegal_initializer);"}} | |||
}, | }, | ||
[" | ["err_illegal_initializer_type"]={ | ||
[ | [j]="illegal initializer type A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="illegal initializer type %0", | ||
[ | [f]=n, | ||
[ | [g]="illegal initializer type (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{L,1088,"void InitListChecker::CheckListElementTypes(const InitializedEntity &Entity, InitListExpr *IList, QualType &DeclType, bool SubobjectIsDesignatorContext, unsigned &Index, InitListExpr *StructuredList, unsigned &StructuredIndex, bool TopLevelObject) {\n if (DeclType->isAnyComplexType() && SubobjectIsDesignatorContext) {\n } else if (DeclType->isScalarType()) {\n } else if (DeclType->isVectorType()) {\n } else if (const RecordDecl *RD = getRecordDecl(DeclType)) {\n } else if (DeclType->isArrayType()) {\n } else if (DeclType->isVoidType() || DeclType->isFunctionType()) {\n if (!VerifyOnly)\n SemaRef.Diag(IList->getBeginLoc(), diag::err_illegal_initializer_type) << DeclType;"},{L,1108,"void InitListChecker::CheckListElementTypes(const InitializedEntity &Entity, InitListExpr *IList, QualType &DeclType, bool SubobjectIsDesignatorContext, unsigned &Index, InitListExpr *StructuredList, unsigned &StructuredIndex, bool TopLevelObject) {\n if (DeclType->isAnyComplexType() && SubobjectIsDesignatorContext) {\n } else if (DeclType->isScalarType()) {\n } else if (DeclType->isVectorType()) {\n } else if (const RecordDecl *RD = getRecordDecl(DeclType)) {\n } else if (DeclType->isArrayType()) {\n } else if (DeclType->isVoidType() || DeclType->isFunctionType()) {\n } else if (DeclType->isReferenceType()) {\n } else if (DeclType->isObjCObjectType()) {\n } else if (DeclType->isOCLIntelSubgroupAVCType() || DeclType->isSizelessBuiltinType()) {\n } else if (DeclType->isDependentType()) {\n } else {\n if (!VerifyOnly)\n SemaRef.Diag(IList->getBeginLoc(), diag::err_illegal_initializer_type) << DeclType;"}} | |||
}, | }, | ||
[" | ["err_illegal_message_expr_incomplete_type"]={ | ||
[ | [j]="Objective-C message has incomplete result type A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="Objective-C message has incomplete result type %0", | ||
[ | [f]=n, | ||
[ | [g]="Objective\\-C message has incomplete result type (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"1d44608cc112",1276714564,"Make sure result type of objc++ message expression is"}, | ||
[k]={{O,2165,"/// \\param ReceiverType The type of the object receiving the\n/// message. When \\p ReceiverTypeInfo is non-NULL, this is the same\n/// type as that refers to. For a superclass send, this is the type of\n/// the superclass.\n///\n/// \\param SuperLoc The location of the \"super\" keyword in a\n/// superclass message.\n///\n/// \\param Sel The selector to which the message is being sent.\n///\n/// \\param Method The method that this class message is invoking, if\n/// already known.\n///\n/// \\param LBracLoc The location of the opening square bracket \']\'.\n///\n/// \\param RBracLoc The location of the closing square bracket \']\'.\n///\n/// \\param ArgsIn The message arguments.\nExprResult Sema::BuildClassMessage(TypeSourceInfo *ReceiverTypeInfo, QualType ReceiverType, SourceLocation SuperLoc, Selector Sel, ObjCMethodDecl *Method, SourceLocation LBracLoc, ArrayRef<SourceLocation> SelectorLocs, SourceLocation RBracLoc, MultiExprArg ArgsIn, bool isImplicit) {\n if (Method && !Method->getReturnType()->isVoidType() && RequireCompleteType(LBracLoc, Method->getReturnType(), diag::err_illegal_message_expr_incomplete_type))"},{O,2594,"/// Build an Objective-C instance message expression.\n///\n/// This routine takes care of both normal instance messages and\n/// instance messages to the superclass instance.\n///\n/// \\param Receiver The expression that computes the object that will\n/// receive this message. This may be empty, in which case we are\n/// sending to the superclass instance and \\p SuperLoc must be a valid\n/// source location.\n///\n/// \\param ReceiverType The (static) type of the object receiving the\n/// message. When a \\p Receiver expression is provided, this is the\n/// same type as that expression. For a superclass instance send, this\n/// is a pointer to the type of the superclass.\n///\n/// \\param SuperLoc The location of the \"super\" keyword in a\n/// superclass instance message.\n///\n/// \\param Sel The selector to which the message is being sent.\n///\n/// \\param Method The method that this instance message is invoking, if\n/// already known.\n///\n/// \\param LBracLoc The location of the opening square bracket \']\'.\n///\n/// \\param RBracLoc The location of the closing square bracket \']\'.\n///\n/// \\param ArgsIn The message arguments.\nExprResult Sema::BuildInstanceMessage(Expr *Receiver, QualType ReceiverType, SourceLocation SuperLoc, Selector Sel, ObjCMethodDecl *Method, SourceLocation LBracLoc, ArrayRef<SourceLocation> SelectorLocs, SourceLocation RBracLoc, MultiExprArg ArgsIn, bool isImplicit) {\n if (Method && !Method->getReturnType()->isVoidType() && RequireCompleteType(LBracLoc, Method->getReturnType(), diag::err_illegal_message_expr_incomplete_type))"}} | |||
}, | }, | ||
[" | ["err_illegal_qualifiers_on_catch_parm"]={ | ||
[ | [j]="illegal qualifiers on @catch parameter", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="illegal qualifiers on @catch parameter", | ||
[ | [f]=n, | ||
[ | [g]="illegal qualifiers on @catch parameter", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{hb,4298,"/// Build a type-check a new Objective-C exception variable declaration.\nVarDecl *Sema::BuildObjCExceptionDecl(TypeSourceInfo *TInfo, QualType T, SourceLocation StartLoc, SourceLocation IdLoc, IdentifierInfo *Id, bool Invalid) {\n // An @catch parameter must be an unqualified object pointer type;\n // FIXME: Recover from \"NSObject foo\" by inserting the * in \"NSObject *foo\"?\n if (Invalid) {\n } else if (T->isDependentType()) {\n } else if (T->isObjCQualifiedIdType()) {\n Diag(IdLoc, diag::err_illegal_qualifiers_on_catch_parm);"}} | |||
}, | }, | ||
[" | ["err_illegal_super_cast"]={ | ||
[ | [j]="cannot cast \'super\' (it isn\'t an expression)", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot cast \'super\' (it isn\'t an expression)", | ||
[ | [f]=n, | ||
[ | [g]="cannot cast \'super\' \\(it isn\'t an expression\\)", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{Fb,2826,"/// ParseParenExpression - This parses the unit that starts with a \'(\' token,\n/// based on what is allowed by ExprType. The actual thing parsed is returned\n/// in ExprType. If stopIfCastExpr is true, it will only return the parsed type,\n/// not the parsed cast-expression.\n///\n/// \\verbatim\n/// primary-expression: [C99 6.5.1]\n/// \'(\' expression \')\'\n/// [GNU] \'(\' compound-statement \')\' (if !ParenExprOnly)\n/// postfix-expression: [C99 6.5.2]\n/// \'(\' type-name \')\' \'{\' initializer-list \'}\'\n/// \'(\' type-name \')\' \'{\' initializer-list \',\' \'}\'\n/// cast-expression: [C99 6.5.4]\n/// \'(\' type-name \')\' cast-expression\n/// [ARC] bridged-cast-expression\n/// [ARC] bridged-cast-expression:\n/// (__bridge type-name) cast-expression\n/// (__bridge_transfer type-name) cast-expression\n/// (__bridge_retained type-name) cast-expression\n/// fold-expression: [C++1z]\n/// \'(\' cast-expression fold-operator \'...\' \')\'\n/// \'(\' \'...\' fold-operator cast-expression \')\'\n/// \'(\' cast-expression fold-operator \'...\'\n/// fold-operator cast-expression \')\'\n/// [OPENMP] Array shaping operation\n/// \'(\' \'[\' expression \']\' { \'[\' expression \']\' } cast-expression\n/// \\endverbatim\nExprResult Parser::ParseParenExpression(ParenParseOption &ExprType, bool stopIfCastExpr, bool isTypeCast, ParsedType &CastTy, SourceLocation &RParenLoc) {\n // None of these cases should fall through with an invalid Result\n // unless they\'ve already reported an error.\n if (ExprType >= CompoundStmt && Tok.is(tok::l_brace)) {\n } else if (ExprType >= CompoundLiteral && BridgeCast) {\n } else if (ExprType >= CompoundLiteral && isTypeIdInParens(isAmbiguousTypeId)) {\n // If our type is followed by an identifier and either \':\' or \']\', then\n // this is probably an Objective-C message send where the leading \'[\' is\n // missing. Recover as if that were the case.\n if (!DeclaratorInfo.isInvalidType() && Tok.is(tok::identifier) && !InMessageExpression && getLangOpts().ObjC && (NextToken().is(tok::colon) || NextToken().is(tok::r_square))) {\n } else {\n if (ExprType == CastExpr) {\n // Reject the cast of super idiom in ObjC.\n if (Tok.is(tok::identifier) && getLangOpts().ObjC && Tok.getIdentifierInfo() == Ident_super && getCurScope()->isInObjcMethodScope() && GetLookAheadToken(1).isNot(tok::period)) {\n Diag(Tok.getLocation(), diag::err_illegal_super_cast) << SourceRange(OpenLoc, RParenLoc);"}} | |||
}, | }, | ||
[" | ["err_illegal_union_or_anon_struct_member"]={ | ||
[ | [j]="... member A has a non-trivial ...", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%select{anonymous struct|union}0 member %1 has a non-trivial %select{default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor}2", | ||
[ | [f]=n, | ||
[ | [g]="(?:anonymous struct|union) member (.*?) has a non\\-trivial (?:default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"33aee3934acf",1281979628,"Emit diagnostic error when the field of an anonymous struct is non trivial."}, | ||
[k]={{p,16039,"bool Sema::CheckNontrivialField(FieldDecl *FD) {\n if (const RecordType *RT = EltTy->getAs<RecordType>()) {\n if (RDecl->getDefinition()) {\n if (member != CXXInvalid) {\n Diag(FD->getLocation(), getLangOpts().CPlusPlus11 ? diag::warn_cxx98_compat_nontrivial_union_or_anon_struct_member : diag::err_illegal_union_or_anon_struct_member) << FD->getParent()->isUnion() << FD->getDeclName() << member;"}} | |||
}, | }, | ||
[" | ["err_illegal_use_of_flt_eval_macro"]={ | ||
[ | [j]="\'__FLT_EVAL_METHOD__\' cannot be expanded inside a scope containing \'#pragma clang fp eval_method\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'__FLT_EVAL_METHOD__\' cannot be expanded inside a scope containing \'#pragma clang fp eval_method\'", | ||
[ | [f]=n, | ||
[ | [g]="\'__FLT_EVAL_METHOD__\' cannot be expanded inside a scope containing \'\\#pragma clang fp eval_method\'", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={M,1625925174,N}, | ||
[k]={{"clang/lib/Lex/PPMacroExpansion.cpp",1532,"/// ExpandBuiltinMacro - If an identifier token is read that is to be expanded\n/// as a builtin macro, handle it and return the next token as \'Tok\'.\nvoid Preprocessor::ExpandBuiltinMacro(Token &Tok) {\n if (II == Ident__LINE__) {\n } else if (II == Ident__FILE__ || II == Ident__BASE_FILE__ || II == Ident__FILE_NAME__) {\n } else if (II == Ident__DATE__) {\n } else if (II == Ident__TIME__) {\n } else if (II == Ident__INCLUDE_LEVEL__) {\n } else if (II == Ident__TIMESTAMP__) {\n } else if (II == Ident__FLT_EVAL_METHOD__) {\n if (getLastFPEvalPragmaLocation().isValid()) {\n Diag(Tok, diag::err_illegal_use_of_flt_eval_macro);"}} | |||
}, | }, | ||
[" | ["err_imaginary_not_supported"]={ | ||
[ | [j]="imaginary types are not supported", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="imaginary types are not supported", | ||
[ | [f]=n, | ||
[ | [g]="imaginary types are not supported", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"719a46bbf14a",1285234831,"Don\'t crash on _Imaginary."}, | ||
[k]={{F,1579,"#include \"clang/Basic/OpenCLImageTypes.def\"\n // FIXME: Imaginary.\n if (DS.getTypeSpecComplex() == DeclSpec::TSC_imaginary)\n S.Diag(DS.getTypeSpecComplexLoc(), diag::err_imaginary_not_supported);"}} | |||
}, | }, | ||
[" | ["err_immediate_function_used_before_definition"]={ | ||
[ | [j]="immediate function A used before it is defined", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="immediate function %0 used before it is defined", | ||
[ | [f]=n, | ||
[ | [g]="immediate function (.*?) used before it is defined", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={M,1625925174,N}, | ||
[k]={{r,2073,"bool Sema::CheckImmediateEscalatingFunctionDefinition(FunctionDecl *FD, const sema::FunctionScopeInfo *FSI) {\n if (FSI->FoundImmediateEscalatingExpression) {\n if (it != UndefinedButUsed.end()) {\n Diag(it->second, diag::err_immediate_function_used_before_definition) << it->first;"}} | |||
}, | }, | ||
[" | ["err_impcast_complex_scalar"]={ | ||
[ | [j]="implicit conversion from A to B is not permitted in C++", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="implicit conversion from %0 to %1 is not permitted in C++", | ||
[ | [f]=n, | ||
[ | [g]="implicit conversion from (.*?) to (.*?) is not permitted in C\\+\\+", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"0241637c0ea3",1502234285,"Sema: disable implicit conversion from _Complex to real types in C++."}, | ||
[k]={{y,13150,"static void CheckImplicitConversion(Sema &S, Expr *E, QualType T, SourceLocation CC, bool *ICContext = nullptr, bool IsListInit = false) {\n // Strip complex types.\n if (isa<ComplexType>(Source)) {\n if (!isa<ComplexType>(Target)) {\n return DiagnoseImpCast(S, E, T, CC, S.getLangOpts().CPlusPlus ? diag::err_impcast_complex_scalar : diag::warn_impcast_complex_scalar);"}} | |||
}, | }, | ||
[" | ["err_implementation_of_class_stub"]={ | ||
[ | [j]="cannot declare implementation of a class declared with the \'objc_class_stub\' attribute", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot declare implementation of a class declared with the \'objc_class_stub\' attribute", | ||
[ | [f]=n, | ||
[ | [g]="cannot declare implementation of a class declared with the \'objc_class_stub\' attribute", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"2c91c3b7af7c",1559189341,"Add the `objc_class_stub` attribute."}, | ||
[k]={{hb,3428,"// Note: For class/category implementations, allMethods is always null.\nDecl *Sema::ActOnAtEnd(Scope *S, SourceRange AtEnd, ArrayRef<Decl *> allMethods, ArrayRef<DeclGroupPtrTy> allTUVars) {\n if (ObjCImplementationDecl *IC = dyn_cast<ObjCImplementationDecl>(ClassDecl)) {\n if (ObjCInterfaceDecl *IDecl = IC->getClassInterface()) {\n if (IDecl->hasAttr<ObjCClassStubAttr>())\n Diag(IC->getLocation(), diag::err_implementation_of_class_stub);"}} | |||
}, | }, | ||
[" | ["err_implicit_coroutine_std_nothrow_type_not_found"]={ | ||
[ | [j]="std::nothrow was not found; include <new> before defining a coroutine which uses get_return_object_on_allocation_failure()", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="std::nothrow was not found; include <new> before defining a coroutine which uses get_return_object_on_allocation_failure()", | ||
[ | [f]=n, | ||
[ | [g]="std\\:\\:nothrow was not found; include \\<new\\> before defining a coroutine which uses get_return_object_on_allocation_failure\\(\\)", | ||
[ | [h]=a, | ||
[ | [i]=tb, | ||
[ | [b]={"627a63cf5081",1492334399,"[coroutines] Fix building of new/delete expressions when get_return_object_on_allocation_failure() i..."}, | ||
[k]={{eb,912,"/// Look up the std::nothrow object.\nstatic Expr *buildStdNoThrowDeclRef(Sema &S, SourceLocation Loc) {\n if (!S.LookupQualifiedName(Result, Std)) {\n S.Diag(Loc, diag::err_implicit_coroutine_std_nothrow_type_not_found);"}} | |||
}, | }, | ||
[" | ["err_implicit_empty_initializer"]={ | ||
[ | [j]="initializer for aggregate with no elements requires explicit braces", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="initializer for aggregate with no elements requires explicit braces", | ||
[ | [f]=n, | ||
[ | [g]="initializer for aggregate with no elements requires explicit braces", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{L,898,"/// Check whether the range of the initializer \\p ParentIList from element\n/// \\p Index onwards can be used to initialize an object of type \\p T. Update\n/// \\p Index to indicate how many elements of the list were consumed.\n///\n/// This also fills in \\p StructuredList, from element \\p StructuredIndex\n/// onwards, with the fully-braced, desugared form of the initialization.\nvoid InitListChecker::CheckImplicitInitList(const InitializedEntity &Entity, InitListExpr *ParentIList, QualType T, unsigned &Index, InitListExpr *StructuredList, unsigned &StructuredIndex) {\n if (maxElements == 0) {\n if (!VerifyOnly)\n SemaRef.Diag(ParentIList->getInit(Index)->getBeginLoc(), diag::err_implicit_empty_initializer);"}} | |||
}, | }, | ||
[" | ["err_implicit_instantiate_member_undefined"]={ | ||
[ | [j]="implicit instantiation of undefined member A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="implicit instantiation of undefined member %0", | ||
[ | [f]=n, | ||
[ | [g]="implicit instantiation of undefined member (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"8ea8fd48f2c7",1238015823,"Instantiation for member classes of class templates. Note that only"}, | ||
[k]={{K,713,"/// Determine whether we would be unable to instantiate this template (because\n/// it either has no definition, or is in the process of being instantiated).\nbool Sema::DiagnoseUninstantiableTemplate(SourceLocation PointOfInstantiation, NamedDecl *Instantiation, bool InstantiatedFromMember, const NamedDecl *Pattern, const NamedDecl *PatternDef, TemplateSpecializationKind TSK, bool Complain /*= true*/) {\n if (PatternDef) {\n } else if (InstantiatedFromMember) {\n if (isa<FunctionDecl>(Instantiation)) {\n } else {\n Diag(PointOfInstantiation, diag::err_implicit_instantiate_member_undefined) << InstantiationTy;"}} | |||
}, | }, | ||
[" | ["err_implied_comparison_category_type_not_found"]={ | ||
[ | [j]="cannot ... because type \'A\' was not found; include <compare>", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot %select{use builtin operator \'<=>\'|default \'operator<=>\'}1 because type \'%0\' was not found; include <compare>", | ||
[ | [f]=n, | ||
[ | [g]="cannot (?:use builtin operator \'\\<\\=\\>\'|default \'operator\\<\\=\\>\') because type \'(.*?)\' was not found; include \\<compare\\>", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"0683c0e68d31",1525727230,"[C++2a] Implement operator<=> CodeGen and ExprConstant"}, | ||
[k]={{r,9998,"QualType Sema::CheckComparisonCategoryType(ComparisonCategoryType Kind, SourceLocation Loc, ComparisonCategoryUsage Usage) {\n // If lookup failed\n if (!Info) {\n Diag(Loc, diag::err_implied_comparison_category_type_not_found) << NameForDiags << (int)Usage;"}} | |||
}, | }, | ||
[" | ["err_implied_coroutine_type_not_found"]={ | ||
[ | [j]="A type was not found; include <coroutine> before defining a coroutine", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%0 type was not found; include <coroutine> before defining a coroutine", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) type was not found; include \\<coroutine\\> before defining a coroutine", | ||
[ | [h]=a, | ||
[ | [i]=tb, | ||
[ | [b]={"6dcb0eb301c7",1489028983,"[coroutines] Build and pass coroutine_handle to await_suspend"}, | ||
[k]={{eb,129,"/// Look up the std::coroutine_handle<PromiseType>.\nstatic QualType lookupCoroutineHandleType(Sema &S, QualType PromiseType, SourceLocation Loc) {\n if (!S.LookupQualifiedName(Result, CoroNamespace)) {\n S.Diag(Loc, diag::err_implied_coroutine_type_not_found) << \"std::coroutine_handle\";"},{eb,1707,"ClassTemplateDecl *Sema::lookupCoroutineTraits(SourceLocation KwLoc, SourceLocation FuncLoc) {\n if (!Found) {\n Diag(KwLoc, diag::err_implied_coroutine_type_not_found) << \"std::coroutine_traits\";"}} | |||
}, | }, | ||
[" | ["err_implied_std_coroutine_traits_promise_type_not_class"]={ | ||
[ | [j]="this function cannot be a coroutine: A is not a class", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="this function cannot be a coroutine: %0 is not a class", | ||
[ | [f]=n, | ||
[ | [g]="this function cannot be a coroutine\\: (.*?) is not a class", | ||
[ | [h]=a, | ||
[ | [i]=tb, | ||
[ | [b]={"9f690bd80bb6",1445925765,"[coroutines] Creation of promise object, lookup of operator co_await, building"}, | ||
[k]={{eb,110,"/// Look up the std::coroutine_traits<...>::promise_type for the given\n/// function type.\nstatic QualType lookupPromiseType(Sema &S, const FunctionDecl *FD, SourceLocation KwLoc) {\n if (!PromiseType->getAsCXXRecordDecl()) {\n S.Diag(FuncLoc, diag::err_implied_std_coroutine_traits_promise_type_not_class) << buildElaboratedType();"}} | |||
}, | }, | ||
[" | ["err_implied_std_coroutine_traits_promise_type_not_found"]={ | ||
[ | [j]="this function cannot be a coroutine: A has no member named \'promise_type\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="this function cannot be a coroutine: %q0 has no member named \'promise_type\'", | ||
[ | [f]=n, | ||
[ | [g]="this function cannot be a coroutine\\: (.*?) has no member named \'promise_type\'", | ||
[ | [h]=a, | ||
[ | [i]=tb, | ||
[ | [b]={"9f690bd80bb6",1445925765,"[coroutines] Creation of promise object, lookup of operator co_await, building"}, | ||
[k]={{eb,97,"/// Look up the std::coroutine_traits<...>::promise_type for the given\n/// function type.\nstatic QualType lookupPromiseType(Sema &S, const FunctionDecl *FD, SourceLocation KwLoc) {\n if (!Promise) {\n S.Diag(FuncLoc, diag::err_implied_std_coroutine_traits_promise_type_not_found) << RD;"}} | |||
}, | }, | ||
[" | ["err_implied_std_initializer_list_not_found"]={ | ||
[ | [j]="cannot deduce type of initializer list because std::initializer_list was not found; include <initializer_list>", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot deduce type of initializer list because std::initializer_list was not found; include <initializer_list>", | ||
[ | [f]=n, | ||
[ | [g]="cannot deduce type of initializer list because std\\:\\:initializer_list was not found; include \\<initializer_list\\>", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"42acd4a05b52",1326840608,"Auto deduction support for std::initializer_list, including for-range support. This means you can no..."}, | ||
[k]={{r,10142,"static ClassTemplateDecl *LookupStdInitializerList(Sema &S, SourceLocation Loc) {\n if (!Std) {\n S.Diag(Loc, diag::err_implied_std_initializer_list_not_found);"},{r,10148,"static ClassTemplateDecl *LookupStdInitializerList(Sema &S, SourceLocation Loc) {\n if (!S.LookupQualifiedName(Result, Std)) {\n S.Diag(Loc, diag::err_implied_std_initializer_list_not_found);"}} | |||
}, | }, | ||
[" | ["err_import_in_wrong_fragment"]={ | ||
[ | [j]="module... imports cannot be in the ... module fragment", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="module%select{| partition}0 imports cannot be in the %select{global|private}1 module fragment", | ||
[ | [f]=n, | ||
[ | [g]="module(?:| partition) imports cannot be in the (?:global|private) module fragment", | ||
[ | [h]=a, | ||
[ | [i]=D, | ||
[ | [b]={"69350e569dc4",1612659633,"[C++20][Modules][3/8] Initial handling for module partitions."}, | ||
[k]={{Q,2316,"/// Parse a module import declaration. This is essentially the same for\n/// Objective-C and C++20 except for the leading \'@\' (in ObjC) and the\n/// trailing optional attributes (in C++).\n///\n/// [ObjC] @import declaration:\n/// \'@\' \'import\' module-name \';\'\n/// [ModTS] module-import-declaration:\n/// \'import\' module-name attribute-specifier-seq[opt] \';\'\n/// [C++20] module-import-declaration:\n/// \'export\'[opt] \'import\' module-name\n/// attribute-specifier-seq[opt] \';\'\n/// \'export\'[opt] \'import\' module-partition\n/// attribute-specifier-seq[opt] \';\'\n/// \'export\'[opt] \'import\' header-name\n/// attribute-specifier-seq[opt] \';\'\nDecl *Parser::ParseModuleImport(SourceLocation AtLoc, Sema::ModuleImportState &ImportState) {\n case Sema::ModuleImportState::PrivateFragmentImportAllowed:\n // We can only have pre-processor directives in the global module fragment\n // which allows pp-import, but not of a partition (since the global module\n // does not have partitions).\n // We cannot import a partition into a private module fragment, since\n // [module.private.frag]/1 disallows private module fragments in a multi-\n // TU module.\n if (IsPartition || (HeaderUnit && HeaderUnit->Kind != Module::ModuleKind::ModuleHeaderUnit))\n Diag(ImportLoc, diag::err_import_in_wrong_fragment) << IsPartition << (ImportState == Sema::ModuleImportState::GlobalFragment ? 0 : 1);"}} | |||
}, | }, | ||
[" | ["err_import_not_allowed_here"]={ | ||
[ | [j]="imports must immediately follow the module declaration", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="imports must immediately follow the module declaration", | ||
[ | [f]=n, | ||
[ | [g]="imports must immediately follow the module declaration", | ||
[ | [h]=a, | ||
[ | [i]=D, | ||
[ | [b]={"69350e569dc4",1612659633,"[C++20][Modules][3/8] Initial handling for module partitions."}, | ||
[k]={{Q,2323,"/// Parse a module import declaration. This is essentially the same for\n/// Objective-C and C++20 except for the leading \'@\' (in ObjC) and the\n/// trailing optional attributes (in C++).\n///\n/// [ObjC] @import declaration:\n/// \'@\' \'import\' module-name \';\'\n/// [ModTS] module-import-declaration:\n/// \'import\' module-name attribute-specifier-seq[opt] \';\'\n/// [C++20] module-import-declaration:\n/// \'export\'[opt] \'import\' module-name\n/// attribute-specifier-seq[opt] \';\'\n/// \'export\'[opt] \'import\' module-partition\n/// attribute-specifier-seq[opt] \';\'\n/// \'export\'[opt] \'import\' header-name\n/// attribute-specifier-seq[opt] \';\'\nDecl *Parser::ParseModuleImport(SourceLocation AtLoc, Sema::ModuleImportState &ImportState) {\n case Sema::ModuleImportState::PrivateFragmentImportFinished:\n if (getLangOpts().CPlusPlusModules)\n Diag(ImportLoc, diag::err_import_not_allowed_here);"}} | |||
}, | }, | ||
[" | ["err_imported_module_modmap_changed"]={ | ||
[ | [j]="module \'A\' ... AST file \'B\' found in a different module map file (C) than when the importing AST file was built (D)", | ||
[ | [c]=I, | ||
[ | [d]=H, | ||
[ | [e]="module \'%0\' %select{in|imported by}4 AST file \'%1\' found in a different module map file (%2) than when the importing AST file was built (%3)", | ||
[ | [f]=J, | ||
[ | [g]="module \'(.*?)\' (?:in|imported by) AST file \'(.*?)\' found in a different module map file \\((.*?)\\) than when the importing AST file was built \\((.*?)\\)", | ||
[ | [h]=a, | ||
[ | [i]=jb, | ||
[ | [b]={"beee15e721f6",1397498401,"Allow multiple modules with the same name to coexist in the module cache"}, | ||
[k]={{bb,3572,"ASTReader::ASTReadResult ASTReader::ReadModuleMapFileBlock(RecordData &Record, ModuleFile &F, const ModuleFile *ImportedBy, unsigned ClientLoadCapabilities) {\n if (PP.getPreprocessorOpts().ModulesCheckRelocated && F.Kind == MK_ImplicitModule && ModuleMgr.begin()->Kind != MK_MainFile) {\n if (!StoredModMap || *StoredModMap != ModMap) {\n if (!canRecoverFromOutOfDate(F.FileName, ClientLoadCapabilities))\n Diag(diag::err_imported_module_modmap_changed) << F.ModuleName << (NotImported ? F.FileName : ImportedBy->FileName) << ModMap->getName() << F.ModuleMapPath << NotImported;"}} | |||
}, | }, | ||
[" | ["err_imported_module_not_found"]={ | ||
[ | [j]="module \'A\' in AST file \'B\' ...is not defined in any loaded module map file; maybe you need to load \'C\'?", | ||
[ | [c]=I, | ||
[ | [d]=H, | ||
[ | [e]="module \'%0\' in AST file \'%1\' %select{(imported by AST file \'%2\') |}4is not defined in any loaded module map file; maybe you need to load \'%3\'?", | ||
[ | [f]=J, | ||
[ | [g]="module \'(.*?)\' in AST file \'(.*?)\' (?:\\(imported by AST file \'(.*?)\'\\) |)is not defined in any loaded module map file; maybe you need to load \'(.*?)\'\\?", | ||
[ | [h]=a, | ||
[ | [i]=jb, | ||
[ | [b]={"beee15e721f6",1397498401,"Allow multiple modules with the same name to coexist in the module cache"}, | ||
[k]={{bb,3552,"ASTReader::ASTReadResult ASTReader::ReadModuleMapFileBlock(RecordData &Record, ModuleFile &F, const ModuleFile *ImportedBy, unsigned ClientLoadCapabilities) {\n if (PP.getPreprocessorOpts().ModulesCheckRelocated && F.Kind == MK_ImplicitModule && ModuleMgr.begin()->Kind != MK_MainFile) {\n // Don\'t emit module relocation error if we have -fno-validate-pch\n if (!bool(PP.getPreprocessorOpts().DisablePCHOrModuleValidation & DisableValidationForModuleKind::Module) && !ModMap) {\n if (!canRecoverFromOutOfDate(F.FileName, ClientLoadCapabilities)) {\n if (auto ASTFE = M ? M->getASTFile() : std::nullopt) {\n } else {\n Diag(diag::err_imported_module_not_found) << F.ModuleName << F.FileName << (ImportedBy ? ImportedBy->FileName : \"\") << F.ModuleMapPath << !ImportedBy;"}} | |||
}, | }, | ||
[" | ["err_imported_module_relocated"]={ | ||
[ | [j]="module \'A\' was built in directory \'B\' but now resides in directory \'C\'", | ||
[ | [c]=I, | ||
[ | [d]=H, | ||
[ | [e]="module \'%0\' was built in directory \'%1\' but now resides in directory \'%2\'", | ||
[ | [f]=J, | ||
[ | [g]="module \'(.*?)\' was built in directory \'(.*?)\' but now resides in directory \'(.*?)\'", | ||
[ | [h]=a, | ||
[ | [i]=jb, | ||
[ | [b]={"223d3f2e4d49",1417836068,"[modules] If we import a module, and we\'ve seen a module map that describes the"}, | ||
[k]={{bb,2682,"ASTReader::ASTReadResult ASTReader::ReadControlBlock(ModuleFile &F, SmallVectorImpl<ImportedModule> &Loaded, const ModuleFile *ImportedBy, unsigned ClientLoadCapabilities) {\n while (true) {\n case MODULE_DIRECTORY: {\n if (M && M->Directory) {\n // If we\'re implicitly loading a module, the base directory can\'t\n // change between the build and use.\n // Don\'t emit module relocation error if we have -fno-validate-pch\n if (!bool(PP.getPreprocessorOpts().DisablePCHOrModuleValidation & DisableValidationForModuleKind::Module) && F.Kind != MK_ExplicitModule && F.Kind != MK_PrebuiltModule) {\n if (!BuildDir || *BuildDir != M->Directory) {\n if (!canRecoverFromOutOfDate(F.FileName, ClientLoadCapabilities))\n Diag(diag::err_imported_module_relocated) << F.ModuleName << Blob << M->Directory->getName();"}} | |||
}, | }, | ||
[" | ["err_in_class_initializer_bad_type"]={ | ||
[ | [j]="static data member of type A must be initialized out of line", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="static data member of type %0 must be initialized out of line", | ||
[ | [f]=n, | ||
[ | [g]="static data member of type (.*?) must be initialized out of line", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"db76892e72e4",1284160882,"Support in-class initialization of static const floating-point data members."}, | ||
[k]={{p,11823,"/// AddInitializerToDecl - Adds the initializer Init to the\n/// declaration dcl. If DirectInit is true, this is C++ direct\n/// initialization rather than copy initialization.\nvoid Sema::AddInitializerToDecl(Decl *RealDecl, Expr *Init, bool DirectInit) {\n if (VDecl->isLocalVarDecl()) {\n } else if (VDecl->isStaticDataMember() && !VDecl->isInline() && VDecl->getLexicalDeclContext()->isRecord()) {\n // Do nothing on dependent types.\n if (DclT->isDependentType()) {\n } else if (VDecl->isConstexpr()) {\n } else if (!DclT.isConstQualified()) {\n } else if (DclT->isIntegralOrEnumerationType()) {\n } else if (DclT->isFloatingType()) { // also permits complex, which is ok\n } else if (getLangOpts().CPlusPlus11 && DclT->isLiteralType(Context)) {\n } else {\n Diag(VDecl->getLocation(), diag::err_in_class_initializer_bad_type) << DclT << Init->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_in_class_initializer_literal_type"]={ | ||
[ | [j]="in-class initializer for static data member of type A requires \'constexpr\' specifier", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="in-class initializer for static data member of type %0 requires \'constexpr\' specifier", | ||
[ | [f]=n, | ||
[ | [g]="in\\-class initializer for static data member of type (.*?) requires \'constexpr\' specifier", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"256336d9ab6d",1317338314,"Mark the ExtWarn for in-class initialization of static const float members as a GNU extension. Don\'t..."}, | ||
[k]={{p,11819,"/// AddInitializerToDecl - Adds the initializer Init to the\n/// declaration dcl. If DirectInit is true, this is C++ direct\n/// initialization rather than copy initialization.\nvoid Sema::AddInitializerToDecl(Decl *RealDecl, Expr *Init, bool DirectInit) {\n if (VDecl->isLocalVarDecl()) {\n } else if (VDecl->isStaticDataMember() && !VDecl->isInline() && VDecl->getLexicalDeclContext()->isRecord()) {\n // Do nothing on dependent types.\n if (DclT->isDependentType()) {\n } else if (VDecl->isConstexpr()) {\n } else if (!DclT.isConstQualified()) {\n } else if (DclT->isIntegralOrEnumerationType()) {\n } else if (DclT->isFloatingType()) { // also permits complex, which is ok\n } else if (getLangOpts().CPlusPlus11 && DclT->isLiteralType(Context)) {\n Diag(VDecl->getLocation(), diag::err_in_class_initializer_literal_type) << DclT << Init->getSourceRange() << FixItHint::CreateInsertion(VDecl->getBeginLoc(), \"constexpr \");"}} | |||
}, | }, | ||
[" | ["err_in_class_initializer_non_const"]={ | ||
[ | [j]="non-const static data member must be initialized out of line", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="non-const static data member must be initialized out of line", | ||
[ | [f]=n, | ||
[ | [g]="non\\-const static data member must be initialized out of line", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"db76892e72e4",1284160882,"Support in-class initialization of static const floating-point data members."}, | ||
[k]={{p,11773,"/// AddInitializerToDecl - Adds the initializer Init to the\n/// declaration dcl. If DirectInit is true, this is C++ direct\n/// initialization rather than copy initialization.\nvoid Sema::AddInitializerToDecl(Decl *RealDecl, Expr *Init, bool DirectInit) {\n if (VDecl->isLocalVarDecl()) {\n } else if (VDecl->isStaticDataMember() && !VDecl->isInline() && VDecl->getLexicalDeclContext()->isRecord()) {\n // Do nothing on dependent types.\n if (DclT->isDependentType()) {\n } else if (VDecl->isConstexpr()) {\n } else if (!DclT.isConstQualified()) {\n Diag(VDecl->getLocation(), diag::err_in_class_initializer_non_const) << Init->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_in_class_initializer_non_constant"]={ | ||
[ | [j]="in-class initializer for static data member is not a constant expression", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="in-class initializer for static data member is not a constant expression", | ||
[ | [f]=n, | ||
[ | [g]="in\\-class initializer for static data member is not a constant expression", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{p,11797,"/// AddInitializerToDecl - Adds the initializer Init to the\n/// declaration dcl. If DirectInit is true, this is C++ direct\n/// initialization rather than copy initialization.\nvoid Sema::AddInitializerToDecl(Decl *RealDecl, Expr *Init, bool DirectInit) {\n if (VDecl->isLocalVarDecl()) {\n } else if (VDecl->isStaticDataMember() && !VDecl->isInline() && VDecl->getLexicalDeclContext()->isRecord()) {\n // Do nothing on dependent types.\n if (DclT->isDependentType()) {\n } else if (VDecl->isConstexpr()) {\n } else if (!DclT.isConstQualified()) {\n } else if (DclT->isIntegralOrEnumerationType()) {\n if (getLangOpts().CPlusPlus11 && DclT.isVolatileQualified())\n else if (Init->isValueDependent())\n else if (Init->isIntegerConstantExpr(Context, &Loc))\n else if (Init->getType()->isScopedEnumeralType() && Init->isCXX11ConstantExpr(Context))\n else if (Init->isEvaluatable(Context)) {\n } else {\n Diag(Loc, diag::err_in_class_initializer_non_constant) << Init->getSourceRange();"},{p,11812,"/// AddInitializerToDecl - Adds the initializer Init to the\n/// declaration dcl. If DirectInit is true, this is C++ direct\n/// initialization rather than copy initialization.\nvoid Sema::AddInitializerToDecl(Decl *RealDecl, Expr *Init, bool DirectInit) {\n if (VDecl->isLocalVarDecl()) {\n } else if (VDecl->isStaticDataMember() && !VDecl->isInline() && VDecl->getLexicalDeclContext()->isRecord()) {\n // Do nothing on dependent types.\n if (DclT->isDependentType()) {\n } else if (VDecl->isConstexpr()) {\n } else if (!DclT.isConstQualified()) {\n } else if (DclT->isIntegralOrEnumerationType()) {\n } else if (DclT->isFloatingType()) { // also permits complex, which is ok\n // In C++98, this is a GNU extension. In C++11, it is not, but we support\n // it anyway and provide a fixit to add the \'constexpr\'.\n if (getLangOpts().CPlusPlus11) {\n } else {\n if (!Init->isValueDependent() && !Init->isEvaluatable(Context)) {\n Diag(Init->getExprLoc(), diag::err_in_class_initializer_non_constant) << Init->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_in_class_initializer_volatile"]={ | ||
[ | [j]="static const volatile data member must be initialized out of line", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="static const volatile data member must be initialized out of line", | ||
[ | [f]=n, | ||
[ | [g]="static const volatile data member must be initialized out of line", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"ee6311df6972",1317331694,"In C++0x, static const volatile data members cannot be initialized in-class."}, | ||
[k]={{p,11783,"/// AddInitializerToDecl - Adds the initializer Init to the\n/// declaration dcl. If DirectInit is true, this is C++ direct\n/// initialization rather than copy initialization.\nvoid Sema::AddInitializerToDecl(Decl *RealDecl, Expr *Init, bool DirectInit) {\n if (VDecl->isLocalVarDecl()) {\n } else if (VDecl->isStaticDataMember() && !VDecl->isInline() && VDecl->getLexicalDeclContext()->isRecord()) {\n // Do nothing on dependent types.\n if (DclT->isDependentType()) {\n } else if (VDecl->isConstexpr()) {\n } else if (!DclT.isConstQualified()) {\n } else if (DclT->isIntegralOrEnumerationType()) {\n if (getLangOpts().CPlusPlus11 && DclT.isVolatileQualified())\n Diag(VDecl->getLocation(), diag::err_in_class_initializer_volatile);"}} | |||
}, | }, | ||
[" | ["err_include_too_large"]={ | ||
[ | [j]="sorry, this include generates a translation unit too large for Clang to process.", | ||
[ | [c]=I, | ||
[ | [d]=H, | ||
[ | [e]="sorry, this include generates a translation unit too large for Clang to process.", | ||
[ | [f]=J, | ||
[ | [g]="sorry, this include generates a translation unit too large for Clang to process\\.", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"39f50da2a357",1568041174,"Support -fstack-clash-protection for x86"}, | ||
[k]={{"clang/lib/Basic/SourceManager.cpp",525,"/// createFileID - Create a new FileID for the specified ContentCache and\n/// include position. This works regardless of whether the ContentCache\n/// corresponds to a file or some other input source.\nFileID SourceManager::createFileIDImpl(ContentCache &File, StringRef Filename, SourceLocation IncludePos, SrcMgr::CharacteristicKind FileCharacter, int LoadedID, SourceLocation::UIntTy LoadedOffset) {\n if (!(NextLocalOffset + FileSize + 1 > NextLocalOffset && NextLocalOffset + FileSize + 1 <= CurrentLoadedOffset)) {\n Diag.Report(IncludePos, diag::err_include_too_large);"}} | |||
}, | }, | ||
[" | ["err_incompatible_exception_specs"]={ | ||
[ | [j]="target exception specification is not superset of source", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="target exception specification is not superset of source", | ||
[ | [f]=n, | ||
[ | [g]="target exception specification is not superset of source", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"5d43164bc2e4",1255176250,"Implement the core checking for compatible exception specifications in assignment and initialization..."}, | ||
[k]={{Hb,831,"bool Sema::CheckExceptionSpecCompatibility(Expr *From, QualType ToType) {\n unsigned DiagID = diag::err_incompatible_exception_specs;"}} | |||
}, | }, | ||
[" | ["err_incompatible_fp_eval_method_options"]={ | ||
[ | [j]="option \'ffp-eval-method\' cannot be used with option ...", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="option \'ffp-eval-method\' cannot be used with option %select{\'fapprox-func\'|\'mreassociate\'|\'freciprocal\'}0", | ||
[ | [f]=n, | ||
[ | [g]="option \'ffp\\-eval\\-method\' cannot be used with option (?:\'fapprox\\-func\'|\'mreassociate\'|\'freciprocal\')", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"bac6cd5bf856",1648850628,"[misexpect] Re-implement MisExpect Diagnostics"}, | ||
[k]={{Bb,413,"static bool FixupInvocation(CompilerInvocation &Invocation, DiagnosticsEngine &Diags, const ArgList &Args, InputKind IK) {\n // When these options are used, the compiler is allowed to apply\n // optimizations that may affect the final result. For example\n // (x+y)+z is transformed to x+(y+z) but may not give the same\n // final result; it\'s not value safe.\n // Another example can be to simplify x/x to 1.0 but x could be 0.0, INF\n // or NaN. Final result may then differ. An error is issued when the eval\n // method is set with one of these options.\n if (Args.hasArg(OPT_ffp_eval_method_EQ)) {\n if (LangOpts.ApproxFunc)\n Diags.Report(diag::err_incompatible_fp_eval_method_options) << 0;"},{Bb,415,"static bool FixupInvocation(CompilerInvocation &Invocation, DiagnosticsEngine &Diags, const ArgList &Args, InputKind IK) {\n // When these options are used, the compiler is allowed to apply\n // optimizations that may affect the final result. For example\n // (x+y)+z is transformed to x+(y+z) but may not give the same\n // final result; it\'s not value safe.\n // Another example can be to simplify x/x to 1.0 but x could be 0.0, INF\n // or NaN. Final result may then differ. An error is issued when the eval\n // method is set with one of these options.\n if (Args.hasArg(OPT_ffp_eval_method_EQ)) {\n if (LangOpts.AllowFPReassoc)\n Diags.Report(diag::err_incompatible_fp_eval_method_options) << 1;"},{Bb,417,"static bool FixupInvocation(CompilerInvocation &Invocation, DiagnosticsEngine &Diags, const ArgList &Args, InputKind IK) {\n // When these options are used, the compiler is allowed to apply\n // optimizations that may affect the final result. For example\n // (x+y)+z is transformed to x+(y+z) but may not give the same\n // final result; it\'s not value safe.\n // Another example can be to simplify x/x to 1.0 but x could be 0.0, INF\n // or NaN. Final result may then differ. An error is issued when the eval\n // method is set with one of these options.\n if (Args.hasArg(OPT_ffp_eval_method_EQ)) {\n if (LangOpts.AllowRecip)\n Diags.Report(diag::err_incompatible_fp_eval_method_options) << 2;"}} | |||
}, | }, | ||
[" | ["err_incompatible_qualified_id"]={ | ||
[ | [j]="...", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%select{%diff{assigning to $ from incompatible type $|assigning to type from incompatible type}0,1|%diff{passing $ to parameter of incompatible type $|passing type to parameter of incompatible type}0,1|%diff{returning $ from a function with incompatible result type $|returning type from a function with incompatible result type}0,1|%diff{converting $ to incompatible type $|converting type to incompatible type}0,1|%diff{initializing $ with an expression of incompatible type $|initializing type with an expression of incompatible type}0,1|%diff{sending $ to parameter of incompatible type $|sending type to parameter of incompatible type}0,1|%diff{casting $ to incompatible type $|casting type to incompatible type}0,1}2", | ||
[ | [f]=n, | ||
[ | [g]="(?:(?:assigning to (.*?) from incompatible type (.*?)|assigning to type from incompatible type)|(?:passing (.*?) to parameter of incompatible type (.*?)|passing type to parameter of incompatible type)|(?:returning (.*?) from a function with incompatible result type (.*?)|returning type from a function with incompatible result type)|(?:converting (.*?) to incompatible type (.*?)|converting type to incompatible type)|(?:initializing (.*?) with an expression of incompatible type (.*?)|initializing type with an expression of incompatible type)|(?:sending (.*?) to parameter of incompatible type (.*?)|sending type to parameter of incompatible type)|(?:casting (.*?) to incompatible type (.*?)|casting type to incompatible type))", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={T,1576908663,U}, | ||
[k]={{q,15351,"bool Sema::DiagnoseAssignmentResult(AssignConvertType ConvTy, SourceLocation Loc, QualType DstType, QualType SrcType, Expr *SrcExpr, AssignmentAction Action, bool *Complained) {\n case IncompatibleObjCQualifiedId: {\n if (getLangOpts().CPlusPlus) {\n DiagKind = diag::err_incompatible_qualified_id;"},{q,15432,"bool Sema::DiagnoseAssignmentResult(AssignConvertType ConvTy, SourceLocation Loc, QualType DstType, QualType SrcType, Expr *SrcExpr, AssignmentAction Action, bool *Complained) {\n if ((DiagKind == diag::warn_incompatible_qualified_id || DiagKind == diag::err_incompatible_qualified_id) && PDecl && IFace && !IFace->hasDefinition())"}} | |||
}, | }, | ||
[" | ["err_incompatible_vectors"]={ | ||
[ | [j]="incompatible vector types ...", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="incompatible vector types %select{%diff{assigning to $ from $|assigning to different types}0,1|%diff{passing $ to parameter of type $|passing to parameter of different type}0,1|%diff{returning $ from a function with result type $|returning from function with different return type}0,1|%diff{converting $ to type $|converting between types}0,1|%diff{initializing $ with an expression of type $|initializing with expression of different type}0,1|%diff{sending $ to parameter of type $|sending to parameter of different type}0,1|%diff{casting $ to type $|casting between types}0,1}2", | ||
[ | [f]=n, | ||
[ | [g]="incompatible vector types (?:(?:assigning to (.*?) from (.*?)|assigning to different types)|(?:passing (.*?) to parameter of type (.*?)|passing to parameter of different type)|(?:returning (.*?) from a function with result type (.*?)|returning from function with different return type)|(?:converting (.*?) to type (.*?)|converting between types)|(?:initializing (.*?) with an expression of type (.*?)|initializing with expression of different type)|(?:sending (.*?) to parameter of type (.*?)|sending to parameter of different type)|(?:casting (.*?) to type (.*?)|casting between types))", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={T,1576908663,U}, | ||
[k]={{q,15360,"bool Sema::DiagnoseAssignmentResult(AssignConvertType ConvTy, SourceLocation Loc, QualType DstType, QualType SrcType, Expr *SrcExpr, AssignmentAction Action, bool *Complained) {\n case IncompatibleVectors:\n if (getLangOpts().CPlusPlus) {\n DiagKind = diag::err_incompatible_vectors;"}} | |||
}, | }, | ||
[" | ["err_incomplete_array_member_init"]={ | ||
[ | [j]="array bound cannot be deduced from a default member initializer", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="array bound cannot be deduced from a default member initializer", | ||
[ | [f]=n, | ||
[ | [g]="array bound cannot be deduced from a default member initializer", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={"938f40b5aa98",1307812782,"Implement support for C++11 in-class initialization of non-static data members."}, | ||
[k]={{R,2672,"/// ParseCXXClassMemberDeclaration - Parse a C++ class member declaration.\n///\n/// member-declaration:\n/// decl-specifier-seq[opt] member-declarator-list[opt] \';\'\n/// function-definition \';\'[opt]\n/// ::[opt] nested-name-specifier template[opt] unqualified-id \';\'[TODO]\n/// using-declaration [TODO]\n/// [C++0x] static_assert-declaration\n/// template-declaration\n/// [GNU] \'__extension__\' member-declaration\n///\n/// member-declarator-list:\n/// member-declarator\n/// member-declarator-list \',\' member-declarator\n///\n/// member-declarator:\n/// declarator virt-specifier-seq[opt] pure-specifier[opt]\n/// [C++2a] declarator requires-clause\n/// declarator constant-initializer[opt]\n/// [C++11] declarator brace-or-equal-initializer[opt]\n/// identifier[opt] \':\' constant-expression\n///\n/// virt-specifier-seq:\n/// virt-specifier\n/// virt-specifier-seq virt-specifier\n///\n/// virt-specifier:\n/// override\n/// final\n/// [MS] sealed\n///\n/// pure-specifier:\n/// \'= 0\'\n///\n/// constant-initializer:\n/// \'=\' constant-expression\n///\nParser::DeclGroupPtrTy Parser::ParseCXXClassMemberDeclaration(AccessSpecifier AS, ParsedAttributes &AccessAttrs, const ParsedTemplateInfo &TemplateInfo, ParsingDeclRAIIObject *TemplateDiags) {\n while (true) {\n // Handle the initializer.\n if (HasInClassInit != ICIS_NoInit) {\n if (DeclaratorInfo.isArrayOfUnknownBound()) {\n Diag(Tok, diag::err_incomplete_array_member_init);"}} | |||
}, | }, | ||
[" | ["err_incomplete_base_class"]={ | ||
[ | [j]="base class has incomplete type", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="base class has incomplete type", | ||
[ | [f]=n, | ||
[ | [g]="base class has incomplete type", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{r,2323,"/// Check the validity of a C++ base class specifier.\n///\n/// \\returns a new CXXBaseSpecifier if well-formed, emits diagnostics\n/// and returns NULL otherwise.\nCXXBaseSpecifier *Sema::CheckBaseSpecifier(CXXRecordDecl *Class, SourceRange SpecifierRange, bool Virtual, AccessSpecifier Access, TypeSourceInfo *TInfo, SourceLocation EllipsisLoc) {\n if (RequireCompleteType(BaseLoc, BaseType, diag::err_incomplete_base_class, SpecifierRange)) {"}} | |||
}, | }, | ||
[" | ["err_incomplete_enum"]={ | ||
[ | [j]="enumeration A is incomplete", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="enumeration %0 is incomplete", | ||
[ | [f]=n, | ||
[ | [g]="enumeration (.*?) is incomplete", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"3dbcea8b957a",1615397021,"Reland [clang] Check unsupported types in expressions"}, | ||
[k]={{cb,277,"/// Require that the EnumDecl is completed with its enumerators defined or\n/// instantiated. SS, if provided, is the ScopeRef parsed.\n///\nbool Sema::RequireCompleteEnumDecl(EnumDecl *EnumD, SourceLocation L, CXXScopeSpec *SS) {\n if (SS) {\n } else {\n Diag(L, diag::err_incomplete_enum) << QualType(EnumD->getTypeForDecl(), 0);"}} | |||
}, | }, | ||
[" | ["err_incomplete_in_exception_spec"]={ | ||
[ | [j]="...incomplete type A is not allowed in exception specification", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%select{|pointer to |reference to }0incomplete type %1 is not allowed in exception specification", | ||
[ | [f]=n, | ||
[ | [g]="(?:|pointer to |reference to )incomplete type (.*?) is not allowed in exception specification", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"d643456d450a",1243620153,"Reject incomplete types in exception specs."}, | ||
[k]={{Hb,150,"/// CheckSpecifiedExceptionType - Check if the given type is valid in an\n/// exception specification. Incomplete types, or pointers to incomplete types\n/// other than void are not allowed.\n///\n/// \\param[in,out] T The exception type. This will be decayed to a pointer type\n/// when the input is an array or a function type.\nbool Sema::CheckSpecifiedExceptionType(QualType &T, SourceRange Range) {\n unsigned DiagID = diag::err_incomplete_in_exception_spec;"}} | |||
}, | }, | ||
[" | ["err_incomplete_member_access"]={ | ||
[ | [j]="member access into incomplete type A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="member access into incomplete type %0", | ||
[ | [f]=n, | ||
[ | [g]="member access into incomplete type (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"3fad61786e7c",1258435053,"Require the object type of a member access expression (\".\" or \"->\") to"}, | ||
[k]={{B,6655,"ExprResult Sema::ActOnStartCXXMemberReference(Scope *S, Expr *Base, SourceLocation OpLoc, tok::TokenKind OpKind, ParsedType &ObjectType, bool &MayBePseudoDestructor) {\n if (!BaseType->isDependentType() && !isThisOutsideMemberFunctionBody(BaseType) && RequireCompleteType(OpLoc, BaseType, diag::err_incomplete_member_access)) {"}} | |||
}, | }, | ||
[" | ["err_incomplete_nested_name_spec"]={ | ||
[c]= | [j]="incomplete type A named in nested name specifier", | ||
[d]= | [c]=l, | ||
[f]= | [d]=m, | ||
[ | [e]="incomplete type %0 named in nested name specifier", | ||
[b]= | [f]=n, | ||
[ | [g]="incomplete type (.*?) named in nested name specifier", | ||
[h]=a, | |||
[i]=o, | |||
[b]={x,1237025389,w}, | |||
[k]={{cb,227,"/// Require that the context specified by SS be complete.\n///\n/// If SS refers to a type, this routine checks whether the type is\n/// complete enough (or can be made complete enough) for name lookup\n/// into the DeclContext. A type that is not yet completed can be\n/// considered \"complete enough\" if it is a class/struct/union/enum\n/// that is currently being defined. Or, if we have a type that names\n/// a class template specialization that is not a complete type, we\n/// will attempt to instantiate that class template.\nbool Sema::RequireCompleteDeclContext(CXXScopeSpec &SS, DeclContext *DC) {\n if (RequireCompleteType(loc, type, diag::err_incomplete_nested_name_spec, SS.getRange())) {"},{cb,274,"/// Require that the EnumDecl is completed with its enumerators defined or\n/// instantiated. SS, if provided, is the ScopeRef parsed.\n///\nbool Sema::RequireCompleteEnumDecl(EnumDecl *EnumD, SourceLocation L, CXXScopeSpec *SS) {\n if (SS) {\n Diag(L, diag::err_incomplete_nested_name_spec) << QualType(EnumD->getTypeForDecl(), 0) << SS->getRange();"},{B,121,"ParsedType Sema::getConstructorName(IdentifierInfo &II, SourceLocation NameLoc, Scope *S, CXXScopeSpec &SS, bool EnteringContext) {\n if (!InjectedClassName) {\n if (!CurClass->isInvalidDecl()) {\n Diag(SS.getLastQualifierNameLoc(), diag::err_incomplete_nested_name_spec) << CurClass << SS.getRange();"}} | |||
}, | }, | ||
[" | ["err_incomplete_object_call"]={ | ||
[ | [j]="incomplete type in call to object of type A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="incomplete type in call to object of type %0", | ||
[ | [f]=n, | ||
[ | [g]="incomplete type in call to object of type (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"74ba25ca5a34",1256105919,"Improve diagnostics and template instantiation behavior when calling"}, | ||
[k]={{Ab,12635,"/// BuildCallToObjectOfClassType - Build a call to an object of class\n/// type (C++ [over.call.object]), which can end up invoking an\n/// overloaded function call operator (@c operator()) or performing a\n/// user-defined conversion on the object argument.\nExprResult Sema::BuildCallToObjectOfClassType(Scope *S, Expr *Obj, SourceLocation LParenLoc, MultiExprArg Args, SourceLocation RParenLoc) {\n if (RequireCompleteType(LParenLoc, Object.get()->getType(), diag::err_incomplete_object_call, Object.get()))"}} | |||
}, | }, | ||
[" | ["err_incomplete_receiver_type"]={ | ||
[c]= | [j]="incomplete receiver type A", | ||
[d]= | [c]=l, | ||
[f]= | [d]=m, | ||
[ | [e]="incomplete receiver type %0", | ||
[b]= | [f]=n, | ||
[ | [g]="incomplete receiver type (.*?)", | ||
[h]=a, | |||
[i]=o, | |||
[b]={"4b60a1594d2c",1383863694,"Re-instate contextual conversion to Objective-C pointers in message sends."}, | |||
[k]={{O,2345,"/// Build an Objective-C instance message expression.\n///\n/// This routine takes care of both normal instance messages and\n/// instance messages to the superclass instance.\n///\n/// \\param Receiver The expression that computes the object that will\n/// receive this message. This may be empty, in which case we are\n/// sending to the superclass instance and \\p SuperLoc must be a valid\n/// source location.\n///\n/// \\param ReceiverType The (static) type of the object receiving the\n/// message. When a \\p Receiver expression is provided, this is the\n/// same type as that expression. For a superclass instance send, this\n/// is a pointer to the type of the superclass.\n///\n/// \\param SuperLoc The location of the \"super\" keyword in a\n/// superclass instance message.\n///\n/// \\param Sel The selector to which the message is being sent.\n///\n/// \\param Method The method that this instance message is invoking, if\n/// already known.\n///\n/// \\param LBracLoc The location of the opening square bracket \']\'.\n///\n/// \\param RBracLoc The location of the closing square bracket \']\'.\n///\n/// \\param ArgsIn The message arguments.\nExprResult Sema::BuildInstanceMessage(Expr *Receiver, QualType ReceiverType, SourceLocation SuperLoc, Selector Sel, ObjCMethodDecl *Method, SourceLocation LBracLoc, ArrayRef<SourceLocation> SelectorLocs, SourceLocation RBracLoc, MultiExprArg ArgsIn, bool isImplicit) {\n // If we have a receiver expression, perform appropriate promotions\n // and determine receiver type.\n if (Receiver) {\n // If the receiver is an ObjC pointer, a block pointer, or an\n // __attribute__((NSObject)) pointer, we don\'t need to do any\n // special conversion in order to look up a receiver.\n if (ReceiverType->isObjCRetainableType()) {\n } else if (!getLangOpts().ObjCAutoRefCount && !Context.getObjCIdType().isNull() && (ReceiverType->isPointerType() || ReceiverType->isIntegerType())) {\n } else if (getLangOpts().CPlusPlus) {\n if (RequireCompleteType(Loc, Receiver->getType(), diag::err_incomplete_receiver_type))"},{E,3714,"ExprResult Sema::ActOnObjCAtSynchronizedOperand(SourceLocation atLoc, Expr *operand) {\n if (!type->isDependentType() && !type->isObjCObjectPointerType()) {\n if (!pointerType || !pointerType->getPointeeType()->isVoidType()) {\n if (getLangOpts().CPlusPlus) {\n if (RequireCompleteType(atLoc, type, diag::err_incomplete_receiver_type))"}} | |||
}, | }, | ||
[" | ["err_incomplete_synthesized_property"]={ | ||
[ | [j]="cannot synthesize property A with incomplete type B", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot synthesize property %0 with incomplete type %1", | ||
[ | [f]=n, | ||
[ | [g]="cannot synthesize property (.*?) with incomplete type (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"169ec35bb3b2",1335911166,"Add a missing RequireCompleteType call when synthesizing properties. <rdar://problem/11333367>."}, | ||
[k]={{Gb,1005,"/// ActOnPropertyImplDecl - This routine performs semantic checks and\n/// builds the AST node for a property implementation declaration; declared\n/// as \\@synthesize or \\@dynamic.\n///\nDecl *Sema::ActOnPropertyImplDecl(Scope *S, SourceLocation AtLoc, SourceLocation PropertyLoc, bool Synthesize, IdentifierInfo *PropertyId, IdentifierInfo *PropertyIvar, SourceLocation PropertyIvarLoc, ObjCPropertyQueryKind QueryKind) {\n // Check that we have a valid, previously declared ivar for @synthesize\n if (Synthesize) {\n if (RequireCompleteType(PropertyDiagLoc, PropertyIvarType, diag::err_incomplete_synthesized_property, property->getDeclName())) {"}} | |||
}, | }, | ||
[" | ["err_incomplete_type"]={ | ||
[ | [j]="incomplete type A where a complete type is required", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="incomplete type %0 where a complete type is required", | ||
[ | [f]=n, | ||
[ | [g]="incomplete type (.*?) where a complete type is required", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"a04f2ca19aaf",1267458985,"When looking for the instantiated declaration that corresponds to a"}, | ||
[k]={{"clang/lib/Sema/SemaCast.cpp",2806,"void CastOperation::CheckBuiltinBitCast() {\n if (Self.RequireCompleteType(OpRange.getBegin(), DestType, diag::err_typecheck_cast_to_incomplete) || Self.RequireCompleteType(OpRange.getBegin(), SrcType, diag::err_incomplete_type)) {"},{y,1696,"static ExprResult SemaBuiltinLaunder(Sema &S, CallExpr *TheCall) {\n if (S.RequireCompleteType(TheCall->getBeginLoc(), ParamTy->getPointeeType(), diag::err_incomplete_type))"},{y,6803,"ExprResult Sema::BuildAtomicExpr(SourceRange CallRange, SourceRange ExprRange, SourceLocation RParenLoc, MultiExprArg Args, AtomicExpr::AtomicOp Op, AtomicArgumentOrder ArgOrder) {\n // For an arithmetic operation, the implied arithmetic must be well-formed.\n if (Form == Arithmetic) {\n if (IsC11 && ValType->isPointerType() && RequireCompleteType(Ptr->getBeginLoc(), ValType->getPointeeType(), diag::err_incomplete_type)) {"},{y,13460,"static void CheckConditionalOperand(Sema &S, Expr *E, QualType T, SourceLocation CC, bool &ICContext) {\n // Diagnose incomplete type for second or third operand in C.\n if (!S.getLangOpts().CPlusPlus && E->getType()->isRecordType())\n S.RequireCompleteExprType(E, diag::err_incomplete_type);"},{eb,1178,"bool CoroutineStmtBuilder::makeNewAndDeleteExpr() {\n if (S.RequireCompleteType(Loc, PromiseType, diag::err_incomplete_type))"},{r,1191,"static bool checkMemberDecomposition(Sema &S, ArrayRef<BindingDecl *> Bindings, ValueDecl *Src, QualType DecompType, const CXXRecordDecl *OrigRD) {\n if (S.RequireCompleteType(Src->getLocation(), DecompType, diag::err_incomplete_type))"},{r,9988,"QualType Sema::CheckComparisonCategoryType(ComparisonCategoryType Kind, SourceLocation Loc, ComparisonCategoryUsage Usage) {\n if (Info && FullyCheckedComparisonCategories[static_cast<unsigned>(Kind)]) {\n if (RequireCompleteType(Loc, TyForDiags(Info), diag::err_incomplete_type))"},{r,10010,"QualType Sema::CheckComparisonCategoryType(ComparisonCategoryType Kind, SourceLocation Loc, ComparisonCategoryUsage Usage) {\n if (RequireCompleteType(Loc, TyForDiags(Info), diag::err_incomplete_type))"},{q,12638,"// C99 6.5.17\nstatic QualType CheckCommaOperands(Sema &S, ExprResult &LHS, ExprResult &RHS, SourceLocation Loc) {\n if (!S.getLangOpts().CPlusPlus) {\n if (!RHS.get()->getType()->isVoidType())\n S.RequireCompleteType(Loc, RHS.get()->getType(), diag::err_incomplete_type);"},{B,7115,"/// Perform the conversions required for an expression used in a\n/// context that ignores the result.\nExprResult Sema::IgnoredValueConversions(Expr *E) {\n if (!E->getType()->isVoidType())\n RequireCompleteType(E->getExprLoc(), E->getType(), diag::err_incomplete_type);"},{L,7232,"ExprResult Sema::TemporaryMaterializationConversion(Expr *E) {\n if (RequireCompleteType(E->getExprLoc(), T, diag::err_incomplete_type))"},{"clang/lib/Sema/SemaOpenMP.cpp",17146,"static bool checkTypeMappable(SourceLocation SL, SourceRange SR, Sema &SemaRef, DSAStackTy *Stack, QualType QTy, bool FullCheck = true) {\n if (SemaRef.RequireCompleteType(SL, QTy, diag::err_incomplete_type))"},{"clang/lib/Sema/SemaTemplateInstantiateDecl.cpp",5236,"/// Find the instantiation of the given declaration within the\n/// current instantiation.\n///\n/// This routine is intended to be used when \\p D is a declaration\n/// referenced from within a template, that needs to mapped into the\n/// corresponding declaration within an instantiation. For example,\n/// given:\n///\n/// \\code\n/// template<typename T>\n/// struct X {\n/// enum Kind {\n/// KnownValue = sizeof(T)\n/// };\n///\n/// bool getKind() const { return KnownValue; }\n/// };\n///\n/// template struct X<int>;\n/// \\endcode\n///\n/// In the instantiation of X<int>::getKind(), we need to map the \\p\n/// EnumConstantDecl for \\p KnownValue (which refers to\n/// X<T>::<Kind>::KnownValue) to its instantiation (X<int>::<Kind>::KnownValue).\n/// \\p FindInstantiatedDecl performs this mapping from within the instantiation\n/// of X<int>.\nNamedDecl *Sema::FindInstantiatedDecl(SourceLocation Loc, NamedDecl *D, const MultiLevelTemplateArgumentList &TemplateArgs, bool FindingInstantiatedContext) {\n if (ParentDC != D->getDeclContext()) {\n if (CXXRecordDecl *Spec = dyn_cast<CXXRecordDecl>(ParentDC)) {\n if (!Spec->isDependentContext()) {\n if (!Tag->isBeingDefined() && RequireCompleteType(Loc, T, diag::err_incomplete_type))"}} | |||
}, | }, | ||
[" | ["err_incomplete_type_objc_at_encode"]={ | ||
[ | [j]="\'@encode\' of incomplete type A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'@encode\' of incomplete type %0", | ||
[ | [f]=n, | ||
[ | [g]="\'@encode\' of incomplete type (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"7da04c636728",1305405159,"Emit an error when trying to @encode an incomplete type."}, | ||
[k]={{O,928,"ExprResult Sema::BuildObjCEncodeExpression(SourceLocation AtLoc, TypeSourceInfo *EncodedTypeInfo, SourceLocation RParenLoc) {\n if (EncodedType->isDependentType())\n else {\n if (!EncodedType->getAsArrayTypeUnsafe() && //// Incomplete array is handled.\n if (RequireCompleteType(AtLoc, EncodedType, diag::err_incomplete_type_objc_at_encode, EncodedTypeInfo->getTypeLoc()))"}} | |||
}, | }, | ||
[" | ["err_incomplete_type_used_in_type_trait_expr"]={ | ||
[c]= | [j]="incomplete type A used in type trait expression", | ||
[d]= | [c]=l, | ||
[f]= | [d]=m, | ||
[ | [e]="incomplete type %0 used in type trait expression", | ||
[b]= | [f]=n, | ||
[ | [g]="incomplete type (.*?) used in type trait expression", | ||
[h]=a, | |||
[i]=o, | |||
[b]={"1f9648da17c7",1246993562,"Some (most) type trait expressions require that the argument passed in is a complete type."}, | |||
[k]={{B,4129,"/// Check the completeness of a type in a unary type trait.\n///\n/// If the particular type trait requires a complete type, tries to complete\n/// it. If completing the type fails, a diagnostic is emitted and false\n/// returned. If completing the type succeeds or no completion was required,\n/// returns true.\nstatic bool CheckUnaryTypeTraitTypeCompleteness(Sema &S, TypeTrait UTT, SourceLocation Loc, QualType ArgTy) {\n case UTT_IsAbstract:\n if (const auto *RD = ArgTy->getAsCXXRecordDecl())\n if (!RD->isUnion())\n return !S.RequireCompleteType(Loc, ArgTy, diag::err_incomplete_type_used_in_type_trait_expr);"},{B,4137,"/// Check the completeness of a type in a unary type trait.\n///\n/// If the particular type trait requires a complete type, tries to complete\n/// it. If completing the type fails, a diagnostic is emitted and false\n/// returned. If completing the type succeeds or no completion was required,\n/// returns true.\nstatic bool CheckUnaryTypeTraitTypeCompleteness(Sema &S, TypeTrait UTT, SourceLocation Loc, QualType ArgTy) {\n case UTT_IsSealed:\n if (ArgTy->getAsCXXRecordDecl())\n return !S.RequireCompleteType(Loc, ArgTy, diag::err_incomplete_type_used_in_type_trait_expr);"},{B,4145,"/// Check the completeness of a type in a unary type trait.\n///\n/// If the particular type trait requires a complete type, tries to complete\n/// it. If completing the type fails, a diagnostic is emitted and false\n/// returned. If completing the type succeeds or no completion was required,\n/// returns true.\nstatic bool CheckUnaryTypeTraitTypeCompleteness(Sema &S, TypeTrait UTT, SourceLocation Loc, QualType ArgTy) {\n // LWG3823: T shall be an array type, a complete type, or cv void.\n case UTT_IsAggregate:\n return !S.RequireCompleteType(Loc, ArgTy, diag::err_incomplete_type_used_in_type_trait_expr);"},{B,4185,"/// Check the completeness of a type in a unary type trait.\n///\n/// If the particular type trait requires a complete type, tries to complete\n/// it. If completing the type fails, a diagnostic is emitted and false\n/// returned. If completing the type succeeds or no completion was required,\n/// returns true.\nstatic bool CheckUnaryTypeTraitTypeCompleteness(Sema &S, TypeTrait UTT, SourceLocation Loc, QualType ArgTy) {\n case UTT_HasUniqueObjectRepresentations:\n return !S.RequireCompleteType(Loc, ArgTy, diag::err_incomplete_type_used_in_type_trait_expr);"},{B,4675,"static bool EvaluateBooleanTypeTrait(Sema &S, TypeTrait Kind, SourceLocation KWLoc, ArrayRef<TypeSourceInfo *> Args, SourceLocation RParenLoc, bool IsDependent) {\n case clang::TT_IsTriviallyConstructible: {\n // Precondition: T and all types in the parameter pack Args shall be\n // complete types, (possibly cv-qualified) void, or arrays of\n // unknown bound.\n for (const auto *TSI : Args) {\n if (S.RequireCompleteType(KWLoc, ArgTy, diag::err_incomplete_type_used_in_type_trait_expr))"},{B,4865,"static bool EvaluateBinaryTypeTrait(Sema &Self, TypeTrait BTT, QualType LhsT, QualType RhsT, SourceLocation KeyLoc) {\n case BTT_IsBaseOf: {\n if (!rhsRecord || !lhsRecord) {\n if (Self.RequireCompleteType(KeyLoc, RhsT, diag::err_incomplete_type_used_in_type_trait_expr))"},{B,4887,"static bool EvaluateBinaryTypeTrait(Sema &Self, TypeTrait BTT, QualType LhsT, QualType RhsT, SourceLocation KeyLoc) {\n case BTT_IsBaseOf: {\n if (Self.RequireCompleteType(KeyLoc, RhsT, diag::err_incomplete_type_used_in_type_trait_expr))"},{B,4977,"static bool EvaluateBinaryTypeTrait(Sema &Self, TypeTrait BTT, QualType LhsT, QualType RhsT, SourceLocation KeyLoc) {\n case BTT_IsTriviallyAssignable: {\n if (!LhsT->isVoidType() && !LhsT->isIncompleteArrayType() && Self.RequireCompleteType(KeyLoc, LhsT, diag::err_incomplete_type_used_in_type_trait_expr))"},{B,4979,"static bool EvaluateBinaryTypeTrait(Sema &Self, TypeTrait BTT, QualType LhsT, QualType RhsT, SourceLocation KeyLoc) {\n case BTT_IsTriviallyAssignable: {\n if (!RhsT->isVoidType() && !RhsT->isIncompleteArrayType() && Self.RequireCompleteType(KeyLoc, RhsT, diag::err_incomplete_type_used_in_type_trait_expr))"}} | |||
}, | }, | ||
[" | ["err_incomplete_typeid"]={ | ||
[ | [j]="\'typeid\' of incomplete type A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'typeid\' of incomplete type %0", | ||
[ | [f]=n, | ||
[ | [g]="\'typeid\' of incomplete type (.*?)", | ||
[h]=a, | |||
[i]=o, | |||
[b]={"721fb2b6e405",1261602366,"Diagnose the use of incomplete types in C++ typeid expressions"}, | |||
[k]={{B,505,"/// Build a C++ typeid expression with a type operand.\nExprResult Sema::BuildCXXTypeId(QualType TypeInfoType, SourceLocation TypeidLoc, TypeSourceInfo *Operand, SourceLocation RParenLoc) {\n if (T->getAs<RecordType>() && RequireCompleteType(TypeidLoc, T, diag::err_incomplete_typeid))"},{B,534,"/// Build a C++ typeid expression with an expression operand.\nExprResult Sema::BuildCXXTypeId(QualType TypeInfoType, SourceLocation TypeidLoc, Expr *E, SourceLocation RParenLoc) {\n if (E && !E->isTypeDependent()) {\n if (const RecordType *RecordT = T->getAs<RecordType>()) {\n if (RequireCompleteType(TypeidLoc, T, diag::err_incomplete_typeid))"}} | |||
}, | }, | ||
[" | ["err_inconsistent_ivar_count"]={ | ||
[ | [j]="inconsistent number of instance variables specified", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="inconsistent number of instance variables specified", | ||
[ | [f]=n, | ||
[ | [g]="inconsistent number of instance variables specified", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"fff0674ae092",1385956221,"Fix inconsistent diag name"}, | ||
[k]={{hb,1806,"void Sema::CheckImplementationIvars(ObjCImplementationDecl *ImpDecl, ObjCIvarDecl **ivars, unsigned numIvars, SourceLocation RBrace) {\n if (numIvars > 0)\n Diag(ivars[j]->getLocation(), diag::err_inconsistent_ivar_count);"},{hb,1808,"void Sema::CheckImplementationIvars(ObjCImplementationDecl *ImpDecl, ObjCIvarDecl **ivars, unsigned numIvars, SourceLocation RBrace) {\n if (numIvars > 0)\n else if (IVI != IVE)\n Diag(IVI->getLocation(), diag::err_inconsistent_ivar_count);"}} | |||
}, | }, | ||
[" | ["err_incorrect_defaulted_consteval"]={ | ||
[ | [j]="defaulted declaration of ... cannot be consteval because implicit definition is not constexpr", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="defaulted declaration of %select{default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor}0 cannot be consteval because implicit definition is not constexpr", | ||
[ | [f]=n, | ||
[ | [g]="defaulted declaration of (?:default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor) cannot be consteval because implicit definition is not constexpr", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"796ed03b8412",1560502580,"[C++20] add Basic consteval specifier"}, | ||
[k]={{r,6609,"bool Sema::CheckExplicitlyDefaultedSpecialMember(CXXMethodDecl *MD, CXXSpecialMember CSM, SourceLocation DefaultLoc) {\n if ((getLangOpts().CPlusPlus20 || (getLangOpts().CPlusPlus14 ? !isa<CXXDestructorDecl>(MD) : isa<CXXConstructorDecl>(MD))) && MD->isConstexpr() && !Constexpr && MD->getTemplatedKind() == FunctionDecl::TK_NonTemplate) {\n Diag(MD->getBeginLoc(), MD->isConsteval() ? diag::err_incorrect_defaulted_consteval : diag::err_incorrect_defaulted_constexpr) << CSM;"}} | |||
}, | }, | ||
[" | ["err_incorrect_defaulted_constexpr"]={ | ||
[ | [j]="defaulted definition of ... is not constexpr", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="defaulted definition of %select{default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor}0 is not constexpr", | ||
[ | [f]=n, | ||
[ | [g]="defaulted definition of (?:default constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor) is not constexpr", | ||
[h]=a, | |||
[i]=o, | |||
[b]={"cc36f698afe0",1324520551,"PR11614: Mark defaulted special constructors as constexpr if their implicit"}, | |||
[k]={{r,6609,"bool Sema::CheckExplicitlyDefaultedSpecialMember(CXXMethodDecl *MD, CXXSpecialMember CSM, SourceLocation DefaultLoc) {\n if ((getLangOpts().CPlusPlus20 || (getLangOpts().CPlusPlus14 ? !isa<CXXDestructorDecl>(MD) : isa<CXXConstructorDecl>(MD))) && MD->isConstexpr() && !Constexpr && MD->getTemplatedKind() == FunctionDecl::TK_NonTemplate) {\n Diag(MD->getBeginLoc(), MD->isConsteval() ? diag::err_incorrect_defaulted_consteval : diag::err_incorrect_defaulted_constexpr) << CSM;"}} | |||
}, | }, | ||
[" | ["err_incorrect_number_of_vector_initializers"]={ | ||
[ | [j]="number of elements must be either one or match the size of the vector", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="number of elements must be either one or match the size of the vector", | ||
[ | [f]=n, | ||
[ | [g]="number of elements must be either one or match the size of the vector", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"28ccef788bb2",1301218360,"supported: AltiVec vector initialization with a single literal according to PIM section 2.5.1 - afte..."}, | ||
[k]={{q,7346,"ExprResult Sema::BuildVectorLiteral(SourceLocation LParenLoc, SourceLocation RParenLoc, Expr *E, TypeSourceInfo *TInfo) {\n if (ShouldSplatAltivecScalarInCast(VTy)) {\n // The number of initializers must be one or must match the size of the\n // vector. If a single value is specified in the initializer then it will\n // be replicated to all the components of the vector\n if (numExprs == 1) {\n } else if (numExprs < numElems) {\n Diag(E->getExprLoc(), diag::err_incorrect_number_of_vector_initializers);"}} | |||
}, | }, | ||
[" | ["err_increment_decrement_enum"]={ | ||
[ | [j]="cannot ... expression of enum type A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot %select{decrement|increment}0 expression of enum type %1", | ||
[ | [f]=n, | ||
[ | [g]="cannot (?:decrement|increment) expression of enum type (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"493df1a14f5d",1375926623,"Emit an error for enum increments and decrements in C++ mode."}, | ||
[k]={{q,12672,"/// CheckIncrementDecrementOperand - unlike most \"Check\" methods, this routine\n/// doesn\'t need to call UsualUnaryConversions or UsualArithmeticConversions.\nstatic QualType CheckIncrementDecrementOperand(Sema &S, Expr *Op, ExprValueKind &VK, ExprObjectKind &OK, SourceLocation OpLoc, bool IsInc, bool IsPrefix) {\n if (S.getLangOpts().CPlusPlus && ResType->isBooleanType()) {\n } else if (S.getLangOpts().CPlusPlus && ResType->isEnumeralType()) {\n S.Diag(OpLoc, diag::err_increment_decrement_enum) << IsInc << ResType;"}} | |||
}, | }, | ||
[" | ["err_indirect_goto_in_protected_scope"]={ | ||
[ | [j]="cannot jump from this ... goto statement to one of its possible targets", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot jump from this %select{indirect|asm}0 goto statement to one of its possible targets", | ||
[ | [f]=n, | ||
[ | [g]="cannot jump from this (?:indirect|asm) goto statement to one of its possible targets", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"0bf2dd2ed408",1240103126,"First half of jump scope checking for indirect goto."}, | ||
[k]={{lb,785,"/// Produce primary diagnostic for an indirect jump statement.\nstatic void DiagnoseIndirectOrAsmJumpStmt(Sema &S, Stmt *Jump, LabelDecl *Target, bool &Diagnosed) {\n S.Diag(Jump->getBeginLoc(), diag::err_indirect_goto_in_protected_scope) << IsAsmGoto;"}} | |||
}, | }, | ||
[" | ["err_indirect_goto_without_addrlabel"]={ | ||
[ | [j]="indirect goto in function with no address-of-label expressions", | ||
[d]= | [c]=l, | ||
[f]= | [d]=m, | ||
[ | [e]="indirect goto in function with no address-of-label expressions", | ||
[b]= | [f]=n, | ||
[ | [g]="indirect goto in function with no address\\-of\\-label expressions", | ||
[h]=a, | |||
[i]=o, | |||
[b]={"cf819ab38311",1273625893,"When checking scopes for indirect goto, be more permissive (but still safe)"}, | |||
[k]={{lb,667,"/// VerifyIndirectJumps - Verify whether any possible indirect goto jump might\n/// cross a protection boundary. Unlike direct jumps, indirect goto jumps\n/// count cleanups as protection boundaries: since there\'s no way to know where\n/// the jump is going, we can\'t implicitly run the right cleanups the way we\n/// can with direct jumps. Thus, an indirect/asm jump is \"trivial\" if it\n/// bypasses no initializations and no teardowns. More formally, an\n/// indirect/asm jump from A to B is trivial if the path out from A to DCA(A,B)\n/// is trivial and the path in from DCA(A,B) to B is trivial, where DCA(A,B) is\n/// the deepest common ancestor of A and B. Jump-triviality is transitive but\n/// asymmetric.\n///\n/// A path in is trivial if none of the entered scopes have an InDiag.\n/// A path out is trivial is none of the exited scopes have an OutDiag.\n///\n/// Under these definitions, this function checks that the indirect\n/// jump between A and B is trivial for every indirect goto statement A\n/// and every label B whose address was taken in the function.\nvoid JumpScopeChecker::VerifyIndirectJumps() {\n // If there aren\'t any address-of-label expressions in this function,\n // complain about the first indirect goto.\n if (IndirectJumpTargets.empty()) {\n S.Diag(IndirectJumps[0]->getBeginLoc(), diag::err_indirect_goto_without_addrlabel);"}} | |||
}, | }, | ||
[" | ["err_init_capture_deduction_failure"]={ | ||
[ | [j]="cannot deduce type for lambda capture A from initializer of type B", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot deduce type for lambda capture %0 from initializer of type %2", | ||
[ | [f]=n, | ||
[ | [g]="cannot deduce type for lambda capture (.*?) from initializer of type (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=S, | ||
[ | [b]={"ba71c0852340",1368685258,"First pass of semantic analysis for init-captures: check the initializer, build"}, | ||
[k]={{p,11181,"QualType Sema::deduceVarTypeFromInitializer(VarDecl *VDecl, DeclarationName Name, QualType Type, TypeSourceInfo *TSI, SourceRange Range, bool DirectInit, Expr *Init) {\n if (Result != TDK_Success && Result != TDK_AlreadyDiagnosed) {\n if (!IsInitCapture)\n else if (isa<InitListExpr>(Init))\n else\n Diag(Range.getBegin(), diag::err_init_capture_deduction_failure) << VN << TSI->getType() << (DeduceInit->getType().isNull() ? TSI->getType() : DeduceInit->getType()) << DeduceInit->getSourceRange();"},{"clang/lib/Sema/SemaTemplateDeduction.cpp",4214,"void Sema::DiagnoseAutoDeductionFailure(VarDecl *VDecl, Expr *Init) {\n if (isa<InitListExpr>(Init))\n else\n Diag(VDecl->getLocation(), VDecl->isInitCapture() ? diag::err_init_capture_deduction_failure : diag::err_auto_var_deduction_failure) << VDecl->getDeclName() << VDecl->getType() << Init->getType() << Init->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_init_capture_deduction_failure_from_init_list"]={ | ||
[ | [j]="cannot deduce type for lambda capture A from initializer list", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot deduce type for lambda capture %0 from initializer list", | ||
[ | [f]=n, | ||
[ | [g]="cannot deduce type for lambda capture (.*?) from initializer list", | ||
[ | [h]=a, | ||
[ | [i]=S, | ||
[ | [b]={"ba71c0852340",1368685258,"First pass of semantic analysis for init-captures: check the initializer, build"}, | ||
[k]={{p,11179,"QualType Sema::deduceVarTypeFromInitializer(VarDecl *VDecl, DeclarationName Name, QualType Type, TypeSourceInfo *TSI, SourceRange Range, bool DirectInit, Expr *Init) {\n if (Result != TDK_Success && Result != TDK_AlreadyDiagnosed) {\n if (!IsInitCapture)\n else if (isa<InitListExpr>(Init))\n Diag(Range.getBegin(), diag::err_init_capture_deduction_failure_from_init_list) << VN << (DeduceInit->getType().isNull() ? TSI->getType() : DeduceInit->getType()) << DeduceInit->getSourceRange();"},{"clang/lib/Sema/SemaTemplateDeduction.cpp",4212,"void Sema::DiagnoseAutoDeductionFailure(VarDecl *VDecl, Expr *Init) {\n if (isa<InitListExpr>(Init))\n Diag(VDecl->getLocation(), VDecl->isInitCapture() ? diag::err_init_capture_deduction_failure_from_init_list : diag::err_auto_var_deduction_failure_from_init_list) << VDecl->getDeclName() << VDecl->getType() << Init->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_init_capture_multiple_expressions"]={ | ||
[ | [j]="initializer for lambda capture A contains multiple expressions", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="initializer for lambda capture %0 contains multiple expressions", | ||
[ | [f]=n, | ||
[ | [g]="initializer for lambda capture (.*?) contains multiple expressions", | ||
[ | [h]=a, | ||
[ | [i]=S, | ||
[ | [b]={"ba71c0852340",1368685258,"First pass of semantic analysis for init-captures: check the initializer, build"}, | ||
[k]={{p,11145,"QualType Sema::deduceVarTypeFromInitializer(VarDecl *VDecl, DeclarationName Name, QualType Type, TypeSourceInfo *TSI, SourceRange Range, bool DirectInit, Expr *Init) {\n if (DeduceInits.size() > 1) {\n Diag(DeduceInits[1]->getBeginLoc(), IsInitCapture ? diag::err_init_capture_multiple_expressions : diag::err_auto_var_init_multiple_expressions) << VN << Type << Range;"}} | |||
}, | }, | ||
[" | ["err_init_capture_no_expression"]={ | ||
[ | [j]="initializer missing for lambda capture A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="initializer missing for lambda capture %0", | ||
[ | [f]=n, | ||
[ | [g]="initializer missing for lambda capture (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=S, | ||
[ | [b]={"ba71c0852340",1368685258,"First pass of semantic analysis for init-captures: check the initializer, build"}, | ||
[k]={{p,11140,"QualType Sema::deduceVarTypeFromInitializer(VarDecl *VDecl, DeclarationName Name, QualType Type, TypeSourceInfo *TSI, SourceRange Range, bool DirectInit, Expr *Init) {\n // Deduction only works if we have exactly one source expression.\n if (DeduceInits.empty()) {\n Diag(Init->getBeginLoc(), IsInitCapture ? diag::err_init_capture_no_expression : diag::err_auto_var_init_no_expression) << VN << Type << Range;"}} | |||
}, | }, | ||
[" | ["err_init_capture_paren_braces"]={ | ||
[ | [j]="cannot deduce type for lambda capture A from ... initializer list", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot deduce type for lambda capture %1 from %select{parenthesized|nested}0 initializer list", | ||
[ | [f]=n, | ||
[ | [g]="cannot deduce type for lambda capture (.*?) from (?:parenthesized|nested) initializer list", | ||
[ | [h]=a, | ||
[ | [i]=S, | ||
[ | [b]={"66204ecff985",1394646165,"DR1346: a parenthesized braced-init-list cannot be used as the initializer when"}, | ||
[k]={{p,11151,"QualType Sema::deduceVarTypeFromInitializer(VarDecl *VDecl, DeclarationName Name, QualType Type, TypeSourceInfo *TSI, SourceRange Range, bool DirectInit, Expr *Init) {\n if (DirectInit && isa<InitListExpr>(DeduceInit)) {\n Diag(Init->getBeginLoc(), IsInitCapture ? diag::err_init_capture_paren_braces : diag::err_auto_var_init_paren_braces) << isa<InitListExpr>(Init) << VN << Type << Range;"}} | |||
}, | }, | ||
[" | ["err_init_conversion_failed"]={ | ||
[ | [j]="cannot initialize ... of type A with an ... of type B...", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot initialize %select{a variable|a parameter|template parameter|return object|statement expression result|an exception object|a member subobject|an array element|a new value|a value|a base class|a constructor delegation|a vector element|a block element|a block element|a complex element|a lambda capture|a compound literal initializer|a related result|a parameter of CF audited function|a structured binding|a member subobject}0 %diff{of type $ with an %select{rvalue|lvalue}2 of type $|with an %select{rvalue|lvalue}2 of incompatible type}1,3%select{|: different classes%diff{ ($ vs $)|}5,6|: different number of parameters (%5 vs %6)|: type mismatch at %ordinal5 parameter%diff{ ($ vs $)|}6,7|: different return type%diff{ ($ vs $)|}5,6|: different qualifiers (%5 vs %6)|: different exception specifications}4", | ||
[ | [f]=n, | ||
[ | [g]="cannot initialize (?:a variable|a parameter|template parameter|return object|statement expression result|an exception object|a member subobject|an array element|a new value|a value|a base class|a constructor delegation|a vector element|a block element|a block element|a complex element|a lambda capture|a compound literal initializer|a related result|a parameter of CF audited function|a structured binding|a member subobject) (?:of type (.*?) with an (?:rvalue|lvalue) of type (.*?)|with an (?:rvalue|lvalue) of incompatible type)(?:|\\: different classes(?: \\((.*?) vs (.*?)\\)|)|\\: different number of parameters \\((.*?) vs (.*?)\\)|\\: type mismatch at (.*?) parameter(?: \\((.*?) vs (.*?)\\)|)|\\: different return type(?: \\((.*?) vs (.*?)\\)|)|\\: different qualifiers \\((.*?) vs (.*?)\\)|\\: different exception specifications)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"e1314a64b803",1261112541,"Switch the initialization required by return statements over to the"}, | ||
[k]={{L,8263,"bool InitializationSequence::Diagnose(Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, ArrayRef<Expr *> Args) {\n case FK_ConversionFailed: {\n PartialDiagnostic PDiag = S.PDiag(diag::err_init_conversion_failed) << (int)Entity.getKind() << DestType << OnlyArg->isLValue() << FromType << Args[0]->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_init_element_not_constant"]={ | ||
[ | [j]="initializer element is not a compile-time constant", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="initializer element is not a compile-time constant", | ||
[ | [f]=n, | ||
[ | [g]="initializer element is not a compile\\-time constant", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{p,10764,"bool Sema::CheckForConstantInitializer(Expr *Init, QualType DclT) {\n Diag(Culprit->getExprLoc(), diag::err_init_element_not_constant) << Culprit->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_init_for_function_type"]={ | ||
[ | [j]="cannot create object of function type A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot create object of function type %0", | ||
[ | [f]=n, | ||
[ | [g]="cannot create object of function type (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"49a6b6e91edf",1490318065,"Fix handling of initialization from parenthesized initializer list."}, | ||
[k]={{B,1386,"ExprResult Sema::BuildCXXTypeConstructExpr(TypeSourceInfo *TInfo, SourceLocation LParenOrBraceLoc, MultiExprArg Exprs, SourceLocation RParenOrBraceLoc, bool ListInitialization) {\n // Only construct objects with object types.\n // The standard doesn\'t explicitly forbid function types here, but that\'s an\n // obvious oversight, as there\'s no way to dynamically construct a function\n // in general.\n if (Ty->isFunctionType())\n return ExprError(Diag(TyBeginLoc, diag::err_init_for_function_type) << Ty << FullRange);"}} | |||
}, | }, | ||
[" | ["err_init_incomplete_type"]={ | ||
[ | [j]="initialization of incomplete type A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="initialization of incomplete type %0", | ||
[ | [f]=n, | ||
[ | [g]="initialization of incomplete type (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"3f4f03a23553",1274393522,"Add a new failure kind, FK_Incomplete, to InitializationSequence, to"}, | ||
[k]={{L,8394,"bool InitializationSequence::Diagnose(Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, ArrayRef<Expr *> Args) {\n case FK_Incomplete:\n S.RequireCompleteType(Kind.getLocation(), FailedIncompleteType, diag::err_init_incomplete_type);"}} | |||
}, | }, | ||
[" | ["err_init_list_bad_dest_type"]={ | ||
[ | [j]="...type A cannot be initialized with an initializer list", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%select{|non-aggregate }0type %1 cannot be initialized with an initializer list", | ||
[ | [f]=n, | ||
[ | [g]="(?:|non\\-aggregate )type (.*?) cannot be initialized with an initializer list", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"51e77d5ab0a0",1260467815,"Move initialization via initializer list over to InitializationSequences."}, | ||
[k]={{L,8302,"bool InitializationSequence::Diagnose(Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, ArrayRef<Expr *> Args) {\n case FK_InitListBadDestinationType:\n S.Diag(Kind.getLocation(), diag::err_init_list_bad_dest_type) << (DestType->isRecordType()) << DestType << Args[0]->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_init_list_bin_op"]={ | ||
[ | [j]="initializer list cannot be used on the ... hand side of operator \'A\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="initializer list cannot be used on the %select{left|right}0 hand side of operator \'%1\'", | ||
[ | [f]=n, | ||
[ | [g]="initializer list cannot be used on the (?:left|right) hand side of operator \'(.*?)\'", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={"5e0cac784a57",1330570757,"Reject \'a = {0} = {0}\' rather than parsing it as \'(a = {0}) = {0}\'. Also"}, | ||
[k]={{Fb,422,"/// Parse a binary expression that starts with \\p LHS and has a\n/// precedence of at least \\p MinPrec.\nExprResult Parser::ParseRHSOfBinaryExpression(ExprResult LHS, prec::Level MinPrec) {\n while (true) {\n if (NextTokPrec == prec::Conditional) {\n if (getLangOpts().CPlusPlus11 && Tok.is(tok::l_brace)) {\n if (!TernaryMiddle.isInvalid()) {\n Diag(BraceLoc, diag::err_init_list_bin_op) << /*RHS*/ 1 << PP.getSpelling(OpToken) << Actions.getExprRange(TernaryMiddle.get());"},{Fb,516,"/// Parse a binary expression that starts with \\p LHS and has a\n/// precedence of at least \\p MinPrec.\nExprResult Parser::ParseRHSOfBinaryExpression(ExprResult LHS, prec::Level MinPrec) {\n while (true) {\n // Get the precedence of the operator to the right of the RHS. If it binds\n // more tightly with RHS than we do, evaluate it completely first.\n if (ThisPrec < NextTokPrec || (ThisPrec == NextTokPrec && isRightAssoc)) {\n if (!RHS.isInvalid() && RHSIsInitList) {\n Diag(Tok, diag::err_init_list_bin_op) << /*LHS*/ 0 << PP.getSpelling(Tok) << Actions.getExprRange(RHS.get());"},{Fb,543,"/// Parse a binary expression that starts with \\p LHS and has a\n/// precedence of at least \\p MinPrec.\nExprResult Parser::ParseRHSOfBinaryExpression(ExprResult LHS, prec::Level MinPrec) {\n while (true) {\n if (!RHS.isInvalid() && RHSIsInitList) {\n if (ThisPrec == prec::Assignment) {\n } else if (ColonLoc.isValid()) {\n Diag(ColonLoc, diag::err_init_list_bin_op) << /*RHS*/ 1 << \":\" << Actions.getExprRange(RHS.get());"},{Fb,546,"/// Parse a binary expression that starts with \\p LHS and has a\n/// precedence of at least \\p MinPrec.\nExprResult Parser::ParseRHSOfBinaryExpression(ExprResult LHS, prec::Level MinPrec) {\n while (true) {\n if (!RHS.isInvalid() && RHSIsInitList) {\n if (ThisPrec == prec::Assignment) {\n } else if (ColonLoc.isValid()) {\n } else {\n Diag(OpToken, diag::err_init_list_bin_op) << /*RHS*/ 1 << PP.getSpelling(OpToken) << Actions.getExprRange(RHS.get());"}} | |||
}, | }, | ||
[" | ["err_init_method_bad_return_type"]={ | ||
[ | [j]="init methods must return an object pointer type, not A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="init methods must return an object pointer type, not %0", | ||
[ | [f]=n, | ||
[ | [g]="init methods must return an object pointer type, not (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"31168b077c36",1308178962,"Automatic Reference Counting."}, | ||
[k]={{v,2612,"static void handleObjCMethodFamilyAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n if (F == ObjCMethodFamilyAttr::OMF_init && !M->getReturnType()->isObjCObjectPointerType()) {\n S.Diag(M->getLocation(), diag::err_init_method_bad_return_type) << M->getReturnType();"}} | |||
}, | }, | ||
[" | ["err_init_non_aggr_init_list"]={ | ||
[ | [j]="initialization of non-aggregate type A with an initializer list", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="initialization of non-aggregate type %0 with an initializer list", | ||
[ | [f]=n, | ||
[ | [g]="initialization of non\\-aggregate type (.*?) with an initializer list", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={z,1236199783,A}, | ||
[k]={{L,1380,"void InitListChecker::CheckReferenceType(const InitializedEntity &Entity, InitListExpr *IList, QualType DeclType, unsigned &Index, InitListExpr *StructuredList, unsigned &StructuredIndex) {\n if (isa<InitListExpr>(expr) && !SemaRef.getLangOpts().CPlusPlus11) {\n if (!VerifyOnly)\n SemaRef.Diag(IList->getBeginLoc(), diag::err_init_non_aggr_init_list) << DeclType << IList->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_init_objc_class"]={ | ||
[ | [j]="cannot initialize Objective-C class type A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot initialize Objective-C class type %0", | ||
[ | [f]=n, | ||
[ | [g]="cannot initialize Objective\\-C class type (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"50ec46d4af82",1272911077,"Complain when we try to initialize an object of Objective-C class type"}, | ||
[k]={{L,1094,"void InitListChecker::CheckListElementTypes(const InitializedEntity &Entity, InitListExpr *IList, QualType &DeclType, bool SubobjectIsDesignatorContext, unsigned &Index, InitListExpr *StructuredList, unsigned &StructuredIndex, bool TopLevelObject) {\n if (DeclType->isAnyComplexType() && SubobjectIsDesignatorContext) {\n } else if (DeclType->isScalarType()) {\n } else if (DeclType->isVectorType()) {\n } else if (const RecordDecl *RD = getRecordDecl(DeclType)) {\n } else if (DeclType->isArrayType()) {\n } else if (DeclType->isVoidType() || DeclType->isFunctionType()) {\n } else if (DeclType->isReferenceType()) {\n } else if (DeclType->isObjCObjectType()) {\n if (!VerifyOnly)\n SemaRef.Diag(IList->getBeginLoc(), diag::err_init_objc_class) << DeclType;"}} | |||
}, | }, | ||
[" | ["err_init_priority_object_attr"]={ | ||
[ | [j]="can only use \'init_priority\' attribute on file-scope definitions of objects of class type", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="can only use \'init_priority\' attribute on file-scope definitions of objects of class type", | ||
[ | [f]=n, | ||
[ | [g]="can only use \'init_priority\' attribute on file\\-scope definitions of objects of class type", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"0bf5ee74c473",1276902893,"More Sema Check and a test case for init_priority attr."}, | ||
[k]={{v,3370,"/// Handle __attribute__((init_priority(priority))) attributes based on\n/// http://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Attributes.html\nstatic void handleInitPriorityAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n if (S.getCurFunctionOrMethodDecl()) {\n S.Diag(AL.getLoc(), diag::err_init_priority_object_attr);"},{v,3378,"/// Handle __attribute__((init_priority(priority))) attributes based on\n/// http://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Attributes.html\nstatic void handleInitPriorityAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n if (!T->getAs<RecordType>()) {\n S.Diag(AL.getLoc(), diag::err_init_priority_object_attr);"}} | |||
}, | }, | ||
[" | ["err_init_reference_member_uninitialized"]={ | ||
[ | [j]="reference member of type A uninitialized", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="reference member of type %0 uninitialized", | ||
[ | [f]=n, | ||
[ | [g]="reference member of type (.*?) uninitialized", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={z,1236199783,A}, | ||
[k]={{L,567,"void InitListChecker::FillInEmptyInitForField(unsigned Init, FieldDecl *Field, const InitializedEntity &ParentEntity, InitListExpr *ILE, bool &RequiresSecondPass, bool FillWithNoInit) {\n if (Init >= NumInits || !ILE->getInit(Init)) {\n if (Field->getType()->isReferenceType()) {\n if (!VerifyOnly) {\n SemaRef.Diag(Loc, diag::err_init_reference_member_uninitialized) << Field->getType() << (ILE->isSyntacticForm() ? ILE : ILE->getSyntacticForm())->getSourceRange();"},{L,1370,"void InitListChecker::CheckReferenceType(const InitializedEntity &Entity, InitListExpr *IList, QualType DeclType, unsigned &Index, InitListExpr *StructuredList, unsigned &StructuredIndex) {\n if (Index >= IList->getNumInits()) {\n // FIXME: It would be wonderful if we could point at the actual member. In\n // general, it would be useful to pass location information down the stack,\n // so that we know the location (or decl) of the \"current object\" being\n // initialized.\n if (!VerifyOnly)\n SemaRef.Diag(IList->getBeginLoc(), diag::err_init_reference_member_uninitialized) << DeclType << IList->getSourceRange();"},{L,4756,"static void TryOrBuildParenListInitialization(Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, ArrayRef<Expr *> Args, InitializationSequence &Sequence, bool VerifyOnly, ExprResult *Result = nullptr) {\n if (const ArrayType *AT = S.getASTContext().getAsArrayType(Entity.getType())) {\n } else if (auto *RT = Entity.getType()->getAs<RecordType>()) {\n for (FieldDecl *FD : RD->fields()) {\n if (EntityIndexToProcess < Args.size()) {\n } else {\n // We\'ve processed all of the args, but there are still members that\n // have to be initialized.\n if (FD->hasInClassInitializer()) {\n } else {\n // C++ [dcl.init]p17.6.2.2\n // The remaining elements...otherwise are value initialzed\n if (FD->getType()->isReferenceType()) {\n if (!VerifyOnly) {\n S.Diag(SR.getEnd(), diag::err_init_reference_member_uninitialized) << FD->getType() << SR;"}} | |||
}, | }, | ||
[" | ["err_initializer_overrides_destructed"]={ | ||
[ | [j]="initializer would partially override prior initialization of object of type A with non-trivial destruction", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="initializer would partially override prior initialization of object of type %1 with non-trivial destruction", | ||
[ | [f]=n, | ||
[ | [g]="initializer would partially override prior initialization of object of type (.*?) with non\\-trivial destruction", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"5030928d60a1",1567205575,"[c++20] Implement semantic restrictions for C++20 designated"}, | ||
[k]={{L,340,"/// Semantic checking for initializer lists.\n///\n/// The InitListChecker class contains a set of routines that each\n/// handle the initialization of a certain kind of entity, e.g.,\n/// arrays, vectors, struct/union types, scalars, etc. The\n/// InitListChecker itself performs a recursive walk of the subobject\n/// structure of the type to be initialized, while stepping through\n/// the initializer list one element at a time. The IList and Index\n/// parameters to each of the Check* routines contain the active\n/// (syntactic) initializer list and the index into that initializer\n/// list that represents the current initializer. Each routine is\n/// responsible for moving that Index forward as it consumes elements.\n///\n/// Each Check* routine also has a StructuredList/StructuredIndex\n/// arguments, which contains the current \"structured\" (semantic)\n/// initializer list and the index into that initializer list where we\n/// are copying initializers as we map them over to the semantic\n/// list. Once we have completed our recursive walk of the subobject\n/// structure, we will have constructed a full semantic initializer\n/// list.\n///\n/// C99 designators cause changes in the initializer list traversal,\n/// because they make the initialization \"jump\" into a specific\n/// subobject and then continue the initialization from that\n/// point. CheckDesignatedInitializer() recursively steps into the\n/// designated subobject and manages backing out the recursion to\n/// initialize the subobjects after the one designated.\n///\n/// If an initializer list contains any designators, we build a placeholder\n/// structured list even in \'verify only\' mode, so that we can track which\n/// elements need \'empty\' initializtion.\nclass InitListChecker {\n /// Diagnose that OldInit (or part thereof) has been overridden by NewInit.\n void diagnoseInitOverride(Expr *OldInit, SourceRange NewInitRange, bool UnionOverride = false, bool FullyOverwritten = true) {\n if (InOverloadResolution && SemaRef.getLangOpts().CPlusPlus) {\n } else if (OldInit->getType().isDestructedType() && !FullyOverwritten) {\n DiagID = diag::err_initializer_overrides_destructed;"}} | |||
}, | }, | ||
[" | ["err_initializer_string_for_char_array_too_long"]={ | ||
[ | [j]="initializer-string for char array is too long, array size is A but initializer has size B (including the null terminating character)", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="initializer-string for char array is too long, array size is %0 but initializer has size %1 (including the null terminating character)", | ||
[ | [f]=n, | ||
[ | [g]="initializer\\-string for char array is too long, array size is (.*?) but initializer has size (.*?) \\(including the null terminating character\\)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"554eba9c0873",1302481425,"PR9669: implement correct checking for [dcl.init.string]p2."}, | ||
[k]={{L,226,"static void CheckStringInit(Expr *Str, QualType &DeclT, const ArrayType *AT, Sema &S) {\n // We have an array of character type with known size. However,\n // the size may be smaller or larger than the string we are initializing.\n // FIXME: Avoid truncation for 64-bit length strings.\n if (S.getLangOpts().CPlusPlus) {\n // [dcl.init.string]p2\n if (StrLength > CAT->getSize().getZExtValue())\n S.Diag(Str->getBeginLoc(), diag::err_initializer_string_for_char_array_too_long) << CAT->getSize().getZExtValue() << StrLength << Str->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_inline_decl_follows_def"]={ | ||
[ | [j]="inline declaration of A follows non-inline definition", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="inline declaration of %0 follows non-inline definition", | ||
[ | [f]=n, | ||
[ | [g]="inline declaration of (.*?) follows non\\-inline definition", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"ee4f4025c3e7",1396161894,"Sema: Implement DR317"}, | ||
[k]={{p,4197,"/// MergeVarDecl - We just parsed a variable \'New\' which has the same name\n/// and scope as a previous declaration \'Old\'. Figure out how to resolve this\n/// situation, merging decls or emitting diagnostics as appropriate.\n///\n/// Tentative definition rules (C99 6.9.2p2) are checked by\n/// FinalizeDeclaratorGroup. Unfortunately, we can\'t analyze tentative\n/// definitions here, since the initializer hasn\'t been attached.\n///\nvoid Sema::MergeVarDecl(VarDecl *New, LookupResult &Previous) {\n if (New->isInline() && !Old->getMostRecentDecl()->isInline()) {\n if (VarDecl *Def = Old->getDefinition()) {\n Diag(New->getLocation(), diag::err_inline_decl_follows_def) << New;"},{r,614,"/// MergeCXXFunctionDecl - Merge two declarations of the same C++\n/// function, once we already know that they have the same\n/// type. Subroutine of MergeFunctionDecl. Returns true if there was an\n/// error, false otherwise.\nbool Sema::MergeCXXFunctionDecl(FunctionDecl *New, FunctionDecl *Old, Scope *S) {\n // C++11 [dcl.constexpr]p1: If any declaration of a function or function\n // template has a constexpr specifier then all its declarations shall\n // contain the constexpr specifier.\n if (New->getConstexprKind() != Old->getConstexprKind()) {\n } else if (!Old->getMostRecentDecl()->isInlined() && New->isInlined() && Old->isDefined(Def) &&\n Diag(New->getLocation(), diag::err_inline_decl_follows_def) << New;"}} | |||
}, | }, | ||
[" | ["err_inline_declaration_block_scope"]={ | ||
[ | [j]="inline declaration of A not allowed in block scope", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="inline declaration of %0 not allowed in block scope", | ||
[ | [f]=n, | ||
[ | [g]="inline declaration of (.*?) not allowed in block scope", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"2588691a6960",1281095050,"Diagnose the use of \"inline\" on block-scope function declarations in"}, | ||
[k]={{p,6853,"NamedDecl *Sema::ActOnVariableDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamLists, bool &AddToScope, ArrayRef<BindingDecl *> Bindings) {\n if (D.getDeclSpec().isInlineSpecified()) {\n if (!getLangOpts().CPlusPlus) {\n } else if (CurContext->isFunctionOrMethod()) {\n Diag(D.getDeclSpec().getInlineSpecLoc(), diag::err_inline_declaration_block_scope) << Name << FixItHint::CreateRemoval(D.getDeclSpec().getInlineSpecLoc());"},{p,8709,"NamedDecl *Sema::ActOnFunctionDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamListsRef, bool &AddToScope) {\n if (getLangOpts().CPlusPlus) {\n // C++ [dcl.fct.spec]p3:\n // The inline specifier shall not appear on a block scope function\n // declaration.\n if (isInline && !NewFD->isInvalidDecl()) {\n if (CurContext->isFunctionOrMethod()) {\n Diag(D.getDeclSpec().getInlineSpecLoc(), diag::err_inline_declaration_block_scope) << Name << FixItHint::CreateRemoval(D.getDeclSpec().getInlineSpecLoc());"}} | |||
}, | }, | ||
[" | ["err_inline_main"]={ | ||
[ | [j]="\'main\' is not allowed to be declared inline", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'main\' is not allowed to be declared inline", | ||
[ | [f]=n, | ||
[ | [g]="\'main\' is not allowed to be declared inline", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"d937bf13d461",1315463584,"Adding FixIts to static/inline main declaration diagnostics."}, | ||
[k]={{p,10534,"void Sema::CheckMain(FunctionDecl *FD, const DeclSpec &DS) {\n if (FD->isInlineSpecified())\n Diag(DS.getInlineSpecLoc(), diag::err_inline_main) << FixItHint::CreateRemoval(DS.getInlineSpecLoc());"}} | |||
}, | }, | ||
[" | ["err_inline_namespace_alias"]={ | ||
[ | [j]="namespace alias cannot be inline", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="namespace alias cannot be inline", | ||
[ | [f]=n, | ||
[ | [g]="namespace alias cannot be inline", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={"6766794c0b91",1282950766,"Parser support for inline namespaces"}, | ||
[k]={{R,137,"/// ParseNamespace - We know that the current token is a namespace keyword. This\n/// may either be a top level namespace or a block-level namespace alias. If\n/// there was an inline keyword, it has already been parsed.\n///\n/// namespace-definition: [C++: namespace.def]\n/// named-namespace-definition\n/// unnamed-namespace-definition\n/// nested-namespace-definition\n///\n/// named-namespace-definition:\n/// \'inline\'[opt] \'namespace\' attributes[opt] identifier \'{\'\n/// namespace-body \'}\'\n///\n/// unnamed-namespace-definition:\n/// \'inline\'[opt] \'namespace\' attributes[opt] \'{\' namespace-body \'}\'\n///\n/// nested-namespace-definition:\n/// \'namespace\' enclosing-namespace-specifier \'::\' \'inline\'[opt]\n/// identifier \'{\' namespace-body \'}\'\n///\n/// enclosing-namespace-specifier:\n/// identifier\n/// enclosing-namespace-specifier \'::\' \'inline\'[opt] identifier\n///\n/// namespace-alias-definition: [C++ 7.3.2: namespace.alias]\n/// \'namespace\' identifier \'=\' qualified-namespace-specifier \';\'\n///\nParser::DeclGroupPtrTy Parser::ParseNamespace(DeclaratorContext Context, SourceLocation &DeclEnd, SourceLocation InlineLoc) {\n if (Tok.is(tok::equal)) {\n if (InlineLoc.isValid())\n Diag(InlineLoc, diag::err_inline_namespace_alias) << FixItHint::CreateRemoval(InlineLoc);"}} | |||
}, | }, | ||
[" | ["err_inline_namespace_mismatch"]={ | ||
[ | [j]="non-inline namespace cannot be reopened as inline", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="non-inline namespace cannot be reopened as inline", | ||
[ | [f]=n, | ||
[ | [g]="non\\-inline namespace cannot be reopened as inline", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"b5c2baa2d7a2",1283214996,"Enable inline namespaces in the AST."}, | ||
[k]={{r,9765,"/// Diagnose a mismatch in \'inline\' qualifiers when a namespace is\n/// reopened.\nstatic void DiagnoseNamespaceInlineMismatch(Sema &S, SourceLocation KeywordLoc, SourceLocation Loc, IdentifierInfo *II, bool *IsInline, NamespaceDecl *PrevNS) {\n if (PrevNS->isInline())\n else\n S.Diag(Loc, diag::err_inline_namespace_mismatch);"}} | |||
}, | }, | ||
[" | ["err_inline_namespace_std"]={ | ||
[ | [j]="cannot declare the namespace \'std\' to be inline", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot declare the namespace \'std\' to be inline", | ||
[ | [f]=n, | ||
[ | [g]="cannot declare the namespace \'std\' to be inline", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"bed75faf7d76",1690219823,"[Clang] Reject programs declaring namespace std to be inline"}, | ||
[k]={{r,9793,"/// ActOnStartNamespaceDef - This is called at the start of a namespace\n/// definition.\nDecl *Sema::ActOnStartNamespaceDef(Scope *NamespcScope, SourceLocation InlineLoc, SourceLocation NamespaceLoc, SourceLocation IdentLoc, IdentifierInfo *II, SourceLocation LBrace, const ParsedAttributesView &AttrList, UsingDirectiveDecl *&UD, bool IsNested) {\n if (II) {\n // C++ [namespace.std]p7:\n // A translation unit shall not declare namespace std to be an inline\n // namespace (9.8.2).\n //\n // Precondition: the std namespace is in the file scope and is declared to\n // be inline\n auto DiagnoseInlineStdNS = [&]() {\n Diag(InlineLoc, diag::err_inline_namespace_std) << SourceRange(InlineLoc, InlineLoc.getLocWithOffset(6));"}} | |||
}, | }, | ||
[" | ["err_inline_nested_namespace_definition"]={ | ||
[ | [j]="nested namespace definition cannot be \'inline\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="nested namespace definition cannot be \'inline\'", | ||
[ | [f]=n, | ||
[ | [g]="nested namespace definition cannot be \'inline\'", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={"13307f5f2429",1415425054,"[c++1z] Implement nested-namespace-definitions."}, | ||
[k]={{R,160,"/// ParseNamespace - We know that the current token is a namespace keyword. This\n/// may either be a top level namespace or a block-level namespace alias. If\n/// there was an inline keyword, it has already been parsed.\n///\n/// namespace-definition: [C++: namespace.def]\n/// named-namespace-definition\n/// unnamed-namespace-definition\n/// nested-namespace-definition\n///\n/// named-namespace-definition:\n/// \'inline\'[opt] \'namespace\' attributes[opt] identifier \'{\'\n/// namespace-body \'}\'\n///\n/// unnamed-namespace-definition:\n/// \'inline\'[opt] \'namespace\' attributes[opt] \'{\' namespace-body \'}\'\n///\n/// nested-namespace-definition:\n/// \'namespace\' enclosing-namespace-specifier \'::\' \'inline\'[opt]\n/// identifier \'{\' namespace-body \'}\'\n///\n/// enclosing-namespace-specifier:\n/// identifier\n/// enclosing-namespace-specifier \'::\' \'inline\'[opt] identifier\n///\n/// namespace-alias-definition: [C++ 7.3.2: namespace.alias]\n/// \'namespace\' identifier \'=\' qualified-namespace-specifier \';\'\n///\nParser::DeclGroupPtrTy Parser::ParseNamespace(DeclaratorContext Context, SourceLocation &DeclEnd, SourceLocation InlineLoc) {\n if (ExtraNSs.empty()) {\n } else if (InlineLoc.isValid()) {\n Diag(InlineLoc, diag::err_inline_nested_namespace_definition);"}} | |||
}, | }, | ||
[" | ["err_inline_non_function"]={ | ||
[ | [j]="\'inline\' can only appear on functions...", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'inline\' can only appear on functions%select{| and non-local variables}0", | ||
[ | [f]=n, | ||
[ | [g]="\'inline\' can only appear on functions(?:| and non\\-local variables)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"574c74537027",1239133077,"Diagnose uses of function specifiers on declarations which don\'t declare"}, | ||
[k]={{p,4562,"/// ParsedFreeStandingDeclSpec - This method is invoked when a declspec with\n/// no declarator (e.g. \"struct foo;\") is parsed. It also accepts template\n/// parameters to cope with template friend declarations.\nDecl *Sema::ParsedFreeStandingDeclSpec(Scope *S, AccessSpecifier AS, DeclSpec &DS, const ParsedAttributesView &DeclAttrs, MultiTemplateParamsArg TemplateParams, bool IsExplicitInstantiation, RecordDecl *&AnonRecord) {\n if (DS.isInlineSpecified())\n Diag(DS.getInlineSpecLoc(), diag::err_inline_non_function) << getLangOpts().CPlusPlus17;"},{p,5922,"NamedDecl *Sema::ActOnTypedefDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous) {\n if (D.getDeclSpec().isInlineSpecified())\n Diag(D.getDeclSpec().getInlineSpecLoc(), diag::err_inline_non_function) << getLangOpts().CPlusPlus17;"},{p,6850,"NamedDecl *Sema::ActOnVariableDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamLists, bool &AddToScope, ArrayRef<BindingDecl *> Bindings) {\n if (D.getDeclSpec().isInlineSpecified()) {\n if (!getLangOpts().CPlusPlus) {\n Diag(D.getDeclSpec().getInlineSpecLoc(), diag::err_inline_non_function) << 0;"},{p,12883,"/// ActOnParamDeclarator - Called from Parser::ParseFunctionDeclarator()\n/// to introduce parameters into function prototype scope.\nDecl *Sema::ActOnParamDeclarator(Scope *S, Declarator &D) {\n if (DS.isInlineSpecified())\n Diag(DS.getInlineSpecLoc(), diag::err_inline_non_function) << getLangOpts().CPlusPlus17;"},{p,15760,"/// HandleField - Analyze a field of a C struct or a C++ data member.\n///\nFieldDecl *Sema::HandleField(Scope *S, RecordDecl *Record, SourceLocation DeclStart, Declarator &D, Expr *BitWidth, InClassInitStyle InitStyle, AccessSpecifier AS) {\n if (D.getDeclSpec().isInlineSpecified())\n Diag(D.getDeclSpec().getInlineSpecLoc(), diag::err_inline_non_function) << getLangOpts().CPlusPlus17;"},{r,16115,"/// HandleMSProperty - Analyze a __delcspec(property) field of a C++ class.\n///\nMSPropertyDecl *Sema::HandleMSProperty(Scope *S, RecordDecl *Record, SourceLocation DeclStart, Declarator &D, Expr *BitWidth, InClassInitStyle InitStyle, AccessSpecifier AS, const ParsedAttr &MSPropertyAttr) {\n if (D.getDeclSpec().isInlineSpecified())\n Diag(D.getDeclSpec().getInlineSpecLoc(), diag::err_inline_non_function) << getLangOpts().CPlusPlus17;"},{hb,4332,"Decl *Sema::ActOnObjCExceptionDecl(Scope *S, Declarator &D) {\n if (DS.isInlineSpecified())\n Diag(DS.getInlineSpecLoc(), diag::err_inline_non_function) << getLangOpts().CPlusPlus17;"}} | |||
}, | }, | ||
[" | ["err_int_to_block_pointer"]={ | ||
[ | [j]="invalid block pointer conversion ...", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="invalid block pointer conversion %select{%diff{assigning to $ from $|assigning to different types}0,1|%diff{passing $ to parameter of type $|passing to parameter of different type}0,1|%diff{returning $ from a function with result type $|returning from function with different return type}0,1|%diff{converting $ to type $|converting between types}0,1|%diff{initializing $ with an expression of type $|initializing with expression of different type}0,1|%diff{sending $ to parameter of type $|sending to parameter of different type}0,1|%diff{casting $ to type $|casting between types}0,1}2", | ||
[ | [f]=n, | ||
[ | [g]="invalid block pointer conversion (?:(?:assigning to (.*?) from (.*?)|assigning to different types)|(?:passing (.*?) to parameter of type (.*?)|passing to parameter of different type)|(?:returning (.*?) from a function with result type (.*?)|returning from function with different return type)|(?:converting (.*?) to type (.*?)|converting between types)|(?:initializing (.*?) with an expression of type (.*?)|initializing with expression of different type)|(?:sending (.*?) to parameter of type (.*?)|sending to parameter of different type)|(?:casting (.*?) to type (.*?)|casting between types))", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{q,15325,"bool Sema::DiagnoseAssignmentResult(AssignConvertType ConvTy, SourceLocation Loc, QualType DstType, QualType SrcType, Expr *SrcExpr, AssignmentAction Action, bool *Complained) {\n case IntToBlockPointer:\n DiagKind = diag::err_int_to_block_pointer;"}} | |||
}, | }, | ||
[" | ["err_integer_literal_too_large"]={ | ||
[ | [j]="integer literal is too large to be represented in any ...integer type", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="integer literal is too large to be represented in any %select{signed |}0integer type", | ||
[ | [f]=n, | ||
[ | [g]="integer literal is too large to be represented in any (?:signed |)integer type", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"31f42318d833",1406213483,"Improving the \"integer constant too large\" diagnostics based on post-commit feedback from Richard Sm..."}, | ||
[k]={{"clang/lib/Lex/PPExpressions.cpp",322,"/// EvaluateValue - Evaluate the token PeekTok (and any others needed) and\n/// return the computed value in Result. Return true if there was an error\n/// parsing. This function also returns information about the form of the\n/// expression in DT. See above for information on what DT means.\n///\n/// If ValueLive is false, then this value is being evaluated in a context where\n/// the result is not used. As such, avoid diagnostics that relate to\n/// evaluation.\nstatic bool EvaluateValue(PPValue &Result, Token &PeekTok, DefinedTracker &DT, bool ValueLive, Preprocessor &PP) {\n case tok::numeric_constant: {\n // Parse the integer literal into Result.\n if (Literal.GetIntegerValue(Result.Val)) {\n // Overflow parsing integer literal.\n if (ValueLive)\n PP.Diag(PeekTok, diag::err_integer_literal_too_large) << /* Unsigned */ 1;"},{q,3422,"ExprResult Sema::ActOnNumericConstant(const Token &Tok, Scope *UDLScope) {\n if (Literal.hasUDSuffix()) {\n case LOLR_Cooked: {\n if (Literal.isFloatingLiteral()) {\n } else {\n if (Literal.GetIntegerValue(ResultVal))\n Diag(Tok.getLocation(), diag::err_integer_literal_too_large) << /* Unsigned */ 1;"},{q,3567,"ExprResult Sema::ActOnNumericConstant(const Token &Tok, Scope *UDLScope) {\n if (Literal.isFixedPointLiteral()) {\n } else if (Literal.isFloatingLiteral()) {\n } else if (!Literal.isIntegerLiteral()) {\n } else {\n if (Literal.GetIntegerValue(ResultVal)) {\n Diag(Tok.getLocation(), diag::err_integer_literal_too_large) << /* Unsigned */ 1;"},{q,3604,"ExprResult Sema::ActOnNumericConstant(const Token &Tok, Scope *UDLScope) {\n if (Literal.isFixedPointLiteral()) {\n } else if (Literal.isFloatingLiteral()) {\n } else if (!Literal.isIntegerLiteral()) {\n } else {\n if (Literal.GetIntegerValue(ResultVal)) {\n } else {\n // Bit-precise integer literals are automagically-sized based on the\n // width required by the literal.\n if (Literal.isBitInt) {\n if (Width > MaxBitIntWidth) {\n Diag(Tok.getLocation(), diag::err_integer_literal_too_large) << Literal.isUnsigned;"}} | |||
}, | }, | ||
[" | ["err_integer_sequence_integral_element_type"]={ | ||
[ | [j]="integer sequences must have integral element type", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="integer sequences must have integral element type", | ||
[ | [f]=n, | ||
[ | [g]="integer sequences must have integral element type", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"d9b1a4fb710d",1446608430,"[Sema] Implement __make_integer_seq"}, | ||
[k]={{K,3067,"static QualType checkBuiltinTemplateIdType(Sema &SemaRef, BuiltinTemplateDecl *BTD, ArrayRef<TemplateArgument> Converted, SourceLocation TemplateLoc, TemplateArgumentListInfo &TemplateArgs) {\n case BTK__make_integer_seq: {\n // C++14 [inteseq.intseq]p1:\n // T shall be an integer type.\n if (!OrigType->isDependentType() && !OrigType->isIntegralType(Context)) {\n SemaRef.Diag(TemplateArgs[1].getLocation(), diag::err_integer_sequence_integral_element_type);"}} | |||
}, | }, | ||
[" | ["err_integer_sequence_negative_length"]={ | ||
[ | [j]="integer sequences must have non-negative sequence length", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="integer sequences must have non-negative sequence length", | ||
[ | [f]=n, | ||
[ | [g]="integer sequences must have non\\-negative sequence length", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"d9b1a4fb710d",1446608430,"[Sema] Implement __make_integer_seq"}, | ||
[k]={{K,3089,"static QualType checkBuiltinTemplateIdType(Sema &SemaRef, BuiltinTemplateDecl *BTD, ArrayRef<TemplateArgument> Converted, SourceLocation TemplateLoc, TemplateArgumentListInfo &TemplateArgs) {\n case BTK__make_integer_seq: {\n if (llvm::APSInt NumArgs = NumArgsArg.getAsIntegral(); NumArgs >= 0) {\n } else {\n SemaRef.Diag(TemplateArgs[2].getLocation(), diag::err_integer_sequence_negative_length);"}} | |||
}, | }, | ||
[" | ["err_introducing_special_friend"]={ | ||
[ | [j]="must use a qualified name when declaring a ... as a friend", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%plural{[0,2]:must use a qualified name when declaring|3:cannot declare}0 a %select{constructor|destructor|conversion operator|deduction guide}0 as a friend", | ||
[ | [f]=n, | ||
[ | [g]="(?:must use a qualified name when declaring|cannot declare) a (?:constructor|destructor|conversion operator|deduction guide) as a friend", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"07e91c04ba33",1249524943,"First pass at friend semantics."}, | ||
[k]={{r,15117,"NamedDecl *Sema::ActOnFriendFunctionDecl(Scope *S, Declarator &D, MultiTemplateParamsArg TemplateParams) {\n if (!DC->isRecord()) {\n // This implies that it has to be an operator or function.\n if (DiagArg >= 0) {\n Diag(Loc, diag::err_introducing_special_friend) << DiagArg;"}} | |||
}, | }, | ||
[" | ["err_invalid_asm_cast_lvalue"]={ | ||
[ | [j]="invalid use of a cast in a inline asm context requiring an lvalue: remove the cast or build with -fheinous-gnu-extensions", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="invalid use of a cast in a inline asm context requiring an lvalue: remove the cast or build with -fheinous-gnu-extensions", | ||
[ | [f]=n, | ||
[ | [g]="invalid use of a cast in a inline asm context requiring an lvalue\\: remove the cast or build with \\-fheinous\\-gnu\\-extensions", | ||
[ | [h]=a, | ||
[ | [i]=sb, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{"clang/lib/Sema/SemaStmtAsm.cpp",73,"/// Emit a warning about usage of \"noop\"-like casts for lvalues (GNU extension)\n/// and fix the argument with removing LValueToRValue cast from the expression.\nstatic void emitAndFixInvalidAsmCastLValue(const Expr *LVal, Expr *BadArgument, Sema &S) {\n if (!S.getLangOpts().HeinousExtensions) {\n S.Diag(LVal->getBeginLoc(), diag::err_invalid_asm_cast_lvalue) << BadArgument->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_invalid_asm_value_for_constraint"]={ | ||
[ | [j]="value \'A\' out of range for constraint \'B\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="value \'%0\' out of range for constraint \'%1\'", | ||
[ | [f]=n, | ||
[ | [g]="value \'(.*?)\' out of range for constraint \'(.*?)\'", | ||
[ | [h]=a, | ||
[ | [i]=sb, | ||
[i | [b]={"a2823578e6c5",1420518394,"Sema: analyze I,J,K,M,N,O constraints"}, | ||
[k]={{"clang/lib/Sema/SemaStmtAsm.cpp",363,"StmtResult Sema::ActOnGCCAsmStmt(SourceLocation AsmLoc, bool IsSimple, bool IsVolatile, unsigned NumOutputs, unsigned NumInputs, IdentifierInfo **Names, MultiExprArg constraints, MultiExprArg Exprs, Expr *asmString, MultiExprArg clobbers, unsigned NumLabels, SourceLocation RParenLoc) {\n for (unsigned i = NumOutputs, e = NumOutputs + NumInputs; i != e; i++) {\n // Only allow void types for memory constraints.\n if (Info.allowsMemory() && !Info.allowsRegister()) {\n } else {\n if (Info.requiresImmediateConstant() && !Info.allowsRegister()) {\n if (!InputExpr->isValueDependent()) {\n if (InputExpr->EvaluateAsRValue(EVResult, Context, true)) {\n if (EVResult.Val.toIntegralConstant(IntResult, InputExpr->getType(), Context))\n if (!Info.isValidAsmImmediate(IntResult))\n return StmtError(Diag(InputExpr->getBeginLoc(), diag::err_invalid_asm_value_for_constraint) << toString(IntResult, 10) << Info.getConstraintStr() << InputExpr->getSourceRange());"}} | |||
}, | }, | ||
[" | ["err_invalid_astype_of_different_size"]={ | ||
[ | [j]="invalid reinterpretation: sizes of A and B must match", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="invalid reinterpretation: sizes of %0 and %1 must match", | ||
[ | [f]=n, | ||
[ | [g]="invalid reinterpretation\\: sizes of (.*?) and (.*?) must match", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"55808c1026bd",1307148467,"Add support for builtin astype:"}, | ||
[k]={{q,6294,"/// Create a new AsTypeExpr node (bitcast) from the arguments.\nExprResult Sema::BuildAsTypeExpr(Expr *E, QualType DestTy, SourceLocation BuiltinLoc, SourceLocation RParenLoc) {\n if (!SrcTy->isDependentType() && Context.getTypeSize(DestTy) != Context.getTypeSize(SrcTy))\n return ExprError(Diag(BuiltinLoc, diag::err_invalid_astype_of_different_size) << DestTy << SrcTy << E->getSourceRange());"}} | |||
}, | }, | ||
[" | ["err_invalid_base_in_interface"]={ | ||
[ | [j]="interface type cannot inherit from ... A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="interface type cannot inherit from %select{struct|non-public interface|class}0 %1", | ||
[ | [f]=n, | ||
[ | [g]="interface type cannot inherit from (?:struct|non\\-public interface|class) (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"db632ac004ae",1348558359,"Fix for r163013 regression and further __interface enhancement."}, | ||
[k]={{r,2488,"/// Performs the actual work of attaching the given base class\n/// specifiers to a C++ class.\nbool Sema::AttachBaseSpecifiers(CXXRecordDecl *Class, MutableArrayRef<CXXBaseSpecifier *> Bases) {\n for (unsigned idx = 0; idx < Bases.size(); ++idx) {\n if (KnownBase) {\n } else {\n if (const RecordType *Record = NewBaseType->getAs<RecordType>()) {\n if (Class->isInterface() && (!RD->isInterfaceLike() || KnownBase->getAccessSpecifier() != AS_public)) {\n Diag(KnownBase->getBeginLoc(), diag::err_invalid_base_in_interface) << getRecordDiagFromTagKind(RD->getTagKind()) << RD << RD->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_invalid_branch_protection_spec"]={ | ||
[ | [j]="invalid or misplaced branch protection specification \'A\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="invalid or misplaced branch protection specification \'%0\'", | ||
[ | [f]=n, | ||
[ | [g]="invalid or misplaced branch protection specification \'(.*?)\'", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={yb,1573050950,vb}, | ||
[k]={{v,3026,"// Check for things we\'d like to warn about. Multiversioning issues are\n// handled later in the process, once we know how many exist.\nbool Sema::checkTargetAttr(SourceLocation LiteralLoc, StringRef AttrStr) {\n if (!Context.getTargetInfo().validateBranchProtection(ParsedAttrs.BranchProtection, ParsedAttrs.CPU, BPI, DiagMsg)) {\n return Diag(LiteralLoc, diag::err_invalid_branch_protection_spec) << DiagMsg;"}} | |||
}, | }, | ||
[" | ["err_invalid_char_raw_delim"]={ | ||
[ | [j]="invalid character \'A\' character in raw string delimiter; use PREFIX( )PREFIX to delimit raw string", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="invalid character \'%0\' character in raw string delimiter; use PREFIX( )PREFIX to delimit raw string", | ||
[ | [f]=n, | ||
[ | [g]="invalid character \'(.*?)\' character in raw string delimiter; use PREFIX\\( \\)PREFIX to delimit raw string", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={"54edccafc5e3",1313035575,"Add support for C++0x raw string literals."}, | ||
[k]={{"clang/lib/Lex/Lexer.cpp",1957,"/// LexRawStringLiteral - Lex the remainder of a raw string literal, after\n/// having lexed R\", LR\", u8R\", uR\", or UR\".\nbool Lexer::LexRawStringLiteral(Token &Result, const char *CurPtr, tok::TokenKind Kind) {\n // If the last character was not a \'(\', then we didn\'t lex a valid delimiter.\n if (CurPtr[PrefixLen] != \'(\') {\n if (!isLexingRawMode()) {\n if (PrefixLen == 16) {\n } else {\n Diag(PrefixEnd, diag::err_invalid_char_raw_delim) << StringRef(PrefixEnd, 1);"}} | |||
}, | }, | ||
[" | ["err_invalid_character_to_charify"]={ | ||
[ | [j]="invalid argument to convert to character", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="invalid argument to convert to character", | ||
[ | [f]=n, | ||
[ | [g]="invalid argument to convert to character", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={z,1236199783,A}, | ||
[k]={{"clang/lib/Lex/MacroArgs.cpp",280,"/// StringifyArgument - Implement C99 6.10.3.2p2, converting a sequence of\n/// tokens into the literal string token that should be produced by the C #\n/// preprocessor operator. If Charify is true, then it should be turned into\n/// a character literal for the Microsoft charize (#@) extension.\n///\nToken MacroArgs::StringifyArgument(const Token *ArgToks, Preprocessor &PP, bool Charify, SourceLocation ExpansionLocStart, SourceLocation ExpansionLocEnd) {\n // If this is the charify operation and the result is not a legal character\n // constant, diagnose it.\n if (Charify) {\n if (isBad) {\n PP.Diag(ArgTokStart[0], diag::err_invalid_character_to_charify);"}} | |||
}, | }, | ||
[" | ["err_invalid_character_udl"]={ | ||
[ | [j]="character literal with user-defined suffix cannot be used here", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="character literal with user-defined suffix cannot be used here", | ||
[ | [f]=n, | ||
[ | [g]="character literal with user\\-defined suffix cannot be used here", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={"bcc22fc4e1b2",1331280036,"Support for raw and template forms of numeric user-defined literals,"}, | ||
[k]={{q,3282,"ExprResult Sema::ActOnCharacterConstant(const Token &Tok, Scope *UDLScope) {\n // Make sure we\'re allowed user-defined literals here.\n if (!UDLScope)\n return ExprError(Diag(UDSuffixLoc, diag::err_invalid_character_udl));"}} | |||
}, | }, | ||
[" | ["err_invalid_collection_element"]={ | ||
[ | [j]="collection element of type A is not an Objective-C object", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="collection element of type %0 is not an Objective-C object", | ||
[ | [f]=n, | ||
[ | [g]="collection element of type (.*?) is not an Objective\\-C object", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"e65b086e07a6",1331064356,"Add clang support for new Objective-C literal syntax for NSDictionary, NSArray,"}, | ||
[k]={{O,404,"/// Check that the given expression is a valid element of an Objective-C\n/// collection literal.\nstatic ExprResult CheckObjCCollectionLiteralElement(Sema &S, Expr *Element, QualType T, bool ArrayLiteral = false) {\n // Make sure that we have an Objective-C pointer type or block.\n if (!Element->getType()->isObjCObjectPointerType() && !Element->getType()->isBlockPointerType()) {\n if (!Recovered) {\n S.Diag(Element->getBeginLoc(), diag::err_invalid_collection_element) << Element->getType();"}} | |||
}, | }, | ||
[" | ["err_invalid_complex_spec"]={ | ||
[ | [j]="\'_Complex A\' is invalid", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'_Complex %0\' is invalid", | ||
[ | [f]=n, | ||
[ | [g]="\'_Complex (.*?)\' is invalid", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={z,1236199783,A}, | ||
[k]={{G,1187,"/// Finish - This does final analysis of the declspec, rejecting things like\n/// \"_Imaginary\" (lacking an FP type). After calling this method, DeclSpec is\n/// guaranteed to be self-consistent, even if an error occurred.\nvoid DeclSpec::Finish(Sema &S, const PrintingPolicy &Policy) {\n // TODO: if the implementation does not implement _Complex or _Imaginary,\n // disallow their use. Need information about the backend.\n if (TypeSpecComplex != TSC_unspecified) {\n if (TypeSpecType == TST_unspecified) {\n } else if (TypeSpecType == TST_int || TypeSpecType == TST_char || TypeSpecType == TST_bitint) {\n } else if (TypeSpecType != TST_float && TypeSpecType != TST_double && TypeSpecType != TST_float128 && TypeSpecType != TST_float16 && TypeSpecType != TST_ibm128) {\n S.Diag(TSCLoc, diag::err_invalid_complex_spec) << getSpecifierName((TST)TypeSpecType, Policy);"},{y,7868,"/// Perform semantic analysis for a call to __builtin_complex.\nbool Sema::SemaBuiltinComplex(CallExpr *TheCall) {\n // We don\'t allow _Complex _Float16 nor _Complex __fp16 as type specifiers;\n // don\'t allow this builtin to form those types either.\n // FIXME: Should we allow these types?\n if (Real->getType()->isFloat16Type())\n return Diag(TheCall->getBeginLoc(), diag::err_invalid_complex_spec) << \"_Float16\";"},{y,7870,"/// Perform semantic analysis for a call to __builtin_complex.\nbool Sema::SemaBuiltinComplex(CallExpr *TheCall) {\n if (Real->getType()->isHalfType())\n return Diag(TheCall->getBeginLoc(), diag::err_invalid_complex_spec) << \"half\";"}} | |||
}, | }, | ||
[" | ["err_invalid_consteval_call"]={ | ||
[ | [j]="call to ... function A is not a constant expression", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="call to %select{immediate|consteval}1 function %q0 is not a constant expression", | ||
[ | [f]=n, | ||
[ | [g]="call to (?:immediate|consteval) function (.*?) is not a constant expression", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"1228d42ddab8",1576809732,"[OpenMP][Part 2] Use reusable OpenMP context/traits handling"}, | ||
[k]={{q,15833,"static void EvaluateAndDiagnoseImmediateInvocation(Sema &SemaRef, Sema::ImmediateInvocationCandidate Candidate) {\n if (!Result || !Notes.empty()) {\n SemaRef.Diag(CE->getBeginLoc(), diag::err_invalid_consteval_call) << FD << FD->isConsteval();"}} | |||
}, | }, | ||
[" | ["err_invalid_consteval_decl_kind"]={ | ||
[ | [j]="A cannot be declared consteval", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%0 cannot be declared consteval", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) cannot be declared consteval", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"1228d42ddab8",1576809732,"[OpenMP][Part 2] Use reusable OpenMP context/traits handling"}, | ||
[k]={{p,8745,"NamedDecl *Sema::ActOnFunctionDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamListsRef, bool &AddToScope) {\n if (getLangOpts().CPlusPlus) {\n if (ConstexprKind != ConstexprSpecKind::Unspecified) {\n // C++20 [dcl.constexpr]p2: An allocation function, or a\n // deallocation function shall not be declared with the consteval\n // specifier.\n if (ConstexprKind == ConstexprSpecKind::Consteval && (NewFD->getOverloadedOperator() == OO_New || NewFD->getOverloadedOperator() == OO_Array_New || NewFD->getOverloadedOperator() == OO_Delete || NewFD->getOverloadedOperator() == OO_Array_Delete)) {\n Diag(D.getDeclSpec().getConstexprSpecLoc(), diag::err_invalid_consteval_decl_kind) << NewFD;"}} | |||
}, | }, | ||
[" | ["err_invalid_consteval_take_address"]={ | ||
[ | [j]="cannot take address of ... ... A outside of an immediate invocation", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot take address of %select{immediate|consteval}2 %select{function|call operator of}1 %0 outside of an immediate invocation", | ||
[ | [f]=n, | ||
[ | [g]="cannot take address of (?:immediate|consteval) (?:function|call operator of) (.*?) outside of an immediate invocation", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"1228d42ddab8",1576809732,"[OpenMP][Part 2] Use reusable OpenMP context/traits handling"}, | ||
[k]={{q,15986,"static void HandleImmediateInvocations(Sema &SemaRef, Sema::ExpressionEvaluationContextRecord &Rec) {\n for (auto *DR : Rec.ReferenceToConsteval) {\n if (!Rec.InImmediateEscalatingFunctionContext || (SemaRef.inTemplateInstantiation() && !ImmediateEscalating)) {\n SemaRef.Diag(DR->getBeginLoc(), diag::err_invalid_consteval_take_address) << ND << isa<CXXRecordDecl>(ND) << FD->isConsteval();"}} | |||
}, | }, | ||
[" | ["err_invalid_constexpr"]={ | ||
[ | [j]="... cannot be ...", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%select{function parameter|typedef}0 cannot be %select{<ERROR>|constexpr|consteval|constinit}1", | ||
[ | [f]=n, | ||
[ | [g]="(?:function parameter|typedef) cannot be (?:constexpr|consteval|constinit)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"a77a0a6bf221",1313442247,"Track in the AST whether a function is constexpr."}, | ||
[k]={{p,5924,"NamedDecl *Sema::ActOnTypedefDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous) {\n if (D.getDeclSpec().hasConstexprSpecifier())\n Diag(D.getDeclSpec().getConstexprSpecLoc(), diag::err_invalid_constexpr) << 1 << static_cast<int>(D.getDeclSpec().getConstexprSpecifier());"},{p,12885,"/// ActOnParamDeclarator - Called from Parser::ParseFunctionDeclarator()\n/// to introduce parameters into function prototype scope.\nDecl *Sema::ActOnParamDeclarator(Scope *S, Declarator &D) {\n if (DS.hasConstexprSpecifier())\n Diag(DS.getConstexprSpecLoc(), diag::err_invalid_constexpr) << 0 << static_cast<int>(D.getDeclSpec().getConstexprSpecifier());"}} | |||
}, | }, | ||
[" | ["err_invalid_constexpr_member"]={ | ||
[ | [j]="non-static data member cannot be constexpr...", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="non-static data member cannot be constexpr%select{; did you intend to make it %select{const|static}0?|}1", | ||
[ | [f]=n, | ||
[ | [g]="non\\-static data member cannot be constexpr(?:; did you intend to make it (?:const|static)\\?|)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"35506f82025c",1359508938,"Provide a fixit for constexpr non-static data members."}, | ||
[k]={{r,2986,"/// ActOnCXXMemberDeclarator - This is invoked when a C++ class member\n/// declarator is parsed. \'AS\' is the access specifier, \'BW\' specifies the\n/// bitfield width if there is one, \'InitExpr\' specifies the initializer if\n/// one has been parsed, and \'InitStyle\' is set if an in-class initializer is\n/// present (but parsing it has been deferred).\nNamedDecl *Sema::ActOnCXXMemberDeclarator(Scope *S, AccessSpecifier AS, Declarator &D, MultiTemplateParamsArg TemplateParameterLists, Expr *BW, const VirtSpecifiers &VS, InClassInitStyle InitStyle) {\n if (DS.hasConstexprSpecifier() && isInstField) {\n SemaDiagnosticBuilder B = Diag(DS.getConstexprSpecLoc(), diag::err_invalid_constexpr_member);"}} | |||
}, | }, | ||
[" | ["err_invalid_constexpr_var_decl"]={ | ||
[ | [j]="constexpr variable declaration must be a definition", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="constexpr variable declaration must be a definition", | ||
[ | [f]=n, | ||
[ | [g]="constexpr variable declaration must be a definition", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"2316cd8b798b",1317323497,"constexpr: semantic checking for constexpr variables."}, | ||
[k]={{p,11958,"void Sema::ActOnUninitializedDecl(Decl *RealDecl) {\n if (VarDecl *Var = dyn_cast<VarDecl>(RealDecl)) {\n // C++11 [class.static.data]p3: A static data member can be declared with\n // the constexpr specifier; if so, its declaration shall specify\n // a brace-or-equal-initializer.\n // C++11 [dcl.constexpr]p1: The constexpr specifier shall be applied only to\n // the definition of a variable [...] or the declaration of a static data\n // member.\n if (Var->isConstexpr() && !Var->isThisDeclarationADefinition() && !Var->isThisDeclarationADemotedDefinition()) {\n if (Var->isStaticDataMember()) {\n } else {\n Diag(Var->getLocation(), diag::err_invalid_constexpr_var_decl);"}} | |||
}, | }, | ||
[" | ["err_invalid_conversion_between_ext_vectors"]={ | ||
[ | [j]="invalid conversion between ext-vector type A and B", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="invalid conversion between ext-vector type %0 and %1", | ||
[ | [f]=n, | ||
[ | [g]="invalid conversion between ext\\-vector type (.*?) and (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"c69b740df42c",1245977428,"OpenCL 1.0 support: explicit casts to ext-vector types"}, | ||
[k]={{q,7215,"ExprResult Sema::CheckExtVectorCast(SourceRange R, QualType DestTy, Expr *CastExpr, CastKind &Kind) {\n // If SrcTy is a VectorType, the total size must match to explicitly cast to\n // an ExtVectorType.\n // In OpenCL, casts between vectors of different types are not allowed.\n // (See OpenCL 6.2).\n if (SrcTy->isVectorType()) {\n if (!areLaxCompatibleVectorTypes(SrcTy, DestTy) || (getLangOpts().OpenCL && !Context.hasSameUnqualifiedType(DestTy, SrcTy))) {\n Diag(R.getBegin(), diag::err_invalid_conversion_between_ext_vectors) << DestTy << SrcTy << R;"}} | |||
}, | }, | ||
[" | ["err_invalid_conversion_between_matrix_and_type"]={ | ||
[ | [j]="conversion between matrix type A and incompatible type B is not allowed", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="conversion between matrix type %0 and incompatible type %1 is not allowed", | ||
[ | [f]=n, | ||
[ | [g]="conversion between matrix type (.*?) and incompatible type (.*?) is not allowed", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={Z,1607502387,Y}, | ||
[k]={{q,7151,"bool Sema::CheckMatrixCast(SourceRange R, QualType DestTy, QualType SrcTy, CastKind &Kind) {\n if (SrcTy->isMatrixType() && DestTy->isMatrixType()) {\n } else if (SrcTy->isMatrixType()) {\n return Diag(R.getBegin(), diag::err_invalid_conversion_between_matrix_and_type) << SrcTy << DestTy << R;"},{q,7153,"bool Sema::CheckMatrixCast(SourceRange R, QualType DestTy, QualType SrcTy, CastKind &Kind) {\n if (SrcTy->isMatrixType() && DestTy->isMatrixType()) {\n } else if (SrcTy->isMatrixType()) {\n } else if (DestTy->isMatrixType()) {\n return Diag(R.getBegin(), diag::err_invalid_conversion_between_matrix_and_type) << DestTy << SrcTy << R;"}} | |||
}, | }, | ||
[" | ["err_invalid_conversion_between_matrixes"]={ | ||
[ | [j]="conversion between matrix types A and B of different size is not allowed", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="conversion between matrix types%diff{ $ and $|}0,1 of different size is not allowed", | ||
[ | [f]=n, | ||
[ | [g]="conversion between matrix types(?: (.*?) and (.*?)|) of different size is not allowed", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={Z,1607502387,Y}, | ||
[k]={{q,7148,"bool Sema::CheckMatrixCast(SourceRange R, QualType DestTy, QualType SrcTy, CastKind &Kind) {\n if (SrcTy->isMatrixType() && DestTy->isMatrixType()) {\n if (!areMatrixTypesOfTheSameDimension(SrcTy, DestTy)) {\n return Diag(R.getBegin(), diag::err_invalid_conversion_between_matrixes) << DestTy << SrcTy << R;"}} | |||
}, | }, | ||
[" | ["err_invalid_conversion_between_vector_and_integer"]={ | ||
[ | [j]="invalid conversion between vector type A and integer type B of different size", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="invalid conversion between vector type %0 and integer type %1 of different size", | ||
[ | [f]=n, | ||
[ | [g]="invalid conversion between vector type (.*?) and integer type (.*?) of different size", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{"clang/lib/Sema/SemaCast.cpp",2331,"bool Sema::CheckAltivecInitFromScalar(SourceRange R, QualType VecTy, QualType SrcTy) {\n if (this->getLangOpts().AltiVec && SrcCompatGCC) {\n this->Diag(R.getBegin(), diag::err_invalid_conversion_between_vector_and_integer) << VecTy << SrcTy << R;"},{q,7165,"bool Sema::CheckVectorCast(SourceRange R, QualType VectorTy, QualType Ty, CastKind &Kind) {\n if (Ty->isVectorType() || Ty->isIntegralType(Context)) {\n if (!areLaxCompatibleVectorTypes(Ty, VectorTy))\n return Diag(R.getBegin(), Ty->isVectorType() ? diag::err_invalid_conversion_between_vectors : diag::err_invalid_conversion_between_vector_and_integer) << VectorTy << Ty << R;"}} | |||
}, | }, | ||
[" | ["err_invalid_conversion_between_vector_and_scalar"]={ | ||
[ | [j]="invalid conversion between vector type A and scalar type B", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="invalid conversion between vector type %0 and scalar type %1", | ||
[ | [f]=n, | ||
[ | [g]="invalid conversion between vector type (.*?) and scalar type (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{q,7167,"bool Sema::CheckVectorCast(SourceRange R, QualType VectorTy, QualType Ty, CastKind &Kind) {\n if (Ty->isVectorType() || Ty->isIntegralType(Context)) {\n } else\n return Diag(R.getBegin(), diag::err_invalid_conversion_between_vector_and_scalar) << VectorTy << Ty << R;"},{q,7226,"ExprResult Sema::CheckExtVectorCast(SourceRange R, QualType DestTy, Expr *CastExpr, CastKind &Kind) {\n // All non-pointer scalars can be cast to ExtVector type. The appropriate\n // conversion will take place first from scalar to elt type, and then\n // splat from elt type to vector.\n if (SrcTy->isPointerType())\n return Diag(R.getBegin(), diag::err_invalid_conversion_between_vector_and_scalar) << DestTy << SrcTy << R;"}} | |||
}, | }, | ||
[" | ["err_invalid_conversion_between_vectors"]={ | ||
[ | [j]="invalid conversion between vector type A and B of different size", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="invalid conversion between vector type%diff{ $ and $|}0,1 of different size", | ||
[ | [f]=n, | ||
[ | [g]="invalid conversion between vector type(?: (.*?) and (.*?)|) of different size", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{q,7165,"bool Sema::CheckVectorCast(SourceRange R, QualType VectorTy, QualType Ty, CastKind &Kind) {\n if (Ty->isVectorType() || Ty->isIntegralType(Context)) {\n if (!areLaxCompatibleVectorTypes(Ty, VectorTy))\n return Diag(R.getBegin(), Ty->isVectorType() ? diag::err_invalid_conversion_between_vectors : diag::err_invalid_conversion_between_vector_and_integer) << VectorTy << Ty << R;"}} | |||
}, | }, | ||
[" | ["err_invalid_cpu_is"]={ | ||
[ | [j]="invalid cpu name for builtin", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="invalid cpu name for builtin", | ||
[ | [f]=n, | ||
[ | [g]="invalid cpu name for builtin", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"699ae0c173bd",1502396910,"[X86] Implement __builtin_cpu_is"}, | ||
[k]={{y,5182,"/// SemaBuiltinCpuIs - Handle __builtin_cpu_is(char *).\n/// This checks that the target supports __builtin_cpu_is and\n/// that the string argument is constant and valid.\nstatic bool SemaBuiltinCpuIs(Sema &S, const TargetInfo &TI, CallExpr *TheCall) {\n if (!TI.validateCpuIs(Feature))\n return S.Diag(TheCall->getBeginLoc(), diag::err_invalid_cpu_is) << Arg->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_invalid_cpu_specific_dispatch_value"]={ | ||
[ | [j]="invalid option \'A\' for ...", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="invalid option \'%0\' for %select{cpu_specific|cpu_dispatch}1", | ||
[ | [f]=n, | ||
[ | [g]="invalid option \'(.*?)\' for (?:cpu_specific|cpu_dispatch)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"3efe00206f0f",1532096008,"Implement cpu_dispatch/cpu_specific Multiversioning"}, | ||
[k]={{v,1894,"static void handleCPUSpecificAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n for (unsigned ArgNo = 0; ArgNo < getNumAttributeArgs(AL); ++ArgNo) {\n if (!S.Context.getTargetInfo().validateCPUSpecificCPUDispatch(CPUName)) {\n S.Diag(CPUArg->Loc, diag::err_invalid_cpu_specific_dispatch_value) << CPUName << (AL.getKind() == ParsedAttr::AT_CPUDispatch);"}} | |||
}, | }, | ||
[" | ["err_invalid_cpu_supports"]={ | ||
[ | [j]="invalid cpu feature string for builtin", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="invalid cpu feature string for builtin", | ||
[ | [f]=n, | ||
[ | [g]="invalid cpu feature string for builtin", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"d983270976d2",1435611605,"Add support for the x86 builtin __builtin_cpu_supports."}, | ||
[k]={{y,5165,"/// SemaBuiltinCpuSupports - Handle __builtin_cpu_supports(char *).\n/// This checks that the target supports __builtin_cpu_supports and\n/// that the string argument is constant and valid.\nstatic bool SemaBuiltinCpuSupports(Sema &S, const TargetInfo &TI, CallExpr *TheCall) {\n if (!TI.validateCpuSupports(Feature))\n return S.Diag(TheCall->getBeginLoc(), diag::err_invalid_cpu_supports) << Arg->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_invalid_cxx_abi"]={ | ||
[ | [j]="invalid C++ ABI name \'A\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="invalid C++ ABI name \'%0\'", | ||
[ | [f]=n, | ||
[ | [g]="invalid C\\+\\+ ABI name \'(.*?)\'", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"683b308c07bf",1597194187,"[clang] Add -fc++-abi= flag for specifying which C++ ABI to use"}, | ||
[k]={{Bb,3370,"#include \"clang/Driver/Options.inc\"\n if (!CXXABI.empty()) {\n if (!TargetCXXABI::isABI(CXXABI)) {\n Diags.Report(diag::err_invalid_cxx_abi) << CXXABI;"}} | |||
}, | }, | ||
[" | ["err_invalid_decl_spec_combination"]={ | ||
[ | [j]="cannot combine with previous \'A\' declaration specifier", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot combine with previous \'%0\' declaration specifier", | ||
[ | [f]=n, | ||
[ | [g]="cannot combine with previous \'(.*?)\' declaration specifier", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={z,1236199783,A}, | ||
[k]={{G,406,"template <class T> static bool BadSpecifier(T TNew, T TPrev, const char *&PrevSpec, unsigned &DiagID, bool IsExtension = true) {\n if (TNew != TPrev)\n DiagID = diag::err_invalid_decl_spec_combination;"},{G,714,"bool DeclSpec::SetTypeSpecType(TST T, SourceLocation TagKwLoc, SourceLocation TagNameLoc, const char *&PrevSpec, unsigned &DiagID, ParsedType Rep, const PrintingPolicy &Policy) {\n if (TypeSpecType != TST_unspecified) {\n DiagID = diag::err_invalid_decl_spec_combination;"},{G,732,"bool DeclSpec::SetTypeSpecType(TST T, SourceLocation Loc, const char *&PrevSpec, unsigned &DiagID, Expr *Rep, const PrintingPolicy &Policy) {\n if (TypeSpecType != TST_unspecified) {\n DiagID = diag::err_invalid_decl_spec_combination;"},{G,753,"bool DeclSpec::SetTypeSpecType(TST T, SourceLocation TagKwLoc, SourceLocation TagNameLoc, const char *&PrevSpec, unsigned &DiagID, Decl *Rep, bool Owned, const PrintingPolicy &Policy) {\n if (TypeSpecType != TST_unspecified) {\n DiagID = diag::err_invalid_decl_spec_combination;"},{G,777,"bool DeclSpec::SetTypeSpecType(TST T, SourceLocation Loc, const char *&PrevSpec, unsigned &DiagID, const PrintingPolicy &Policy) {\n if (TypeSpecType != TST_unspecified) {\n DiagID = diag::err_invalid_decl_spec_combination;"},{G,821,"bool DeclSpec::SetTypePipe(bool isPipe, SourceLocation Loc, const char *&PrevSpec, unsigned &DiagID, const PrintingPolicy &Policy) {\n if (TypeSpecType != TST_unspecified) {\n DiagID = diag::err_invalid_decl_spec_combination;"},{G,874,"bool DeclSpec::SetBitIntType(SourceLocation KWLoc, Expr *BitsExpr, const char *&PrevSpec, unsigned &DiagID, const PrintingPolicy &Policy) {\n if (TypeSpecType != TST_unspecified) {\n DiagID = diag::err_invalid_decl_spec_combination;"},{G,1204,"/// Finish - This does final analysis of the declspec, rejecting things like\n/// \"_Imaginary\" (lacking an FP type). After calling this method, DeclSpec is\n/// guaranteed to be self-consistent, even if an error occurred.\nvoid DeclSpec::Finish(Sema &S, const PrintingPolicy &Policy) {\n // C11 6.7.1/3, C++11 [dcl.stc]p1, GNU TLS: __thread, thread_local and\n // _Thread_local can only appear with the \'static\' and \'extern\' storage class\n // specifiers. We also allow __private_extern__ as an extension.\n if (ThreadStorageClassSpec != TSCS_unspecified) {\n default:\n if (S.getSourceManager().isBeforeInTranslationUnit(getThreadStorageClassSpecLoc(), getStorageClassSpecLoc()))\n S.Diag(getStorageClassSpecLoc(), diag::err_invalid_decl_spec_combination) << DeclSpec::getSpecifierName(getThreadStorageClassSpec()) << SourceRange(getThreadStorageClassSpecLoc());"},{G,1206,"/// Finish - This does final analysis of the declspec, rejecting things like\n/// \"_Imaginary\" (lacking an FP type). After calling this method, DeclSpec is\n/// guaranteed to be self-consistent, even if an error occurred.\nvoid DeclSpec::Finish(Sema &S, const PrintingPolicy &Policy) {\n // C11 6.7.1/3, C++11 [dcl.stc]p1, GNU TLS: __thread, thread_local and\n // _Thread_local can only appear with the \'static\' and \'extern\' storage class\n // specifiers. We also allow __private_extern__ as an extension.\n if (ThreadStorageClassSpec != TSCS_unspecified) {\n default:\n if (S.getSourceManager().isBeforeInTranslationUnit(getThreadStorageClassSpecLoc(), getStorageClassSpecLoc()))\n else\n S.Diag(getThreadStorageClassSpecLoc(), diag::err_invalid_decl_spec_combination) << DeclSpec::getSpecifierName(getStorageClassSpec()) << SourceRange(getStorageClassSpecLoc());"}} | |||
}, | }, | ||
[" | ["err_invalid_decl_specifier_in_nontype_parm"]={ | ||
[ | [j]="invalid declaration specifier in template non-type parameter", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="invalid declaration specifier in template non-type parameter", | ||
[ | [f]=n, | ||
[ | [g]="invalid declaration specifier in template non\\-type parameter", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"a223d1c856db",1513914655,"Diagnose the various invalid decl-specifiers on nontype template parameters."}, | ||
[k]={{K,1272,"NamedDecl *Sema::ActOnNonTypeTemplateParameter(Scope *S, Declarator &D, unsigned Depth, unsigned Position, SourceLocation EqualLoc, Expr *Default) {\n // Check that we have valid decl-specifiers specified.\n auto CheckValidDeclSpecifiers = [this, &D] {\n auto EmitDiag = [this](SourceLocation Loc) { Diag(Loc, diag::err_invalid_decl_specifier_in_nontype_parm) << FixItHint::CreateRemoval(Loc); };"}} | |||
}, | }, | ||
[" | ["err_invalid_declaration_in_hlsl_buffer"]={ | ||
[ | [j]="invalid declaration inside ...", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="invalid declaration inside %select{tbuffer|cbuffer}0", | ||
[ | [f]=n, | ||
[ | [g]="invalid declaration inside (?:tbuffer|cbuffer)", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"782ac2182c2b",1657907157,"[HLSL] Support cbuffer/tbuffer for hlsl."}, | ||
[k]={{"clang/lib/Parse/ParseHLSL.cpp",35,"static bool validateDeclsInsideHLSLBuffer(Parser::DeclGroupPtrTy DG, SourceLocation BufferLoc, bool IsCBuffer, Parser &P) {\n // Only allow function, variable, record decls inside HLSLBuffer.\n for (DeclGroupRef::iterator I = Decls.begin(), E = Decls.end(); I != E; ++I) {\n // FIXME: support nested HLSLBuffer and namespace inside HLSLBuffer.\n if (isa<HLSLBufferDecl, NamespaceDecl>(D)) {\n P.Diag(D->getLocation(), diag::err_invalid_declaration_in_hlsl_buffer) << IsCBuffer;"},{"clang/lib/Parse/ParseHLSL.cpp",41,"static bool validateDeclsInsideHLSLBuffer(Parser::DeclGroupPtrTy DG, SourceLocation BufferLoc, bool IsCBuffer, Parser &P) {\n // Only allow function, variable, record decls inside HLSLBuffer.\n for (DeclGroupRef::iterator I = Decls.begin(), E = Decls.end(); I != E; ++I) {\n P.Diag(D->getLocation(), diag::err_invalid_declaration_in_hlsl_buffer) << IsCBuffer;"}} | |||
}, | }, | ||
[" | ["err_invalid_declarator_global_scope"]={ | ||
[ | [j]="definition or redeclaration of A cannot name the global scope", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="definition or redeclaration of %0 cannot name the global scope", | ||
[ | [f]=n, | ||
[ | [g]="definition or redeclaration of (.*?) cannot name the global scope", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{p,5515,"/// Diagnose a declaration whose declarator-id has the given\n/// nested-name-specifier.\n///\n/// \\param SS The nested-name-specifier of the declarator-id.\n///\n/// \\param DC The declaration context to which the nested-name-specifier\n/// resolves.\n///\n/// \\param Name The name of the entity being declared.\n///\n/// \\param Loc The location of the name of the entity being declared.\n///\n/// \\param IsTemplateId Whether the name is a (simple-)template-id, and thus\n/// we\'re declaring an explicit / partial specialization / instantiation.\n///\n/// \\returns true if we cannot safely recover from this error, false otherwise.\nbool Sema::diagnoseQualifiedDeclaration(CXXScopeSpec &SS, DeclContext *DC, DeclarationName Name, SourceLocation Loc, bool IsTemplateId) {\n // Check whether the qualifying scope encloses the scope of the original\n // declaration. For a template-id, we perform the checks in\n // CheckTemplateSpecializationScope.\n if (!Cur->Encloses(DC) && !IsTemplateId) {\n if (Cur->isRecord())\n else if (isa<TranslationUnitDecl>(DC))\n Diag(Loc, diag::err_invalid_declarator_global_scope) << Name << SS.getRange();"}} | |||
}, | }, | ||
[" | ["err_invalid_declarator_in_block"]={ | ||
[ | [j]="definition or redeclaration of A not allowed inside a block", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="definition or redeclaration of %0 not allowed inside a block", | ||
[ | [f]=n, | ||
[ | [g]="definition or redeclaration of (.*?) not allowed inside a block", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"e2358c1debe9",1376344441,"Fix crash w/BlockDecl and invalid qualified decl."}, | ||
[k]={{p,5519,"/// Diagnose a declaration whose declarator-id has the given\n/// nested-name-specifier.\n///\n/// \\param SS The nested-name-specifier of the declarator-id.\n///\n/// \\param DC The declaration context to which the nested-name-specifier\n/// resolves.\n///\n/// \\param Name The name of the entity being declared.\n///\n/// \\param Loc The location of the name of the entity being declared.\n///\n/// \\param IsTemplateId Whether the name is a (simple-)template-id, and thus\n/// we\'re declaring an explicit / partial specialization / instantiation.\n///\n/// \\returns true if we cannot safely recover from this error, false otherwise.\nbool Sema::diagnoseQualifiedDeclaration(CXXScopeSpec &SS, DeclContext *DC, DeclarationName Name, SourceLocation Loc, bool IsTemplateId) {\n // Check whether the qualifying scope encloses the scope of the original\n // declaration. For a template-id, we perform the checks in\n // CheckTemplateSpecializationScope.\n if (!Cur->Encloses(DC) && !IsTemplateId) {\n if (Cur->isRecord())\n else if (isa<TranslationUnitDecl>(DC))\n else if (isa<FunctionDecl>(Cur))\n else if (isa<BlockDecl>(Cur))\n Diag(Loc, diag::err_invalid_declarator_in_block) << Name << SS.getRange();"}} | |||
}, | }, | ||
[" | ["err_invalid_declarator_in_function"]={ | ||
[ | [j]="definition or redeclaration of A not allowed inside a function", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="definition or redeclaration of %0 not allowed inside a function", | ||
[ | [f]=n, | ||
[ | [g]="definition or redeclaration of (.*?) not allowed inside a function", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{p,5517,"/// Diagnose a declaration whose declarator-id has the given\n/// nested-name-specifier.\n///\n/// \\param SS The nested-name-specifier of the declarator-id.\n///\n/// \\param DC The declaration context to which the nested-name-specifier\n/// resolves.\n///\n/// \\param Name The name of the entity being declared.\n///\n/// \\param Loc The location of the name of the entity being declared.\n///\n/// \\param IsTemplateId Whether the name is a (simple-)template-id, and thus\n/// we\'re declaring an explicit / partial specialization / instantiation.\n///\n/// \\returns true if we cannot safely recover from this error, false otherwise.\nbool Sema::diagnoseQualifiedDeclaration(CXXScopeSpec &SS, DeclContext *DC, DeclarationName Name, SourceLocation Loc, bool IsTemplateId) {\n // Check whether the qualifying scope encloses the scope of the original\n // declaration. For a template-id, we perform the checks in\n // CheckTemplateSpecializationScope.\n if (!Cur->Encloses(DC) && !IsTemplateId) {\n if (Cur->isRecord())\n else if (isa<TranslationUnitDecl>(DC))\n else if (isa<FunctionDecl>(Cur))\n Diag(Loc, diag::err_invalid_declarator_in_function) << Name << SS.getRange();"}} | |||
}, | }, | ||
[" | ["err_invalid_declarator_scope"]={ | ||
[ | [j]="cannot define or redeclare A here because namespace B does not enclose namespace C", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot define or redeclare %0 here because namespace %1 does not enclose namespace %2", | ||
[ | [f]=n, | ||
[ | [g]="cannot define or redeclare (.*?) here because namespace (.*?) does not enclose namespace (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{p,5528,"/// Diagnose a declaration whose declarator-id has the given\n/// nested-name-specifier.\n///\n/// \\param SS The nested-name-specifier of the declarator-id.\n///\n/// \\param DC The declaration context to which the nested-name-specifier\n/// resolves.\n///\n/// \\param Name The name of the entity being declared.\n///\n/// \\param Loc The location of the name of the entity being declared.\n///\n/// \\param IsTemplateId Whether the name is a (simple-)template-id, and thus\n/// we\'re declaring an explicit / partial specialization / instantiation.\n///\n/// \\returns true if we cannot safely recover from this error, false otherwise.\nbool Sema::diagnoseQualifiedDeclaration(CXXScopeSpec &SS, DeclContext *DC, DeclarationName Name, SourceLocation Loc, bool IsTemplateId) {\n // Check whether the qualifying scope encloses the scope of the original\n // declaration. For a template-id, we perform the checks in\n // CheckTemplateSpecializationScope.\n if (!Cur->Encloses(DC) && !IsTemplateId) {\n if (Cur->isRecord())\n else if (isa<TranslationUnitDecl>(DC))\n else if (isa<FunctionDecl>(Cur))\n else if (isa<BlockDecl>(Cur))\n else if (isa<ExportDecl>(Cur)) {\n } else\n Diag(Loc, diag::err_invalid_declarator_scope) << Name << cast<NamedDecl>(Cur) << cast<NamedDecl>(DC) << SS.getRange();"}} | |||
}, | }, | ||
[" | ["err_invalid_digit"]={ | ||
[ | [j]="invalid digit \'A\' in ... constant", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="invalid digit \'%0\' in %select{decimal|octal|binary}1 constant", | ||
[ | [f]=n, | ||
[ | [g]="invalid digit \'(.*?)\' in (?:decimal|octal|binary) constant", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={"7f5ff2175f68",1447466995,"Use %select to merge similar diagnostics. NFC"}, | ||
[k]={{W,1051,"/// ParseDecimalOrOctalCommon - This method is called for decimal or octal\n/// numbers. It issues an error for illegal digits, and handles floating point\n/// parsing. If it detects a floating point number, the radix is set to 10.\nvoid NumericLiteralParser::ParseDecimalOrOctalCommon(SourceLocation TokLoc) {\n // If we have a hex digit other than \'e\' (which denotes a FP exponent) then\n // the code is using an incorrect base.\n if (isHexDigit(*s) && *s != \'e\' && *s != \'E\' && !isValidUDSuffix(LangOpts, StringRef(s, ThisTokEnd - s))) {\n Diags.Report(Lexer::AdvanceToTokenCharacter(TokLoc, s - ThisTokBegin, SM, LangOpts), diag::err_invalid_digit) << StringRef(s, 1) << (radix == 8 ? 1 : 0);"},{W,1202,"/// ParseNumberStartingWithZero - This method is called when the first character\n/// of the number is found to be a zero. This means it is either an octal\n/// number (like \'04\') or a hex number (\'0x123a\') a binary number (\'0b1010\') or\n/// a floating point number (01239.123e4). Eat the prefix, determining the\n/// radix etc.\nvoid NumericLiteralParser::ParseNumberStartingWithZero(SourceLocation TokLoc) {\n // Handle simple binary numbers 0b01010\n if ((c1 == \'b\' || c1 == \'B\') && (s[1] == \'0\' || s[1] == \'1\')) {\n if (s == ThisTokEnd) {\n } else if (isHexDigit(*s) && !isValidUDSuffix(LangOpts, StringRef(s, ThisTokEnd - s))) {\n Diags.Report(Lexer::AdvanceToTokenCharacter(TokLoc, s - ThisTokBegin, SM, LangOpts), diag::err_invalid_digit) << StringRef(s, 1) << 2;"}} | |||
}, | }, | ||
[" | ["err_invalid_feature_combination"]={ | ||
[ | [j]="invalid feature combination: A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="invalid feature combination: %0", | ||
[ | [f]=n, | ||
[ | [g]="invalid feature combination\\: (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"ff13189c5d0d",1624436334,"[RISCV] Unify the arch string parsing logic to to RISCVISAInfo."}, | ||
[k]={{"clang/lib/Basic/Targets/AMDGPU.cpp",107,"bool AMDGPUTargetInfo::initFeatureMap(llvm::StringMap<bool> &Features, DiagnosticsEngine &Diags, StringRef CPU, const std::vector<std::string> &FeatureVec) const {\n if (!insertWaveSizeFeature(CPU, getTriple(), Features, ErrorMsg)) {\n Diags.Report(diag::err_invalid_feature_combination) << ErrorMsg;"},{"clang/lib/Basic/Targets/RISCV.cpp",203,"bool RISCVTargetInfo::initFeatureMap(llvm::StringMap<bool> &Features, DiagnosticsEngine &Diags, StringRef CPU, const std::vector<std::string> &FeaturesVec) const {\n if (!ParseResult) {\n Diags.Report(diag::err_invalid_feature_combination) << OutputErrMsg.str();"},{"clang/lib/Basic/Targets/RISCV.cpp",259,"/// Perform initialization based on the user configured set of features.\nbool RISCVTargetInfo::handleTargetFeatures(std::vector<std::string> &Features, DiagnosticsEngine &Diags) {\n if (!ParseResult) {\n Diags.Report(diag::err_invalid_feature_combination) << OutputErrMsg.str();"}} | |||
}, | }, | ||
[" | ["err_invalid_form_pointer_member_function"]={ | ||
[ | [j]="cannot create a non-constant pointer to member function", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot create a non-constant pointer to member function", | ||
[ | [f]=n, | ||
[ | [g]="cannot create a non\\-constant pointer to member function", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"8d08b9b408ca",1282900108,"Propagate whether an id-expression is the immediate argument of"}, | ||
[k]={{q,12815,"/// CheckAddressOfOperand - The operand of & must be either a function\n/// designator or an lvalue designating an object. If it is an lvalue, the\n/// object cannot be declared with storage class register or be a bit field.\n/// Note: The usual conversions are *not* applied to the operand of the &\n/// operator (C99 6.3.2.1p[2-4]), and its result is never an lvalue.\n/// In C++, the operand might be an overloaded function name, in which case\n/// we allow the \'&\' but retain the overloaded-function type.\nQualType Sema::CheckAddressOfOperand(ExprResult &OrigOp, SourceLocation OpLoc) {\n if (const BuiltinType *PTy = OrigOp.get()->getType()->getAsPlaceholderType()) {\n if (PTy->getKind() == BuiltinType::Overload) {\n if (isa<UnresolvedMemberExpr>(Ovl))\n if (!ResolveSingleFunctionTemplateSpecialization(Ovl)) {\n Diag(OpLoc, diag::err_invalid_form_pointer_member_function) << OrigOp.get()->getSourceRange();"},{q,12826,"/// CheckAddressOfOperand - The operand of & must be either a function\n/// designator or an lvalue designating an object. If it is an lvalue, the\n/// object cannot be declared with storage class register or be a bit field.\n/// Note: The usual conversions are *not* applied to the operand of the &\n/// operator (C99 6.3.2.1p[2-4]), and its result is never an lvalue.\n/// In C++, the operand might be an overloaded function name, in which case\n/// we allow the \'&\' but retain the overloaded-function type.\nQualType Sema::CheckAddressOfOperand(ExprResult &OrigOp, SourceLocation OpLoc) {\n if (const BuiltinType *PTy = OrigOp.get()->getType()->getAsPlaceholderType()) {\n if (PTy->getKind() == BuiltinType::BoundMember) {\n Diag(OpLoc, diag::err_invalid_form_pointer_member_function) << OrigOp.get()->getSourceRange();"},{q,12891,"/// CheckAddressOfOperand - The operand of & must be either a function\n/// designator or an lvalue designating an object. If it is an lvalue, the\n/// object cannot be declared with storage class register or be a bit field.\n/// Note: The usual conversions are *not* applied to the operand of the &\n/// operator (C99 6.3.2.1p[2-4]), and its result is never an lvalue.\n/// In C++, the operand might be an overloaded function name, in which case\n/// we allow the \'&\' but retain the overloaded-function type.\nQualType Sema::CheckAddressOfOperand(ExprResult &OrigOp, SourceLocation OpLoc) {\n if (lval == Expr::LV_ClassTemporary || lval == Expr::LV_ArrayTemporary) {\n } else if (isa<ObjCSelectorExpr>(op)) {\n } else if (lval == Expr::LV_MemberFunction) {\n // If the underlying expression isn\'t a decl ref, give up.\n if (!isa<DeclRefExpr>(op)) {\n Diag(OpLoc, diag::err_invalid_form_pointer_member_function) << OrigOp.get()->getSourceRange();"},{Ab,10757,"// A helper class to help with address of function resolution\n// - allows us to avoid passing around all those ugly parameters\nclass AddressOfFunctionResolver {\n void ComplainIsStaticMemberFunctionFromBoundPointer() const { S.Diag(OvlExpr->getBeginLoc(), diag::err_invalid_form_pointer_member_function) << OvlExpr->getSourceRange(); }"}} | |||
}, | }, | ||
[" | ["err_invalid_incomplete_type_use"]={ | ||
[ | [j]="invalid use of incomplete type A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="invalid use of incomplete type %0", | ||
[ | [f]=n, | ||
[ | [g]="invalid use of incomplete type (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{B,1391,"ExprResult Sema::BuildCXXTypeConstructExpr(TypeSourceInfo *TInfo, SourceLocation LParenOrBraceLoc, MultiExprArg Exprs, SourceLocation RParenOrBraceLoc, bool ListInitialization) {\n if (!Ty->isVoidType() && RequireCompleteType(TyBeginLoc, ElemTy, diag::err_invalid_incomplete_type_use, FullRange))"}} | |||
}, | }, | ||
[" | ["err_invalid_macos_32bit_deployment_target"]={ | ||
[ | [j]="32-bit targets are not supported when building for Mac Catalyst", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="32-bit targets are not supported when building for Mac Catalyst", | ||
[ | [f]=n, | ||
[ | [g]="32\\-bit targets are not supported when building for Mac Catalyst", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"0687578728ea",1610286626,"[C++20][Modules][HU 2/5] Support searching Header Units in user or system search paths."}, | ||
[k]={{"clang/lib/Driver/ToolChains/Darwin.cpp",1982,"void Darwin::AddDeploymentTarget(DerivedArgList &Args) const {\n // Set the tool chain target information.\n if (Platform == MacOS) {\n } else if (Platform == IPhoneOS) {\n // For 32-bit targets, the deployment target for iOS has to be earlier than\n // iOS 11.\n if (getTriple().isArch32Bit() && Major >= 11) {\n // If the deployment target is explicitly specified, print a diagnostic.\n if (OSTarget->isExplicitlySpecified()) {\n if (OSTarget->getEnvironment() == MacCatalyst)\n getDriver().Diag(diag::err_invalid_macos_32bit_deployment_target);"}} | |||
}, | }, | ||
[" | ["err_invalid_mask_type_size"]={ | ||
[ | [j]="mask type size must be between 1-byte and 8-bytes", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="mask type size must be between 1-byte and 8-bytes", | ||
[ | [f]=n, | ||
[ | [g]="mask type size must be between 1\\-byte and 8\\-bytes", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"d572cf496ded",1541487914,"os_log: Allow specifying mask type in format string."}, | ||
[k]={{y,9578,"void CheckPrintfHandler::handleInvalidMaskType(StringRef MaskType) { S.Diag(getLocationOfByte(MaskType.data()), diag::err_invalid_mask_type_size); }"}} | |||
}, | }, | ||
[" | ["err_invalid_member_in_interface"]={ | ||
[ | [j]="...A is not permitted within an interface type", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%select{data member |non-public member function |static member function |user-declared constructor|user-declared destructor|operator |nested class }0%1 is not permitted within an interface type", | ||
[ | [f]=n, | ||
[ | [g]="(?:data member |non\\-public member function |static member function |user\\-declared constructor|user\\-declared destructor|operator |nested class )(.*?) is not permitted within an interface type", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"db632ac004ae",1348558359,"Fix for r163013 regression and further __interface enhancement."}, | ||
[k]={{R,2990,"/// ParseCXXMemberSpecification - Parse the class definition.\n///\n/// member-specification:\n/// member-declaration member-specification[opt]\n/// access-specifier \':\' member-specification[opt]\n///\nvoid Parser::ParseCXXMemberSpecification(SourceLocation RecordLoc, SourceLocation AttrFixitLoc, ParsedAttributes &Attrs, unsigned TagType, Decl *TagDecl) {\n if (!ClassStack.empty()) {\n for (const Scope *S = getCurScope(); S; S = S->getParent()) {\n if (S->isClassScope()) {\n // The Microsoft extension __interface does not permit nested classes.\n if (getCurrentClass().IsInterface) {\n Diag(RecordLoc, diag::err_invalid_member_in_interface) << /*ErrorType=*/6 << (isa<NamedDecl>(TagDecl) ? cast<NamedDecl>(TagDecl)->getQualifiedNameAsString() : \"(anonymous)\");"},{r,2951,"/// ActOnCXXMemberDeclarator - This is invoked when a C++ class member\n/// declarator is parsed. \'AS\' is the access specifier, \'BW\' specifies the\n/// bitfield width if there is one, \'InitExpr\' specifies the initializer if\n/// one has been parsed, and \'InitStyle\' is set if an in-class initializer is\n/// present (but parsing it has been deferred).\nNamedDecl *Sema::ActOnCXXMemberDeclarator(Scope *S, AccessSpecifier AS, Declarator &D, MultiTemplateParamsArg TemplateParameterLists, Expr *BW, const VirtSpecifiers &VS, InClassInitStyle InitStyle) {\n if (cast<CXXRecordDecl>(CurContext)->isInterface()) {\n if (InvalidDecl) {\n if (ShowDeclName)\n Diag(Loc, diag::err_invalid_member_in_interface) << (InvalidDecl - 1) << Name;"},{r,2953,"/// ActOnCXXMemberDeclarator - This is invoked when a C++ class member\n/// declarator is parsed. \'AS\' is the access specifier, \'BW\' specifies the\n/// bitfield width if there is one, \'InitExpr\' specifies the initializer if\n/// one has been parsed, and \'InitStyle\' is set if an in-class initializer is\n/// present (but parsing it has been deferred).\nNamedDecl *Sema::ActOnCXXMemberDeclarator(Scope *S, AccessSpecifier AS, Declarator &D, MultiTemplateParamsArg TemplateParameterLists, Expr *BW, const VirtSpecifiers &VS, InClassInitStyle InitStyle) {\n if (cast<CXXRecordDecl>(CurContext)->isInterface()) {\n if (InvalidDecl) {\n if (ShowDeclName)\n else\n Diag(Loc, diag::err_invalid_member_in_interface) << (InvalidDecl - 1) << \"\";"}} | |||
}, | }, | ||
[" | ["err_invalid_member_use_in_static_method"]={ | ||
[ | [j]="invalid use of member A in static member function", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="invalid use of member %0 in static member function", | ||
[ | [f]=n, | ||
[ | [g]="invalid use of member (.*?) in static member function", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{fb,207,"/// Diagnose a reference to a field with no object available.\nstatic void diagnoseInstanceReference(Sema &SemaRef, const CXXScopeSpec &SS, NamedDecl *Rep, const DeclarationNameInfo &nameInfo) {\n if (IsField && InStaticMethod)\n SemaRef.Diag(Loc, diag::err_invalid_member_use_in_static_method) << Range << nameInfo.getName();"}} | |||
}, | }, | ||
[" | ["err_invalid_module_name"]={ | ||
[ | [j]="A is an invalid name for a module", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%0 is an invalid name for a module", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) is an invalid name for a module", | ||
[ | [h]=a, | ||
[ | [i]=D, | ||
[ | [b]={M,1625925174,N}, | ||
[k]={{X,150,"/// Tests whether the given identifier is reserved as a module name and\n/// diagnoses if it is. Returns true if a diagnostic is emitted and false\n/// otherwise.\nstatic bool DiagReservedModuleName(Sema &S, const IdentifierInfo *II, SourceLocation Loc) {\n case Invalid:\n return S.Diag(Loc, diag::err_invalid_module_name) << II;"}} | |||
}, | }, | ||
[" | ["err_invalid_neon_type_code"]={ | ||
[ | [j]="incompatible constant for this __builtin_neon function", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="incompatible constant for this __builtin_neon function", | ||
[ | [f]=n, | ||
[ | [g]="incompatible constant for this __builtin_neon function", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"d773fe67dd67",1276404472,"Most of NEON sema checking & fix to polynomial type detection"}, | ||
[k]={{y,2726,"#include \"clang/Basic/arm_neon.inc\"\n if (mask) {\n if ((TV > 63) || (mask & (1ULL << TV)) == 0)\n return Diag(TheCall->getBeginLoc(), diag::err_invalid_neon_type_code) << TheCall->getArg(ImmArg)->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_invalid_non_static_member_use"]={ | ||
[ | [j]="invalid use of non-static data member A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="invalid use of non-static data member %0", | ||
[ | [f]=n, | ||
[ | [g]="invalid use of non\\-static data member (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{q,15605,"// Handle the case where we conclude a expression which we speculatively\n// considered to be unevaluated is actually evaluated.\nclass TransformToPE : public TreeTransform<TransformToPE> {\n // We need to special-case DeclRefExprs referring to FieldDecls which\n // are not part of a member pointer formation; normal TreeTransforming\n // doesn\'t catch this case because of the way we represent them in the AST.\n // FIXME: This is a bit ugly; is it really the best way to handle this\n // case?\n //\n // Error on DeclRefExprs referring to FieldDecls.\n ExprResult TransformDeclRefExpr(DeclRefExpr *E) {\n if (isa<FieldDecl>(E->getDecl()) && !SemaRef.isUnevaluatedContext())\n return SemaRef.Diag(E->getLocation(), diag::err_invalid_non_static_member_use) << E->getDecl() << E->getSourceRange();"},{fb,213,"/// Diagnose a reference to a field with no object available.\nstatic void diagnoseInstanceReference(Sema &SemaRef, const CXXScopeSpec &SS, NamedDecl *Rep, const DeclarationNameInfo &nameInfo) {\n if (IsField && InStaticMethod)\n else if (ContextClass && RepClass && SS.isEmpty() && !InStaticMethod && !RepClass->Equals(ContextClass) && RepClass->Encloses(ContextClass))\n else if (IsField)\n SemaRef.Diag(Loc, diag::err_invalid_non_static_member_use) << nameInfo.getName() << Range;"}} | |||
}, | }, | ||
[" | ["err_invalid_nsnumber_type"]={ | ||
[ | [j]="A is not a valid literal type for NSNumber", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%0 is not a valid literal type for NSNumber", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) is not a valid literal type for NSNumber", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"e65b086e07a6",1331064356,"Add clang support for new Objective-C literal syntax for NSDictionary, NSArray,"}, | ||
[k]={{O,223,"/// Retrieve the NSNumber factory method that should be used to create\n/// an Objective-C literal for the given type.\nstatic ObjCMethodDecl *getNSNumberFactoryMethod(Sema &S, SourceLocation Loc, QualType NumberType, bool isLiteral = false, SourceRange R = SourceRange()) {\n if (!Kind) {\n if (isLiteral) {\n S.Diag(Loc, diag::err_invalid_nsnumber_type) << NumberType << R;"}} | |||
}, | }, | ||
[" | ["err_invalid_numeric_udl"]={ | ||
[ | [j]="numeric literal with user-defined suffix cannot be used here", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="numeric literal with user-defined suffix cannot be used here", | ||
[ | [f]=n, | ||
[ | [g]="numeric literal with user\\-defined suffix cannot be used here", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={"bcc22fc4e1b2",1331280036,"Support for raw and template forms of numeric user-defined literals,"}, | ||
[k]={{q,3381,"ExprResult Sema::ActOnNumericConstant(const Token &Tok, Scope *UDLScope) {\n if (Literal.hasUDSuffix()) {\n // Make sure we\'re allowed user-defined literals here.\n if (!UDLScope)\n return ExprError(Diag(UDSuffixLoc, diag::err_invalid_numeric_udl));"}} | |||
}, | }, | ||
[" | ["err_invalid_operator_on_type"]={ | ||
[ | [j]="cannot use ... operator on a type", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot use %select{dot|arrow}0 operator on a type", | ||
[ | [f]=n, | ||
[ | [g]="cannot use (?:dot|arrow) operator on a type", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={"9c67267a7bce",1359167498,"Give a more informative error message when the dot or arrow operator is used"}, | ||
[k]={{C,6000,"/// ParseDirectDeclarator\n/// direct-declarator: [C99 6.7.5]\n/// [C99] identifier\n/// \'(\' declarator \')\'\n/// [GNU] \'(\' attributes declarator \')\'\n/// [C90] direct-declarator \'[\' constant-expression[opt] \']\'\n/// [C99] direct-declarator \'[\' type-qual-list[opt] assignment-expr[opt] \']\'\n/// [C99] direct-declarator \'[\' \'static\' type-qual-list[opt] assign-expr \']\'\n/// [C99] direct-declarator \'[\' type-qual-list \'static\' assignment-expr \']\'\n/// [C99] direct-declarator \'[\' type-qual-list[opt] \'*\' \']\'\n/// [C++11] direct-declarator \'[\' constant-expression[opt] \']\'\n/// attribute-specifier-seq[opt]\n/// direct-declarator \'(\' parameter-type-list \')\'\n/// direct-declarator \'(\' identifier-list[opt] \')\'\n/// [GNU] direct-declarator \'(\' parameter-forward-declarations\n/// parameter-type-list[opt] \')\'\n/// [C++] direct-declarator \'(\' parameter-declaration-clause \')\'\n/// cv-qualifier-seq[opt] exception-specification[opt]\n/// [C++11] direct-declarator \'(\' parameter-declaration-clause \')\'\n/// attribute-specifier-seq[opt] cv-qualifier-seq[opt]\n/// ref-qualifier[opt] exception-specification[opt]\n/// [C++] declarator-id\n/// [C++11] declarator-id attribute-specifier-seq[opt]\n///\n/// declarator-id: [C++ 8]\n/// \'...\'[opt] id-expression\n/// \'::\'[opt] nested-name-specifier[opt] type-name\n///\n/// id-expression: [C++ 5.1]\n/// unqualified-id\n/// qualified-id\n///\n/// unqualified-id: [C++ 5.1]\n/// identifier\n/// operator-function-id\n/// conversion-function-id\n/// \'~\' class-name\n/// template-id\n///\n/// C++17 adds the following, which we also handle here:\n///\n/// simple-declaration:\n/// <decl-spec> \'[\' identifier-list \']\' brace-or-equal-initializer \';\'\n///\n/// Note, any additional constructs added here may need corresponding changes\n/// in isConstructorDeclarator.\nvoid Parser::ParseDirectDeclarator(Declarator &D) {\n if (Tok.is(tok::l_paren)) {\n } else if (D.mayOmitIdentifier()) {\n } else {\n if (D.getContext() == DeclaratorContext::Member) {\n } else {\n if (Tok.getKind() == tok::TokenKind::kw_while) {\n } else if (getLangOpts().CPlusPlus) {\n if (Tok.isOneOf(tok::period, tok::arrow))\n Diag(Tok, diag::err_invalid_operator_on_type) << Tok.is(tok::arrow);"}} | |||
}, | }, | ||
[" | ["err_invalid_pcs"]={ | ||
[ | [j]="invalid PCS type", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="invalid PCS type", | ||
[ | [f]=n, | ||
[ | [g]="invalid PCS type", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"231e875b5c44",1302811609,"Implement ARM pcs attribute. Basically it\'s another way of calling convention selection (AAPCS or"}, | ||
[k]={{v,4741,"bool Sema::CheckCallingConvAttr(const ParsedAttr &Attrs, CallingConv &CC, const FunctionDecl *FD) {\n case ParsedAttr::AT_Pcs: {\n Diag(Attrs.getLoc(), diag::err_invalid_pcs);"}} | |||
}, | }, | ||
[" | ["err_invalid_pixel_decl_spec_combination"]={ | ||
[ | [j]="\'__pixel\' must be preceded by \'__vector\'. \'A\' declaration specifier not allowed here", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'__pixel\' must be preceded by \'__vector\'. \'%0\' declaration specifier not allowed here", | ||
[ | [f]=n, | ||
[ | [g]="\'__pixel\' must be preceded by \'__vector\'\\. \'(.*?)\' declaration specifier not allowed here", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"2233460de6ed",1265328742,"First stage of adding AltiVec support"}, | ||
[k]={{G,836,"bool DeclSpec::SetTypeAltiVecPixel(bool isAltiVecPixel, SourceLocation Loc, const char *&PrevSpec, unsigned &DiagID, const PrintingPolicy &Policy) {\n if (!TypeAltiVecVector || TypeAltiVecPixel || (TypeSpecType != TST_unspecified)) {\n DiagID = diag::err_invalid_pixel_decl_spec_combination;"}} | |||
}, | }, | ||
[" | ["err_invalid_property_name"]={ | ||
[ | [j]="A is not a valid property name (accessing an object of type B)", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%0 is not a valid property name (accessing an object of type %1)", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) is not a valid property name \\(accessing an object of type (.*?)\\)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"d645931066c1",1303323595,"Fix a crash-on-invalid involving non-identifier names in a member"}, | ||
[k]={{O,1615,"/// HandleExprPropertyRefExpr - Handle foo.bar where foo is a pointer to an\n/// objective C interface. This is a property reference expression.\nExprResult Sema::HandleExprPropertyRefExpr(const ObjCObjectPointerType *OPT, Expr *BaseExpr, SourceLocation OpLoc, DeclarationName MemberName, SourceLocation MemberLoc, SourceLocation SuperLoc, QualType SuperType, bool Super) {\n if (!MemberName.isIdentifier()) {\n Diag(MemberLoc, diag::err_invalid_property_name) << MemberName << QualType(OPT, 0);"}} | |||
}, | }, | ||
[" | ["err_invalid_protocol_qualifiers"]={ | ||
[ | [j]="invalid protocol qualifiers on non-ObjC type", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="invalid protocol qualifiers on non-ObjC type", | ||
[ | [f]=n, | ||
[ | [g]="invalid protocol qualifiers on non\\-ObjC type", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{F,938,"QualType Sema::BuildObjCTypeParamType(const ObjCTypeParamDecl *Decl, SourceLocation ProtocolLAngleLoc, ArrayRef<ObjCProtocolDecl *> Protocols, ArrayRef<SourceLocation> ProtocolLocs, SourceLocation ProtocolRAngleLoc, bool FailOnError) {\n if (!Protocols.empty()) {\n if (HasError) {\n Diag(SourceLocation(), diag::err_invalid_protocol_qualifiers) << SourceRange(ProtocolLAngleLoc, ProtocolRAngleLoc);"},{F,961,"QualType Sema::BuildObjCObjectType(QualType BaseType, SourceLocation Loc, SourceLocation TypeArgsLAngleLoc, ArrayRef<TypeSourceInfo *> TypeArgs, SourceLocation TypeArgsRAngleLoc, SourceLocation ProtocolLAngleLoc, ArrayRef<ObjCProtocolDecl *> Protocols, ArrayRef<SourceLocation> ProtocolLocs, SourceLocation ProtocolRAngleLoc, bool FailOnError, bool Rebuilding) {\n if (!Protocols.empty()) {\n if (HasError) {\n Diag(Loc, diag::err_invalid_protocol_qualifiers) << SourceRange(ProtocolLAngleLoc, ProtocolRAngleLoc);"}} | |||
}, | }, | ||
[" | ["err_invalid_qualified_constructor"]={ | ||
[ | [j]="\'A\' qualifier is not allowed on a constructor", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'%0\' qualifier is not allowed on a constructor", | ||
[ | [f]=n, | ||
[ | [g]="\'(.*?)\' qualifier is not allowed on a constructor", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={z,1236199783,A}, | ||
[k]={{r,9218,"/// CheckConstructorDeclarator - Called by ActOnDeclarator to check\n/// the well-formedness of the constructor declarator @p D with type @p\n/// R. If there are any errors in the declarator, this routine will\n/// emit diagnostics and set the invalid bit to true. In any case, the type\n/// will be updated to reflect a well-formed type for the constructor and\n/// returned.\nQualType Sema::CheckConstructorDeclarator(Declarator &D, QualType R, StorageClass &SC) {\n checkMethodTypeQualifiers(*this, D, diag::err_invalid_qualified_constructor);"}} | |||
}, | }, | ||
[" | ["err_invalid_qualified_destructor"]={ | ||
[ | [j]="\'A\' qualifier is not allowed on a destructor", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'%0\' qualifier is not allowed on a destructor", | ||
[ | [f]=n, | ||
[ | [g]="\'(.*?)\' qualifier is not allowed on a destructor", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={z,1236199783,A}, | ||
[k]={{r,9370,"/// CheckDestructorDeclarator - Called by ActOnDeclarator to check\n/// the well-formednes of the destructor declarator @p D with type @p\n/// R. If there are any errors in the declarator, this routine will\n/// emit diagnostics and set the declarator to invalid. Even if this happens,\n/// will be updated to reflect a well-formed type for the destructor and\n/// returned.\nQualType Sema::CheckDestructorDeclarator(Declarator &D, QualType R, StorageClass &SC) {\n checkMethodTypeQualifiers(*this, D, diag::err_invalid_qualified_destructor);"}} | |||
}, | }, | ||
[" | ["err_invalid_qualified_function_type"]={ | ||
[ | [j]="... ...cannot have \'A\' qualifier", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%select{non-member function|static member function|deduction guide}0 %select{of type %2 |}1cannot have \'%3\' qualifier", | ||
[ | [f]=n, | ||
[ | [g]="(?:non\\-member function|static member function|deduction guide) (?:of type (.*?) |)cannot have \'(.*?)\' qualifier", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{F,5143,"static TypeSourceInfo *GetFullTypeForDeclarator(TypeProcessingState &state, QualType declSpecType, TypeSourceInfo *TInfo) {\n if (LangOpts.CPlusPlus && T->isFunctionType()) {\n // C++11 [dcl.fct]p6 (w/DR1417):\n // An attempt to specify a function type with a cv-qualifier-seq or a\n // ref-qualifier (including by typedef-name) is ill-formed unless it is:\n // - the function type for a non-static member function,\n // - the function type to which a pointer to member refers,\n // - the top-level function type of a function typedef declaration or\n // alias-declaration,\n // - the type-id in the default argument of a type-parameter, or\n // - the type-id of a template-argument for a type-parameter\n //\n // FIXME: Checking this here is insufficient. We accept-invalid on:\n //\n // template<typename T> struct S { void f(T); };\n // S<int() const> s;\n //\n // ... for instance.\n if (IsQualifiedFunction && !(Kind == Member && D.getDeclSpec().getStorageClassSpec() != DeclSpec::SCS_static) && !IsTypedefName && D.getContext() != DeclaratorContext::TemplateArg && D.getContext() != DeclaratorContext::TemplateTypeArg) {\n S.Diag(Loc, diag::err_invalid_qualified_function_type) << Kind << D.isFunctionDeclarator() << T << getFunctionQualifiersAsString(FnTy) << FixItHint::CreateRemoval(RemovalRange);"}} | |||
}, | }, | ||
[" | ["err_invalid_receiver_class_message"]={ | ||
[ | [j]="receiver type A is not an Objective-C class", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="receiver type %0 is not an Objective-C class", | ||
[ | [f]=n, | ||
[ | [g]="receiver type (.*?) is not an Objective\\-C class", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"0c78ad96653c",1271879840,"Rework the Parser-Sema interaction for Objective-C message"}, | ||
[k]={{O,2129,"/// \\param ReceiverType The type of the object receiving the\n/// message. When \\p ReceiverTypeInfo is non-NULL, this is the same\n/// type as that refers to. For a superclass send, this is the type of\n/// the superclass.\n///\n/// \\param SuperLoc The location of the \"super\" keyword in a\n/// superclass message.\n///\n/// \\param Sel The selector to which the message is being sent.\n///\n/// \\param Method The method that this class message is invoking, if\n/// already known.\n///\n/// \\param LBracLoc The location of the opening square bracket \']\'.\n///\n/// \\param RBracLoc The location of the closing square bracket \']\'.\n///\n/// \\param ArgsIn The message arguments.\nExprResult Sema::BuildClassMessage(TypeSourceInfo *ReceiverTypeInfo, QualType ReceiverType, SourceLocation SuperLoc, Selector Sel, ObjCMethodDecl *Method, SourceLocation LBracLoc, ArrayRef<SourceLocation> SelectorLocs, SourceLocation RBracLoc, MultiExprArg ArgsIn, bool isImplicit) {\n if (!ClassType || !(Class = ClassType->getInterface())) {\n Diag(Loc, diag::err_invalid_receiver_class_message) << ReceiverType;"}} | |||
}, | }, | ||
[" | ["err_invalid_receiver_to_message_super"]={ | ||
[ | [j]="\'super\' is only valid in a method body", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'super\' is only valid in a method body", | ||
[ | [f]=n, | ||
[ | [g]="\'super\' is only valid in a method body", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"a36ec4243bea",1270974494,"fix PR6811 by not parsing \'super\' as a magic expression in"}, | ||
[k]={{O,1933,"ExprResult Sema::ActOnSuperMessage(Scope *S, SourceLocation SuperLoc, Selector Sel, SourceLocation LBracLoc, ArrayRef<SourceLocation> SelectorLocs, SourceLocation RBracLoc, MultiExprArg Args) {\n if (!Method) {\n Diag(SuperLoc, diag::err_invalid_receiver_to_message_super);"}} | |||
}, | }, | ||
[" | ["err_invalid_reference_qualifier_application"]={ | ||
[ | [j]="\'A\' qualifier may not be applied to a reference", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'%0\' qualifier may not be applied to a reference", | ||
[ | [f]=n, | ||
[ | [g]="\'(.*?)\' qualifier may not be applied to a reference", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={z,1236199783,A}, | ||
[k]={{C,5716,"/// ParseDeclaratorInternal - Parse a C or C++ declarator. The direct-declarator\n/// is parsed by the function passed to it. Pass null, and the direct-declarator\n/// isn\'t parsed at all, making this function effectively parse the C++\n/// ptr-operator production.\n///\n/// If the grammar of this construct is extended, matching changes must also be\n/// made to TryParseDeclarator and MightBeDeclarator, and possibly to\n/// isConstructorDeclarator.\n///\n/// declarator: [C99 6.7.5] [C++ 8p4, dcl.decl]\n/// [C] pointer[opt] direct-declarator\n/// [C++] direct-declarator\n/// [C++] ptr-operator declarator\n///\n/// pointer: [C99 6.7.5]\n/// \'*\' type-qualifier-list[opt]\n/// \'*\' type-qualifier-list[opt] pointer\n///\n/// ptr-operator:\n/// \'*\' cv-qualifier-seq[opt]\n/// \'&\'\n/// [C++0x] \'&&\'\n/// [GNU] \'&\' restrict[opt] attributes[opt]\n/// [GNU?] \'&&\' restrict[opt] attributes[opt]\n/// \'::\'[opt] nested-name-specifier \'*\' cv-qualifier-seq[opt]\nvoid Parser::ParseDeclaratorInternal(Declarator &D, DirectDeclParseFunction DirectDeclParser) {\n if (Kind == tok::star || Kind == tok::caret) {\n } else {\n // C++ 8.3.2p1: cv-qualified references are ill-formed except when the\n // cv-qualifiers are introduced through the use of a typedef or of a\n // template type argument, in which case the cv-qualifiers are ignored.\n if (DS.getTypeQualifiers() != DeclSpec::TQ_unspecified) {\n if (DS.getTypeQualifiers() & DeclSpec::TQ_const)\n Diag(DS.getConstSpecLoc(), diag::err_invalid_reference_qualifier_application) << \"const\";"},{C,5718,"/// ParseDeclaratorInternal - Parse a C or C++ declarator. The direct-declarator\n/// is parsed by the function passed to it. Pass null, and the direct-declarator\n/// isn\'t parsed at all, making this function effectively parse the C++\n/// ptr-operator production.\n///\n/// If the grammar of this construct is extended, matching changes must also be\n/// made to TryParseDeclarator and MightBeDeclarator, and possibly to\n/// isConstructorDeclarator.\n///\n/// declarator: [C99 6.7.5] [C++ 8p4, dcl.decl]\n/// [C] pointer[opt] direct-declarator\n/// [C++] direct-declarator\n/// [C++] ptr-operator declarator\n///\n/// pointer: [C99 6.7.5]\n/// \'*\' type-qualifier-list[opt]\n/// \'*\' type-qualifier-list[opt] pointer\n///\n/// ptr-operator:\n/// \'*\' cv-qualifier-seq[opt]\n/// \'&\'\n/// [C++0x] \'&&\'\n/// [GNU] \'&\' restrict[opt] attributes[opt]\n/// [GNU?] \'&&\' restrict[opt] attributes[opt]\n/// \'::\'[opt] nested-name-specifier \'*\' cv-qualifier-seq[opt]\nvoid Parser::ParseDeclaratorInternal(Declarator &D, DirectDeclParseFunction DirectDeclParser) {\n if (Kind == tok::star || Kind == tok::caret) {\n } else {\n // C++ 8.3.2p1: cv-qualified references are ill-formed except when the\n // cv-qualifiers are introduced through the use of a typedef or of a\n // template type argument, in which case the cv-qualifiers are ignored.\n if (DS.getTypeQualifiers() != DeclSpec::TQ_unspecified) {\n if (DS.getTypeQualifiers() & DeclSpec::TQ_volatile)\n Diag(DS.getVolatileSpecLoc(), diag::err_invalid_reference_qualifier_application) << \"volatile\";"},{C,5721,"/// ParseDeclaratorInternal - Parse a C or C++ declarator. The direct-declarator\n/// is parsed by the function passed to it. Pass null, and the direct-declarator\n/// isn\'t parsed at all, making this function effectively parse the C++\n/// ptr-operator production.\n///\n/// If the grammar of this construct is extended, matching changes must also be\n/// made to TryParseDeclarator and MightBeDeclarator, and possibly to\n/// isConstructorDeclarator.\n///\n/// declarator: [C99 6.7.5] [C++ 8p4, dcl.decl]\n/// [C] pointer[opt] direct-declarator\n/// [C++] direct-declarator\n/// [C++] ptr-operator declarator\n///\n/// pointer: [C99 6.7.5]\n/// \'*\' type-qualifier-list[opt]\n/// \'*\' type-qualifier-list[opt] pointer\n///\n/// ptr-operator:\n/// \'*\' cv-qualifier-seq[opt]\n/// \'&\'\n/// [C++0x] \'&&\'\n/// [GNU] \'&\' restrict[opt] attributes[opt]\n/// [GNU?] \'&&\' restrict[opt] attributes[opt]\n/// \'::\'[opt] nested-name-specifier \'*\' cv-qualifier-seq[opt]\nvoid Parser::ParseDeclaratorInternal(Declarator &D, DirectDeclParseFunction DirectDeclParser) {\n if (Kind == tok::star || Kind == tok::caret) {\n } else {\n // C++ 8.3.2p1: cv-qualified references are ill-formed except when the\n // cv-qualifiers are introduced through the use of a typedef or of a\n // template type argument, in which case the cv-qualifiers are ignored.\n if (DS.getTypeQualifiers() != DeclSpec::TQ_unspecified) {\n // \'restrict\' is permitted as an extension.\n if (DS.getTypeQualifiers() & DeclSpec::TQ_atomic)\n Diag(DS.getAtomicSpecLoc(), diag::err_invalid_reference_qualifier_application) << \"_Atomic\";"}} | |||
}, | }, | ||
[" | ["err_invalid_saturation_spec"]={ | ||
[ | [j]="\'_Sat\' specifier is only valid on \'_Fract\' or \'_Accum\', not \'A\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'_Sat\' specifier is only valid on \'_Fract\' or \'_Accum\', not \'%0\'", | ||
[ | [f]=n, | ||
[ | [g]="\'_Sat\' specifier is only valid on \'_Fract\' or \'_Accum\', not \'(.*?)\'", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"ab80f3c8b71e",1528988031,"[Fixed Point Arithmetic] Addition of the remaining fixed point types and their saturated equivalents"}, | ||
[k]={{F,1559,"#include \"clang/Basic/OpenCLImageTypes.def\"\n // Only fixed point types can be saturated\n if (DS.isTypeSpecSat() && !IsFixedPointType)\n S.Diag(DS.getTypeSpecSatLoc(), diag::err_invalid_saturation_spec) << DS.getSpecifierName(DS.getTypeSpecType(), Context.getPrintingPolicy());"}} | |||
}, | }, | ||
[" | ["err_invalid_sign_spec"]={ | ||
[ | [j]="\'A\' cannot be signed or unsigned", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'%0\' cannot be signed or unsigned", | ||
[ | [f]=n, | ||
[ | [g]="\'(.*?)\' cannot be signed or unsigned", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={z,1236199783,A}, | ||
[k]={{G,1142,"/// Finish - This does final analysis of the declspec, rejecting things like\n/// \"_Imaginary\" (lacking an FP type). After calling this method, DeclSpec is\n/// guaranteed to be self-consistent, even if an error occurred.\nvoid DeclSpec::Finish(Sema &S, const PrintingPolicy &Policy) {\n // signed/unsigned are only valid with int/char/wchar_t/_Accum.\n if (getTypeSpecSign() != TypeSpecifierSign::Unspecified) {\n if (TypeSpecType == TST_unspecified)\n else if (TypeSpecType != TST_int && TypeSpecType != TST_int128 && TypeSpecType != TST_char && TypeSpecType != TST_wchar && !IsFixedPointType && TypeSpecType != TST_bitint) {\n S.Diag(TSSLoc, diag::err_invalid_sign_spec) << getSpecifierName((TST)TypeSpecType, Policy);"}} | |||
}, | }, | ||
[" | ["err_invalid_storage_class_in_func_decl"]={ | ||
[ | [j]="invalid storage class specifier in function declarator", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="invalid storage class specifier in function declarator", | ||
[ | [f]=n, | ||
[ | [g]="invalid storage class specifier in function declarator", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={z,1236199783,A}, | ||
[k]={{Q,1393,"/// ParseKNRParamDeclarations - Parse \'declaration-list[opt]\' which provides\n/// types for a function with a K&R-style identifier list for arguments.\nvoid Parser::ParseKNRParamDeclarations(Declarator &D) {\n // Read all the argument declarations.\n while (isDeclarationSpecifier(ImplicitTypenameContext::No)) {\n // C99 6.9.1p6: Declarations shall contain no storage-class specifiers other\n // than register.\n if (DS.getStorageClassSpec() != DeclSpec::SCS_unspecified && DS.getStorageClassSpec() != DeclSpec::SCS_register) {\n Diag(DS.getStorageClassSpecLoc(), diag::err_invalid_storage_class_in_func_decl);"},{Q,1397,"/// ParseKNRParamDeclarations - Parse \'declaration-list[opt]\' which provides\n/// types for a function with a K&R-style identifier list for arguments.\nvoid Parser::ParseKNRParamDeclarations(Declarator &D) {\n // Read all the argument declarations.\n while (isDeclarationSpecifier(ImplicitTypenameContext::No)) {\n if (DS.getThreadStorageClassSpec() != DeclSpec::TSCS_unspecified) {\n Diag(DS.getThreadStorageClassSpecLoc(), diag::err_invalid_storage_class_in_func_decl);"},{p,12876,"/// ActOnParamDeclarator - Called from Parser::ParseFunctionDeclarator()\n/// to introduce parameters into function prototype scope.\nDecl *Sema::ActOnParamDeclarator(Scope *S, Declarator &D) {\n if (DS.getStorageClassSpec() == DeclSpec::SCS_register) {\n } else if (getLangOpts().CPlusPlus && DS.getStorageClassSpec() == DeclSpec::SCS_auto) {\n } else if (DS.getStorageClassSpec() != DeclSpec::SCS_unspecified) {\n Diag(DS.getStorageClassSpecLoc(), diag::err_invalid_storage_class_in_func_decl);"}} | |||
}, | }, | ||
[" | ["err_invalid_string_udl"]={ | ||
[ | [j]="string literal with user-defined suffix cannot be used here", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="string literal with user-defined suffix cannot be used here", | ||
[ | [f]=n, | ||
[ | [g]="string literal with user\\-defined suffix cannot be used here", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={"d67aea28f6cb",1331004107,"User-defined literals: reject string and character UDLs in all places where the"}, | ||
[k]={{u,1421,"retry:\n case tok::string_literal: {\n if (LToken.hasUDSuffix()) {\n Diags.Report(LToken.getLocation(), diag::err_invalid_string_udl);"},{rb,1314,"/// Handle a \\#line directive: C99 6.10.4.\n///\n/// The two acceptable forms are:\n/// \\verbatim\n/// # line digit-sequence\n/// # line digit-sequence \"s-char-sequence\"\n/// \\endverbatim\nvoid Preprocessor::HandleLineDirective() {\n // If the StrTok is \"eod\", then it wasn\'t present. Otherwise, it must be a\n // string followed by eod.\n if (StrTok.is(tok::eod))\n else if (StrTok.isNot(tok::string_literal)) {\n } else if (StrTok.hasUDSuffix()) {\n Diag(StrTok, diag::err_invalid_string_udl);"},{rb,1462,"/// HandleDigitDirective - Handle a GNU line marker directive, whose syntax is\n/// one of the following forms:\n///\n/// # 42\n/// # 42 \"file\" (\'1\' | \'2\')?\n/// # 42 \"file\" (\'1\' | \'2\')? \'3\' \'4\'?\n///\nvoid Preprocessor::HandleDigitDirective(Token &DigitTok) {\n // If the StrTok is \"eod\", then it wasn\'t present. Otherwise, it must be a\n // string followed by eod.\n if (StrTok.is(tok::eod)) {\n } else if (StrTok.isNot(tok::string_literal)) {\n } else if (StrTok.hasUDSuffix()) {\n Diag(StrTok, diag::err_invalid_string_udl);"},{rb,1548,"/// HandleIdentSCCSDirective - Handle a #ident/#sccs directive.\n///\nvoid Preprocessor::HandleIdentSCCSDirective(Token &Tok) {\n if (StrTok.hasUDSuffix()) {\n Diag(StrTok, diag::err_invalid_string_udl);"},{"clang/lib/Lex/Pragma.cpp",228,"/// Handle_Pragma - Read a _Pragma directive, slice it up, process it, then\n/// return the first token after the directive. The _Pragma token has just\n/// been read into \'Tok\'.\nvoid Preprocessor::Handle_Pragma(Token &Tok) {\n if (Tok.hasUDSuffix()) {\n Diag(Tok, diag::err_invalid_string_udl);"},{"clang/lib/Lex/Pragma.cpp",572,"/// ParsePragmaPushOrPopMacro - Handle parsing of pragma push_macro/pop_macro.\n/// Return the IdentifierInfo* associated with the macro to push or pop.\nIdentifierInfo *Preprocessor::ParsePragmaPushOrPopMacro(Token &Tok) {\n if (Tok.hasUDSuffix()) {\n Diag(Tok, diag::err_invalid_string_udl);"},{"clang/lib/Lex/Preprocessor.cpp",1271,"bool Preprocessor::FinishLexStringLiteral(Token &Result, std::string &String, const char *DiagnosticTag, bool AllowMacroExpansion) {\n do {\n if (Result.hasUDSuffix())\n Diag(Result, diag::err_invalid_string_udl);"},{q,1664,"ExprResult Sema::ActOnUnevaluatedStringLiteral(ArrayRef<Token> StringToks) {\n if (!Literal.getUDSuffix().empty()) {\n return ExprError(Diag(UDSuffixLoc, diag::err_invalid_string_udl));"},{q,1740,"/// ActOnStringLiteral - The specified tokens were lexed as pasted string\n/// fragments (e.g. \"foo\" \"bar\" L\"baz\"). The result string has to handle string\n/// concatenation ([C99 5.1.1.2, translation phase #6]), so it may come from\n/// multiple tokens. However, the common case is that StringToks points to one\n/// string.\n///\nExprResult Sema::ActOnStringLiteral(ArrayRef<Token> StringToks, Scope *UDLScope) {\n // Make sure we\'re allowed user-defined literals here.\n if (!UDLScope)\n return ExprError(Diag(UDSuffixLoc, diag::err_invalid_string_udl));"}} | |||
}, | }, | ||
[" | ["err_invalid_suffix_constant"]={ | ||
[ | [j]="invalid suffix \'A\' on ... constant", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="invalid suffix \'%0\' on %select{integer|floating|fixed-point}1 constant", | ||
[ | [f]=n, | ||
[ | [g]="invalid suffix \'(.*?)\' on (?:integer|floating|fixed\\-point) constant", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={"71a51ff10ee1",1447313810,"Use %select to merge two diagnostics that only differ in one word and are emitted in the same place...."}, | ||
[k]={{W,1032,"/// integer-constant: [C99 6.4.4.1]\n/// decimal-constant integer-suffix\n/// octal-constant integer-suffix\n/// hexadecimal-constant integer-suffix\n/// binary-literal integer-suffix [GNU, C++1y]\n/// user-defined-integer-literal: [C++11 lex.ext]\n/// decimal-literal ud-suffix\n/// octal-literal ud-suffix\n/// hexadecimal-literal ud-suffix\n/// binary-literal ud-suffix [GNU, C++1y]\n/// decimal-constant:\n/// nonzero-digit\n/// decimal-constant digit\n/// octal-constant:\n/// 0\n/// octal-constant octal-digit\n/// hexadecimal-constant:\n/// hexadecimal-prefix hexadecimal-digit\n/// hexadecimal-constant hexadecimal-digit\n/// hexadecimal-prefix: one of\n/// 0x 0X\n/// binary-literal:\n/// 0b binary-digit\n/// 0B binary-digit\n/// binary-literal binary-digit\n/// integer-suffix:\n/// unsigned-suffix [long-suffix]\n/// unsigned-suffix [long-long-suffix]\n/// long-suffix [unsigned-suffix]\n/// long-long-suffix [unsigned-sufix]\n/// nonzero-digit:\n/// 1 2 3 4 5 6 7 8 9\n/// octal-digit:\n/// 0 1 2 3 4 5 6 7\n/// hexadecimal-digit:\n/// 0 1 2 3 4 5 6 7 8 9\n/// a b c d e f\n/// A B C D E F\n/// binary-digit:\n/// 0\n/// 1\n/// unsigned-suffix: one of\n/// u U\n/// long-suffix: one of\n/// l L\n/// long-long-suffix: one of\n/// ll LL\n///\n/// floating-constant: [C99 6.4.4.2]\n/// TODO: add rules...\n///\nNumericLiteralParser::NumericLiteralParser(StringRef TokSpelling, SourceLocation TokLoc, const SourceManager &SM, const LangOptions &LangOpts, const TargetInfo &Target, DiagnosticsEngine &Diags) : SM(SM), LangOpts(LangOpts), Diags(Diags), ThisTokBegin(TokSpelling.begin()), ThisTokEnd(TokSpelling.end()) {\n // \"i\", \"if\", and \"il\" are user-defined suffixes in C++1y.\n if (s != ThisTokEnd || isImaginary) {\n if (s != ThisTokEnd) {\n Diags.Report(Lexer::AdvanceToTokenCharacter(TokLoc, SuffixBegin - ThisTokBegin, SM, LangOpts), diag::err_invalid_suffix_constant) << StringRef(SuffixBegin, ThisTokEnd - SuffixBegin) << (isFixedPointConstant ? 2 : isFPConstant);"}} | |||
}, | }, | ||
[" | ["err_invalid_super_scope"]={ | ||
[ | [j]="invalid use of \'__super\', this keyword can only be used inside class or member function scope", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="invalid use of \'__super\', this keyword can only be used inside class or member function scope", | ||
[ | [f]=n, | ||
[ | [g]="invalid use of \'__super\', this keyword can only be used inside class or member function scope", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"67860249e064",1411691300,"-ms-extensions: Implement __super scope specifier (PR13236)."}, | ||
[k]={{cb,309,"bool Sema::ActOnSuperScopeSpecifier(SourceLocation SuperLoc, SourceLocation ColonColonLoc, CXXScopeSpec &SS) {\n if (!RD) {\n Diag(SuperLoc, diag::err_invalid_super_scope);"}} | |||
}, | }, | ||
[" | ["err_invalid_this_use"]={ | ||
[ | [j]="invalid use of \'this\' outside of a non-static member function", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="invalid use of \'this\' outside of a non-static member function", | ||
[ | [f]=n, | ||
[ | [g]="invalid use of \'this\' outside of a non\\-static member function", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{B,1251,"ExprResult Sema::ActOnCXXThis(SourceLocation Loc) {\n if (ThisTy.isNull())\n return Diag(Loc, diag::err_invalid_this_use);"}} | |||
}, | }, | ||
[" | ["err_invalid_thread"]={ | ||
[ | [j]="\'A\' is only allowed on variable declarations", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'%0\' is only allowed on variable declarations", | ||
[ | [f]=n, | ||
[ | [g]="\'(.*?)\' is only allowed on variable declarations", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"d5c0eeda7285",1240172875,"Add more thorough/correct checking for invalid __thread specifiers."}, | ||
[k]={{p,8507,"NamedDecl *Sema::ActOnFunctionDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamListsRef, bool &AddToScope) {\n if (DeclSpec::TSCS TSCS = D.getDeclSpec().getThreadStorageClassSpec())\n Diag(D.getDeclSpec().getThreadStorageClassSpecLoc(), diag::err_invalid_thread) << DeclSpec::getSpecifierName(TSCS);"},{p,12881,"/// ActOnParamDeclarator - Called from Parser::ParseFunctionDeclarator()\n/// to introduce parameters into function prototype scope.\nDecl *Sema::ActOnParamDeclarator(Scope *S, Declarator &D) {\n if (DeclSpec::TSCS TSCS = DS.getThreadStorageClassSpec())\n Diag(DS.getThreadStorageClassSpecLoc(), diag::err_invalid_thread) << DeclSpec::getSpecifierName(TSCS);"},{p,15762,"/// HandleField - Analyze a field of a C struct or a C++ data member.\n///\nFieldDecl *Sema::HandleField(Scope *S, RecordDecl *Record, SourceLocation DeclStart, Declarator &D, Expr *BitWidth, InClassInitStyle InitStyle, AccessSpecifier AS) {\n if (DeclSpec::TSCS TSCS = D.getDeclSpec().getThreadStorageClassSpec())\n Diag(D.getDeclSpec().getThreadStorageClassSpecLoc(), diag::err_invalid_thread) << DeclSpec::getSpecifierName(TSCS);"},{r,16117,"/// HandleMSProperty - Analyze a __delcspec(property) field of a C++ class.\n///\nMSPropertyDecl *Sema::HandleMSProperty(Scope *S, RecordDecl *Record, SourceLocation DeclStart, Declarator &D, Expr *BitWidth, InClassInitStyle InitStyle, AccessSpecifier AS, const ParsedAttr &MSPropertyAttr) {\n if (DeclSpec::TSCS TSCS = D.getDeclSpec().getThreadStorageClassSpec())\n Diag(D.getDeclSpec().getThreadStorageClassSpecLoc(), diag::err_invalid_thread) << DeclSpec::getSpecifierName(TSCS);"},{hb,4334,"Decl *Sema::ActOnObjCExceptionDecl(Scope *S, Declarator &D) {\n if (DeclSpec::TSCS TSCS = D.getDeclSpec().getThreadStorageClassSpec())\n Diag(D.getDeclSpec().getThreadStorageClassSpecLoc(), diag::err_invalid_thread) << DeclSpec::getSpecifierName(TSCS);"}} | |||
}, | }, | ||
[" | ["err_invalid_token_after_declarator_suggest_equal"]={ | ||
[ | [j]="invalid A at end of declaration; did you mean \'=\'?", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="invalid %0 at end of declaration; did you mean \'=\'?", | ||
[ | [f]=n, | ||
[ | [g]="invalid (.*?) at end of declaration; did you mean \'\\=\'\\?", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={"4972a6dd080f",1327010511,"Extend the error of invalid token after declarations to include fixits for "}, | ||
[k]={{Q,2008,"bool Parser::isTokenEqualOrEqualTypo() {\n case tok::equalequal: // ==\n Diag(Tok, diag::err_invalid_token_after_declarator_suggest_equal) << Kind << FixItHint::CreateReplacement(SourceRange(Tok.getLocation()), \"=\");"}} | |||
}, | }, | ||
[" | ["err_invalid_token_after_toplevel_declarator"]={ | ||
[ | [j]="expected \';\' after top level declarator", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="expected \';\' after top level declarator", | ||
[ | [f]=n, | ||
[ | [g]="expected \';\' after top level declarator", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={z,1236199783,A}, | ||
[k]={{C,2110,"/// ParseDeclGroup - Having concluded that this is either a function\n/// definition or a group of object declarations, actually parse the\n/// result.\nParser::DeclGroupPtrTy Parser::ParseDeclGroup(ParsingDeclSpec &DS, DeclaratorContext Context, ParsedAttributes &Attrs, SourceLocation *DeclEnd, ForRangeInit *FRI) {\n if (ExpectSemi && ExpectAndConsumeSemi(Context == DeclaratorContext::File ? diag::err_invalid_token_after_toplevel_declarator : diag::err_expected_semi_declaration)) {"}} | |||
}, | }, | ||
[" | ["err_invalid_type_for_program_scope_var"]={ | ||
[ | [j]="the A type cannot be used to declare a program scope variable", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="the %0 type cannot be used to declare a program scope variable", | ||
[ | [f]=n, | ||
[ | [g]="the (.*?) type cannot be used to declare a program scope variable", | ||
[ | [h]=a, | ||
[ | [i]="Related Result Type Issue", | ||
[ | [b]={"c211c6c8844a",1480414900,"[OpenCL] Prohibit using reserve_id_t in program scope."}, | ||
[k]={{p,6526,"/// Returns true if there hasn\'t been any invalid type diagnosed.\nstatic bool diagnoseOpenCLTypes(Sema &Se, VarDecl *NewVD) {\n // OpenCL v1.2 s6.9.r:\n // The event type cannot be used to declare a program scope variable.\n // OpenCL v2.0 s6.9.q:\n // The clk_event_t and reserve_id_t types cannot be declared in program\n // scope.\n if (NewVD->hasGlobalStorage() && !NewVD->isStaticLocal()) {\n if (R->isReserveIDT() || R->isClkEventT() || R->isEventT()) {\n Se.Diag(NewVD->getLocation(), diag::err_invalid_type_for_program_scope_var) << R;"}} | |||
}, | }, | ||
[" | ["err_invalid_ucn_name"]={ | ||
[ | [j]="\'A\' is not a valid Unicode character name", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'%0\' is not a valid Unicode character name", | ||
[ | [f]=n, | ||
[ | [g]="\'(.*?)\' is not a valid Unicode character name", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={M,1625925174,N}, | ||
[k]={{"clang/lib/Lex/Lexer.cpp",3163,"std::optional<uint32_t> Lexer::tryReadNamedUCN(const char *&StartPtr, const char *SlashLoc, Token *Result) {\n if (!Match) {\n if (Diagnose) {\n Diag(StartName, diag::err_invalid_ucn_name) << StringRef(Buffer.data(), Buffer.size()) << makeCharRange(*this, StartName, CurPtr - CharSize);"},{W,471,"static void DiagnoseInvalidUnicodeCharacterName(DiagnosticsEngine *Diags, const LangOptions &Features, FullSourceLoc Loc, const char *TokBegin, const char *TokRangeBegin, const char *TokRangeEnd, llvm::StringRef Name) {\n Diag(Diags, Features, Loc, TokBegin, TokRangeBegin, TokRangeEnd, diag::err_invalid_ucn_name) << Name;"}} | |||
}, | }, | ||
[" | ["err_invalid_use_of_array_type"]={ | ||
[ | [j]="an array type is not allowed here", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="an array type is not allowed here", | ||
[ | [f]=n, | ||
[ | [g]="an array type is not allowed here", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{B,3396,"/// Check the use of the given variable as a C++ condition in an if,\n/// while, do-while, or switch statement.\nExprResult Sema::CheckConditionVariable(VarDecl *ConditionVar, SourceLocation StmtLoc, ConditionKind CK) {\n // C++ [stmt.select]p2:\n // The declarator shall not specify a function or an array.\n if (T->isFunctionType())\n else if (T->isArrayType())\n return ExprError(Diag(ConditionVar->getLocation(), diag::err_invalid_use_of_array_type) << ConditionVar->getSourceRange());"}} | |||
}, | }, | ||
[" | ["err_invalid_use_of_function_type"]={ | ||
[ | [j]="a function type is not allowed here", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="a function type is not allowed here", | ||
[ | [f]=n, | ||
[ | [g]="a function type is not allowed here", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{r,15572,"/// ActOnCXXConditionDeclarationExpr - Parsed a condition declaration of a\n/// C++ if/switch/while/for statement.\n/// e.g: \"if (int x = f()) {...}\"\nDeclResult Sema::ActOnCXXConditionDeclaration(Scope *S, Declarator &D) {\n if (isa<FunctionDecl>(Dcl)) { // The declarator shall not specify a function.\n Diag(Dcl->getLocation(), diag::err_invalid_use_of_function_type) << D.getSourceRange();"},{B,3394,"/// Check the use of the given variable as a C++ condition in an if,\n/// while, do-while, or switch statement.\nExprResult Sema::CheckConditionVariable(VarDecl *ConditionVar, SourceLocation StmtLoc, ConditionKind CK) {\n // C++ [stmt.select]p2:\n // The declarator shall not specify a function or an array.\n if (T->isFunctionType())\n return ExprError(Diag(ConditionVar->getLocation(), diag::err_invalid_use_of_function_type) << ConditionVar->getSourceRange());"}} | |||
}, | }, | ||
[" | ["err_invalid_utf8"]={ | ||
[ | [j]="source file is not valid UTF-8", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="source file is not valid UTF-8", | ||
[ | [f]=n, | ||
[ | [g]="source file is not valid UTF\\-8", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={"7f43dddae066",1359060646,"Handle universal character names and Unicode characters outside of literals."}, | ||
[k]={{"clang/lib/Lex/Lexer.cpp",4062,"LexStart:\n default: {\n Diag(CurPtr, diag::err_invalid_utf8);"}} | |||
}, | }, | ||
[" | ["err_invalid_var_template_spec_type"]={ | ||
[ | [j]="type A of ... of B does not match expected type C", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="type %2 of %select{explicit instantiation|explicit specialization|partial specialization|redeclaration}0 of %1 does not match expected type %3", | ||
[ | [f]=n, | ||
[ | [g]="type (.*?) of (?:explicit instantiation|explicit specialization|partial specialization|redeclaration) of (.*?) does not match expected type (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"39a1e507ff0b",1375750985,"Started implementing variable templates. Top level declarations should be fully supported, up to som..."}, | ||
[k]={{K,8698,"DeclResult Sema::ActOnExplicitInstantiation(Scope *S, SourceLocation ExternLoc, SourceLocation TemplateLoc, Declarator &D) {\n if (!R->isFunctionType()) {\n // Check the new variable specialization against the parsed input.\n if (PrevTemplate && !Context.hasSameType(Prev->getType(), R)) {\n Diag(T->getTypeLoc().getBeginLoc(), diag::err_invalid_var_template_spec_type) << 0 << PrevTemplate << R << Prev->getType();"}} | |||
}, | }, | ||
[" | ["err_invalid_vector_bool_decl_spec"]={ | ||
[ | [j]="cannot use \'A\' with \'__vector bool\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot use \'%0\' with \'__vector bool\'", | ||
[ | [f]=n, | ||
[ | [g]="cannot use \'(.*?)\' with \'__vector bool\'", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"37141f4fb4ac",1277272824,"improve altivec vector bool/pixel support, patch by Anton Yartsev"}, | ||
[k]={{G,850,"bool DeclSpec::SetTypeAltiVecBool(bool isAltiVecBool, SourceLocation Loc, const char *&PrevSpec, unsigned &DiagID, const PrintingPolicy &Policy) {\n if (!TypeAltiVecVector || TypeAltiVecBool || (TypeSpecType != TST_unspecified)) {\n DiagID = diag::err_invalid_vector_bool_decl_spec;"},{G,1081,"/// Finish - This does final analysis of the declspec, rejecting things like\n/// \"_Imaginary\" (lacking an FP type). After calling this method, DeclSpec is\n/// guaranteed to be self-consistent, even if an error occurred.\nvoid DeclSpec::Finish(Sema &S, const PrintingPolicy &Policy) {\n // Validate and finalize AltiVec vector declspec.\n if (TypeAltiVecVector) {\n if (TypeAltiVecBool) {\n // Sign specifiers are not allowed with vector bool. (PIM 2.1)\n if (getTypeSpecSign() != TypeSpecifierSign::Unspecified) {\n S.Diag(TSSLoc, diag::err_invalid_vector_bool_decl_spec) << getSpecifierName(getTypeSpecSign());"},{G,1087,"/// Finish - This does final analysis of the declspec, rejecting things like\n/// \"_Imaginary\" (lacking an FP type). After calling this method, DeclSpec is\n/// guaranteed to be self-consistent, even if an error occurred.\nvoid DeclSpec::Finish(Sema &S, const PrintingPolicy &Policy) {\n // Validate and finalize AltiVec vector declspec.\n if (TypeAltiVecVector) {\n if (TypeAltiVecBool) {\n // Only char/int are valid with vector bool prior to Power10.\n // Power10 adds instructions that produce vector bool data\n // for quadwords as well so allow vector bool __int128.\n if (((TypeSpecType != TST_unspecified) && (TypeSpecType != TST_char) && (TypeSpecType != TST_int) && (TypeSpecType != TST_int128)) || TypeAltiVecPixel) {\n S.Diag(TSTLoc, diag::err_invalid_vector_bool_decl_spec) << (TypeAltiVecPixel ? \"__pixel\" : getSpecifierName((TST)TypeSpecType, Policy));"},{G,1095,"/// Finish - This does final analysis of the declspec, rejecting things like\n/// \"_Imaginary\" (lacking an FP type). After calling this method, DeclSpec is\n/// guaranteed to be self-consistent, even if an error occurred.\nvoid DeclSpec::Finish(Sema &S, const PrintingPolicy &Policy) {\n // Validate and finalize AltiVec vector declspec.\n if (TypeAltiVecVector) {\n if (TypeAltiVecBool) {\n // Only \'short\' and \'long long\' are valid with vector bool. (PIM 2.1)\n if ((getTypeSpecWidth() != TypeSpecifierWidth::Unspecified) && (getTypeSpecWidth() != TypeSpecifierWidth::Short) && (getTypeSpecWidth() != TypeSpecifierWidth::LongLong))\n S.Diag(TSWRange.getBegin(), diag::err_invalid_vector_bool_decl_spec) << getSpecifierName(getTypeSpecWidth());"}} | |||
}, | }, | ||
[" | ["err_invalid_vector_bool_int128_decl_spec"]={ | ||
[ | [j]="use of \'__int128\' with \'__vector bool\' requires VSX support enabled (on POWER10 or later)", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="use of \'__int128\' with \'__vector bool\' requires VSX support enabled (on POWER10 or later)", | ||
[ | [f]=n, | ||
[ | [g]="use of \'__int128\' with \'__vector bool\' requires VSX support enabled \\(on POWER10 or later\\)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"14f6bfcb52e7",1582847864,"[clang] Implement objc_non_runtime_protocol to remove protocol metadata"}, | ||
[k]={{G,1091,"/// Finish - This does final analysis of the declspec, rejecting things like\n/// \"_Imaginary\" (lacking an FP type). After calling this method, DeclSpec is\n/// guaranteed to be self-consistent, even if an error occurred.\nvoid DeclSpec::Finish(Sema &S, const PrintingPolicy &Policy) {\n // Validate and finalize AltiVec vector declspec.\n if (TypeAltiVecVector) {\n if (TypeAltiVecBool) {\n // vector bool __int128 requires Power10.\n if ((TypeSpecType == TST_int128) && (!S.Context.getTargetInfo().hasFeature(\"power10-vector\")))\n S.Diag(TSTLoc, diag::err_invalid_vector_bool_int128_decl_spec);"}} | |||
}, | }, | ||
[" | ["err_invalid_vector_decl_spec_combination"]={ | ||
[ | [j]="cannot combine with previous \'A\' declaration specifier. \'__vector\' must be first", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot combine with previous \'%0\' declaration specifier. \'__vector\' must be first", | ||
[ | [f]=n, | ||
[ | [g]="cannot combine with previous \'(.*?)\' declaration specifier\\. \'__vector\' must be first", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"2233460de6ed",1265328742,"First stage of adding AltiVec support"}, | ||
[k]={{G,808,"bool DeclSpec::SetTypeAltiVecVector(bool isAltiVecVector, SourceLocation Loc, const char *&PrevSpec, unsigned &DiagID, const PrintingPolicy &Policy) {\n if (TypeSpecType != TST_unspecified) {\n DiagID = diag::err_invalid_vector_decl_spec_combination;"}} | |||
}, | }, | ||
[" | ["err_invalid_vector_double_decl_spec"]={ | ||
[ | [j]="use of \'double\' with \'__vector\' requires VSX support to be enabled (available on POWER7 or later)", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="use of \'double\' with \'__vector\' requires VSX support to be enabled (available on POWER7 or later)", | ||
[ | [f]=n, | ||
[ | [g]="use of \'double\' with \'__vector\' requires VSX support to be enabled \\(available on POWER7 or later\\)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"691e01d94e53",1414783164,"[PowerPC] Initial VSX intrinsic support, with min/max for vector double"}, | ||
[k]={{G,1106,"/// Finish - This does final analysis of the declspec, rejecting things like\n/// \"_Imaginary\" (lacking an FP type). After calling this method, DeclSpec is\n/// guaranteed to be self-consistent, even if an error occurred.\nvoid DeclSpec::Finish(Sema &S, const PrintingPolicy &Policy) {\n // Validate and finalize AltiVec vector declspec.\n if (TypeAltiVecVector) {\n if (TypeAltiVecBool) {\n } else if (TypeSpecType == TST_double) {\n // vector long double and vector long long double are never allowed.\n // vector double is OK for Power7 and later, and ZVector.\n if (getTypeSpecWidth() == TypeSpecifierWidth::Long || getTypeSpecWidth() == TypeSpecifierWidth::LongLong)\n else if (!S.Context.getTargetInfo().hasFeature(\"vsx\") && !S.getLangOpts().ZVector)\n S.Diag(TSTLoc, diag::err_invalid_vector_double_decl_spec);"}} | |||
}, | }, | ||
[" | ["err_invalid_vector_float_decl_spec"]={ | ||
[ | [j]="cannot use \'float\' with \'__vector\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot use \'float\' with \'__vector\'", | ||
[ | [f]=n, | ||
[ | [g]="cannot use \'float\' with \'__vector\'", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"3c5038a535c8",1438265316,"Add support for System z vector language extensions"}, | ||
[k]={{G,1111,"/// Finish - This does final analysis of the declspec, rejecting things like\n/// \"_Imaginary\" (lacking an FP type). After calling this method, DeclSpec is\n/// guaranteed to be self-consistent, even if an error occurred.\nvoid DeclSpec::Finish(Sema &S, const PrintingPolicy &Policy) {\n // Validate and finalize AltiVec vector declspec.\n if (TypeAltiVecVector) {\n if (TypeAltiVecBool) {\n } else if (TypeSpecType == TST_double) {\n } else if (TypeSpecType == TST_float) {\n // vector float is unsupported for ZVector unless we have the\n // vector-enhancements facility 1 (ISA revision 12).\n if (S.getLangOpts().ZVector && !S.Context.getTargetInfo().hasFeature(\"arch12\"))\n S.Diag(TSTLoc, diag::err_invalid_vector_float_decl_spec);"}} | |||
}, | }, | ||
[" | ["err_invalid_vector_int128_decl_spec"]={ | ||
[ | [j]="use of \'__int128\' with \'__vector\' requires extended Altivec support (available on POWER8 or later)", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="use of \'__int128\' with \'__vector\' requires extended Altivec support (available on POWER8 or later)", | ||
[ | [f]=n, | ||
[ | [g]="use of \'__int128\' with \'__vector\' requires extended Altivec support \\(available on POWER8 or later\\)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"3dbcea8b957a",1615397021,"Reland [clang] Check unsupported types in expressions"}, | ||
[k]={{G,1076,"/// Finish - This does final analysis of the declspec, rejecting things like\n/// \"_Imaginary\" (lacking an FP type). After calling this method, DeclSpec is\n/// guaranteed to be self-consistent, even if an error occurred.\nvoid DeclSpec::Finish(Sema &S, const PrintingPolicy &Policy) {\n // Validate and finalize AltiVec vector declspec.\n if (TypeAltiVecVector) {\n // No vector __int128 prior to Power8.\n if ((TypeSpecType == TST_int128) && !S.Context.getTargetInfo().hasFeature(\"power8-vector\"))\n S.Diag(TSTLoc, diag::err_invalid_vector_int128_decl_spec);"}} | |||
}, | }, | ||
[" | ["err_invalid_vector_long_decl_spec"]={ | ||
[ | [j]="cannot use \'long\' with \'__vector\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot use \'long\' with \'__vector\'", | ||
[ | [f]=n, | ||
[ | [g]="cannot use \'long\' with \'__vector\'", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"3c5038a535c8",1438265316,"Add support for System z vector language extensions"}, | ||
[k]={{G,1121,"/// Finish - This does final analysis of the declspec, rejecting things like\n/// \"_Imaginary\" (lacking an FP type). After calling this method, DeclSpec is\n/// guaranteed to be self-consistent, even if an error occurred.\nvoid DeclSpec::Finish(Sema &S, const PrintingPolicy &Policy) {\n // Validate and finalize AltiVec vector declspec.\n if (TypeAltiVecVector) {\n if (TypeAltiVecBool) {\n } else if (TypeSpecType == TST_double) {\n } else if (TypeSpecType == TST_float) {\n } else if (getTypeSpecWidth() == TypeSpecifierWidth::Long) {\n // Vector long is unsupported for ZVector, or without VSX, and deprecated\n // for AltiVec.\n // It has also been historically deprecated on AIX (as an alias for\n // \"vector int\" in both 32-bit and 64-bit modes). It was then made\n // unsupported in the Clang-based XL compiler since the deprecated type\n // has a number of conflicting semantics and continuing to support it\n // is a disservice to users.\n if (S.getLangOpts().ZVector || !S.Context.getTargetInfo().hasFeature(\"vsx\") || S.Context.getTargetInfo().getTriple().isOSAIX())\n S.Diag(TSWRange.getBegin(), diag::err_invalid_vector_long_decl_spec);"}} | |||
}, | }, | ||
[" | ["err_invalid_vector_long_double_decl_spec"]={ | ||
[ | [j]="cannot use \'long double\' with \'__vector\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot use \'long double\' with \'__vector\'", | ||
[ | [f]=n, | ||
[ | [g]="cannot use \'long double\' with \'__vector\'", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"691e01d94e53",1414783164,"[PowerPC] Initial VSX intrinsic support, with min/max for vector double"}, | ||
[k]={{G,1104,"/// Finish - This does final analysis of the declspec, rejecting things like\n/// \"_Imaginary\" (lacking an FP type). After calling this method, DeclSpec is\n/// guaranteed to be self-consistent, even if an error occurred.\nvoid DeclSpec::Finish(Sema &S, const PrintingPolicy &Policy) {\n // Validate and finalize AltiVec vector declspec.\n if (TypeAltiVecVector) {\n if (TypeAltiVecBool) {\n } else if (TypeSpecType == TST_double) {\n // vector long double and vector long long double are never allowed.\n // vector double is OK for Power7 and later, and ZVector.\n if (getTypeSpecWidth() == TypeSpecifierWidth::Long || getTypeSpecWidth() == TypeSpecifierWidth::LongLong)\n S.Diag(TSWRange.getBegin(), diag::err_invalid_vector_long_double_decl_spec);"}} | |||
}, | }, | ||
[" | ["err_invalid_vector_long_long_decl_spec"]={ | ||
[ | [j]="use of \'long long\' with \'__vector\' requires VSX support (available on POWER7 or later) to be enabled", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="use of \'long long\' with \'__vector\' requires VSX support (available on POWER7 or later) to be enabled", | ||
[ | [f]=n, | ||
[ | [g]="use of \'long long\' with \'__vector\' requires VSX support \\(available on POWER7 or later\\) to be enabled", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"2351bec3ead0",1425413323,"[PowerPC]Activate \"vector bool long long\" (and alternate spellings) as a valid type for Altivec supp..."}, | ||
[k]={{G,1072,"/// Finish - This does final analysis of the declspec, rejecting things like\n/// \"_Imaginary\" (lacking an FP type). After calling this method, DeclSpec is\n/// guaranteed to be self-consistent, even if an error occurred.\nvoid DeclSpec::Finish(Sema &S, const PrintingPolicy &Policy) {\n // Validate and finalize AltiVec vector declspec.\n if (TypeAltiVecVector) {\n // No vector long long without VSX (or ZVector).\n if ((getTypeSpecWidth() == TypeSpecifierWidth::LongLong) && !S.Context.getTargetInfo().hasFeature(\"vsx\") && !S.getLangOpts().ZVector)\n S.Diag(TSWRange.getBegin(), diag::err_invalid_vector_long_long_decl_spec);"}} | |||
}, | }, | ||
[" | ["err_invalid_vfs_overlay"]={ | ||
[ | [j]="invalid virtual filesystem overlay file \'A\'", | ||
[ | [c]=I, | ||
[ | [d]=H, | ||
[ | [e]="invalid virtual filesystem overlay file \'%0\'", | ||
[ | [f]=J, | ||
[ | [g]="invalid virtual filesystem overlay file \'(.*?)\'", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"801272a98c71",1393352627,"Add a driver option -ivfsoverlay"}, | ||
[k]={{Bb,3940,"IntrusiveRefCntPtr<llvm::vfs::FileSystem> clang::createVFSFromOverlayFiles(ArrayRef<std::string> VFSOverlayFiles, DiagnosticsEngine &Diags, IntrusiveRefCntPtr<llvm::vfs::FileSystem> BaseFS) {\n // earlier vfs files are on the bottom\n for (const auto &File : VFSOverlayFiles) {\n if (!FS) {\n Diags.Report(diag::err_invalid_vfs_overlay) << File;"}} | |||
}, | }, | ||
[" | ["err_invalid_width_spec"]={ | ||
[ | [j]="\'... A\' is invalid", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'%select{|short|long|long long}0 %1\' is invalid", | ||
[ | [f]=n, | ||
[ | [g]="\'(?:|short|long|long long) (.*?)\' is invalid", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"54a6a68c706b",1447524968,"Merge some similar diagnostics using %select."}, | ||
[k]={{G,1157,"/// Finish - This does final analysis of the declspec, rejecting things like\n/// \"_Imaginary\" (lacking an FP type). After calling this method, DeclSpec is\n/// guaranteed to be self-consistent, even if an error occurred.\nvoid DeclSpec::Finish(Sema &S, const PrintingPolicy &Policy) {\n case TypeSpecifierWidth::LongLong: // long long int\n if (TypeSpecType == TST_unspecified)\n else if (!(TypeSpecType == TST_int || (IsFixedPointType && getTypeSpecWidth() != TypeSpecifierWidth::LongLong))) {\n S.Diag(TSWRange.getBegin(), diag::err_invalid_width_spec) << (int)TypeSpecWidth << getSpecifierName((TST)TypeSpecType, Policy);"},{G,1167,"/// Finish - This does final analysis of the declspec, rejecting things like\n/// \"_Imaginary\" (lacking an FP type). After calling this method, DeclSpec is\n/// guaranteed to be self-consistent, even if an error occurred.\nvoid DeclSpec::Finish(Sema &S, const PrintingPolicy &Policy) {\n case TypeSpecifierWidth::Long: // long double, long int\n if (TypeSpecType == TST_unspecified)\n else if (TypeSpecType != TST_int && TypeSpecType != TST_double && !IsFixedPointType) {\n S.Diag(TSWRange.getBegin(), diag::err_invalid_width_spec) << (int)TypeSpecWidth << getSpecifierName((TST)TypeSpecType, Policy);"}} | |||
}, | }, | ||
[" | ["err_ivar_access_using_property_syntax_suggest"]={ | ||
[ | [j]="property A not found on object of type B; did you mean to access instance variable C?", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="property %0 not found on object of type %1; did you mean to access instance variable %2?", | ||
[ | [f]=n, | ||
[ | [g]="property (.*?) not found on object of type (.*?); did you mean to access instance variable (.*?)\\?", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"c297cd883641",1309219252,"Provide fix-it for \'.\' <-> \'->\' for Objective-C ivar/property access."}, | ||
[k]={{O,1731,"/// HandleExprPropertyRefExpr - Handle foo.bar where foo is a pointer to an\n/// objective C interface. This is a property reference expression.\nExprResult Sema::HandleExprPropertyRefExpr(const ObjCObjectPointerType *OPT, Expr *BaseExpr, SourceLocation OpLoc, DeclarationName MemberName, SourceLocation MemberLoc, SourceLocation SuperLoc, QualType SuperType, bool Super) {\n if (ObjCIvarDecl *Ivar = IFace->lookupInstanceVariable(Member, ClassDeclared)) {\n Diag(MemberLoc, diag::err_ivar_access_using_property_syntax_suggest) << MemberName << QualType(OPT, 0) << Ivar->getDeclName() << FixItHint::CreateReplacement(OpLoc, \"->\");"}} | |||
}, | }, | ||
[" | ["err_ivar_in_superclass_use"]={ | ||
[ | [j]="property A attempting to use instance variable B declared in super class C", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="property %0 attempting to use instance variable %1 declared in super class %2", | ||
[ | [f]=n, | ||
[ | [g]="property (.*?) attempting to use instance variable (.*?) declared in super class (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={gb,1480718311,ib}, | ||
[k]={{Gb,1108,"/// ActOnPropertyImplDecl - This routine performs semantic checks and\n/// builds the AST node for a property implementation declaration; declared\n/// as \\@synthesize or \\@dynamic.\n///\nDecl *Sema::ActOnPropertyImplDecl(Scope *S, SourceLocation AtLoc, SourceLocation PropertyLoc, bool Synthesize, IdentifierInfo *PropertyId, IdentifierInfo *PropertyIvar, SourceLocation PropertyIvarLoc, ObjCPropertyQueryKind QueryKind) {\n // Check that we have a valid, previously declared ivar for @synthesize\n if (Synthesize) {\n if (!Ivar) {\n } else if (getLangOpts().ObjCRuntime.isNonFragile() && !declaresSameEntity(ClassDeclared, IDecl)) {\n Diag(PropertyDiagLoc, diag::err_ivar_in_superclass_use) << property->getDeclName() << Ivar->getDeclName() << ClassDeclared->getDeclName();"}} | |||
}, | }, | ||
[" | ["err_ivar_reference_type"]={ | ||
[ | [j]="instance variables cannot be of reference type", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="instance variables cannot be of reference type", | ||
[ | [f]=n, | ||
[ | [g]="instance variables cannot be of reference type", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"0103d67f9816",1272319623,"Diagnose declaration of reference typed ivars."}, | ||
[k]={{p,16093,"/// ActOnIvar - Each ivar field of an objective-c class is passed into this\n/// in order to create an IvarDecl object for it.\nDecl *Sema::ActOnIvar(Scope *S, SourceLocation DeclStart, Declarator &D, Expr *BitfieldWidth, tok::ObjCKeywordKind Visibility) {\n if (T->isReferenceType()) {\n Diag(Loc, diag::err_ivar_reference_type);"}} | |||
}, | }, | ||
[" | ["err_ivar_use_in_class_method"]={ | ||
[ | [j]="instance variable A accessed in class method", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="instance variable %0 accessed in class method", | ||
[ | [f]=n, | ||
[ | [g]="instance variable (.*?) accessed in class method", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={gb,1480718311,ib}, | ||
[k]={{q,2537,"/// The parser has read a name in, and Sema has detected that we\'re currently\n/// inside an ObjC method. Perform some additional checks and determine if we\n/// should form a reference to an ivar.\n///\n/// Ideally, most of this would be done by lookup, but there\'s\n/// actually quite a lot of extra work involved.\nDeclResult Sema::LookupIvarInObjCMethod(LookupResult &Lookup, Scope *S, IdentifierInfo *II) {\n if (LookForIvars) {\n if (IFace && (IV = IFace->lookupInstanceVariable(II, ClassDeclared))) {\n // Diagnose using an ivar in a class method.\n if (IsClassMethod) {\n Diag(Loc, diag::err_ivar_use_in_class_method) << IV->getDeclName();"},{q,2560,"/// The parser has read a name in, and Sema has detected that we\'re currently\n/// inside an ObjC method. Perform some additional checks and determine if we\n/// should form a reference to an ivar.\n///\n/// Ideally, most of this would be done by lookup, but there\'s\n/// actually quite a lot of extra work involved.\nDeclResult Sema::LookupIvarInObjCMethod(LookupResult &Lookup, Scope *S, IdentifierInfo *II) {\n if (LookForIvars) {\n } else if (CurMethod->isInstanceMethod()) {\n } else if (Lookup.isSingleResult() && Lookup.getFoundDecl()->isDefinedOutsideFunctionOrMethod()) {\n // If accessing a stand-alone ivar in a class method, this is an error.\n if (const ObjCIvarDecl *IV = dyn_cast<ObjCIvarDecl>(Lookup.getFoundDecl())) {\n Diag(Loc, diag::err_ivar_use_in_class_method) << IV->getDeclName();"}} | |||
}, | }, | ||
[" | ["err_kern_call_not_global_function"]={ | ||
[ | [j]="kernel call to non-global function A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="kernel call to non-global function %0", | ||
[ | [f]=n, | ||
[ | [g]="kernel call to non\\-global function (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"4b66c47a16ee",1298426009,"Sema: diagnose kernel calls to non-global functions"}, | ||
[k]={{q,6451,"/// BuildResolvedCallExpr - Build a call to a resolved expression,\n/// i.e. an expression not of \\p OverloadTy. The expression should\n/// unary-convert to an expression of function-pointer or\n/// block-pointer type.\n///\n/// \\param NDecl the declaration being called, if available\nExprResult Sema::BuildResolvedCallExpr(Expr *Fn, NamedDecl *NDecl, SourceLocation LParenLoc, ArrayRef<Expr *> Args, SourceLocation RParenLoc, Expr *Config, bool IsExecConfig, ADLCallKind UsesADL) {\n if (getLangOpts().CUDA) {\n if (Config) {\n // CUDA: Kernel calls must be to global functions\n if (FDecl && !FDecl->hasAttr<CUDAGlobalAttr>())\n return ExprError(Diag(LParenLoc, diag::err_kern_call_not_global_function) << FDecl << Fn->getSourceRange());"}} | |||
}, | }, | ||
[" | ["err_kern_is_nonstatic_method"]={ | ||
[ | [j]="kernel function A must be a free function or static member function", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="kernel function %0 must be a free function or static member function", | ||
[ | [f]=n, | ||
[ | [g]="kernel function (.*?) must be a free function or static member function", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"c66a10652a94",1453249617,"[CUDA] Only allow __global__ on free functions and static member functions."}, | ||
[k]={{v,4426,"static void handleGlobalAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n if (const auto *Method = dyn_cast<CXXMethodDecl>(FD)) {\n if (Method->isInstance()) {\n S.Diag(Method->getBeginLoc(), diag::err_kern_is_nonstatic_method) << Method;"}} | |||
}, | }, | ||
[" | ["err_kern_type_not_void_return"]={ | ||
[ | [j]="kernel function type A must have void return type", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="kernel function type %0 must have void return type", | ||
[ | [f]=n, | ||
[ | [g]="kernel function type (.*?) must have void return type", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"e8cfaf4258ca",1292194977,"Sema: diagnose kernel functions with non-void return type"}, | ||
[k]={{v,4421,"static void handleGlobalAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n if (!FD->getReturnType()->isVoidType() && !FD->getReturnType()->getAs<AutoType>() && !FD->getReturnType()->isInstantiationDependentType()) {\n S.Diag(FD->getTypeSpecStartLoc(), diag::err_kern_type_not_void_return) << FD->getType() << (RTRange.isValid() ? FixItHint::CreateReplacement(RTRange, \"void\") : FixItHint());"},{q,6455,"/// BuildResolvedCallExpr - Build a call to a resolved expression,\n/// i.e. an expression not of \\p OverloadTy. The expression should\n/// unary-convert to an expression of function-pointer or\n/// block-pointer type.\n///\n/// \\param NDecl the declaration being called, if available\nExprResult Sema::BuildResolvedCallExpr(Expr *Fn, NamedDecl *NDecl, SourceLocation LParenLoc, ArrayRef<Expr *> Args, SourceLocation RParenLoc, Expr *Config, bool IsExecConfig, ADLCallKind UsesADL) {\n if (getLangOpts().CUDA) {\n if (Config) {\n // CUDA: Kernel function must have \'void\' return type\n if (!FuncT->getReturnType()->isVoidType() && !FuncT->getReturnType()->getAs<AutoType>() && !FuncT->getReturnType()->isInstantiationDependentType())\n return ExprError(Diag(LParenLoc, diag::err_kern_type_not_void_return) << Fn->getType() << Fn->getSourceRange());"},{E,3341,"/// Deduce the return type for a function from a returned expression, per\n/// C++1y [dcl.spec.auto]p6.\nbool Sema::DeduceFunctionTypeFromReturnExpr(FunctionDecl *FD, SourceLocation ReturnLoc, Expr *RetExpr, const AutoType *AT) {\n // CUDA: Kernel function must have \'void\' return type.\n if (getLangOpts().CUDA && FD->hasAttr<CUDAGlobalAttr>() && !Deduced->isVoidType()) {\n Diag(FD->getLocation(), diag::err_kern_type_not_void_return) << FD->getType() << FD->getSourceRange();"},{"clang/lib/Sema/SemaTemplateDeduction.cpp",2844,"/// Substitute the explicitly-provided template arguments into the\n/// given function template according to C++ [temp.arg.explicit].\n///\n/// \\param FunctionTemplate the function template into which the explicit\n/// template arguments will be substituted.\n///\n/// \\param ExplicitTemplateArgs the explicitly-specified template\n/// arguments.\n///\n/// \\param Deduced the deduced template arguments, which will be populated\n/// with the converted and checked explicit template arguments.\n///\n/// \\param ParamTypes will be populated with the instantiated function\n/// parameters.\n///\n/// \\param FunctionType if non-NULL, the result type of the function template\n/// will also be instantiated and the pointed-to value will be updated with\n/// the instantiated function type.\n///\n/// \\param Info if substitution fails for any reason, this object will be\n/// populated with more information about the failure.\n///\n/// \\returns TDK_Success if substitution was successful, or some failure\n/// condition.\nSema::TemplateDeductionResult Sema::SubstituteExplicitTemplateArguments(FunctionTemplateDecl *FunctionTemplate, TemplateArgumentListInfo &ExplicitTemplateArgs, SmallVectorImpl<DeducedTemplateArgument> &Deduced, SmallVectorImpl<QualType> &ParamTypes, QualType *FunctionType, TemplateDeductionInfo &Info) {\n {\n // CUDA: Kernel function must have \'void\' return type.\n if (getLangOpts().CUDA)\n if (Function->hasAttr<CUDAGlobalAttr>() && !ResultType->isVoidType()) {\n Diag(Function->getLocation(), diag::err_kern_type_not_void_return) << Function->getType() << Function->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_kernel_arg_address_space"]={ | ||
[ | [j]="pointer arguments to kernel functions must reside in \'__global\', \'__constant\' or \'__local\' address space", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="pointer arguments to kernel functions must reside in \'__global\', \'__constant\' or \'__local\' address space", | ||
[ | [f]=n, | ||
[ | [g]="pointer arguments to kernel functions must reside in \'__global\', \'__constant\' or \'__local\' address space", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"de82a65053de",1481638043,"[OpenCL] Improve address space diagnostics."}, | ||
[k]={{p,8309,"static void checkIsValidOpenCLKernelParameter(Sema &S, Declarator &D, ParmVarDecl *Param, llvm::SmallPtrSetImpl<const Type *> &ValidTypes) {\n case InvalidAddrSpacePtrKernelParam:\n S.Diag(Param->getLocation(), diag::err_kernel_arg_address_space);"}} | |||
}, | }, | ||
[" | ["err_keyword_as_parameter"]={ | ||
[ | [j]="invalid parameter name: \'A\' is a keyword", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="invalid parameter name: \'%0\' is a keyword", | ||
[ | [f]=n, | ||
[ | [g]="invalid parameter name\\: \'(.*?)\' is a keyword", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={"625acd8f6847",1586351328,"[Parser] Improve diagnostic and error recovery when C++ keywords are used as identifiers."}, | ||
[k]={{C,6702,"/// ParseParameterDeclarationClause - Parse a (possibly empty) parameter-list\n/// after the opening parenthesis. This function will not parse a K&R-style\n/// identifier list.\n///\n/// DeclContext is the context of the declarator being parsed. If FirstArgAttrs\n/// is non-null, then the caller parsed those attributes immediately after the\n/// open paren - they will be applied to the DeclSpec of the first parameter.\n///\n/// After returning, ParamInfo will hold the parsed parameters. EllipsisLoc will\n/// be the location of the ellipsis, if any was parsed.\n///\n/// parameter-type-list: [C99 6.7.5]\n/// parameter-list\n/// parameter-list \',\' \'...\'\n/// [C++] parameter-list \'...\'\n///\n/// parameter-list: [C99 6.7.5]\n/// parameter-declaration\n/// parameter-list \',\' parameter-declaration\n///\n/// parameter-declaration: [C99 6.7.5]\n/// declaration-specifiers declarator\n/// [C++] declaration-specifiers declarator \'=\' assignment-expression\n/// [C++11] initializer-clause\n/// [GNU] declaration-specifiers declarator attributes\n/// declaration-specifiers abstract-declarator[opt]\n/// [C++] declaration-specifiers abstract-declarator[opt]\n/// \'=\' assignment-expression\n/// [GNU] declaration-specifiers abstract-declarator[opt] attributes\n/// [C++11] attribute-specifier-seq parameter-declaration\n///\nvoid Parser::ParseParameterDeclarationClause(DeclaratorContext DeclaratorCtx, ParsedAttributes &FirstArgAttrs, SmallVectorImpl<DeclaratorChunk::ParamInfo> &ParamInfo, SourceLocation &EllipsisLoc, bool IsACXXFunctionDeclaration) {\n do {\n // If no parameter was specified, verify that *something* was specified,\n // otherwise we have a missing type and identifier.\n if (DS.isEmpty() && ParmDeclarator.getIdentifier() == nullptr && ParmDeclarator.getNumTypeObjects() == 0) {\n } else {\n // Now we are at the point where declarator parsing is finished.\n //\n // Try to catch keywords in place of the identifier in a declarator, and\n // in particular the common case where:\n // 1 identifier comes at the end of the declarator\n // 2 if the identifier is dropped, the declarator is valid but anonymous\n // (no identifier)\n // 3 declarator parsing succeeds, and then we have a trailing keyword,\n // which is never valid in a param list (e.g. missing a \',\')\n // And we can\'t handle this in ParseDeclarator because in general keywords\n // may be allowed to follow the declarator. (And in some cases there\'d be\n // better recovery like inserting punctuation). ParseDeclarator is just\n // treating this as an anonymous parameter, and fortunately at this point\n // we\'ve already almost done that.\n //\n // We care about case 1) where the declarator type should be known, and\n // the identifier should be null.\n if (!ParmDeclarator.isInvalidType() && !ParmDeclarator.hasName() && Tok.isNot(tok::raw_identifier) && !Tok.isAnnotation() && Tok.getIdentifierInfo() && Tok.getIdentifierInfo()->isKeyword(getLangOpts())) {\n Diag(Tok, diag::err_keyword_as_parameter) << PP.getSpelling(Tok);"}} | |||
}, | }, | ||
[" | ["err_keyword_misplaced"]={ | ||
[ | [j]="misplaced A; expected B here", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="misplaced %0; expected %0 here", | ||
[ | [f]=n, | ||
[ | [g]="misplaced (.*?); expected (.*?) here", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={"ef9ec4bbcca2",1677810915,"[OpenMP] Add the `ompx_attribute` clause for target directives"}, | ||
[k]={{C,1552,"void Parser::DiagnoseProhibitedAttributes(const ParsedAttributesView &Attrs, const SourceLocation CorrectLocation) {\n if (CorrectLocation.isValid()) {\n (FirstAttr && FirstAttr->isRegularKeywordAttribute() ? Diag(CorrectLocation, diag::err_keyword_misplaced) << FirstAttr : Diag(CorrectLocation, diag::err_attributes_misplaced)) << FixItHint::CreateInsertionFromRange(CorrectLocation, AttrRange) << FixItHint::CreateRemoval(AttrRange);"}} | |||
}, | }, | ||
[" | ["err_keyword_not_allowed"]={ | ||
[ | [j]="A cannot appear here", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%0 cannot appear here", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) cannot appear here", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={"ef9ec4bbcca2",1677810915,"[OpenMP] Add the `ompx_attribute` clause for target directives"}, | ||
[k]={{C,1545,"/// We have found the opening square brackets of a C++11\n/// attribute-specifier in a location where an attribute is not permitted, but\n/// we know where the attributes ought to be written. Parse them anyway, and\n/// provide a fixit moving them to the right place.\nvoid Parser::DiagnoseMisplacedCXX11Attribute(ParsedAttributes &Attrs, SourceLocation CorrectLocation) {\n (Keyword ? Diag(Loc, diag::err_keyword_not_allowed) << Keyword : Diag(Loc, diag::err_attributes_not_allowed)) << FixItHint::CreateInsertionFromRange(CorrectLocation, AttrRange) << FixItHint::CreateRemoval(AttrRange);"},{C,1555,"void Parser::DiagnoseProhibitedAttributes(const ParsedAttributesView &Attrs, const SourceLocation CorrectLocation) {\n if (CorrectLocation.isValid()) {\n } else {\n (FirstAttr && FirstAttr->isRegularKeywordAttribute() ? Diag(Range.getBegin(), diag::err_keyword_not_allowed) << FirstAttr : Diag(Range.getBegin(), diag::err_attributes_not_allowed)) << Range;"},{C,4579,"/// ParseEnumSpecifier\n/// enum-specifier: [C99 6.7.2.2]\n/// \'enum\' identifier[opt] \'{\' enumerator-list \'}\'\n///[C99/C++]\'enum\' identifier[opt] \'{\' enumerator-list \',\' \'}\'\n/// [GNU] \'enum\' attributes[opt] identifier[opt] \'{\' enumerator-list \',\' [opt]\n/// \'}\' attributes[opt]\n/// [MS] \'enum\' __declspec[opt] identifier[opt] \'{\' enumerator-list \',\' [opt]\n/// \'}\'\n/// \'enum\' identifier\n/// [GNU] \'enum\' attributes[opt] identifier\n///\n/// [C++11] enum-head \'{\' enumerator-list[opt] \'}\'\n/// [C++11] enum-head \'{\' enumerator-list \',\' \'}\'\n///\n/// enum-head: [C++11]\n/// enum-key attribute-specifier-seq[opt] identifier[opt] enum-base[opt]\n/// enum-key attribute-specifier-seq[opt] nested-name-specifier\n/// identifier enum-base[opt]\n///\n/// enum-key: [C++11]\n/// \'enum\'\n/// \'enum\' \'class\'\n/// \'enum\' \'struct\'\n///\n/// enum-base: [C++11]\n/// \':\' type-specifier-seq\n///\n/// [C++] elaborated-type-specifier:\n/// [C++] \'enum\' nested-name-specifier[opt] identifier\n///\nvoid Parser::ParseEnumSpecifier(SourceLocation StartLoc, DeclSpec &DS, const ParsedTemplateInfo &TemplateInfo, AccessSpecifier AS, DeclSpecContext DSC) {\n // An elaborated-type-specifier has a much more constrained grammar:\n //\n // \'enum\' nested-name-specifier[opt] identifier\n //\n // If we parsed any other bits, reject them now.\n //\n // MSVC and (for now at least) Objective-C permit a full enum-specifier\n // or opaque-enum-declaration anywhere.\n if (IsElaboratedTypeSpecifier && !getLangOpts().MicrosoftExt && !getLangOpts().ObjC) {\n ProhibitCXX11Attributes(attrs, diag::err_attributes_not_allowed, diag::err_keyword_not_allowed,"},{C,6071,"PastIdentifier:\n while (true) {\n if (Tok.is(tok::l_paren)) {\n } else if (Tok.is(tok::l_square)) {\n } else if (Tok.isRegularKeywordAttribute()) {\n Diag(Tok, diag::err_keyword_not_allowed) << Tok.getIdentifierInfo();"},{R,685,"/// ParseUsingDeclaration - Parse C++ using-declaration or alias-declaration.\n/// Assumes that \'using\' was already seen.\n///\n/// using-declaration: [C++ 7.3.p3: namespace.udecl]\n/// \'using\' using-declarator-list[opt] ;\n///\n/// using-declarator-list: [C++1z]\n/// using-declarator \'...\'[opt]\n/// using-declarator-list \',\' using-declarator \'...\'[opt]\n///\n/// using-declarator-list: [C++98-14]\n/// using-declarator\n///\n/// alias-declaration: C++11 [dcl.dcl]p1\n/// \'using\' identifier attribute-specifier-seq[opt] = type-id ;\n///\n/// using-enum-declaration: [C++20, dcl.enum]\n/// \'using\' elaborated-enum-specifier ;\n/// The terminal name of the elaborated-enum-specifier undergoes\n/// ordinary lookup\n///\n/// elaborated-enum-specifier:\n/// \'enum\' nested-name-specifier[opt] identifier\nParser::DeclGroupPtrTy Parser::ParseUsingDeclaration(DeclaratorContext Context, const ParsedTemplateInfo &TemplateInfo, SourceLocation UsingLoc, SourceLocation &DeclEnd, ParsedAttributes &PrefixAttrs, AccessSpecifier AS) {\n // If we had any misplaced attributes from earlier, this is where they\n // should have been written.\n if (MisplacedAttrs.Range.isValid()) {\n (FirstAttr && FirstAttr->isRegularKeywordAttribute() ? Diag(Range.getBegin(), diag::err_keyword_not_allowed) << FirstAttr : Diag(Range.getBegin(), diag::err_attributes_not_allowed)) << FixItHint::CreateInsertionFromRange(Tok.getLocation(), CharSourceRange::getTokenRange(Range)) << FixItHint::CreateRemoval(Range);"},{R,1658,"#include \"clang/Basic/TransformTypeTraits.def\"\n // Forbid misplaced attributes. In cases of a reference, we pass attributes\n // to caller to handle.\n if (TUK != Sema::TUK_Reference) {\n if (AttrRange.isValid()) {\n (FirstAttr && FirstAttr->isRegularKeywordAttribute() ? Diag(Loc, diag::err_keyword_not_allowed) << FirstAttr : Diag(Loc, diag::err_attributes_not_allowed)) << AttrRange << FixItHint::CreateInsertionFromRange(AttrFixitLoc, CharSourceRange(AttrRange, true)) << FixItHint::CreateRemoval(AttrRange);"},{R,1696,"#include \"clang/Basic/TransformTypeTraits.def\"\n if (TemplateId) {\n if (TemplateId->isInvalid()) {\n } else if (TemplateInfo.Kind == ParsedTemplateInfo::ExplicitInstantiation && TUK == Sema::TUK_Declaration) {\n ProhibitCXX11Attributes(attrs, diag::err_attributes_not_allowed, diag::err_keyword_not_allowed,"},{R,1706,"#include \"clang/Basic/TransformTypeTraits.def\"\n if (TemplateId) {\n if (TemplateId->isInvalid()) {\n } else if (TemplateInfo.Kind == ParsedTemplateInfo::ExplicitInstantiation && TUK == Sema::TUK_Declaration) {\n } else if (TUK == Sema::TUK_Reference || (TUK == Sema::TUK_Friend && TemplateInfo.Kind == ParsedTemplateInfo::NonTemplate)) {\n ProhibitCXX11Attributes(attrs, diag::err_attributes_not_allowed, diag::err_keyword_not_allowed,"},{R,1755,"#include \"clang/Basic/TransformTypeTraits.def\"\n if (TemplateId) {\n } else if (TemplateInfo.Kind == ParsedTemplateInfo::ExplicitInstantiation && TUK == Sema::TUK_Declaration) {\n } else if (TUK == Sema::TUK_Friend && TemplateInfo.Kind != ParsedTemplateInfo::NonTemplate) {\n ProhibitCXX11Attributes(attrs, diag::err_attributes_not_allowed, diag::err_keyword_not_allowed,"},{R,1761,"#include \"clang/Basic/TransformTypeTraits.def\"\n if (TemplateId) {\n } else if (TemplateInfo.Kind == ParsedTemplateInfo::ExplicitInstantiation && TUK == Sema::TUK_Declaration) {\n } else if (TUK == Sema::TUK_Friend && TemplateInfo.Kind != ParsedTemplateInfo::NonTemplate) {\n } else {\n if (TUK != Sema::TUK_Declaration && TUK != Sema::TUK_Definition)\n ProhibitCXX11Attributes(attrs, diag::err_attributes_not_allowed, diag::err_keyword_not_allowed,"},{R,2630,"/// ParseCXXClassMemberDeclaration - Parse a C++ class member declaration.\n///\n/// member-declaration:\n/// decl-specifier-seq[opt] member-declarator-list[opt] \';\'\n/// function-definition \';\'[opt]\n/// ::[opt] nested-name-specifier template[opt] unqualified-id \';\'[TODO]\n/// using-declaration [TODO]\n/// [C++0x] static_assert-declaration\n/// template-declaration\n/// [GNU] \'__extension__\' member-declaration\n///\n/// member-declarator-list:\n/// member-declarator\n/// member-declarator-list \',\' member-declarator\n///\n/// member-declarator:\n/// declarator virt-specifier-seq[opt] pure-specifier[opt]\n/// [C++2a] declarator requires-clause\n/// declarator constant-initializer[opt]\n/// [C++11] declarator brace-or-equal-initializer[opt]\n/// identifier[opt] \':\' constant-expression\n///\n/// virt-specifier-seq:\n/// virt-specifier\n/// virt-specifier-seq virt-specifier\n///\n/// virt-specifier:\n/// override\n/// final\n/// [MS] sealed\n///\n/// pure-specifier:\n/// \'= 0\'\n///\n/// constant-initializer:\n/// \'=\' constant-expression\n///\nParser::DeclGroupPtrTy Parser::ParseCXXClassMemberDeclaration(AccessSpecifier AS, ParsedAttributes &AccessAttrs, const ParsedTemplateInfo &TemplateInfo, ParsingDeclRAIIObject *TemplateDiags) {\n while (true) {\n if (DS.isFriendSpecified()) {\n // C++11 [dcl.attr.grammar] p4: If an attribute-specifier-seq appertains\n // to a friend declaration, that declaration shall be a definition.\n //\n // Diagnose attributes that appear in a friend member function declarator:\n // friend int foo [[]] ();\n for (const ParsedAttr &AL : DeclaratorInfo.getAttributes())\n if (AL.isCXX11Attribute() || AL.isRegularKeywordAttribute()) {\n (AL.isRegularKeywordAttribute() ? Diag(Loc, diag::err_keyword_not_allowed) << AL : Diag(Loc, diag::err_attributes_not_allowed)) << AL.getRange();"},{R,4067,"void Parser::DiagnoseAndSkipCXX11Attributes() {\n if (EndLoc.isValid()) {\n (Keyword ? Diag(StartLoc, diag::err_keyword_not_allowed) << Keyword : Diag(StartLoc, diag::err_attributes_not_allowed)) << Range;"},{"clang/lib/Parse/ParseStmt.cpp",316,"#include \"clang/Basic/TransformTypeTraits.def\"\n case tok::kw_asm: {\n for (const ParsedAttr &AL : CXX11Attrs)\n (AL.isRegularKeywordAttribute() ? Diag(AL.getRange().getBegin(), diag::err_keyword_not_allowed) : Diag(AL.getRange().getBegin(), diag::warn_attribute_ignored)) << AL;"}} | |||
}, | }, | ||
[" | ["err_keyword_not_import_attr"]={ | ||
[ | [j]="A cannot be applied to a module import", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%0 cannot be applied to a module import", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) cannot be applied to a module import", | ||
[ | [h]=a, | ||
[ | [i]=D, | ||
[ | [b]={"ef9ec4bbcca2",1677810915,"[OpenMP] Add the `ompx_attribute` clause for target directives"}, | ||
[k]={{Q,2283,"/// Parse a module import declaration. This is essentially the same for\n/// Objective-C and C++20 except for the leading \'@\' (in ObjC) and the\n/// trailing optional attributes (in C++).\n///\n/// [ObjC] @import declaration:\n/// \'@\' \'import\' module-name \';\'\n/// [ModTS] module-import-declaration:\n/// \'import\' module-name attribute-specifier-seq[opt] \';\'\n/// [C++20] module-import-declaration:\n/// \'export\'[opt] \'import\' module-name\n/// attribute-specifier-seq[opt] \';\'\n/// \'export\'[opt] \'import\' module-partition\n/// attribute-specifier-seq[opt] \';\'\n/// \'export\'[opt] \'import\' header-name\n/// attribute-specifier-seq[opt] \';\'\nDecl *Parser::ParseModuleImport(SourceLocation AtLoc, Sema::ModuleImportState &ImportState) {\n ProhibitCXX11Attributes(Attrs, diag::err_attribute_not_import_attr, diag::err_keyword_not_import_attr,"}} | |||
}, | }, | ||
[" | ["err_keyword_not_module_attr"]={ | ||
[ | [j]="A cannot be applied to a module", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%0 cannot be applied to a module", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) cannot be applied to a module", | ||
[ | [h]=a, | ||
[ | [i]=D, | ||
[ | [b]={"ef9ec4bbcca2",1677810915,"[OpenMP] Add the `ompx_attribute` clause for target directives"}, | ||
[k]={{Q,2219,"/// Parse a declaration beginning with the \'module\' keyword or C++20\n/// context-sensitive keyword (optionally preceded by \'export\').\n///\n/// module-declaration: [C++20]\n/// \'export\'[opt] \'module\' module-name attribute-specifier-seq[opt] \';\'\n///\n/// global-module-fragment: [C++2a]\n/// \'module\' \';\' top-level-declaration-seq[opt]\n/// module-declaration: [C++2a]\n/// \'export\'[opt] \'module\' module-name module-partition[opt]\n/// attribute-specifier-seq[opt] \';\'\n/// private-module-fragment: [C++2a]\n/// \'module\' \':\' \'private\' \';\' top-level-declaration-seq[opt]\nParser::DeclGroupPtrTy Parser::ParseModuleDecl(Sema::ModuleImportState &ImportState) {\n ProhibitCXX11Attributes(Attrs, diag::err_attribute_not_module_attr, diag::err_keyword_not_module_attr,"}} | |||
}, | }, | ||
[" | ["err_keyword_not_supported_on_target"]={ | ||
[ | [j]="A is not supported on this target", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%0 is not supported on this target", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) is not supported on this target", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"33ee5c466346",1680613513,"[clang] Add Parse and Sema support for RegularKeyword attributes"}, | ||
[k]={{v,2000,"bool Sema::CheckAttrTarget(const ParsedAttr &AL) {\n // Check whether the attribute is valid on the current target.\n if (!AL.existsInTarget(Context.getTargetInfo())) {\n Diag(AL.getLoc(), AL.isRegularKeywordAttribute() ? diag::err_keyword_not_supported_on_target : diag::warn_unknown_attribute_ignored) << AL << AL.getRange();"},{v,7688,"/// ProcessDeclAttribute - Apply the specific attribute to the specified decl if\n/// the attribute applies to decls. If the attribute is a type attribute, just\n/// silently ignore it if a GNU attribute.\nstatic void ProcessDeclAttribute(Sema &S, Scope *scope, Decl *D, const ParsedAttr &AL, const Sema::ProcessDeclAttributeOptions &Options) {\n // Unknown attributes are automatically warned on. Target-specific attributes\n // which do not apply to the current target architecture are treated as\n // though they were unknown attributes.\n if (AL.getKind() == ParsedAttr::UnknownAttribute || !AL.existsInTarget(S.Context.getTargetInfo())) {\n S.Diag(AL.getLoc(), AL.isRegularKeywordAttribute() ? (unsigned)diag::err_keyword_not_supported_on_target : AL.isDeclspecAttribute() ? (unsigned)diag::warn_unhandled_ms_attribute_ignored : (unsigned)diag::warn_unknown_attribute_ignored) << AL << AL.getRange();"},{"clang/lib/Sema/SemaStmtAttr.cpp",412,"static Attr *ProcessStmtAttribute(Sema &S, Stmt *St, const ParsedAttr &A, SourceRange Range) {\n if (A.getKind() == ParsedAttr::UnknownAttribute || !(A.existsInTarget(S.Context.getTargetInfo()) || (S.Context.getLangOpts().SYCLIsDevice && Aux && A.existsInTarget(*Aux)))) {\n S.Diag(A.getLoc(), A.isRegularKeywordAttribute() ? (unsigned)diag::err_keyword_not_supported_on_target : A.isDeclspecAttribute() ? (unsigned)diag::warn_unhandled_ms_attribute_ignored : (unsigned)diag::warn_unknown_attribute_ignored) << A << A.getRange();"}} | |||
}, | }, | ||
[" | ["err_l_square_l_square_not_attribute"]={ | ||
[ | [j]="C++11 only allows consecutive left square brackets when introducing an attribute", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="C++11 only allows consecutive left square brackets when introducing an attribute", | ||
[ | [f]=n, | ||
[ | [g]="C\\+\\+11 only allows consecutive left square brackets when introducing an attribute", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={"7bdcc4a9da8c",1334021532,"Disambiguation of \'[[\':"}, | ||
[k]={{C,1516,"/// DiagnoseProhibitedCXX11Attribute - We have found the opening square brackets\n/// of a C++11 attribute-specifier in a location where an attribute is not\n/// permitted. By C++11 [dcl.attr.grammar]p6, this is ill-formed. Diagnose this\n/// situation.\n///\n/// \\return \\c true if we skipped an attribute-like chunk of tokens, \\c false if\n/// this doesn\'t appear to actually be an attribute-specifier, and the caller\n/// should try to parse it.\nbool Parser::DiagnoseProhibitedCXX11Attribute() {\n case CAK_InvalidAttributeSpecifier:\n Diag(Tok.getLocation(), diag::err_l_square_l_square_not_attribute);"}} | |||
}, | }, | ||
[" | ["err_lambda_after_delete"]={ | ||
[ | [j]="\'[]\' after delete interpreted as \'delete[]\'; add parentheses to treat this as a lambda-expression", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'[]\' after delete interpreted as \'delete[]\'; add parentheses to treat this as a lambda-expression", | ||
[ | [f]=n, | ||
[ | [g]="\'\\[\\]\' after delete interpreted as \'delete\\[\\]\'; add parentheses to treat this as a lambda\\-expression", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={"f53d1727107e",1558278478,"Added a better diagnostic when using the delete operator with lambdas"}, | ||
[k]={{V,3090,"/// ParseCXXDeleteExpression - Parse a C++ delete-expression. Delete is used\n/// to free memory allocated by new.\n///\n/// This method is called to parse the \'delete\' expression after the optional\n/// \'::\' has been already parsed. If the \'::\' was present, \"UseGlobal\" is true\n/// and \"Start\" is its location. Otherwise, \"Start\" is the location of the\n/// \'delete\' token.\n///\n/// delete-expression:\n/// \'::\'[opt] \'delete\' cast-expression\n/// \'::\'[opt] \'delete\' \'[\' \']\' cast-expression\nExprResult Parser::ParseCXXDeleteExpression(bool UseGlobal, SourceLocation Start) {\n if (Tok.is(tok::l_square) && NextToken().is(tok::r_square)) {\n // Basic lookahead to check if we have a lambda expression.\n if (Next.isOneOf(tok::l_brace, tok::less) || (Next.is(tok::l_paren) && (GetLookAheadToken(3).is(tok::r_paren) || (GetLookAheadToken(3).is(tok::identifier) && GetLookAheadToken(4).is(tok::identifier))))) {\n if (EmitFixIt)\n Diag(Start, diag::err_lambda_after_delete) << SourceRange(Start, RSquareLoc) << FixItHint::CreateInsertion(LSquareLoc, \"(\") << FixItHint::CreateInsertion(Lexer::getLocForEndOfToken(RBraceLoc, 0, Actions.getSourceManager(), getLangOpts()), \")\");"},{V,3092,"/// ParseCXXDeleteExpression - Parse a C++ delete-expression. Delete is used\n/// to free memory allocated by new.\n///\n/// This method is called to parse the \'delete\' expression after the optional\n/// \'::\' has been already parsed. If the \'::\' was present, \"UseGlobal\" is true\n/// and \"Start\" is its location. Otherwise, \"Start\" is the location of the\n/// \'delete\' token.\n///\n/// delete-expression:\n/// \'::\'[opt] \'delete\' cast-expression\n/// \'::\'[opt] \'delete\' \'[\' \']\' cast-expression\nExprResult Parser::ParseCXXDeleteExpression(bool UseGlobal, SourceLocation Start) {\n if (Tok.is(tok::l_square) && NextToken().is(tok::r_square)) {\n // Basic lookahead to check if we have a lambda expression.\n if (Next.isOneOf(tok::l_brace, tok::less) || (Next.is(tok::l_paren) && (GetLookAheadToken(3).is(tok::r_paren) || (GetLookAheadToken(3).is(tok::identifier) && GetLookAheadToken(4).is(tok::identifier))))) {\n if (EmitFixIt)\n else\n Diag(Start, diag::err_lambda_after_delete) << SourceRange(Start, RSquareLoc);"}} | |||
}, | }, | ||
[" | ["err_lambda_capture_anonymous_var"]={ | ||
[ | [j]="unnamed variable cannot be implicitly captured in a lambda expression", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="unnamed variable cannot be implicitly captured in a lambda expression", | ||
[ | [f]=n, | ||
[ | [g]="unnamed variable cannot be implicitly captured in a lambda expression", | ||
[ | [h]=a, | ||
[ | [i]=S, | ||
[ | [b]={"24af85047046",1328309257,"Implement implicit capture for lambda expressions."}, | ||
[k]={{q,16617,"// Certain capturing entities (lambdas, blocks etc.) are not allowed to capture\n// certain types of variables (unnamed, variably modified types etc.)\n// so check for eligibility.\nstatic bool isVariableCapturable(CapturingScopeInfo *CSI, ValueDecl *Var, SourceLocation Loc, const bool Diagnose, Sema &S) {\n // Lambdas are not allowed to capture unnamed variables\n // (e.g. anonymous unions).\n // FIXME: The C++11 rule don\'t actually state this explicitly, but I\'m\n // assuming that\'s the intent.\n if (IsLambda && !Var->getDeclName()) {\n if (Diagnose) {\n S.Diag(Loc, diag::err_lambda_capture_anonymous_var);"}} | |||
}, | }, | ||
[" | ["err_lambda_capture_default_arg"]={ | ||
[ | [j]="lambda expression in default argument cannot capture any entity", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="lambda expression in default argument cannot capture any entity", | ||
[ | [f]=n, | ||
[ | [g]="lambda expression in default argument cannot capture any entity", | ||
[ | [h]=a, | ||
[ | [i]=S, | ||
[ | [b]={"f0d495100cf4",1328916622,"Implement C++11 [expr.lambda.prim]p13, which prohibits lambdas in"}, | ||
[k]={{r,158,"bool CheckDefaultArgumentVisitor::VisitLambdaExpr(const LambdaExpr *Lambda) {\n for (const LambdaCapture &LC : Lambda->captures()) {\n if (!Lambda->isInitCapture(&LC))\n return S.Diag(LC.getLocation(), diag::err_lambda_capture_default_arg);"}} | |||
}, | }, | ||
[" | ["err_lambda_capture_flexarray_type"]={ | ||
[ | [j]="variable A with flexible array member cannot be captured in a lambda expression", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="variable %0 with flexible array member cannot be captured in a lambda expression", | ||
[ | [f]=n, | ||
[ | [g]="variable (.*?) with flexible array member cannot be captured in a lambda expression", | ||
[ | [h]=a, | ||
[ | [i]=S, | ||
[ | [b]={"a716a345276c",1357687071,"objectiveC blocks: It is impractical to capture "}, | ||
[k]={{q,16639,"// Certain capturing entities (lambdas, blocks etc.) are not allowed to capture\n// certain types of variables (unnamed, variably modified types etc.)\n// so check for eligibility.\nstatic bool isVariableCapturable(CapturingScopeInfo *CSI, ValueDecl *Var, SourceLocation Loc, const bool Diagnose, Sema &S) {\n // Prohibit structs with flexible array members too.\n // We cannot capture what is in the tail end of the struct.\n if (const RecordType *VTTy = Var->getType()->getAs<RecordType>()) {\n if (VTTy->getDecl()->hasFlexibleArrayMember()) {\n if (Diagnose) {\n if (IsBlock)\n else\n S.Diag(Loc, diag::err_lambda_capture_flexarray_type) << Var;"}} | |||
}, | }, | ||
[" | ["err_lambda_capture_misplaced_ellipsis"]={ | ||
[ | [j]="ellipsis in pack ...capture must appear ... the name of the capture", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="ellipsis in pack %select{|init-}0capture must appear %select{after|before}0 the name of the capture", | ||
[ | [f]=n, | ||
[ | [g]="ellipsis in pack (?:|init\\-)capture must appear (?:after|before) the name of the capture", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={"b2997f579a8b",1558469450,"[c++20] P0780R2: Support pack-expansion of init-captures."}, | ||
[k]={{V,1002,"/// Parse a lambda introducer.\n/// \\param Intro A LambdaIntroducer filled in with information about the\n/// contents of the lambda-introducer.\n/// \\param Tentative If non-null, we are disambiguating between a\n/// lambda-introducer and some other construct. In this mode, we do not\n/// produce any diagnostics or take any other irreversible action unless\n/// we\'re sure that this is a lambda-expression.\n/// \\return \\c true if parsing (or disambiguation) failed with a diagnostic and\n/// the caller should bail out / recover.\nbool Parser::ParseLambdaIntroducer(LambdaIntroducer &Intro, LambdaIntroducerTentativeParse *Tentative) {\n while (Tok.isNot(tok::r_square)) {\n if (llvm::any_of(EllipsisLocs, [](SourceLocation Loc) { return Loc.isValid(); })) {\n if (EllipsisLoc.isInvalid()) {\n DiagID = diag::err_lambda_capture_misplaced_ellipsis;"},{V,1027,"/// Parse a lambda introducer.\n/// \\param Intro A LambdaIntroducer filled in with information about the\n/// contents of the lambda-introducer.\n/// \\param Tentative If non-null, we are disambiguating between a\n/// lambda-introducer and some other construct. In this mode, we do not\n/// produce any diagnostics or take any other irreversible action unless\n/// we\'re sure that this is a lambda-expression.\n/// \\return \\c true if parsing (or disambiguation) failed with a diagnostic and\n/// the caller should bail out / recover.\nbool Parser::ParseLambdaIntroducer(LambdaIntroducer &Intro, LambdaIntroducerTentativeParse *Tentative) {\n while (Tok.isNot(tok::r_square)) {\n if (llvm::any_of(EllipsisLocs, [](SourceLocation Loc) { return Loc.isValid(); })) {\n if (DiagID) {\n NonTentativeAction([&] {\n if (DiagID == diag::err_lambda_capture_misplaced_ellipsis) {"}} | |||
}, | }, | ||
[" | ["err_lambda_capture_multiple_ellipses"]={ | ||
[ | [j]="multiple ellipses in pack capture", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="multiple ellipses in pack capture", | ||
[ | [f]=n, | ||
[ | [g]="multiple ellipses in pack capture", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={"b2997f579a8b",1558469450,"[c++20] P0780R2: Support pack-expansion of init-captures."}, | ||
[k]={{V,1010,"/// Parse a lambda introducer.\n/// \\param Intro A LambdaIntroducer filled in with information about the\n/// contents of the lambda-introducer.\n/// \\param Tentative If non-null, we are disambiguating between a\n/// lambda-introducer and some other construct. In this mode, we do not\n/// produce any diagnostics or take any other irreversible action unless\n/// we\'re sure that this is a lambda-expression.\n/// \\return \\c true if parsing (or disambiguation) failed with a diagnostic and\n/// the caller should bail out / recover.\nbool Parser::ParseLambdaIntroducer(LambdaIntroducer &Intro, LambdaIntroducerTentativeParse *Tentative) {\n while (Tok.isNot(tok::r_square)) {\n if (llvm::any_of(EllipsisLocs, [](SourceLocation Loc) { return Loc.isValid(); })) {\n if (EllipsisLoc.isInvalid()) {\n } else {\n if (NumEllipses > 1)\n DiagID = diag::err_lambda_capture_multiple_ellipses;"}} | |||
}, | }, | ||
[" | ["err_lambda_decl_ref_not_modifiable_lvalue"]={ | ||
[ | [j]="cannot assign to a variable captured by copy in a non-mutable lambda", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot assign to a variable captured by copy in a non-mutable lambda", | ||
[ | [f]=n, | ||
[ | [g]="cannot assign to a variable captured by copy in a non\\-mutable lambda", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"5fa2ef4445fa",1331599021,"Alternate fix to PR12248: put Sema in charge of special-casing"}, | ||
[k]={{q,12296,"/// CheckForModifiableLvalue - Verify that E is a modifiable lvalue. If not,\n/// emit an error and return true. If so, return false.\nstatic bool CheckForModifiableLvalue(Expr *E, SourceLocation Loc, Sema &S) {\n case Expr::MLV_ConstQualified:\n // Use a specialized diagnostic when we\'re assigning to an object\n // from an enclosing function or block.\n if (NonConstCaptureKind NCCK = isReferenceToNonConstCapture(S, E)) {\n if (NCCK == NCCK_Block)\n else\n DiagID = diag::err_lambda_decl_ref_not_modifiable_lvalue;"}} | |||
}, | }, | ||
[" | ["err_lambda_decl_specifier_repeated"]={ | ||
[ | [j]="... cannot appear multiple times in a lambda declarator", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%select{\'mutable\'|\'static\'|\'constexpr\'|\'consteval\'}0 cannot appear multiple times in a lambda declarator", | ||
[ | [f]=n, | ||
[ | [g]="(?:\'mutable\'|\'static\'|\'constexpr\'|\'consteval\') cannot appear multiple times in a lambda declarator", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={"a734ab980865",1459008697,"[Cxx1z-constexpr-lambda-P0170R1] Support parsing of constexpr specifier (and its inference) on lamb..."}, | ||
[k]={{V,1079,"static void tryConsumeLambdaSpecifierToken(Parser &P, SourceLocation &MutableLoc, SourceLocation &StaticLoc, SourceLocation &ConstexprLoc, SourceLocation &ConstevalLoc, SourceLocation &DeclEndLoc) {\n auto ConsumeLocation = [&P, &DeclEndLoc](SourceLocation &SpecifierLoc, int DiagIndex) {\n if (SpecifierLoc.isValid()) {\n P.Diag(P.getCurToken().getLocation(), diag::err_lambda_decl_specifier_repeated) << DiagIndex << FixItHint::CreateRemoval(P.getCurToken().getLocation());"}} | |||
}, | }, | ||
[" | ["err_lambda_impcap"]={ | ||
[ | [j]="variable A cannot be implicitly captured in a lambda with no capture-default specified", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="variable %0 cannot be implicitly captured in a lambda with no capture-default specified", | ||
[ | [f]=n, | ||
[ | [g]="variable (.*?) cannot be implicitly captured in a lambda with no capture\\-default specified", | ||
[ | [h]=a, | ||
[ | [i]=S, | ||
[ | [b]={"24af85047046",1328309257,"Implement implicit capture for lambda expressions."}, | ||
[k]={{q,17057,"bool Sema::tryCaptureVariable(ValueDecl *Var, SourceLocation ExprLoc, TryCaptureKind Kind, SourceLocation EllipsisLoc, bool BuildAndDiagnose, QualType &CaptureType, QualType &DeclRefType, const unsigned *const FunctionScopeIndexToStopAt) {\n do {\n // If we are instantiating a generic lambda call operator body,\n // we do not want to capture new variables. What was captured\n // during either a lambdas transformation or initial parsing\n // should be used.\n if (isGenericLambdaCallOperatorSpecialization(DC)) {\n if (BuildAndDiagnose) {\n if (LSI->ImpCaptureStyle == CapturingScopeInfo::ImpCap_None) {\n Diag(ExprLoc, diag::err_lambda_impcap) << Var;"},{q,17126,"bool Sema::tryCaptureVariable(ValueDecl *Var, SourceLocation ExprLoc, TryCaptureKind Kind, SourceLocation EllipsisLoc, bool BuildAndDiagnose, QualType &CaptureType, QualType &DeclRefType, const unsigned *const FunctionScopeIndexToStopAt) {\n do {\n if (CSI->ImpCaptureStyle == CapturingScopeInfo::ImpCap_None && !Explicit) {\n // No capture-default, and this is not an explicit capture\n // so cannot capture this variable.\n if (BuildAndDiagnose) {\n Diag(ExprLoc, diag::err_lambda_impcap) << Var;"}} | |||
}, | }, | ||
[" | ["err_lambda_in_constant_expression"]={ | ||
[ | [j]="a lambda expression may not appear inside of a constant expression", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="a lambda expression may not appear inside of a constant expression", | ||
[ | [f]=n, | ||
[ | [g]="a lambda expression may not appear inside of a constant expression", | ||
[ | [h]=a, | ||
[ | [i]=S, | ||
[ | [b]={"9adc361008e2",1382692372,"Sema: Do not allow lambda expressions to appear inside of constant expressions"}, | ||
[k]={{q,16019,"void Sema::PopExpressionEvaluationContext() {\n if (!Rec.Lambdas.empty()) {\n if (!getLangOpts().CPlusPlus20 && (Rec.ExprContext == ExpressionKind::EK_TemplateArgument || Rec.isUnevaluated() || (Rec.isConstantEvaluated() && !getLangOpts().CPlusPlus17))) {\n if (Rec.isUnevaluated()) {\n } else if (Rec.isConstantEvaluated() && !getLangOpts().CPlusPlus17) {\n D = diag::err_lambda_in_constant_expression;"}} | |||
}, | }, | ||
[" | ["err_lambda_in_invalid_context"]={ | ||
[ | [j]="a lambda expression cannot appear in this context", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="a lambda expression cannot appear in this context", | ||
[ | [f]=n, | ||
[ | [g]="a lambda expression cannot appear in this context", | ||
[ | [h]=a, | ||
[ | [i]=S, | ||
[ | [b]={"b6d5c5871857",1531421141,"[C++17] Disallow lambdas in template parameters (PR33696)."}, | ||
[k]={{q,16023,"void Sema::PopExpressionEvaluationContext() {\n if (!Rec.Lambdas.empty()) {\n if (!getLangOpts().CPlusPlus20 && (Rec.ExprContext == ExpressionKind::EK_TemplateArgument || Rec.isUnevaluated() || (Rec.isConstantEvaluated() && !getLangOpts().CPlusPlus17))) {\n if (Rec.isUnevaluated()) {\n } else if (Rec.isConstantEvaluated() && !getLangOpts().CPlusPlus17) {\n } else if (Rec.ExprContext == ExpressionKind::EK_TemplateArgument) {\n D = diag::err_lambda_in_invalid_context;"}} | |||
}, | }, | ||
[" | ["err_lambda_incomplete_result"]={ | ||
[ | [j]="incomplete result type A in lambda expression", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="incomplete result type %0 in lambda expression", | ||
[ | [f]=n, | ||
[ | [g]="incomplete result type (.*?) in lambda expression", | ||
[ | [h]=a, | ||
[ | [i]=S, | ||
[ | [b]={"621003e7b956",1329254444,"Check the return type of lambda expressions."}, | ||
[k]={{"clang/lib/Sema/SemaLambda.cpp",377,"static void buildLambdaScopeReturnType(Sema &S, LambdaScopeInfo *LSI, CXXMethodDecl *CallOperator, bool ExplicitResultType) {\n if (ExplicitResultType) {\n if (!LSI->ReturnType->isDependentType() && !LSI->ReturnType->isVoidType())\n S.RequireCompleteType(CallOperator->getBeginLoc(), LSI->ReturnType, diag::err_lambda_incomplete_result);"}} | |||
}, | }, | ||
[" | ["err_lambda_return_init_list"]={ | ||
[ | [j]="cannot deduce lambda return type from initializer list", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot deduce lambda return type from initializer list", | ||
[ | [f]=n, | ||
[ | [g]="cannot deduce lambda return type from initializer list", | ||
[ | [h]=a, | ||
[ | [i]=S, | ||
[ | [b]={"940a550f0d35",1328812839,"Don\'t allow deduction of a lambda result type from an initializer"}, | ||
[k]={{E,3130,"/// ActOnCapScopeReturnStmt - Utility routine to type-check return statements\n/// for capturing scopes.\n///\nStmtResult Sema::ActOnCapScopeReturnStmt(SourceLocation ReturnLoc, Expr *RetValExp, NamedReturnInfo &NRInfo, bool SupressSimplerImplicitMoves) {\n if (HasDeducedReturnType) {\n } else if (CurCap->HasImplicitReturnType) {\n // For blocks/lambdas with implicit return types, we check each return\n // statement individually, and deduce the common return type when the block\n // or lambda is completed.\n // FIXME: Fold this into the \'auto\' codepath above.\n if (RetValExp && !isa<InitListExpr>(RetValExp)) {\n } else {\n if (RetValExp) {\n Diag(ReturnLoc, diag::err_lambda_return_init_list) << RetValExp->getSourceRange();"},{E,3265,"/// Deduce the return type for a function from a returned expression, per\n/// C++1y [dcl.spec.auto]p6.\nbool Sema::DeduceFunctionTypeFromReturnExpr(FunctionDecl *FD, SourceLocation ReturnLoc, Expr *RetExpr, const AutoType *AT) {\n if (RetExpr && isa<InitListExpr>(RetExpr)) {\n Diag(RetExpr->getExprLoc(), getCurLambda() ? diag::err_lambda_return_init_list : diag::err_auto_fn_return_init_list) << RetExpr->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_lambda_template_parameter_list_empty"]={ | ||
[ | [j]="lambda template parameter list cannot be empty", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="lambda template parameter list cannot be empty", | ||
[ | [f]=n, | ||
[ | [g]="lambda template parameter list cannot be empty", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={"8205a814a691",1556966986,"[c++20] Implement P0428R2 - Familiar template syntax for generic lambdas"}, | ||
[k]={{V,1212,"/// ParseLambdaExpressionAfterIntroducer - Parse the rest of a lambda\n/// expression.\nExprResult Parser::ParseLambdaExpressionAfterIntroducer(LambdaIntroducer &Intro) {\n if (Tok.is(tok::less)) {\n if (TemplateParams.empty()) {\n Diag(RAngleLoc, diag::err_lambda_template_parameter_list_empty);"}} | |||
}, | }, | ||
[" | ["err_lambda_unevaluated_operand"]={ | ||
[ | [j]="lambda expression in an unevaluated operand", | ||
[d]= | [c]=l, | ||
[f]= | [d]=m, | ||
[ | [e]="lambda expression in an unevaluated operand", | ||
[ | [f]=n, | ||
[g]="lambda expression in an unevaluated operand", | |||
[h]=a, | |||
[i]=S, | |||
[b]={"896254916416",1328775283,"Implement C++ [expr.prim.lambda]p2, which bans lambda expressions in"}, | |||
[k]={{q,16013,"void Sema::PopExpressionEvaluationContext() {\n if (!Rec.Lambdas.empty()) {\n if (!getLangOpts().CPlusPlus20 && (Rec.ExprContext == ExpressionKind::EK_TemplateArgument || Rec.isUnevaluated() || (Rec.isConstantEvaluated() && !getLangOpts().CPlusPlus17))) {\n if (Rec.isUnevaluated()) {\n D = diag::err_lambda_unevaluated_operand;"}} | |||
}, | }, | ||
[" | ["err_language_linkage_spec_unknown"]={ | ||
[ | [j]="unknown linkage language", | ||
[d]= | [c]=l, | ||
[f]= | [d]=m, | ||
[ | [e]="unknown linkage language", | ||
[b]= | [f]=n, | ||
[ | [g]="unknown linkage language", | ||
[h]=a, | |||
[i]=o, | |||
[b]={"4ee696d55cbb",1392679527,"PR18870: Parse language linkage specifiers properly if the string-literal is"}, | |||
[k]={{r,14092,"/// ActOnStartLinkageSpecification - Parsed the beginning of a C++\n/// linkage specification, including the language and (if present)\n/// the \'{\'. ExternLoc is the location of the \'extern\', Lang is the\n/// language string literal. LBraceLoc, if valid, provides the location of\n/// the \'{\' brace. Otherwise, this linkage specification does not\n/// have any braces.\nDecl *Sema::ActOnStartLinkageSpecification(Scope *S, SourceLocation ExternLoc, Expr *LangStr, SourceLocation LBraceLoc) {\n if (Lang == \"C\")\n else if (Lang == \"C++\")\n else {\n Diag(LangStr->getExprLoc(), diag::err_language_linkage_spec_unknown) << LangStr->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_late_asm_label_name"]={ | ||
[ | [j]="cannot apply asm label to ... after its first use", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot apply asm label to %select{variable|function}0 after its first use", | ||
[ | [f]=n, | ||
[ | [g]="cannot apply asm label to (?:variable|function) after its first use", | ||
[h]=a, | |||
[i]=o, | |||
[b]={"6ee53bc0850c",1449869335,"Error on redeclaring with a conflicting asm label and on redeclaring with an asm label after the fir..."}, | |||
[k]={{p,2929,"/// mergeDeclAttributes - Copy attributes from the Old decl to the New one.\nvoid Sema::mergeDeclAttributes(NamedDecl *New, Decl *Old, AvailabilityMergeKind AMK) {\n if (AsmLabelAttr *NewA = New->getAttr<AsmLabelAttr>()) {\n if (AsmLabelAttr *OldA = Old->getAttr<AsmLabelAttr>()) {\n } else if (Old->isUsed()) {\n Diag(New->getLocation(), diag::err_late_asm_label_name) << isa<FunctionDecl>(Old) << New->getAttr<AsmLabelAttr>()->getRange();"}} | |||
}, | }, | ||
[" | ["err_lexing_char"]={ | ||
[ | [j]="failure when lexing a character literal", | ||
[d]= | [c]=l, | ||
[f]= | [d]=m, | ||
[ | [e]="failure when lexing a character literal", | ||
[b]= | [f]=n, | ||
[ | [g]="failure when lexing a character literal", | ||
[h]=a, | |||
[i]=t, | |||
[b]={M,1625925174,N}, | |||
[k]={{W,1509,"/// \\verbatim\n/// user-defined-character-literal: [C++11 lex.ext]\n/// character-literal ud-suffix\n/// ud-suffix:\n/// identifier\n/// character-literal: [C++11 lex.ccon]\n/// \' c-char-sequence \'\n/// u\' c-char-sequence \'\n/// U\' c-char-sequence \'\n/// L\' c-char-sequence \'\n/// u8\' c-char-sequence \' [C++1z lex.ccon]\n/// c-char-sequence:\n/// c-char\n/// c-char-sequence c-char\n/// c-char:\n/// any member of the source character set except the single-quote \',\n/// backslash \\, or new-line character\n/// escape-sequence\n/// universal-character-name\n/// escape-sequence:\n/// simple-escape-sequence\n/// octal-escape-sequence\n/// hexadecimal-escape-sequence\n/// simple-escape-sequence:\n/// one of \\\' \\\" \\? \\\\ \\a \\b \\f \\n \\r \\t \\v\n/// octal-escape-sequence:\n/// \\ octal-digit\n/// \\ octal-digit octal-digit\n/// \\ octal-digit octal-digit octal-digit\n/// hexadecimal-escape-sequence:\n/// \\x hexadecimal-digit\n/// hexadecimal-escape-sequence hexadecimal-digit\n/// universal-character-name: [C++11 lex.charset]\n/// \\u hex-quad\n/// \\U hex-quad hex-quad\n/// hex-quad:\n/// hex-digit hex-digit hex-digit hex-digit\n/// \\endverbatim\n///\nCharLiteralParser::CharLiteralParser(const char *begin, const char *end, SourceLocation Loc, Preprocessor &PP, tok::TokenKind kind) {\n // Skip over the entry quote.\n if (begin[0] != \'\\\'\') {\n PP.Diag(Loc, diag::err_lexing_char);"}} | |||
}, | }, | ||
[" | ["err_lexing_numeric"]={ | ||
[ | [j]="failure when lexing a numeric literal", | ||
[d]= | [c]=l, | ||
[f]= | [d]=m, | ||
[ | [e]="failure when lexing a numeric literal", | ||
[b]= | [f]=n, | ||
[ | [g]="failure when lexing a numeric literal", | ||
[h]=a, | |||
[i]=t, | |||
[b]={M,1625925174,N}, | |||
[k]={{W,790,"/// integer-constant: [C99 6.4.4.1]\n/// decimal-constant integer-suffix\n/// octal-constant integer-suffix\n/// hexadecimal-constant integer-suffix\n/// binary-literal integer-suffix [GNU, C++1y]\n/// user-defined-integer-literal: [C++11 lex.ext]\n/// decimal-literal ud-suffix\n/// octal-literal ud-suffix\n/// hexadecimal-literal ud-suffix\n/// binary-literal ud-suffix [GNU, C++1y]\n/// decimal-constant:\n/// nonzero-digit\n/// decimal-constant digit\n/// octal-constant:\n/// 0\n/// octal-constant octal-digit\n/// hexadecimal-constant:\n/// hexadecimal-prefix hexadecimal-digit\n/// hexadecimal-constant hexadecimal-digit\n/// hexadecimal-prefix: one of\n/// 0x 0X\n/// binary-literal:\n/// 0b binary-digit\n/// 0B binary-digit\n/// binary-literal binary-digit\n/// integer-suffix:\n/// unsigned-suffix [long-suffix]\n/// unsigned-suffix [long-long-suffix]\n/// long-suffix [unsigned-suffix]\n/// long-long-suffix [unsigned-sufix]\n/// nonzero-digit:\n/// 1 2 3 4 5 6 7 8 9\n/// octal-digit:\n/// 0 1 2 3 4 5 6 7\n/// hexadecimal-digit:\n/// 0 1 2 3 4 5 6 7 8 9\n/// a b c d e f\n/// A B C D E F\n/// binary-digit:\n/// 0\n/// 1\n/// unsigned-suffix: one of\n/// u U\n/// long-suffix: one of\n/// l L\n/// long-long-suffix: one of\n/// ll LL\n///\n/// floating-constant: [C99 6.4.4.2]\n/// TODO: add rules...\n///\nNumericLiteralParser::NumericLiteralParser(StringRef TokSpelling, SourceLocation TokLoc, const SourceManager &SM, const LangOptions &LangOpts, const TargetInfo &Target, DiagnosticsEngine &Diags) : SM(SM), LangOpts(LangOpts), Diags(Diags), ThisTokBegin(TokSpelling.begin()), ThisTokEnd(TokSpelling.end()) {\n // This routine assumes that the range begin/end matches the regex for integer\n // and FP constants (specifically, the \'pp-number\' regex), and assumes that\n // the byte at \"*end\" is both valid and not part of the regex. Because of\n // this, it doesn\'t have to check for \'overscan\' in various places.\n if (isPreprocessingNumberBody(*ThisTokEnd)) {\n Diags.Report(TokLoc, diag::err_lexing_numeric);"}} | |||
}, | }, | ||
[" | ["err_lexing_string"]={ | ||
[ | [j]="failure when lexing a string literal", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="failure when lexing a string literal", | ||
[ | [f]=n, | ||
[ | [g]="failure when lexing a string literal", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={"9933e3ac88ad",1336067432,"In StringLiteralParser::init, make sure we emit an error when"}, | ||
[k]={{W,2063,"void StringLiteralParser::DiagnoseLexingError(SourceLocation Loc) {\n if (Diags)\n Diags->Report(Loc, diag::err_lexing_string);"}} | |||
}, | }, | ||
[" | ["err_lifetimebound_ctor_dtor"]={ | ||
[ | [j]="\'lifetimebound\' attribute cannot be applied to a ...", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'lifetimebound\' attribute cannot be applied to a %select{constructor|destructor}0", | ||
[b]= | [f]=n, | ||
[ | [g]="\'lifetimebound\' attribute cannot be applied to a (?:constructor|destructor)", | ||
[h]=a, | |||
[i]=o, | |||
[b]={"f4e248c23e05",1533083605,"[P0936R0] add [[clang::lifetimebound]] attribute"}, | |||
[k]={{p,6252,"static void checkAttributesAfterMerging(Sema &S, NamedDecl &ND) {\n // Check the attributes on the function type, if any.\n if (const auto *FD = dyn_cast<FunctionDecl>(&ND)) {\n for (TypeLoc TL = FD->getTypeSourceInfo()->getTypeLoc(); (ATL = TL.getAsAdjusted<AttributedTypeLoc>()); TL = ATL.getModifiedLoc()) {\n // The [[lifetimebound]] attribute can be applied to the implicit object\n // parameter of a non-static member function (other than a ctor or dtor)\n // by applying it to the function type.\n if (const auto *A = ATL.getAttrAs<LifetimeBoundAttr>()) {\n if (!MD || MD->isStatic()) {\n } else if (isa<CXXConstructorDecl>(MD) || isa<CXXDestructorDecl>(MD)) {\n S.Diag(A->getLocation(), diag::err_lifetimebound_ctor_dtor) << isa<CXXDestructorDecl>(MD) << A->getRange();"}} | |||
}, | }, | ||
[" | ["err_lifetimebound_no_object_param"]={ | ||
[ | [j]="\'lifetimebound\' attribute cannot be applied; ...member function has no implicit object parameter", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'lifetimebound\' attribute cannot be applied; %select{static |non-}0member function has no implicit object parameter", | ||
[b]= | [f]=n, | ||
[ | [g]="\'lifetimebound\' attribute cannot be applied; (?:static |non\\-)member function has no implicit object parameter", | ||
[h]=a, | |||
[i]=o, | |||
[b]={"f4e248c23e05",1533083605,"[P0936R0] add [[clang::lifetimebound]] attribute"}, | |||
[k]={{p,6250,"static void checkAttributesAfterMerging(Sema &S, NamedDecl &ND) {\n // Check the attributes on the function type, if any.\n if (const auto *FD = dyn_cast<FunctionDecl>(&ND)) {\n for (TypeLoc TL = FD->getTypeSourceInfo()->getTypeLoc(); (ATL = TL.getAsAdjusted<AttributedTypeLoc>()); TL = ATL.getModifiedLoc()) {\n // The [[lifetimebound]] attribute can be applied to the implicit object\n // parameter of a non-static member function (other than a ctor or dtor)\n // by applying it to the function type.\n if (const auto *A = ATL.getAttrAs<LifetimeBoundAttr>()) {\n if (!MD || MD->isStatic()) {\n S.Diag(A->getLocation(), diag::err_lifetimebound_no_object_param) << !MD << A->getRange();"}} | |||
}, | }, | ||
[" | ["err_list_init_in_parens"]={ | ||
[ | [j]="cannot initialize ... type A with a parenthesized initializer list", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot initialize %select{non-class|reference}0 type %1 with a parenthesized initializer list", | ||
[ | [f]=n, | ||
[ | [g]="cannot initialize (?:non\\-class|reference) type (.*?) with a parenthesized initializer list", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"3852637005b1",1478965135,"Use descriptive message if list initializer is incorrectly parenthesized."}, | ||
[k]={{L,8119,"bool InitializationSequence::Diagnose(Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, ArrayRef<Expr *> Args) {\n case FK_ParenthesizedListInitForReference:\n S.Diag(Kind.getLocation(), diag::err_list_init_in_parens) << 1 << Entity.getType() << Args[0]->getSourceRange();"},{L,8294,"bool InitializationSequence::Diagnose(Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, ArrayRef<Expr *> Args) {\n case FK_ParenthesizedListInitForScalar:\n S.Diag(Kind.getLocation(), diag::err_list_init_in_parens) << 0 << Entity.getType() << Args[0]->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_literal_operator_bad_param_count"]={ | ||
[ | [j]="non-template literal operator must have one or two parameters", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="non-template literal operator must have one or two parameters", | ||
[b]= | [f]=n, | ||
[ | [g]="non\\-template literal operator must have one or two parameters", | ||
[h]=a, | |||
[i]=o, | |||
[b]={Mb,1455667444,Jb}, | |||
[k]={{r,14046,"/// CheckLiteralOperatorDeclaration - Check whether the declaration\n/// of this literal operator function is well-formed. If so, returns\n/// false; otherwise, emits appropriate diagnostics and returns true.\nbool Sema::CheckLiteralOperatorDeclaration(FunctionDecl *FnDecl) {\n // template <char...> type operator \"\" name() and\n // template <class T, T...> type operator \"\" name() are the only valid\n // template signatures, and the only valid signatures with no parameters.\n //\n // C++20 also allows template <SomeClass T> type operator \"\" name().\n if (TpDecl) {\n } else if (FnDecl->param_size() == 1) {\n } else if (FnDecl->param_size() == 2) {\n } else {\n Diag(FnDecl->getLocation(), diag::err_literal_operator_bad_param_count);"}} | |||
}, | }, | ||
[" | ["err_literal_operator_default_argument"]={ | ||
[ | [j]="literal operator cannot have a default argument", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="literal operator cannot have a default argument", | ||
[b]= | [f]=n, | ||
[ | [g]="literal operator cannot have a default argument", | ||
[h]=a, | |||
[i]=o, | |||
[b]={"768ceccc75f0",1331280982,"Literal operators can\'t have default arguments."}, | |||
[k]={{r,14056,"/// CheckLiteralOperatorDeclaration - Check whether the declaration\n/// of this literal operator function is well-formed. If so, returns\n/// false; otherwise, emits appropriate diagnostics and returns true.\nbool Sema::CheckLiteralOperatorDeclaration(FunctionDecl *FnDecl) {\n // A parameter-declaration-clause containing a default argument is not\n // equivalent to any of the permitted forms.\n for (auto *Param : FnDecl->parameters()) {\n if (Param->hasDefaultArg()) {\n Diag(Param->getDefaultArgRange().getBegin(), diag::err_literal_operator_default_argument) << Param->getDefaultArgRange();"}} | |||
}, | }, | ||
[" | ["err_literal_operator_extern_c"]={ | ||
[ | [j]="literal operator must have C++ linkage", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="literal operator must have C++ linkage", | ||
[ | [f]=n, | ||
[ | [g]="literal operator must have C\\+\\+ linkage", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"72eebee0cb6a",1330854076,"Add tests for [over.literal]. Fix a few bugs which were exposed by the tests."}, | ||
[k]={{r,13947,"/// CheckLiteralOperatorDeclaration - Check whether the declaration\n/// of this literal operator function is well-formed. If so, returns\n/// false; otherwise, emits appropriate diagnostics and returns true.\nbool Sema::CheckLiteralOperatorDeclaration(FunctionDecl *FnDecl) {\n if (FnDecl->isExternC()) {\n Diag(FnDecl->getLocation(), diag::err_literal_operator_extern_c);"}} | |||
}, | }, | ||
[" | ["err_literal_operator_id_outside_namespace"]={ | ||
[ | [j]="non-namespace scope \'A\' cannot have a literal operator member", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="non-namespace scope \'%0\' cannot have a literal operator member", | ||
[ | [f]=n, | ||
[ | [g]="non\\-namespace scope \'(.*?)\' cannot have a literal operator member", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"d091dc179dbd",1386205113,"Reject template-ids containing literal-operator-ids that have a dependent"}, | ||
[k]={{B,483,"bool Sema::checkLiteralOperatorId(const CXXScopeSpec &SS, const UnqualifiedId &Name, bool IsUDSuffix) {\n case NestedNameSpecifier::TypeSpecWithTemplate:\n Diag(Name.getBeginLoc(), diag::err_literal_operator_id_outside_namespace) << SS.getScopeRep();"}} | |||
}, | }, | ||
[" | ["err_literal_operator_invalid_param"]={ | ||
[ | [j]="parameter of literal operator must have type \'unsigned long long\', \'long double\', \'char\', \'wchar_t\', \'char16_t\', \'char32_t\', or \'const char *\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="parameter of literal operator must have type \'unsigned long long\', \'long double\', \'char\', \'wchar_t\', \'char16_t\', \'char32_t\', or \'const char *\'", | ||
[ | [f]=n, | ||
[ | [g]="parameter of literal operator must have type \'unsigned long long\', \'long double\', \'char\', \'wchar_t\', \'char16_t\', \'char32_t\', or \'const char \\*\'", | ||
[h]=a, | |||
[i]=o, | |||
[b]={Mb,1455667444,Jb}, | |||
[k]={{r,14000,"/// CheckLiteralOperatorDeclaration - Check whether the declaration\n/// of this literal operator function is well-formed. If so, returns\n/// false; otherwise, emits appropriate diagnostics and returns true.\nbool Sema::CheckLiteralOperatorDeclaration(FunctionDecl *FnDecl) {\n // template <char...> type operator \"\" name() and\n // template <class T, T...> type operator \"\" name() are the only valid\n // template signatures, and the only valid signatures with no parameters.\n //\n // C++20 also allows template <SomeClass T> type operator \"\" name().\n if (TpDecl) {\n } else if (FnDecl->param_size() == 1) {\n // Only unsigned long long int, long double, any character type, and const\n // char * are allowed as the only parameters.\n if (ParamType->isSpecificBuiltinType(BuiltinType::ULongLong) || ParamType->isSpecificBuiltinType(BuiltinType::LongDouble) || Context.hasSameType(ParamType, Context.CharTy) || Context.hasSameType(ParamType, Context.WideCharTy) || Context.hasSameType(ParamType, Context.Char8Ty) || Context.hasSameType(ParamType, Context.Char16Ty) || Context.hasSameType(ParamType, Context.Char32Ty)) {\n } else if (const PointerType *Ptr = ParamType->getAs<PointerType>()) {\n } else if (ParamType->isRealFloatingType()) {\n } else if (ParamType->isIntegerType()) {\n } else {\n Diag(Param->getSourceRange().getBegin(), diag::err_literal_operator_invalid_param) << ParamType << Param->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_literal_operator_outside_namespace"]={ | ||
[ | [j]="literal operator A must be in a namespace or global scope", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="literal operator %0 must be in a namespace or global scope", | ||
[ | [f]=n, | ||
[ | [g]="literal operator (.*?) must be in a namespace or global scope", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"c88db06565fc",1263373262,"Implement semantic checking for C++ literal operators."}, | ||
[k]={{r,13942,"/// CheckLiteralOperatorDeclaration - Check whether the declaration\n/// of this literal operator function is well-formed. If so, returns\n/// false; otherwise, emits appropriate diagnostics and returns true.\nbool Sema::CheckLiteralOperatorDeclaration(FunctionDecl *FnDecl) {\n if (isa<CXXMethodDecl>(FnDecl)) {\n Diag(FnDecl->getLocation(), diag::err_literal_operator_outside_namespace) << FnDecl->getDeclName();"}} | |||
}, | }, | ||
[" | ["err_literal_operator_param"]={ | ||
[c]=" | [j]="invalid literal operator parameter type A, did you mean B?", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="invalid literal operator parameter type %0, did you mean %1?", | ||
[f]=n, | |||
[g]="invalid literal operator parameter type (.*?), did you mean (.*?)\\?", | |||
[h]=a, | |||
[i]=o, | |||
[b]={Mb,1455667444,Jb}, | |||
[k]={{r,13987,"/// CheckLiteralOperatorDeclaration - Check whether the declaration\n/// of this literal operator function is well-formed. If so, returns\n/// false; otherwise, emits appropriate diagnostics and returns true.\nbool Sema::CheckLiteralOperatorDeclaration(FunctionDecl *FnDecl) {\n // template <char...> type operator \"\" name() and\n // template <class T, T...> type operator \"\" name() are the only valid\n // template signatures, and the only valid signatures with no parameters.\n //\n // C++20 also allows template <SomeClass T> type operator \"\" name().\n if (TpDecl) {\n } else if (FnDecl->param_size() == 1) {\n // Only unsigned long long int, long double, any character type, and const\n // char * are allowed as the only parameters.\n if (ParamType->isSpecificBuiltinType(BuiltinType::ULongLong) || ParamType->isSpecificBuiltinType(BuiltinType::LongDouble) || Context.hasSameType(ParamType, Context.CharTy) || Context.hasSameType(ParamType, Context.WideCharTy) || Context.hasSameType(ParamType, Context.Char8Ty) || Context.hasSameType(ParamType, Context.Char16Ty) || Context.hasSameType(ParamType, Context.Char32Ty)) {\n } else if (const PointerType *Ptr = ParamType->getAs<PointerType>()) {\n // Pointer parameter must be a const char *.\n if (!(Context.hasSameType(InnerType.getUnqualifiedType(), Context.CharTy) && InnerType.isConstQualified() && !InnerType.isVolatileQualified())) {\n Diag(Param->getSourceRange().getBegin(), diag::err_literal_operator_param) << ParamType << \"\'const char *\'\" << Param->getSourceRange();"},{r,13992,"/// CheckLiteralOperatorDeclaration - Check whether the declaration\n/// of this literal operator function is well-formed. If so, returns\n/// false; otherwise, emits appropriate diagnostics and returns true.\nbool Sema::CheckLiteralOperatorDeclaration(FunctionDecl *FnDecl) {\n // template <char...> type operator \"\" name() and\n // template <class T, T...> type operator \"\" name() are the only valid\n // template signatures, and the only valid signatures with no parameters.\n //\n // C++20 also allows template <SomeClass T> type operator \"\" name().\n if (TpDecl) {\n } else if (FnDecl->param_size() == 1) {\n // Only unsigned long long int, long double, any character type, and const\n // char * are allowed as the only parameters.\n if (ParamType->isSpecificBuiltinType(BuiltinType::ULongLong) || ParamType->isSpecificBuiltinType(BuiltinType::LongDouble) || Context.hasSameType(ParamType, Context.CharTy) || Context.hasSameType(ParamType, Context.WideCharTy) || Context.hasSameType(ParamType, Context.Char8Ty) || Context.hasSameType(ParamType, Context.Char16Ty) || Context.hasSameType(ParamType, Context.Char32Ty)) {\n } else if (const PointerType *Ptr = ParamType->getAs<PointerType>()) {\n } else if (ParamType->isRealFloatingType()) {\n Diag(Param->getSourceRange().getBegin(), diag::err_literal_operator_param) << ParamType << Context.LongDoubleTy << Param->getSourceRange();"},{r,13996,"/// CheckLiteralOperatorDeclaration - Check whether the declaration\n/// of this literal operator function is well-formed. If so, returns\n/// false; otherwise, emits appropriate diagnostics and returns true.\nbool Sema::CheckLiteralOperatorDeclaration(FunctionDecl *FnDecl) {\n // template <char...> type operator \"\" name() and\n // template <class T, T...> type operator \"\" name() are the only valid\n // template signatures, and the only valid signatures with no parameters.\n //\n // C++20 also allows template <SomeClass T> type operator \"\" name().\n if (TpDecl) {\n } else if (FnDecl->param_size() == 1) {\n // Only unsigned long long int, long double, any character type, and const\n // char * are allowed as the only parameters.\n if (ParamType->isSpecificBuiltinType(BuiltinType::ULongLong) || ParamType->isSpecificBuiltinType(BuiltinType::LongDouble) || Context.hasSameType(ParamType, Context.CharTy) || Context.hasSameType(ParamType, Context.WideCharTy) || Context.hasSameType(ParamType, Context.Char8Ty) || Context.hasSameType(ParamType, Context.Char16Ty) || Context.hasSameType(ParamType, Context.Char32Ty)) {\n } else if (const PointerType *Ptr = ParamType->getAs<PointerType>()) {\n } else if (ParamType->isRealFloatingType()) {\n } else if (ParamType->isIntegerType()) {\n Diag(Param->getSourceRange().getBegin(), diag::err_literal_operator_param) << ParamType << Context.UnsignedLongLongTy << Param->getSourceRange();"},{r,14016,"/// CheckLiteralOperatorDeclaration - Check whether the declaration\n/// of this literal operator function is well-formed. If so, returns\n/// false; otherwise, emits appropriate diagnostics and returns true.\nbool Sema::CheckLiteralOperatorDeclaration(FunctionDecl *FnDecl) {\n // template <char...> type operator \"\" name() and\n // template <class T, T...> type operator \"\" name() are the only valid\n // template signatures, and the only valid signatures with no parameters.\n //\n // C++20 also allows template <SomeClass T> type operator \"\" name().\n if (TpDecl) {\n } else if (FnDecl->param_size() == 1) {\n } else if (FnDecl->param_size() == 2) {\n if (!PT) {\n Diag((*Param)->getSourceRange().getBegin(), diag::err_literal_operator_param) << FirstParamType << \"\'const char *\'\" << (*Param)->getSourceRange();"},{r,14023,"/// CheckLiteralOperatorDeclaration - Check whether the declaration\n/// of this literal operator function is well-formed. If so, returns\n/// false; otherwise, emits appropriate diagnostics and returns true.\nbool Sema::CheckLiteralOperatorDeclaration(FunctionDecl *FnDecl) {\n // template <char...> type operator \"\" name() and\n // template <class T, T...> type operator \"\" name() are the only valid\n // template signatures, and the only valid signatures with no parameters.\n //\n // C++20 also allows template <SomeClass T> type operator \"\" name().\n if (TpDecl) {\n } else if (FnDecl->param_size() == 1) {\n } else if (FnDecl->param_size() == 2) {\n // First parameter must be const\n if (!PointeeType.isConstQualified() || PointeeType.isVolatileQualified()) {\n Diag((*Param)->getSourceRange().getBegin(), diag::err_literal_operator_param) << FirstParamType << \"\'const char *\'\" << (*Param)->getSourceRange();"},{r,14032,"/// CheckLiteralOperatorDeclaration - Check whether the declaration\n/// of this literal operator function is well-formed. If so, returns\n/// false; otherwise, emits appropriate diagnostics and returns true.\nbool Sema::CheckLiteralOperatorDeclaration(FunctionDecl *FnDecl) {\n // template <char...> type operator \"\" name() and\n // template <class T, T...> type operator \"\" name() are the only valid\n // template signatures, and the only valid signatures with no parameters.\n //\n // C++20 also allows template <SomeClass T> type operator \"\" name().\n if (TpDecl) {\n } else if (FnDecl->param_size() == 1) {\n } else if (FnDecl->param_size() == 2) {\n // Only const char *, const wchar_t*, const char8_t*, const char16_t*, and\n // const char32_t* are allowed as the first parameter to a two-parameter\n // function\n if (!(Context.hasSameType(InnerType, Context.CharTy) || Context.hasSameType(InnerType, Context.WideCharTy) || Context.hasSameType(InnerType, Context.Char8Ty) || Context.hasSameType(InnerType, Context.Char16Ty) || Context.hasSameType(InnerType, Context.Char32Ty))) {\n Diag((*Param)->getSourceRange().getBegin(), diag::err_literal_operator_param) << FirstParamType << \"\'const char *\'\" << (*Param)->getSourceRange();"},{r,14042,"/// CheckLiteralOperatorDeclaration - Check whether the declaration\n/// of this literal operator function is well-formed. If so, returns\n/// false; otherwise, emits appropriate diagnostics and returns true.\nbool Sema::CheckLiteralOperatorDeclaration(FunctionDecl *FnDecl) {\n // template <char...> type operator \"\" name() and\n // template <class T, T...> type operator \"\" name() are the only valid\n // template signatures, and the only valid signatures with no parameters.\n //\n // C++20 also allows template <SomeClass T> type operator \"\" name().\n if (TpDecl) {\n } else if (FnDecl->param_size() == 1) {\n } else if (FnDecl->param_size() == 2) {\n if (!Context.hasSameType(SecondParamType, Context.getSizeType())) {\n Diag((*Param)->getSourceRange().getBegin(), diag::err_literal_operator_param) << SecondParamType << Context.getSizeType() << (*Param)->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_literal_operator_string_not_empty"]={ | ||
[ | [j]="string literal after \'operator\' must be \'\"\"\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="string literal after \'operator\' must be \'\"\"\'", | ||
[ | [f]=n, | ||
[ | [g]="string literal after \'operator\' must be \'\"\"\'", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={"d67aea28f6cb",1331004107,"User-defined literals: reject string and character UDLs in all places where the"}, | ||
[k]={{V,2520,"#include \"clang/Basic/OperatorKinds.def\"\n if (getLangOpts().CPlusPlus11 && isTokenStringLiteral()) {\n // The string literal must be empty.\n if (!Literal.GetString().empty() || Literal.Pascal) {\n DiagId = diag::err_literal_operator_string_not_empty;"}} | |||
}, | }, | ||
[" | ["err_literal_operator_string_prefix"]={ | ||
[ | [j]="string literal after \'operator\' cannot have an encoding prefix", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="string literal after \'operator\' cannot have an encoding prefix", | ||
[b]= | [f]=n, | ||
[ | [g]="string literal after \'operator\' cannot have an encoding prefix", | ||
[h]=a, | |||
[i]=s, | |||
[b]={"7d182a790988",1331247962,"Fix a couple of issues with literal-operator-id parsing, and provide recovery"}, | |||
[k]={{V,2486,"#include \"clang/Basic/OperatorKinds.def\"\n if (getLangOpts().CPlusPlus11 && isTokenStringLiteral()) {\n while (isTokenStringLiteral()) {\n if (!Tok.is(tok::string_literal) && !DiagId) {\n DiagId = diag::err_literal_operator_string_prefix;"}} | |||
}, | }, | ||
[" | ["err_literal_operator_template"]={ | ||
[ | [j]="template parameter list for literal operator must be either \'char...\' or \'typename T, T...\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="template parameter list for literal operator must be either \'char...\' or \'typename T, T...\'", | ||
[ | [f]=n, | ||
[ | [g]="template parameter list for literal operator must be either \'char\\.\\.\\.\' or \'typename T, T\\.\\.\\.\'", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={Mb,1455667444,Jb}, | ||
[k]={{r,13933,"static bool checkLiteralOperatorTemplateParameterList(Sema &SemaRef, FunctionTemplateDecl *TpDecl) {\n SemaRef.Diag(TpDecl->getTemplateParameters()->getSourceRange().getBegin(), diag::err_literal_operator_template) << TpDecl->getTemplateParameters()->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_literal_operator_template_with_params"]={ | ||
[ | [j]="literal operator template cannot have any parameters", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="literal operator template cannot have any parameters", | ||
[ | [f]=n, | ||
[ | [g]="literal operator template cannot have any parameters", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={Mb,1455667444,Jb}, | ||
[k]={{r,13967,"/// CheckLiteralOperatorDeclaration - Check whether the declaration\n/// of this literal operator function is well-formed. If so, returns\n/// false; otherwise, emits appropriate diagnostics and returns true.\nbool Sema::CheckLiteralOperatorDeclaration(FunctionDecl *FnDecl) {\n // template <char...> type operator \"\" name() and\n // template <class T, T...> type operator \"\" name() are the only valid\n // template signatures, and the only valid signatures with no parameters.\n //\n // C++20 also allows template <SomeClass T> type operator \"\" name().\n if (TpDecl) {\n if (FnDecl->param_size() != 0) {\n Diag(FnDecl->getLocation(), diag::err_literal_operator_template_with_params);"}} | |||
}, | }, | ||
[" | ["err_loader_uninitialized_cant_init"]={ | ||
[ | [j]="variable with \'loader_uninitialized\' attribute cannot have an initializer", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="variable with \'loader_uninitialized\' attribute cannot have an initializer", | ||
[ | [f]=n, | ||
[ | [g]="variable with \'loader_uninitialized\' attribute cannot have an initializer", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={T,1576908663,U}, | ||
[k]={{p,11589,"/// AddInitializerToDecl - Adds the initializer Init to the\n/// declaration dcl. If DirectInit is true, this is C++ direct\n/// initialization rather than copy initialization.\nvoid Sema::AddInitializerToDecl(Decl *RealDecl, Expr *Init, bool DirectInit) {\n // The LoaderUninitialized attribute acts as a definition (of undef).\n if (VDecl->hasAttr<LoaderUninitializedAttr>()) {\n Diag(VDecl->getLocation(), diag::err_loader_uninitialized_cant_init);"}} | |||
}, | }, | ||
[" | ["err_loader_uninitialized_extern_decl"]={ | ||
[ | [j]="variable A cannot be declared both \'extern\' and with the \'loader_uninitialized\' attribute", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="variable %0 cannot be declared both \'extern\' and with the \'loader_uninitialized\' attribute", | ||
[ | [f]=n, | ||
[ | [g]="variable (.*?) cannot be declared both \'extern\' and with the \'loader_uninitialized\' attribute", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={T,1576908663,U}, | ||
[k]={{p,11984,"void Sema::ActOnUninitializedDecl(Decl *RealDecl) {\n if (VarDecl *Var = dyn_cast<VarDecl>(RealDecl)) {\n if (!Var->isInvalidDecl() && RealDecl->hasAttr<LoaderUninitializedAttr>()) {\n if (Var->getStorageClass() == SC_Extern) {\n Diag(Var->getLocation(), diag::err_loader_uninitialized_extern_decl) << Var;"}} | |||
}, | }, | ||
[" | ["err_loader_uninitialized_redeclaration"]={ | ||
[ | [j]="redeclaration cannot add \'loader_uninitialized\' attribute", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="redeclaration cannot add \'loader_uninitialized\' attribute", | ||
[ | [f]=n, | ||
[ | [g]="redeclaration cannot add \'loader_uninitialized\' attribute", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={T,1576908663,U}, | ||
[k]={{p,2803,"/// checkNewAttributesAfterDef - If we already have a definition, check that\n/// there are no new attributes in this declaration.\nstatic void checkNewAttributesAfterDef(Sema &S, Decl *New, const Decl *Old) {\n for (unsigned I = 0, E = NewAttributes.size(); I != E;) {\n if (isa<C11NoReturnAttr>(NewAttribute)) {\n } else if (isa<UuidAttr>(NewAttribute)) {\n } else if (const AlignedAttr *AA = dyn_cast<AlignedAttr>(NewAttribute)) {\n } else if (isa<LoaderUninitializedAttr>(NewAttribute)) {\n // If there is a C definition followed by a redeclaration with this\n // attribute then there are two different definitions. In C++, prefer the\n // standard diagnostics.\n if (!S.getLangOpts().CPlusPlus) {\n S.Diag(NewAttribute->getLocation(), diag::err_loader_uninitialized_redeclaration);"}} | |||
}, | }, | ||
[" | ["err_loader_uninitialized_trivial_ctor"]={ | ||
[ | [j]="variable with \'loader_uninitialized\' attribute must have a trivial default constructor", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="variable with \'loader_uninitialized\' attribute must have a trivial default constructor", | ||
[ | [f]=n, | ||
[ | [g]="variable with \'loader_uninitialized\' attribute must have a trivial default constructor", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={T,1576908663,U}, | ||
[k]={{p,11994,"void Sema::ActOnUninitializedDecl(Decl *RealDecl) {\n if (VarDecl *Var = dyn_cast<VarDecl>(RealDecl)) {\n if (!Var->isInvalidDecl() && RealDecl->hasAttr<LoaderUninitializedAttr>()) {\n if (CXXRecordDecl *RD = Var->getType()->getAsCXXRecordDecl()) {\n if (!RD->hasTrivialDefaultConstructor()) {\n Diag(Var->getLocation(), diag::err_loader_uninitialized_trivial_ctor);"}} | |||
}, | }, | ||
[" | ["err_local_cant_init"]={ | ||
[ | [j]="\'__local\' variable cannot have an initializer", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'__local\' variable cannot have an initializer", | ||
[ | [f]=n, | ||
[ | [g]="\'__local\' variable cannot have an initializer", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"2dbb708b8ade",1316466875,"OpenCL: introduce support for function scope __local variables"}, | ||
[k]={{p,11582,"/// AddInitializerToDecl - Adds the initializer Init to the\n/// declaration dcl. If DirectInit is true, this is C++ direct\n/// initialization rather than copy initialization.\nvoid Sema::AddInitializerToDecl(Decl *RealDecl, Expr *Init, bool DirectInit) {\n // OpenCL 1.1 6.5.2: \"Variables allocated in the __local address space inside\n // a kernel function cannot be initialized.\"\n if (VDecl->getType().getAddressSpace() == LangAS::opencl_local) {\n Diag(VDecl->getLocation(), diag::err_local_cant_init);"}} | |||
}, | }, | ||
[" | ["err_loongarch_builtin_requires_la32"]={ | ||
[ | [j]="this builtin requires target: loongarch32", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="this builtin requires target: loongarch32", | ||
[ | [f]=n, | ||
[ | [g]="this builtin requires target\\: loongarch32", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={M,1625925174,N}, | ||
[k]={{y,3406,"bool Sema::CheckLoongArchBuiltinFunctionCall(const TargetInfo &TI, unsigned BuiltinID, CallExpr *TheCall) {\n case LoongArch::BI__builtin_loongarch_cacop_w: {\n if (BuiltinID == LoongArch::BI__builtin_loongarch_cacop_w && !TI.hasFeature(\"32bit\"))\n return Diag(TheCall->getBeginLoc(), diag::err_loongarch_builtin_requires_la32) << TheCall->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_loongarch_builtin_requires_la64"]={ | ||
[ | [j]="this builtin requires target: loongarch64", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="this builtin requires target: loongarch64", | ||
[ | [f]=n, | ||
[ | [g]="this builtin requires target\\: loongarch64", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={M,1625925174,N}, | ||
[k]={{y,3402,"bool Sema::CheckLoongArchBuiltinFunctionCall(const TargetInfo &TI, unsigned BuiltinID, CallExpr *TheCall) {\n case LoongArch::BI__builtin_loongarch_cacop_d:\n if (!TI.hasFeature(\"64bit\"))\n return Diag(TheCall->getBeginLoc(), diag::err_loongarch_builtin_requires_la64) << TheCall->getSourceRange();"},{y,3424,"bool Sema::CheckLoongArchBuiltinFunctionCall(const TargetInfo &TI, unsigned BuiltinID, CallExpr *TheCall) {\n case LoongArch::BI__builtin_loongarch_asrtgt_d:\n if (!TI.hasFeature(\"64bit\"))\n return Diag(TheCall->getBeginLoc(), diag::err_loongarch_builtin_requires_la64) << TheCall->getSourceRange();"},{y,3440,"bool Sema::CheckLoongArchBuiltinFunctionCall(const TargetInfo &TI, unsigned BuiltinID, CallExpr *TheCall) {\n case LoongArch::BI__builtin_loongarch_csrrd_d:\n if (!TI.hasFeature(\"64bit\"))\n return Diag(TheCall->getBeginLoc(), diag::err_loongarch_builtin_requires_la64) << TheCall->getSourceRange();"},{y,3444,"bool Sema::CheckLoongArchBuiltinFunctionCall(const TargetInfo &TI, unsigned BuiltinID, CallExpr *TheCall) {\n case LoongArch::BI__builtin_loongarch_csrwr_d:\n if (!TI.hasFeature(\"64bit\"))\n return Diag(TheCall->getBeginLoc(), diag::err_loongarch_builtin_requires_la64) << TheCall->getSourceRange();"},{y,3448,"bool Sema::CheckLoongArchBuiltinFunctionCall(const TargetInfo &TI, unsigned BuiltinID, CallExpr *TheCall) {\n case LoongArch::BI__builtin_loongarch_csrxchg_d:\n if (!TI.hasFeature(\"64bit\"))\n return Diag(TheCall->getBeginLoc(), diag::err_loongarch_builtin_requires_la64) << TheCall->getSourceRange();"},{y,3453,"bool Sema::CheckLoongArchBuiltinFunctionCall(const TargetInfo &TI, unsigned BuiltinID, CallExpr *TheCall) {\n case LoongArch::BI__builtin_loongarch_ldpte_d:\n if (!TI.hasFeature(\"64bit\"))\n return Diag(TheCall->getBeginLoc(), diag::err_loongarch_builtin_requires_la64) << TheCall->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_lvalue_reference_bind_to_initlist"]={ | ||
[ | [j]="... lvalue reference to type A cannot bind to an initializer list temporary", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%select{non-const|volatile}0 lvalue reference to type %1 cannot bind to an initializer list temporary", | ||
[ | [f]=n, | ||
[ | [g]="(?:non\\-const|volatile) lvalue reference to type (.*?) cannot bind to an initializer list temporary", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"29526f09cee8",1322412607,"Reference initialization with initializer lists."}, | ||
[k]={{L,8203,"bool InitializationSequence::Diagnose(Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, ArrayRef<Expr *> Args) {\n case FK_NonConstLValueReferenceBindingToTemporary:\n if (isa<InitListExpr>(Args[0])) {\n S.Diag(Kind.getLocation(), diag::err_lvalue_reference_bind_to_initlist) << DestType.getNonReferenceType().isVolatileQualified() << DestType.getNonReferenceType() << Args[0]->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_lvalue_reference_bind_to_temporary"]={ | ||
[ | [j]="... lvalue reference to type A cannot bind to a temporary of type B", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%select{non-const|volatile}0 lvalue reference %diff{to type $ cannot bind to a temporary of type $|cannot bind to incompatible temporary}1,2", | ||
[ | [f]=n, | ||
[ | [g]="(?:non\\-const|volatile) lvalue reference (?:to type (.*?) cannot bind to a temporary of type (.*?)|cannot bind to incompatible temporary)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"3e1e52782604",1260399737,"Reimplement reference initialization (C++ [dcl.init.ref]) using the"}, | ||
[k]={{L,8209,"bool InitializationSequence::Diagnose(Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, ArrayRef<Expr *> Args) {\n case FK_NonConstLValueReferenceBindingToUnrelated:\n S.Diag(Kind.getLocation(), Failure == FK_NonConstLValueReferenceBindingToTemporary ? diag::err_lvalue_reference_bind_to_temporary : diag::err_lvalue_reference_bind_to_unrelated) << DestType.getNonReferenceType().isVolatileQualified() << DestType.getNonReferenceType() << OnlyArg->getType() << Args[0]->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_lvalue_reference_bind_to_unrelated"]={ | ||
[ | [j]="... lvalue reference to type A cannot bind to a value of unrelated type B", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%select{non-const|volatile}0 lvalue reference %diff{to type $ cannot bind to a value of unrelated type $|cannot bind to a value of unrelated type}1,2", | ||
[ | [f]=n, | ||
[ | [g]="(?:non\\-const|volatile) lvalue reference (?:to type (.*?) cannot bind to a value of unrelated type (.*?)|cannot bind to a value of unrelated type)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"3e1e52782604",1260399737,"Reimplement reference initialization (C++ [dcl.init.ref]) using the"}, | ||
[k]={{L,8209,"bool InitializationSequence::Diagnose(Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, ArrayRef<Expr *> Args) {\n case FK_NonConstLValueReferenceBindingToUnrelated:\n S.Diag(Kind.getLocation(), Failure == FK_NonConstLValueReferenceBindingToTemporary ? diag::err_lvalue_reference_bind_to_temporary : diag::err_lvalue_reference_bind_to_unrelated) << DestType.getNonReferenceType().isVolatileQualified() << DestType.getNonReferenceType() << OnlyArg->getType() << Args[0]->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_lvalue_to_rvalue_ref"]={ | ||
[ | [j]="rvalue reference to type A cannot bind to lvalue of type B", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="rvalue reference %diff{to type $ cannot bind to lvalue of type $|cannot bind to incompatible lvalue}0,1", | ||
[ | [f]=n, | ||
[ | [g]="rvalue reference (?:to type (.*?) cannot bind to lvalue of type (.*?)|cannot bind to incompatible lvalue)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"0f8b23f71fbe",1237245728,"Almost complete implementation of rvalue references. One bug, and a few unclear areas. Maybe Doug ca..."}, | ||
[k]={{L,8230,"bool InitializationSequence::Diagnose(Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, ArrayRef<Expr *> Args) {\n case FK_RValueReferenceBindingToLValue:\n S.Diag(Kind.getLocation(), diag::err_lvalue_to_rvalue_ref) << DestType.getNonReferenceType() << OnlyArg->getType() << Args[0]->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_machine_mode"]={ | ||
[ | [j]="... machine mode A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%select{unknown|unsupported}0 machine mode %1", | ||
[ | [f]=n, | ||
[ | [g]="(?:unknown|unsupported) machine mode (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"0390908588fa",1387812191,"Consolidating some mode attribute diagnostics. No functional changes intended."}, | ||
[k]={{v,4186,"void Sema::AddModeAttr(Decl *D, const AttributeCommonInfo &CI, IdentifierInfo *Name, bool InInstantiation) {\n // FIXME: Sync this with InitializePredefinedMacros; we need to match int8_t\n // and friends, at least with glibc.\n // FIXME: Make sure floating-point mappings are accurate\n // FIXME: Support XF and TF types\n if (!DestWidth) {\n Diag(AttrLoc, diag::err_machine_mode) << 0 /*Unknown*/ << Name;"},{v,4243,"void Sema::AddModeAttr(Decl *D, const AttributeCommonInfo &CI, IdentifierInfo *Name, bool InInstantiation) {\n if (NewElemTy.isNull()) {\n Diag(AttrLoc, diag::err_machine_mode) << 1 /*Unsupported*/ << Name;"}} | |||
}, | }, | ||
[" | ["err_main_arg_wrong"]={ | ||
[ | [j]="... parameter of \'main\' (...) must be of type A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%select{first|second|third|fourth}0 parameter of \'main\' (%select{argument count|argument array|environment|platform-specific data}0) must be of type %1", | ||
[ | [f]=n, | ||
[ | [g]="(?:first|second|third|fourth) parameter of \'main\' \\((?:argument count|argument array|environment|platform\\-specific data)\\) must be of type (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"02dee0a46a39",1248496613,"Semantic checking for main()."}, | ||
[k]={{p,10654,"void Sema::CheckMain(FunctionDecl *FD, const DeclSpec &DS) {\n for (unsigned i = 0; i < nparams; ++i) {\n if (mismatch) {\n Diag(FD->getLocation(), diag::err_main_arg_wrong) << i << Expected[i];"}} | |||
}, | }, | ||
[" | ["err_main_global_variable"]={ | ||
[ | [j]="main cannot be declared as global variable", | ||
[d]= | [c]=l, | ||
[f]= | [d]=m, | ||
[h]= | [e]="main cannot be declared as global variable", | ||
[b]= | [f]=n, | ||
[ | [g]="main cannot be declared as global variable", | ||
[h]=a, | |||
[i]=o, | |||
[b]={"da8a3b903b45",1439561609,"[Sema] main can\'t be declared as global variable, in C++."}, | |||
[k]={{p,7154,"NamedDecl *Sema::ActOnVariableDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamLists, bool &AddToScope, ArrayRef<BindingDecl *> Bindings) {\n // Special handling of variable named \'main\'.\n if (Name.getAsIdentifierInfo() && Name.getAsIdentifierInfo()->isStr(\"main\") && NewVD->getDeclContext()->getRedeclContext()->isTranslationUnit() && !getLangOpts().Freestanding && !NewVD->getDescribedVarTemplate()) {\n // C++ [basic.start.main]p3\n // A program that declares a variable main at global scope is ill-formed.\n if (getLangOpts().CPlusPlus)\n Diag(D.getBeginLoc(), diag::err_main_global_variable);"}} | |||
}, | }, | ||
[" | ["err_main_returns_nonint"]={ | ||
[ | [j]="\'main\' must return \'int\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'main\' must return \'int\'", | ||
[ | [f]=n, | ||
[ | [g]="\'main\' must return \'int\'", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"02dee0a46a39",1248496613,"Semantic checking for main()."}, | ||
[k]={{p,10593,"void Sema::CheckMain(FunctionDecl *FD, const DeclSpec &DS) {\n if (getLangOpts().GNUMode && !getLangOpts().CPlusPlus) {\n } else {\n // All the standards say that main() should return \'int\'.\n if (Context.hasSameType(FT->getReturnType(), Context.IntTy))\n else {\n Diag(FD->getTypeSpecStartLoc(), diag::err_main_returns_nonint) << (RTRange.isValid() ? FixItHint::CreateReplacement(RTRange, \"int\") : FixItHint());"}} | |||
}, | }, | ||
[" | ["err_main_surplus_args"]={ | ||
[ | [j]="too many parameters (A) for \'main\': must be 0, 2, or 3", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="too many parameters (%0) for \'main\': must be 0, 2, or 3", | ||
[ | [f]=n, | ||
[ | [g]="too many parameters \\((.*?)\\) for \'main\'\\: must be 0, 2, or 3", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"02dee0a46a39",1248496613,"Semantic checking for main()."}, | ||
[k]={{p,10621,"void Sema::CheckMain(FunctionDecl *FD, const DeclSpec &DS) {\n if (HasExtraParameters) {\n Diag(FD->getLocation(), diag::err_main_surplus_args) << nparams;"}} | |||
}, | }, | ||
[" | ["err_mainlike_template_decl"]={ | ||
[ | [j]="A cannot be a template", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%0 cannot be a template", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) cannot be a template", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"c729b0b50669",1379371460,"[-cxx-abi microsoft] Correctly identify Win32 entry points"}, | ||
[k]={{p,10665,"void Sema::CheckMain(FunctionDecl *FD, const DeclSpec &DS) {\n if (!FD->isInvalidDecl() && FD->getDescribedFunctionTemplate()) {\n Diag(FD->getLocation(), diag::err_mainlike_template_decl) << FD;"},{p,10715,"void Sema::CheckMSVCRTEntryPoint(FunctionDecl *FD) {\n if (!FD->isInvalidDecl() && FD->getDescribedFunctionTemplate()) {\n Diag(FD->getLocation(), diag::err_mainlike_template_decl) << FD;"}} | |||
}, | }, | ||
[" | ["err_make_signed_integral_only"]={ | ||
[ | [j]="\'...\' is only compatible with non-... integers and enum types, but was given A...", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'%select{make_unsigned|make_signed}0\' is only compatible with non-%select{bool|_BitInt(1)}1 integers and enum types, but was given %2%select{| whose underlying type is %4}3", | ||
[ | [f]=n, | ||
[ | [g]="\'(?:make_unsigned|make_signed)\' is only compatible with non\\-(?:bool|_BitInt\\(1\\)) integers and enum types, but was given (.*?)(?:| whose underlying type is (.*?))", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={M,1625925174,N}, | ||
[k]={{F,8530,"static QualType ChangeIntegralSignedness(Sema &S, QualType BaseType, bool IsMakeSigned, SourceLocation Loc) {\n if (BaseType->isEnumeralType()) {\n if (auto *BitInt = dyn_cast<BitIntType>(Underlying)) {\n S.Diag(Loc, diag::err_make_signed_integral_only) << IsMakeSigned << /*_BitInt(1)*/ true << BaseType << 1 << Underlying;"},{F,8534,"static QualType ChangeIntegralSignedness(Sema &S, QualType BaseType, bool IsMakeSigned, SourceLocation Loc) {\n if (BaseType->isEnumeralType()) {\n if (Underlying->isBooleanType()) {\n S.Diag(Loc, diag::err_make_signed_integral_only) << IsMakeSigned << /*_BitInt(1)*/ false << BaseType << 1 << Underlying;"},{F,8556,"QualType Sema::BuiltinChangeSignedness(QualType BaseType, UTTKind UKind, SourceLocation Loc) {\n if ((!BaseType->isIntegerType() && !BaseType->isEnumeralType()) || BaseType->isBooleanType() || (BaseType->isBitIntType() && BaseType->getAs<BitIntType>()->getNumBits() < 2)) {\n Diag(Loc, diag::err_make_signed_integral_only) << IsMakeSigned << BaseType->isBitIntType() << BaseType << 0;"}} | |||
}, | }, | ||
[" | ["err_malformed_std_coroutine_handle"]={ | ||
[ | [j]="std::coroutine_handle isn\'t a class template", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="std::coroutine_handle isn\'t a class template", | ||
[ | [f]=n, | ||
[ | [g]="std\\:\\:coroutine_handle isn\'t a class template", | ||
[ | [h]=a, | ||
[ | [i]=tb, | ||
[ | [b]={"6dcb0eb301c7",1489028983,"[coroutines] Build and pass coroutine_handle to await_suspend"}, | ||
[k]={{eb,138,"/// Look up the std::coroutine_handle<PromiseType>.\nstatic QualType lookupCoroutineHandleType(Sema &S, QualType PromiseType, SourceLocation Loc) {\n if (!CoroHandle) {\n S.Diag(Found->getLocation(), diag::err_malformed_std_coroutine_handle);"}} | |||
}, | }, | ||
[" | ["err_malformed_std_coroutine_traits"]={ | ||
[ | [j]="std::coroutine_traits isn\'t a class template", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="std::coroutine_traits isn\'t a class template", | ||
[ | [f]=n, | ||
[ | [g]="std\\:\\:coroutine_traits isn\'t a class template", | ||
[ | [h]=a, | ||
[ | [i]=tb, | ||
[ | [b]={"9f690bd80bb6",1445925765,"[coroutines] Creation of promise object, lookup of operator co_await, building"}, | ||
[k]={{eb,1716,"ClassTemplateDecl *Sema::lookupCoroutineTraits(SourceLocation KwLoc, SourceLocation FuncLoc) {\n if (!StdCoroutineTraitsCache) {\n Diag(Found->getLocation(), diag::err_malformed_std_coroutine_traits);"}} | |||
}, | }, | ||
[" | ["err_malformed_std_initializer_list"]={ | ||
[ | [j]="std::initializer_list must be a class template with a single type parameter", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="std::initializer_list must be a class template with a single type parameter", | ||
[ | [f]=n, | ||
[ | [g]="std\\:\\:initializer_list must be a class template with a single type parameter", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"42acd4a05b52",1326840608,"Auto deduction support for std::initializer_list, including for-range support. This means you can no..."}, | ||
[k]={{r,10156,"static ClassTemplateDecl *LookupStdInitializerList(Sema &S, SourceLocation Loc) {\n if (!Template) {\n S.Diag(Found->getLocation(), diag::err_malformed_std_initializer_list);"},{r,10164,"static ClassTemplateDecl *LookupStdInitializerList(Sema &S, SourceLocation Loc) {\n if (Params->getMinRequiredArguments() != 1 || !isa<TemplateTypeParmDecl>(Params->getParam(0))) {\n S.Diag(Template->getLocation(), diag::err_malformed_std_initializer_list);"}} | |||
}, | }, | ||
[" | ["err_malformed_std_nothrow"]={ | ||
[ | [j]="std::nothrow must be a valid variable declaration", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="std::nothrow must be a valid variable declaration", | ||
[ | [f]=n, | ||
[ | [g]="std\\:\\:nothrow must be a valid variable declaration", | ||
[ | [h]=a, | ||
[ | [i]=tb, | ||
[ | [b]={"627a63cf5081",1492334399,"[coroutines] Fix building of new/delete expressions when get_return_object_on_allocation_failure() i..."}, | ||
[k]={{eb,921,"/// Look up the std::nothrow object.\nstatic Expr *buildStdNoThrowDeclRef(Sema &S, SourceLocation Loc) {\n if (!VD) {\n S.Diag(Found->getLocation(), diag::err_malformed_std_nothrow);"}} | |||
}, | }, | ||
[" | ["err_matrix_incomplete_index"]={ | ||
[ | [j]="single subscript expressions are not allowed for matrix values", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="single subscript expressions are not allowed for matrix values", | ||
[ | [f]=n, | ||
[ | [g]="single subscript expressions are not allowed for matrix values", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={T,1576908663,U}, | ||
[k]={{q,18820,"/// Check for operands with placeholder types and complain if found.\n/// Returns ExprError() if there was an error and no recovery was possible.\nExprResult Sema::CheckPlaceholderExpr(Expr *E) {\n case BuiltinType::IncompleteMatrixIdx:\n Diag(cast<MatrixSubscriptExpr>(E->IgnoreParens())->getRowIdx()->getBeginLoc(), diag::err_matrix_incomplete_index);"}} | |||
}, | }, | ||
[" | ["err_matrix_index_not_integer"]={ | ||
[ | [j]="matrix ... index is not an integer", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="matrix %select{row|column}0 index is not an integer", | ||
[ | [f]=n, | ||
[ | [g]="matrix (?:row|column) index is not an integer", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={T,1576908663,U}, | ||
[k]={{q,4506,"ExprResult Sema::CreateBuiltinMatrixSubscriptExpr(Expr *Base, Expr *RowIdx, Expr *ColumnIdx, SourceLocation RBLoc) {\n // Check that IndexExpr is an integer expression. If it is a constant\n // expression, check that it is less than Dim (= the number of elements in the\n // corresponding dimension).\n auto IsIndexValid = [&](Expr *IndexExpr, unsigned Dim, bool IsColumnIdx) -> Expr * {\n if (!IndexExpr->getType()->isIntegerType() && !IndexExpr->isTypeDependent()) {\n Diag(IndexExpr->getBeginLoc(), diag::err_matrix_index_not_integer) << IsColumnIdx;"}} | |||
}, | }, | ||
[" | ["err_matrix_index_outside_range"]={ | ||
[ | [j]="matrix ... index is outside the allowed range [0, A)", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="matrix %select{row|column}0 index is outside the allowed range [0, %1)", | ||
[ | [f]=n, | ||
[ | [g]="matrix (?:row|column) index is outside the allowed range \\[0, (.*?)\\)", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={T,1576908663,U}, | ||
[k]={{q,4512,"ExprResult Sema::CreateBuiltinMatrixSubscriptExpr(Expr *Base, Expr *RowIdx, Expr *ColumnIdx, SourceLocation RBLoc) {\n // Check that IndexExpr is an integer expression. If it is a constant\n // expression, check that it is less than Dim (= the number of elements in the\n // corresponding dimension).\n auto IsIndexValid = [&](Expr *IndexExpr, unsigned Dim, bool IsColumnIdx) -> Expr * {\n if (std::optional<llvm::APSInt> Idx = IndexExpr->getIntegerConstantExpr(Context)) {\n if ((*Idx < 0 || *Idx >= Dim)) {\n Diag(IndexExpr->getBeginLoc(), diag::err_matrix_index_outside_range) << IsColumnIdx << Dim;"}} | |||
}, | }, | ||
[" | ["err_matrix_separate_incomplete_index"]={ | ||
[ | [j]="matrix row and column subscripts cannot be separated by any expression", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="matrix row and column subscripts cannot be separated by any expression", | ||
[ | [f]=n, | ||
[ | [g]="matrix row and column subscripts cannot be separated by any expression", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={T,1576908663,U}, | ||
[k]={{q,4370,"ExprResult Sema::ActOnArraySubscriptExpr(Scope *S, Expr *base, SourceLocation lbLoc, MultiExprArg ArgExprs, SourceLocation rbLoc) {\n // The matrix subscript operator ([][])is considered a single operator.\n // Separating the index expressions by parenthesis is not allowed.\n if (base && !base->getType().isNull() && base->hasPlaceholderType(BuiltinType::IncompleteMatrixIdx) && !isa<MatrixSubscriptExpr>(base)) {\n Diag(base->getExprLoc(), diag::err_matrix_separate_incomplete_index) << SourceRange(base->getBeginLoc(), rbLoc);"}} | |||
}, | }, | ||
[" | ["err_matrix_subscript_comma"]={ | ||
[ | [j]="comma expressions are not allowed as indices in matrix subscript expressions", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="comma expressions are not allowed as indices in matrix subscript expressions", | ||
[ | [f]=n, | ||
[ | [g]="comma expressions are not allowed as indices in matrix subscript expressions", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={T,1576908663,U}, | ||
[k]={{q,4362,"ExprResult Sema::ActOnArraySubscriptExpr(Scope *S, Expr *base, SourceLocation lbLoc, MultiExprArg ArgExprs, SourceLocation rbLoc) {\n // Check if base and idx form a MatrixSubscriptExpr.\n //\n // Helper to check for comma expressions, which are not allowed as indices for\n // matrix subscript expressions.\n auto CheckAndReportCommaError = [this, base, rbLoc](Expr *E) {\n if (isa<BinaryOperator>(E) && cast<BinaryOperator>(E)->isCommaOp()) {\n Diag(E->getExprLoc(), diag::err_matrix_subscript_comma) << SourceRange(base->getBeginLoc(), rbLoc);"}} | |||
}, | }, | ||
[" | ["err_maybe_falloff_nonvoid_block"]={ | ||
[ | [j]="non-void block does not return a value in all control paths", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="non-void block does not return a value in all control paths", | ||
[ | [f]=n, | ||
[ | [g]="non\\-void block does not return a value in all control paths", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"3bf1ab48d304",1248818641,"Add noreturn support for blocks."}, | ||
[k]={{Kb,546,"struct CheckFallThroughDiagnostics {\n static CheckFallThroughDiagnostics MakeForBlock() {\n D.diag_MaybeFallThrough_ReturnsNonVoid = diag::err_maybe_falloff_nonvoid_block;"}} | |||
}, | }, | ||
[" | ["err_mem_init_not_member_or_class"]={ | ||
[ | [j]="member initializer A does not name a non-static data member or base class", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="member initializer %0 does not name a non-static data member or base class", | ||
[ | [f]=n, | ||
[ | [g]="member initializer (.*?) does not name a non\\-static data member or base class", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{r,3839,"/// Handle a C++ member initializer.\nMemInitResult Sema::BuildMemInitializer(Decl *ConstructorD, Scope *S, CXXScopeSpec &SS, IdentifierInfo *MemberOrBase, ParsedType TemplateTypeTy, const DeclSpec &DS, SourceLocation IdLoc, Expr *Init, SourceLocation EllipsisLoc) {\n if (TemplateTypeTy) {\n } else if (DS.getTypeSpecType() == TST_decltype) {\n } else if (DS.getTypeSpecType() == TST_decltype_auto) {\n } else {\n if (!TyD) {\n if (!TyD && BaseType.isNull()) {\n Diag(IdLoc, diag::err_mem_init_not_member_or_class) << MemberOrBase << SourceRange(IdLoc, Init->getSourceRange().getEnd());"}} | |||
}, | }, | ||
[" | ["err_mem_init_not_member_or_class_suggest"]={ | ||
[ | [j]="initializer A does not name a non-static data member or base class; did you mean the ... B?", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="initializer %0 does not name a non-static data member or base class; did you mean the %select{base class|member}1 %2?", | ||
[ | [f]=n, | ||
[ | [g]="initializer (.*?) does not name a non\\-static data member or base class; did you mean the (?:base class|member) (.*?)\\?", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"15e77a2fd305",1262250624,"Typo correction for C++ base and member initializers, e.g.,"}, | ||
[k]={{r,3819,"/// Handle a C++ member initializer.\nMemInitResult Sema::BuildMemInitializer(Decl *ConstructorD, Scope *S, CXXScopeSpec &SS, IdentifierInfo *MemberOrBase, ParsedType TemplateTypeTy, const DeclSpec &DS, SourceLocation IdLoc, Expr *Init, SourceLocation EllipsisLoc) {\n if (TemplateTypeTy) {\n } else if (DS.getTypeSpecType() == TST_decltype) {\n } else if (DS.getTypeSpecType() == TST_decltype_auto) {\n } else {\n if (!TyD) {\n if (R.empty() && BaseType.isNull() && (Corr = CorrectTypo(R.getLookupNameInfo(), R.getLookupKind(), S, &SS, CCC, CTK_ErrorRecovery, ClassDecl))) {\n if (FieldDecl *Member = Corr.getCorrectionDeclAs<FieldDecl>()) {\n diagnoseTypo(Corr, PDiag(diag::err_mem_init_not_member_or_class_suggest) << MemberOrBase << true);"},{r,3828,"/// Handle a C++ member initializer.\nMemInitResult Sema::BuildMemInitializer(Decl *ConstructorD, Scope *S, CXXScopeSpec &SS, IdentifierInfo *MemberOrBase, ParsedType TemplateTypeTy, const DeclSpec &DS, SourceLocation IdLoc, Expr *Init, SourceLocation EllipsisLoc) {\n if (TemplateTypeTy) {\n } else if (DS.getTypeSpecType() == TST_decltype) {\n } else if (DS.getTypeSpecType() == TST_decltype_auto) {\n } else {\n if (!TyD) {\n if (R.empty() && BaseType.isNull() && (Corr = CorrectTypo(R.getLookupNameInfo(), R.getLookupKind(), S, &SS, CCC, CTK_ErrorRecovery, ClassDecl))) {\n if (FieldDecl *Member = Corr.getCorrectionDeclAs<FieldDecl>()) {\n } else if (TypeDecl *Type = Corr.getCorrectionDeclAs<TypeDecl>()) {\n if (FindBaseInitializer(*this, ClassDecl, Context.getTypeDeclType(Type), DirectBaseSpec, VirtualBaseSpec)) {\n diagnoseTypo(Corr, PDiag(diag::err_mem_init_not_member_or_class_suggest) << MemberOrBase << false, PDiag() /*Suppress note, we provide our own.*/);"}} | |||
}, | }, | ||
[" | ["err_member_call_without_object"]={ | ||
[ | [j]="call to non-static member function without an object argument", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="call to non-static member function without an object argument", | ||
[ | [f]=n, | ||
[ | [g]="call to non\\-static member function without an object argument", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={z,1236199783,A}, | ||
[k]={{q,2010,"/// Diagnose a lookup that found results in an enclosing class during error\n/// recovery. This usually indicates that the results were found in a dependent\n/// base class that could not be searched as part of a template definition.\n/// Always issues a diagnostic (though this may be only a warning in MS\n/// compatibility mode).\n///\n/// Return \\c true if the error is unrecoverable, or \\c false if the caller\n/// should attempt to recover using these lookup results.\nbool Sema::DiagnoseDependentMemberLookup(const LookupResult &R) {\n // Return true if we are inside a default argument instantiation\n // and the found name refers to an instance member function, otherwise\n // the caller will try to create an implicit member call and this is wrong\n // for default arguments.\n //\n // FIXME: Is this special case necessary? We could allow the caller to\n // diagnose this.\n if (isDefaultArgument && ((*R.begin())->isCXXInstanceMember())) {\n Diag(R.getNameLoc(), diag::err_member_call_without_object);"},{q,6546,"/// BuildResolvedCallExpr - Build a call to a resolved expression,\n/// i.e. an expression not of \\p OverloadTy. The expression should\n/// unary-convert to an expression of function-pointer or\n/// block-pointer type.\n///\n/// \\param NDecl the declaration being called, if available\nExprResult Sema::BuildResolvedCallExpr(Expr *Fn, NamedDecl *NDecl, SourceLocation LParenLoc, ArrayRef<Expr *> Args, SourceLocation RParenLoc, Expr *Config, bool IsExecConfig, ADLCallKind UsesADL) {\n if (CXXMethodDecl *Method = dyn_cast_or_null<CXXMethodDecl>(FDecl))\n if (!Method->isStatic())\n return ExprError(Diag(LParenLoc, diag::err_member_call_without_object) << Fn->getSourceRange());"},{fb,215,"/// Diagnose a reference to a field with no object available.\nstatic void diagnoseInstanceReference(Sema &SemaRef, const CXXScopeSpec &SS, NamedDecl *Rep, const DeclarationNameInfo &nameInfo) {\n if (IsField && InStaticMethod)\n else if (ContextClass && RepClass && SS.isEmpty() && !InStaticMethod && !RepClass->Equals(ContextClass) && RepClass->Encloses(ContextClass))\n else if (IsField)\n else\n SemaRef.Diag(Loc, diag::err_member_call_without_object) << Range;"}} | |||
}, | }, | ||
[" | ["err_member_decl_does_not_match"]={ | ||
[ | [j]="out-of-line ... of A does not match any declaration in B", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="out-of-line %select{declaration|definition}2 of %0 does not match any declaration in %1", | ||
[ | [f]=n, | ||
[ | [g]="out\\-of\\-line (?:declaration|definition) of (.*?) does not match any declaration in (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"114394f8246f",1376022901,"Implement [class.friend]p11\'s special name lookup rules for friend declarations"}, | ||
[k]={{p,7910,"/// Generate diagnostics for an invalid function redeclaration.\n///\n/// This routine handles generating the diagnostic messages for an invalid\n/// function redeclaration, including finding possible similar declarations\n/// or performing typo correction if there are no previous declarations with\n/// the same name.\n///\n/// Returns a NamedDecl iff typo correction was performed and substituting in\n/// the new declaration name does not cause new errors.\nstatic NamedDecl *DiagnoseInvalidRedeclaration(Sema &SemaRef, LookupResult &Previous, FunctionDecl *NewFD, ActOnFDArgs &ExtraArgs, bool IsLocalFriend, Scope *S) {\n unsigned DiagMsg = IsLocalFriend ? diag::err_no_matching_local_friend : NewFD->getFriendObjectKind() ? diag::err_qualified_friend_no_match : diag::err_member_decl_does_not_match;"},{K,1732,"DeclResult Sema::CheckClassTemplate(Scope *S, unsigned TagSpec, TagUseKind TUK, SourceLocation KWLoc, CXXScopeSpec &SS, IdentifierInfo *Name, SourceLocation NameLoc, const ParsedAttributesView &Attr, TemplateParameterList *TemplateParams, AccessSpecifier AS, SourceLocation ModulePrivateLoc, SourceLocation FriendLoc, unsigned NumOuterTemplateParamLists, TemplateParameterList **OuterTemplateParamLists, SkipBodyInfo *SkipBody) {\n if (SS.isSet()) {\n // If the name of the template was qualified, we must be defining the\n // template out-of-line.\n if (!SS.isInvalid() && !Invalid && !PrevClassTemplate) {\n Diag(NameLoc, TUK == TUK_Friend ? diag::err_friend_decl_does_not_match : diag::err_member_decl_does_not_match) << Name << SemanticContext << /*IsDefinition*/ true << SS.getRange();"}} | |||
}, | }, | ||
[" | ["err_member_decl_does_not_match_suggest"]={ | ||
[ | [j]="out-of-line ... of A does not match any declaration in B; did you mean C?", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="out-of-line %select{declaration|definition}2 of %0 does not match any declaration in %1; did you mean %3?", | ||
[ | [f]=n, | ||
[ | [g]="out\\-of\\-line (?:declaration|definition) of (.*?) does not match any declaration in (.*?); did you mean (.*?)\\?", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"114394f8246f",1376022901,"Implement [class.friend]p11\'s special name lookup rules for friend declarations"}, | ||
[k]={{p,7970,"/// Generate diagnostics for an invalid function redeclaration.\n///\n/// This routine handles generating the diagnostic messages for an invalid\n/// function redeclaration, including finding possible similar declarations\n/// or performing typo correction if there are no previous declarations with\n/// the same name.\n///\n/// Returns a NamedDecl iff typo correction was performed and substituting in\n/// the new declaration name does not cause new errors.\nstatic NamedDecl *DiagnoseInvalidRedeclaration(Sema &SemaRef, LookupResult &Previous, FunctionDecl *NewFD, ActOnFDArgs &ExtraArgs, bool IsLocalFriend, Scope *S) {\n if (!Prev.empty()) {\n } else if ((Correction = SemaRef.CorrectTypo(Prev.getLookupNameInfo(), Prev.getLookupKind(), S, &ExtraArgs.D.getCXXScopeSpec(), CCC, Sema::CTK_ErrorRecovery, IsLocalFriend ? nullptr : NewDC))) {\n if (Result) {\n SemaRef.diagnoseTypo(Correction, SemaRef.PDiag(IsLocalFriend ? diag::err_no_matching_local_friend_suggest : diag::err_member_decl_does_not_match_suggest) << Name << NewDC << IsDefinition);"}} | |||
}, | }, | ||
[" | ["err_member_def_does_not_match_ret_type"]={ | ||
[ | [j]="return type of out-of-line definition of A differs from that in the declaration", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="return type of out-of-line definition of %q0 differs from that in the declaration", | ||
[ | [f]=n, | ||
[ | [g]="return type of out\\-of\\-line definition of (.*?) differs from that in the declaration", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"3d3208675f79",1296885289,"When the out-of-line definition differs from the declaration in the return type,"}, | ||
[k]={{p,3531,"/// MergeFunctionDecl - We just parsed a function \'New\' from\n/// declarator D which has the same name and scope as a previous\n/// declaration \'Old\'. Figure out how to resolve this situation,\n/// merging decls or emitting diagnostics as appropriate.\n///\n/// In C++, New and Old must be declarations that are not\n/// overloaded. Use IsOverload to determine whether New and Old are\n/// overloaded, and to select the Old declaration that New should be\n/// merged with.\n///\n/// Returns true if there was an error, false otherwise.\nbool Sema::MergeFunctionDecl(FunctionDecl *New, NamedDecl *&OldD, Scope *S, bool MergeTypeWithOld, bool NewDeclIsDefn) {\n if (getLangOpts().CPlusPlus) {\n if (!Context.hasSameType(OldDeclaredReturnType, NewDeclaredReturnType) && canFullyTypeCheckRedeclaration(New, Old, NewDeclaredReturnType, OldDeclaredReturnType)) {\n if (ResQT.isNull()) {\n if (New->isCXXClassMember() && New->isOutOfLine())\n Diag(New->getLocation(), diag::err_member_def_does_not_match_ret_type) << New << New->getReturnTypeSourceRange();"}} | |||
}, | }, | ||
[" | ["err_member_def_undefined_record"]={ | ||
[ | [j]="out-of-line definition of A from class B without definition", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="out-of-line definition of %0 from class %1 without definition", | ||
[ | [f]=n, | ||
[ | [g]="out\\-of\\-line definition of (.*?) from class (.*?) without definition", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"67da35c832e6",1265322386,"Extract a common structure for holding information about the definition"}, | ||
[k]={{p,5604,"NamedDecl *Sema::HandleDeclarator(Scope *S, Declarator &D, MultiTemplateParamsArg TemplateParamLists) {\n if (D.getCXXScopeSpec().isInvalid())\n else if (D.getCXXScopeSpec().isSet()) {\n // If a class is incomplete, do not parse entities inside it.\n if (isa<CXXRecordDecl>(DC) && !cast<CXXRecordDecl>(DC)->hasDefinition()) {\n Diag(D.getIdentifierLoc(), diag::err_member_def_undefined_record) << Name << DC << D.getCXXScopeSpec().getRange();"}} | |||
}, | }, | ||
[" | ["err_member_extra_qualification"]={ | ||
[ | [j]="extra qualification on member A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="extra qualification on member %0", | ||
[ | [f]=n, | ||
[ | [g]="extra qualification on member (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"43bc036e8ae3",1347567380,"Promote the warning about extra qualification on a declaration from a"}, | ||
[k]={{p,5500,"/// Diagnose a declaration whose declarator-id has the given\n/// nested-name-specifier.\n///\n/// \\param SS The nested-name-specifier of the declarator-id.\n///\n/// \\param DC The declaration context to which the nested-name-specifier\n/// resolves.\n///\n/// \\param Name The name of the entity being declared.\n///\n/// \\param Loc The location of the name of the entity being declared.\n///\n/// \\param IsTemplateId Whether the name is a (simple-)template-id, and thus\n/// we\'re declaring an explicit / partial specialization / instantiation.\n///\n/// \\returns true if we cannot safely recover from this error, false otherwise.\nbool Sema::diagnoseQualifiedDeclaration(CXXScopeSpec &SS, DeclContext *DC, DeclarationName Name, SourceLocation Loc, bool IsTemplateId) {\n // If the user provided a superfluous scope specifier that refers back to the\n // class in which the entity is already declared, diagnose and ignore it.\n //\n // class X {\n // void X::f();\n // };\n //\n // Note, it was once ill-formed to give redundant qualification in all\n // contexts, but that rule was removed by DR482.\n if (Cur->Equals(DC)) {\n if (Cur->isRecord()) {\n Diag(Loc, LangOpts.MicrosoftExt ? diag::warn_member_extra_qualification : diag::err_member_extra_qualification) << Name << FixItHint::CreateRemoval(SS.getRange());"}} | |||
}, | }, | ||
[" | ["err_member_function_call_bad_cvr"]={ | ||
[ | [j]="\'this\' argument to member function A has type B, but function is not marked ...", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'this\' argument to member function %0 has type %1, but function is not marked %select{const|restrict|const or restrict|volatile|const or volatile|volatile or restrict|const, volatile, or restrict}2", | ||
[ | [f]=n, | ||
[ | [g]="\'this\' argument to member function (.*?) has type (.*?), but function is not marked (?:const|restrict|const or restrict|volatile|const or volatile|volatile or restrict|const, volatile, or restrict)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"9813d3221d7d",1289894685,"Improve diagnostic for calling non-const method on const object. Fixes rdar://7743000"}, | ||
[k]={{Ab,4791,"/// PerformObjectArgumentInitialization - Perform initialization of\n/// the implicit object parameter for the given Method with the given\n/// expression.\nExprResult Sema::PerformObjectArgumentInitialization(Expr *From, NestedNameSpecifier *Qualifier, NamedDecl *FoundDecl, CXXMethodDecl *Method) {\n if (ICS.isBad()) {\n case BadConversionSequence::bad_qualifiers: {\n if (CVR) {\n Diag(From->getBeginLoc(), diag::err_member_function_call_bad_cvr) << Method->getDeclName() << FromRecordType << (CVR - 1) << From->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_member_function_call_bad_ref"]={ | ||
[ | [j]="\'this\' argument to member function A is an ..., but function has ... ref-qualifier", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'this\' argument to member function %0 is an %select{lvalue|rvalue}1, but function has %select{non-const lvalue|rvalue}2 ref-qualifier", | ||
[ | [f]=n, | ||
[ | [g]="\'this\' argument to member function (.*?) is an (?:lvalue|rvalue), but function has (?:non\\-const lvalue|rvalue) ref\\-qualifier", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"c7e67a04e0f3",1514695779,"[Sema] Improve diagnostics for const- and ref-qualified member functions"}, | ||
[k]={{Ab,4801,"/// PerformObjectArgumentInitialization - Perform initialization of\n/// the implicit object parameter for the given Method with the given\n/// expression.\nExprResult Sema::PerformObjectArgumentInitialization(Expr *From, NestedNameSpecifier *Qualifier, NamedDecl *FoundDecl, CXXMethodDecl *Method) {\n if (ICS.isBad()) {\n case BadConversionSequence::rvalue_ref_to_lvalue: {\n Diag(From->getBeginLoc(), diag::err_member_function_call_bad_ref) << Method->getDeclName() << FromClassification.isRValue() << IsRValueQualified;"}} | |||
}, | }, | ||
[" | ["err_member_function_call_bad_type"]={ | ||
[ | [j]="cannot initialize object parameter of type A with an expression of type B", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot initialize object parameter of type %0 with an expression of type %1", | ||
[ | [f]=n, | ||
[ | [g]="cannot initialize object parameter of type (.*?) with an expression of type (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"c7e67a04e0f3",1514695779,"[Sema] Improve diagnostics for const- and ref-qualified member functions"}, | ||
[k]={{Ab,4815,"/// PerformObjectArgumentInitialization - Perform initialization of\n/// the implicit object parameter for the given Method with the given\n/// expression.\nExprResult Sema::PerformObjectArgumentInitialization(Expr *From, NestedNameSpecifier *Qualifier, NamedDecl *FoundDecl, CXXMethodDecl *Method) {\n if (ICS.isBad()) {\n return Diag(From->getBeginLoc(), diag::err_member_function_call_bad_type) << ImplicitParamRecordType << FromRecordType << From->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_member_function_initialization"]={ | ||
[ | [j]="initializer on function does not look like a pure-specifier", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="initializer on function does not look like a pure-specifier", | ||
[ | [f]=n, | ||
[ | [g]="initializer on function does not look like a pure\\-specifier", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={z,1236199783,A}, | ||
[k]={{p,11459,"/// AddInitializerToDecl - Adds the initializer Init to the\n/// declaration dcl. If DirectInit is true, this is C++ direct\n/// initialization rather than copy initialization.\nvoid Sema::AddInitializerToDecl(Decl *RealDecl, Expr *Init, bool DirectInit) {\n if (CXXMethodDecl *Method = dyn_cast<CXXMethodDecl>(RealDecl)) {\n Diag(Method->getLocation(), diag::err_member_function_initialization) << Method->getDeclName() << Init->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_member_name_of_class"]={ | ||
[ | [j]="member A has the same name as its class", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="member %0 has the same name as its class", | ||
[ | [f]=n, | ||
[ | [g]="member (.*?) has the same name as its class", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"36c22a2335c0",1287148881,"Diagnose C++ [class.mem]p13-14, where a class member has the same name"}, | ||
[k]={{p,5461,"/// DiagnoseClassNameShadow - Implement C++ [class.mem]p13:\n/// If T is the name of a class, then each of the following shall have a\n/// name different from T:\n/// - every static data member of class T;\n/// - every member function of class T\n/// - every member of class T that is itself a type;\n/// \\returns true if the declaration name violates these rules.\nbool Sema::DiagnoseClassNameShadow(DeclContext *DC, DeclarationNameInfo NameInfo) {\n if (Record && Record->getIdentifier() && Record->getDeclName() == Name) {\n Diag(NameInfo.getLoc(), diag::err_member_name_of_class) << Name;"},{r,5942,"/// Perform semantic checks on a class definition that has been\n/// completing, introducing implicitly-declared members, checking for\n/// abstract types, etc.\n///\n/// \\param S The scope in which the class was parsed. Null if we didn\'t just\n/// parse a class definition.\n/// \\param Record The completed class.\nvoid Sema::CheckCompletedCXXClass(Scope *S, CXXRecordDecl *Record) {\n if (Record->getIdentifier()) {\n for (DeclContext::lookup_iterator I = R.begin(), E = R.end(); I != E; ++I) {\n if (((isa<FieldDecl>(D) || isa<UnresolvedUsingValueDecl>(D)) && Record->hasUserDeclaredConstructor()) || isa<IndirectFieldDecl>(D)) {\n Diag((*I)->getLocation(), diag::err_member_name_of_class) << D->getDeclName();"}} | |||
}, | }, | ||
[" | ["err_member_not_yet_instantiated"]={ | ||
[ | [j]="no member A in B; it has not yet been instantiated", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="no member %0 in %1; it has not yet been instantiated", | ||
[ | [f]=n, | ||
[ | [g]="no member (.*?) in (.*?); it has not yet been instantiated", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"528ad93924b1",1299442365,"We may fail to map a declaration in a template to its instantiated"}, | ||
[k]={{"clang/lib/Sema/SemaTemplateInstantiateDecl.cpp",5281,"/// Find the instantiation of the given declaration within the\n/// current instantiation.\n///\n/// This routine is intended to be used when \\p D is a declaration\n/// referenced from within a template, that needs to mapped into the\n/// corresponding declaration within an instantiation. For example,\n/// given:\n///\n/// \\code\n/// template<typename T>\n/// struct X {\n/// enum Kind {\n/// KnownValue = sizeof(T)\n/// };\n///\n/// bool getKind() const { return KnownValue; }\n/// };\n///\n/// template struct X<int>;\n/// \\endcode\n///\n/// In the instantiation of X<int>::getKind(), we need to map the \\p\n/// EnumConstantDecl for \\p KnownValue (which refers to\n/// X<T>::<Kind>::KnownValue) to its instantiation (X<int>::<Kind>::KnownValue).\n/// \\p FindInstantiatedDecl performs this mapping from within the instantiation\n/// of X<int>.\nNamedDecl *Sema::FindInstantiatedDecl(SourceLocation Loc, NamedDecl *D, const MultiLevelTemplateArgumentList &TemplateArgs, bool FindingInstantiatedContext) {\n if (ParentDC != D->getDeclContext()) {\n if (!Result) {\n if (isa<UsingShadowDecl>(D)) {\n } else if (hasUncompilableErrorOccurred()) {\n } else if (IsBeingInstantiated) {\n Diag(Loc, diag::err_member_not_yet_instantiated) << D->getDeclName() << Context.getTypeDeclType(cast<CXXRecordDecl>(ParentDC));"}} | |||
}, | }, | ||
[" | ["err_member_qualification"]={ | ||
[ | [j]="non-friend class member A cannot have a qualified name", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="non-friend class member %0 cannot have a qualified name", | ||
[ | [f]=n, | ||
[ | [g]="non\\-friend class member (.*?) cannot have a qualified name", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"a007d36c1bad",1287008393,"Generalize the checking for qualification of (non-friend) class"}, | ||
[k]={{p,5513,"/// Diagnose a declaration whose declarator-id has the given\n/// nested-name-specifier.\n///\n/// \\param SS The nested-name-specifier of the declarator-id.\n///\n/// \\param DC The declaration context to which the nested-name-specifier\n/// resolves.\n///\n/// \\param Name The name of the entity being declared.\n///\n/// \\param Loc The location of the name of the entity being declared.\n///\n/// \\param IsTemplateId Whether the name is a (simple-)template-id, and thus\n/// we\'re declaring an explicit / partial specialization / instantiation.\n///\n/// \\returns true if we cannot safely recover from this error, false otherwise.\nbool Sema::diagnoseQualifiedDeclaration(CXXScopeSpec &SS, DeclContext *DC, DeclarationName Name, SourceLocation Loc, bool IsTemplateId) {\n // Check whether the qualifying scope encloses the scope of the original\n // declaration. For a template-id, we perform the checks in\n // CheckTemplateSpecializationScope.\n if (!Cur->Encloses(DC) && !IsTemplateId) {\n if (Cur->isRecord())\n Diag(Loc, diag::err_member_qualification) << Name << SS.getRange();"},{p,5535,"/// Diagnose a declaration whose declarator-id has the given\n/// nested-name-specifier.\n///\n/// \\param SS The nested-name-specifier of the declarator-id.\n///\n/// \\param DC The declaration context to which the nested-name-specifier\n/// resolves.\n///\n/// \\param Name The name of the entity being declared.\n///\n/// \\param Loc The location of the name of the entity being declared.\n///\n/// \\param IsTemplateId Whether the name is a (simple-)template-id, and thus\n/// we\'re declaring an explicit / partial specialization / instantiation.\n///\n/// \\returns true if we cannot safely recover from this error, false otherwise.\nbool Sema::diagnoseQualifiedDeclaration(CXXScopeSpec &SS, DeclContext *DC, DeclarationName Name, SourceLocation Loc, bool IsTemplateId) {\n if (Cur->isRecord()) {\n Diag(Loc, diag::err_member_qualification) << Name << SS.getRange();"},{r,3056,"/// ActOnCXXMemberDeclarator - This is invoked when a C++ class member\n/// declarator is parsed. \'AS\' is the access specifier, \'BW\' specifies the\n/// bitfield width if there is one, \'InitExpr\' specifies the initializer if\n/// one has been parsed, and \'InitStyle\' is set if an in-class initializer is\n/// present (but parsing it has been deferred).\nNamedDecl *Sema::ActOnCXXMemberDeclarator(Scope *S, AccessSpecifier AS, Declarator &D, MultiTemplateParamsArg TemplateParameterLists, Expr *BW, const VirtSpecifiers &VS, InClassInitStyle InitStyle) {\n if (isInstField) {\n if (SS.isSet() && !SS.isInvalid()) {\n // The user provided a superfluous scope specifier inside a class\n // definition:\n //\n // class X {\n // int X::member;\n // };\n if (DeclContext *DC = computeDeclContext(SS, false))\n else\n Diag(D.getIdentifierLoc(), diag::err_member_qualification) << Name << SS.getRange();"}} | |||
}, | }, | ||
[" | ["err_member_redeclared"]={ | ||
[ | [j]="class member cannot be redeclared", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="class member cannot be redeclared", | ||
[ | [f]=n, | ||
[ | [g]="class member cannot be redeclared", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{p,3593,"/// MergeFunctionDecl - We just parsed a function \'New\' from\n/// declarator D which has the same name and scope as a previous\n/// declaration \'Old\'. Figure out how to resolve this situation,\n/// merging decls or emitting diagnostics as appropriate.\n///\n/// In C++, New and Old must be declarations that are not\n/// overloaded. Use IsOverload to determine whether New and Old are\n/// overloaded, and to select the Old declaration that New should be\n/// merged with.\n///\n/// Returns true if there was an error, false otherwise.\nbool Sema::MergeFunctionDecl(FunctionDecl *New, NamedDecl *&OldD, Scope *S, bool MergeTypeWithOld, bool NewDeclIsDefn) {\n if (getLangOpts().CPlusPlus) {\n if (OldMethod && NewMethod) {\n if (!isFriend && NewMethod->getLexicalDeclContext()->isRecord() && !IsClassScopeExplicitSpecialization) {\n // C++ [class.mem]p1:\n // [...] A member shall not be declared twice in the\n // member-specification, except that a nested class or member\n // class template can be declared and then later defined.\n if (!inTemplateInstantiation()) {\n if (isa<CXXConstructorDecl>(OldMethod))\n else if (isa<CXXDestructorDecl>(NewMethod))\n else if (isa<CXXConversionDecl>(NewMethod))\n else\n NewDiag = diag::err_member_redeclared;"}} | |||
}, | }, | ||
[" | ["err_member_redeclared_in_instantiation"]={ | ||
[ | [j]="multiple overloads of A instantiate to the same signature B", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="multiple overloads of %0 instantiate to the same signature %1", | ||
[ | [f]=n, | ||
[ | [g]="multiple overloads of (.*?) instantiate to the same signature (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"57e7ff9c0c44",1342152724,"Provide a special-case diagnostic when two class member functions instantiate"}, | ||
[k]={{p,3597,"/// MergeFunctionDecl - We just parsed a function \'New\' from\n/// declarator D which has the same name and scope as a previous\n/// declaration \'Old\'. Figure out how to resolve this situation,\n/// merging decls or emitting diagnostics as appropriate.\n///\n/// In C++, New and Old must be declarations that are not\n/// overloaded. Use IsOverload to determine whether New and Old are\n/// overloaded, and to select the Old declaration that New should be\n/// merged with.\n///\n/// Returns true if there was an error, false otherwise.\nbool Sema::MergeFunctionDecl(FunctionDecl *New, NamedDecl *&OldD, Scope *S, bool MergeTypeWithOld, bool NewDeclIsDefn) {\n if (getLangOpts().CPlusPlus) {\n if (OldMethod && NewMethod) {\n if (!isFriend && NewMethod->getLexicalDeclContext()->isRecord() && !IsClassScopeExplicitSpecialization) {\n // C++ [class.mem]p1:\n // [...] A member shall not be declared twice in the\n // member-specification, except that a nested class or member\n // class template can be declared and then later defined.\n if (!inTemplateInstantiation()) {\n } else {\n Diag(New->getLocation(), diag::err_member_redeclared_in_instantiation) << New << New->getType();"}} | |||
}, | }, | ||
[" | ["err_member_reference_needs_call"]={ | ||
[ | [j]="base of member reference is a function; perhaps you meant to call it...?", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="base of member reference is a function; perhaps you meant to call it%select{| with no arguments}0?", | ||
[ | [f]=n, | ||
[ | [g]="base of member reference is a function; perhaps you meant to call it(?:| with no arguments)\\?", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"d82ae38d5300",1257489047,"Rework the fix-it hint for code like"}, | ||
[k]={{fb,1378,"fail:\n if (S.tryToRecoverWithCall(BaseExpr, S.PDiag(diag::err_member_reference_needs_call),"}} | |||
}, | }, | ||
[" | ["err_member_with_template_arguments"]={ | ||
[ | [j]="member A cannot have template arguments", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="member %0 cannot have template arguments", | ||
[ | [f]=n, | ||
[ | [g]="member (.*?) cannot have template arguments", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={Cb,1620118562,Eb}, | ||
[k]={{r,3042,"/// ActOnCXXMemberDeclarator - This is invoked when a C++ class member\n/// declarator is parsed. \'AS\' is the access specifier, \'BW\' specifies the\n/// bitfield width if there is one, \'InitExpr\' specifies the initializer if\n/// one has been parsed, and \'InitStyle\' is set if an in-class initializer is\n/// present (but parsing it has been deferred).\nNamedDecl *Sema::ActOnCXXMemberDeclarator(Scope *S, AccessSpecifier AS, Declarator &D, MultiTemplateParamsArg TemplateParameterLists, Expr *BW, const VirtSpecifiers &VS, InClassInitStyle InitStyle) {\n if (isInstField) {\n if (D.getName().getKind() == UnqualifiedIdKind::IK_TemplateId) {\n Diag(D.getIdentifierLoc(), diag::err_member_with_template_arguments) << II << SourceRange(D.getName().TemplateId->LAngleLoc, D.getName().TemplateId->RAngleLoc) << D.getName().TemplateId->LAngleLoc;"}} | |||
}, | }, | ||
[" | ["err_mempointer_in_nonclass_type"]={ | ||
[ | [j]="member pointer refers into non-class type A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="member pointer refers into non-class type %0", | ||
[ | [f]=n, | ||
[ | [g]="member pointer refers into non\\-class type (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"0bdc1f5eef52",1244585859,"Handle member pointer types with dependent class types (e.g., int"}, | ||
[k]={{F,2705,"/// Build a member pointer type \\c T Class::*.\n///\n/// \\param T the type to which the member pointer refers.\n/// \\param Class the class type into which the member pointer points.\n/// \\param Loc the location where this type begins\n/// \\param Entity the name of the entity that will have this member pointer type\n///\n/// \\returns a member pointer type, if successful, or a NULL type if there was\n/// an error.\nQualType Sema::BuildMemberPointerType(QualType T, QualType Class, SourceLocation Loc, DeclarationName Entity) {\n if (!Class->isDependentType() && !Class->isRecordType()) {\n Diag(Loc, diag::err_mempointer_in_nonclass_type) << Class;"}} | |||
}, | }, | ||
[" | ["err_memptr_conv_via_virtual"]={ | ||
[ | [j]="conversion from pointer to member of class A to pointer to member of class B via virtual base C is not allowed", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="conversion from pointer to member of class %0 to pointer to member of class %1 via virtual base %2 is not allowed", | ||
[ | [f]=n, | ||
[ | [g]="conversion from pointer to member of class (.*?) to pointer to member of class (.*?) via virtual base (.*?) is not allowed", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{"clang/lib/Sema/SemaCast.cpp",1561,"/// TryStaticMemberPointerUpcast - Tests whether a conversion according to\n/// C++ 5.2.9p9 is valid:\n///\n/// An rvalue of type \"pointer to member of D of type cv1 T\" can be\n/// converted to an rvalue of type \"pointer to member of B of type cv2 T\",\n/// where B is a base class of D [...].\n///\nTryCastResult TryStaticMemberPointerUpcast(Sema &Self, ExprResult &SrcExpr, QualType SrcType, QualType DestType, bool CStyle, SourceRange OpRange, unsigned &msg, CastKind &Kind, CXXCastPath &BasePath) {\n if (const RecordType *VBase = Paths.getDetectedVirtual()) {\n Self.Diag(OpRange.getBegin(), diag::err_memptr_conv_via_virtual) << SrcClass << DestClass << QualType(VBase, 0) << OpRange;"},{Ab,2807,"/// CheckMemberPointerConversion - Check the member pointer conversion from the\n/// expression From to the type ToType. This routine checks for ambiguous or\n/// virtual or inaccessible base-to-derived member pointer conversions\n/// for which IsMemberPointerConversion has already returned true. It returns\n/// true and produces a diagnostic if there was an error, or returns false\n/// otherwise.\nbool Sema::CheckMemberPointerConversion(Expr *From, QualType ToType, CastKind &Kind, CXXCastPath &BasePath, bool IgnoreBaseAccess) {\n if (const RecordType *VBase = Paths.getDetectedVirtual()) {\n Diag(From->getExprLoc(), diag::err_memptr_conv_via_virtual) << FromClass << ToClass << QualType(VBase, 0) << From->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_memptr_incomplete"]={ | ||
[ | [j]="member pointer has incomplete base type A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="member pointer has incomplete base type %0", | ||
[ | [f]=n, | ||
[ | [g]="member pointer has incomplete base type (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"54d13b406828",1527651604,"Sema: Add a flag for rejecting member pointers with incomplete base types."}, | ||
[k]={{F,8047,"/// The implementation of RequireCompleteType\nbool Sema::RequireCompleteTypeImpl(SourceLocation Loc, QualType T, CompleteTypeKind Kind, TypeDiagnoser *Diagnoser) {\n if (const MemberPointerType *MPTy = T->getAs<MemberPointerType>()) {\n if (!MPTy->getClass()->isDependentType()) {\n if (getLangOpts().CompleteMemberPointers && !MPTy->getClass()->getAsCXXRecordDecl()->isBeingDefined() && RequireCompleteType(Loc, QualType(MPTy->getClass(), 0), Kind, diag::err_memptr_incomplete))"}} | |||
}, | }, | ||
[" | ["err_memtag_any2arg_pointer"]={ | ||
[ | [j]="at least one argument of MTE builtin function must be a pointer (A, B invalid)", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="at least one argument of MTE builtin function must be a pointer (%0, %1 invalid)", | ||
[ | [f]=n, | ||
[ | [g]="at least one argument of MTE builtin function must be a pointer \\((.*?), (.*?) invalid\\)", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"18b0c40bc5db",1556312891,"[AArch64] Add support for MTE intrinsics"}, | ||
[k]={{y,8471,"/// SemaBuiltinARMMemoryTaggingCall - Handle calls of memory tagging extensions\nbool Sema::SemaBuiltinARMMemoryTaggingCall(unsigned BuiltinID, CallExpr *TheCall) {\n if (BuiltinID == AArch64::BI__builtin_arm_subp) {\n // at least one argument should be pointer type\n if (!ArgTypeA->isAnyPointerType() && !ArgTypeB->isAnyPointerType())\n return Diag(TheCall->getBeginLoc(), diag::err_memtag_any2arg_pointer) << ArgTypeA << ArgTypeB << ArgA->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_memtag_arg_must_be_integer"]={ | ||
[ | [j]="A argument of MTE builtin function must be an integer type (B invalid)", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%0 argument of MTE builtin function must be an integer type (%1 invalid)", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) argument of MTE builtin function must be an integer type \\((.*?) invalid\\)", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"18b0c40bc5db",1556312891,"[AArch64] Add support for MTE intrinsics"}, | ||
[k]={{y,8372,"/// SemaBuiltinARMMemoryTaggingCall - Handle calls of memory tagging extensions\nbool Sema::SemaBuiltinARMMemoryTaggingCall(unsigned BuiltinID, CallExpr *TheCall) {\n if (BuiltinID == AArch64::BI__builtin_arm_irg) {\n if (!SecArgType->isIntegerType())\n return Diag(TheCall->getBeginLoc(), diag::err_memtag_arg_must_be_integer) << \"second\" << SecArgType << Arg1->getSourceRange();"},{y,8414,"/// SemaBuiltinARMMemoryTaggingCall - Handle calls of memory tagging extensions\nbool Sema::SemaBuiltinARMMemoryTaggingCall(unsigned BuiltinID, CallExpr *TheCall) {\n if (BuiltinID == AArch64::BI__builtin_arm_gmi) {\n if (!SecArgType->isIntegerType())\n return Diag(TheCall->getBeginLoc(), diag::err_memtag_arg_must_be_integer) << \"second\" << SecArgType << Arg1->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_memtag_arg_must_be_pointer"]={ | ||
[ | [j]="A argument of MTE builtin function must be a pointer (B invalid)", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%0 argument of MTE builtin function must be a pointer (%1 invalid)", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) argument of MTE builtin function must be a pointer \\((.*?) invalid\\)", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"18b0c40bc5db",1556312891,"[AArch64] Add support for MTE intrinsics"}, | ||
[k]={{y,8364,"/// SemaBuiltinARMMemoryTaggingCall - Handle calls of memory tagging extensions\nbool Sema::SemaBuiltinARMMemoryTaggingCall(unsigned BuiltinID, CallExpr *TheCall) {\n if (BuiltinID == AArch64::BI__builtin_arm_irg) {\n if (!FirstArgType->isAnyPointerType())\n return Diag(TheCall->getBeginLoc(), diag::err_memtag_arg_must_be_pointer) << \"first\" << FirstArgType << Arg0->getSourceRange();"},{y,8389,"/// SemaBuiltinARMMemoryTaggingCall - Handle calls of memory tagging extensions\nbool Sema::SemaBuiltinARMMemoryTaggingCall(unsigned BuiltinID, CallExpr *TheCall) {\n if (BuiltinID == AArch64::BI__builtin_arm_addg) {\n if (!FirstArgType->isAnyPointerType())\n return Diag(TheCall->getBeginLoc(), diag::err_memtag_arg_must_be_pointer) << \"first\" << FirstArgType << Arg0->getSourceRange();"},{y,8410,"/// SemaBuiltinARMMemoryTaggingCall - Handle calls of memory tagging extensions\nbool Sema::SemaBuiltinARMMemoryTaggingCall(unsigned BuiltinID, CallExpr *TheCall) {\n if (BuiltinID == AArch64::BI__builtin_arm_gmi) {\n if (!FirstArgType->isAnyPointerType())\n return Diag(TheCall->getBeginLoc(), diag::err_memtag_arg_must_be_pointer) << \"first\" << FirstArgType << Arg0->getSourceRange();"},{y,8429,"/// SemaBuiltinARMMemoryTaggingCall - Handle calls of memory tagging extensions\nbool Sema::SemaBuiltinARMMemoryTaggingCall(unsigned BuiltinID, CallExpr *TheCall) {\n if (BuiltinID == AArch64::BI__builtin_arm_ldg || BuiltinID == AArch64::BI__builtin_arm_stg) {\n if (!FirstArgType->isAnyPointerType())\n return Diag(TheCall->getBeginLoc(), diag::err_memtag_arg_must_be_pointer) << \"first\" << FirstArgType << Arg0->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_memtag_arg_null_or_pointer"]={ | ||
[ | [j]="A argument of MTE builtin function must be a null or a pointer (B invalid)", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%0 argument of MTE builtin function must be a null or a pointer (%1 invalid)", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) argument of MTE builtin function must be a null or a pointer \\((.*?) invalid\\)", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"18b0c40bc5db",1556312891,"[AArch64] Add support for MTE intrinsics"}, | ||
[k]={{y,8455,"/// SemaBuiltinARMMemoryTaggingCall - Handle calls of memory tagging extensions\nbool Sema::SemaBuiltinARMMemoryTaggingCall(unsigned BuiltinID, CallExpr *TheCall) {\n if (BuiltinID == AArch64::BI__builtin_arm_subp) {\n // argument should be either a pointer or null\n if (!ArgTypeA->isAnyPointerType() && !isNull(ArgA))\n return Diag(TheCall->getBeginLoc(), diag::err_memtag_arg_null_or_pointer) << \"first\" << ArgTypeA << ArgA->getSourceRange();"},{y,8458,"/// SemaBuiltinARMMemoryTaggingCall - Handle calls of memory tagging extensions\nbool Sema::SemaBuiltinARMMemoryTaggingCall(unsigned BuiltinID, CallExpr *TheCall) {\n if (BuiltinID == AArch64::BI__builtin_arm_subp) {\n if (!ArgTypeB->isAnyPointerType() && !isNull(ArgB))\n return Diag(TheCall->getBeginLoc(), diag::err_memtag_arg_null_or_pointer) << \"second\" << ArgTypeB << ArgB->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_messaging_class_with_direct_method"]={ | ||
[ | [j]="messaging a Class with a method that is possibly direct", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="messaging a Class with a method that is possibly direct", | ||
[ | [f]=n, | ||
[ | [g]="messaging a Class with a method that is possibly direct", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={yb,1573050950,vb}, | ||
[k]={{O,2530,"/// Build an Objective-C instance message expression.\n///\n/// This routine takes care of both normal instance messages and\n/// instance messages to the superclass instance.\n///\n/// \\param Receiver The expression that computes the object that will\n/// receive this message. This may be empty, in which case we are\n/// sending to the superclass instance and \\p SuperLoc must be a valid\n/// source location.\n///\n/// \\param ReceiverType The (static) type of the object receiving the\n/// message. When a \\p Receiver expression is provided, this is the\n/// same type as that expression. For a superclass instance send, this\n/// is a pointer to the type of the superclass.\n///\n/// \\param SuperLoc The location of the \"super\" keyword in a\n/// superclass instance message.\n///\n/// \\param Sel The selector to which the message is being sent.\n///\n/// \\param Method The method that this instance message is invoking, if\n/// already known.\n///\n/// \\param LBracLoc The location of the opening square bracket \']\'.\n///\n/// \\param RBracLoc The location of the closing square bracket \']\'.\n///\n/// \\param ArgsIn The message arguments.\nExprResult Sema::BuildInstanceMessage(Expr *Receiver, QualType ReceiverType, SourceLocation SuperLoc, Selector Sel, ObjCMethodDecl *Method, SourceLocation LBracLoc, ArrayRef<SourceLocation> SelectorLocs, SourceLocation RBracLoc, MultiExprArg ArgsIn, bool isImplicit) {\n if (Method && Method->isDirectMethod()) {\n // Under ARC, self can\'t be assigned, and doing a direct call to `self`\n // when it\'s a Class is hence safe. For other cases, we can\'t trust `self`\n // is what we think it is, so we reject it.\n if (ReceiverType->isObjCClassType() && !isImplicit && !(Receiver->isObjCSelfExpr() && getLangOpts().ObjCAutoRefCount)) {\n {\n auto Builder = Diag(Receiver->getExprLoc(), diag::err_messaging_class_with_direct_method);"}} | |||
}, | }, | ||
[" | ["err_messaging_super_with_direct_method"]={ | ||
[ | [j]="messaging super with a direct method", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="messaging super with a direct method", | ||
[ | [f]=n, | ||
[ | [g]="messaging super with a direct method", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={yb,1573050950,vb}, | ||
[k]={{O,2169,"/// \\param ReceiverType The type of the object receiving the\n/// message. When \\p ReceiverTypeInfo is non-NULL, this is the same\n/// type as that refers to. For a superclass send, this is the type of\n/// the superclass.\n///\n/// \\param SuperLoc The location of the \"super\" keyword in a\n/// superclass message.\n///\n/// \\param Sel The selector to which the message is being sent.\n///\n/// \\param Method The method that this class message is invoking, if\n/// already known.\n///\n/// \\param LBracLoc The location of the opening square bracket \']\'.\n///\n/// \\param RBracLoc The location of the closing square bracket \']\'.\n///\n/// \\param ArgsIn The message arguments.\nExprResult Sema::BuildClassMessage(TypeSourceInfo *ReceiverTypeInfo, QualType ReceiverType, SourceLocation SuperLoc, Selector Sel, ObjCMethodDecl *Method, SourceLocation LBracLoc, ArrayRef<SourceLocation> SelectorLocs, SourceLocation RBracLoc, MultiExprArg ArgsIn, bool isImplicit) {\n if (Method && Method->isDirectMethod() && SuperLoc.isValid()) {\n Diag(SuperLoc, diag::err_messaging_super_with_direct_method) << FixItHint::CreateReplacement(SuperLoc, getLangOpts().ObjCAutoRefCount ? \"self\" : Method->getClassInterface()->getName());"},{O,2540,"/// Build an Objective-C instance message expression.\n///\n/// This routine takes care of both normal instance messages and\n/// instance messages to the superclass instance.\n///\n/// \\param Receiver The expression that computes the object that will\n/// receive this message. This may be empty, in which case we are\n/// sending to the superclass instance and \\p SuperLoc must be a valid\n/// source location.\n///\n/// \\param ReceiverType The (static) type of the object receiving the\n/// message. When a \\p Receiver expression is provided, this is the\n/// same type as that expression. For a superclass instance send, this\n/// is a pointer to the type of the superclass.\n///\n/// \\param SuperLoc The location of the \"super\" keyword in a\n/// superclass instance message.\n///\n/// \\param Sel The selector to which the message is being sent.\n///\n/// \\param Method The method that this instance message is invoking, if\n/// already known.\n///\n/// \\param LBracLoc The location of the opening square bracket \']\'.\n///\n/// \\param RBracLoc The location of the closing square bracket \']\'.\n///\n/// \\param ArgsIn The message arguments.\nExprResult Sema::BuildInstanceMessage(Expr *Receiver, QualType ReceiverType, SourceLocation SuperLoc, Selector Sel, ObjCMethodDecl *Method, SourceLocation LBracLoc, ArrayRef<SourceLocation> SelectorLocs, SourceLocation RBracLoc, MultiExprArg ArgsIn, bool isImplicit) {\n if (Method && Method->isDirectMethod()) {\n if (SuperLoc.isValid()) {\n {\n auto Builder = Diag(SuperLoc, diag::err_messaging_super_with_direct_method);"}} | |||
}, | }, | ||
[" | ["err_messaging_unqualified_id_with_direct_method"]={ | ||
[ | [j]="messaging unqualified id with a method that is possibly direct", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="messaging unqualified id with a method that is possibly direct", | ||
[ | [f]=n, | ||
[ | [g]="messaging unqualified id with a method that is possibly direct", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={yb,1573050950,vb}, | ||
[k]={{O,2521,"/// Build an Objective-C instance message expression.\n///\n/// This routine takes care of both normal instance messages and\n/// instance messages to the superclass instance.\n///\n/// \\param Receiver The expression that computes the object that will\n/// receive this message. This may be empty, in which case we are\n/// sending to the superclass instance and \\p SuperLoc must be a valid\n/// source location.\n///\n/// \\param ReceiverType The (static) type of the object receiving the\n/// message. When a \\p Receiver expression is provided, this is the\n/// same type as that expression. For a superclass instance send, this\n/// is a pointer to the type of the superclass.\n///\n/// \\param SuperLoc The location of the \"super\" keyword in a\n/// superclass instance message.\n///\n/// \\param Sel The selector to which the message is being sent.\n///\n/// \\param Method The method that this instance message is invoking, if\n/// already known.\n///\n/// \\param LBracLoc The location of the opening square bracket \']\'.\n///\n/// \\param RBracLoc The location of the closing square bracket \']\'.\n///\n/// \\param ArgsIn The message arguments.\nExprResult Sema::BuildInstanceMessage(Expr *Receiver, QualType ReceiverType, SourceLocation SuperLoc, Selector Sel, ObjCMethodDecl *Method, SourceLocation LBracLoc, ArrayRef<SourceLocation> SelectorLocs, SourceLocation RBracLoc, MultiExprArg ArgsIn, bool isImplicit) {\n if (Method && Method->isDirectMethod()) {\n if (ReceiverType->isObjCIdType() && !isImplicit) {\n Diag(Receiver->getExprLoc(), diag::err_messaging_unqualified_id_with_direct_method);"}} | |||
}, | }, | ||
[" | ["err_method_kernel"]={ | ||
[ | [j]="kernel functions cannot be class members", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="kernel functions cannot be class members", | ||
[ | [f]=n, | ||
[ | [g]="kernel functions cannot be class members", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"d6865b7d71bc",1557238954,"[OpenCL] Prevent mangling kernel functions."}, | ||
[k]={{p,9344,"NamedDecl *Sema::ActOnFunctionDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamListsRef, bool &AddToScope) {\n if (getLangOpts().OpenCL && NewFD->hasAttr<OpenCLKernelAttr>()) {\n if (getLangOpts().OpenCLCPlusPlus) {\n if (DC->isRecord()) {\n Diag(D.getIdentifierLoc(), diag::err_method_kernel);"}} | |||
}, | }, | ||
[" | ["err_method_not_found_with_typo"]={ | ||
[ | [j]="... method A not found ; did you mean B?", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%select{instance|class}1 method %0 not found ; did you mean %2?", | ||
[ | [f]=n, | ||
[ | [g]="(?:instance|class) method (.*?) not found ; did you mean (.*?)\\?", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={gb,1480718311,ib}, | ||
[k]={{O,1420,"bool Sema::CheckMessageArgumentTypes(const Expr *Receiver, QualType ReceiverType, MultiExprArg Args, Selector Sel, ArrayRef<SourceLocation> SelectorLocs, ObjCMethodDecl *Method, bool isClassMessage, bool isSuperMessage, SourceLocation lbrac, SourceLocation rbrac, SourceRange RecRange, QualType &ReturnType, ExprValueKind &VK) {\n if (!Method) {\n if (!getLangOpts().DebuggerSupport) {\n if (OMD && !OMD->isInvalidDecl()) {\n if (getLangOpts().ObjCAutoRefCount)\n DiagID = diag::err_method_not_found_with_typo;"}} | |||
}, | }, | ||
[" | ["err_mips_builtin_requires_dsp"]={ | ||
[ | [j]="this builtin requires \'dsp\' ASE, please use -mdsp", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="this builtin requires \'dsp\' ASE, please use -mdsp", | ||
[ | [f]=n, | ||
[ | [g]="this builtin requires \'dsp\' ASE, please use \\-mdsp", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={yb,1573050950,vb}, | ||
[k]={{y,3469,"bool Sema::CheckMipsBuiltinCpu(const TargetInfo &TI, unsigned BuiltinID, CallExpr *TheCall) {\n if (Mips::BI__builtin_mips_addu_qb <= BuiltinID && BuiltinID <= Mips::BI__builtin_mips_lwx) {\n if (!TI.hasFeature(\"dsp\"))\n return Diag(TheCall->getBeginLoc(), diag::err_mips_builtin_requires_dsp);"}} | |||
}, | }, | ||
[" | ["err_mips_builtin_requires_dspr2"]={ | ||
[ | [j]="this builtin requires \'dsp r2\' ASE, please use -mdspr2", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="this builtin requires \'dsp r2\' ASE, please use -mdspr2", | ||
[ | [f]=n, | ||
[ | [g]="this builtin requires \'dsp r2\' ASE, please use \\-mdspr2", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={yb,1573050950,vb}, | ||
[k]={{y,3474,"bool Sema::CheckMipsBuiltinCpu(const TargetInfo &TI, unsigned BuiltinID, CallExpr *TheCall) {\n if (Mips::BI__builtin_mips_absq_s_qb <= BuiltinID && BuiltinID <= Mips::BI__builtin_mips_subuh_r_qb) {\n if (!TI.hasFeature(\"dspr2\"))\n return Diag(TheCall->getBeginLoc(), diag::err_mips_builtin_requires_dspr2);"}} | |||
}, | }, | ||
[" | ["err_mips_builtin_requires_msa"]={ | ||
[ | [j]="this builtin requires \'msa\' ASE, please use -mmsa", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="this builtin requires \'msa\' ASE, please use -mmsa", | ||
[ | [f]=n, | ||
[ | [g]="this builtin requires \'msa\' ASE, please use \\-mmsa", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={yb,1573050950,vb}, | ||
[k]={{y,3479,"bool Sema::CheckMipsBuiltinCpu(const TargetInfo &TI, unsigned BuiltinID, CallExpr *TheCall) {\n if (Mips::BI__builtin_msa_add_a_b <= BuiltinID && BuiltinID <= Mips::BI__builtin_msa_xori_b) {\n if (!TI.hasFeature(\"msa\"))\n return Diag(TheCall->getBeginLoc(), diag::err_mips_builtin_requires_msa);"}} | |||
}, | }, | ||
[" | ["err_mips_fp64_req"]={ | ||
[ | [j]="\'A\' can only be used if the target supports the mfhc1 and mthc1 instructions", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'%0\' can only be used if the target supports the mfhc1 and mthc1 instructions", | ||
[ | [f]=n, | ||
[ | [g]="\'(.*?)\' can only be used if the target supports the mfhc1 and mthc1 instructions", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"eb63256095dd",1534929985,"[clang][mips] Set __mips_fpr correctly for -mfpxx"}, | ||
[k]={{"clang/lib/Basic/Targets/Mips.cpp",217,"bool MipsTargetInfo::validateTarget(DiagnosticsEngine &Diags) const {\n // Option -mfp64 permitted on Mips32 iff revision 2 or higher is present\n if (FPMode == FP64 && (CPU == \"mips1\" || CPU == \"mips2\" || getISARev() < 2) && ABI == \"o32\") {\n Diags.Report(diag::err_mips_fp64_req) << \"-mfp64\";"}} | |||
}, | }, | ||
[" | ["err_mismatched_code_seg_base"]={ | ||
[ | [j]="derived class must specify the same code segment as its base classes", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="derived class must specify the same code segment as its base classes", | ||
[ | [f]=n, | ||
[ | [g]="derived class must specify the same code segment as its base classes", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"64144eb194c8",1526479037,"Add support for __declspec(code_seg(\"segname\"))"}, | ||
[k]={{r,2342,"/// Check the validity of a C++ base class specifier.\n///\n/// \\returns a new CXXBaseSpecifier if well-formed, emits diagnostics\n/// and returns NULL otherwise.\nCXXBaseSpecifier *Sema::CheckBaseSpecifier(CXXRecordDecl *Class, SourceRange SpecifierRange, bool Virtual, AccessSpecifier Access, TypeSourceInfo *TInfo, SourceLocation EllipsisLoc) {\n if ((DerivedCSA || BaseCSA) && (!BaseCSA || !DerivedCSA || BaseCSA->getName() != DerivedCSA->getName())) {\n Diag(Class->getLocation(), diag::err_mismatched_code_seg_base);"}} | |||
}, | }, | ||
[" | ["err_mismatched_code_seg_override"]={ | ||
[ | [j]="overriding virtual function must specify the same code segment as its overridden function", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="overriding virtual function must specify the same code segment as its overridden function", | ||
[ | [f]=n, | ||
[ | [g]="overriding virtual function must specify the same code segment as its overridden function", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"64144eb194c8",1526479037,"Add support for __declspec(code_seg(\"segname\"))"}, | ||
[k]={{r,15378,"bool Sema::CheckOverridingFunctionAttributes(const CXXMethodDecl *New, const CXXMethodDecl *Old) {\n if ((NewCSA || OldCSA) && (!OldCSA || !NewCSA || NewCSA->getName() != OldCSA->getName())) {\n Diag(New->getLocation(), diag::err_mismatched_code_seg_override);"}} | |||
}, | }, | ||
[" | ["err_mismatched_exception_spec"]={ | ||
[ | [j]="exception specification in declaration does not match previous declaration", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="exception specification in declaration does not match previous declaration", | ||
[ | [f]=n, | ||
[ | [g]="exception specification in declaration does not match previous declaration", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"4f4d7b5d8e5f",1246707540,"Catch function redeclarations with incompatible exception specifications."}, | ||
[k]={{Hb,279,"bool Sema::CheckEquivalentExceptionSpec(FunctionDecl *Old, FunctionDecl *New) {\n unsigned DiagID = diag::err_mismatched_exception_spec;"},{Hb,452,"/// CheckEquivalentExceptionSpec - Check if the two types have equivalent\n/// exception specifications. Exception specifications are equivalent if\n/// they allow exactly the same set of exception types. It does not matter how\n/// that is achieved. See C++ [except.spec]p2.\nbool Sema::CheckEquivalentExceptionSpec(const FunctionProtoType *Old, SourceLocation OldLoc, const FunctionProtoType *New, SourceLocation NewLoc) {\n unsigned DiagID = diag::err_mismatched_exception_spec;"}} | |||
}, | }, | ||
[" | ["err_mismatched_exception_spec_explicit_instantiation"]={ | ||
[ | [j]="exception specification in explicit instantiation does not match instantiated one", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="exception specification in explicit instantiation does not match instantiated one", | ||
[ | [f]=n, | ||
[ | [g]="exception specification in explicit instantiation does not match instantiated one", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"73983918c45b",1415268650,"Fix for exception specification mismatch in explicit instantiation."}, | ||
[k]={{K,8789,"DeclResult Sema::ActOnExplicitInstantiation(Scope *S, SourceLocation ExternLoc, SourceLocation TemplateLoc, Declarator &D) {\n // C++11 [except.spec]p4\n // In an explicit instantiation an exception-specification may be specified,\n // but is not required.\n // If an exception-specification is specified in an explicit instantiation\n // directive, it shall be compatible with the exception-specifications of\n // other declarations of that function.\n if (auto *FPT = R->getAs<FunctionProtoType>())\n if (FPT->hasExceptionSpec()) {\n unsigned DiagID = diag::err_mismatched_exception_spec_explicit_instantiation;"}} | |||
}, | }, | ||
[" | ["err_mismatched_ms_inheritance"]={ | ||
[ | [j]="inheritance model does not match ...", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="inheritance model does not match %select{definition|previous declaration}0", | ||
[ | [f]=n, | ||
[ | [g]="inheritance model does not match (?:definition|previous declaration)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"2c4e00ac1cc8",1391033256,"Sema: Diagnose improper application of inheritance keywords"}, | ||
[k]={{v,4063,"bool Sema::checkMSInheritanceAttrOnDefinition(CXXRecordDecl *RD, SourceRange Range, bool BestCase, MSInheritanceModel ExplicitModel) {\n Diag(Range.getBegin(), diag::err_mismatched_ms_inheritance) << 0 /*definition*/;"},{v,7114,"MSInheritanceAttr *Sema::mergeMSInheritanceAttr(Decl *D, const AttributeCommonInfo &CI, bool BestCase, MSInheritanceModel Model) {\n if (MSInheritanceAttr *IA = D->getAttr<MSInheritanceAttr>()) {\n Diag(IA->getLocation(), diag::err_mismatched_ms_inheritance) << 1 /*previous declaration*/;"}} | |||
}, | }, | ||
[" | ["err_mismatched_owning_module"]={ | ||
[ | [j]="declaration of A in ... follows declaration in ...", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="declaration of %0 in %select{the global module|module %2}1 follows declaration in %select{the global module|module %4}3", | ||
[ | [f]=n, | ||
[ | [g]="declaration of (.*?) in (?:the global module|module (.*?)) follows declaration in (?:the global module|module (.*?))", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"b87720b77aee",1507592529,"[Modules TS] Module ownership semantics for redeclarations."}, | ||
[k]={{p,1503,"/// We\'ve determined that \\p New is a redeclaration of \\p Old. Check that they\n/// have compatible owning modules.\nbool Sema::CheckRedeclarationModuleOwnership(NamedDecl *New, NamedDecl *Old) {\n if (NewIsModuleInterface || OldIsModuleInterface) {\n Diag(New->getLocation(), diag::err_mismatched_owning_module) << New << NewIsModuleInterface << (NewIsModuleInterface ? NewM->getFullModuleName() : \"\") << OldIsModuleInterface << (OldIsModuleInterface ? OldM->getFullModuleName() : \"\");"}} | |||
}, | }, | ||
[" | ["err_mismatched_uuid"]={ | ||
[ | [j]="uuid does not match previous declaration", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="uuid does not match previous declaration", | ||
[ | [f]=n, | ||
[ | [g]="uuid does not match previous declaration", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"88f5ed9430a9",1473792926,"[clang-cl] Diagnose duplicate uuids."}, | ||
[k]={{v,6150,"UuidAttr *Sema::mergeUuidAttr(Decl *D, const AttributeCommonInfo &CI, StringRef UuidAsWritten, MSGuidDecl *GuidDecl) {\n if (const auto *UA = D->getAttr<UuidAttr>()) {\n if (!UA->getGuid().empty()) {\n Diag(UA->getLocation(), diag::err_mismatched_uuid);"}} | |||
}, | }, | ||
[" | ["err_mismatched_visibility"]={ | ||
[ | [j]="visibility does not match previous declaration", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="visibility does not match previous declaration", | ||
[ | [f]=n, | ||
[ | [g]="visibility does not match previous declaration", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"0232c19a3128",1336436919,"Add missing \'y\'."}, | ||
[k]={{v,2522,"template <class T> static T *mergeVisibilityAttr(Sema &S, Decl *D, const AttributeCommonInfo &CI, typename T::VisibilityType value) {\n if (existingAttr) {\n S.Diag(existingAttr->getLocation(), diag::err_mismatched_visibility);"}} | |||
}, | }, | ||
[" | ["err_misplaced_ellipsis_in_declaration"]={ | ||
[ | [j]="\'...\' must ...", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'...\' must %select{immediately precede declared identifier|be innermost component of anonymous pack declaration}0", | ||
[ | [f]=n, | ||
[ | [g]="\'\\.\\.\\.\' must (?:immediately precede declared identifier|be innermost component of anonymous pack declaration)", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={"0efa75c3e38d",1332983802,"Reject \'template<typename...Ts> void f(Ts ...(x));\'. Add a special-case"}, | ||
[k]={{"clang/lib/Parse/ParseTemplate.cpp",941,"void Parser::DiagnoseMisplacedEllipsis(SourceLocation EllipsisLoc, SourceLocation CorrectLoc, bool AlreadyHasEllipsis, bool IdentifierHasName) {\n Diag(EllipsisLoc, diag::err_misplaced_ellipsis_in_declaration) << FixItHint::CreateRemoval(EllipsisLoc) << Insertion << !IdentifierHasName;"}} | |||
}, | }, | ||
[" | ["err_misplaced_ivar"]={ | ||
[ | [j]="instance variables may not be placed in ...", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="instance variables may not be placed in %select{categories|class extension}0", | ||
[ | [f]=n, | ||
[ | [g]="instance variables may not be placed in (?:categories|class extension)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"4c172c63e510",1266879860,"Early support for declaring ivars in class extensions. wip."}, | ||
[k]={{p,16120,"/// ActOnIvar - Each ivar field of an objective-c class is passed into this\n/// in order to create an IvarDecl object for it.\nDecl *Sema::ActOnIvar(Scope *S, SourceLocation DeclStart, Declarator &D, Expr *BitfieldWidth, tok::ObjCKeywordKind Visibility) {\n if (ObjCImplementationDecl *IMPDecl = dyn_cast<ObjCImplementationDecl>(EnclosingDecl)) {\n } else {\n if (ObjCCategoryDecl *CDecl = dyn_cast<ObjCCategoryDecl>(EnclosingDecl)) {\n if (LangOpts.ObjCRuntime.isFragile() || !CDecl->IsClassExtension()) {\n Diag(Loc, diag::err_misplaced_ivar) << CDecl->IsClassExtension();"}} | |||
}, | }, | ||
[" | ["err_missing_actual_pipe_type"]={ | ||
[ | [j]="missing actual type specifier for pipe", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="missing actual type specifier for pipe", | ||
[ | [f]=n, | ||
[ | [g]="missing actual type specifier for pipe", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"9c14e282112c",1452343997,"[OpenCL] Pipe type support"}, | ||
[k]={{F,1208,"/// Convert the specified declspec to the appropriate type\n/// object.\n/// \\param state Specifies the declarator containing the declaration specifier\n/// to be converted, along with other associated processing state.\n/// \\returns The type described by the declaration specifiers. This function\n/// never returns null.\nstatic QualType ConvertDeclSpecToType(TypeProcessingState &state) {\n case DeclSpec::TST_unspecified:\n // Unspecified typespec defaults to int in C90. However, the C90 grammar\n // [C90 6.5] only allows a decl-spec if there was *some* type-specifier,\n // type-qualifier, or storage-class-specifier. If not, emit an extwarn.\n // Note that the one exception to this is function definitions, which are\n // allowed to be completely missing a declspec. This is handled in the\n // parser already though by it pretending to have seen an \'int\' in this\n // case.\n if (S.getLangOpts().isImplicitIntRequired()) {\n } else if (!DS.hasTypeSpecifier()) {\n // C99 and C++ require a type specifier. For example, C99 6.7.2p2 says:\n // \"At least one type specifier shall be given in the declaration\n // specifiers in each declaration, and in the specifier-qualifier list in\n // each struct declaration and type name.\"\n if (!S.getLangOpts().isImplicitIntAllowed() && !DS.isTypeSpecPipe()) {\n } else if (S.getLangOpts().getOpenCLCompatibleVersion() >= 200 && DS.isTypeSpecPipe()) {\n S.Diag(DeclLoc, diag::err_missing_actual_pipe_type) << DS.getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_missing_atsign_prefix"]={ | ||
[ | [j]="... literal must be prefixed by \'@\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%select{string|numeric}0 literal must be prefixed by \'@\'", | ||
[ | [f]=n, | ||
[ | [g]="(?:string|numeric) literal must be prefixed by \'@\'", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"bd714e9bb120",1387308823,"Objective-C. Make diagnostics and fix-its consistent "}, | ||
[k]={{q,15146,"bool Sema::CheckConversionToObjCLiteral(QualType DstType, Expr *&Exp, bool Diagnose) {\n if (auto *SL = dyn_cast<StringLiteral>(SrcExpr)) {\n if (Diagnose) {\n Diag(SL->getBeginLoc(), diag::err_missing_atsign_prefix) << /*string*/ 0 << FixItHint::CreateInsertion(SL->getBeginLoc(), \"@\");"},{q,15156,"bool Sema::CheckConversionToObjCLiteral(QualType DstType, Expr *&Exp, bool Diagnose) {\n if ((isa<IntegerLiteral>(SrcExpr) || isa<CharacterLiteral>(SrcExpr) || isa<FloatingLiteral>(SrcExpr) || isa<ObjCBoolLiteralExpr>(SrcExpr) || isa<CXXBoolLiteralExpr>(SrcExpr)) && !SrcExpr->isNullPointerConstant(getASTContext(), Expr::NPC_NeverValueDependent)) {\n if (Diagnose) {\n Diag(SrcExpr->getBeginLoc(), diag::err_missing_atsign_prefix) << /*number*/ 1 << FixItHint::CreateInsertion(SrcExpr->getBeginLoc(), \"@\");"}} | |||
}, | }, | ||
[" | ["err_missing_before_module_end"]={ | ||
[ | [j]="expected A at end of module", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="expected %0 at end of module", | ||
[ | [f]=n, | ||
[ | [g]="expected (.*?) at end of module", | ||
[ | [h]=a, | ||
[ | [i]=D, | ||
[ | [b]={"c4e04a296403",1442640777,"[Modules] More descriptive diagnostics for misplaced import directive"}, | ||
[k]={{Q,2453,"bool BalancedDelimiterTracker::diagnoseMissingClose() {\n if (P.Tok.is(tok::annot_module_end))\n P.Diag(P.Tok, diag::err_missing_before_module_end) << Close;"}} | |||
}, | }, | ||
[" | ["err_missing_catch_finally"]={ | ||
[ | [j]="@try statement without a @catch and @finally clause", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="@try statement without a @catch and @finally clause", | ||
[ | [f]=n, | ||
[ | [g]="@try statement without a @catch and @finally clause", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={z,1236199783,A}, | ||
[k]={{"clang/lib/Parse/ParseObjc.cpp",2388,"/// objc-try-catch-statement:\n/// @try compound-statement objc-catch-list[opt]\n/// @try compound-statement objc-catch-list[opt] @finally compound-statement\n///\n/// objc-catch-list:\n/// @catch ( parameter-declaration ) compound-statement\n/// objc-catch-list @catch ( catch-parameter-declaration ) compound-statement\n/// catch-parameter-declaration:\n/// parameter-declaration\n/// \'...\' [OBJC2]\n///\nStmtResult Parser::ParseObjCTryStmt(SourceLocation atLoc) {\n if (!catch_or_finally_seen) {\n Diag(atLoc, diag::err_missing_catch_finally);"}} | |||
}, | }, | ||
[" | ["err_missing_comma_before_ellipsis"]={ | ||
[ | [j]="C requires a comma prior to the ellipsis in a variadic function type", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="C requires a comma prior to the ellipsis in a variadic function type", | ||
[ | [f]=n, | ||
[ | [g]="C requires a comma prior to the ellipsis in a variadic function type", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={"9bfc2e50a786",1253655700,"In C++, a variadic function does not need an ellipsis prior to the comma. Parse it in both C and C++..."}, | ||
[k]={{C,6766,"/// ParseParameterDeclarationClause - Parse a (possibly empty) parameter-list\n/// after the opening parenthesis. This function will not parse a K&R-style\n/// identifier list.\n///\n/// DeclContext is the context of the declarator being parsed. If FirstArgAttrs\n/// is non-null, then the caller parsed those attributes immediately after the\n/// open paren - they will be applied to the DeclSpec of the first parameter.\n///\n/// After returning, ParamInfo will hold the parsed parameters. EllipsisLoc will\n/// be the location of the ellipsis, if any was parsed.\n///\n/// parameter-type-list: [C99 6.7.5]\n/// parameter-list\n/// parameter-list \',\' \'...\'\n/// [C++] parameter-list \'...\'\n///\n/// parameter-list: [C99 6.7.5]\n/// parameter-declaration\n/// parameter-list \',\' parameter-declaration\n///\n/// parameter-declaration: [C99 6.7.5]\n/// declaration-specifiers declarator\n/// [C++] declaration-specifiers declarator \'=\' assignment-expression\n/// [C++11] initializer-clause\n/// [GNU] declaration-specifiers declarator attributes\n/// declaration-specifiers abstract-declarator[opt]\n/// [C++] declaration-specifiers abstract-declarator[opt]\n/// \'=\' assignment-expression\n/// [GNU] declaration-specifiers abstract-declarator[opt] attributes\n/// [C++11] attribute-specifier-seq parameter-declaration\n///\nvoid Parser::ParseParameterDeclarationClause(DeclaratorContext DeclaratorCtx, ParsedAttributes &FirstArgAttrs, SmallVectorImpl<DeclaratorChunk::ParamInfo> &ParamInfo, SourceLocation &EllipsisLoc, bool IsACXXFunctionDeclaration) {\n do {\n if (TryConsumeToken(tok::ellipsis, EllipsisLoc)) {\n if (!getLangOpts().CPlusPlus) {\n Diag(EllipsisLoc, diag::err_missing_comma_before_ellipsis) << FixItHint::CreateInsertion(EllipsisLoc, \", \");"}} | |||
}, | }, | ||
[" | ["err_missing_default_ctor"]={ | ||
[ | [j]="... ... A ... does not have a default constructor", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%select{constructor for %1 must explicitly initialize the|implicit default constructor for %1 must explicitly initialize the|cannot use constructor inherited from base class %4;}0 %select{base class|member}2 %3 %select{which|which|of %1}0 does not have a default constructor", | ||
[ | [f]=n, | ||
[ | [g]="(?:constructor for (.*?) must explicitly initialize the|implicit default constructor for (.*?) must explicitly initialize the|cannot use constructor inherited from base class (.*?);) (?:base class|member) (.*?) (?:which|which|of (.*?)) does not have a default constructor", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"d7686ef31c21",1257728747,"Unify the codepaths used to verify base and member initializers for explicitly"}, | ||
[k]={{L,8335,"bool InitializationSequence::Diagnose(Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, ArrayRef<Expr *> Args) {\n case FK_ConstructorOverloadFailed: {\n case OR_No_Viable_Function:\n if (Kind.getKind() == InitializationKind::IK_Default && (Entity.getKind() == InitializedEntity::EK_Base || Entity.getKind() == InitializedEntity::EK_Member || Entity.getKind() == InitializedEntity::EK_ParenAggInitMember) && isa<CXXConstructorDecl>(S.CurContext)) {\n if (Entity.getKind() == InitializedEntity::EK_Base) {\n S.Diag(Kind.getLocation(), diag::err_missing_default_ctor) << (InheritedFrom ? 2 : Constructor->isImplicit() ? 1 : 0) << S.Context.getTypeDeclType(Constructor->getParent()) << /*base=*/0 << Entity.getType() << InheritedFrom;"},{L,8340,"bool InitializationSequence::Diagnose(Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, ArrayRef<Expr *> Args) {\n case FK_ConstructorOverloadFailed: {\n case OR_No_Viable_Function:\n if (Kind.getKind() == InitializationKind::IK_Default && (Entity.getKind() == InitializedEntity::EK_Base || Entity.getKind() == InitializedEntity::EK_Member || Entity.getKind() == InitializedEntity::EK_ParenAggInitMember) && isa<CXXConstructorDecl>(S.CurContext)) {\n if (Entity.getKind() == InitializedEntity::EK_Base) {\n } else {\n S.Diag(Kind.getLocation(), diag::err_missing_default_ctor) << (InheritedFrom ? 2 : Constructor->isImplicit() ? 1 : 0) << S.Context.getTypeDeclType(Constructor->getParent()) << /*member=*/1 << Entity.getName() << InheritedFrom;"}} | |||
}, | }, | ||
[" | ["err_missing_dependent_template_keyword"]={ | ||
[ | [j]="use \'template\' keyword to treat \'A\' as a dependent template name", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="use \'template\' keyword to treat \'%0\' as a dependent template name", | ||
[ | [f]=n, | ||
[ | [g]="use \'template\' keyword to treat \'(.*?)\' as a dependent template name", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={"786123dc48d8",1274483887,"Improve parser recovery when we encounter a dependent template name"}, | ||
[k]={{V,475,"/// Parse global scope or nested-name-specifier if present.\n///\n/// Parses a C++ global scope specifier (\'::\') or nested-name-specifier (which\n/// may be preceded by \'::\'). Note that this routine will not parse ::new or\n/// ::delete; it will just leave them in the token stream.\n///\n/// \'::\'[opt] nested-name-specifier\n/// \'::\'\n///\n/// nested-name-specifier:\n/// type-name \'::\'\n/// namespace-name \'::\'\n/// nested-name-specifier identifier \'::\'\n/// nested-name-specifier \'template\'[opt] simple-template-id \'::\'\n///\n///\n/// \\param SS the scope specifier that will be set to the parsed\n/// nested-name-specifier (or empty)\n///\n/// \\param ObjectType if this nested-name-specifier is being parsed following\n/// the \".\" or \"->\" of a member access expression, this parameter provides the\n/// type of the object whose members are being accessed.\n///\n/// \\param ObjectHadErrors if this unqualified-id occurs within a member access\n/// expression, indicates whether the original subexpressions had any errors.\n/// When true, diagnostics for missing \'template\' keyword will be supressed.\n///\n/// \\param EnteringContext whether we will be entering into the context of\n/// the nested-name-specifier after parsing it.\n///\n/// \\param MayBePseudoDestructor When non-NULL, points to a flag that\n/// indicates whether this nested-name-specifier may be part of a\n/// pseudo-destructor name. In this case, the flag will be set false\n/// if we don\'t actually end up parsing a destructor name. Moreover,\n/// if we do end up determining that we are parsing a destructor name,\n/// the last component of the nested-name-specifier is not parsed as\n/// part of the scope specifier.\n///\n/// \\param IsTypename If \\c true, this nested-name-specifier is known to be\n/// part of a type name. This is used to improve error recovery.\n///\n/// \\param LastII When non-NULL, points to an IdentifierInfo* that will be\n/// filled in with the leading identifier in the last component of the\n/// nested-name-specifier, if any.\n///\n/// \\param OnlyNamespace If true, only considers namespaces in lookup.\n///\n///\n/// \\returns true if there was an error parsing a scope specifier\nbool Parser::ParseOptionalCXXScopeSpecifier(CXXScopeSpec &SS, ParsedType ObjectType, bool ObjectHadErrors, bool EnteringContext, bool *MayBePseudoDestructor, bool IsTypename, IdentifierInfo **LastII, bool OnlyNamespace, bool InUsingDeclaration) {\n while (true) {\n // nested-name-specifier:\n // type-name \'<\'\n if (Next.is(tok::less)) {\n if (MemberOfUnknownSpecialization && (ObjectType || SS.isSet()) && (IsTypename || isTemplateArgumentList(1) == TPResult::True)) {\n // If we had errors before, ObjectType can be dependent even without any\n // templates. Do not report missing template keyword in that case.\n if (!ObjectHadErrors) {\n unsigned DiagID = diag::err_missing_dependent_template_keyword;"},{V,2256,"/// Finish parsing a C++ unqualified-id that is a template-id of\n/// some form.\n///\n/// This routine is invoked when a \'<\' is encountered after an identifier or\n/// operator-function-id is parsed by \\c ParseUnqualifiedId() to determine\n/// whether the unqualified-id is actually a template-id. This routine will\n/// then parse the template arguments and form the appropriate template-id to\n/// return to the caller.\n///\n/// \\param SS the nested-name-specifier that precedes this template-id, if\n/// we\'re actually parsing a qualified-id.\n///\n/// \\param ObjectType if this unqualified-id occurs within a member access\n/// expression, the type of the base object whose member is being accessed.\n///\n/// \\param ObjectHadErrors this unqualified-id occurs within a member access\n/// expression, indicates whether the original subexpressions had any errors.\n///\n/// \\param Name for constructor and destructor names, this is the actual\n/// identifier that may be a template-name.\n///\n/// \\param NameLoc the location of the class-name in a constructor or\n/// destructor.\n///\n/// \\param EnteringContext whether we\'re entering the scope of the\n/// nested-name-specifier.\n///\n/// \\param Id as input, describes the template-name or operator-function-id\n/// that precedes the \'<\'. If template arguments were parsed successfully,\n/// will be updated with the template-id.\n///\n/// \\param AssumeTemplateId When true, this routine will assume that the name\n/// refers to a template without performing name lookup to verify.\n///\n/// \\returns true if a parse error occurred, false otherwise.\nbool Parser::ParseUnqualifiedIdTemplateId(CXXScopeSpec &SS, ParsedType ObjectType, bool ObjectHadErrors, SourceLocation TemplateKWLoc, IdentifierInfo *Name, SourceLocation NameLoc, bool EnteringContext, UnqualifiedId &Id, bool AssumeTemplateId) {\n case UnqualifiedIdKind::IK_LiteralOperatorId:\n if (AssumeTemplateId) {\n } else {\n if (TNK == TNK_Non_template && MemberOfUnknownSpecialization && ObjectType && isTemplateArgumentList(0) == TPResult::True) {\n // If we had errors before, ObjectType can be dependent even without any\n // templates, do not report missing template keyword in that case.\n if (!ObjectHadErrors) {\n Diag(Id.StartLocation, diag::err_missing_dependent_template_keyword) << Name << FixItHint::CreateInsertion(Id.StartLocation, \"template \");"}} | |||
}, | }, | ||
[" | ["err_missing_end_of_definition"]={ | ||
[ | [j]="missing \'}\' at end of definition of A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="missing \'}\' at end of definition of %q0", | ||
[ | [f]=n, | ||
[ | [g]="missing \'\\}\' at end of definition of (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={"da35e963bc57",1383972771,"Try to recover a bit better if a close brace is missing from the end of a class"}, | ||
[k]={{R,3194,"void Parser::DiagnoseUnexpectedNamespace(NamedDecl *D) {\n Diag(D->getLocation(), diag::err_missing_end_of_definition) << D;"}} | |||
}, | }, | ||
[" | ["err_missing_exception_specification"]={ | ||
[ | [j]="A is missing exception specification \'B\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%0 is missing exception specification \'%1\'", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) is missing exception specification \'(.*?)\'", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"a91de375f278",1443574130,"Promote a warning on ill-formed code (redeclaration missing an exception"}, | ||
[k]={{Hb,372,"bool Sema::CheckEquivalentExceptionSpec(FunctionDecl *Old, FunctionDecl *New) {\n if (getLangOpts().MSVCCompat && isDynamicExceptionSpec(ESI.Type)) {\n } else if (New->isReplaceableGlobalAllocationFunction() && ESI.Type != EST_DependentNoexcept) {\n } else if (ESI.Type == EST_NoThrow) {\n } else {\n DiagID = diag::err_missing_exception_specification;"}} | |||
}, | }, | ||
[" | ["err_missing_method_context"]={ | ||
[ | [j]="missing context for method declaration", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="missing context for method declaration", | ||
[ | [f]=n, | ||
[ | [g]="missing context for method declaration", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={gb,1480718311,ib}, | ||
[k]={{hb,3917,"Decl *Sema::ActOnMethodDeclaration(Scope *S, SourceLocation MethodLoc, SourceLocation EndLoc, tok::TokenKind MethodType, ObjCDeclSpec &ReturnQT, ParsedType ReturnType, ArrayRef<SourceLocation> SelectorLocs, Selector Sel,\n // Make sure we can establish a context for the method.\n if (!CurContext->isObjCContainer()) {\n Diag(MethodLoc, diag::err_missing_method_context);"}} | |||
}, | }, | ||
[" | ["err_missing_module"]={ | ||
[ | [j]="no module named \'A\' declared in module map file \'B\'", | ||
[ | [c]=I, | ||
[ | [d]=H, | ||
[ | [e]="no module named \'%0\' declared in module map file \'%1\'", | ||
[ | [f]=J, | ||
[ | [g]="no module named \'(.*?)\' declared in module map file \'(.*?)\'", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"2b20cb87f5b6",1321402146,"Add support for building a module from a module map to the -cc1"}, | ||
[k]={{qb,443,"static Module *prepareToBuildModule(CompilerInstance &CI, StringRef ModuleMapFilename) {\n if (!M) {\n CI.getDiagnostics().Report(diag::err_missing_module) << CI.getLangOpts().CurrentModule << ModuleMapFilename;"}} | |||
}, | }, | ||
[" | ["err_missing_module_name"]={ | ||
[ | [j]="no module name provided; specify one with -fmodule-name=", | ||
[ | [c]=I, | ||
[ | [d]=H, | ||
[ | [e]="no module name provided; specify one with -fmodule-name=", | ||
[ | [f]=J, | ||
[ | [g]="no module name provided; specify one with \\-fmodule\\-name\\=", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"2b20cb87f5b6",1321402146,"Add support for building a module from a module map to the -cc1"}, | ||
[k]={{qb,429,"static Module *prepareToBuildModule(CompilerInstance &CI, StringRef ModuleMapFilename) {\n if (CI.getLangOpts().CurrentModule.empty()) {\n CI.getDiagnostics().Report(diag::err_missing_module_name);"}} | |||
}, | }, | ||
[" | ["err_missing_open_square_message_send"]={ | ||
[ | [j]="missing \'[\' at start of message send expression", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="missing \'[\' at start of message send expression", | ||
[ | [f]=n, | ||
[ | [g]="missing \'\\[\' at start of message send expression", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"e9bba4f1a441",1284562265,"Implement bracket insertion for Objective-C instance message sends as"}, | ||
[k]={{O,2105,"/// \\param ReceiverType The type of the object receiving the\n/// message. When \\p ReceiverTypeInfo is non-NULL, this is the same\n/// type as that refers to. For a superclass send, this is the type of\n/// the superclass.\n///\n/// \\param SuperLoc The location of the \"super\" keyword in a\n/// superclass message.\n///\n/// \\param Sel The selector to which the message is being sent.\n///\n/// \\param Method The method that this class message is invoking, if\n/// already known.\n///\n/// \\param LBracLoc The location of the opening square bracket \']\'.\n///\n/// \\param RBracLoc The location of the closing square bracket \']\'.\n///\n/// \\param ArgsIn The message arguments.\nExprResult Sema::BuildClassMessage(TypeSourceInfo *ReceiverTypeInfo, QualType ReceiverType, SourceLocation SuperLoc, Selector Sel, ObjCMethodDecl *Method, SourceLocation LBracLoc, ArrayRef<SourceLocation> SelectorLocs, SourceLocation RBracLoc, MultiExprArg ArgsIn, bool isImplicit) {\n if (LBracLoc.isInvalid()) {\n Diag(Loc, diag::err_missing_open_square_message_send) << FixItHint::CreateInsertion(Loc, \"[\");"},{O,2290,"/// Build an Objective-C instance message expression.\n///\n/// This routine takes care of both normal instance messages and\n/// instance messages to the superclass instance.\n///\n/// \\param Receiver The expression that computes the object that will\n/// receive this message. This may be empty, in which case we are\n/// sending to the superclass instance and \\p SuperLoc must be a valid\n/// source location.\n///\n/// \\param ReceiverType The (static) type of the object receiving the\n/// message. When a \\p Receiver expression is provided, this is the\n/// same type as that expression. For a superclass instance send, this\n/// is a pointer to the type of the superclass.\n///\n/// \\param SuperLoc The location of the \"super\" keyword in a\n/// superclass instance message.\n///\n/// \\param Sel The selector to which the message is being sent.\n///\n/// \\param Method The method that this instance message is invoking, if\n/// already known.\n///\n/// \\param LBracLoc The location of the opening square bracket \']\'.\n///\n/// \\param RBracLoc The location of the closing square bracket \']\'.\n///\n/// \\param ArgsIn The message arguments.\nExprResult Sema::BuildInstanceMessage(Expr *Receiver, QualType ReceiverType, SourceLocation SuperLoc, Selector Sel, ObjCMethodDecl *Method, SourceLocation LBracLoc, ArrayRef<SourceLocation> SelectorLocs, SourceLocation RBracLoc, MultiExprArg ArgsIn, bool isImplicit) {\n if (LBracLoc.isInvalid()) {\n Diag(Loc, diag::err_missing_open_square_message_send) << FixItHint::CreateInsertion(Loc, \"[\");"}} | |||
}, | }, | ||
[" | ["err_missing_param"]={ | ||
[ | [j]="expected parameter declarator", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="expected parameter declarator", | ||
[ | [f]=n, | ||
[ | [g]="expected parameter declarator", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={z,1236199783,A}, | ||
[k]={{C,6674,"/// ParseParameterDeclarationClause - Parse a (possibly empty) parameter-list\n/// after the opening parenthesis. This function will not parse a K&R-style\n/// identifier list.\n///\n/// DeclContext is the context of the declarator being parsed. If FirstArgAttrs\n/// is non-null, then the caller parsed those attributes immediately after the\n/// open paren - they will be applied to the DeclSpec of the first parameter.\n///\n/// After returning, ParamInfo will hold the parsed parameters. EllipsisLoc will\n/// be the location of the ellipsis, if any was parsed.\n///\n/// parameter-type-list: [C99 6.7.5]\n/// parameter-list\n/// parameter-list \',\' \'...\'\n/// [C++] parameter-list \'...\'\n///\n/// parameter-list: [C99 6.7.5]\n/// parameter-declaration\n/// parameter-list \',\' parameter-declaration\n///\n/// parameter-declaration: [C99 6.7.5]\n/// declaration-specifiers declarator\n/// [C++] declaration-specifiers declarator \'=\' assignment-expression\n/// [C++11] initializer-clause\n/// [GNU] declaration-specifiers declarator attributes\n/// declaration-specifiers abstract-declarator[opt]\n/// [C++] declaration-specifiers abstract-declarator[opt]\n/// \'=\' assignment-expression\n/// [GNU] declaration-specifiers abstract-declarator[opt] attributes\n/// [C++11] attribute-specifier-seq parameter-declaration\n///\nvoid Parser::ParseParameterDeclarationClause(DeclaratorContext DeclaratorCtx, ParsedAttributes &FirstArgAttrs, SmallVectorImpl<DeclaratorChunk::ParamInfo> &ParamInfo, SourceLocation &EllipsisLoc, bool IsACXXFunctionDeclaration) {\n do {\n // If no parameter was specified, verify that *something* was specified,\n // otherwise we have a missing type and identifier.\n if (DS.isEmpty() && ParmDeclarator.getIdentifier() == nullptr && ParmDeclarator.getNumTypeObjects() == 0) {\n Diag(DSStart, diag::err_missing_param);"}} | |||
}, | }, | ||
[" | ["err_missing_property_context"]={ | ||
[ | [j]="missing context for property implementation declaration", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="missing context for property implementation declaration", | ||
[ | [f]=n, | ||
[ | [g]="missing context for property implementation declaration", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={gb,1480718311,ib}, | ||
[k]={{Gb,891,"/// ActOnPropertyImplDecl - This routine performs semantic checks and\n/// builds the AST node for a property implementation declaration; declared\n/// as \\@synthesize or \\@dynamic.\n///\nDecl *Sema::ActOnPropertyImplDecl(Scope *S, SourceLocation AtLoc, SourceLocation PropertyLoc, bool Synthesize, IdentifierInfo *PropertyId, IdentifierInfo *PropertyIvar, SourceLocation PropertyIvarLoc, ObjCPropertyQueryKind QueryKind) {\n // Make sure we have a context for the property implementation declaration.\n if (!ClassImpDecl) {\n Diag(AtLoc, diag::err_missing_property_context);"}} | |||
}, | }, | ||
[" | ["err_missing_property_interface"]={ | ||
[ | [j]="property implementation in a category with no category declaration", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="property implementation in a category with no category declaration", | ||
[ | [f]=n, | ||
[ | [g]="property implementation in a category with no category declaration", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={gb,1480718311,ib}, | ||
[k]={{Gb,972,"/// ActOnPropertyImplDecl - This routine performs semantic checks and\n/// builds the AST node for a property implementation declaration; declared\n/// as \\@synthesize or \\@dynamic.\n///\nDecl *Sema::ActOnPropertyImplDecl(Scope *S, SourceLocation AtLoc, SourceLocation PropertyLoc, bool Synthesize, IdentifierInfo *PropertyId, IdentifierInfo *PropertyIvar, SourceLocation PropertyIvarLoc, ObjCPropertyQueryKind QueryKind) {\n if ((IC = dyn_cast<ObjCImplementationDecl>(ClassImpDecl))) {\n } else if ((CatImplClass = dyn_cast<ObjCCategoryImplDecl>(ClassImpDecl))) {\n if (!IDecl) {\n Diag(AtLoc, diag::err_missing_property_interface);"}} | |||
}, | }, | ||
[" | ["err_missing_property_ivar_decl"]={ | ||
[ | [j]="synthesized property A must either be named the same as a compatible instance variable or must explicitly name an instance variable", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="synthesized property %0 must either be named the same as a compatible instance variable or must explicitly name an instance variable", | ||
[ | [f]=n, | ||
[ | [g]="synthesized property (.*?) must either be named the same as a compatible instance variable or must explicitly name an instance variable", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={gb,1480718311,ib}, | ||
[k]={{Gb,1104,"/// ActOnPropertyImplDecl - This routine performs semantic checks and\n/// builds the AST node for a property implementation declaration; declared\n/// as \\@synthesize or \\@dynamic.\n///\nDecl *Sema::ActOnPropertyImplDecl(Scope *S, SourceLocation AtLoc, SourceLocation PropertyLoc, bool Synthesize, IdentifierInfo *PropertyId, IdentifierInfo *PropertyIvar, SourceLocation PropertyIvarLoc, ObjCPropertyQueryKind QueryKind) {\n // Check that we have a valid, previously declared ivar for @synthesize\n if (Synthesize) {\n if (!Ivar) {\n if (getLangOpts().ObjCRuntime.isFragile())\n Diag(PropertyDiagLoc, diag::err_missing_property_ivar_decl) << PropertyId;"}} | |||
}, | }, | ||
[" | ["err_missing_type_specifier"]={ | ||
[ | [j]="a type specifier is required for all declarations", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="a type specifier is required for all declarations", | ||
[ | [f]=n, | ||
[ | [g]="a type specifier is required for all declarations", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{F,1201,"/// Convert the specified declspec to the appropriate type\n/// object.\n/// \\param state Specifies the declarator containing the declaration specifier\n/// to be converted, along with other associated processing state.\n/// \\returns The type described by the declaration specifiers. This function\n/// never returns null.\nstatic QualType ConvertDeclSpecToType(TypeProcessingState &state) {\n case DeclSpec::TST_unspecified:\n // Unspecified typespec defaults to int in C90. However, the C90 grammar\n // [C90 6.5] only allows a decl-spec if there was *some* type-specifier,\n // type-qualifier, or storage-class-specifier. If not, emit an extwarn.\n // Note that the one exception to this is function definitions, which are\n // allowed to be completely missing a declspec. This is handled in the\n // parser already though by it pretending to have seen an \'int\' in this\n // case.\n if (S.getLangOpts().isImplicitIntRequired()) {\n } else if (!DS.hasTypeSpecifier()) {\n // C99 and C++ require a type specifier. For example, C99 6.7.2p2 says:\n // \"At least one type specifier shall be given in the declaration\n // specifiers in each declaration, and in the specifier-qualifier list in\n // each struct declaration and type name.\"\n if (!S.getLangOpts().isImplicitIntAllowed() && !DS.isTypeSpecPipe()) {\n S.Diag(DeclLoc, diag::err_missing_type_specifier) << DS.getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_missing_vfs_overlay_file"]={ | ||
[ | [j]="virtual filesystem overlay file \'A\' not found", | ||
[ | [c]=I, | ||
[ | [d]=H, | ||
[ | [e]="virtual filesystem overlay file \'%0\' not found", | ||
[ | [f]=J, | ||
[ | [g]="virtual filesystem overlay file \'(.*?)\' not found", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"801272a98c71",1393352627,"Add a driver option -ivfsoverlay"}, | ||
[k]={{Bb,3933,"IntrusiveRefCntPtr<llvm::vfs::FileSystem> clang::createVFSFromOverlayFiles(ArrayRef<std::string> VFSOverlayFiles, DiagnosticsEngine &Diags, IntrusiveRefCntPtr<llvm::vfs::FileSystem> BaseFS) {\n // earlier vfs files are on the bottom\n for (const auto &File : VFSOverlayFiles) {\n if (!Buffer) {\n Diags.Report(diag::err_missing_vfs_overlay_file) << File;"}} | |||
}, | }, | ||
[" | ["err_missing_whitespace_digraph"]={ | ||
[ | [j]="found \'<::\' after a ... which forms the digraph \'<:\' (aka \'[\') and a \':\', did you mean \'< ::\'?", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="found \'<::\' after a %select{template name|addrspace_cast|const_cast|dynamic_cast|reinterpret_cast|static_cast}0 which forms the digraph \'<:\' (aka \'[\') and a \':\', did you mean \'< ::\'?", | ||
[ | [f]=n, | ||
[ | [g]="found \'\\<\\:\\:\' after a (?:template name|addrspace_cast|const_cast|dynamic_cast|reinterpret_cast|static_cast) which forms the digraph \'\\<\\:\' \\(aka \'\\[\'\\) and a \'\\:\', did you mean \'\\< \\:\\:\'\\?", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={"55858499e21e",1302817545,"Detect when the string \"<::\" is found in code after a cast or template name and is interpreted as \"[..."}, | ||
[k]={{V,71,"// Suggest fixit for \"<::\" after a cast.\nstatic void FixDigraph(Parser &P, Preprocessor &PP, Token &DigraphToken, Token &ColonToken, tok::TokenKind Kind, bool AtDigraph) {\n P.Diag(DigraphToken.getLocation(), diag::err_missing_whitespace_digraph) << SelectDigraphErrorMessage(Kind) << FixItHint::CreateReplacement(Range, \"< ::\");"}} | |||
}, | }, | ||
[" | ["err_mixing_cxx_try_seh_try"]={ | ||
[ | [j]="cannot use ... in the same function as SEH \'__try\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot use %select{C++ \'try\'|Objective-C \'@try\'}0 in the same function as SEH \'__try\'", | ||
[ | [f]=n, | ||
[ | [g]="cannot use (?:C\\+\\+ \'try\'|Objective\\-C \'@try\') in the same function as SEH \'__try\'", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"e71759103e72",1422915331,"SEH: Diagnose use of C++ EH and SEH in the same function"}, | ||
[k]={{E,3654,"StmtResult Sema::ActOnObjCAtTryStmt(SourceLocation AtLoc, Stmt *Try, MultiStmtArg CatchStmts, Stmt *Finally) {\n if (FSI->FirstSEHTryLoc.isValid()) {\n Diag(AtLoc, diag::err_mixing_cxx_try_seh_try) << 1;"},{E,3868,"/// ActOnCXXTryBlock - Takes a try compound-statement and a number of\n/// handlers and creates a try statement from them.\nStmtResult Sema::ActOnCXXTryBlock(SourceLocation TryLoc, Stmt *TryBlock, ArrayRef<Stmt *> Handlers) {\n // C++ try is incompatible with SEH __try.\n if (!getLangOpts().Borland && FSI->FirstSEHTryLoc.isValid()) {\n Diag(TryLoc, diag::err_mixing_cxx_try_seh_try) << 0;"},{E,3947,"StmtResult Sema::ActOnSEHTryBlock(bool IsCXXTry, SourceLocation TryLoc, Stmt *TryBlock, Stmt *Handler) {\n // SEH __try is incompatible with C++ try. Borland appears to support this,\n // however.\n if (!getLangOpts().Borland) {\n if (FSI->FirstCXXOrObjCTryLoc.isValid()) {\n Diag(TryLoc, diag::err_mixing_cxx_try_seh_try) << FSI->FirstTryType;"}} | |||
}, | }, | ||
[" | ["err_mmap_config_macro_submodule"]={ | ||
[ | [j]="configuration macros are only allowed in top-level modules", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="configuration macros are only allowed in top-level modules", | ||
[ | [f]=n, | ||
[ | [g]="configuration macros are only allowed in top\\-level modules", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={"35b13ece231b",1363738925,"<rdar://problem/10796651> Introduce configuration macros into module maps."}, | ||
[k]={{u,2395,"/// Parse a configuration macro declaration.\n///\n/// module-declaration:\n/// \'config_macros\' attributes[opt] config-macro-list?\n///\n/// config-macro-list:\n/// identifier (\',\' identifier)?\nvoid ModuleMapParser::parseConfigMacros() {\n // Only top-level modules can have configuration macros.\n if (ActiveModule->Parent) {\n Diags.Report(ConfigMacrosLoc, diag::err_mmap_config_macro_submodule);"}} | |||
}, | }, | ||
[" | ["err_mmap_conflicting_export_as"]={ | ||
[ | [j]="conflicting re-export of module \'A\' as \'B\' or \'C\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="conflicting re-export of module \'%0\' as \'%1\' or \'%2\'", | ||
[ | [f]=n, | ||
[ | [g]="conflicting re\\-export of module \'(.*?)\' as \'(.*?)\' or \'(.*?)\'", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={"f0b11de279e7",1505432324,"[Module map] Introduce a private module re-export directive."}, | ||
[k]={{u,2328,"/// Parse a module export_as declaration.\n///\n/// export-as-declaration:\n/// \'export_as\' identifier\nvoid ModuleMapParser::parseExportAsDecl() {\n if (!ActiveModule->ExportAsModule.empty()) {\n if (ActiveModule->ExportAsModule == Tok.getString()) {\n } else {\n Diags.Report(Tok.getLocation(), diag::err_mmap_conflicting_export_as) << ActiveModule->Name << ActiveModule->ExportAsModule << Tok.getString();"}} | |||
}, | }, | ||
[" | ["err_mmap_duplicate_header_attribute"]={ | ||
[ | [j]="header attribute \'A\' specified multiple times", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="header attribute \'%0\' specified multiple times", | ||
[ | [f]=n, | ||
[ | [g]="header attribute \'(.*?)\' specified multiple times", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={"040e12662a67",1496368539,"Support lazy stat\'ing of files referenced by module maps."}, | ||
[k]={{u,2140,"/// Parse a header declaration.\n///\n/// header-declaration:\n/// \'textual\'[opt] \'header\' string-literal\n/// \'private\' \'textual\'[opt] \'header\' string-literal\n/// \'exclude\' \'header\' string-literal\n/// \'umbrella\' \'header\' string-literal\n///\n/// FIXME: Support \'private textual header\'.\nvoid ModuleMapParser::parseHeaderDecl(MMToken::TokenKind LeadingToken, SourceLocation LeadingLoc) {\n // If we were given stat information, parse it so we can skip looking for\n // the file.\n if (Tok.is(MMToken::LBrace)) {\n while (!Tok.is(MMToken::RBrace) && !Tok.is(MMToken::EndOfFile)) {\n case Size:\n if (Header.Size)\n Diags.Report(Loc, diag::err_mmap_duplicate_header_attribute) << Str;"},{u,2152,"/// Parse a header declaration.\n///\n/// header-declaration:\n/// \'textual\'[opt] \'header\' string-literal\n/// \'private\' \'textual\'[opt] \'header\' string-literal\n/// \'exclude\' \'header\' string-literal\n/// \'umbrella\' \'header\' string-literal\n///\n/// FIXME: Support \'private textual header\'.\nvoid ModuleMapParser::parseHeaderDecl(MMToken::TokenKind LeadingToken, SourceLocation LeadingLoc) {\n // If we were given stat information, parse it so we can skip looking for\n // the file.\n if (Tok.is(MMToken::LBrace)) {\n while (!Tok.is(MMToken::RBrace) && !Tok.is(MMToken::EndOfFile)) {\n case ModTime:\n if (Header.ModTime)\n Diags.Report(Loc, diag::err_mmap_duplicate_header_attribute) << Str;"}} | |||
}, | }, | ||
[" | ["err_mmap_expected_attribute"]={ | ||
[ | [j]="expected an attribute name", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="expected an attribute name", | ||
[ | [f]=n, | ||
[ | [g]="expected an attribute name", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={"a686e1b05df9",1327693953,"Introduce module attributes into the module map grammar, along with a"}, | ||
[k]={{u,2654,"/// Parse optional attributes.\n///\n/// attributes:\n/// attribute attributes\n/// attribute\n///\n/// attribute:\n/// [ identifier ]\n///\n/// \\param Attrs Will be filled in with the parsed attributes.\n///\n/// \\returns true if an error occurred, false otherwise.\nbool ModuleMapParser::parseOptionalAttributes(Attributes &Attrs) {\n while (Tok.is(MMToken::LSquare)) {\n // Check whether we have an attribute name here.\n if (!Tok.is(MMToken::Identifier)) {\n Diags.Report(Tok.getLocation(), diag::err_mmap_expected_attribute);"}} | |||
}, | }, | ||
[" | ["err_mmap_expected_config_macro"]={ | ||
[ | [j]="expected configuration macro name after \',\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="expected configuration macro name after \',\'", | ||
[ | [f]=n, | ||
[ | [g]="expected configuration macro name after \',\'", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={"35b13ece231b",1363738925,"<rdar://problem/10796651> Introduce configuration macros into module maps."}, | ||
[k]={{u,2427,"/// Parse a configuration macro declaration.\n///\n/// module-declaration:\n/// \'config_macros\' attributes[opt] config-macro-list?\n///\n/// config-macro-list:\n/// identifier (\',\' identifier)?\nvoid ModuleMapParser::parseConfigMacros() {\n do {\n // We expect to see a macro name here.\n // FIXME: Support macros with the same name as a keyword here.\n if (!Tok.is(MMToken::Identifier)) {\n Diags.Report(Tok.getLocation(), diag::err_mmap_expected_config_macro);"}} | |||
}, | }, | ||
[" | ["err_mmap_expected_conflicts_comma"]={ | ||
[ | [j]="expected \',\' after conflicting module name", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="expected \',\' after conflicting module name", | ||
[ | [f]=n, | ||
[ | [g]="expected \',\' after conflicting module name", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={"fb9126578ec3",1363813835,"<rdar://problem/12368093> Extend module maps with a \'conflict\' declaration, and warn when a newly-im..."}, | ||
[k]={{u,2470,"/// Parse a conflict declaration.\n///\n/// module-declaration:\n/// \'conflict\' module-id \',\' string-literal\nvoid ModuleMapParser::parseConflict() {\n // Parse the \',\'.\n if (!Tok.is(MMToken::Comma)) {\n Diags.Report(Tok.getLocation(), diag::err_mmap_expected_conflicts_comma) << SourceRange(ConflictLoc);"}} | |||
}, | }, | ||
[" | ["err_mmap_expected_conflicts_message"]={ | ||
[ | [j]="expected a message describing the conflict with \'A\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="expected a message describing the conflict with \'%0\'", | ||
[ | [f]=n, | ||
[ | [g]="expected a message describing the conflict with \'(.*?)\'", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={"fb9126578ec3",1363813835,"<rdar://problem/12368093> Extend module maps with a \'conflict\' declaration, and warn when a newly-im..."}, | ||
[k]={{u,2477,"/// Parse a conflict declaration.\n///\n/// module-declaration:\n/// \'conflict\' module-id \',\' string-literal\nvoid ModuleMapParser::parseConflict() {\n // Parse the message.\n if (!Tok.is(MMToken::StringLiteral)) {\n Diags.Report(Tok.getLocation(), diag::err_mmap_expected_conflicts_message) << formatModuleId(Conflict.Id);"}} | |||
}, | }, | ||
[" | ["err_mmap_expected_export_wildcard"]={ | ||
[ | [j]="only \'*\' can be exported from an inferred submodule", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="only \'*\' can be exported from an inferred submodule", | ||
[ | [f]=n, | ||
[ | [g]="only \'\\*\' can be exported from an inferred submodule", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={Ib,1323124064,Lb}, | ||
[k]={{u,2608,"/// Parse an inferred module declaration (wildcard modules).\n///\n/// module-declaration:\n/// \'explicit\'[opt] \'framework\'[opt] \'module\' * attributes[opt]\n/// { inferred-module-member* }\n///\n/// inferred-module-member:\n/// \'export\' \'*\'\n/// \'exclude\' identifier\nvoid ModuleMapParser::parseInferredModuleDecl(bool Framework, bool Explicit) {\n do {\n case MMToken::ExportKeyword:\n if (Tok.is(MMToken::Star))\n else\n Diags.Report(Tok.getLocation(), diag::err_mmap_expected_export_wildcard);"}} | |||
}, | }, | ||
[" | ["err_mmap_expected_feature"]={ | ||
[ | [j]="expected a feature name", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="expected a feature name", | ||
[ | [f]=n, | ||
[ | [g]="expected a feature name", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={"1fb5c3a63a88",1325304344,"Implement support for module requirements, which indicate the language"}, | ||
[k]={{u,2040,"/// Parse a requires declaration.\n///\n/// requires-declaration:\n/// \'requires\' feature-list\n///\n/// feature-list:\n/// feature \',\' feature-list\n/// feature\n///\n/// feature:\n/// \'!\'[opt] identifier\nvoid ModuleMapParser::parseRequiresDecl() {\n // Parse the feature-list.\n do {\n if (!Tok.is(MMToken::Identifier)) {\n Diags.Report(Tok.getLocation(), diag::err_mmap_expected_feature);"}} | |||
}, | }, | ||
[" | ["err_mmap_expected_header"]={ | ||
[ | [j]="expected a header name after \'A\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="expected a header name after \'%0\'", | ||
[ | [f]=n, | ||
[ | [g]="expected a header name after \'(.*?)\'", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={kb,1321038628,mb}, | ||
[k]={{u,2103,"/// Parse a header declaration.\n///\n/// header-declaration:\n/// \'textual\'[opt] \'header\' string-literal\n/// \'private\' \'textual\'[opt] \'header\' string-literal\n/// \'exclude\' \'header\' string-literal\n/// \'umbrella\' \'header\' string-literal\n///\n/// FIXME: Support \'private textual header\'.\nvoid ModuleMapParser::parseHeaderDecl(MMToken::TokenKind LeadingToken, SourceLocation LeadingLoc) {\n if (LeadingToken != MMToken::HeaderKeyword) {\n if (!Tok.is(MMToken::HeaderKeyword)) {\n Diags.Report(Tok.getLocation(), diag::err_mmap_expected_header) << (LeadingToken == MMToken::PrivateKeyword ? \"private\" : LeadingToken == MMToken::ExcludeKeyword ? \"exclude\" : LeadingToken == MMToken::TextualKeyword ? \"textual\" : \"umbrella\");"},{u,2111,"/// Parse a header declaration.\n///\n/// header-declaration:\n/// \'textual\'[opt] \'header\' string-literal\n/// \'private\' \'textual\'[opt] \'header\' string-literal\n/// \'exclude\' \'header\' string-literal\n/// \'umbrella\' \'header\' string-literal\n///\n/// FIXME: Support \'private textual header\'.\nvoid ModuleMapParser::parseHeaderDecl(MMToken::TokenKind LeadingToken, SourceLocation LeadingLoc) {\n // Parse the header name.\n if (!Tok.is(MMToken::StringLiteral)) {\n Diags.Report(Tok.getLocation(), diag::err_mmap_expected_header) << \"header\";"},{u,2194,"/// Parse an umbrella directory declaration.\n///\n/// umbrella-dir-declaration:\n/// umbrella string-literal\nvoid ModuleMapParser::parseUmbrellaDirDecl(SourceLocation UmbrellaLoc) {\n // Parse the directory name.\n if (!Tok.is(MMToken::StringLiteral)) {\n Diags.Report(Tok.getLocation(), diag::err_mmap_expected_header) << \"umbrella\";"}} | |||
}, | }, | ||
[" | ["err_mmap_expected_header_attribute"]={ | ||
[ | [j]="expected a header attribute name (\'size\' or \'mtime\')", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="expected a header attribute name (\'size\' or \'mtime\')", | ||
[ | [f]=n, | ||
[ | [g]="expected a header attribute name \\(\'size\' or \'mtime\'\\)", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={"040e12662a67",1496368539,"Support lazy stat\'ing of files referenced by module maps."}, | ||
[k]={{u,2163,"/// Parse a header declaration.\n///\n/// header-declaration:\n/// \'textual\'[opt] \'header\' string-literal\n/// \'private\' \'textual\'[opt] \'header\' string-literal\n/// \'exclude\' \'header\' string-literal\n/// \'umbrella\' \'header\' string-literal\n///\n/// FIXME: Support \'private textual header\'.\nvoid ModuleMapParser::parseHeaderDecl(MMToken::TokenKind LeadingToken, SourceLocation LeadingLoc) {\n // If we were given stat information, parse it so we can skip looking for\n // the file.\n if (Tok.is(MMToken::LBrace)) {\n while (!Tok.is(MMToken::RBrace) && !Tok.is(MMToken::EndOfFile)) {\n case Unknown:\n Diags.Report(Loc, diag::err_mmap_expected_header_attribute);"}} | |||
}, | }, | ||
[" | ["err_mmap_expected_inferred_member"]={ | ||
[ | [j]="expected ...", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="expected %select{module exclusion with \'exclude\'|\'export *\'}0", | ||
[ | [f]=n, | ||
[ | [g]="expected (?:module exclusion with \'exclude\'|\'export \\*\')", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={"9194a91dc928",1352230780,"Introduce inferred framework modules into the module map file,"}, | ||
[k]={{u,2581,"/// Parse an inferred module declaration (wildcard modules).\n///\n/// module-declaration:\n/// \'explicit\'[opt] \'framework\'[opt] \'module\' * attributes[opt]\n/// { inferred-module-member* }\n///\n/// inferred-module-member:\n/// \'export\' \'*\'\n/// \'exclude\' identifier\nvoid ModuleMapParser::parseInferredModuleDecl(bool Framework, bool Explicit) {\n do {\n case MMToken::ExcludeKeyword:\n if (ActiveModule) {\n Diags.Report(Tok.getLocation(), diag::err_mmap_expected_inferred_member) << (ActiveModule != nullptr);"},{u,2599,"/// Parse an inferred module declaration (wildcard modules).\n///\n/// module-declaration:\n/// \'explicit\'[opt] \'framework\'[opt] \'module\' * attributes[opt]\n/// { inferred-module-member* }\n///\n/// inferred-module-member:\n/// \'export\' \'*\'\n/// \'exclude\' identifier\nvoid ModuleMapParser::parseInferredModuleDecl(bool Framework, bool Explicit) {\n do {\n case MMToken::ExportKeyword:\n if (!ActiveModule) {\n Diags.Report(Tok.getLocation(), diag::err_mmap_expected_inferred_member) << (ActiveModule != nullptr);"},{u,2618,"/// Parse an inferred module declaration (wildcard modules).\n///\n/// module-declaration:\n/// \'explicit\'[opt] \'framework\'[opt] \'module\' * attributes[opt]\n/// { inferred-module-member* }\n///\n/// inferred-module-member:\n/// \'export\' \'*\'\n/// \'exclude\' identifier\nvoid ModuleMapParser::parseInferredModuleDecl(bool Framework, bool Explicit) {\n do {\n default:\n Diags.Report(Tok.getLocation(), diag::err_mmap_expected_inferred_member) << (ActiveModule != nullptr);"}} | |||
}, | }, | ||
[" | ["err_mmap_expected_lbrace"]={ | ||
[ | [j]="expected \'{\' to start module \'A\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="expected \'{\' to start module \'%0\'", | ||
[ | [f]=n, | ||
[ | [g]="expected \'\\{\' to start module \'(.*?)\'", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={kb,1321038628,mb}, | ||
[k]={{u,1751,"/// Parse a module declaration.\n///\n/// module-declaration:\n/// \'extern\' \'module\' module-id string-literal\n/// \'explicit\'[opt] \'framework\'[opt] \'module\' module-id attributes[opt]\n/// { module-member* }\n///\n/// module-member:\n/// requires-declaration\n/// header-declaration\n/// submodule-declaration\n/// export-declaration\n/// export-as-declaration\n/// link-declaration\n///\n/// submodule-declaration:\n/// module-declaration\n/// inferred-submodule-declaration\nvoid ModuleMapParser::parseModuleDecl() {\n // Parse the opening brace.\n if (!Tok.is(MMToken::LBrace)) {\n Diags.Report(Tok.getLocation(), diag::err_mmap_expected_lbrace) << ModuleName;"}} | |||
}, | }, | ||
[" | ["err_mmap_expected_lbrace_wildcard"]={ | ||
[ | [j]="expected \'{\' to start inferred submodule", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="expected \'{\' to start inferred submodule", | ||
[ | [f]=n, | ||
[ | [g]="expected \'\\{\' to start inferred submodule", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={Ib,1323124064,Lb}, | ||
[k]={{u,2564,"/// Parse an inferred module declaration (wildcard modules).\n///\n/// module-declaration:\n/// \'explicit\'[opt] \'framework\'[opt] \'module\' * attributes[opt]\n/// { inferred-module-member* }\n///\n/// inferred-module-member:\n/// \'export\' \'*\'\n/// \'exclude\' identifier\nvoid ModuleMapParser::parseInferredModuleDecl(bool Framework, bool Explicit) {\n // Parse the opening brace.\n if (!Tok.is(MMToken::LBrace)) {\n Diags.Report(Tok.getLocation(), diag::err_mmap_expected_lbrace_wildcard);"}} | |||
}, | }, | ||
[" | ["err_mmap_expected_library_name"]={ | ||
[ | [j]="expected ... name as a string", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="expected %select{library|framework}0 name as a string", | ||
[ | [f]=n, | ||
[ | [g]="expected (?:library|framework) name as a string", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={"6ddfca91e04e",1358184060,"Implement parsing, AST, (de-)serialization, and placeholder global"}, | ||
[k]={{u,2372,"/// Parse a link declaration.\n///\n/// module-declaration:\n/// \'link\' \'framework\'[opt] string-literal\nvoid ModuleMapParser::parseLinkDecl() {\n // Parse the library name\n if (!Tok.is(MMToken::StringLiteral)) {\n Diags.Report(Tok.getLocation(), diag::err_mmap_expected_library_name) << IsFramework << SourceRange(LinkLoc);"}} | |||
}, | }, | ||
[" | ["err_mmap_expected_member"]={ | ||
[ | [j]="expected umbrella, header, submodule, or module export", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="expected umbrella, header, submodule, or module export", | ||
[ | [f]=n, | ||
[ | [g]="expected umbrella, header, submodule, or module export", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={kb,1321038628,mb}, | ||
[k]={{u,1914,"/// Parse a module declaration.\n///\n/// module-declaration:\n/// \'extern\' \'module\' module-id string-literal\n/// \'explicit\'[opt] \'framework\'[opt] \'module\' module-id attributes[opt]\n/// { module-member* }\n///\n/// module-member:\n/// requires-declaration\n/// header-declaration\n/// submodule-declaration\n/// export-declaration\n/// export-as-declaration\n/// link-declaration\n///\n/// submodule-declaration:\n/// module-declaration\n/// inferred-submodule-declaration\nvoid ModuleMapParser::parseModuleDecl() {\n do {\n default:\n Diags.Report(Tok.getLocation(), diag::err_mmap_expected_member);"}} | |||
}, | }, | ||
[" | ["err_mmap_expected_mmap_file"]={ | ||
[ | [j]="expected a module map file name", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="expected a module map file name", | ||
[ | [f]=n, | ||
[ | [g]="expected a module map file name", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={"97292843d0aa",1378884044,"Support for modular module-map-files"}, | ||
[k]={{u,1970,"/// Parse an extern module declaration.\n///\n/// extern module-declaration:\n/// \'extern\' \'module\' module-id string-literal\nvoid ModuleMapParser::parseExternModuleDecl() {\n // Parse the referenced module map file name.\n if (!Tok.is(MMToken::StringLiteral)) {\n Diags.Report(Tok.getLocation(), diag::err_mmap_expected_mmap_file);"}} | |||
}, | }, | ||
[" | ["err_mmap_expected_module"]={ | ||
[ | [j]="expected module declaration", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="expected module declaration", | ||
[ | [f]=n, | ||
[ | [g]="expected module declaration", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={kb,1321038628,mb}, | ||
[k]={{u,1682,"/// Parse a module declaration.\n///\n/// module-declaration:\n/// \'extern\' \'module\' module-id string-literal\n/// \'explicit\'[opt] \'framework\'[opt] \'module\' module-id attributes[opt]\n/// { module-member* }\n///\n/// module-member:\n/// requires-declaration\n/// header-declaration\n/// submodule-declaration\n/// export-declaration\n/// export-as-declaration\n/// link-declaration\n///\n/// submodule-declaration:\n/// module-declaration\n/// inferred-submodule-declaration\nvoid ModuleMapParser::parseModuleDecl() {\n // Parse \'module\' keyword.\n if (!Tok.is(MMToken::ModuleKeyword)) {\n Diags.Report(Tok.getLocation(), diag::err_mmap_expected_module);"},{u,1954,"/// Parse an extern module declaration.\n///\n/// extern module-declaration:\n/// \'extern\' \'module\' module-id string-literal\nvoid ModuleMapParser::parseExternModuleDecl() {\n // Parse \'module\' keyword.\n if (!Tok.is(MMToken::ModuleKeyword)) {\n Diags.Report(Tok.getLocation(), diag::err_mmap_expected_module);"},{u,2741,"/// Parse a module map file.\n///\n/// module-map-file:\n/// module-declaration*\nbool ModuleMapParser::parseModuleMapFile() {\n do {\n case MMToken::UseKeyword:\n Diags.Report(Tok.getLocation(), diag::err_mmap_expected_module);"}} | |||
}, | }, | ||
[" | ["err_mmap_expected_module_name"]={ | ||
[ | [j]="expected module name", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="expected module name", | ||
[ | [f]=n, | ||
[ | [g]="expected module name", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={kb,1321038628,mb}, | ||
[k]={{u,1552,"/// Parse a module-id.\n///\n/// module-id:\n/// identifier\n/// identifier \'.\' module-id\n///\n/// \\returns true if an error occurred, false otherwise.\nbool ModuleMapParser::parseModuleId(ModuleId &Id) {\n do {\n if (Tok.is(MMToken::Identifier) || Tok.is(MMToken::StringLiteral)) {\n } else {\n Diags.Report(Tok.getLocation(), diag::err_mmap_expected_module_name);"}} | |||
}, | }, | ||
[" | ["err_mmap_expected_rbrace"]={ | ||
[ | [j]="expected \'}\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="expected \'}\'", | ||
[ | [f]=n, | ||
[ | [g]="expected \'\\}\'", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={kb,1321038628,mb}, | ||
[k]={{u,1793,"/// Parse a module declaration.\n///\n/// module-declaration:\n/// \'extern\' \'module\' module-id string-literal\n/// \'explicit\'[opt] \'framework\'[opt] \'module\' module-id attributes[opt]\n/// { module-member* }\n///\n/// module-member:\n/// requires-declaration\n/// header-declaration\n/// submodule-declaration\n/// export-declaration\n/// export-as-declaration\n/// link-declaration\n///\n/// submodule-declaration:\n/// module-declaration\n/// inferred-submodule-declaration\nvoid ModuleMapParser::parseModuleDecl() {\n if (Module *Existing = Map.lookupModuleQualified(ModuleName, ActiveModule)) {\n if (LoadedFromASTFile || Inferred || PartOfFramework || ParsedAsMainInput) {\n if (Tok.is(MMToken::RBrace))\n else {\n Diags.Report(Tok.getLocation(), diag::err_mmap_expected_rbrace);"},{u,1923,"/// Parse a module declaration.\n///\n/// module-declaration:\n/// \'extern\' \'module\' module-id string-literal\n/// \'explicit\'[opt] \'framework\'[opt] \'module\' module-id attributes[opt]\n/// { module-member* }\n///\n/// module-member:\n/// requires-declaration\n/// header-declaration\n/// submodule-declaration\n/// export-declaration\n/// export-as-declaration\n/// link-declaration\n///\n/// submodule-declaration:\n/// module-declaration\n/// inferred-submodule-declaration\nvoid ModuleMapParser::parseModuleDecl() {\n if (Tok.is(MMToken::RBrace))\n else {\n Diags.Report(Tok.getLocation(), diag::err_mmap_expected_rbrace);"},{u,2172,"/// Parse a header declaration.\n///\n/// header-declaration:\n/// \'textual\'[opt] \'header\' string-literal\n/// \'private\' \'textual\'[opt] \'header\' string-literal\n/// \'exclude\' \'header\' string-literal\n/// \'umbrella\' \'header\' string-literal\n///\n/// FIXME: Support \'private textual header\'.\nvoid ModuleMapParser::parseHeaderDecl(MMToken::TokenKind LeadingToken, SourceLocation LeadingLoc) {\n // If we were given stat information, parse it so we can skip looking for\n // the file.\n if (Tok.is(MMToken::LBrace)) {\n if (Tok.is(MMToken::RBrace))\n else {\n Diags.Report(Tok.getLocation(), diag::err_mmap_expected_rbrace);"},{u,2627,"/// Parse an inferred module declaration (wildcard modules).\n///\n/// module-declaration:\n/// \'explicit\'[opt] \'framework\'[opt] \'module\' * attributes[opt]\n/// { inferred-module-member* }\n///\n/// inferred-module-member:\n/// \'export\' \'*\'\n/// \'exclude\' identifier\nvoid ModuleMapParser::parseInferredModuleDecl(bool Framework, bool Explicit) {\n if (Tok.is(MMToken::RBrace))\n else {\n Diags.Report(Tok.getLocation(), diag::err_mmap_expected_rbrace);"}} | |||
}, | }, | ||
[" | ["err_mmap_expected_rsquare"]={ | ||
[ | [j]="expected \']\' to close attribute", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="expected \']\' to close attribute", | ||
[ | [f]=n, | ||
[ | [g]="expected \'\\]\' to close attribute", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={"a686e1b05df9",1327693953,"Introduce module attributes into the module map grammar, along with a"}, | ||
[k]={{u,2688,"/// Parse optional attributes.\n///\n/// attributes:\n/// attribute attributes\n/// attribute\n///\n/// attribute:\n/// [ identifier ]\n///\n/// \\param Attrs Will be filled in with the parsed attributes.\n///\n/// \\returns true if an error occurred, false otherwise.\nbool ModuleMapParser::parseOptionalAttributes(Attributes &Attrs) {\n while (Tok.is(MMToken::LSquare)) {\n // Consume the \']\'.\n if (!Tok.is(MMToken::RSquare)) {\n Diags.Report(Tok.getLocation(), diag::err_mmap_expected_rsquare);"}} | |||
}, | }, | ||
[" | ["err_mmap_explicit_inferred_framework"]={ | ||
[ | [j]="inferred framework modules cannot be \'explicit\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="inferred framework modules cannot be \'explicit\'", | ||
[ | [f]=n, | ||
[ | [g]="inferred framework modules cannot be \'explicit\'", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={"9194a91dc928",1352230780,"Introduce inferred framework modules into the module map file,"}, | ||
[k]={{u,2528,"/// Parse an inferred module declaration (wildcard modules).\n///\n/// module-declaration:\n/// \'explicit\'[opt] \'framework\'[opt] \'module\' * attributes[opt]\n/// { inferred-module-member* }\n///\n/// inferred-module-member:\n/// \'export\' \'*\'\n/// \'exclude\' identifier\nvoid ModuleMapParser::parseInferredModuleDecl(bool Framework, bool Explicit) {\n if (ActiveModule) {\n } else if (Explicit) {\n Diags.Report(StarLoc, diag::err_mmap_explicit_inferred_framework);"}} | |||
}, | }, | ||
[" | ["err_mmap_explicit_top_level"]={ | ||
[ | [j]="\'explicit\' is not permitted on top-level modules", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'explicit\' is not permitted on top-level modules", | ||
[ | [f]=n, | ||
[ | [g]="\'explicit\' is not permitted on top\\-level modules", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={"e7ab36693b68",1323224625,"Implement basic support for private headers in frameworks. In essence,"}, | ||
[k]={{u,1710,"/// Parse a module declaration.\n///\n/// module-declaration:\n/// \'extern\' \'module\' module-id string-literal\n/// \'explicit\'[opt] \'framework\'[opt] \'module\' module-id attributes[opt]\n/// { module-member* }\n///\n/// module-member:\n/// requires-declaration\n/// header-declaration\n/// submodule-declaration\n/// export-declaration\n/// export-as-declaration\n/// link-declaration\n///\n/// submodule-declaration:\n/// module-declaration\n/// inferred-submodule-declaration\nvoid ModuleMapParser::parseModuleDecl() {\n if (ActiveModule) {\n } else if (Id.size() == 1 && Explicit) {\n Diags.Report(ExplicitLoc, diag::err_mmap_explicit_top_level);"}} | |||
}, | }, | ||
[" | ["err_mmap_inferred_framework_submodule"]={ | ||
[ | [j]="inferred submodule cannot be a framework submodule", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="inferred submodule cannot be a framework submodule", | ||
[ | [f]=n, | ||
[ | [g]="inferred submodule cannot be a framework submodule", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={"9194a91dc928",1352230780,"Introduce inferred framework modules into the module map file,"}, | ||
[k]={{u,2524,"/// Parse an inferred module declaration (wildcard modules).\n///\n/// module-declaration:\n/// \'explicit\'[opt] \'framework\'[opt] \'module\' * attributes[opt]\n/// { inferred-module-member* }\n///\n/// inferred-module-member:\n/// \'export\' \'*\'\n/// \'exclude\' identifier\nvoid ModuleMapParser::parseInferredModuleDecl(bool Framework, bool Explicit) {\n if (ActiveModule) {\n // Check for the \'framework\' keyword, which is not permitted here.\n if (Framework) {\n Diags.Report(StarLoc, diag::err_mmap_inferred_framework_submodule);"}} | |||
}, | }, | ||
[" | ["err_mmap_inferred_no_umbrella"]={ | ||
[ | [j]="inferred submodules require a module with an umbrella", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="inferred submodules require a module with an umbrella", | ||
[ | [f]=n, | ||
[ | [g]="inferred submodules require a module with an umbrella", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={Ib,1323124064,Lb}, | ||
[k]={{u,2510,"/// Parse an inferred module declaration (wildcard modules).\n///\n/// module-declaration:\n/// \'explicit\'[opt] \'framework\'[opt] \'module\' * attributes[opt]\n/// { inferred-module-member* }\n///\n/// inferred-module-member:\n/// \'export\' \'*\'\n/// \'exclude\' identifier\nvoid ModuleMapParser::parseInferredModuleDecl(bool Framework, bool Explicit) {\n if (ActiveModule) {\n // Inferred modules must have umbrella directories.\n if (!Failed && ActiveModule->IsAvailable && !ActiveModule->getEffectiveUmbrellaDir()) {\n Diags.Report(StarLoc, diag::err_mmap_inferred_no_umbrella);"}} | |||
}, | }, | ||
[" | ["err_mmap_inferred_redef"]={ | ||
[ | [j]="redefinition of inferred submodule", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="redefinition of inferred submodule", | ||
[ | [f]=n, | ||
[ | [g]="redefinition of inferred submodule", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={Ib,1323124064,Lb}, | ||
[k]={{u,2516,"/// Parse an inferred module declaration (wildcard modules).\n///\n/// module-declaration:\n/// \'explicit\'[opt] \'framework\'[opt] \'module\' * attributes[opt]\n/// { inferred-module-member* }\n///\n/// inferred-module-member:\n/// \'export\' \'*\'\n/// \'exclude\' identifier\nvoid ModuleMapParser::parseInferredModuleDecl(bool Framework, bool Explicit) {\n if (ActiveModule) {\n // Check for redefinition of an inferred module.\n if (!Failed && ActiveModule->InferSubmodules) {\n Diags.Report(StarLoc, diag::err_mmap_inferred_redef);"}} | |||
}, | }, | ||
[" | ["err_mmap_invalid_header_attribute_value"]={ | ||
[ | [j]="expected integer literal as value for header attribute \'A\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="expected integer literal as value for header attribute \'%0\'", | ||
[ | [f]=n, | ||
[ | [g]="expected integer literal as value for header attribute \'(.*?)\'", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={"040e12662a67",1496368539,"Support lazy stat\'ing of files referenced by module maps."}, | ||
[k]={{u,2142,"/// Parse a header declaration.\n///\n/// header-declaration:\n/// \'textual\'[opt] \'header\' string-literal\n/// \'private\' \'textual\'[opt] \'header\' string-literal\n/// \'exclude\' \'header\' string-literal\n/// \'umbrella\' \'header\' string-literal\n///\n/// FIXME: Support \'private textual header\'.\nvoid ModuleMapParser::parseHeaderDecl(MMToken::TokenKind LeadingToken, SourceLocation LeadingLoc) {\n // If we were given stat information, parse it so we can skip looking for\n // the file.\n if (Tok.is(MMToken::LBrace)) {\n while (!Tok.is(MMToken::RBrace) && !Tok.is(MMToken::EndOfFile)) {\n case Size:\n if (!Tok.is(MMToken::IntegerLiteral)) {\n Diags.Report(Tok.getLocation(), diag::err_mmap_invalid_header_attribute_value) << Str;"},{u,2154,"/// Parse a header declaration.\n///\n/// header-declaration:\n/// \'textual\'[opt] \'header\' string-literal\n/// \'private\' \'textual\'[opt] \'header\' string-literal\n/// \'exclude\' \'header\' string-literal\n/// \'umbrella\' \'header\' string-literal\n///\n/// FIXME: Support \'private textual header\'.\nvoid ModuleMapParser::parseHeaderDecl(MMToken::TokenKind LeadingToken, SourceLocation LeadingLoc) {\n // If we were given stat information, parse it so we can skip looking for\n // the file.\n if (Tok.is(MMToken::LBrace)) {\n while (!Tok.is(MMToken::RBrace) && !Tok.is(MMToken::EndOfFile)) {\n case ModTime:\n if (!Tok.is(MMToken::IntegerLiteral)) {\n Diags.Report(Tok.getLocation(), diag::err_mmap_invalid_header_attribute_value) << Str;"}} | |||
}, | }, | ||
[" | ["err_mmap_missing_exclude_name"]={ | ||
[ | [j]="expected excluded module name", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="expected excluded module name", | ||
[ | [f]=n, | ||
[ | [g]="expected excluded module name", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={"9194a91dc928",1352230780,"Introduce inferred framework modules into the module map file,"}, | ||
[k]={{u,2589,"/// Parse an inferred module declaration (wildcard modules).\n///\n/// module-declaration:\n/// \'explicit\'[opt] \'framework\'[opt] \'module\' * attributes[opt]\n/// { inferred-module-member* }\n///\n/// inferred-module-member:\n/// \'export\' \'*\'\n/// \'exclude\' identifier\nvoid ModuleMapParser::parseInferredModuleDecl(bool Framework, bool Explicit) {\n do {\n case MMToken::ExcludeKeyword:\n // FIXME: Support string-literal module names here.\n if (!Tok.is(MMToken::Identifier)) {\n Diags.Report(Tok.getLocation(), diag::err_mmap_missing_exclude_name);"}} | |||
}, | }, | ||
[" | ["err_mmap_missing_module_qualified"]={ | ||
[ | [j]="no module named \'A\' in \'B\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="no module named \'%0\' in \'%1\'", | ||
[ | [f]=n, | ||
[ | [g]="no module named \'(.*?)\' in \'(.*?)\'", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={"2b82c2a59eca",1322790427,"Implementing parsing and resolution of module export declarations"}, | ||
[k]={{u,140,"Module *ModuleMap::resolveModuleId(const ModuleId &Id, Module *Mod, bool Complain) const {\n // Dig into the module path.\n for (unsigned I = 1, N = Id.size(); I != N; ++I) {\n if (!Sub) {\n if (Complain)\n Diags.Report(Id[I].second, diag::err_mmap_missing_module_qualified) << Id[I].first << Context->getFullModuleName() << SourceRange(Id[0].second, Id[I - 1].second);"}} | |||
}, | }, | ||
[" | ["err_mmap_missing_module_unqualified"]={ | ||
[ | [j]="no module named \'A\' visible from \'B\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="no module named \'%0\' visible from \'%1\'", | ||
[ | [f]=n, | ||
[ | [g]="no module named \'(.*?)\' visible from \'(.*?)\'", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={"2b82c2a59eca",1322790427,"Implementing parsing and resolution of module export declarations"}, | ||
[k]={{u,130,"Module *ModuleMap::resolveModuleId(const ModuleId &Id, Module *Mod, bool Complain) const {\n if (!Context) {\n if (Complain)\n Diags.Report(Id[0].second, diag::err_mmap_missing_module_unqualified) << Id[0].first << Mod->getFullModuleName();"}} | |||
}, | }, | ||
[" | ["err_mmap_missing_parent_module"]={ | ||
[ | [j]="no module named \'A\' ..., parent module must be defined before the submodule", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="no module named \'%0\' %select{found|in \'%2\'}1, parent module must be defined before the submodule", | ||
[ | [f]=n, | ||
[ | [g]="no module named \'(.*?)\' (?:found|in \'(.*?)\'), parent module must be defined before the submodule", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={"8839e278ffca",1595533636,"[Modules] Improve error message when cannot find parent module for submodule definition."}, | ||
[k]={{u,1730,"/// Parse a module declaration.\n///\n/// module-declaration:\n/// \'extern\' \'module\' module-id string-literal\n/// \'explicit\'[opt] \'framework\'[opt] \'module\' module-id attributes[opt]\n/// { module-member* }\n///\n/// module-member:\n/// requires-declaration\n/// header-declaration\n/// submodule-declaration\n/// export-declaration\n/// export-as-declaration\n/// link-declaration\n///\n/// submodule-declaration:\n/// module-declaration\n/// inferred-submodule-declaration\nvoid ModuleMapParser::parseModuleDecl() {\n if (Id.size() > 1) {\n for (unsigned I = 0, N = Id.size() - 1; I != N; ++I) {\n Diags.Report(Id[I].second, diag::err_mmap_missing_parent_module) << Id[I].first << (ActiveModule != nullptr) << (ActiveModule ? ActiveModule->getTopLevelModule()->getFullModuleName() : \"\");"}} | |||
}, | }, | ||
[" | ["err_mmap_module_id"]={ | ||
[ | [j]="expected a module name or \'*\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="expected a module name or \'*\'", | ||
[ | [f]=n, | ||
[ | [g]="expected a module name or \'\\*\'", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={"ba7f2f7110c2",1380014054,"Module use declarations (II)"}, | ||
[k]={{u,2295,"/// Parse a module export declaration.\n///\n/// export-declaration:\n/// \'export\' wildcard-module-id\n///\n/// wildcard-module-id:\n/// identifier\n/// \'*\'\n/// identifier \'.\' wildcard-module-id\nvoid ModuleMapParser::parseExportDecl() {\n do {\n Diags.Report(Tok.getLocation(), diag::err_mmap_module_id);"},{u,2313,"/// Parse a module export_as declaration.\n///\n/// export-as-declaration:\n/// \'export_as\' identifier\nvoid ModuleMapParser::parseExportAsDecl() {\n if (!Tok.is(MMToken::Identifier)) {\n Diags.Report(Tok.getLocation(), diag::err_mmap_module_id);"}} | |||
}, | }, | ||
[" | ["err_mmap_module_redefinition"]={ | ||
[ | [j]="redefinition of module \'A\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="redefinition of module \'%0\'", | ||
[ | [f]=n, | ||
[ | [g]="redefinition of module \'(.*?)\'", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={kb,1321038628,mb}, | ||
[k]={{u,1804,"/// Parse a module declaration.\n///\n/// module-declaration:\n/// \'extern\' \'module\' module-id string-literal\n/// \'explicit\'[opt] \'framework\'[opt] \'module\' module-id attributes[opt]\n/// { module-member* }\n///\n/// module-member:\n/// requires-declaration\n/// header-declaration\n/// submodule-declaration\n/// export-declaration\n/// export-as-declaration\n/// link-declaration\n///\n/// submodule-declaration:\n/// module-declaration\n/// inferred-submodule-declaration\nvoid ModuleMapParser::parseModuleDecl() {\n if (Module *Existing = Map.lookupModuleQualified(ModuleName, ActiveModule)) {\n if (!Existing->Parent && Map.mayShadowNewModule(Existing)) {\n } else {\n Diags.Report(ModuleNameLoc, diag::err_mmap_module_redefinition) << ModuleName;"}} | |||
}, | }, | ||
[" | ["err_mmap_nested_submodule_id"]={ | ||
[ | [j]="qualified module name can only be used to define modules at the top level", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="qualified module name can only be used to define modules at the top level", | ||
[ | [f]=n, | ||
[ | [g]="qualified module name can only be used to define modules at the top level", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={"e7ab36693b68",1323224625,"Implement basic support for private headers in frameworks. In essence,"}, | ||
[k]={{u,1703,"/// Parse a module declaration.\n///\n/// module-declaration:\n/// \'extern\' \'module\' module-id string-literal\n/// \'explicit\'[opt] \'framework\'[opt] \'module\' module-id attributes[opt]\n/// { module-member* }\n///\n/// module-member:\n/// requires-declaration\n/// header-declaration\n/// submodule-declaration\n/// export-declaration\n/// export-as-declaration\n/// link-declaration\n///\n/// submodule-declaration:\n/// module-declaration\n/// inferred-submodule-declaration\nvoid ModuleMapParser::parseModuleDecl() {\n if (ActiveModule) {\n if (Id.size() > 1) {\n Diags.Report(Id.front().second, diag::err_mmap_nested_submodule_id) << SourceRange(Id.front().second, Id.back().second);"}} | |||
}, | }, | ||
[" | ["err_mmap_submodule_export_as"]={ | ||
[ | [j]="only top-level modules can be re-exported as public", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="only top-level modules can be re-exported as public", | ||
[ | [f]=n, | ||
[ | [g]="only top\\-level modules can be re\\-exported as public", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={"f0b11de279e7",1505432324,"[Module map] Introduce a private module re-export directive."}, | ||
[k]={{u,2319,"/// Parse a module export_as declaration.\n///\n/// export-as-declaration:\n/// \'export_as\' identifier\nvoid ModuleMapParser::parseExportAsDecl() {\n if (ActiveModule->Parent) {\n Diags.Report(Tok.getLocation(), diag::err_mmap_submodule_export_as);"}} | |||
}, | }, | ||
[" | ["err_mmap_top_level_inferred_submodule"]={ | ||
[ | [j]="only submodules and framework modules may be inferred with wildcard syntax", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="only submodules and framework modules may be inferred with wildcard syntax", | ||
[ | [f]=n, | ||
[ | [g]="only submodules and framework modules may be inferred with wildcard syntax", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={Ib,1323124064,Lb}, | ||
[k]={{u,2503,"/// Parse an inferred module declaration (wildcard modules).\n///\n/// module-declaration:\n/// \'explicit\'[opt] \'framework\'[opt] \'module\' * attributes[opt]\n/// { inferred-module-member* }\n///\n/// inferred-module-member:\n/// \'export\' \'*\'\n/// \'exclude\' identifier\nvoid ModuleMapParser::parseInferredModuleDecl(bool Framework, bool Explicit) {\n // Inferred modules must be submodules.\n if (!ActiveModule && !Framework) {\n Diags.Report(StarLoc, diag::err_mmap_top_level_inferred_submodule);"}} | |||
}, | }, | ||
[" | ["err_mmap_umbrella_clash"]={ | ||
[ | [j]="umbrella for module \'A\' already covers this directory", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="umbrella for module \'%0\' already covers this directory", | ||
[ | [f]=n, | ||
[ | [g]="umbrella for module \'(.*?)\' already covers this directory", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={"b65dbfff5275",1321484545,"A module with an umbrella header assumes that all of the headers in"}, | ||
[k]={{u,244,"void ModuleMap::resolveHeader(Module *Mod, const Module::UnresolvedHeaderDirective &Header, bool &NeedsFramework) {\n if (OptionalFileEntryRef File = findHeader(Mod, Header, RelativePathName, NeedsFramework)) {\n if (Header.IsUmbrella) {\n if (Module *UmbrellaMod = UmbrellaDirs[UmbrellaDir])\n Diags.Report(Header.FileNameLoc, diag::err_mmap_umbrella_clash) << UmbrellaMod->getFullModuleName();"},{u,2123,"/// Parse a header declaration.\n///\n/// header-declaration:\n/// \'textual\'[opt] \'header\' string-literal\n/// \'private\' \'textual\'[opt] \'header\' string-literal\n/// \'exclude\' \'header\' string-literal\n/// \'umbrella\' \'header\' string-literal\n///\n/// FIXME: Support \'private textual header\'.\nvoid ModuleMapParser::parseHeaderDecl(MMToken::TokenKind LeadingToken, SourceLocation LeadingLoc) {\n // Check whether we already have an umbrella.\n if (Header.IsUmbrella && ActiveModule->Umbrella) {\n Diags.Report(Header.FileNameLoc, diag::err_mmap_umbrella_clash) << ActiveModule->getFullModuleName();"},{u,2205,"/// Parse an umbrella directory declaration.\n///\n/// umbrella-dir-declaration:\n/// umbrella string-literal\nvoid ModuleMapParser::parseUmbrellaDirDecl(SourceLocation UmbrellaLoc) {\n // Check whether we already have an umbrella.\n if (ActiveModule->Umbrella) {\n Diags.Report(DirNameLoc, diag::err_mmap_umbrella_clash) << ActiveModule->getFullModuleName();"},{u,2250,"/// Parse an umbrella directory declaration.\n///\n/// umbrella-dir-declaration:\n/// umbrella string-literal\nvoid ModuleMapParser::parseUmbrellaDirDecl(SourceLocation UmbrellaLoc) {\n if (Module *OwningModule = Map.UmbrellaDirs[*Dir]) {\n Diags.Report(UmbrellaLoc, diag::err_mmap_umbrella_clash) << OwningModule->getFullModuleName();"}} | |||
}, | }, | ||
[" | ["err_mmap_unknown_token"]={ | ||
[ | [j]="skipping stray token", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="skipping stray token", | ||
[ | [f]=n, | ||
[ | [g]="skipping stray token", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={kb,1321038628,mb}, | ||
[k]={{u,1453,"retry:\n case tok::numeric_constant: {\n if (StringRef(Start, Length).getAsInteger(0, Value)) {\n Diags.Report(Tok.getLocation(), diag::err_mmap_unknown_token);"},{u,1484,"retry:\n default:\n Diags.Report(Tok.getLocation(), diag::err_mmap_unknown_token);"}} | |||
}, | }, | ||
[" | ["err_mmap_use_decl_submodule"]={ | ||
[ | [j]="use declarations are only allowed in top-level modules", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="use declarations are only allowed in top-level modules", | ||
[ | [f]=n, | ||
[ | [g]="use declarations are only allowed in top\\-level modules", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={"8f4d3ff1466a",1427407801,"[modules] Restrict the module use-declaration to only appear in top-level"}, | ||
[k]={{u,2350,"/// Parse a module use declaration.\n///\n/// use-declaration:\n/// \'use\' wildcard-module-id\nvoid ModuleMapParser::parseUseDecl() {\n if (ActiveModule->Parent)\n Diags.Report(KWLoc, diag::err_mmap_use_decl_submodule);"}} | |||
}, | }, | ||
[" | ["err_mode_not_primitive"]={ | ||
[ | [j]="mode attribute only supported for integer and floating-point types", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="mode attribute only supported for integer and floating-point types", | ||
[ | [f]=n, | ||
[ | [g]="mode attribute only supported for integer and floating\\-point types", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={z,1236199783,A}, | ||
[k]={{v,4223,"void Sema::AddModeAttr(Decl *D, const AttributeCommonInfo &CI, IdentifierInfo *Name, bool InInstantiation) {\n if (!OldElemTy->getAs<BuiltinType>() && !OldElemTy->isComplexType() && !IntegralOrAnyEnumType)\n Diag(AttrLoc, diag::err_mode_not_primitive);"}} | |||
}, | }, | ||
[" | ["err_mode_wrong_type"]={ | ||
[ | [j]="type of machine mode does not match type of base type", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="type of machine mode does not match type of base type", | ||
[ | [f]=n, | ||
[ | [g]="type of machine mode does not match type of base type", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={z,1236199783,A}, | ||
[k]={{v,4226,"void Sema::AddModeAttr(Decl *D, const AttributeCommonInfo &CI, IdentifierInfo *Name, bool InInstantiation) {\n if (!OldElemTy->getAs<BuiltinType>() && !OldElemTy->isComplexType() && !IntegralOrAnyEnumType)\n else if (IntegerMode) {\n if (!IntegralOrAnyEnumType)\n Diag(AttrLoc, diag::err_mode_wrong_type);"},{v,4229,"void Sema::AddModeAttr(Decl *D, const AttributeCommonInfo &CI, IdentifierInfo *Name, bool InInstantiation) {\n if (!OldElemTy->getAs<BuiltinType>() && !OldElemTy->isComplexType() && !IntegralOrAnyEnumType)\n else if (IntegerMode) {\n } else if (ComplexMode) {\n if (!OldElemTy->isComplexType())\n Diag(AttrLoc, diag::err_mode_wrong_type);"},{v,4232,"void Sema::AddModeAttr(Decl *D, const AttributeCommonInfo &CI, IdentifierInfo *Name, bool InInstantiation) {\n if (!OldElemTy->getAs<BuiltinType>() && !OldElemTy->isComplexType() && !IntegralOrAnyEnumType)\n else if (IntegerMode) {\n } else if (ComplexMode) {\n } else {\n if (!OldElemTy->isFloatingType())\n Diag(AttrLoc, diag::err_mode_wrong_type);"},{v,4265,"void Sema::AddModeAttr(Decl *D, const AttributeCommonInfo &CI, IdentifierInfo *Name, bool InInstantiation) {\n if (NewTy.isNull()) {\n Diag(AttrLoc, diag::err_mode_wrong_type);"}} | |||
}, | }, | ||
[" | ["err_modifier_expected_colon"]={ | ||
[ | [j]="missing \':\' after A modifier", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="missing \':\' after %0 modifier", | ||
[ | [f]=n, | ||
[ | [g]="missing \'\\:\' after (.*?) modifier", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={"ab9eac762c35",1668730814,"[OpenMP] Initial parsing/sema for \'strict\' modifier with \'grainsize\' clause"}, | ||
[k]={{"clang/lib/Parse/ParseOpenMP.cpp",3350,"/// Parsing of OpenMP clauses with single expressions and some additional\n/// argument like \'schedule\' or \'dist_schedule\'.\n///\n/// schedule-clause:\n/// \'schedule\' \'(\' [ modifier [ \',\' modifier ] \':\' ] kind [\',\' expression ]\n/// \')\'\n///\n/// if-clause:\n/// \'if\' \'(\' [ directive-name-modifier \':\' ] expression \')\'\n///\n/// defaultmap:\n/// \'defaultmap\' \'(\' modifier [ \':\' kind ] \')\'\n///\n/// device-clause:\n/// \'device\' \'(\' [ device-modifier \':\' ] expression \')\'\n///\nOMPClause *Parser::ParseOpenMPSingleExprWithArgClause(OpenMPDirectiveKind DKind, OpenMPClauseKind Kind, bool ParseOnly) {\n if (Kind == OMPC_schedule) {\n } else if (Kind == OMPC_dist_schedule) {\n } else if (Kind == OMPC_defaultmap) {\n } else if (Kind == OMPC_order) {\n } else if (Kind == OMPC_device) {\n } else if (Kind == OMPC_grainsize) {\n if (getLangOpts().OpenMP >= 51) {\n if (NextToken().is(tok::colon)) {\n } else {\n if (Modifier == OMPC_GRAINSIZE_strict) {\n Diag(Tok, diag::err_modifier_expected_colon) << \"strict\";"},{"clang/lib/Parse/ParseOpenMP.cpp",3374,"/// Parsing of OpenMP clauses with single expressions and some additional\n/// argument like \'schedule\' or \'dist_schedule\'.\n///\n/// schedule-clause:\n/// \'schedule\' \'(\' [ modifier [ \',\' modifier ] \':\' ] kind [\',\' expression ]\n/// \')\'\n///\n/// if-clause:\n/// \'if\' \'(\' [ directive-name-modifier \':\' ] expression \')\'\n///\n/// defaultmap:\n/// \'defaultmap\' \'(\' modifier [ \':\' kind ] \')\'\n///\n/// device-clause:\n/// \'device\' \'(\' [ device-modifier \':\' ] expression \')\'\n///\nOMPClause *Parser::ParseOpenMPSingleExprWithArgClause(OpenMPDirectiveKind DKind, OpenMPClauseKind Kind, bool ParseOnly) {\n if (Kind == OMPC_schedule) {\n } else if (Kind == OMPC_dist_schedule) {\n } else if (Kind == OMPC_defaultmap) {\n } else if (Kind == OMPC_order) {\n } else if (Kind == OMPC_device) {\n } else if (Kind == OMPC_grainsize) {\n } else if (Kind == OMPC_num_tasks) {\n if (getLangOpts().OpenMP >= 51) {\n if (NextToken().is(tok::colon)) {\n } else {\n if (Modifier == OMPC_NUMTASKS_strict) {\n Diag(Tok, diag::err_modifier_expected_colon) << \"strict\";"}} | |||
}, | }, | ||
[" | ["err_module_build_disabled"]={ | ||
[ | [j]="module \'A\' is needed but has not been provided, and implicit use of module files is disabled", | ||
[ | [c]=I, | ||
[ | [d]=H, | ||
[ | [e]="module \'%0\' is needed but has not been provided, and implicit use of module files is disabled", | ||
[ | [f]=J, | ||
[ | [g]="module \'(.*?)\' is needed but has not been provided, and implicit use of module files is disabled", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={"d2e8b04d6111",1424432681,"Add -fno-implicit-modules."}, | ||
[k]={{db,1496,"ModuleLoadResult CompilerInstance::findOrCompileModuleAndReadAST(StringRef ModuleName, SourceLocation ImportLoc, SourceLocation ModuleNameLoc, bool IsInclusionDirective) {\n if (ModuleFilename.empty()) {\n getDiagnostics().Report(ModuleNameLoc, diag::err_module_build_disabled) << ModuleName;"}} | |||
}, | }, | ||
[" | ["err_module_build_requires_fmodules"]={ | ||
[ | [j]="module compilation requires \'-fmodules\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="module compilation requires \'-fmodules\'", | ||
[ | [f]=n, | ||
[ | [g]="module compilation requires \'\\-fmodules\'", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"1f2bd35b247b",1499375156,"Reject attempts to build a module without -fmodules, rather than silently doing weird things."}, | ||
[k]={{"clang/lib/Frontend/FrontendActions.cpp",177,"bool GenerateModuleFromModuleMapAction::BeginSourceFileAction(CompilerInstance &CI) {\n if (!CI.getLangOpts().Modules) {\n CI.getDiagnostics().Report(diag::err_module_build_requires_fmodules);"}} | |||
}, | }, | ||
[" | ["err_module_build_shadowed_submodule"]={ | ||
[ | [j]="build a shadowed submodule \'A\'", | ||
[ | [c]=I, | ||
[ | [d]=H, | ||
[ | [e]="build a shadowed submodule \'%0\'", | ||
[ | [f]=J, | ||
[ | [g]="build a shadowed submodule \'(.*?)\'", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={"b6ec4a33fb2b",1515032260,"[Modules] Allow modules specified by -fmodule-map-file to shadow implicitly found ones"}, | ||
[k]={{rb,2317,"#endif\n // Determine if we\'re switching to building a new submodule, and which one.\n // This does not apply for C++20 modules header units.\n if (SM && !SM->isHeaderUnit()) {\n if (SM->getTopLevelModule()->ShadowingModule) {\n Diag(SM->DefinitionLoc, diag::err_module_build_shadowed_submodule) << SM->getFullModuleName();"}} | |||
}, | }, | ||
[" | ["err_module_cannot_create_includes"]={ | ||
[ | [j]="cannot create includes file for module A: B", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot create includes file for module %0: %1", | ||
[ | [f]=n, | ||
[ | [g]="cannot create includes file for module (.*?)\\: (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"723928c7dcc7",1394503367,"If a module map is found in a relative -I path, convert the filenames within it"}, | ||
[k]={{qb,495,"/// Compute the input buffer that should be used to build the specified module.\nstatic std::unique_ptr<llvm::MemoryBuffer> getInputBufferForModule(CompilerInstance &CI, Module *M) {\n if (Err) {\n CI.getDiagnostics().Report(diag::err_module_cannot_create_includes) << M->getFullModuleName() << Err.message();"}} | |||
}, | }, | ||
[" | ["err_module_cycle"]={ | ||
[ | [j]="cyclic dependency in module \'A\': B", | ||
[ | [c]=I, | ||
[ | [d]=H, | ||
[ | [e]="cyclic dependency in module \'%0\': %1", | ||
[ | [f]=J, | ||
[ | [g]="cyclic dependency in module \'(.*?)\'\\: (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={"dff0e892db7c",1316119210,"Detect cyclic module dependencies in a manner that is rather more"}, | ||
[k]={{db,1585,"ModuleLoadResult CompilerInstance::findOrCompileModuleAndReadAST(StringRef ModuleName, SourceLocation ImportLoc, SourceLocation ModuleNameLoc, bool IsInclusionDirective) {\n if (Pos != PosEnd) {\n getDiagnostics().Report(ModuleNameLoc, diag::err_module_cycle) << ModuleName << CyclePath;"}} | |||
}, | }, | ||
[" | ["err_module_decl_in_header_unit"]={ | ||
[ | [j]="\'module\' declaration found while building header unit", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'module\' declaration found while building header unit", | ||
[ | [f]=n, | ||
[ | [g]="\'module\' declaration found while building header unit", | ||
[ | [h]=a, | ||
[ | [i]=D, | ||
[ | [b]={M,1625925174,N}, | ||
[k]={{X,205,"Sema::DeclGroupPtrTy Sema::ActOnModuleDecl(SourceLocation StartLoc, SourceLocation ModuleLoc, ModuleDeclKind MDK, ModuleIdPath Path, ModuleIdPath Partition, ModuleImportState &ImportState) {\n case LangOptions::CMK_HeaderUnit:\n Diag(ModuleLoc, diag::err_module_decl_in_header_unit);"}} | |||
}, | }, | ||
[" | ["err_module_decl_in_module_map_module"]={ | ||
[ | [j]="\'module\' declaration found while building module from module map", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'module\' declaration found while building module from module map", | ||
[ | [f]=n, | ||
[ | [g]="\'module\' declaration found while building module from module map", | ||
[ | [h]=a, | ||
[ | [i]=D, | ||
[ | [b]={"81328ac3a5b1",1492814358,"P0629R0: Switch to latest proposal for distinguishing module interface from implementation."}, | ||
[k]={{X,201,"Sema::DeclGroupPtrTy Sema::ActOnModuleDecl(SourceLocation StartLoc, SourceLocation ModuleLoc, ModuleDeclKind MDK, ModuleIdPath Path, ModuleIdPath Partition, ModuleImportState &ImportState) {\n case LangOptions::CMK_ModuleMap:\n Diag(ModuleLoc, diag::err_module_decl_in_module_map_module);"}} | |||
}, | }, | ||
[" | ["err_module_decl_not_at_start"]={ | ||
[ | [j]="module declaration must occur at the start of the translation unit", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="module declaration must occur at the start of the translation unit", | ||
[ | [f]=n, | ||
[ | [g]="module declaration must occur at the start of the translation unit", | ||
[ | [h]=a, | ||
[ | [i]=D, | ||
[ | [b]={"d652bdd05f1c",1555229219,"[c++20] Parsing support for module-declarations, import-declarations,"}, | ||
[k]={{X,226,"Sema::DeclGroupPtrTy Sema::ActOnModuleDecl(SourceLocation StartLoc, SourceLocation ModuleLoc, ModuleDeclKind MDK, ModuleIdPath Path, ModuleIdPath Partition, ModuleImportState &ImportState) {\n // In C++20, the module-declaration must be the first declaration if there\n // is no global module fragment.\n if (getLangOpts().CPlusPlusModules && !IsFirstDecl && !SeenGMF) {\n Diag(ModuleLoc, diag::err_module_decl_not_at_start);"}} | |||
}, | }, | ||
[" | ["err_module_declaration_missing"]={ | ||
[ | [j]="missing \'export module\' declaration in module interface unit", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="missing \'export module\' declaration in module interface unit", | ||
[ | [f]=n, | ||
[ | [g]="missing \'export module\' declaration in module interface unit", | ||
[ | [h]=a, | ||
[ | [i]=D, | ||
[ | [b]={"18057cb34c83",1507682216,"[Modules TS] Diagnose missing/duplicate module-declaration."}, | ||
[k]={{"clang/lib/Sema/Sema.cpp",1077,"/// ActOnEndOfTranslationUnit - This is called at the very end of the\n/// translation unit when EOF is reached and all but the top-level scope is\n/// popped.\nvoid Sema::ActOnEndOfTranslationUnit() {\n if (TUKind == TU_Module) {\n // If we are building a module interface unit, we need to have seen the\n // module declaration by now.\n if (getLangOpts().getCompilingModule() == LangOptions::CMK_ModuleInterface && !isCurrentModulePurview() && !DiagnosedMissingModuleDeclaration) {\n Diag(getSourceManager().getLocForStartOfFile(getSourceManager().getMainFileID()), diag::err_module_declaration_missing);"}} | |||
}, | }, | ||
[" | ["err_module_declaration_missing_after_global_module_introducer"]={ | ||
[ | [j]="missing \'module\' declaration at end of global module fragment introduced here", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="missing \'module\' declaration at end of global module fragment introduced here", | ||
[ | [f]=n, | ||
[ | [g]="missing \'module\' declaration at end of global module fragment introduced here", | ||
[ | [h]=a, | ||
[ | [i]=D, | ||
[ | [b]={"d652bdd05f1c",1555229219,"[c++20] Parsing support for module-declarations, import-declarations,"}, | ||
[k]={{"clang/lib/Sema/Sema.cpp",1068,"/// ActOnEndOfTranslationUnit - This is called at the very end of the\n/// translation unit when EOF is reached and all but the top-level scope is\n/// popped.\nvoid Sema::ActOnEndOfTranslationUnit() {\n if (!ModuleScopes.empty() && ModuleScopes.back().Module->Kind == Module::ExplicitGlobalModuleFragment) {\n Diag(ModuleScopes.back().BeginLoc, diag::err_module_declaration_missing_after_global_module_introducer);"}} | |||
}, | }, | ||
[" | ["err_module_different_modmap"]={ | ||
[ | [j]="module \'A\' ... additional module map \'B\'... used when the module was built", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="module \'%0\' %select{uses|does not use}1 additional module map \'%2\'%select{| not}1 used when the module was built", | ||
[ | [f]=n, | ||
[ | [g]="module \'(.*?)\' (?:uses|does not use) additional module map \'(.*?)\'(?:| not) used when the module was built", | ||
[ | [h]=a, | ||
[ | [i]=jb, | ||
[ | [b]={"4b8a9e951e09",1407861753,"Verify all the module map files for a pcm are the same on load"}, | ||
[k]={{bb,3597,"ASTReader::ASTReadResult ASTReader::ReadModuleMapFileBlock(RecordData &Record, ModuleFile &F, const ModuleFile *ImportedBy, unsigned ClientLoadCapabilities) {\n if (PP.getPreprocessorOpts().ModulesCheckRelocated && F.Kind == MK_ImplicitModule && ModuleMgr.begin()->Kind != MK_MainFile) {\n // Check any additional module map files (e.g. module.private.modulemap)\n // that are not in the pcm.\n if (auto *AdditionalModuleMaps = Map.getAdditionalModuleMapFiles(M)) {\n for (const FileEntry *ModMap : *AdditionalModuleMaps) {\n // Remove files that match\n // Note: SmallPtrSet::erase is really remove\n if (!AdditionalStoredMaps.erase(ModMap)) {\n if (!canRecoverFromOutOfDate(F.FileName, ClientLoadCapabilities))\n Diag(diag::err_module_different_modmap) << F.ModuleName << /*new*/ 0 << ModMap->getName();"},{bb,3607,"ASTReader::ASTReadResult ASTReader::ReadModuleMapFileBlock(RecordData &Record, ModuleFile &F, const ModuleFile *ImportedBy, unsigned ClientLoadCapabilities) {\n if (PP.getPreprocessorOpts().ModulesCheckRelocated && F.Kind == MK_ImplicitModule && ModuleMgr.begin()->Kind != MK_MainFile) {\n // Check any additional module map files that are in the pcm, but not\n // found in header search. Cases that match are already removed.\n for (const FileEntry *ModMap : AdditionalStoredMaps) {\n if (!canRecoverFromOutOfDate(F.FileName, ClientLoadCapabilities))\n Diag(diag::err_module_different_modmap) << F.ModuleName << /*not new*/ 1 << ModMap->getName();"}} | |||
}, | }, | ||
[" | ["err_module_expected_ident"]={ | ||
[ | [j]="expected a module name after \'...\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="expected a module name after \'%select{module|import}0\'", | ||
[ | [f]=n, | ||
[ | [g]="expected a module name after \'(?:module|import)\'", | ||
[ | [h]=a, | ||
[ | [i]=D, | ||
[ | [b]={"081425343b18",1314402967,"Introduce support for a simple module import declaration, which"}, | ||
[k]={{Q,2371,"/// Parse a C++ / Objective-C module name (both forms use the same\n/// grammar).\n///\n/// module-name:\n/// module-name-qualifier[opt] identifier\n/// module-name-qualifier:\n/// module-name-qualifier[opt] identifier \'.\'\nbool Parser::ParseModuleName(SourceLocation UseLoc, SmallVectorImpl<std::pair<IdentifierInfo *, SourceLocation>> &Path, bool IsImport) {\n // Parse the module path.\n while (true) {\n if (!Tok.is(tok::identifier)) {\n Diag(Tok, diag::err_module_expected_ident) << IsImport;"}} | |||
}, | }, | ||
[" | ["err_module_expected_semi"]={ | ||
[ | [j]="expected \';\' after module name", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="expected \';\' after module name", | ||
[ | [f]=n, | ||
[ | [g]="expected \';\' after module name", | ||
[ | [h]=a, | ||
[ | [i]=D, | ||
[ | [b]={"081425343b18",1314402967,"Introduce support for a simple module import declaration, which"}, | ||
[k]={{Q,2223,"/// Parse a declaration beginning with the \'module\' keyword or C++20\n/// context-sensitive keyword (optionally preceded by \'export\').\n///\n/// module-declaration: [C++20]\n/// \'export\'[opt] \'module\' module-name attribute-specifier-seq[opt] \';\'\n///\n/// global-module-fragment: [C++2a]\n/// \'module\' \';\' top-level-declaration-seq[opt]\n/// module-declaration: [C++2a]\n/// \'export\'[opt] \'module\' module-name module-partition[opt]\n/// attribute-specifier-seq[opt] \';\'\n/// private-module-fragment: [C++2a]\n/// \'module\' \':\' \'private\' \';\' top-level-declaration-seq[opt]\nParser::DeclGroupPtrTy Parser::ParseModuleDecl(Sema::ModuleImportState &ImportState) {\n ExpectAndConsumeSemi(diag::err_module_expected_semi);"},{Q,2329,"/// Parse a module import declaration. This is essentially the same for\n/// Objective-C and C++20 except for the leading \'@\' (in ObjC) and the\n/// trailing optional attributes (in C++).\n///\n/// [ObjC] @import declaration:\n/// \'@\' \'import\' module-name \';\'\n/// [ModTS] module-import-declaration:\n/// \'import\' module-name attribute-specifier-seq[opt] \';\'\n/// [C++20] module-import-declaration:\n/// \'export\'[opt] \'import\' module-name\n/// attribute-specifier-seq[opt] \';\'\n/// \'export\'[opt] \'import\' module-partition\n/// attribute-specifier-seq[opt] \';\'\n/// \'export\'[opt] \'import\' header-name\n/// attribute-specifier-seq[opt] \';\'\nDecl *Parser::ParseModuleImport(SourceLocation AtLoc, Sema::ModuleImportState &ImportState) {\n if (SeenError) {\n ExpectAndConsumeSemi(diag::err_module_expected_semi);"},{Q,2338,"/// Parse a module import declaration. This is essentially the same for\n/// Objective-C and C++20 except for the leading \'@\' (in ObjC) and the\n/// trailing optional attributes (in C++).\n///\n/// [ObjC] @import declaration:\n/// \'@\' \'import\' module-name \';\'\n/// [ModTS] module-import-declaration:\n/// \'import\' module-name attribute-specifier-seq[opt] \';\'\n/// [C++20] module-import-declaration:\n/// \'export\'[opt] \'import\' module-name\n/// attribute-specifier-seq[opt] \';\'\n/// \'export\'[opt] \'import\' module-partition\n/// attribute-specifier-seq[opt] \';\'\n/// \'export\'[opt] \'import\' header-name\n/// attribute-specifier-seq[opt] \';\'\nDecl *Parser::ParseModuleImport(SourceLocation AtLoc, Sema::ModuleImportState &ImportState) {\n ExpectAndConsumeSemi(diag::err_module_expected_semi);"}} | |||
}, | }, | ||
[" | ["err_module_file_conflict"]={ | ||
[ | [j]="module \'A\' is defined in both \'B\' and \'C\'", | ||
[ | [c]=I, | ||
[ | [d]=H, | ||
[ | [e]="module \'%0\' is defined in both \'%1\' and \'%2\'", | ||
[ | [f]=J, | ||
[ | [g]="module \'(.*?)\' is defined in both \'(.*?)\' and \'(.*?)\'", | ||
[ | [h]=a, | ||
[ | [i]=jb, | ||
[ | [b]={"8a114ab557f0",1360190431,"Detect when we end up trying to load conflicting module files."}, | ||
[k]={{bb,3549,"ASTReader::ASTReadResult ASTReader::ReadModuleMapFileBlock(RecordData &Record, ModuleFile &F, const ModuleFile *ImportedBy, unsigned ClientLoadCapabilities) {\n if (PP.getPreprocessorOpts().ModulesCheckRelocated && F.Kind == MK_ImplicitModule && ModuleMgr.begin()->Kind != MK_MainFile) {\n // Don\'t emit module relocation error if we have -fno-validate-pch\n if (!bool(PP.getPreprocessorOpts().DisablePCHOrModuleValidation & DisableValidationForModuleKind::Module) && !ModMap) {\n if (!canRecoverFromOutOfDate(F.FileName, ClientLoadCapabilities)) {\n if (auto ASTFE = M ? M->getASTFile() : std::nullopt) {\n Diag(diag::err_module_file_conflict) << F.ModuleName << F.FileName << ASTFE->getName();"},{bb,5039,"llvm::Error ASTReader::ReadSubmoduleBlock(ModuleFile &F, unsigned ClientLoadCapabilities) {\n while (true) {\n case SUBMODULE_DEFINITION: {\n if (!ParentModule) {\n if (const FileEntry *CurFile = CurrentModule->getASTFile()) {\n // Don\'t emit module relocation error if we have -fno-validate-pch\n if (!bool(PP.getPreprocessorOpts().DisablePCHOrModuleValidation & DisableValidationForModuleKind::Module) && CurFile != F.File) {\n auto ConflictError = PartialDiagnostic(diag::err_module_file_conflict, ContextObj->DiagAllocator) << CurrentModule->getTopLevelModuleName() << CurFile->getName() << F.File->getName();"}} | |||
}, | }, | ||
[" | ["err_module_file_missing_top_level_submodule"]={ | ||
[ | [j]="module file \'A\' is missing its top-level submodule", | ||
[ | [c]=I, | ||
[ | [d]=H, | ||
[ | [e]="module file \'%0\' is missing its top-level submodule", | ||
[ | [f]=J, | ||
[ | [g]="module file \'(.*?)\' is missing its top\\-level submodule", | ||
[ | [h]=a, | ||
[ | [i]=jb, | ||
[ | [b]={"83dcb34b6bf4",1573420492,"clang/Modules: Error if ReadASTBlock does not find the main module"}, | ||
[k]={{bb,3848,"ASTReader::ASTReadResult ASTReader::ReadAST(StringRef FileName, ModuleKind Type, SourceLocation ImportLoc, unsigned ClientLoadCapabilities, SmallVectorImpl<ImportedSubmodule> *Imported) {\n // Load the AST blocks of all of the modules that we loaded. We can still\n // hit errors parsing the ASTs at this point.\n for (ImportedModule &M : Loaded) {\n // The AST block should always have a definition for the main module.\n if (F.isModule() && !F.DidReadTopLevelSubmodule) {\n Error(diag::err_module_file_missing_top_level_submodule, F.FileName);"}} | |||
}, | }, | ||
[" | ["err_module_file_not_module"]={ | ||
[ | [j]="AST file \'A\' was not built as a module", | ||
[ | [c]=I, | ||
[ | [d]=H, | ||
[ | [e]="AST file \'%0\' was not built as a module", | ||
[ | [f]=J, | ||
[ | [g]="AST file \'(.*?)\' was not built as a module", | ||
[ | [h]=a, | ||
[ | [i]=jb, | ||
[ | [b]={"e842a4745222",1413943546,"[modules] Initial support for explicitly loading .pcm files."}, | ||
[k]={{bb,4160,"ASTReader::ASTReadResult ASTReader::ReadASTCore(StringRef FileName, ModuleKind Type, SourceLocation ImportLoc, ModuleFile *ImportedBy, SmallVectorImpl<ImportedModule> &Loaded, off_t ExpectedSize, time_t ExpectedModTime, ASTFileSignature ExpectedSignature, unsigned ClientLoadCapabilities) {\n while (true) {\n case CONTROL_BLOCK_ID:\n case Success:\n // Check that we didn\'t try to load a non-module AST file as a module.\n //\n // FIXME: Should we also perform the converse check? Loading a module as\n // a PCH file sort of works, but it\'s a bit wonky.\n if ((Type == MK_ImplicitModule || Type == MK_ExplicitModule || Type == MK_PrebuiltModule) && F.ModuleName.empty()) {\n if (Result != OutOfDate || (ClientLoadCapabilities & ARR_OutOfDate) == 0)\n Diag(diag::err_module_file_not_module) << FileName;"}} | |||
}, | }, | ||
[" | ["err_module_format_unhandled"]={ | ||
[ | [j]="no handler registered for module format \'A\'", | ||
[ | [c]=I, | ||
[ | [d]=H, | ||
[ | [e]="no handler registered for module format \'%0\'", | ||
[ | [f]=J, | ||
[ | [g]="no handler registered for module format \'(.*?)\'", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"fb2398d0c434",1437095994,"Make the clang module container format selectable from the command line."} | ||
}, | }, | ||
[" | ["err_module_fragment_exported"]={ | ||
[ | [j]="... module fragment cannot be exported", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%select{global|private}0 module fragment cannot be exported", | ||
[ | [f]=n, | ||
[ | [g]="(?:global|private) module fragment cannot be exported", | ||
[ | [h]=a, | ||
[ | [i]=D, | ||
[ | [b]={"d652bdd05f1c",1555229219,"[c++20] Parsing support for module-declarations, import-declarations,"}, | ||
[k]={{Q,2182,"/// Parse a declaration beginning with the \'module\' keyword or C++20\n/// context-sensitive keyword (optionally preceded by \'export\').\n///\n/// module-declaration: [C++20]\n/// \'export\'[opt] \'module\' module-name attribute-specifier-seq[opt] \';\'\n///\n/// global-module-fragment: [C++2a]\n/// \'module\' \';\' top-level-declaration-seq[opt]\n/// module-declaration: [C++2a]\n/// \'export\'[opt] \'module\' module-name module-partition[opt]\n/// attribute-specifier-seq[opt] \';\'\n/// private-module-fragment: [C++2a]\n/// \'module\' \':\' \'private\' \';\' top-level-declaration-seq[opt]\nParser::DeclGroupPtrTy Parser::ParseModuleDecl(Sema::ModuleImportState &ImportState) {\n // Parse a global-module-fragment, if present.\n if (getLangOpts().CPlusPlusModules && Tok.is(tok::semi)) {\n if (MDK == Sema::ModuleDeclKind::Interface) {\n Diag(StartLoc, diag::err_module_fragment_exported) << /*global*/ 0 << FixItHint::CreateRemoval(StartLoc);"},{Q,2191,"/// Parse a declaration beginning with the \'module\' keyword or C++20\n/// context-sensitive keyword (optionally preceded by \'export\').\n///\n/// module-declaration: [C++20]\n/// \'export\'[opt] \'module\' module-name attribute-specifier-seq[opt] \';\'\n///\n/// global-module-fragment: [C++2a]\n/// \'module\' \';\' top-level-declaration-seq[opt]\n/// module-declaration: [C++2a]\n/// \'export\'[opt] \'module\' module-name module-partition[opt]\n/// attribute-specifier-seq[opt] \';\'\n/// private-module-fragment: [C++2a]\n/// \'module\' \':\' \'private\' \';\' top-level-declaration-seq[opt]\nParser::DeclGroupPtrTy Parser::ParseModuleDecl(Sema::ModuleImportState &ImportState) {\n // Parse a private-module-fragment, if present.\n if (getLangOpts().CPlusPlusModules && Tok.is(tok::colon) && NextToken().is(tok::kw_private)) {\n if (MDK == Sema::ModuleDeclKind::Interface) {\n Diag(StartLoc, diag::err_module_fragment_exported) << /*private*/ 1 << FixItHint::CreateRemoval(StartLoc);"}} | |||
}, | }, | ||
[" | ["err_module_header_file_not_found"]={ | ||
[ | [j]="module header file \'A\' not found", | ||
[ | [c]=I, | ||
[ | [d]=H, | ||
[ | [e]="module header file \'%0\' not found", | ||
[ | [f]=J, | ||
[ | [g]="module header file \'(.*?)\' not found", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"d6509cf21dd0",1536974475,"[modules] Frontend support for building a header module from a list of"}, | ||
[k]={{qb,731,"bool FrontendAction::BeginSourceFile(CompilerInstance &CI, const FrontendInputFile &RealInput) {\n // Handle C++20 header units.\n // Here, the user has the option to specify that the header name should be\n // looked up in the pre-processor search paths (and the main filename as\n // passed by the driver might therefore be incomplete until that look-up).\n if (CI.getLangOpts().CPlusPlusModules && Input.getKind().isHeaderUnit() && !Input.getKind().isPreprocessed()) {\n if (Kind.getHeaderUnitKind() != InputKind::HeaderUnit_Abs) {\n if (!FE) {\n CI.getDiagnostics().Report(diag::err_module_header_file_not_found) << FileName;"}} | |||
}, | }, | ||
[" | ["err_module_header_missing"]={ | ||
[ | [j]="...header \'A\' not found", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%select{|umbrella }0header \'%1\' not found", | ||
[ | [f]=n, | ||
[ | [g]="(?:|umbrella )header \'(.*?)\' not found", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={"0761a8a085f4",1387276297,"Modules: Don\'t warn upon missing headers while reading the module map."}, | ||
[k]={{qb,310,"/// Collect the set of header includes needed to construct the given\n/// module and update the TopHeaders file set of the module.\n///\n/// \\param Module The module we\'re collecting includes from.\n///\n/// \\param Includes Will be augmented with the set of \\#includes or \\#imports\n/// needed to load all of the named headers.\nstatic std::error_code collectModuleHeaderIncludes(const LangOptions &LangOpts, FileManager &FileMgr, DiagnosticsEngine &Diag, ModuleMap &ModMap, clang::Module *Module, SmallVectorImpl<char> &Includes) {\n // If any headers are missing, we can\'t build this module. In most cases,\n // diagnostics for this should have already been produced; we only get here\n // if explicit stat information was provided.\n // FIXME: If the name resolves to a file with different stat information,\n // produce a better diagnostic.\n if (!Module->MissingHeaders.empty()) {\n Diag.Report(MissingHeader.FileNameLoc, diag::err_module_header_missing) << MissingHeader.IsUmbrella << MissingHeader.FileName;"},{rb,1760,"bool Preprocessor::checkModuleIsAvailable(const LangOptions &LangOpts, const TargetInfo &TargetInfo, DiagnosticsEngine &Diags, Module *M) {\n if (MissingHeader.FileNameLoc.isValid()) {\n Diags.Report(MissingHeader.FileNameLoc, diag::err_module_header_missing) << MissingHeader.IsUmbrella << MissingHeader.FileName;"}} | |||
}, | }, | ||
[" | ["err_module_import_in_implementation"]={ | ||
[ | [j]="@import of module \'A\' in implementation of \'B\'; use #import", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="@import of module \'%0\' in implementation of \'%1\'; use #import", | ||
[ | [f]=n, | ||
[ | [g]="@import of module \'(.*?)\' in implementation of \'(.*?)\'; use \\#import", | ||
[ | [h]=a, | ||
[ | [i]=D, | ||
[ | [b]={"b537a3a65180",1406129423,"Add stopgap option -fmodule-implementation-of <name>"}, | ||
[k]={{X,506,"DeclResult Sema::ActOnModuleImport(SourceLocation StartLoc, SourceLocation ExportLoc, SourceLocation ImportLoc, Module *Mod, ModuleIdPath Path) {\n // FIXME: we should support importing a submodule within a different submodule\n // of the same top-level module. Until we do, make it an error rather than\n // silently ignoring the import.\n // FIXME: Should we warn on a redundant import of the current module?\n if (Mod->isForBuilding(getLangOpts())) {\n Diag(ImportLoc, getLangOpts().isCompilingModule() ? diag::err_module_self_import : diag::err_module_import_in_implementation) << Mod->getFullModuleName() << getLangOpts().CurrentModule;"}} | |||
}, | }, | ||
[" | ["err_module_import_not_at_top_level_fatal"]={ | ||
[ | [j]="import of module \'A\' appears within B", | ||
[ | [c]=I, | ||
[ | [d]=H, | ||
[ | [e]="import of module \'%0\' appears within %1", | ||
[ | [f]=J, | ||
[ | [g]="import of module \'(.*?)\' appears within (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=D, | ||
[ | [b]={"c4e04a296403",1442640777,"[Modules] More descriptive diagnostics for misplaced import directive"}, | ||
[k]={{X,43,"static void checkModuleImportContext(Sema &S, Module *M, SourceLocation ImportLoc, DeclContext *DC, bool FromInclude = false) {\n if (!isa<TranslationUnitDecl>(DC)) {\n S.Diag(ImportLoc, (FromInclude && S.isModuleVisible(M)) ? diag::ext_module_import_not_at_top_level_noop : diag::err_module_import_not_at_top_level_fatal) << M->getFullModuleName() << DC;"}} | |||
}, | }, | ||
[" | ["err_module_interface_implementation_mismatch"]={ | ||
[ | [j]="missing \'export\' specifier in module declaration while building module interface", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="missing \'export\' specifier in module declaration while building module interface", | ||
[ | [f]=n, | ||
[ | [g]="missing \'export\' specifier in module declaration while building module interface", | ||
[ | [h]=a, | ||
[ | [i]=D, | ||
[ | [b]={"964cc53d9a74",1471570986,"C++ Modules TS: support parsing the \'module\' declaration (including extensions"}, | ||
[k]={{X,196,"Sema::DeclGroupPtrTy Sema::ActOnModuleDecl(SourceLocation StartLoc, SourceLocation ModuleLoc, ModuleDeclKind MDK, ModuleIdPath Path, ModuleIdPath Partition, ModuleImportState &ImportState) {\n case LangOptions::CMK_ModuleInterface:\n Diag(ModuleLoc, diag::err_module_interface_implementation_mismatch) << FixItHint::CreateInsertion(ModuleLoc, \"export \");"}} | |||
}, | }, | ||
[" | ["err_module_interface_requires_cpp_modules"]={ | ||
[ | [j]="module interface compilation requires \'-std=c++20\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="module interface compilation requires \'-std=c++20\'", | ||
[ | [f]=n, | ||
[ | [g]="module interface compilation requires \'\\-std\\=c\\+\\+20\'", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"b1b580e047ad",1555240297,"[c++20] Enable driver and frontend support for building and using"}, | ||
[k]={{"clang/lib/Frontend/FrontendActions.cpp",213,"bool GenerateHeaderUnitAction::BeginSourceFileAction(CompilerInstance &CI) {\n if (!CI.getLangOpts().CPlusPlusModules) {\n CI.getDiagnostics().Report(diag::err_module_interface_requires_cpp_modules);"}} | |||
}, | }, | ||
[" | ["err_module_map_not_found"]={ | ||
[ | [j]="module map file \'A\' not found", | ||
[ | [c]=I, | ||
[ | [d]=H, | ||
[ | [e]="module map file \'%0\' not found", | ||
[ | [f]=J, | ||
[ | [g]="module map file \'(.*?)\' not found", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"2b20cb87f5b6",1321402146,"Add support for building a module from a module map to the -cc1"}, | ||
[k]={{qb,465,"static Module *prepareToBuildModule(CompilerInstance &CI, StringRef ModuleMapFilename) {\n if (!OriginalModuleMapName.empty()) {\n if (!OriginalModuleMap) {\n CI.getDiagnostics().Report(diag::err_module_map_not_found) << OriginalModuleMapName;"},{qb,807,"bool FrontendAction::BeginSourceFile(CompilerInstance &CI, const FrontendInputFile &RealInput) {\n // If we were asked to load any module map files, do so now.\n for (const auto &Filename : CI.getFrontendOpts().ModuleMapFiles) {\n if (auto File = CI.getFileManager().getOptionalFileRef(Filename))\n else\n CI.getDiagnostics().Report(diag::err_module_map_not_found) << Filename;"}} | |||
}, | }, | ||
[" | ["err_module_no_size_mtime_for_header"]={ | ||
[ | [j]="cannot emit module A: ... must be explicitly specified for missing header file \"B\"", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot emit module %0: %select{size|mtime}1 must be explicitly specified for missing header file \"%2\"", | ||
[ | [f]=n, | ||
[ | [g]="cannot emit module (.*?)\\: (?:size|mtime) must be explicitly specified for missing header file \"(.*?)\"", | ||
[ | [h]=a, | ||
[ | [i]="AST Serialization Issue", | ||
[ | [b]={"040e12662a67",1496368539,"Support lazy stat\'ing of files referenced by module maps."}, | ||
[k]={{"clang/lib/Serialization/ASTWriter.cpp",1740,"/// Write the header search block for the list of files that\n///\n/// \\param HS The header search structure to save.\nvoid ASTWriter::WriteHeaderSearch(const HeaderSearch &HS) {\n if (WritingModule) {\n while (!Worklist.empty()) {\n // If the file didn\'t exist, we can still create a module if we were given\n // enough information in the module map.\n for (const auto &U : M->MissingHeaders) {\n // Check that we were given enough information to build a module\n // without this file existing on disk.\n if (!U.Size || (!U.ModTime && IncludeTimestamps)) {\n PP->Diag(U.FileNameLoc, diag::err_module_no_size_mtime_for_header) << WritingModule->getFullModuleName() << U.Size.has_value() << U.FileName;"}} | |||
}, | }, | ||
[" | ["err_module_not_built"]={ | ||
[ | [j]="could not build module \'A\'", | ||
[ | [c]=I, | ||
[ | [d]=H, | ||
[ | [e]="could not build module \'%0\'", | ||
[ | [f]=J, | ||
[ | [g]="could not build module \'(.*?)\'", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={"faeb1d465862",1315870284,"When an import statement fails to find a module in the module cache,"}, | ||
[k]={{db,1146,"/// Read the AST right after compiling the module.\nstatic bool readASTAfterCompileModule(CompilerInstance &ImportingInstance, SourceLocation ImportLoc, SourceLocation ModuleNameLoc, Module *Module, StringRef ModuleFileName, bool *OutOfDate) {\n // The ASTReader didn\'t diagnose the error, so conservatively report it.\n if (ReadResult == ASTReader::Missing || !Diags.hasErrorOccurred())\n Diags.Report(ModuleNameLoc, diag::err_module_not_built) << Module->Name << SourceRange(ImportLoc, ModuleNameLoc);"},{db,1155,"/// Compile a module in a separate compiler instance and read the AST,\n/// returning true if the module compiles without errors.\nstatic bool compileModuleAndReadASTImpl(CompilerInstance &ImportingInstance, SourceLocation ImportLoc, SourceLocation ModuleNameLoc, Module *Module, StringRef ModuleFileName) {\n if (!compileModule(ImportingInstance, ModuleNameLoc, Module, ModuleFileName)) {\n ImportingInstance.getDiagnostics().Report(ModuleNameLoc, diag::err_module_not_built) << Module->Name << SourceRange(ImportLoc, ModuleNameLoc);"},{db,1592,"ModuleLoadResult CompilerInstance::findOrCompileModuleAndReadAST(StringRef ModuleName, SourceLocation ImportLoc, SourceLocation ModuleNameLoc, bool IsInclusionDirective) {\n // Check whether we have already attempted to build this module (but\n // failed).\n if (getPreprocessorOpts().FailedModules && getPreprocessorOpts().FailedModules->hasAlreadyFailed(ModuleName)) {\n getDiagnostics().Report(ModuleNameLoc, diag::err_module_not_built) << ModuleName << SourceRange(ImportLoc, ModuleNameLoc);"}} | |||
}, | }, | ||
[" | ["err_module_not_defined"]={ | ||
[ | [j]="definition of module \'A\' is not available; use -fmodule-file= to specify path to precompiled module interface", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="definition of module \'%0\' is not available; use -fmodule-file= to specify path to precompiled module interface", | ||
[ | [f]=n, | ||
[ | [g]="definition of module \'(.*?)\' is not available; use \\-fmodule\\-file\\= to specify path to precompiled module interface", | ||
[ | [h]=a, | ||
[ | [i]=D, | ||
[ | [b]={"d97d35e1500d",1507674927,"[Modules TS] Diagnose attempts to enter module implementation units without the module interface bei..."}, | ||
[k]={{X,312,"Sema::DeclGroupPtrTy Sema::ActOnModuleDecl(SourceLocation StartLoc, SourceLocation ModuleLoc, ModuleDeclKind MDK, ModuleIdPath Path, ModuleIdPath Partition, ModuleImportState &ImportState) {\n case ModuleDeclKind::Implementation: {\n if (!Interface) {\n Diag(ModuleLoc, diag::err_module_not_defined) << ModuleName;"}} | |||
}, | }, | ||
[" | ["err_module_not_found"]={ | ||
[ | [j]="module \'A\' not found", | ||
[ | [c]=I, | ||
[ | [d]=H, | ||
[ | [e]="module \'%0\' not found", | ||
[ | [f]=J, | ||
[ | [g]="module \'(.*?)\' not found", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={"dd8a2fe0be34",1314827541,"Switch the \"no module found\" default-fatal warning to a default-fatal error."}, | ||
[k]={{db,1486,"ModuleLoadResult CompilerInstance::findOrCompileModuleAndReadAST(StringRef ModuleName, SourceLocation ImportLoc, SourceLocation ModuleNameLoc, bool IsInclusionDirective) {\n if (Source == MS_ModuleNotFound) {\n getDiagnostics().Report(ModuleNameLoc, diag::err_module_not_found) << ModuleName << SourceRange(ImportLoc, ModuleNameLoc);"}} | |||
}, | }, | ||
[" | ["err_module_odr_violation_definition_data"]={ | ||
[ | [j]=ab, | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%q0 has different definitions in different modules; first difference is %select{definition in module \'%2\'|defined here}1 found %select{%4 base %plural{1:class|:classes}4|%4 virtual base %plural{1:class|:classes}4|%ordinal4 base class with type %5|%ordinal4 %select{non-virtual|virtual}5 base class %6|%ordinal4 base class %5 with %select{public|protected|private|no}6 access specifier}3", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) has different definitions in different modules; first difference is (?:definition in module \'(.*?)\'|defined here) found (?:(.*?) base (?:class|classes)|(.*?) virtual base (?:class|classes)|(.*?) base class with type (.*?)|(.*?) (?:non\\-virtual|virtual) base class (.*?)|(.*?) base class (.*?) with (?:public|protected|private|no) access specifier)", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"e13eabe7d339",1506737957,"[ODRHash] Add base classes to hashing CXXRecordDecl."}, | ||
[k]={{P,557,"bool ODRDiagsEmitter::diagnoseMismatch(const CXXRecordDecl *FirstRecord, const CXXRecordDecl *SecondRecord, const struct CXXRecordDecl::DefinitionData *SecondDD) const {\n // Diagnostics from DefinitionData are emitted here.\n if (FirstDD != SecondDD) {\n auto DiagBaseError = [FirstRecord, &FirstModule, this](SourceLocation Loc, SourceRange Range, ODRDefinitionDataDifference DiffType) { return Diag(Loc, diag::err_module_odr_violation_definition_data) << FirstRecord << FirstModule.empty() << FirstModule << Range << DiffType; };"}} | |||
}, | }, | ||
[" | ["err_module_odr_violation_different_definitions"]={ | ||
[ | [j]="A has different definitions in different modules; ...", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%q0 has different definitions in different modules; %select{definition in module \'%2\' is here|defined here}1", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) has different definitions in different modules; (?:definition in module \'(.*?)\' is here|defined here)", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"cd45dbc5f24c",1397879310,"When a module completes the definition of a class template specialization imported from another modu..."}, | ||
[k]={{P,497,"void ODRDiagsEmitter::diagnoseSubMismatchUnexpected(DiffResult &DR, const NamedDecl *FirstRecord, StringRef FirstModule, const NamedDecl *SecondRecord, StringRef SecondModule) const {\n Diag(FirstRecord->getLocation(), diag::err_module_odr_violation_different_definitions) << FirstRecord << FirstModule.empty() << FirstModule;"}} | |||
}, | }, | ||
[" | ["err_module_odr_violation_different_instantiations"]={ | ||
[ | [j]="instantiation of A is different in different modules", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="instantiation of %q0 is different in different modules", | ||
[ | [f]=n, | ||
[ | [g]="instantiation of (.*?) is different in different modules", | ||
[ | [h]=a, | ||
[ | [i]=jb, | ||
[ | [b]={"cd45dbc5f24c",1397879310,"When a module completes the definition of a class template specialization imported from another modu..."}, | ||
[k]={{bb,8706,"void ASTReader::diagnoseOdrViolations() {\n // Issue any pending ODR-failure diagnostics.\n for (auto &Merge : OdrMergeFailures) {\n if (!Diagnosed) {\n Diag(Merge.first->getLocation(), diag::err_module_odr_violation_different_instantiations) << Merge.first;"}} | |||
}, | }, | ||
[" | ["err_module_odr_violation_enum"]={ | ||
[ | [j]="A has different definitions in different modules; ... first difference is ...", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%q0 has different definitions in different modules; %select{definition in module \'%2\'|defined here}1 first difference is %select{enum that is %select{not scoped|scoped}4|enum scoped with keyword %select{struct|class}4|enum %select{without|with}4 specified type|enum with specified type %4|enum with %4 element%s4|%ordinal4 element has name %5|%ordinal4 element %5 %select{has|does not have}6 an initializer|%ordinal4 element %5 has an initializer|}3", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) has different definitions in different modules; (?:definition in module \'(.*?)\'|defined here) first difference is (?:enum that is (?:not scoped|scoped)|enum scoped with keyword (?:struct|class)|enum (?:without|with) specified type|enum with specified type (.*?)|enum with (.*?) element(.*?)|(.*?) element has name (.*?)|(.*?) element (.*?) (?:has|does not have) an initializer|(.*?) element (.*?) has an initializer|)", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"ab4d730f14d1",1532559125,"[ODRHash] Support hashing enums."}, | ||
[k]={{P,1374,"bool ODRDiagsEmitter::diagnoseMismatch(const EnumDecl *FirstEnum, const EnumDecl *SecondEnum) const {\n auto DiagError = [FirstEnum, &FirstModule, this](const auto *DiagAnchor, ODREnumDifference DiffType) { return Diag(DiagAnchor->getLocation(), diag::err_module_odr_violation_enum) << FirstEnum << FirstModule.empty() << FirstModule << DiagAnchor->getSourceRange() << DiffType; };"}} | |||
}, | }, | ||
[" | ["err_module_odr_violation_field"]={ | ||
[ | [j]=ab, | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%q0 has different definitions in different modules; first difference is %select{definition in module \'%2\'|defined here}1 found %select{field %4|field %4 with type %5|%select{non-|}5bitfield %4|bitfield %4 with one width expression|%select{non-|}5mutable field %4|field %4 with %select{no|an}5 initializer|field %4 with an initializer}3", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) has different definitions in different modules; first difference is (?:definition in module \'(.*?)\'|defined here) found (?:field (.*?)|field (.*?) with type (.*?)|(?:non\\-|)bitfield (.*?)|bitfield (.*?) with one width expression|(?:non\\-|)mutable field (.*?)|field (.*?) with (?:no|an) initializer|field (.*?) with an initializer)", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={wb,1643408541,zb}, | ||
[k]={{P,134,"bool ODRDiagsEmitter::diagnoseSubMismatchField(const NamedDecl *FirstRecord, StringRef FirstModule, StringRef SecondModule, const FieldDecl *FirstField, const FieldDecl *SecondField) const {\n auto DiagError = [FirstRecord, FirstField, FirstModule, this](ODRFieldDifference DiffType) { return Diag(FirstField->getLocation(), diag::err_module_odr_violation_field) << FirstRecord << FirstModule.empty() << FirstModule << FirstField->getSourceRange() << DiffType; };"}} | |||
}, | }, | ||
[" | ["err_module_odr_violation_function"]={ | ||
[ | [j]="A has different definitions in different modules; ... first difference is ...", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%q0 has different definitions in different modules; %select{definition in module \'%2\'|defined here}1 first difference is %select{return type is %4|%ordinal4 parameter with name %5|%ordinal4 parameter with type %5%select{| decayed from %7}6|%ordinal4 parameter with%select{out|}5 a default argument|%ordinal4 parameter with a default argument|function body}3", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) has different definitions in different modules; (?:definition in module \'(.*?)\'|defined here) first difference is (?:return type is (.*?)|(.*?) parameter with name (.*?)|(.*?) parameter with type (.*?)(?:| decayed from (.*?))|(.*?) parameter with(?:out|) a default argument|(.*?) parameter with a default argument|function body)", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"e81caeb3147f",1512782980,"[ODRHash] Support ODR violation detection in functions."}, | ||
[k]={{P,1289,"bool ODRDiagsEmitter::diagnoseMismatch(const FunctionDecl *FirstFunction, const FunctionDecl *SecondFunction) const {\n auto DiagError = [FirstFunction, &FirstModule, this](SourceLocation Loc, SourceRange Range, ODRFunctionDifference DiffType) { return Diag(Loc, diag::err_module_odr_violation_function) << FirstFunction << FirstModule.empty() << FirstModule << Range << DiffType; };"}} | |||
}, | }, | ||
[" | ["err_module_odr_violation_method_params"]={ | ||
[ | [j]=ab, | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%q0 has different definitions in different modules; first difference is %select{definition in module \'%2\'|defined here}1 found %select{%select{method %5|constructor|destructor}4 that has %6 parameter%s6|%select{method %5|constructor|destructor}4 with %ordinal6 parameter of type %7%select{| decayed from %9}8|%select{method %5|constructor|destructor}4 with %ordinal6 parameter named %7}3", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) has different definitions in different modules; first difference is (?:definition in module \'(.*?)\'|defined here) found (?:(?:method (.*?)|constructor|destructor) that has (.*?) parameter(.*?)|(?:method (.*?)|constructor|destructor) with (.*?) parameter of type (.*?)(?:| decayed from (.*?))|(?:method (.*?)|constructor|destructor) with (.*?) parameter named (.*?))", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={wb,1643408541,zb}, | ||
[k]={{P,74,"template <typename MethodT> static bool diagnoseSubMismatchMethodParameters(DiagnosticsEngine &Diags, const NamedDecl *FirstContainer, StringRef FirstModule, StringRef SecondModule, const MethodT *FirstMethod, const MethodT *SecondMethod) {\n auto DiagError = [&Diags, &GetDiagMethodType, FirstContainer, FirstModule, FirstMethod](ODRMethodParametersDifference DiffType) {\n return Diags.Report(FirstMethod->getLocation(), diag::err_module_odr_violation_method_params) << FirstContainer << FirstModule.empty() << FirstModule << FirstMethod->getSourceRange() << DiffType << FirstMethodType << FirstName;"}} | |||
}, | }, | ||
[" | ["err_module_odr_violation_mismatch_decl"]={ | ||
[ | [j]=ab, | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%q0 has different definitions in different modules; first difference is %select{definition in module \'%2\'|defined here}1 found %select{end of class|public access specifier|private access specifier|protected access specifier|static assert|field|method|type alias|typedef|data member|friend declaration|function template|method|instance variable|property}3", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) has different definitions in different modules; first difference is (?:definition in module \'(.*?)\'|defined here) found (?:end of class|public access specifier|private access specifier|protected access specifier|static assert|field|method|type alias|typedef|data member|friend declaration|function template|method|instance variable|property)", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"fa3d93a148d4",1485827055,"Add better ODR checking for modules."}, | ||
[k]={{P,529,"void ODRDiagsEmitter::diagnoseSubMismatchDifferentDeclKinds(DiffResult &DR, const NamedDecl *FirstRecord, StringRef FirstModule, const NamedDecl *SecondRecord, StringRef SecondModule) const {\n Diag(FirstDiagInfo.first, diag::err_module_odr_violation_mismatch_decl) << FirstRecord << FirstModule.empty() << FirstModule << FirstDiagInfo.second << DR.FirstDiffType;"}} | |||
}, | }, | ||
[" | ["err_module_odr_violation_mismatch_decl_unknown"]={ | ||
[ | [j]="A ... has different definitions in different modules; first difference is this ...", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%q0 %select{with definition in module \'%2\'|defined here}1 has different definitions in different modules; first difference is this %select{||||static assert|field|method|type alias|typedef|data member|friend declaration|function template|method|instance variable|property|unexpected decl}3", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) (?:with definition in module \'(.*?)\'|defined here) has different definitions in different modules; first difference is this (?:||||static assert|field|method|type alias|typedef|data member|friend declaration|function template|method|instance variable|property|unexpected decl)", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"708859a71326",1496883381,"[ODRHash] Change the fall-back diagnostic error."}, | ||
[k]={{P,1187,"bool ODRDiagsEmitter::diagnoseMismatch(const CXXRecordDecl *FirstRecord, const CXXRecordDecl *SecondRecord, const struct CXXRecordDecl::DefinitionData *SecondDD) const {\n Diag(FirstDecl->getLocation(), diag::err_module_odr_violation_mismatch_decl_unknown) << FirstRecord << FirstModule.empty() << FirstModule << FirstDiffType << FirstDecl->getSourceRange();"},{P,1267,"bool ODRDiagsEmitter::diagnoseMismatch(const RecordDecl *FirstRecord, const RecordDecl *SecondRecord) const {\n Diag(FirstDecl->getLocation(), diag::err_module_odr_violation_mismatch_decl_unknown) << FirstRecord << FirstModule.empty() << FirstModule << FirstDiffType << FirstDecl->getSourceRange();"},{P,1597,"bool ODRDiagsEmitter::diagnoseMismatch(const ObjCInterfaceDecl *FirstID, const ObjCInterfaceDecl *SecondID, const struct ObjCInterfaceDecl::DefinitionData *SecondDD) const {\n Diag(FirstDecl->getLocation(), diag::err_module_odr_violation_mismatch_decl_unknown) << FirstID << FirstModule.empty() << FirstModule << FirstDiffType << FirstDecl->getSourceRange();"},{P,1683,"bool ODRDiagsEmitter::diagnoseMismatch(const ObjCProtocolDecl *FirstProtocol, const ObjCProtocolDecl *SecondProtocol, const struct ObjCProtocolDecl::DefinitionData *SecondDD) const {\n Diag(FirstDecl->getLocation(), diag::err_module_odr_violation_mismatch_decl_unknown) << FirstProtocol << FirstModule.empty() << FirstModule << FirstDiffType << FirstDecl->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_module_odr_violation_missing_decl"]={ | ||
[ | [j]="A from module \'B\' is not present in definition of C...", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%q0 from module \'%1\' is not present in definition of %q2%select{ in module \'%4\'| provided earlier}3", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) from module \'(.*?)\' is not present in definition of (.*?)(?: in module \'(.*?)\'| provided earlier)", | ||
[ | [h]=a, | ||
[ | [i]=jb, | ||
[ | [b]={"2b9e3e396a6f",1382076318,"Basic ODR checking for C++ modules:"}, | ||
[k]={{bb,8665,"void ASTReader::diagnoseOdrViolations() {\n // For each declaration from a merged context, check that the canonical\n // definition of that context also contains a declaration of the same\n // entity.\n //\n // Caution: this loop does things that might invalidate iterators into\n // PendingOdrMergeChecks. Don\'t turn this into a range-based for loop!\n while (!PendingOdrMergeChecks.empty()) {\n if (!Found) {\n Diag(D->getLocation(), diag::err_module_odr_violation_missing_decl) << D << ODRDiagsEmitter::getOwningModuleNameForDiagnostic(D) << CanonDef << CanonDefModule.empty() << CanonDefModule;"}} | |||
}, | }, | ||
[" | ["err_module_odr_violation_objc_interface"]={ | ||
[ | [j]=ab, | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%0 has different definitions in different modules; first difference is %select{definition in module \'%2\'|defined here}1 found %select{%select{no super class|super class with type %5}4|instance variable \'%4\' access control is %select{|@private|@protected|@public|@package}5}3", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) has different definitions in different modules; first difference is (?:definition in module \'(.*?)\'|defined here) found (?:(?:no super class|super class with type (.*?))|instance variable \'(.*?)\' access control is (?:|@private|@protected|@public|@package))", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"f27afedc6c86",1662843785,"[Clang] Implement P2738R1 - constexpr cast from void*"}, | ||
[k]={{P,1477,"bool ODRDiagsEmitter::diagnoseMismatch(const ObjCInterfaceDecl *FirstID, const ObjCInterfaceDecl *SecondID, const struct ObjCInterfaceDecl::DefinitionData *SecondDD) const {\n auto DiagError = [FirstID, &FirstModule, this](SourceLocation Loc, SourceRange Range, ODRInterfaceDifference DiffType) { return Diag(Loc, diag::err_module_odr_violation_objc_interface) << FirstID << FirstModule.empty() << FirstModule << Range << DiffType; };"}} | |||
}, | }, | ||
[" | ["err_module_odr_violation_objc_method"]={ | ||
[ | [j]=ab, | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%q0 has different definitions in different modules; first difference is %select{definition in module \'%2\'|defined here}1 found %select{method %4 with return type %5|%select{class|instance}5 method %4|%select{no|\'required\'|\'optional\'}4 method control|method %4 with %select{no designated initializer|designated initializer}5|%select{regular|direct}5 method %4|method %4}3", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) has different definitions in different modules; first difference is (?:definition in module \'(.*?)\'|defined here) found (?:method (.*?) with return type (.*?)|(?:class|instance) method (.*?)|(?:no|\'required\'|\'optional\') method control|method (.*?) with (?:no designated initializer|designated initializer)|(?:regular|direct) method (.*?)|method (.*?))", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={wb,1643408541,zb}, | ||
[k]={{P,336,"bool ODRDiagsEmitter::diagnoseSubMismatchObjCMethod(const NamedDecl *FirstObjCContainer, StringRef FirstModule, StringRef SecondModule, const ObjCMethodDecl *FirstMethod, const ObjCMethodDecl *SecondMethod) const {\n auto DiagError = [FirstObjCContainer, FirstModule, FirstMethod, this](ODRMethodDifference DiffType) { return Diag(FirstMethod->getLocation(), diag::err_module_odr_violation_objc_method) << FirstObjCContainer << FirstModule.empty() << FirstModule << FirstMethod->getSourceRange() << DiffType; };"}} | |||
}, | }, | ||
[" | ["err_module_odr_violation_objc_property"]={ | ||
[ | [j]=ab, | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%q0 has different definitions in different modules; first difference is %select{definition in module \'%2\'|defined here}1 found %select{property %4|property %4 with type %5|%select{no|\'required\'|\'optional\'}4 property control|property %4 with %select{default |}6\'%select{none|readonly|getter|assign|readwrite|retain|copy|nonatomic|setter|atomic|weak|strong|unsafe_unretained|nullability|null_resettable|class|direct}5\' attribute}3", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) has different definitions in different modules; first difference is (?:definition in module \'(.*?)\'|defined here) found (?:property (.*?)|property (.*?) with type (.*?)|(?:no|\'required\'|\'optional\') property control|property (.*?) with (?:default |)\'(?:none|readonly|getter|assign|readwrite|retain|copy|nonatomic|setter|atomic|weak|strong|unsafe_unretained|nullability|null_resettable|class|direct)\' attribute)", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"dcb71b5e1d13",1657144706,"[ODRHash] Hash `ObjCPropertyDecl` and diagnose discovered mismatches."}, | ||
[k]={{P,390,"bool ODRDiagsEmitter::diagnoseSubMismatchObjCProperty(const NamedDecl *FirstObjCContainer, StringRef FirstModule, StringRef SecondModule, const ObjCPropertyDecl *FirstProp, const ObjCPropertyDecl *SecondProp) const {\n auto DiagError = [FirstObjCContainer, FirstModule, FirstProp, this](SourceLocation Loc, ODRPropertyDifference DiffType) { return Diag(Loc, diag::err_module_odr_violation_objc_property) << FirstObjCContainer << FirstModule.empty() << FirstModule << FirstProp->getSourceRange() << DiffType; };"}} | |||
}, | }, | ||
[" | ["err_module_odr_violation_record"]={ | ||
[ | [j]=ab, | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%q0 has different definitions in different modules; first difference is %select{definition in module \'%2\'|defined here}1 found %select{static assert with condition|static assert with message|static assert with %select{|no }4message|%select{method %5|constructor|destructor}4|%select{method %5|constructor|destructor}4 is %select{not deleted|deleted}6|%select{method %5|constructor|destructor}4 is %select{not defaulted|defaulted}6|%select{method %5|constructor|destructor}4 is %select{|pure }6%select{not virtual|virtual}7|%select{method %5|constructor|destructor}4 is %select{not static|static}6|%select{method %5|constructor|destructor}4 is %select{not volatile|volatile}6|%select{method %5|constructor|destructor}4 is %select{not const|const}6|%select{method %5|constructor|destructor}4 is %select{not inline|inline}6|%select{method %5|constructor|destructor}4 with %ordinal6 parameter with%select{out|}7 a default argument|%select{method %5|constructor|destructor}4 with %ordinal6 parameter with a default argument|%select{method %5|constructor|destructor}4 with %select{no |}6template arguments|%select{method %5|constructor|destructor}4 with %6 template argument%s6|%select{method %5|constructor|destructor}4 with %6 for %ordinal7 template argument|%select{method %5|constructor|destructor}4 with %select{no body|body}6|%select{method %5|constructor|destructor}4 with body|friend %select{class|function}4|friend %4|friend function %4|function template %4 with %5 template parameter%s5|function template %4 with %ordinal5 template parameter being a %select{type|non-type|template}6 template parameter|function template %4 with %ordinal5 template parameter %select{with no name|named %7}6|function template %4 with %ordinal5 template parameter with %select{no |}6default argument|function template %4 with %ordinal5 template parameter with default argument %6|function template %4 with %ordinal5 template parameter with one type|function template %4 with %ordinal5 template parameter %select{not |}6being a template parameter pack|}3", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) has different definitions in different modules; first difference is (?:definition in module \'(.*?)\'|defined here) found (?:static assert with condition|static assert with message|static assert with (?:|no )message|(?:method (.*?)|constructor|destructor)|(?:method (.*?)|constructor|destructor) is (?:not deleted|deleted)|(?:method (.*?)|constructor|destructor) is (?:not defaulted|defaulted)|(?:method (.*?)|constructor|destructor) is (?:|pure )(?:not virtual|virtual)|(?:method (.*?)|constructor|destructor) is (?:not static|static)|(?:method (.*?)|constructor|destructor) is (?:not volatile|volatile)|(?:method (.*?)|constructor|destructor) is (?:not const|const)|(?:method (.*?)|constructor|destructor) is (?:not inline|inline)|(?:method (.*?)|constructor|destructor) with (.*?) parameter with(?:out|) a default argument|(?:method (.*?)|constructor|destructor) with (.*?) parameter with a default argument|(?:method (.*?)|constructor|destructor) with (?:no |)template arguments|(?:method (.*?)|constructor|destructor) with (.*?) template argument(.*?)|(?:method (.*?)|constructor|destructor) with (.*?) for (.*?) template argument|(?:method (.*?)|constructor|destructor) with (?:no body|body)|(?:method (.*?)|constructor|destructor) with body|friend (?:class|function)|friend (.*?)|friend function (.*?)|function template (.*?) with (.*?) template parameter(.*?)|function template (.*?) with (.*?) template parameter being a (?:type|non\\-type|template) template parameter|function template (.*?) with (.*?) template parameter (?:with no name|named (.*?))|function template (.*?) with (.*?) template parameter with (?:no |)default argument|function template (.*?) with (.*?) template parameter with default argument (.*?)|function template (.*?) with (.*?) template parameter with one type|function template (.*?) with (.*?) template parameter (?:not |)being a template parameter pack|)", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={wb,1643408541,zb}, | ||
[k]={{P,727,"bool ODRDiagsEmitter::diagnoseMismatch(const CXXRecordDecl *FirstRecord, const CXXRecordDecl *SecondRecord, const struct CXXRecordDecl::DefinitionData *SecondDD) const {\n auto DiagError = [FirstRecord, &FirstModule, this](SourceLocation Loc, SourceRange Range, ODRCXXRecordDifference DiffType) { return Diag(Loc, diag::err_module_odr_violation_record) << FirstRecord << FirstModule.empty() << FirstModule << Range << DiffType; };"}} | |||
}, | }, | ||
[" | ["err_module_odr_violation_referenced_protocols"]={ | ||
[ | [j]=ab, | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%q0 has different definitions in different modules; first difference is %select{definition in module \'%2\'|defined here}1 found %select{%4 referenced %plural{1:protocol|:protocols}4|%ordinal4 referenced protocol with name %5}3", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) has different definitions in different modules; first difference is (?:definition in module \'(.*?)\'|defined here) found (?:(.*?) referenced (?:protocol|protocols)|(.*?) referenced protocol with name (.*?))", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={wb,1643408541,zb}, | ||
[k]={{P,294,"bool ODRDiagsEmitter::diagnoseSubMismatchProtocols(const ObjCProtocolList &FirstProtocols, const ObjCContainerDecl *FirstContainer, StringRef FirstModule, const ObjCProtocolList &SecondProtocols, const ObjCContainerDecl *SecondContainer, StringRef SecondModule) const {\n auto DiagRefProtocolError = [FirstContainer, FirstModule, this](SourceLocation Loc, SourceRange Range, ODRReferencedProtocolDifference DiffType) { return Diag(Loc, diag::err_module_odr_violation_referenced_protocols) << FirstContainer << FirstModule.empty() << FirstModule << Range << DiffType; };"}} | |||
}, | }, | ||
[" | ["err_module_odr_violation_template_parameter"]={ | ||
[ | [j]=ab, | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%q0 has different definitions in different modules; first difference is %select{definition in module \'%2\'|defined here}1 found %select{unnamed template parameter|template parameter %5|template parameter with %select{no |}4default argument|template parameter with default argument}3", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) has different definitions in different modules; first difference is (?:definition in module \'(.*?)\'|defined here) found (?:unnamed template parameter|template parameter (.*?)|template parameter with (?:no |)default argument|template parameter with default argument)", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"498117bf11d8",1503456239,"[ODRHash] Diagnose differing template parameters."}, | ||
[k]={{P,659,"bool ODRDiagsEmitter::diagnoseMismatch(const CXXRecordDecl *FirstRecord, const CXXRecordDecl *SecondRecord, const struct CXXRecordDecl::DefinitionData *SecondDD) const {\n if (FirstTemplate && SecondTemplate) {\n for (auto Pair : llvm::zip(FirstTemplateParams, SecondTemplateParams)) {\n Diag(FirstDecl->getLocation(), diag::err_module_odr_violation_template_parameter) << FirstRecord << FirstModule.empty() << FirstModule << FirstDecl->getSourceRange() << ErrDiffType << hasFirstArg << FirstName;"}} | |||
}, | }, | ||
[" | ["err_module_odr_violation_typedef"]={ | ||
[ | [j]=ab, | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%q0 has different definitions in different modules; first difference is %select{definition in module \'%2\'|defined here}1 found %select{%select{typedef|type alias}4 name %5|%select{typedef|type alias}4 %5 with underlying type %6}3", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) has different definitions in different modules; first difference is (?:definition in module \'(.*?)\'|defined here) found (?:(?:typedef|type alias) name (.*?)|(?:typedef|type alias) (.*?) with underlying type (.*?))", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={wb,1643408541,zb}, | ||
[k]={{P,212,"bool ODRDiagsEmitter::diagnoseSubMismatchTypedef(const NamedDecl *FirstRecord, StringRef FirstModule, StringRef SecondModule, const TypedefNameDecl *FirstTD, const TypedefNameDecl *SecondTD, bool IsTypeAlias) const {\n auto DiagError = [FirstRecord, FirstTD, FirstModule, this](ODRTypedefDifference DiffType) { return Diag(FirstTD->getLocation(), diag::err_module_odr_violation_typedef) << FirstRecord << FirstModule.empty() << FirstModule << FirstTD->getSourceRange() << DiffType; };"}} | |||
}, | }, | ||
[" | ["err_module_odr_violation_variable"]={ | ||
[ | [j]=ab, | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%q0 has different definitions in different modules; first difference is %select{definition in module \'%2\'|defined here}1 found %select{data member with name %4|data member %4 with type %5|data member %4 with%select{out|}5 an initializer|data member %4 with an initializer|data member %4 %select{is constexpr|is not constexpr}5}3", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) has different definitions in different modules; first difference is (?:definition in module \'(.*?)\'|defined here) found (?:data member with name (.*?)|data member (.*?) with type (.*?)|data member (.*?) with(?:out|) an initializer|data member (.*?) with an initializer|data member (.*?) (?:is constexpr|is not constexpr))", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={wb,1643408541,zb}, | ||
[k]={{P,242,"bool ODRDiagsEmitter::diagnoseSubMismatchVar(const NamedDecl *FirstRecord, StringRef FirstModule, StringRef SecondModule, const VarDecl *FirstVD, const VarDecl *SecondVD) const {\n auto DiagError = [FirstRecord, FirstVD, FirstModule, this](ODRVarDifference DiffType) { return Diag(FirstVD->getLocation(), diag::err_module_odr_violation_variable) << FirstRecord << FirstModule.empty() << FirstModule << FirstVD->getSourceRange() << DiffType; };"}} | |||
}, | }, | ||
[" | ["err_module_prebuilt"]={ | ||
[ | [j]="error in loading module \'A\' from prebuilt module path", | ||
[ | [c]=I, | ||
[ | [d]=H, | ||
[ | [e]="error in loading module \'%0\' from prebuilt module path", | ||
[ | [f]=J, | ||
[ | [g]="error in loading module \'(.*?)\' from prebuilt module path", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={"11f2a477721c",1471542135,"Module: add -fprebuilt-module-path to support loading prebuilt modules."}, | ||
[k]={{db,1530,"ModuleLoadResult CompilerInstance::findOrCompileModuleAndReadAST(StringRef ModuleName, SourceLocation ImportLoc, SourceLocation ModuleNameLoc, bool IsInclusionDirective) {\n case ASTReader::Success: {\n getDiagnostics().Report(ModuleNameLoc, diag::err_module_prebuilt) << ModuleName;"}} | |||
}, | }, | ||
[" | ["err_module_private_local"]={ | ||
[ | [j]="... A cannot be declared __module_private__", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%select{local variable|parameter|typedef}0 %1 cannot be declared __module_private__", | ||
[ | [f]=n, | ||
[ | [g]="(?:local variable|parameter|typedef) (.*?) cannot be declared __module_private__", | ||
[ | [h]=a, | ||
[ | [i]=D, | ||
[ | [b]={"41866816ce5c",1315852658,"Diagnose attempt to mark function-local declarations as __module_private__."}, | ||
[k]={{p,6948,"NamedDecl *Sema::ActOnVariableDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamLists, bool &AddToScope, ArrayRef<BindingDecl *> Bindings) {\n if (D.getDeclSpec().isModulePrivateSpecified()) {\n if (IsVariableTemplateSpecialization)\n else if (IsMemberSpecialization)\n else if (NewVD->hasLocalStorage())\n Diag(NewVD->getLocation(), diag::err_module_private_local) << 0 << NewVD << SourceRange(D.getDeclSpec().getModulePrivateSpecLoc()) << FixItHint::CreateRemoval(D.getDeclSpec().getModulePrivateSpecLoc());"},{p,12938,"/// ActOnParamDeclarator - Called from Parser::ParseFunctionDeclarator()\n/// to introduce parameters into function prototype scope.\nDecl *Sema::ActOnParamDeclarator(Scope *S, Declarator &D) {\n if (D.getDeclSpec().isModulePrivateSpecified())\n Diag(New->getLocation(), diag::err_module_private_local) << 1 << New << SourceRange(D.getDeclSpec().getModulePrivateSpecLoc()) << FixItHint::CreateRemoval(D.getDeclSpec().getModulePrivateSpecLoc());"},{p,14344,"TypedefDecl *Sema::ParseTypedefDecl(Scope *S, Declarator &D, QualType T, TypeSourceInfo *TInfo) {\n if (D.getDeclSpec().isModulePrivateSpecified()) {\n if (CurContext->isFunctionOrMethod())\n Diag(NewTD->getLocation(), diag::err_module_private_local) << 2 << NewTD << SourceRange(D.getDeclSpec().getModulePrivateSpecLoc()) << FixItHint::CreateRemoval(D.getDeclSpec().getModulePrivateSpecLoc());"}} | |||
}, | }, | ||
[" | ["err_module_private_local_class"]={ | ||
[ | [j]="local ... cannot be declared __module_private__", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="local %select{struct|interface|union|class|enum}0 cannot be declared __module_private__", | ||
[ | [f]=n, | ||
[ | [g]="local (?:struct|interface|union|class|enum) cannot be declared __module_private__", | ||
[ | [h]=a, | ||
[ | [i]=D, | ||
[ | [b]={"41866816ce5c",1315852658,"Diagnose attempt to mark function-local declarations as __module_private__."}, | ||
[k]={{p,4675,"/// ParsedFreeStandingDeclSpec - This method is invoked when a declspec with\n/// no declarator (e.g. \"struct foo;\") is parsed. It also accepts template\n/// parameters to cope with template friend declarations.\nDecl *Sema::ParsedFreeStandingDeclSpec(Scope *S, AccessSpecifier AS, DeclSpec &DS, const ParsedAttributesView &DeclAttrs, MultiTemplateParamsArg TemplateParams, bool IsExplicitInstantiation, RecordDecl *&AnonRecord) {\n if (DS.isModulePrivateSpecified() && Tag && Tag->getDeclContext()->isFunctionOrMethod())\n Diag(DS.getModulePrivateSpecLoc(), diag::err_module_private_local_class) << Tag->getTagKind() << FixItHint::CreateRemoval(DS.getModulePrivateSpecLoc());"}} | |||
}, | }, | ||
[" | ["err_module_private_specialization"]={ | ||
[ | [j]="... specialization cannot be declared __module_private__", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%select{template|partial|member}0 specialization cannot be declared __module_private__", | ||
[ | [f]=n, | ||
[ | [g]="(?:template|partial|member) specialization cannot be declared __module_private__", | ||
[ | [h]=a, | ||
[ | [i]=D, | ||
[ | [b]={"3c7cd6a0c448",1315601618,"Specializations cannot be module-hidden. Diagnose attempts to do so."}, | ||
[k]={{p,6944,"NamedDecl *Sema::ActOnVariableDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamLists, bool &AddToScope, ArrayRef<BindingDecl *> Bindings) {\n if (D.getDeclSpec().isModulePrivateSpecified()) {\n if (IsVariableTemplateSpecialization)\n Diag(NewVD->getLocation(), diag::err_module_private_specialization) << (IsPartialSpecialization ? 1 : 0) << FixItHint::CreateRemoval(D.getDeclSpec().getModulePrivateSpecLoc());"},{p,6946,"NamedDecl *Sema::ActOnVariableDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamLists, bool &AddToScope, ArrayRef<BindingDecl *> Bindings) {\n if (D.getDeclSpec().isModulePrivateSpecified()) {\n if (IsVariableTemplateSpecialization)\n else if (IsMemberSpecialization)\n Diag(NewVD->getLocation(), diag::err_module_private_specialization) << 2 << FixItHint::CreateRemoval(D.getDeclSpec().getModulePrivateSpecLoc());"},{p,8754,"NamedDecl *Sema::ActOnFunctionDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamListsRef, bool &AddToScope) {\n if (getLangOpts().CPlusPlus) {\n // If __module_private__ was specified, mark the function accordingly.\n if (D.getDeclSpec().isModulePrivateSpecified()) {\n if (isFunctionTemplateSpecialization) {\n Diag(ModulePrivateLoc, diag::err_module_private_specialization) << 0 << FixItHint::CreateRemoval(ModulePrivateLoc);"},{p,15396,"CreateNewDecl:\n if (ModulePrivateLoc.isValid()) {\n if (isMemberSpecialization)\n Diag(New->getLocation(), diag::err_module_private_specialization) << 2 << FixItHint::CreateRemoval(ModulePrivateLoc);"},{K,7311,"DeclResult Sema::ActOnClassTemplateSpecialization(Scope *S, unsigned TagSpec, TagUseKind TUK, SourceLocation KWLoc, SourceLocation ModulePrivateLoc, CXXScopeSpec &SS, TemplateIdAnnotation &TemplateId, const ParsedAttributesView &Attr, MultiTemplateParamsArg TemplateParameterLists, SkipBodyInfo *SkipBody) {\n if (ModulePrivateLoc.isValid())\n Diag(Specialization->getLocation(), diag::err_module_private_specialization) << (isPartialSpecialization ? 1 : 0) << FixItHint::CreateRemoval(ModulePrivateLoc);"}} | |||
}, | }, | ||
[" | ["err_module_rebuild_finalized"]={ | ||
[ | [j]="cannot rebuild module \'A\' as it is already finalized", | ||
[ | [c]=I, | ||
[ | [d]=H, | ||
[ | [e]="cannot rebuild module \'%0\' as it is already finalized", | ||
[ | [f]=J, | ||
[ | [g]="cannot rebuild module \'(.*?)\' as it is already finalized", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={"ff13189c5d0d",1624436334,"[RISCV] Unify the arch string parsing logic to to RISCVISAInfo."}, | ||
[k]={{db,948,"/// Compile a module file for the given module, using the options\n/// provided by the importing compiler instance. Returns true if the module\n/// was built without errors.\nstatic bool compileModuleImpl(\n // Never compile a module that\'s already finalized - this would cause the\n // existing module to be freed, causing crashes if it is later referenced\n if (ImportingInstance.getModuleCache().isPCMFinal(ModuleFileName)) {\n ImportingInstance.getDiagnostics().Report(ImportLoc, diag::err_module_rebuild_finalized) << ModuleName;"}} | |||
}, | }, | ||
[" | ["err_module_redeclaration"]={ | ||
[ | [j]="translation unit contains multiple module declarations", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="translation unit contains multiple module declarations", | ||
[ | [f]=n, | ||
[ | [g]="translation unit contains multiple module declarations", | ||
[ | [h]=a, | ||
[ | [i]=D, | ||
[ | [b]={"18057cb34c83",1507682216,"[Modules TS] Diagnose missing/duplicate module-declaration."}, | ||
[k]={{X,216,"Sema::DeclGroupPtrTy Sema::ActOnModuleDecl(SourceLocation StartLoc, SourceLocation ModuleLoc, ModuleDeclKind MDK, ModuleIdPath Path, ModuleIdPath Partition, ModuleImportState &ImportState) {\n // Only one module-declaration is permitted per source file.\n if (isCurrentModulePurview()) {\n Diag(ModuleLoc, diag::err_module_redeclaration);"}} | |||
}, | }, | ||
[" | ["err_module_redefinition"]={ | ||
[ | [j]="redefinition of module \'A\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="redefinition of module \'%0\'", | ||
[ | [f]=n, | ||
[ | [g]="redefinition of module \'(.*?)\'", | ||
[ | [h]=a, | ||
[ | [i]=D, | ||
[ | [b]={"bbcc9f0462c1",1472170478,"C++ Modules TS: add frontend support for building pcm files from module"}, | ||
[k]={{X,278,"Sema::DeclGroupPtrTy Sema::ActOnModuleDecl(SourceLocation StartLoc, SourceLocation ModuleLoc, ModuleDeclKind MDK, ModuleIdPath Path, ModuleIdPath Partition, ModuleImportState &ImportState) {\n case ModuleDeclKind::PartitionInterface: {\n // We can\'t have parsed or imported a definition of this module or parsed a\n // module map defining it already.\n if (auto *M = Map.findModule(ModuleName)) {\n Diag(Path[0].second, diag::err_module_redefinition) << ModuleName;"}} | |||
}, | }, | ||
[" | ["err_module_self_import"]={ | ||
[ | [j]="import of module \'A\' appears within same top-level module \'B\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="import of module \'%0\' appears within same top-level module \'%1\'", | ||
[ | [f]=n, | ||
[ | [g]="import of module \'(.*?)\' appears within same top\\-level module \'(.*?)\'", | ||
[ | [h]=a, | ||
[ | [i]=D, | ||
[ | [b]={"527040e0c87a",1399267893,"Make module self-import an error"}, | ||
[k]={{X,506,"DeclResult Sema::ActOnModuleImport(SourceLocation StartLoc, SourceLocation ExportLoc, SourceLocation ImportLoc, Module *Mod, ModuleIdPath Path) {\n // FIXME: we should support importing a submodule within a different submodule\n // of the same top-level module. Until we do, make it an error rather than\n // silently ignoring the import.\n // FIXME: Should we warn on a redundant import of the current module?\n if (Mod->isForBuilding(getLangOpts())) {\n Diag(ImportLoc, getLangOpts().isCompilingModule() ? diag::err_module_self_import : diag::err_module_import_in_implementation) << Mod->getFullModuleName() << getLangOpts().CurrentModule;"}} | |||
}, | }, | ||
[" | ["err_module_self_import_cxx20"]={ | ||
[ | [j]="import of module \'A\' appears within its own ...", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="import of module \'%0\' appears within its own %select{interface|implementation}1", | ||
[ | [f]=n, | ||
[ | [g]="import of module \'(.*?)\' appears within its own (?:interface|implementation)", | ||
[ | [h]=a, | ||
[ | [i]=D, | ||
[ | [b]={Cb,1620118562,Eb}, | ||
[k]={{X,474,"DeclResult Sema::ActOnModuleImport(SourceLocation StartLoc, SourceLocation ExportLoc, SourceLocation ImportLoc, ModuleIdPath Path, bool IsPartition) {\n if (getLangOpts().CPlusPlusModules && isCurrentModulePurview() && getCurrentModule()->Name == ModuleName) {\n Diag(ImportLoc, diag::err_module_self_import_cxx20) << ModuleName << !ModuleScopes.back().ModuleInterface;"}} | |||
}, | }, | ||
[" | ["err_module_shadowed"]={ | ||
[ | [j]="import of shadowed module \'A\'", | ||
[ | [c]=I, | ||
[ | [d]=H, | ||
[ | [e]="import of shadowed module \'%0\'", | ||
[ | [f]=J, | ||
[ | [g]="import of shadowed module \'(.*?)\'", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={"b6ec4a33fb2b",1515032260,"[Modules] Allow modules specified by -fmodule-map-file to shadow implicitly found ones"}, | ||
[k]={{rb,1762,"bool Preprocessor::checkModuleIsAvailable(const LangOptions &LangOpts, const TargetInfo &TargetInfo, DiagnosticsEngine &Diags, Module *M) {\n if (MissingHeader.FileNameLoc.isValid()) {\n } else if (ShadowingModule) {\n Diags.Report(M->DefinitionLoc, diag::err_module_shadowed) << M->Name;"}} | |||
}, | }, | ||
[" | ["err_module_unable_to_hash_content"]={ | ||
[ | [j]="failed to hash content for \'A\' because memory buffer cannot be retrieved", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="failed to hash content for \'%0\' because memory buffer cannot be retrieved", | ||
[ | [f]=n, | ||
[ | [g]="failed to hash content for \'(.*?)\' because memory buffer cannot be retrieved", | ||
[ | [h]=a, | ||
[ | [i]="AST Serialization Issue", | ||
[ | [b]={"2a1386c81de5",1571094123,"[Modules][PCH] Hash input files content"}, | ||
[k]={{"clang/lib/Serialization/ASTWriter.cpp",1454,"void ASTWriter::WriteInputFiles(SourceManager &SourceMgr, HeaderSearchOptions &HSOpts) {\n for (unsigned I = 1, N = SourceMgr.local_sloc_entry_size(); I != N; ++I) {\n if (PP->getHeaderSearchInfo().getHeaderSearchOpts().ValidateASTInputFilesContent) {\n if (MemBuff)\n else\n PP->Diag(SourceLocation(), diag::err_module_unable_to_hash_content) << Entry.File.getName();"}} | |||
}, | }, | ||
[" | ["err_module_unavailable"]={ | ||
[ | [j]="module \'A\' ... feature \'B\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="module \'%0\' %select{is incompatible with|requires}1 feature \'%2\'", | ||
[ | [f]=n, | ||
[ | [g]="module \'(.*?)\' (?:is incompatible with|requires) feature \'(.*?)\'", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={"1fb5c3a63a88",1325304344,"Implement support for module requirements, which indicate the language"}, | ||
[k]={{rb,1767,"bool Preprocessor::checkModuleIsAvailable(const LangOptions &LangOpts, const TargetInfo &TargetInfo, DiagnosticsEngine &Diags, Module *M) {\n if (MissingHeader.FileNameLoc.isValid()) {\n } else if (ShadowingModule) {\n } else {\n Diags.Report(M->DefinitionLoc, diag::err_module_unavailable) << M->getFullModuleName() << Requirement.second << Requirement.first;"}} | |||
}, | }, | ||
[" | ["err_module_unimported_use"]={ | ||
[ | [j]="... of A must be imported from module \'B\' before it is required", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%select{declaration|definition|default argument|explicit specialization|partial specialization}0 of %1 must be imported from module \'%2\' before it is required", | ||
[ | [f]=n, | ||
[ | [g]="(?:declaration|definition|default argument|explicit specialization|partial specialization) of (.*?) must be imported from module \'(.*?)\' before it is required", | ||
[ | [h]=a, | ||
[ | [i]=D, | ||
[ | [b]={"35c1df5cb6da",1434572192,"[modules] Improve diagnostic for a template-id that\'s invalid because a default"}, | ||
[k]={{"clang/lib/Sema/SemaLookup.cpp",5206,"void Sema::diagnoseMissingImport(SourceLocation UseLoc, const NamedDecl *Decl, SourceLocation DeclLoc, ArrayRef<Module *> Modules, MissingImportKind MIK, bool Recover) {\n if (Modules.size() > 1) {\n } else {\n Diag(UseLoc, diag::err_module_unimported_use) << (int)MIK << Decl << Modules[0]->getFullModuleName();"}} | |||
}, | }, | ||
[" | ["err_module_unimported_use_header"]={ | ||
[ | [j]="...; ...A must be ... before it is used", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%select{missing \'#include\'|missing \'#include %3\'}2; %select{||default argument of |explicit specialization of |partial specialization of }0%1 must be %select{declared|defined|defined|declared|declared}0 before it is used", | ||
[ | [f]=n, | ||
[ | [g]="(?:missing \'\\#include\'|missing \'\\#include (.*?)\'); (?:||default argument of |explicit specialization of |partial specialization of )(.*?) must be (?:declared|defined|defined|declared|declared) before it is used", | ||
[ | [h]=a, | ||
[ | [i]=D, | ||
[ | [b]={"4eb8393c636b",1461794225,"[modules] When diagnosing a missing module import, suggest adding a #include if"}, | ||
[k]={{"clang/lib/Sema/SemaLookup.cpp",5181,"void Sema::diagnoseMissingImport(SourceLocation UseLoc, const NamedDecl *Decl, SourceLocation DeclLoc, ArrayRef<Module *> Modules, MissingImportKind MIK, bool Recover) {\n // If we have a #include we should suggest, or if all definition locations\n // were in global module fragments, don\'t suggest an import.\n if (!HeaderName.empty() || UniqueModules.empty()) {\n Diag(UseLoc, diag::err_module_unimported_use_header) << (int)MIK << Decl << !HeaderName.empty() << HeaderName;"}} | |||
}, | }, | ||
[" | ["err_module_unimported_use_multiple"]={ | ||
[ | [j]="... of A must be imported from one of the following modules before it is required:B", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%select{declaration|definition|default argument|explicit specialization|partial specialization}0 of %1 must be imported from one of the following modules before it is required:%2", | ||
[ | [f]=n, | ||
[ | [g]="(?:declaration|definition|default argument|explicit specialization|partial specialization) of (.*?) must be imported from one of the following modules before it is required\\:(.*?)", | ||
[ | [h]=a, | ||
[ | [i]=D, | ||
[ | [b]={"35c1df5cb6da",1434572192,"[modules] Improve diagnostic for a template-id that\'s invalid because a default"}, | ||
[k]={{"clang/lib/Sema/SemaLookup.cpp",5203,"void Sema::diagnoseMissingImport(SourceLocation UseLoc, const NamedDecl *Decl, SourceLocation DeclLoc, ArrayRef<Module *> Modules, MissingImportKind MIK, bool Recover) {\n if (Modules.size() > 1) {\n Diag(UseLoc, diag::err_module_unimported_use_multiple) << (int)MIK << Decl << ModuleList;"}} | |||
}, | }, | ||
[" | ["err_modules_embed_file_not_found"]={ | ||
[ | [j]="file \'A\' specified by \'-fmodules-embed-file=\' not found", | ||
[ | [c]=I, | ||
[ | [d]=H, | ||
[ | [e]="file \'%0\' specified by \'-fmodules-embed-file=\' not found", | ||
[ | [f]=J, | ||
[ | [g]="file \'(.*?)\' specified by \'\\-fmodules\\-embed\\-file\\=\' not found", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"fb1e7f7d1aca",1439528578,"[modules] Add an experimental -cc1 feature to embed the contents of an input"}, | ||
[k]={{qb,651,"bool FrontendAction::BeginSourceFile(CompilerInstance &CI, const FrontendInputFile &RealInput) {\n // Set up embedding for any specified files. Do this before we load any\n // source files, including the primary module map for the compilation.\n for (const auto &F : CI.getFrontendOpts().ModulesEmbedFiles) {\n if (auto FE = CI.getFileManager().getFile(F, /*openFile*/ true))\n else\n CI.getDiagnostics().Report(diag::err_modules_embed_file_not_found) << F;"}} | |||
}, | }, | ||
[" | ["err_ms___leave_not_in___try"]={ | ||
[ | [j]="\'__leave\' statement not in __try block", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'__leave\' statement not in __try block", | ||
[ | [f]=n, | ||
[ | [g]="\'__leave\' statement not in __try block", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"eb61d4d7c2fd",1404687199,"Sema: Check that __leave is contained in a __try block."}, | ||
[k]={{E,3996,"StmtResult Sema::ActOnSEHLeaveStmt(SourceLocation Loc, Scope *CurScope) {\n if (!SEHTryParent)\n return StmtError(Diag(Loc, diag::err_ms___leave_not_in___try));"}} | |||
}, | }, | ||
[" | ["err_ms_asm_bitfield_unsupported"]={ | ||
[ | [j]="an inline asm block cannot have an operand which is a bit-field", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="an inline asm block cannot have an operand which is a bit-field", | ||
[ | [f]=n, | ||
[ | [g]="an inline asm block cannot have an operand which is a bit\\-field", | ||
[ | [h]=a, | ||
[ | [i]=sb, | ||
[ | [b]={"0982db188b66",1665177226,"[Clang] reject bit-fields as instruction operands in Microsoft style inline asm blocks."}, | ||
[k]={{"clang/lib/Sema/SemaStmtAsm.cpp",814,"StmtResult Sema::ActOnMSAsmStmt(SourceLocation AsmLoc, SourceLocation LBraceLoc, ArrayRef<Token> AsmToks, StringRef AsmString, unsigned NumOutputs, unsigned NumInputs, ArrayRef<StringRef> Constraints, ArrayRef<StringRef> Clobbers, ArrayRef<Expr *> Exprs, SourceLocation EndLoc) {\n for (uint64_t I = 0; I < NumOutputs + NumInputs; ++I) {\n if (E->getType()->isBitIntType()) {\n } else if (E->refersToBitField()) {\n Diag(E->getBeginLoc(), diag::err_ms_asm_bitfield_unsupported) << E->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_ms_attributes_not_enabled"]={ | ||
[ | [j]="\'__declspec\' attributes are not enabled; use \'-fdeclspec\' or \'-fms-extensions\' to enable support for __declspec attributes", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'__declspec\' attributes are not enabled; use \'-fdeclspec\' or \'-fms-extensions\' to enable support for __declspec attributes", | ||
[ | [f]=n, | ||
[ | [g]="\'__declspec\' attributes are not enabled; use \'\\-fdeclspec\' or \'\\-fms\\-extensions\' to enable support for __declspec attributes", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={"52d0aaac139a",1487112440,"Improve diagnostic reporting when using __declspec without enabling __declspec as a keyword."}, | ||
[k]={{C,3304,"/// ParseDeclarationSpecifiers\n/// declaration-specifiers: [C99 6.7]\n/// storage-class-specifier declaration-specifiers[opt]\n/// type-specifier declaration-specifiers[opt]\n/// [C99] function-specifier declaration-specifiers[opt]\n/// [C11] alignment-specifier declaration-specifiers[opt]\n/// [GNU] attributes declaration-specifiers[opt]\n/// [Clang] \'__module_private__\' declaration-specifiers[opt]\n/// [ObjC1] \'__kindof\' declaration-specifiers[opt]\n///\n/// storage-class-specifier: [C99 6.7.1]\n/// \'typedef\'\n/// \'extern\'\n/// \'static\'\n/// \'auto\'\n/// \'register\'\n/// [C++] \'mutable\'\n/// [C++11] \'thread_local\'\n/// [C11] \'_Thread_local\'\n/// [GNU] \'__thread\'\n/// function-specifier: [C99 6.7.4]\n/// [C99] \'inline\'\n/// [C++] \'virtual\'\n/// [C++] \'explicit\'\n/// [OpenCL] \'__kernel\'\n/// \'friend\': [C++ dcl.friend]\n/// \'constexpr\': [C++0x dcl.constexpr]\nvoid Parser::ParseDeclarationSpecifiers(DeclSpec &DS, const ParsedTemplateInfo &TemplateInfo, AccessSpecifier AS, DeclSpecContext DSContext, LateParsedAttrList *LateAttrs, ImplicitTypenameContext AllowImplicitTypename) {\n while (true) {\n ParseIdentifier : {\n // If the token is an identifier named \"__declspec\" and Microsoft\n // extensions are not enabled, it is likely that there will be cascading\n // parse errors if this really is a __declspec attribute. Attempt to\n // recognize that scenario and recover gracefully.\n if (!getLangOpts().DeclSpecKeyword && Tok.is(tok::identifier) && Tok.getIdentifierInfo()->getName().equals(\"__declspec\")) {\n Diag(Loc, diag::err_ms_attributes_not_enabled);"}} | |||
}, | }, | ||
[" | ["err_ms_declspec_type"]={ | ||
[ | [j]="__declspec attributes must be an identifier or string literal", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="__declspec attributes must be an identifier or string literal", | ||
[ | [f]=n, | ||
[ | [g]="__declspec attributes must be an identifier or string literal", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={"38c9ad9e725c",1340113766,"Improves parsing and semantic analysis for MS __declspec attributes. This includes support for the ..."}, | ||
[k]={{C,707,"/// [MS] decl-specifier:\n/// __declspec ( extended-decl-modifier-seq )\n///\n/// [MS] extended-decl-modifier-seq:\n/// extended-decl-modifier[opt]\n/// extended-decl-modifier extended-decl-modifier-seq\nvoid Parser::ParseMicrosoftDeclSpecs(ParsedAttributes &Attrs) {\n while (Tok.is(tok::kw___declspec)) {\n // An empty declspec is perfectly legal and should not warn. Additionally,\n // you can specify multiple attributes per declspec.\n while (Tok.isNot(tok::r_paren)) {\n if (!IsString && Tok.getKind() != tok::identifier && Tok.getKind() != tok::kw_restrict) {\n Diag(Tok, diag::err_ms_declspec_type);"}} | |||
}, | }, | ||
[" | ["err_ms_property_duplicate_accessor"]={ | ||
[ | [j]="property declaration specifies \'A\' accessor twice", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="property declaration specifies \'%0\' accessor twice", | ||
[ | [f]=n, | ||
[ | [g]="property declaration specifies \'(.*?)\' accessor twice", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={nb,1366097310,ob}, | ||
[k]={{C,634,"bool Parser::ParseMicrosoftDeclSpecArgs(IdentifierInfo *AttrName, SourceLocation AttrNameLoc, ParsedAttributes &Attrs) {\n if (AttrName->getName() == \"property\") {\n // Parse the accessor specifications.\n while (true) {\n if (Kind == AK_Invalid) {\n } else if (AccessorNames[Kind] != nullptr) {\n Diag(KindLoc, diag::err_ms_property_duplicate_accessor) << KindStr;"}} | |||
}, | }, | ||
[" | ["err_ms_property_expected_accessor_name"]={ | ||
[ | [j]="expected name of accessor method", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="expected name of accessor method", | ||
[ | [f]=n, | ||
[ | [g]="expected name of accessor method", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={nb,1366097310,ob}, | ||
[k]={{C,626,"bool Parser::ParseMicrosoftDeclSpecArgs(IdentifierInfo *AttrName, SourceLocation AttrNameLoc, ParsedAttributes &Attrs) {\n if (AttrName->getName() == \"property\") {\n // Parse the accessor specifications.\n while (true) {\n // Expect the method name.\n if (!Tok.is(tok::identifier)) {\n Diag(Tok.getLocation(), diag::err_ms_property_expected_accessor_name);"}} | |||
}, | }, | ||
[" | ["err_ms_property_expected_comma_or_rparen"]={ | ||
[ | [j]="expected \',\' or \')\' at end of property accessor list", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="expected \',\' or \')\' at end of property accessor list", | ||
[ | [f]=n, | ||
[ | [g]="expected \',\' or \'\\)\' at end of property accessor list", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={nb,1366097310,ob}, | ||
[k]={{C,649,"bool Parser::ParseMicrosoftDeclSpecArgs(IdentifierInfo *AttrName, SourceLocation AttrNameLoc, ParsedAttributes &Attrs) {\n if (AttrName->getName() == \"property\") {\n next_property_accessor:\n Diag(Tok.getLocation(), diag::err_ms_property_expected_comma_or_rparen);"}} | |||
}, | }, | ||
[" | ["err_ms_property_expected_equal"]={ | ||
[ | [j]="expected \'=\' after \'A\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="expected \'=\' after \'%0\'", | ||
[ | [f]=n, | ||
[ | [g]="expected \'\\=\' after \'(.*?)\'", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={nb,1366097310,ob}, | ||
[k]={{C,620,"bool Parser::ParseMicrosoftDeclSpecArgs(IdentifierInfo *AttrName, SourceLocation AttrNameLoc, ParsedAttributes &Attrs) {\n if (AttrName->getName() == \"property\") {\n // Parse the accessor specifications.\n while (true) {\n // Consume the \'=\'.\n if (!TryConsumeToken(tok::equal)) {\n Diag(Tok.getLocation(), diag::err_ms_property_expected_equal) << KindStr;"}} | |||
}, | }, | ||
[" | ["err_ms_property_has_set_accessor"]={ | ||
[ | [j]="putter for property must be specified as \'put\', not \'set\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="putter for property must be specified as \'put\', not \'set\'", | ||
[ | [f]=n, | ||
[ | [g]="putter for property must be specified as \'put\', not \'set\'", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={nb,1366097310,ob}, | ||
[k]={{C,593,"bool Parser::ParseMicrosoftDeclSpecArgs(IdentifierInfo *AttrName, SourceLocation AttrNameLoc, ParsedAttributes &Attrs) {\n if (AttrName->getName() == \"property\") {\n // Parse the accessor specifications.\n while (true) {\n if (KindStr == \"get\") {\n } else if (KindStr == \"put\") {\n } else if (KindStr == \"set\") {\n Diag(KindLoc, diag::err_ms_property_has_set_accessor) << FixItHint::CreateReplacement(KindLoc, \"put\");"}} | |||
}, | }, | ||
[" | ["err_ms_property_initializer"]={ | ||
[ | [j]="property declaration cannot have a default member initializer", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="property declaration cannot have a default member initializer", | ||
[ | [f]=n, | ||
[ | [g]="property declaration cannot have a default member initializer", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={"87ff66ccc750",1418470456,"Parse: MS property members cannot have an in-class initializer"}, | ||
[k]={{R,2806,"/// ParseCXXMemberInitializer - Parse the brace-or-equal-initializer.\n/// Also detect and reject any attempted defaulted/deleted function definition.\n/// The location of the \'=\', if any, will be placed in EqualLoc.\n///\n/// This does not check for a pure-specifier; that\'s handled elsewhere.\n///\n/// brace-or-equal-initializer:\n/// \'=\' initializer-expression\n/// braced-init-list\n///\n/// initializer-clause:\n/// assignment-expression\n/// braced-init-list\n///\n/// defaulted/deleted function-definition:\n/// \'=\' \'default\'\n/// \'=\' \'delete\'\n///\n/// Prior to C++0x, the assignment-expression in an initializer-clause must\n/// be a constant-expression.\nExprResult Parser::ParseCXXMemberInitializer(Decl *D, bool IsFunction, SourceLocation &EqualLoc) {\n if (const auto *PD = dyn_cast_or_null<MSPropertyDecl>(D)) {\n Diag(Tok, diag::err_ms_property_initializer) << PD;"}} | |||
}, | }, | ||
[" | ["err_ms_property_missing_accessor_kind"]={ | ||
[ | [j]="missing \'get=\' or \'put=\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="missing \'get=\' or \'put=\'", | ||
[ | [f]=n, | ||
[ | [g]="missing \'get\\=\' or \'put\\=\'", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={nb,1366097310,ob}, | ||
[k]={{C,599,"bool Parser::ParseMicrosoftDeclSpecArgs(IdentifierInfo *AttrName, SourceLocation AttrNameLoc, ParsedAttributes &Attrs) {\n if (AttrName->getName() == \"property\") {\n // Parse the accessor specifications.\n while (true) {\n if (KindStr == \"get\") {\n } else if (KindStr == \"put\") {\n } else if (KindStr == \"set\") {\n } else if (NextToken().is(tok::comma) || NextToken().is(tok::r_paren)) {\n Diag(KindLoc, diag::err_ms_property_missing_accessor_kind);"}} | |||
}, | }, | ||
[" | ["err_ms_property_no_getter_or_putter"]={ | ||
[ | [j]="property does not specify a getter or a putter", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="property does not specify a getter or a putter", | ||
[ | [f]=n, | ||
[ | [g]="property does not specify a getter or a putter", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={nb,1366097310,ob}, | ||
[k]={{C,575,"bool Parser::ParseMicrosoftDeclSpecArgs(IdentifierInfo *AttrName, SourceLocation AttrNameLoc, ParsedAttributes &Attrs) {\n if (AttrName->getName() == \"property\") {\n // Parse the accessor specifications.\n while (true) {\n // Stop if this doesn\'t look like an accessor spec.\n if (!Tok.is(tok::identifier)) {\n // If the user wrote a completely empty list, use a special diagnostic.\n if (Tok.is(tok::r_paren) && !HasInvalidAccessor && AccessorNames[AK_Put] == nullptr && AccessorNames[AK_Get] == nullptr) {\n Diag(AttrNameLoc, diag::err_ms_property_no_getter_or_putter);"}} | |||
}, | }, | ||
[" | ["err_ms_property_unknown_accessor"]={ | ||
[ | [j]="expected \'get\' or \'put\' in property declaration", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="expected \'get\' or \'put\' in property declaration", | ||
[ | [f]=n, | ||
[ | [g]="expected \'get\' or \'put\' in property declaration", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={nb,1366097310,ob}, | ||
[k]={{C,579,"bool Parser::ParseMicrosoftDeclSpecArgs(IdentifierInfo *AttrName, SourceLocation AttrNameLoc, ParsedAttributes &Attrs) {\n if (AttrName->getName() == \"property\") {\n // Parse the accessor specifications.\n while (true) {\n // Stop if this doesn\'t look like an accessor spec.\n if (!Tok.is(tok::identifier)) {\n Diag(Tok.getLocation(), diag::err_ms_property_unknown_accessor);"},{C,606,"bool Parser::ParseMicrosoftDeclSpecArgs(IdentifierInfo *AttrName, SourceLocation AttrNameLoc, ParsedAttributes &Attrs) {\n if (AttrName->getName() == \"property\") {\n // Parse the accessor specifications.\n while (true) {\n if (KindStr == \"get\") {\n } else if (KindStr == \"put\") {\n } else if (KindStr == \"set\") {\n } else if (NextToken().is(tok::comma) || NextToken().is(tok::r_paren)) {\n } else {\n Diag(KindLoc, diag::err_ms_property_unknown_accessor);"}} | |||
}, | }, | ||
[" | ["err_ms_va_start_used_in_sysv_function"]={ | ||
[ | [j]="\'__builtin_ms_va_start\' used in System V ABI function", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'__builtin_ms_va_start\' used in System V ABI function", | ||
[ | [f]=n, | ||
[ | [g]="\'__builtin_ms_va_start\' used in System V ABI function", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"c7d5c94f78c7",1442523333,"Support __builtin_ms_va_list."}, | ||
[k]={{y,7562,"/// Check that the user is calling the appropriate va_start builtin for the\n/// target and calling convention.\nstatic bool checkVAStartABI(Sema &S, unsigned BuiltinID, Expr *Fn) {\n if (IsX64 || IsAArch64) {\n if (IsMSVAStart) {\n // Don\'t allow this in System V ABI functions.\n if (CC == CC_X86_64SysV || (!IsWindows && CC != CC_Win64))\n return S.Diag(Fn->getBeginLoc(), diag::err_ms_va_start_used_in_sysv_function);"}} | |||
}, | }, | ||
[" | ["err_msasm_unable_to_create_target"]={ | ||
[ | [j]="MS-style inline assembly is not available: A", | ||
[d]= | [c]=l, | ||
[f]= | [d]=m, | ||
[ | [e]="MS-style inline assembly is not available: %0", | ||
[b]= | [f]=n, | ||
[ | [g]="MS\\-style inline assembly is not available\\: (.*?)", | ||
[h]=a, | |||
[i]=sb, | |||
[b]={"45cf31f7d390",1383143368,"Recover instead of crashing on MS assembly when no target is loaded"}, | |||
[k]={{Db,491,"/// ParseMicrosoftAsmStatement. When -fms-extensions/-fasm-blocks is enabled,\n/// this routine is called to collect the tokens for an MS asm statement.\n///\n/// [MS] ms-asm-statement:\n/// ms-asm-block\n/// ms-asm-block ms-asm-statement\n///\n/// [MS] ms-asm-block:\n/// \'__asm\' ms-asm-line \'\\n\'\n/// \'__asm\' \'{\' ms-asm-instruction-block[opt] \'}\' \';\'[opt]\n///\n/// [MS] ms-asm-instruction-block\n/// ms-asm-line\n/// ms-asm-line \'\\n\' ms-asm-instruction-block\n///\nStmtResult Parser::ParseMicrosoftAsmStatement(SourceLocation AsmLoc) {\n if (!TheTriple.isX86()) {\n } else {\n if (!TheTarget)\n Diag(AsmLoc, diag::err_msasm_unable_to_create_target) << Error;"},{Db,517,"/// ParseMicrosoftAsmStatement. When -fms-extensions/-fasm-blocks is enabled,\n/// this routine is called to collect the tokens for an MS asm statement.\n///\n/// [MS] ms-asm-statement:\n/// ms-asm-block\n/// ms-asm-block ms-asm-statement\n///\n/// [MS] ms-asm-block:\n/// \'__asm\' ms-asm-line \'\\n\'\n/// \'__asm\' \'{\' ms-asm-instruction-block[opt] \'}\' \';\'[opt]\n///\n/// [MS] ms-asm-instruction-block\n/// ms-asm-line\n/// ms-asm-line \'\\n\' ms-asm-instruction-block\n///\nStmtResult Parser::ParseMicrosoftAsmStatement(SourceLocation AsmLoc) {\n if (!MRI) {\n Diag(AsmLoc, diag::err_msasm_unable_to_create_target) << \"target MC unavailable\";"},{Db,529,"/// ParseMicrosoftAsmStatement. When -fms-extensions/-fasm-blocks is enabled,\n/// this routine is called to collect the tokens for an MS asm statement.\n///\n/// [MS] ms-asm-statement:\n/// ms-asm-block\n/// ms-asm-block ms-asm-statement\n///\n/// [MS] ms-asm-block:\n/// \'__asm\' ms-asm-line \'\\n\'\n/// \'__asm\' \'{\' ms-asm-instruction-block[opt] \'}\' \';\'[opt]\n///\n/// [MS] ms-asm-instruction-block\n/// ms-asm-line\n/// ms-asm-line \'\\n\' ms-asm-instruction-block\n///\nStmtResult Parser::ParseMicrosoftAsmStatement(SourceLocation AsmLoc) {\n if (!MAI || !MII || !STI) {\n Diag(AsmLoc, diag::err_msasm_unable_to_create_target) << \"target MC unavailable\";"},{Db,549,"/// ParseMicrosoftAsmStatement. When -fms-extensions/-fasm-blocks is enabled,\n/// this routine is called to collect the tokens for an MS asm statement.\n///\n/// [MS] ms-asm-statement:\n/// ms-asm-block\n/// ms-asm-block ms-asm-statement\n///\n/// [MS] ms-asm-block:\n/// \'__asm\' ms-asm-line \'\\n\'\n/// \'__asm\' \'{\' ms-asm-instruction-block[opt] \'}\' \';\'[opt]\n///\n/// [MS] ms-asm-instruction-block\n/// ms-asm-line\n/// ms-asm-line \'\\n\' ms-asm-instruction-block\n///\nStmtResult Parser::ParseMicrosoftAsmStatement(SourceLocation AsmLoc) {\n // Target AsmParser may not be linked in clang-based tools.\n if (!TargetParser) {\n Diag(AsmLoc, diag::err_msasm_unable_to_create_target) << \"target ASM parser unavailable\";"}} | |||
}, | }, | ||
[" | ["err_msasm_unsupported_arch"]={ | ||
[ | [j]="unsupported architecture \'A\' for MS-style inline assembly", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="unsupported architecture \'%0\' for MS-style inline assembly", | ||
[ | [f]=n, | ||
[ | [g]="unsupported architecture \'(.*?)\' for MS\\-style inline assembly", | ||
[ | [h]=a, | ||
[ | [i]=sb, | ||
[ | [b]={"282d675b2878",1359059074,"[ms-inline asm] Add an error when trying to compile MS-style inline assembly"}, | ||
[k]={{Db,486,"/// ParseMicrosoftAsmStatement. When -fms-extensions/-fasm-blocks is enabled,\n/// this routine is called to collect the tokens for an MS asm statement.\n///\n/// [MS] ms-asm-statement:\n/// ms-asm-block\n/// ms-asm-block ms-asm-statement\n///\n/// [MS] ms-asm-block:\n/// \'__asm\' ms-asm-line \'\\n\'\n/// \'__asm\' \'{\' ms-asm-instruction-block[opt] \'}\' \';\'[opt]\n///\n/// [MS] ms-asm-instruction-block\n/// ms-asm-line\n/// ms-asm-line \'\\n\' ms-asm-instruction-block\n///\nStmtResult Parser::ParseMicrosoftAsmStatement(SourceLocation AsmLoc) {\n if (!TheTriple.isX86()) {\n Diag(AsmLoc, diag::err_msasm_unsupported_arch) << TheTriple.getArchName();"}} | |||
}, | }, | ||
[" | ["err_msvc_annotation_wide_str"]={ | ||
[ | [j]="arguments to __annotation must be wide string constants", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="arguments to __annotation must be wide string constants", | ||
[ | [f]=n, | ||
[ | [g]="arguments to __annotation must be wide string constants", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"30701edf761c",1504643255,"[ms] Implement the __annotation intrinsic"}, | ||
[k]={{y,202,"static bool SemaBuiltinMSVCAnnotation(Sema &S, CallExpr *TheCall) {\n // All arguments should be wide string literals.\n for (Expr *Arg : TheCall->arguments()) {\n if (!Literal || !Literal->isWide()) {\n S.Diag(Arg->getBeginLoc(), diag::err_msvc_annotation_wide_str) << Arg->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_mt_message"]={ | ||
[ | [j]="[rewriter] A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="[rewriter] %0", | ||
[ | [f]=n, | ||
[ | [g]="\\[rewriter\\] (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"42aa21222d37",1390712852,"ARCMigrate: Introduce proper diagnostics for TransformActions"}, | ||
[k]={{"clang/lib/ARCMigrate/TransformActions.cpp",574,"void TransformActions::reportError(StringRef message, SourceLocation loc, SourceRange range) { report(loc, diag::err_mt_message, range) << message; }"}} | |||
}, | }, | ||
[" | ["err_multichar_character_literal"]={ | ||
[ | [j]="... character literals may not contain multiple characters", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%select{wide|Unicode}0 character literals may not contain multiple characters", | ||
[ | [f]=n, | ||
[ | [g]="(?:wide|Unicode) character literals may not contain multiple characters", | ||
[ | [h]=a, | ||
[ | [i]=t, | ||
[ | [b]={M,1625925174,N}, | ||
[k]={{W,1624,"/// \\verbatim\n/// user-defined-character-literal: [C++11 lex.ext]\n/// character-literal ud-suffix\n/// ud-suffix:\n/// identifier\n/// character-literal: [C++11 lex.ccon]\n/// \' c-char-sequence \'\n/// u\' c-char-sequence \'\n/// U\' c-char-sequence \'\n/// L\' c-char-sequence \'\n/// u8\' c-char-sequence \' [C++1z lex.ccon]\n/// c-char-sequence:\n/// c-char\n/// c-char-sequence c-char\n/// c-char:\n/// any member of the source character set except the single-quote \',\n/// backslash \\, or new-line character\n/// escape-sequence\n/// universal-character-name\n/// escape-sequence:\n/// simple-escape-sequence\n/// octal-escape-sequence\n/// hexadecimal-escape-sequence\n/// simple-escape-sequence:\n/// one of \\\' \\\" \\? \\\\ \\a \\b \\f \\n \\r \\t \\v\n/// octal-escape-sequence:\n/// \\ octal-digit\n/// \\ octal-digit octal-digit\n/// \\ octal-digit octal-digit octal-digit\n/// hexadecimal-escape-sequence:\n/// \\x hexadecimal-digit\n/// hexadecimal-escape-sequence hexadecimal-digit\n/// universal-character-name: [C++11 lex.charset]\n/// \\u hex-quad\n/// \\U hex-quad hex-quad\n/// hex-quad:\n/// hex-digit hex-digit hex-digit hex-digit\n/// \\endverbatim\n///\nCharLiteralParser::CharLiteralParser(const char *begin, const char *end, SourceLocation Loc, Preprocessor &PP, tok::TokenKind kind) {\n if (NumCharsSoFar > 1) {\n if (isOrdinary() && NumCharsSoFar == 4)\n else if (isOrdinary())\n else {\n PP.Diag(Loc, diag::err_multichar_character_literal) << (isWide() ? 0 : 1);"}} | |||
}, | }, | ||
[" | ["err_multiple_base_initialization"]={ | ||
[ | [j]="multiple initializations given for base A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="multiple initializations given for base %0", | ||
[ | [f]=n, | ||
[ | [g]="multiple initializations given for base (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"23eebd9c1ee8",1270891731,"Diagnose more cases of initializing distinct members of an anonymous union"}, | ||
[k]={{r,4779,"bool CheckRedundantInit(Sema &S, CXXCtorInitializer *Init, CXXCtorInitializer *&PrevInit) {\n if (FieldDecl *Field = Init->getAnyMember())\n else {\n S.Diag(Init->getSourceLocation(), diag::err_multiple_base_initialization) << QualType(BaseClass, 0) << Init->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_multiple_def_index"]={ | ||
[ | [j]="multiple definitions are found for the same key in index ", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="multiple definitions are found for the same key in index ", | ||
[ | [f]=n, | ||
[ | [g]="multiple definitions are found for the same key in index ", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"e350b0a19629",1506078661,"Add Cross Translation Unit support library"}, | ||
[k]={{"clang/lib/CrossTU/CrossTranslationUnit.cpp",316,"void CrossTranslationUnitContext::emitCrossTUDiagnostics(const IndexError &IE) {\n case index_error_code::multiple_definitions:\n Context.getDiagnostics().Report(diag::err_multiple_def_index) << IE.getLineNum();"}} | |||
}, | }, | ||
[" | ["err_multiple_default_labels_defined"]={ | ||
[ | [j]="multiple default labels in one switch", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="multiple default labels in one switch", | ||
[ | [f]=n, | ||
[ | [g]="multiple default labels in one switch", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{E,1084,"StmtResult Sema::ActOnFinishSwitchStmt(SourceLocation SwitchLoc, Stmt *Switch, Stmt *BodyStmt) {\n for (SwitchCase *SC = SS->getSwitchCaseList(); SC && !HasDependentValue; SC = SC->getNextSwitchCase()) {\n if (DefaultStmt *DS = dyn_cast<DefaultStmt>(SC)) {\n if (TheDefaultStmt) {\n Diag(DS->getDefaultLoc(), diag::err_multiple_default_labels_defined);"}} | |||
}, | }, | ||
[" | ["err_multiple_final_overriders"]={ | ||
[ | [j]="virtual function A has more than one final overrider in B", | ||
[d]= | [c]=l, | ||
[f]= | [d]=m, | ||
[ | [e]="virtual function %q0 has more than one final overrider in %1", | ||
[b]= | [f]=n, | ||
[ | [g]="virtual function (.*?) has more than one final overrider in (.*?)", | ||
[h]=a, | |||
[i]=o, | |||
[b]={"4165bd677248",1269388076,"Implement computation of the final overriders for each virtual"}, | |||
[k]={{p,16630,"void Sema::ActOnFields(Scope *S, SourceLocation RecLoc, Decl *EnclosingDecl, ArrayRef<Decl *> Fields, SourceLocation LBrac, SourceLocation RBrac, const ParsedAttributesView &Attrs) {\n // Okay, we successfully defined \'Record\'.\n if (Record) {\n if (CXXRecord) {\n if (!CXXRecord->isDependentType()) {\n if (!CXXRecord->isInvalidDecl()) {\n // If we have virtual base classes, we may end up finding multiple\n // final overriders for a given virtual function. Check for this\n // problem now.\n if (CXXRecord->getNumVBases()) {\n for (CXXFinalOverriderMap::iterator M = FinalOverriders.begin(), MEnd = FinalOverriders.end(); M != MEnd; ++M) {\n for (OverridingMethods::iterator SO = M->second.begin(), SOEnd = M->second.end(); SO != SOEnd; ++SO) {\n Diag(Record->getLocation(), diag::err_multiple_final_overriders) << (const NamedDecl *)M->first << Record;"}} | |||
}, | }, | ||
[" | ["err_multiple_mem_initialization"]={ | ||
[ | [j]="multiple initializations given for non-static member A", | ||
[d]= | [c]=l, | ||
[f]= | [d]=m, | ||
[ | [e]="multiple initializations given for non-static member %0", | ||
[ | [f]=n, | ||
[ | [g]="multiple initializations given for non\\-static member (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[b]={"23eebd9c1ee8",1270891731,"Diagnose more cases of initializing distinct members of an anonymous union"}, | |||
[k]={{r,4775,"bool CheckRedundantInit(Sema &S, CXXCtorInitializer *Init, CXXCtorInitializer *&PrevInit) {\n if (FieldDecl *Field = Init->getAnyMember())\n S.Diag(Init->getSourceLocation(), diag::err_multiple_mem_initialization) << Field->getDeclName() << Init->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_multiple_mem_union_initialization"]={ | ||
[ | [j]="initializing multiple members of union", | ||
[d]= | [c]=l, | ||
[f]= | [d]=m, | ||
[ | [e]="initializing multiple members of union", | ||
[ | [f]=n, | ||
[ | [g]="initializing multiple members of union", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[b]={"23eebd9c1ee8",1270891731,"Diagnose more cases of initializing distinct members of an anonymous union"}, | |||
[k]={{p,4884,"static void checkDuplicateDefaultInit(Sema &S, CXXRecordDecl *Parent, SourceLocation DefaultInitLoc) {\n S.Diag(DefaultInitLoc, diag::err_multiple_mem_union_initialization);"},{r,4798,"bool CheckRedundantUnionInit(Sema &S, CXXCtorInitializer *Init, RedundantUnionMap &Unions) {\n while (Parent->isAnonymousStructOrUnion() || Parent->isUnion()) {\n if (Parent->isUnion()) {\n if (En.first && En.first != Child) {\n S.Diag(Init->getSourceLocation(), diag::err_multiple_mem_union_initialization) << Field->getDeclName() << Init->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_multiple_template_declarators"]={ | ||
[ | [j]="... can only ... a single entity", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%select{|a template declaration|an explicit template specialization|an explicit template instantiation}0 can only %select{|declare|declare|instantiate}0 a single entity", | ||
[ | [f]=n, | ||
[ | [g]="(?:|a template declaration|an explicit template specialization|an explicit template instantiation) can only (?:|declare|declare|instantiate) a single entity", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={"2399628cea7b",1242163911,"Refactor the parsing of declarations so that template declarations can"}, | ||
[k]={{"clang/lib/Parse/ParseTemplate.cpp",316,"/// Parse a single declaration that declares a template,\n/// template specialization, or explicit instantiation of a template.\n///\n/// \\param DeclEnd will receive the source location of the last token\n/// within this declaration.\n///\n/// \\param AS the access specifier associated with this\n/// declaration. Will be AS_none for namespace-scope declarations.\n///\n/// \\returns the new declaration.\nDecl *Parser::ParseSingleDeclarationAfterTemplate(DeclaratorContext Context, const ParsedTemplateInfo &TemplateInfo, ParsingDeclRAIIObject &DiagsFromTParams, SourceLocation &DeclEnd, ParsedAttributes &AccessAttrs, AccessSpecifier AS) {\n if (Tok.is(tok::comma)) {\n Diag(Tok, diag::err_multiple_template_declarators) << (int)TemplateInfo.Kind;"}} | |||
}, | }, | ||
[" | ["err_multiversion_after_used"]={ | ||
[ | [j]="function declaration cannot become a multiversioned function after first usage", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="function declaration cannot become a multiversioned function after first usage", | ||
[ | [f]=n, | ||
[ | [g]="function declaration cannot become a multiversioned function after first usage", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={xb,1515447257,ub}, | ||
[k]={{p,9763,"static bool CheckMultiVersionAdditionalRules(Sema &S, const FunctionDecl *OldFD, const FunctionDecl *NewFD, bool CausesMV, MultiVersionKind MVKind) {\n // Only allow transition to MultiVersion if it hasn\'t been used.\n if (OldFD && CausesMV && OldFD->isUsed(false))\n return S.Diag(NewFD->getLocation(), diag::err_multiversion_after_used);"},{p,10159,"/// Check the validity of a mulitversion function declaration.\n/// Also sets the multiversion\'ness\' of the function itself.\n///\n/// This sets NewFD->isInvalidDecl() to true if there was an error.\n///\n/// Returns true if there was an error, false otherwise.\nstatic bool CheckMultiVersionFunction(Sema &S, FunctionDecl *NewFD, bool &Redeclaration, NamedDecl *&OldDecl, LookupResult &Previous) {\n if (!OldFD->isMultiVersion()) {\n case MultiVersionKind::TargetClones:\n if (OldFD->isUsed(false)) {\n return S.Diag(NewFD->getLocation(), diag::err_multiversion_after_used);"}} | |||
}, | }, | ||
[" | ["err_multiversion_diff"]={ | ||
[ | [j]="multiversioned function declaration has a different ...", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="multiversioned function declaration has a different %select{calling convention|return type|constexpr specification|inline specification|linkage|language linkage}0", | ||
[ | [f]=n, | ||
[ | [g]="multiversioned function declaration has a different (?:calling convention|return type|constexpr specification|inline specification|linkage|language linkage)", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={xb,1515447257,ub}, | ||
[k]={{p,9765,"static bool CheckMultiVersionAdditionalRules(Sema &S, const FunctionDecl *OldFD, const FunctionDecl *NewFD, bool CausesMV, MultiVersionKind MVKind) {\n return S.areMultiversionVariantFunctionsCompatible(OldFD, NewFD, S.PDiag(diag::err_multiversion_noproto), PartialDiagnosticAt(NewFD->getLocation(), S.PDiag(diag::note_multiversioning_caused_here)), PartialDiagnosticAt(NewFD->getLocation(), S.PDiag(diag::err_multiversion_doesnt_support) << static_cast<unsigned>(MVKind)), PartialDiagnosticAt(NewFD->getLocation(), S.PDiag(diag::err_multiversion_diff)),"}} | |||
}, | }, | ||
[" | ["err_multiversion_disallowed_other_attr"]={ | ||
[ | [j]="attribute \'...\' multiversioning cannot be combined with attribute A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="attribute \'%select{|target|cpu_specific|cpu_dispatch|target_clones|target_version}0\' multiversioning cannot be combined with attribute %1", | ||
[ | [f]=n, | ||
[ | [g]="attribute \'(?:|target|cpu_specific|cpu_dispatch|target_clones|target_version)\' multiversioning cannot be combined with attribute (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"14f6bfcb52e7",1582847864,"[clang] Implement objc_non_runtime_protocol to remove protocol metadata"}, | ||
[k]={{p,9617,"static bool checkNonMultiVersionCompatAttributes(Sema &S, const FunctionDecl *FD, const FunctionDecl *CausedFD, MultiVersionKind MVKind) {\n const auto Diagnose = [FD, CausedFD, MVKind](Sema &S, const Attr *A) {\n S.Diag(FD->getLocation(), diag::err_multiversion_disallowed_other_attr) << static_cast<unsigned>(MVKind) << A;"}} | |||
}, | }, | ||
[" | ["err_multiversion_doesnt_support"]={ | ||
[ | [j]="attribute \'...\' multiversioned functions do not yet support ...", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="attribute \'%select{|target|cpu_specific|cpu_dispatch|target_clones|target_version}0\' multiversioned functions do not yet support %select{function templates|virtual functions|deduced return types|constructors|destructors|deleted functions|defaulted functions|constexpr functions|consteval function|lambdas}1", | ||
[ | [f]=n, | ||
[ | [g]="attribute \'(?:|target|cpu_specific|cpu_dispatch|target_clones|target_version)\' multiversioned functions do not yet support (?:function templates|virtual functions|deduced return types|constructors|destructors|deleted functions|defaulted functions|constexpr functions|consteval function|lambdas)", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={xb,1515447257,ub}, | ||
[k]={{p,9765,"static bool CheckMultiVersionAdditionalRules(Sema &S, const FunctionDecl *OldFD, const FunctionDecl *NewFD, bool CausesMV, MultiVersionKind MVKind) {\n return S.areMultiversionVariantFunctionsCompatible(OldFD, NewFD, S.PDiag(diag::err_multiversion_noproto), PartialDiagnosticAt(NewFD->getLocation(), S.PDiag(diag::note_multiversioning_caused_here)), PartialDiagnosticAt(NewFD->getLocation(), S.PDiag(diag::err_multiversion_doesnt_support) << static_cast<unsigned>(MVKind)), PartialDiagnosticAt(NewFD->getLocation(), S.PDiag(diag::err_multiversion_diff)),"},{v,3205,"static void handleTargetClonesAttr(Sema &S, Decl *D, const ParsedAttr &AL) {\n // FIXME: We could probably figure out how to get this to work for lambdas\n // someday.\n if (const auto *MD = dyn_cast<CXXMethodDecl>(D)) {\n if (MD->getParent()->isLambda()) {\n S.Diag(D->getLocation(), diag::err_multiversion_doesnt_support) << static_cast<unsigned>(MultiVersionKind::TargetClones) << /*Lambda*/ 9;"}} | |||
}, | }, | ||
[" | ["err_multiversion_duplicate"]={ | ||
[ | [j]="multiversioned function redeclarations require identical target attributes", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="multiversioned function redeclarations require identical target attributes", | ||
[ | [f]=n, | ||
[ | [g]="multiversioned function redeclarations require identical target attributes", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={xb,1515447257,ub}, | ||
[k]={{p,9853,"static bool CheckTargetCausesMultiVersioning(Sema &S, FunctionDecl *OldFD, FunctionDecl *NewFD, bool &Redeclaration, NamedDecl *&OldDecl, LookupResult &Previous) {\n if (NewTA) {\n if (OldParsed == NewParsed) {\n S.Diag(NewFD->getLocation(), diag::err_multiversion_duplicate);"},{p,9869,"static bool CheckTargetCausesMultiVersioning(Sema &S, FunctionDecl *OldFD, FunctionDecl *NewFD, bool &Redeclaration, NamedDecl *&OldDecl, LookupResult &Previous) {\n if (NewTVA) {\n if (Feats == NewFeats) {\n S.Diag(NewFD->getLocation(), diag::err_multiversion_duplicate);"},{p,9969,"/// Check the validity of a new function declaration being added to an existing\n/// multiversioned declaration collection.\nstatic bool CheckMultiVersionAdditionalDecl(Sema &S, FunctionDecl *OldFD, FunctionDecl *NewFD, MultiVersionKind NewMVKind, const CPUDispatchAttr *NewCPUDisp, const CPUSpecificAttr *NewCPUSpec, const TargetClonesAttr *NewClones, bool &Redeclaration, NamedDecl *&OldDecl, LookupResult &Previous) {\n // Next, check ALL non-invalid non-overloads to see if this is a redeclaration\n // of a previous member of the MultiVersion set.\n for (NamedDecl *ND : Previous) {\n case MultiVersionKind::Target: {\n if (CurParsed == NewParsed) {\n S.Diag(NewFD->getLocation(), diag::err_multiversion_duplicate);"},{p,9990,"/// Check the validity of a new function declaration being added to an existing\n/// multiversioned declaration collection.\nstatic bool CheckMultiVersionAdditionalDecl(Sema &S, FunctionDecl *OldFD, FunctionDecl *NewFD, MultiVersionKind NewMVKind, const CPUDispatchAttr *NewCPUDisp, const CPUSpecificAttr *NewCPUSpec, const TargetClonesAttr *NewClones, bool &Redeclaration, NamedDecl *&OldDecl, LookupResult &Previous) {\n // Next, check ALL non-invalid non-overloads to see if this is a redeclaration\n // of a previous member of the MultiVersion set.\n for (NamedDecl *ND : Previous) {\n case MultiVersionKind::TargetVersion: {\n if (CurFeats == NewFeats) {\n S.Diag(NewFD->getLocation(), diag::err_multiversion_duplicate);"}} | |||
}, | }, | ||
[" | ["err_multiversion_noproto"]={ | ||
[ | [j]="multiversioned function must have a prototype", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="multiversioned function must have a prototype", | ||
[ | [f]=n, | ||
[ | [g]="multiversioned function must have a prototype", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={xb,1515447257,ub}, | ||
[k]={{p,9765,"static bool CheckMultiVersionAdditionalRules(Sema &S, const FunctionDecl *OldFD, const FunctionDecl *NewFD, bool CausesMV, MultiVersionKind MVKind) {\n return S.areMultiversionVariantFunctionsCompatible(OldFD, NewFD, S.PDiag(diag::err_multiversion_noproto), PartialDiagnosticAt(NewFD->getLocation(), S.PDiag(diag::note_multiversioning_caused_here)), PartialDiagnosticAt(NewFD->getLocation(), S.PDiag(diag::err_multiversion_doesnt_support) << static_cast<unsigned>(MVKind)), PartialDiagnosticAt(NewFD->getLocation(), S.PDiag(diag::err_multiversion_diff)),"}} | |||
}, | }, | ||
[" | ["err_multiversion_not_allowed_on_main"]={ | ||
[ | [j]="\'main\' cannot be a multiversioned function", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'main\' cannot be a multiversioned function", | ||
[ | [f]=n, | ||
[ | [g]="\'main\' cannot be a multiversioned function", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={xb,1515447257,ub}, | ||
[k]={{p,10106,"/// Check the validity of a mulitversion function declaration.\n/// Also sets the multiversion\'ness\' of the function itself.\n///\n/// This sets NewFD->isInvalidDecl() to true if there was an error.\n///\n/// Returns true if there was an error, false otherwise.\nstatic bool CheckMultiVersionFunction(Sema &S, FunctionDecl *NewFD, bool &Redeclaration, NamedDecl *&OldDecl, LookupResult &Previous) {\n // Main isn\'t allowed to become a multiversion function, however it IS\n // permitted to have \'main\' be marked with the \'target\' optimization hint,\n // for \'target_version\' only default is allowed.\n if (NewFD->isMain()) {\n if (MVKind != MultiVersionKind::None && !(MVKind == MultiVersionKind::Target && !NewTA->isDefaultVersion()) && !(MVKind == MultiVersionKind::TargetVersion && NewTVA->isDefaultVersion())) {\n S.Diag(NewFD->getLocation(), diag::err_multiversion_not_allowed_on_main);"}} | |||
}, | }, | ||
[" | ["err_multiversion_not_supported"]={ | ||
[ | [j]="function multiversioning is not supported on the current target", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="function multiversioning is not supported on the current target", | ||
[ | [f]=n, | ||
[ | [g]="function multiversioning is not supported on the current target", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={xb,1515447257,ub}, | ||
[k]={{p,9747,"static bool CheckMultiVersionAdditionalRules(Sema &S, const FunctionDecl *OldFD, const FunctionDecl *NewFD, bool CausesMV, MultiVersionKind MVKind) {\n if (!S.getASTContext().getTargetInfo().supportsMultiVersioning()) {\n S.Diag(NewFD->getLocation(), diag::err_multiversion_not_supported);"}} | |||
}, | }, | ||
[" | ["err_multiversion_required_in_redecl"]={ | ||
[ | [j]="function declaration is missing ... attribute in a multiversioned function", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="function declaration is missing %select{\'target\'|\'cpu_specific\' or \'cpu_dispatch\'|\'target_version\'}0 attribute in a multiversioned function", | ||
[ | [f]=n, | ||
[ | [g]="function declaration is missing (?:\'target\'|\'cpu_specific\' or \'cpu_dispatch\'|\'target_version\') attribute in a multiversioned function", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"3efe00206f0f",1532096008,"Implement cpu_dispatch/cpu_specific Multiversioning"}, | ||
[k]={{p,9882,"static bool CheckTargetCausesMultiVersioning(Sema &S, FunctionDecl *OldFD, FunctionDecl *NewFD, bool &Redeclaration, NamedDecl *&OldDecl, LookupResult &Previous) {\n for (const auto *FD : OldFD->redecls()) {\n // We allow forward declarations before ANY multiversioning attributes, but\n // nothing after the fact.\n if (PreviousDeclsHaveMultiVersionAttribute(FD) && ((NewTA && (!CurTA || CurTA->isInherited())) || (NewTVA && (!CurTVA || CurTVA->isInherited())))) {\n S.Diag(FD->getLocation(), diag::err_multiversion_required_in_redecl) << (NewTA ? 0 : 2);"},{p,10146,"/// Check the validity of a mulitversion function declaration.\n/// Also sets the multiversion\'ness\' of the function itself.\n///\n/// This sets NewFD->isInvalidDecl() to true if there was an error.\n///\n/// Returns true if there was an error, false otherwise.\nstatic bool CheckMultiVersionFunction(Sema &S, FunctionDecl *NewFD, bool &Redeclaration, NamedDecl *&OldDecl, LookupResult &Previous) {\n // Multiversioned redeclarations aren\'t allowed to omit the attribute, except\n // for target_clones and target_version.\n if (OldFD->isMultiVersion() && MVKind == MultiVersionKind::None && OldFD->getMultiVersionKind() != MultiVersionKind::TargetClones && OldFD->getMultiVersionKind() != MultiVersionKind::TargetVersion) {\n S.Diag(NewFD->getLocation(), diag::err_multiversion_required_in_redecl) << (OldFD->getMultiVersionKind() != MultiVersionKind::Target);"}} | |||
}, | }, | ||
[" | ["err_multiversion_types_mixed"]={ | ||
[ | [j]="multiversioning attributes cannot be combined", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="multiversioning attributes cannot be combined", | ||
[ | [f]=n, | ||
[ | [g]="multiversioning attributes cannot be combined", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"3efe00206f0f",1532096008,"Implement cpu_dispatch/cpu_specific Multiversioning"}, | ||
[k]={{p,9912,"/// Check the validity of a new function declaration being added to an existing\n/// multiversioned declaration collection.\nstatic bool CheckMultiVersionAdditionalDecl(Sema &S, FunctionDecl *OldFD, FunctionDecl *NewFD, MultiVersionKind NewMVKind, const CPUDispatchAttr *NewCPUDisp, const CPUSpecificAttr *NewCPUSpec, const TargetClonesAttr *NewClones, bool &Redeclaration, NamedDecl *&OldDecl, LookupResult &Previous) {\n // Disallow mixing of multiversioning types.\n if (!MultiVersionTypesCompatible(OldMVKind, NewMVKind)) {\n S.Diag(NewFD->getLocation(), diag::err_multiversion_types_mixed);"}} | |||
}, | }, | ||
[" | ["err_musttail_callconv_mismatch"]={ | ||
[ | [j]="cannot perform a tail call to function... because it uses an incompatible calling convention", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot perform a tail call to function%select{| %1}0 because it uses an incompatible calling convention", | ||
[ | [f]=n, | ||
[ | [g]="cannot perform a tail call to function(?:| (.*?)) because it uses an incompatible calling convention", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={Z,1607502387,Y}, | ||
[k]={{E,696,"bool Sema::checkMustTailAttr(const Stmt *St, const Attr &MTA) {\n // Caller and callee must have matching calling conventions.\n //\n // Some calling conventions are physically capable of supporting tail calls\n // even if the function types don\'t perfectly match. LLVM is currently too\n // strict to allow this, but if LLVM added support for this in the future, we\n // could exit early here and skip the remaining checks if the functions are\n // using such a calling convention.\n if (CallerType.Func->getCallConv() != CalleeType.Func->getCallConv()) {\n if (const auto *ND = dyn_cast_or_null<NamedDecl>(CE->getCalleeDecl()))\n Diag(St->getBeginLoc(), diag::err_musttail_callconv_mismatch) << true << ND->getDeclName();"},{E,698,"bool Sema::checkMustTailAttr(const Stmt *St, const Attr &MTA) {\n // Caller and callee must have matching calling conventions.\n //\n // Some calling conventions are physically capable of supporting tail calls\n // even if the function types don\'t perfectly match. LLVM is currently too\n // strict to allow this, but if LLVM added support for this in the future, we\n // could exit early here and skip the remaining checks if the functions are\n // using such a calling convention.\n if (CallerType.Func->getCallConv() != CalleeType.Func->getCallConv()) {\n if (const auto *ND = dyn_cast_or_null<NamedDecl>(CE->getCalleeDecl()))\n else\n Diag(St->getBeginLoc(), diag::err_musttail_callconv_mismatch) << false;"}} | |||
}, | }, | ||
[" | ["err_musttail_forbidden_from_this_context"]={ | ||
[ | [j]="A attribute cannot be used from ...", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%0 attribute cannot be used from %select{a block|an Objective-C function|this context}1", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) attribute cannot be used from (?:a block|an Objective\\-C function|this context)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={Z,1607502387,Y}, | ||
[k]={{E,641,"bool Sema::checkMustTailAttr(const Stmt *St, const Attr &MTA) {\n // Find caller function signature.\n if (!CallerDecl) {\n Diag(St->getBeginLoc(), diag::err_musttail_forbidden_from_this_context) << &MTA << ContextType;"}} | |||
}, | }, | ||
[" | ["err_musttail_member_mismatch"]={ | ||
[ | [j]="... function cannot perform a tail call to ... function...", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%select{non-member|static member|non-static member}0 function cannot perform a tail call to %select{non-member|static member|non-static member|pointer-to-member}1 function%select{| %3}2", | ||
[ | [f]=n, | ||
[ | [g]="(?:non\\-member|static member|non\\-static member) function cannot perform a tail call to (?:non\\-member|static member|non\\-static member|pointer\\-to\\-member) function(?:| (.*?))", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={Z,1607502387,Y}, | ||
[k]={{E,712,"bool Sema::checkMustTailAttr(const Stmt *St, const Attr &MTA) {\n // Caller and callee must match in whether they have a \"this\" parameter.\n if (CallerType.This.isNull() != CalleeType.This.isNull()) {\n if (const auto *ND = dyn_cast_or_null<NamedDecl>(CE->getCalleeDecl())) {\n Diag(St->getBeginLoc(), diag::err_musttail_member_mismatch) << CallerType.MemberType << CalleeType.MemberType << true << ND->getDeclName();"},{E,715,"bool Sema::checkMustTailAttr(const Stmt *St, const Attr &MTA) {\n // Caller and callee must match in whether they have a \"this\" parameter.\n if (CallerType.This.isNull() != CalleeType.This.isNull()) {\n if (const auto *ND = dyn_cast_or_null<NamedDecl>(CE->getCalleeDecl())) {\n } else\n Diag(St->getBeginLoc(), diag::err_musttail_member_mismatch) << CallerType.MemberType << CalleeType.MemberType << false;"}} | |||
}, | }, | ||
[" | ["err_musttail_mismatch"]={ | ||
[ | [j]="cannot perform a tail call to function... because its signature is incompatible with the calling function", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot perform a tail call to function%select{| %1}0 because its signature is incompatible with the calling function", | ||
[ | [f]=n, | ||
[ | [g]="cannot perform a tail call to function(?:| (.*?)) because its signature is incompatible with the calling function", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={Z,1607502387,Y}, | ||
[k]={{E,763,"bool Sema::checkMustTailAttr(const Stmt *St, const Attr &MTA) {\n if (!CheckTypesMatch(CallerType, CalleeType, PD)) {\n if (const auto *ND = dyn_cast_or_null<NamedDecl>(CE->getCalleeDecl()))\n Diag(St->getBeginLoc(), diag::err_musttail_mismatch) << true << ND->getDeclName();"},{E,765,"bool Sema::checkMustTailAttr(const Stmt *St, const Attr &MTA) {\n if (!CheckTypesMatch(CallerType, CalleeType, PD)) {\n if (const auto *ND = dyn_cast_or_null<NamedDecl>(CE->getCalleeDecl()))\n else\n Diag(St->getBeginLoc(), diag::err_musttail_mismatch) << false;"}} | |||
}, | }, | ||
[" | ["err_musttail_needs_call"]={ | ||
[ | [j]="A attribute requires that the return value is the result of a function call", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%0 attribute requires that the return value is the result of a function call", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) attribute requires that the return value is the result of a function call", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={Z,1607502387,Y}, | ||
[k]={{E,586,"bool Sema::checkMustTailAttr(const Stmt *St, const Attr &MTA) {\n if (!CE) {\n Diag(St->getBeginLoc(), diag::err_musttail_needs_call) << &MTA;"}} | |||
}, | }, | ||
[" | ["err_musttail_needs_prototype"]={ | ||
[ | [j]="A attribute requires that both caller and callee functions have a prototype", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%0 attribute requires that both caller and callee functions have a prototype", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) attribute requires that both caller and callee functions have a prototype", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={Z,1607502387,Y}, | ||
[k]={{E,678,"bool Sema::checkMustTailAttr(const Stmt *St, const Attr &MTA) {\n // Both caller and callee must have a prototype (no K&R declarations).\n if (!CalleeType.Func || !CallerType.Func) {\n Diag(St->getBeginLoc(), diag::err_musttail_needs_prototype) << &MTA;"}} | |||
}, | }, | ||
[" | ["err_musttail_needs_trivial_args"]={ | ||
[ | [j]="tail call requires that the return value, all parameters, and any temporaries created by the expression are trivially destructible", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="tail call requires that the return value, all parameters, and any temporaries created by the expression are trivially destructible", | ||
[ | [f]=n, | ||
[ | [g]="tail call requires that the return value, all parameters, and any temporaries created by the expression are trivially destructible", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={Z,1607502387,Y}, | ||
[k]={{E,592,"bool Sema::checkMustTailAttr(const Stmt *St, const Attr &MTA) {\n if (const auto *EWC = dyn_cast<ExprWithCleanups>(E)) {\n if (EWC->cleanupsHaveSideEffects()) {\n Diag(St->getBeginLoc(), diag::err_musttail_needs_trivial_args) << &MTA;"}} | |||
}, | }, | ||
[" | ["err_musttail_no_variadic"]={ | ||
[ | [j]="A attribute may not be used with variadic functions", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%0 attribute may not be used with variadic functions", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) attribute may not be used with variadic functions", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={Z,1607502387,Y}, | ||
[k]={{E,705,"bool Sema::checkMustTailAttr(const Stmt *St, const Attr &MTA) {\n if (CalleeType.Func->isVariadic() || CallerType.Func->isVariadic()) {\n Diag(St->getBeginLoc(), diag::err_musttail_no_variadic) << &MTA;"}} | |||
}, | }, | ||
[" | ["err_musttail_scope"]={ | ||
[ | [j]="cannot perform a tail call from this return statement", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot perform a tail call from this return statement", | ||
[ | [f]=n, | ||
[ | [g]="cannot perform a tail call from this return statement", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={Z,1607502387,Y}, | ||
[k]={{lb,918,"void JumpScopeChecker::VerifyMustTailStmts() {\n for (AttributedStmt *AS : MustTailStmts) {\n for (unsigned I = LabelAndGotoScopes[AS]; I; I = Scopes[I].ParentScope) {\n if (Scopes[I].OutDiag) {\n S.Diag(AS->getBeginLoc(), diag::err_musttail_scope);"}} | |||
}, | }, | ||
[" | ["err_musttail_structors_forbidden"]={ | ||
[ | [j]="cannot perform a tail call ... a ...", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot perform a tail call %select{from|to}0 a %select{constructor|destructor}1", | ||
[ | [f]=n, | ||
[ | [g]="cannot perform a tail call (?:from|to) a (?:constructor|destructor)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={Z,1607502387,Y}, | ||
[k]={{E,614,"bool Sema::checkMustTailAttr(const Stmt *St, const Attr &MTA) {\n auto GetMethodType = [this, St, MTA](const CXXMethodDecl *CMD, FuncType &Type, bool IsCallee) -> bool {\n if (isa<CXXConstructorDecl, CXXDestructorDecl>(CMD)) {\n Diag(St->getBeginLoc(), diag::err_musttail_structors_forbidden) << IsCallee << isa<CXXDestructorDecl>(CMD);"},{E,668,"bool Sema::checkMustTailAttr(const Stmt *St, const Attr &MTA) {\n // Find callee function signature.\n if (const CXXMethodDecl *CMD = dyn_cast_or_null<CXXMethodDecl>(CE->getCalleeDecl())) {\n } else if (CalleeBinOp && CalleeBinOp->isPtrMemOp()) {\n } else if (isa<CXXPseudoDestructorExpr>(CalleeExpr)) {\n Diag(St->getBeginLoc(), diag::err_musttail_structors_forbidden) << /* IsCallee = */ 1 << /* IsDestructor = */ 1;"}} | |||
}, | }, | ||
[" | ["err_mutable_const"]={ | ||
[ | [j]="\'mutable\' and \'const\' cannot be mixed", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'mutable\' and \'const\' cannot be mixed", | ||
[ | [f]=n, | ||
[ | [g]="\'mutable\' and \'const\' cannot be mixed", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={z,1236199783,A}, | ||
[k]={{p,15912,"/// Build a new FieldDecl and check its well-formedness.\n///\n/// This routine builds a new FieldDecl given the fields name, type,\n/// record, etc. \\p PrevDecl should refer to any previous declaration\n/// with the same name and in the same scope as the field to be\n/// created.\n///\n/// \\returns a new FieldDecl.\n///\n/// \\todo The Declarator argument is a hack. It will be removed once\nFieldDecl *Sema::CheckFieldDecl(DeclarationName Name, QualType T, TypeSourceInfo *TInfo, RecordDecl *Record, SourceLocation Loc, bool Mutable, Expr *BitWidth, InClassInitStyle InitStyle, SourceLocation TSSL, AccessSpecifier AS, NamedDecl *PrevDecl, Declarator *D) {\n // Check that \'mutable\' is consistent with the type of the declaration.\n if (!InvalidDecl && Mutable) {\n if (T->isReferenceType())\n else if (T.isConstQualified())\n DiagID = diag::err_mutable_const;"}} | |||
}, | }, | ||
[" | ["err_mutable_function"]={ | ||
[ | [j]="\'mutable\' cannot be applied to functions", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'mutable\' cannot be applied to functions", | ||
[ | [f]=n, | ||
[ | [g]="\'mutable\' cannot be applied to functions", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={z,1236199783,A}, | ||
[k]={{r,2970,"/// ActOnCXXMemberDeclarator - This is invoked when a C++ class member\n/// declarator is parsed. \'AS\' is the access specifier, \'BW\' specifies the\n/// bitfield width if there is one, \'InitExpr\' specifies the initializer if\n/// one has been parsed, and \'InitStyle\' is set if an in-class initializer is\n/// present (but parsing it has been deferred).\nNamedDecl *Sema::ActOnCXXMemberDeclarator(Scope *S, AccessSpecifier AS, Declarator &D, MultiTemplateParamsArg TemplateParameterLists, Expr *BW, const VirtSpecifiers &VS, InClassInitStyle InitStyle) {\n case DeclSpec::SCS_mutable:\n if (isFunc) {\n Diag(DS.getStorageClassSpecLoc(), diag::err_mutable_function);"}} | |||
}, | }, | ||
[" | ["err_mutable_nonmember"]={ | ||
[ | [j]="\'mutable\' can only be applied to member variables", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'mutable\' can only be applied to member variables", | ||
[ | [f]=n, | ||
[ | [g]="\'mutable\' can only be applied to member variables", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={z,1236199783,A}, | ||
[k]={{p,4713,"/// ParsedFreeStandingDeclSpec - This method is invoked when a declspec with\n/// no declarator (e.g. \"struct foo;\") is parsed. It also accepts template\n/// parameters to cope with template friend declarations.\nDecl *Sema::ParsedFreeStandingDeclSpec(Scope *S, AccessSpecifier AS, DeclSpec &DS, const ParsedAttributesView &DeclAttrs, MultiTemplateParamsArg TemplateParams, bool IsExplicitInstantiation, RecordDecl *&AnonRecord) {\n // Note that a linkage-specification sets a storage class, but\n // \'extern \"C\" struct foo;\' is actually valid and not theoretically\n // useless.\n if (DeclSpec::SCS SCS = DS.getStorageClassSpec()) {\n if (SCS == DeclSpec::SCS_mutable)\n Diag(DS.getStorageClassSpecLoc(), diag::err_mutable_nonmember);"},{p,5076,"/// BuildAnonymousStructOrUnion - Handle the declaration of an\n/// anonymous structure or union. Anonymous unions are a C++ feature\n/// (C++ [class.union]) and a C11 feature; anonymous structures\n/// are a C11 feature and GNU C++ extension.\nDecl *Sema::BuildAnonymousStructOrUnion(Scope *S, DeclSpec &DS, AccessSpecifier AS, RecordDecl *Record, const PrintingPolicy &Policy) {\n if (RecordDecl *OwningClass = dyn_cast<RecordDecl>(Owner)) {\n } else {\n if (SCSpec == DeclSpec::SCS_mutable) {\n Diag(Record->getLocation(), diag::err_mutable_nonmember);"},{p,6661,"NamedDecl *Sema::ActOnVariableDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamLists, bool &AddToScope, ArrayRef<BindingDecl *> Bindings) {\n if (SCSpec == DeclSpec::SCS_mutable) {\n Diag(D.getIdentifierLoc(), diag::err_mutable_nonmember);"}} | |||
}, | }, | ||
[" | ["err_mutable_reference"]={ | ||
[ | [j]="\'mutable\' cannot be applied to references", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'mutable\' cannot be applied to references", | ||
[ | [f]=n, | ||
[ | [g]="\'mutable\' cannot be applied to references", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={z,1236199783,A}, | ||
[k]={{p,15910,"/// Build a new FieldDecl and check its well-formedness.\n///\n/// This routine builds a new FieldDecl given the fields name, type,\n/// record, etc. \\p PrevDecl should refer to any previous declaration\n/// with the same name and in the same scope as the field to be\n/// created.\n///\n/// \\returns a new FieldDecl.\n///\n/// \\todo The Declarator argument is a hack. It will be removed once\nFieldDecl *Sema::CheckFieldDecl(DeclarationName Name, QualType T, TypeSourceInfo *TInfo, RecordDecl *Record, SourceLocation Loc, bool Mutable, Expr *BitWidth, InClassInitStyle InitStyle, SourceLocation TSSL, AccessSpecifier AS, NamedDecl *PrevDecl, Declarator *D) {\n // Check that \'mutable\' is consistent with the type of the declaration.\n if (!InvalidDecl && Mutable) {\n if (T->isReferenceType())\n DiagID = getLangOpts().MSVCCompat ? diag::ext_mutable_reference : diag::err_mutable_reference;"}} | |||
}, | }, | ||
[" | ["err_namespace_nonnamespace_scope"]={ | ||
[ | [j]="namespaces can only be defined in global or namespace scope", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="namespaces can only be defined in global or namespace scope", | ||
[ | [f]=n, | ||
[ | [g]="namespaces can only be defined in global or namespace scope", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={"05cfc295f45d",1273813702,"Namespaces can only be defined at global or namespace scope. Fixes PR6596."}, | ||
[k]={{R,152,"/// ParseNamespace - We know that the current token is a namespace keyword. This\n/// may either be a top level namespace or a block-level namespace alias. If\n/// there was an inline keyword, it has already been parsed.\n///\n/// namespace-definition: [C++: namespace.def]\n/// named-namespace-definition\n/// unnamed-namespace-definition\n/// nested-namespace-definition\n///\n/// named-namespace-definition:\n/// \'inline\'[opt] \'namespace\' attributes[opt] identifier \'{\'\n/// namespace-body \'}\'\n///\n/// unnamed-namespace-definition:\n/// \'inline\'[opt] \'namespace\' attributes[opt] \'{\' namespace-body \'}\'\n///\n/// nested-namespace-definition:\n/// \'namespace\' enclosing-namespace-specifier \'::\' \'inline\'[opt]\n/// identifier \'{\' namespace-body \'}\'\n///\n/// enclosing-namespace-specifier:\n/// identifier\n/// enclosing-namespace-specifier \'::\' \'inline\'[opt] identifier\n///\n/// namespace-alias-definition: [C++ 7.3.2: namespace.alias]\n/// \'namespace\' identifier \'=\' qualified-namespace-specifier \';\'\n///\nParser::DeclGroupPtrTy Parser::ParseNamespace(DeclaratorContext Context, SourceLocation &DeclEnd, SourceLocation InlineLoc) {\n if (getCurScope()->isClassScope() || getCurScope()->isTemplateParamScope() || getCurScope()->isInObjcMethodScope() || getCurScope()->getBlockParent() || getCurScope()->getFnParent()) {\n Diag(T.getOpenLocation(), diag::err_namespace_nonnamespace_scope);"}} | |||
}, | }, | ||
[" | ["err_need_header_before_placement_new"]={ | ||
[ | [j]="no matching A function for non-allocating placement new expression; include <new>", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="no matching %0 function for non-allocating placement new expression; include <new>", | ||
[ | [f]=n, | ||
[ | [g]="no matching (.*?) function for non\\-allocating placement new expression; include \\<new\\>", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"61d065e21ff3",1590001902,"Let clang atomic builtins fetch add/sub support floating point types"}, | ||
[k]={{B,2162,"static bool resolveAllocationOverload(Sema &S, LookupResult &R, SourceRange Range, SmallVectorImpl<Expr *> &Args, bool &PassAlignment, FunctionDecl *&Operator, OverloadCandidateSet *AlignedCandidates, Expr *AlignArg, bool Diagnose) {\n case OR_No_Viable_Function:\n if (Diagnose) {\n // If this is an allocation of the form \'new (p) X\' for some object\n // pointer p (or an expression that will decay to such a pointer),\n // diagnose the missing inclusion of <new>.\n if (!R.isClassLookup() && Args.size() == 2 && (Args[1]->getType()->isObjectPointerType() || Args[1]->getType()->isArrayType())) {\n S.Diag(R.getNameLoc(), diag::err_need_header_before_placement_new) << R.getLookupName() << Range;"}} | |||
}, | }, | ||
[" | ["err_need_header_before_typeid"]={ | ||
[ | [j]="you need to include <typeinfo> before using the \'typeid\' operator", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="you need to include <typeinfo> before using the \'typeid\' operator", | ||
[ | [f]=n, | ||
[ | [g]="you need to include \\<typeinfo\\> before using the \'typeid\' operator", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{B,595,"/// ActOnCXXTypeidOfType - Parse typeid( type-id ) or typeid (expression);\nExprResult Sema::ActOnCXXTypeid(SourceLocation OpLoc, SourceLocation LParenLoc, bool isType, void *TyOrExpr, SourceLocation RParenLoc) {\n // Find the std::type_info type.\n if (!getStdNamespace())\n return ExprError(Diag(OpLoc, diag::err_need_header_before_typeid));"},{B,609,"/// ActOnCXXTypeidOfType - Parse typeid( type-id ) or typeid (expression);\nExprResult Sema::ActOnCXXTypeid(SourceLocation OpLoc, SourceLocation LParenLoc, bool isType, void *TyOrExpr, SourceLocation RParenLoc) {\n if (!CXXTypeInfoDecl) {\n if (!CXXTypeInfoDecl)\n return ExprError(Diag(OpLoc, diag::err_need_header_before_typeid));"}} | |||
}, | }, | ||
[" | ["err_nested_name_member_ref_lookup_ambiguous"]={ | ||
[ | [j]="lookup of A in member access expression is ambiguous", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="lookup of %0 in member access expression is ambiguous", | ||
[ | [f]=n, | ||
[ | [g]="lookup of (.*?) in member access expression is ambiguous", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"b7bfe794129f",1251932376,"Rewrite of our handling of name lookup in C++ member access expressions, e.g.,"}, | ||
[k]={{cb,615,"/// Build a new nested-name-specifier for \"identifier::\", as described\n/// by ActOnCXXNestedNameSpecifier.\n///\n/// \\param S Scope in which the nested-name-specifier occurs.\n/// \\param IdInfo Parser information about an identifier in the\n/// nested-name-spec.\n/// \\param EnteringContext If true, enter the context specified by the\n/// nested-name-specifier.\n/// \\param SS Optional nested name specifier preceding the identifier.\n/// \\param ScopeLookupResult Provides the result of name lookup within the\n/// scope of the nested-name-specifier that was computed at template\n/// definition time.\n/// \\param ErrorRecoveryLookup Specifies if the method is called to improve\n/// error recovery and what kind of recovery is performed.\n/// \\param IsCorrectedToColon If not null, suggestion of replace \'::\' -> \':\'\n/// are allowed. The bool value pointed by this parameter is set to\n/// \'true\' if the identifier is treated as if it was followed by \':\',\n/// not \'::\'.\n/// \\param OnlyNamespace If true, only considers namespaces in lookup.\n///\n/// This routine differs only slightly from ActOnCXXNestedNameSpecifier, in\n/// that it contains an extra parameter \\p ScopeLookupResult, which provides\n/// the result of name lookup within the scope of the nested-name-specifier\n/// that was computed at template definition time.\n///\n/// If ErrorRecoveryLookup is true, then this call is used to improve error\n/// recovery. This means that it should not emit diagnostics, it should\n/// just return true on failure. It also means it should only return a valid\n/// scope if it *knows* that the result is correct. It should not return in a\n/// dependent context, for example. Nor will it extend \\p SS with the scope\n/// specifier.\nbool Sema::BuildCXXNestedNameSpecifier(Scope *S, NestedNameSpecInfo &IdInfo, bool EnteringContext, CXXScopeSpec &SS, NamedDecl *ScopeLookupResult, bool ErrorRecoveryLookup, bool *IsCorrectedToColon, bool OnlyNamespace) {\n if (AcceptSpec) {\n if (!ObjectType.isNull() && !ObjectTypeSearchedInScope && !getLangOpts().CPlusPlus11) {\n if (isAcceptableNestedNameSpecifier(OuterDecl) && OuterDecl->getCanonicalDecl() != SD->getCanonicalDecl() && (!isa<TypeDecl>(OuterDecl) || !isa<TypeDecl>(SD) || !Context.hasSameType(Context.getTypeDeclType(cast<TypeDecl>(OuterDecl)), Context.getTypeDeclType(cast<TypeDecl>(SD))))) {\n Diag(IdInfo.IdentifierLoc, diag::err_nested_name_member_ref_lookup_ambiguous) << IdInfo.Identifier;"}} | |||
}, | }, | ||
[" | ["err_nested_name_spec_is_not_class"]={ | ||
[ | [j]="A cannot appear before \'::\' because it is not a class...; did you mean \':\'?", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%0 cannot appear before \'::\' because it is not a class%select{ or namespace|, namespace, or enumeration}1; did you mean \':\'?", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) cannot appear before \'\\:\\:\' because it is not a class(?: or namespace|, namespace, or enumeration); did you mean \'\\:\'\\?", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"6a7ffbed8ab4",1397407923,"Improve error recovery around colon."}, | ||
[k]={{cb,545,"/// Build a new nested-name-specifier for \"identifier::\", as described\n/// by ActOnCXXNestedNameSpecifier.\n///\n/// \\param S Scope in which the nested-name-specifier occurs.\n/// \\param IdInfo Parser information about an identifier in the\n/// nested-name-spec.\n/// \\param EnteringContext If true, enter the context specified by the\n/// nested-name-specifier.\n/// \\param SS Optional nested name specifier preceding the identifier.\n/// \\param ScopeLookupResult Provides the result of name lookup within the\n/// scope of the nested-name-specifier that was computed at template\n/// definition time.\n/// \\param ErrorRecoveryLookup Specifies if the method is called to improve\n/// error recovery and what kind of recovery is performed.\n/// \\param IsCorrectedToColon If not null, suggestion of replace \'::\' -> \':\'\n/// are allowed. The bool value pointed by this parameter is set to\n/// \'true\' if the identifier is treated as if it was followed by \':\',\n/// not \'::\'.\n/// \\param OnlyNamespace If true, only considers namespaces in lookup.\n///\n/// This routine differs only slightly from ActOnCXXNestedNameSpecifier, in\n/// that it contains an extra parameter \\p ScopeLookupResult, which provides\n/// the result of name lookup within the scope of the nested-name-specifier\n/// that was computed at template definition time.\n///\n/// If ErrorRecoveryLookup is true, then this call is used to improve error\n/// recovery. This means that it should not emit diagnostics, it should\n/// just return true on failure. It also means it should only return a valid\n/// scope if it *knows* that the result is correct. It should not return in a\n/// dependent context, for example. Nor will it extend \\p SS with the scope\n/// specifier.\nbool Sema::BuildCXXNestedNameSpecifier(Scope *S, NestedNameSpecInfo &IdInfo, bool EnteringContext, CXXScopeSpec &SS, NamedDecl *ScopeLookupResult, bool ErrorRecoveryLookup, bool *IsCorrectedToColon, bool OnlyNamespace) {\n if (Found.empty() && !ErrorRecoveryLookup) {\n if (!R.empty()) {\n // The identifier is found in ordinary lookup. If correction to colon is\n // allowed, suggest replacement to \':\'.\n if (IsCorrectedToColon) {\n Diag(IdInfo.CCLoc, diag::err_nested_name_spec_is_not_class) << IdInfo.Identifier << getLangOpts().CPlusPlus << FixItHint::CreateReplacement(IdInfo.CCLoc, \":\");"}} | |||
}, | }, | ||
[" | ["err_nested_name_spec_non_tag"]={ | ||
[ | [j]="type A cannot be used prior to \'::\' because it has no members", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="type %0 cannot be used prior to \'::\' because it has no members", | ||
[ | [f]=n, | ||
[ | [g]="type (.*?) cannot be used prior to \'\\:\\:\' because it has no members", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"333489bba35d",1238195448,"Initial implementation of parsing, semantic analysis, and template"}, | ||
[k]={{cb,850,"bool Sema::ActOnCXXNestedNameSpecifier(Scope *S, CXXScopeSpec &SS, SourceLocation TemplateKWLoc, TemplateTy OpaqueTemplate, SourceLocation TemplateNameLoc, SourceLocation LAngleLoc, ASTTemplateArgsPtr TemplateArgsIn, SourceLocation RAngleLoc, SourceLocation CCLoc, bool EnteringContext) {\n // Alias template specializations can produce types which are not valid\n // nested name specifiers.\n if (!T->isDependentType() && !T->getAs<TagType>()) {\n Diag(TemplateNameLoc, diag::err_nested_name_spec_non_tag) << T;"},{"clang/lib/Sema/SemaTemplateInstantiate.cpp",1196,"NamedDecl *TemplateInstantiator::TransformFirstQualifierInScope(NamedDecl *D, SourceLocation Loc) {\n // If the first part of the nested-name-specifier was a template type\n // parameter, instantiate that type parameter down to a tag type.\n if (TemplateTypeParmDecl *TTPD = dyn_cast_or_null<TemplateTypeParmDecl>(D)) {\n if (TTP->getDepth() < TemplateArgs.getNumLevels()) {\n getSema().Diag(Loc, diag::err_nested_name_spec_non_tag) << T;"}} | |||
}, | }, | ||
[" | ["err_nested_non_static_member_use"]={ | ||
[ | [j]="... A of B from nested type C", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%select{call to non-static member function|use of non-static data member}0 %2 of %1 from nested type %3", | ||
[ | [f]=n, | ||
[ | [g]="(?:call to non\\-static member function|use of non\\-static data member) (.*?) of (.*?) from nested type (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"fa0a1f531f7d",1333588384,"Improve diagnostics for invalid use of non-static members / this:"}, | ||
[k]={{fb,211,"/// Diagnose a reference to a field with no object available.\nstatic void diagnoseInstanceReference(Sema &SemaRef, const CXXScopeSpec &SS, NamedDecl *Rep, const DeclarationNameInfo &nameInfo) {\n if (IsField && InStaticMethod)\n else if (ContextClass && RepClass && SS.isEmpty() && !InStaticMethod && !RepClass->Equals(ContextClass) && RepClass->Encloses(ContextClass))\n SemaRef.Diag(Loc, diag::err_nested_non_static_member_use) << IsField << RepClass << nameInfo.getName() << ContextClass << Range;"}} | |||
}, | }, | ||
[" | ["err_nested_pointer_qualifier_mismatch"]={ | ||
[ | [j]="... discards qualifiers in nested pointer types", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%select{%diff{assigning to $ from $|assigning to different types}0,1|%diff{passing $ to parameter of type $|passing to parameter of different type}0,1|%diff{returning $ from a function with result type $|returning from function with different return type}0,1|%diff{converting $ to type $|converting between types}0,1|%diff{initializing $ with an expression of type $|initializing with expression of different type}0,1|%diff{sending $ to parameter of type $|sending to parameter of different type}0,1|%diff{casting $ to type $|casting between types}0,1}2 discards qualifiers in nested pointer types", | ||
[ | [f]=n, | ||
[ | [g]="(?:(?:assigning to (.*?) from (.*?)|assigning to different types)|(?:passing (.*?) to parameter of type (.*?)|passing to parameter of different type)|(?:returning (.*?) from a function with result type (.*?)|returning from function with different return type)|(?:converting (.*?) to type (.*?)|converting between types)|(?:initializing (.*?) with an expression of type (.*?)|initializing with expression of different type)|(?:sending (.*?) to parameter of type (.*?)|sending to parameter of different type)|(?:casting (.*?) to type (.*?)|casting between types)) discards qualifiers in nested pointer types", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"6f3de50ca73e",1257666394,"Test commit - minor terminology change to my recent patch suggested by John McCall"}, | ||
[k]={{q,15315,"bool Sema::DiagnoseAssignmentResult(AssignConvertType ConvTy, SourceLocation Loc, QualType DstType, QualType SrcType, Expr *SrcExpr, AssignmentAction Action, bool *Complained) {\n case IncompatibleNestedPointerQualifiers:\n if (getLangOpts().CPlusPlus) {\n DiagKind = diag::err_nested_pointer_qualifier_mismatch;"}} | |||
}, | }, | ||
[" | ["err_nested_redefinition"]={ | ||
[ | [j]="nested redefinition of A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="nested redefinition of %0", | ||
[ | [f]=n, | ||
[ | [g]="nested redefinition of (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{p,15195,"/// This is invoked when we see \'struct foo\' or \'struct {\'. In the\n/// former case, Name will be non-null. In the later case, Name will be null.\n/// TagSpec indicates what kind of tag this is. TUK indicates whether this is a\n/// reference/declaration/definition of a tag.\n///\n/// \\param IsTypeSpecifier \\c true if this is a type-specifier (or\n/// trailing-type-specifier) other than one in an alias-declaration.\n///\n/// \\param SkipBody If non-null, will be set to indicate if the caller should\n/// skip the definition of this tag and treat it as if it were a declaration.\nDeclResult Sema::ActOnTag(Scope *S, unsigned TagSpec, TagUseKind TUK, SourceLocation KWLoc, CXXScopeSpec &SS, IdentifierInfo *Name, SourceLocation NameLoc, const ParsedAttributesView &Attrs, AccessSpecifier AS, SourceLocation ModulePrivateLoc, MultiTemplateParamsArg TemplateParameterLists, bool &OwnedDecl, bool &IsDependent, SourceLocation ScopedEnumKWLoc, bool ScopedEnumUsesClassTag, TypeResult UnderlyingType, bool IsTypeSpecifier, bool IsTemplateParamOrArg, OffsetOfKind OOK, SkipBodyInfo *SkipBody) {\n if (!Previous.empty()) {\n if (TagDecl *PrevTagDecl = dyn_cast<TagDecl>(PrevDecl)) {\n // If this is a use of a previous tag, or if the tag is already declared\n // in the same scope (so that the definition/declaration completes or\n // rementions the tag), reuse the decl.\n if (TUK == TUK_Reference || TUK == TUK_Friend || isDeclInScope(DirectPrevDecl, SearchDC, S, SS.isNotEmpty() || isMemberSpecialization)) {\n if (!Invalid) {\n // Diagnose attempts to redefine a tag.\n if (TUK == TUK_Definition) {\n if (NamedDecl *Def = PrevTagDecl->getDefinition()) {\n } else {\n if (TD->isBeingDefined()) {\n Diag(NameLoc, diag::err_nested_redefinition) << Name;"}} | |||
}, | }, | ||
[" | ["err_new_abi_tag_on_redeclaration"]={ | ||
[ | [j]="\'abi_tag\' A missing in original declaration", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'abi_tag\' %0 missing in original declaration", | ||
[ | [f]=n, | ||
[ | [g]="\'abi_tag\' (.*?) missing in original declaration", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"bf17ecf59a9b",1457537453,"[GCC] PR23529 Sema part of attrbute abi_tag support"}, | ||
[k]={{p,2938,"/// mergeDeclAttributes - Copy attributes from the Old decl to the New one.\nvoid Sema::mergeDeclAttributes(NamedDecl *New, Decl *Old, AvailabilityMergeKind AMK) {\n // Re-declaration cannot add abi_tag\'s.\n if (const auto *NewAbiTagAttr = New->getAttr<AbiTagAttr>()) {\n if (const auto *OldAbiTagAttr = Old->getAttr<AbiTagAttr>()) {\n for (const auto &NewTag : NewAbiTagAttr->tags()) {\n if (!llvm::is_contained(OldAbiTagAttr->tags(), NewTag)) {\n Diag(NewAbiTagAttr->getLocation(), diag::err_new_abi_tag_on_redeclaration) << NewTag;"}} | |||
}, | }, | ||
[" | ["err_new_array_init_args"]={ | ||
[ | [j]="array \'new\' cannot have initialization arguments", | ||
[d]= | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="array \'new\' cannot have initialization arguments", | ||
[ | [f]=n, | ||
[h]= | [g]="array \'new\' cannot have initialization arguments", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"c6bb0e117f98",1272901523,"The array form of \'new\' can never have initializers."}, | ||
[k]={{B,2010,"ExprResult Sema::BuildCXXNew(SourceRange Range, bool UseGlobal, SourceLocation PlacementLParen, MultiExprArg PlacementArgs, SourceLocation PlacementRParen, SourceRange TypeIdParens, QualType AllocType, TypeSourceInfo *AllocTypeInfo, std::optional<Expr *> ArraySize, SourceRange DirectInitRange, Expr *Initializer) {\n // Array \'new\' can\'t have any initializers except empty parentheses.\n // Initializer lists are also allowed, in C++11. Rely on the parser for the\n // dialect distinction.\n if (ArraySize && !isLegalArrayNewInitializer(initStyle, Initializer)) {\n Diag(StartLoc, diag::err_new_array_init_args) << InitRange;"}} | |||
}, | }, | ||
[" | ["err_new_array_nonconst"]={ | ||
[ | [j]="only the first dimension of an allocated array may have dynamic size", | ||
[d]= | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="only the first dimension of an allocated array may have dynamic size", | ||
[ | [f]=n, | ||
[h]= | [g]="only the first dimension of an allocated array may have dynamic size", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{B,1662,"/// Parsed a C++ \'new\' expression (C++ 5.3.4).\n///\n/// E.g.:\n/// @code new (memory) int[size][4] @endcode\n/// or\n/// @code ::new Foo(23, \"hello\") @endcode\n///\n/// \\param StartLoc The first location of the expression.\n/// \\param UseGlobal True if \'new\' was prefixed with \'::\'.\n/// \\param PlacementLParen Opening paren of the placement arguments.\n/// \\param PlacementArgs Placement new arguments.\n/// \\param PlacementRParen Closing paren of the placement arguments.\n/// \\param TypeIdParens If the type is in parens, the source range.\n/// \\param D The type to be allocated, as well as array dimensions.\n/// \\param Initializer The initializing expression or initializer-list, or null\n/// if there is none.\nExprResult Sema::ActOnCXXNew(SourceLocation StartLoc, bool UseGlobal, SourceLocation PlacementLParen, MultiExprArg PlacementArgs, SourceLocation PlacementRParen, SourceRange TypeIdParens, Declarator &D, Expr *Initializer) {\n // Every dimension shall be of constant size.\n if (ArraySize) {\n for (unsigned I = 0, N = D.getNumTypeObjects(); I < N; ++I) {\n if (Expr *NumElts = (Expr *)Array.NumElts) {\n if (!NumElts->isTypeDependent() && !NumElts->isValueDependent()) {\n // FIXME: GCC permits constant folding here. We should either do so consistently\n // or not do so at all, rather than changing behavior in C++14 onwards.\n if (getLangOpts().CPlusPlus14) {\n } else {\n Array.NumElts = VerifyIntegerConstantExpression(NumElts, nullptr, diag::err_new_array_nonconst, AllowFold).get();"}} | |||
}, | }, | ||
[" | ["err_new_array_of_auto"]={ | ||
[ | [j]="cannot allocate array of \'auto\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot allocate array of \'auto\'", | ||
[ | [f]=n, | ||
[ | [g]="cannot allocate array of \'auto\'", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"30482bc78659",1298171975,"Implement the C++0x deduced \'auto\' feature."}, | ||
[k]={{B,1634,"/// Parsed a C++ \'new\' expression (C++ 5.3.4).\n///\n/// E.g.:\n/// @code new (memory) int[size][4] @endcode\n/// or\n/// @code ::new Foo(23, \"hello\") @endcode\n///\n/// \\param StartLoc The first location of the expression.\n/// \\param UseGlobal True if \'new\' was prefixed with \'::\'.\n/// \\param PlacementLParen Opening paren of the placement arguments.\n/// \\param PlacementArgs Placement new arguments.\n/// \\param PlacementRParen Closing paren of the placement arguments.\n/// \\param TypeIdParens If the type is in parens, the source range.\n/// \\param D The type to be allocated, as well as array dimensions.\n/// \\param Initializer The initializing expression or initializer-list, or null\n/// if there is none.\nExprResult Sema::ActOnCXXNew(SourceLocation StartLoc, bool UseGlobal, SourceLocation PlacementLParen, MultiExprArg PlacementArgs, SourceLocation PlacementRParen, SourceRange TypeIdParens, Declarator &D, Expr *Initializer) {\n // If the specified type is an array, unwrap it and save the expression.\n if (D.getNumTypeObjects() > 0 && D.getTypeObject(0).Kind == DeclaratorChunk::Array) {\n if (D.getDeclSpec().hasAutoTypeSpec())\n return ExprError(Diag(Chunk.Loc, diag::err_new_array_of_auto) << D.getSourceRange());"}} | |||
}, | }, | ||
[" | ["err_new_array_size_unknown_from_init"]={ | ||
[ | [j]="cannot determine allocated array size from initializer", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot determine allocated array size from initializer", | ||
[ | [f]=n, | ||
[ | [g]="cannot determine allocated array size from initializer", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"b9fb121a62de",1557114435,"[c++20] Implement P1009R2: allow omitting the array bound in an array"}, | ||
[k]={{B,2050,"ExprResult Sema::BuildCXXNew(SourceRange Range, bool UseGlobal, SourceLocation PlacementLParen, MultiExprArg PlacementArgs, SourceLocation PlacementRParen, SourceRange TypeIdParens, QualType AllocType, TypeSourceInfo *AllocTypeInfo, std::optional<Expr *> ArraySize, SourceRange DirectInitRange, Expr *Initializer) {\n // If we can perform the initialization, and we\'ve not already done so,\n // do it now.\n if (!AllocType->isDependentType() && !Expr::hasAnyTypeDependentArguments(Exprs)) {\n if (ArraySize && !*ArraySize) {\n if (CAT) {\n } else {\n Diag(TypeRange.getEnd(), diag::err_new_array_size_unknown_from_init) << Initializer->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_new_incomplete_or_sizeless_type"]={ | ||
[ | [j]="allocation of ... type A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="allocation of %select{incomplete|sizeless}0 type %1", | ||
[ | [f]=n, | ||
[ | [g]="allocation of (?:incomplete|sizeless) type (.*?)", | ||
[h]= | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={T,1576908663,U}, | ||
[ | [k]={{B,2079,"/// Checks that a type is suitable as the allocated type\n/// in a new-expression.\nbool Sema::CheckAllocatedType(QualType AllocType, SourceLocation Loc, SourceRange R) {\n else if (!AllocType->isDependentType() && RequireCompleteSizedType(Loc, AllocType, diag::err_new_incomplete_or_sizeless_type, R))"}} | ||
}, | }, | ||
[" | ["err_no_accessor_for_property"]={ | ||
[ | [j]="no ... defined for property A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="no %select{getter|setter}0 defined for property %1", | ||
[ | [f]=n, | ||
[ | [g]="no (?:getter|setter) defined for property (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"213cf41a5874",1388075704,"s/getter_setter/accessor No functional changes intended."}, | ||
[k]={{pb,1202,"ExprResult MSPropertyOpBuilder::buildGet() {\n if (!RefExpr->getPropertyDecl()->hasGetter()) {\n S.Diag(RefExpr->getMemberLoc(), diag::err_no_accessor_for_property) << 0 /* getter */ << RefExpr->getPropertyDecl();"},{pb,1223,"ExprResult MSPropertyOpBuilder::buildSet(Expr *op, SourceLocation sl, bool captureSetValueAsResult) {\n if (!RefExpr->getPropertyDecl()->hasSetter()) {\n S.Diag(RefExpr->getMemberLoc(), diag::err_no_accessor_for_property) << 1 /* setter */ << RefExpr->getPropertyDecl();"}} | |||
}, | }, | ||
[" | ["err_no_base_classes"]={ | ||
[ | [j]="invalid use of \'__super\', A has no base classes", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="invalid use of \'__super\', %0 has no base classes", | ||
[ | [f]=n, | ||
[ | [g]="invalid use of \'__super\', (.*?) has no base classes", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"67860249e064",1411691300,"-ms-extensions: Implement __super scope specifier (PR13236)."}, | ||
[k]={{cb,312,"bool Sema::ActOnSuperScopeSpecifier(SourceLocation SuperLoc, SourceLocation ColonColonLoc, CXXScopeSpec &SS) {\n if (!RD) {\n } else if (RD->getNumBases() == 0) {\n Diag(SuperLoc, diag::err_no_base_classes) << RD->getName();"}} | |||
}, | }, | ||
[" | ["err_no_declarators"]={ | ||
[ | [j]="declaration does not declare anything", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="declaration does not declare anything", | ||
[ | [f]=n, | ||
[ | [g]="declaration does not declare anything", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={z,1236199783,A}, | ||
[k]={{p,4690,"/// ParsedFreeStandingDeclSpec - This method is invoked when a declspec with\n/// no declarator (e.g. \"struct foo;\") is parsed. It also accepts template\n/// parameters to cope with template friend declarations.\nDecl *Sema::ParsedFreeStandingDeclSpec(Scope *S, AccessSpecifier AS, DeclSpec &DS, const ParsedAttributesView &DeclAttrs, MultiTemplateParamsArg TemplateParams, bool IsExplicitInstantiation, RecordDecl *&AnonRecord) {\n // C 6.7/2:\n // A declaration [...] shall declare at least a declarator [...], a tag,\n // or the members of an enumeration.\n // C++ [dcl.dcl]p3:\n // [If there are no declarators], and except for the declaration of an\n // unnamed bit-field, the decl-specifier-seq shall introduce one or more\n // names into the program, or shall redeclare a name introduced by a\n // previous declaration.\n if (!DeclaresAnything) {\n Diag(DS.getBeginLoc(), (IsExplicitInstantiation || !TemplateParams.empty()) ? diag::err_no_declarators : diag::ext_no_declarators) << DS.getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_no_dynamic_cast_with_fno_rtti"]={ | ||
[ | [j]="use of dynamic_cast requires -frtti", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="use of dynamic_cast requires -frtti", | ||
[ | [f]=n, | ||
[ | [g]="use of dynamic_cast requires \\-frtti", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"cb6f943ada4c",1375345712,"Check dynamic_cast is not used with -fno-rtti, unless it is a noop or can be resolved statically."}, | ||
[k]={{"clang/lib/Sema/SemaCast.cpp",776,"/// CheckDynamicCast - Check that a dynamic_cast\\<DestType\\>(SrcExpr) is valid.\n/// Refer to C++ 5.2.7 for details. Dynamic casts are used mostly for runtime-\n/// checked downcasts in class hierarchies.\nvoid CastOperation::CheckDynamicCast() {\n // dynamic_cast is not available with -fno-rtti.\n // As an exception, dynamic_cast to void* is available because it doesn\'t\n // use RTTI.\n if (!Self.getLangOpts().RTTI && !DestPointee->isVoidType()) {\n Self.Diag(OpRange.getBegin(), diag::err_no_dynamic_cast_with_fno_rtti);"}} | |||
}, | }, | ||
[" | ["err_no_external_assembler"]={ | ||
[ | [j]="there is no external assembler that can be used on this platform", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="there is no external assembler that can be used on this platform", | ||
[ | [f]=n, | ||
[ | [g]="there is no external assembler that can be used on this platform", | ||
[ | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"c8d4f0fa1d27",1385108866,"Tidy up the no-external-assembler diag"}, | ||
[ | [k]={{"clang/lib/Driver/ToolChains/MSVC.cpp",394,"Tool *MSVCToolChain::buildAssembler() const {\n getDriver().Diag(clang::diag::err_no_external_assembler);"},{"clang/lib/Driver/ToolChains/PS4CPU.cpp",268,"Tool *toolchains::PS5CPU::buildAssembler() const {\n getDriver().Diag(clang::diag::err_no_external_assembler);"}} | ||
}, | }, | ||
[" | ["err_no_matching_local_friend"]={ | ||
[ | [j]="no matching function found in local scope", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="no matching function found in local scope", | ||
[ | [f]=n, | ||
[ | [g]="no matching function found in local scope", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"f7cfb2212c65",1286948715,"Support friend function declarations in local classes correctly."}, | ||
[k]={{p,7910,"/// Generate diagnostics for an invalid function redeclaration.\n///\n/// This routine handles generating the diagnostic messages for an invalid\n/// function redeclaration, including finding possible similar declarations\n/// or performing typo correction if there are no previous declarations with\n/// the same name.\n///\n/// Returns a NamedDecl iff typo correction was performed and substituting in\n/// the new declaration name does not cause new errors.\nstatic NamedDecl *DiagnoseInvalidRedeclaration(Sema &SemaRef, LookupResult &Previous, FunctionDecl *NewFD, ActOnFDArgs &ExtraArgs, bool IsLocalFriend, Scope *S) {\n unsigned DiagMsg = IsLocalFriend ? diag::err_no_matching_local_friend : NewFD->getFriendObjectKind() ? diag::err_qualified_friend_no_match : diag::err_member_decl_does_not_match;"}} | |||
}, | }, | ||
[" | ["err_no_matching_local_friend_suggest"]={ | ||
[ | [j]="no matching function A found in local scope; did you mean B?", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="no matching function %0 found in local scope; did you mean %3?", | ||
[ | [f]=n, | ||
[ | [g]="no matching function (.*?) found in local scope; did you mean (.*?)\\?", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"fd81a350e262",1313691552,"Rework DiagnoseInvalidRedeclaration to add the ability to correct typos when"}, | ||
[k]={{p,7970,"/// Generate diagnostics for an invalid function redeclaration.\n///\n/// This routine handles generating the diagnostic messages for an invalid\n/// function redeclaration, including finding possible similar declarations\n/// or performing typo correction if there are no previous declarations with\n/// the same name.\n///\n/// Returns a NamedDecl iff typo correction was performed and substituting in\n/// the new declaration name does not cause new errors.\nstatic NamedDecl *DiagnoseInvalidRedeclaration(Sema &SemaRef, LookupResult &Previous, FunctionDecl *NewFD, ActOnFDArgs &ExtraArgs, bool IsLocalFriend, Scope *S) {\n if (!Prev.empty()) {\n } else if ((Correction = SemaRef.CorrectTypo(Prev.getLookupNameInfo(), Prev.getLookupKind(), S, &ExtraArgs.D.getCXXScopeSpec(), CCC, Sema::CTK_ErrorRecovery, IsLocalFriend ? nullptr : NewDC))) {\n if (Result) {\n SemaRef.diagnoseTypo(Correction, SemaRef.PDiag(IsLocalFriend ? diag::err_no_matching_local_friend_suggest : diag::err_member_decl_does_not_match_suggest) << Name << NewDC << IsDefinition);"}} | |||
}, | }, | ||
[" | ["err_no_matching_param"]={ | ||
[ | [j]="parameter named A is missing", | ||
[d]= | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="parameter named %0 is missing", | ||
[ | [f]=n, | ||
[h]= | [g]="parameter named (.*?) is missing", | ||
[ | [h]=a, | ||
[ | [i]=s, | ||
[ | [b]={z,1236199783,A}, | ||
[k]={{Q,1423,"/// ParseKNRParamDeclarations - Parse \'declaration-list[opt]\' which provides\n/// types for a function with a K&R-style identifier list for arguments.\nvoid Parser::ParseKNRParamDeclarations(Declarator &D) {\n // Read all the argument declarations.\n while (isDeclarationSpecifier(ImplicitTypenameContext::No)) {\n // Handle the full declarator list.\n while (true) {\n if (Param &&\n // Scan the argument list looking for the correct param to apply this\n // type.\n for (unsigned i = 0;; ++i) {\n // C99 6.9.1p6: those declarators shall declare only identifiers from\n // the identifier list.\n if (i == FTI.NumParams) {\n Diag(ParmDeclarator.getIdentifierLoc(), diag::err_no_matching_param) << ParmDeclarator.getIdentifier();"}} | |||
}, | }, | ||
[" | ["err_no_member"]={ | ||
[ | [j]="no member named A in B", | ||
[d]= | [c]=l, | ||
[f]= | [d]=m, | ||
[h]=" | [e]="no member named %0 in %1", | ||
[ | [f]=n, | ||
[g]="no member named (.*?) in (.*?)", | |||
[h]=a, | |||
[i]=o, | |||
[b]={"e40876a50cf3",1255468604,"Unify our diagnostic printing for errors of the form, \"we didn\'t like"}, | |||
[k]={{eb,276,"static ExprResult buildMemberCall(Sema &S, Expr *Base, SourceLocation Loc, StringRef Name, MultiExprArg Args) {\n // We meant exactly what we asked for. No need for typo correction.\n if (auto *TE = dyn_cast<TypoExpr>(Result.get())) {\n S.Diag(Loc, diag::err_no_member) << NameInfo.getName() << Base->getType()->getAsCXXRecordDecl() << Base->getSourceRange();"},{cb,740,"/// Build a new nested-name-specifier for \"identifier::\", as described\n/// by ActOnCXXNestedNameSpecifier.\n///\n/// \\param S Scope in which the nested-name-specifier occurs.\n/// \\param IdInfo Parser information about an identifier in the\n/// nested-name-spec.\n/// \\param EnteringContext If true, enter the context specified by the\n/// nested-name-specifier.\n/// \\param SS Optional nested name specifier preceding the identifier.\n/// \\param ScopeLookupResult Provides the result of name lookup within the\n/// scope of the nested-name-specifier that was computed at template\n/// definition time.\n/// \\param ErrorRecoveryLookup Specifies if the method is called to improve\n/// error recovery and what kind of recovery is performed.\n/// \\param IsCorrectedToColon If not null, suggestion of replace \'::\' -> \':\'\n/// are allowed. The bool value pointed by this parameter is set to\n/// \'true\' if the identifier is treated as if it was followed by \':\',\n/// not \'::\'.\n/// \\param OnlyNamespace If true, only considers namespaces in lookup.\n///\n/// This routine differs only slightly from ActOnCXXNestedNameSpecifier, in\n/// that it contains an extra parameter \\p ScopeLookupResult, which provides\n/// the result of name lookup within the scope of the nested-name-specifier\n/// that was computed at template definition time.\n///\n/// If ErrorRecoveryLookup is true, then this call is used to improve error\n/// recovery. This means that it should not emit diagnostics, it should\n/// just return true on failure. It also means it should only return a valid\n/// scope if it *knows* that the result is correct. It should not return in a\n/// dependent context, for example. Nor will it extend \\p SS with the scope\n/// specifier.\nbool Sema::BuildCXXNestedNameSpecifier(Scope *S, NestedNameSpecInfo &IdInfo, bool EnteringContext, CXXScopeSpec &SS, NamedDecl *ScopeLookupResult, bool ErrorRecoveryLookup, bool *IsCorrectedToColon, bool OnlyNamespace) {\n if (!Found.empty()) {\n } else if (SS.isSet())\n Diag(IdInfo.IdentifierLoc, diag::err_no_member) << IdInfo.Identifier << LookupCtx << SS.getRange();"},{p,7097,"NamedDecl *Sema::ActOnVariableDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamLists, bool &AddToScope, ArrayRef<BindingDecl *> Bindings) {\n if (!getLangOpts().CPlusPlus) {\n } else {\n // Merge the decl with the existing one if appropriate.\n if (!Previous.empty()) {\n } else if (D.getCXXScopeSpec().isSet()) {\n Diag(D.getIdentifierLoc(), diag::err_no_member) << Name << computeDeclContext(D.getCXXScopeSpec(), true) << D.getCXXScopeSpec().getRange();"},{r,10982,"/// Builds a using declaration.\n///\n/// \\param IsInstantiation - Whether this call arises from an\n/// instantiation of an unresolved using declaration. We treat\n/// the lookup differently for these declarations.\nNamedDecl *Sema::BuildUsingDeclaration(Scope *S, AccessSpecifier AS, SourceLocation UsingLoc, bool HasTypenameKeyword, SourceLocation TypenameLoc, CXXScopeSpec &SS, DeclarationNameInfo NameInfo, SourceLocation EllipsisLoc, const ParsedAttributesView &AttrList, bool IsInstantiation, bool IsUsingIfExists) {\n // Try to correct typos if possible. If constructor name lookup finds no\n // results, that means the named class has no explicit constructors, and we\n // suppressed declaring implicit ones (probably because it\'s dependent or\n // invalid).\n if (R.empty() && NameInfo.getName().getNameKind() != DeclarationName::CXXConstructorName) {\n if (TypoCorrection Corrected = CorrectTypo(R.getLookupNameInfo(), R.getLookupKind(), S, &SS, CCC, CTK_ErrorRecovery)) {\n } else {\n Diag(IdentLoc, diag::err_no_member) << NameInfo.getName() << LookupContext << SS.getRange();"},{q,1944,"static void emitEmptyLookupTypoDiagnostic(const TypoCorrection &TC, Sema &SemaRef, const CXXScopeSpec &SS, DeclarationName Typo, SourceLocation TypoLoc, ArrayRef<Expr *> Args, unsigned DiagnosticID, unsigned DiagnosticSuggestID) {\n if (!TC) {\n // Emit a special diagnostic for failed member lookups.\n // FIXME: computing the declaration context might fail here (?)\n if (Ctx)\n SemaRef.Diag(TypoLoc, diag::err_no_member) << Typo << Ctx << SS.getRange();"},{q,2145,"/// Diagnose an empty lookup.\n///\n/// \\return false if new lookup candidates were found\nbool Sema::DiagnoseEmptyLookup(Scope *S, CXXScopeSpec &SS, LookupResult &R, CorrectionCandidateCallback &CCC, TemplateArgumentListInfo *ExplicitTemplateArgs, ArrayRef<Expr *> Args, TypoExpr **Out) {\n // Emit a special diagnostic for failed member lookups.\n // FIXME: computing the declaration context might fail here (?)\n if (!SS.isEmpty()) {\n Diag(R.getNameLoc(), diag::err_no_member) << Name << computeDeclContext(SS, false) << SS.getRange();"},{q,2448,"/// BuildQualifiedDeclarationNameExpr - Build a C++ qualified\n/// declaration name, generally during template instantiation.\n/// There\'s a large number of things which don\'t need to be done along\n/// this path.\nExprResult Sema::BuildQualifiedDeclarationNameExpr(CXXScopeSpec &SS, const DeclarationNameInfo &NameInfo, bool IsAddressOfOperand, const Scope *S, TypeSourceInfo **RecoveryTSI) {\n if (R.empty()) {\n Diag(NameInfo.getLoc(), diag::err_no_member) << NameInfo.getName() << DC << SS.getRange();"},{q,14471,"ExprResult Sema::BuildBuiltinOffsetOf(SourceLocation BuiltinLoc, TypeSourceInfo *TInfo, ArrayRef<OffsetOfComponent> Components, SourceLocation RParenLoc) {\n for (const OffsetOfComponent &OC : Components) {\n if (!MemberDecl)\n return ExprError(Diag(BuiltinLoc, diag::err_no_member) << OC.U.IdentInfo << RD << SourceRange(OC.LocStart, OC.LocEnd));"},{fb,619,"static bool LookupMemberExprInRecord(Sema &SemaRef, LookupResult &R, Expr *BaseExpr, const RecordType *RTy, SourceLocation OpLoc, bool IsArrow, CXXScopeSpec &SS, bool HasTemplateArgs, SourceLocation TemplateKWLoc, TypoExpr *&TE) {\n TE = SemaRef.CorrectTypoDelayed(\n [=, &SemaRef](const TypoCorrection &TC) {\n if (TC) {\n } else {\n SemaRef.Diag(TypoLoc, diag::err_no_member) << Typo << DC << BaseRange;"},{fb,841,"ExprResult Sema::BuildMemberReferenceExpr(Expr *BaseExpr, QualType BaseExprType, SourceLocation OpLoc, bool IsArrow, const CXXScopeSpec &SS, SourceLocation TemplateKWLoc, NamedDecl *FirstQualifierInScope, LookupResult &R, const TemplateArgumentListInfo *TemplateArgs, const Scope *S, bool SuppressQualifierCheck, ActOnMemberAccessExtraArgs *ExtraArgs) {\n if (R.empty()) {\n Diag(R.getNameLoc(), diag::err_no_member) << MemberName << DC << (BaseExpr ? BaseExpr->getSourceRange() : SourceRange());"},{K,4175,"// We actually only call this from template instantiation.\nExprResult Sema::BuildQualifiedTemplateIdExpr(CXXScopeSpec &SS, SourceLocation TemplateKWLoc, const DeclarationNameInfo &NameInfo, const TemplateArgumentListInfo *TemplateArgs) {\n if (R.empty()) {\n Diag(NameInfo.getLoc(), diag::err_no_member) << NameInfo.getName() << DC << SS.getRange();"},{K,4272,"/// Form a template name from a name that is syntactically required to name a\n/// template, either due to use of the \'template\' keyword or because a name in\n/// this syntactic context is assumed to name a template (C++ [temp.names]p2-4).\n///\n/// This action forms a template name given the name of the template and its\n/// optional scope specifier. This is used when the \'template\' keyword is used\n/// or when the parsing context unambiguously treats a following \'<\' as\n/// introducing a template argument list. Note that this may produce a\n/// non-dependent template name if we can perform the lookup now and identify\n/// the named template.\n///\n/// For example, given \"x.MetaFun::template apply\", the scope specifier\n/// \\p SS will be \"MetaFun::\", \\p TemplateKWLoc contains the location\n/// of the \"template\" keyword, and \"apply\" is the \\p Name.\nTemplateNameKind Sema::ActOnTemplateName(Scope *S, CXXScopeSpec &SS, SourceLocation TemplateKWLoc, const UnqualifiedId &Name, ParsedType ObjectType, bool EnteringContext, TemplateTy &Result, bool AllowInjectedClassName) {\n if (!MemberOfUnknownSpecialization) {\n if (!LookupTemplateName(R, S, SS, ObjectType.get(), EnteringContext, MOUS, RTK, nullptr, /*AllowTypoCorrection=*/false) && !R.isAmbiguous()) {\n if (LookupCtx)\n Diag(Name.getBeginLoc(), diag::err_no_member) << DNI.getName() << LookupCtx << SS.getRange();"}} | |||
}, | }, | ||
[" | ["err_no_member_overloaded_arrow"]={ | ||
[ | [j]="no member named A in B; did you mean to use \'->\' instead of \'.\'?", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="no member named %0 in %1; did you mean to use \'->\' instead of \'.\'?", | ||
[ | [f]=n, | ||
[ | [g]="no member named (.*?) in (.*?); did you mean to use \'\\-\\>\' instead of \'\\.\'\\?", | ||
[h]= | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"76e07347ba02",1335383394,"Add an error message with fixit hint for changing \'.\' to \'->\'."}, | ||
[ | [k]={{fb,836,"ExprResult Sema::BuildMemberReferenceExpr(Expr *BaseExpr, QualType BaseExprType, SourceLocation OpLoc, bool IsArrow, const CXXScopeSpec &SS, SourceLocation TemplateKWLoc, NamedDecl *FirstQualifierInScope, LookupResult &R, const TemplateArgumentListInfo *TemplateArgs, const Scope *S, bool SuppressQualifierCheck, ActOnMemberAccessExtraArgs *ExtraArgs) {\n if (R.empty()) {\n if (ExtraArgs) {\n if (RetryExpr.isUsable()) {\n Diag(OpLoc, diag::err_no_member_overloaded_arrow) << MemberName << DC << FixItHint::CreateReplacement(OpLoc, \"->\");"}} | ||
}, | }, | ||
[" | ["err_no_member_suggest"]={ | ||
[ | [j]="no member named A in B; did you mean ...C?", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="no member named %0 in %1; did you mean %select{|simply }2%3?", | ||
[ | [f]=n, | ||
[ | [g]="no member named (.*?) in (.*?); did you mean (?:|simply )(.*?)\\?", | ||
[b]= | [h]=a, | ||
[ | [i]=o, | ||
[b]={"598b08f8182e",1262236813,"Implement typo correction for id-expressions, e.g.,"}, | |||
[k]={{cb,569,"/// Build a new nested-name-specifier for \"identifier::\", as described\n/// by ActOnCXXNestedNameSpecifier.\n///\n/// \\param S Scope in which the nested-name-specifier occurs.\n/// \\param IdInfo Parser information about an identifier in the\n/// nested-name-spec.\n/// \\param EnteringContext If true, enter the context specified by the\n/// nested-name-specifier.\n/// \\param SS Optional nested name specifier preceding the identifier.\n/// \\param ScopeLookupResult Provides the result of name lookup within the\n/// scope of the nested-name-specifier that was computed at template\n/// definition time.\n/// \\param ErrorRecoveryLookup Specifies if the method is called to improve\n/// error recovery and what kind of recovery is performed.\n/// \\param IsCorrectedToColon If not null, suggestion of replace \'::\' -> \':\'\n/// are allowed. The bool value pointed by this parameter is set to\n/// \'true\' if the identifier is treated as if it was followed by \':\',\n/// not \'::\'.\n/// \\param OnlyNamespace If true, only considers namespaces in lookup.\n///\n/// This routine differs only slightly from ActOnCXXNestedNameSpecifier, in\n/// that it contains an extra parameter \\p ScopeLookupResult, which provides\n/// the result of name lookup within the scope of the nested-name-specifier\n/// that was computed at template definition time.\n///\n/// If ErrorRecoveryLookup is true, then this call is used to improve error\n/// recovery. This means that it should not emit diagnostics, it should\n/// just return true on failure. It also means it should only return a valid\n/// scope if it *knows* that the result is correct. It should not return in a\n/// dependent context, for example. Nor will it extend \\p SS with the scope\n/// specifier.\nbool Sema::BuildCXXNestedNameSpecifier(Scope *S, NestedNameSpecInfo &IdInfo, bool EnteringContext, CXXScopeSpec &SS, NamedDecl *ScopeLookupResult, bool ErrorRecoveryLookup, bool *IsCorrectedToColon, bool OnlyNamespace) {\n if (Found.empty() && !ErrorRecoveryLookup && !getLangOpts().MSVCCompat) {\n if (TypoCorrection Corrected = CorrectTypo(Found.getLookupNameInfo(), Found.getLookupKind(), S, &SS, CCC, CTK_ErrorRecovery, LookupCtx, EnteringContext)) {\n if (LookupCtx) {\n diagnoseTypo(Corrected, PDiag(diag::err_no_member_suggest) << Name << LookupCtx << DroppedSpecifier << SS.getRange());"},{p,890,"Corrected:\n case LookupResult::NotFound:\n // Perform typo correction to determine if there is another name that is\n // close to this name.\n if (!SecondTry && CCC) {\n if (TypoCorrection Corrected = CorrectTypo(Result.getLookupNameInfo(), Result.getLookupKind(), S, &SS, *CCC, CTK_ErrorRecovery)) {\n unsigned QualifiedDiag = diag::err_no_member_suggest;"},{r,10946,"/// Builds a using declaration.\n///\n/// \\param IsInstantiation - Whether this call arises from an\n/// instantiation of an unresolved using declaration. We treat\n/// the lookup differently for these declarations.\nNamedDecl *Sema::BuildUsingDeclaration(Scope *S, AccessSpecifier AS, SourceLocation UsingLoc, bool HasTypenameKeyword, SourceLocation TypenameLoc, CXXScopeSpec &SS, DeclarationNameInfo NameInfo, SourceLocation EllipsisLoc, const ParsedAttributesView &AttrList, bool IsInstantiation, bool IsUsingIfExists) {\n // Try to correct typos if possible. If constructor name lookup finds no\n // results, that means the named class has no explicit constructors, and we\n // suppressed declaring implicit ones (probably because it\'s dependent or\n // invalid).\n if (R.empty() && NameInfo.getName().getNameKind() != DeclarationName::CXXConstructorName) {\n if (TypoCorrection Corrected = CorrectTypo(R.getLookupNameInfo(), R.getLookupKind(), S, &SS, CCC, CTK_ErrorRecovery)) {\n diagnoseTypo(Corrected, PDiag(diag::err_no_member_suggest) << NameInfo.getName() << LookupContext << 0 << SS.getRange());"},{q,1956,"static void emitEmptyLookupTypoDiagnostic(const TypoCorrection &TC, Sema &SemaRef, const CXXScopeSpec &SS, DeclarationName Typo, SourceLocation TypoLoc, ArrayRef<Expr *> Args, unsigned DiagnosticID, unsigned DiagnosticSuggestID) {\n if (!Ctx)\n else\n SemaRef.diagnoseTypo(TC, SemaRef.PDiag(diag::err_no_member_suggest) << Typo << Ctx << DroppedSpecifier << SS.getRange(), SemaRef.PDiag(NoteID));"},{q,2134,"/// Diagnose an empty lookup.\n///\n/// \\return false if new lookup candidates were found\nbool Sema::DiagnoseEmptyLookup(Scope *S, CXXScopeSpec &SS, LookupResult &R, CorrectionCandidateCallback &CCC, TemplateArgumentListInfo *ExplicitTemplateArgs, ArrayRef<Expr *> Args, TypoExpr **Out) {\n if (S && Out) {\n } else if (S && (Corrected = CorrectTypo(R.getLookupNameInfo(), R.getLookupKind(), S, &SS, CCC, CTK_ErrorRecovery))) {\n if (AcceptableWithRecovery || AcceptableWithoutRecovery) {\n if (SS.isEmpty())\n else\n diagnoseTypo(Corrected, PDiag(diag::err_no_member_suggest) << Name << computeDeclContext(SS, false) << DroppedSpecifier << SS.getRange(), PDiag(NoteID), AcceptableWithRecovery);"},{fb,617,"static bool LookupMemberExprInRecord(Sema &SemaRef, LookupResult &R, Expr *BaseExpr, const RecordType *RTy, SourceLocation OpLoc, bool IsArrow, CXXScopeSpec &SS, bool HasTemplateArgs, SourceLocation TemplateKWLoc, TypoExpr *&TE) {\n TE = SemaRef.CorrectTypoDelayed(\n [=, &SemaRef](const TypoCorrection &TC) {\n if (TC) {\n SemaRef.diagnoseTypo(TC, SemaRef.PDiag(diag::err_no_member_suggest) << Typo << DC << DroppedSpecifier << SS.getRange());"},{"clang/unittests/Sema/ExternalSemaSourceTest.cpp",62,"/// Counts the number of typo-correcting diagnostics correcting from one name to\n/// another while still passing all diagnostics along a chain of consumers.\nclass DiagnosticWatcher : public clang::DiagnosticConsumer {\n void HandleDiagnostic(DiagnosticsEngine::Level DiagLevel, const Diagnostic &Info) override {\n } else if (Info.getID() == diag::err_no_member_suggest) {"}} | |||
}, | }, | ||
[" | ["err_no_member_template"]={ | ||
[ | [j]="no template named A in B", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="no template named %0 in %1", | ||
[ | [f]=n, | ||
[ | [g]="no template named (.*?) in (.*?)", | ||
[h]= | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"52f8d19ceda6",1494451936,"Improve diagnosis of unknown template name."}, | ||
[ | [k]={{p,719,"void Sema::DiagnoseUnknownTypeName(IdentifierInfo *&II, SourceLocation IILoc, Scope *S, CXXScopeSpec *SS, ParsedType &SuggestedType, bool IsTemplateName) {\n if (!SS || (!SS->isSet() && !SS->isInvalid()))\n else if (DeclContext *DC = computeDeclContext(*SS, false))\n Diag(IILoc, IsTemplateName ? diag::err_no_member_template : diag::err_typename_nested_not_found) << II << DC << SS->getRange();"}} | ||
}, | }, | ||
[" | ["err_no_member_template_suggest"]={ | ||
[ | [j]="no template named A in B; did you mean ...C?", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="no template named %0 in %1; did you mean %select{|simply }2%3?", | ||
[ | [f]=n, | ||
[ | [g]="no template named (.*?) in (.*?); did you mean (?:|simply )(.*?)\\?", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"ff18cc114111",1262247077,"Typo correction for template names, e.g.,"}, | ||
[k]={{p,681,"void Sema::DiagnoseUnknownTypeName(IdentifierInfo *&II, SourceLocation IILoc, Scope *S, CXXScopeSpec *SS, ParsedType &SuggestedType, bool IsTemplateName) {\n if (TypoCorrection Corrected = CorrectTypo(DeclarationNameInfo(II, IILoc), LookupOrdinaryName, S, SS, CCC, CTK_ErrorRecovery)) {\n if (Corrected.isKeyword()) {\n } else {\n // We found a similarly-named type or interface; suggest that.\n if (!SS || !SS->isSet()) {\n } else if (DeclContext *DC = computeDeclContext(*SS, false)) {\n diagnoseTypo(Corrected, PDiag(IsTemplateName ? diag::err_no_member_template_suggest : diag::err_unknown_nested_typename_suggest) << II << DC << DroppedSpecifier << SS->getRange(), CanRecover);"},{p,896,"Corrected:\n case LookupResult::NotFound:\n // Perform typo correction to determine if there is another name that is\n // close to this name.\n if (!SecondTry && CCC) {\n if (TypoCorrection Corrected = CorrectTypo(Result.getLookupNameInfo(), Result.getLookupKind(), S, &SS, *CCC, CTK_ErrorRecovery)) {\n if (getLangOpts().CPlusPlus && NextToken.is(tok::less) && UnderlyingFirstDecl && isa<TemplateDecl>(UnderlyingFirstDecl)) {\n QualifiedDiag = diag::err_no_member_template_suggest;"},{K,472,"bool Sema::LookupTemplateName(LookupResult &Found, Scope *S, CXXScopeSpec &SS, QualType ObjectType, bool EnteringContext, bool &MemberOfUnknownSpecialization, RequiredTemplateKind RequiredTemplate, AssumedTemplateKind *ATK, bool AllowTypoCorrection) {\n if (Found.empty() && !IsDependent && AllowTypoCorrection) {\n if (TypoCorrection Corrected = CorrectTypo(Found.getLookupNameInfo(), Found.getLookupKind(), S, &SS, FilterCCC, CTK_ErrorRecovery, LookupCtx)) {\n if (Found.isAmbiguous()) {\n } else if (!Found.empty()) {\n if (LookupCtx) {\n diagnoseTypo(Corrected, PDiag(diag::err_no_member_template_suggest) << Name << LookupCtx << DroppedSpecifier << SS.getRange());"}} | |||
}, | }, | ||
[" | ["err_no_nsconstant_string_class"]={ | ||
[ | [j]="cannot find interface declaration for A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot find interface declaration for %0", | ||
[ | [f]=n, | ||
[ | [g]="cannot find interface declaration for (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"0731763efc6f",1272064744,"With -fno-constant-cfstrrings, class NSConstantString"}, | ||
[k]={{O,106,"ExprResult Sema::BuildObjCStringLiteral(SourceLocation AtLoc, StringLiteral *S) {\n if (!Ty.isNull()) {\n } else if (getLangOpts().NoConstantCFStrings) {\n if (ObjCInterfaceDecl *StrIF = dyn_cast_or_null<ObjCInterfaceDecl>(IF)) {\n } else {\n Diag(S->getBeginLoc(), diag::err_no_nsconstant_string_class) << NSIdent << S->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_no_submodule"]={ | ||
[ | [j]="no submodule named A in module \'B\'", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="no submodule named %0 in module \'%1\'", | ||
[ | [f]=n, | ||
[ | [g]="no submodule named (.*?) in module \'(.*?)\'", | ||
[ | [h]=a, | ||
[a]=" | [i]=a, | ||
[ | [b]={"5196bc6b39b5",1322625824,"When loading a module that involves submodules (e.g., std.vector),"}, | ||
[k]={{db,1712,"ModuleLoadResult CompilerInstance::loadModule(SourceLocation ImportLoc, ModuleIdPath Path, Module::NameVisibilityKind Visibility, bool IsInclusionDirective) {\n for (unsigned I = 1, N = Path.size(); I != N; ++I) {\n if (!Sub) {\n getDiagnostics().Report(Path[I].second, diag::err_no_submodule) << Path[I].first << Module->getFullModuleName() << SourceRange(Path[0].second, Path[I - 1].second);"}} | |||
}, | }, | ||
[" | ["err_no_submodule_suggest"]={ | ||
[ | [j]="no submodule named A in module \'B\'; did you mean \'C\'?", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="no submodule named %0 in module \'%1\'; did you mean \'%2\'?", | ||
[ | [f]=n, | ||
[ | [g]="no submodule named (.*?) in module \'(.*?)\'; did you mean \'(.*?)\'\\?", | ||
[ | [h]=a, | ||
[a]=" | [i]=a, | ||
[ | [b]={"5196bc6b39b5",1322625824,"When loading a module that involves submodules (e.g., std.vector),"}, | ||
[k]={{db,1703,"ModuleLoadResult CompilerInstance::loadModule(SourceLocation ImportLoc, ModuleIdPath Path, Module::NameVisibilityKind Visibility, bool IsInclusionDirective) {\n for (unsigned I = 1, N = Path.size(); I != N; ++I) {\n if (!Sub) {\n // If there was a clear winner, user it.\n if (Best.size() == 1) {\n getDiagnostics().Report(Path[I].second, diag::err_no_submodule_suggest) << Path[I].first << Module->getFullModuleName() << Best[0] << SourceRange(Path[0].second, Path[I - 1].second) << FixItHint::CreateReplacement(SourceRange(Path[I].second), Best[0]);"}} | |||
}, | }, | ||
[" | ["err_no_subobject_property_setting"]={ | ||
[ | [j]="expression is not assignable", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="expression is not assignable", | ||
[ | [f]=n, | ||
[ | [g]="expression is not assignable", | ||
[h]= | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={gb,1480718311,ib}, | ||
[k]={{q,12381,"/// CheckForModifiableLvalue - Verify that E is a modifiable lvalue. If not,\n/// emit an error and return true. If so, return false.\nstatic bool CheckForModifiableLvalue(Expr *E, SourceLocation Loc, Sema &S) {\n case Expr::MLV_SubObjCPropertySetting:\n DiagID = diag::err_no_subobject_property_setting;"}} | |||
[ | |||
}, | }, | ||
[" | ["err_no_suitable_delete_member_function_found"]={ | ||
[ | [j]="no suitable member A in B", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="no suitable member %0 in %1", | ||
[ | [f]=n, | ||
[ | [g]="no suitable member (.*?) in (.*?)", | ||
[h]= | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"2c9e274e57c6",1258303395,"If we find a deallocation function in the class scope, but it is a placement function we should not ..."}, | ||
[ | [k]={{B,2814,"bool Sema::FindDeallocationFunction(SourceLocation StartLoc, CXXRecordDecl *RD, DeclarationName Name, FunctionDecl *&Operator, bool Diagnose, bool WantSize, bool WantAligned) {\n // We did find operator delete/operator delete[] declarations, but\n // none of them were suitable.\n if (!Found.empty()) {\n if (Diagnose) {\n Diag(StartLoc, diag::err_no_suitable_delete_member_function_found) << Name << RD;"}} | ||
}, | }, | ||
[" | ["err_no_super_class_message"]={ | ||
[ | [j]="no @interface declaration found in class messaging of A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="no @interface declaration found in class messaging of %0", | ||
[ | [f]=n, | ||
[ | [g]="no @interface declaration found in class messaging of (.*?)", | ||
[h]= | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={gb,1480718311,ib}, | ||
[ | [k]={{O,1939,"ExprResult Sema::ActOnSuperMessage(Scope *S, SourceLocation SuperLoc, Selector Sel, SourceLocation LBracLoc, ArrayRef<SourceLocation> SelectorLocs, SourceLocation RBracLoc, MultiExprArg Args) {\n if (!Class) {\n Diag(SuperLoc, diag::err_no_super_class_message) << Method->getDeclName();"}} | ||
}, | }, | ||
[" | ["err_no_template"]={ | ||
[ | [j]="no template named A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="no template named %0", | ||
[ | [f]=n, | ||
[ | [g]="no template named (.*?)", | ||
[h]= | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"52f8d19ceda6",1494451936,"Improve diagnosis of unknown template name."}, | ||
[ | [k]={{p,717,"void Sema::DiagnoseUnknownTypeName(IdentifierInfo *&II, SourceLocation IILoc, Scope *S, CXXScopeSpec *SS, ParsedType &SuggestedType, bool IsTemplateName) {\n if (!SS || (!SS->isSet() && !SS->isInvalid()))\n Diag(IILoc, IsTemplateName ? diag::err_no_template : diag::err_unknown_typename) << II;"},{K,3454,"bool Sema::resolveAssumedTemplateNameAsType(Scope *S, TemplateName &Name, SourceLocation NameLoc, bool Diagnose) {\n if (Diagnose)\n Diag(R.getNameLoc(), diag::err_no_template) << R.getLookupName();"}} | ||
}, | }, | ||
[" | ["err_no_template_suggest"]={ | ||
[ | [j]="no template named A; did you mean B?", | ||
[d]= | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="no template named %0; did you mean %1?", | ||
[ | [f]=n, | ||
[ | [g]="no template named (.*?); did you mean (.*?)\\?", | ||
[ | [h]=a, | ||
[b]= | [i]=o, | ||
[ | [b]={"ff18cc114111",1262247077,"Typo correction for template names, e.g.,"}, | ||
[k]={{p,672,"void Sema::DiagnoseUnknownTypeName(IdentifierInfo *&II, SourceLocation IILoc, Scope *S, CXXScopeSpec *SS, ParsedType &SuggestedType, bool IsTemplateName) {\n if (TypoCorrection Corrected = CorrectTypo(DeclarationNameInfo(II, IILoc), LookupOrdinaryName, S, SS, CCC, CTK_ErrorRecovery)) {\n if (Corrected.isKeyword()) {\n diagnoseTypo(Corrected, PDiag(IsTemplateName ? diag::err_no_template_suggest : diag::err_unknown_typename_suggest) << II);"},{p,677,"void Sema::DiagnoseUnknownTypeName(IdentifierInfo *&II, SourceLocation IILoc, Scope *S, CXXScopeSpec *SS, ParsedType &SuggestedType, bool IsTemplateName) {\n if (TypoCorrection Corrected = CorrectTypo(DeclarationNameInfo(II, IILoc), LookupOrdinaryName, S, SS, CCC, CTK_ErrorRecovery)) {\n if (Corrected.isKeyword()) {\n } else {\n // We found a similarly-named type or interface; suggest that.\n if (!SS || !SS->isSet()) {\n diagnoseTypo(Corrected, PDiag(IsTemplateName ? diag::err_no_template_suggest : diag::err_unknown_typename_suggest) << II, CanRecover);"},{p,895,"Corrected:\n case LookupResult::NotFound:\n // Perform typo correction to determine if there is another name that is\n // close to this name.\n if (!SecondTry && CCC) {\n if (TypoCorrection Corrected = CorrectTypo(Result.getLookupNameInfo(), Result.getLookupKind(), S, &SS, *CCC, CTK_ErrorRecovery)) {\n if (getLangOpts().CPlusPlus && NextToken.is(tok::less) && UnderlyingFirstDecl && isa<TemplateDecl>(UnderlyingFirstDecl)) {\n UnqualifiedDiag = diag::err_no_template_suggest;"},{K,474,"bool Sema::LookupTemplateName(LookupResult &Found, Scope *S, CXXScopeSpec &SS, QualType ObjectType, bool EnteringContext, bool &MemberOfUnknownSpecialization, RequiredTemplateKind RequiredTemplate, AssumedTemplateKind *ATK, bool AllowTypoCorrection) {\n if (Found.empty() && !IsDependent && AllowTypoCorrection) {\n if (TypoCorrection Corrected = CorrectTypo(Found.getLookupNameInfo(), Found.getLookupKind(), S, &SS, FilterCCC, CTK_ErrorRecovery, LookupCtx)) {\n if (Found.isAmbiguous()) {\n } else if (!Found.empty()) {\n if (LookupCtx) {\n } else {\n diagnoseTypo(Corrected, PDiag(diag::err_no_template_suggest) << Name);"},{K,3448,"bool Sema::resolveAssumedTemplateNameAsType(Scope *S, TemplateName &Name, SourceLocation NameLoc, bool Diagnose) {\n if (Corrected && Corrected.getFoundDecl()) {\n diagnoseTypo(Corrected, PDiag(diag::err_no_template_suggest) << ATN->getDeclName());"}} | |||
}, | }, | ||
[" | ["err_no_typeid_with_fno_rtti"]={ | ||
[ | [j]="use of typeid requires -frtti", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="use of typeid requires -frtti", | ||
[ | [f]=n, | ||
[ | [g]="use of typeid requires \\-frtti", | ||
[h]= | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"1b7f39de3d58",1337477241,"Error when using typeid() with -fno-rtti. PR 12888."}, | ||
[k]={{B,613,"/// ActOnCXXTypeidOfType - Parse typeid( type-id ) or typeid (expression);\nExprResult Sema::ActOnCXXTypeid(SourceLocation OpLoc, SourceLocation LParenLoc, bool isType, void *TyOrExpr, SourceLocation RParenLoc) {\n if (!getLangOpts().RTTI) {\n return ExprError(Diag(OpLoc, diag::err_no_typeid_with_fno_rtti));"}} | |||
[ | |||
}, | }, | ||
[" | ["err_no_viable_destructor"]={ | ||
[ | [j]="no viable destructor found for class A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="no viable destructor found for class %0", | ||
[ | [f]=n, | ||
[ | [g]="no viable destructor found for class (.*?)", | ||
[h]= | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={M,1625925174,N}, | ||
[ | [k]={{p,16240,"/// [class.dtor]p4:\n/// At the end of the definition of a class, overload resolution is\n/// performed among the prospective destructors declared in that class with\n/// an empty argument list to select the destructor for the class, also\n/// known as the selected destructor.\n///\n/// We do the overload resolution here, then mark the selected constructor in the AST.\n/// Later CXXRecordDecl::getDestructor() will return the selected constructor.\nstatic void ComputeSelectedDestructor(Sema &S, CXXRecordDecl *Record) {\n case OR_No_Viable_Function:\n Msg = diag::err_no_viable_destructor;"}} | ||
}, | }, | ||
[" | ["err_nogetter_property_compound_assignment"]={ | ||
[ | [j]="a getter method is needed to perform a compound assignment on a property", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="a getter method is needed to perform a compound assignment on a property", | ||
[ | [f]=n, | ||
[ | [g]="a getter method is needed to perform a compound assignment on a property", | ||
[h]= | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"c4a2d3259f9e",1319527676,"Introduce a placeholder type for \"pseudo object\""}, | ||
[ | [k]={{pb,765,"/// @property-specific behavior for doing assignments.\nExprResult ObjCPropertyOpBuilder::buildAssignmentOperation(Scope *Sc, SourceLocation opcLoc, BinaryOperatorKind opcode, Expr *LHS, Expr *RHS) {\n // Verify that we can do a compound assignment.\n if (opcode != BO_Assign && !findGetter()) {\n S.Diag(opcLoc, diag::err_nogetter_property_compound_assignment) << LHS->getSourceRange() << RHS->getSourceRange();"}} | ||
}, | }, | ||
[" | ["err_nogetter_property_incdec"]={ | ||
[ | [j]="no getter method A for ... of property", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="no getter method %1 for %select{increment|decrement}0 of property", | ||
[ | [f]=n, | ||
[ | [g]="no getter method (.*?) for (?:increment|decrement) of property", | ||
[h]= | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"c4a2d3259f9e",1319527676,"Introduce a placeholder type for \"pseudo object\""}, | ||
[k]={{pb,804,"/// @property-specific behavior for doing increments and decrements.\nExprResult ObjCPropertyOpBuilder::buildIncDecOperation(Scope *Sc, SourceLocation opcLoc, UnaryOperatorKind opcode, Expr *op) {\n // We also need a getter.\n if (!findGetter()) {\n S.Diag(opcLoc, diag::err_nogetter_property_incdec) << unsigned(UnaryOperator::isDecrementOp(opcode)) << GetterSelector << op->getSourceRange();"}} | |||
[ | |||
}, | }, | ||
[" | ["err_non_asm_stmt_in_naked_function"]={ | ||
[ | [j]="non-ASM statement in naked function is not supported", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="non-ASM statement in naked function is not supported", | ||
[ | [f]=n, | ||
[ | [g]="non\\-ASM statement in naked function is not supported", | ||
[h]= | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"d62cdd2c14c4",1409869000,"Don\'t allow non-ASM statements in naked functions"}, | ||
[ | [k]={{p,13914,"Decl *Sema::ActOnFinishFunctionBody(Decl *dcl, Stmt *Body, bool IsInstantiation) {\n {\n // Verify and clean out per-function state.\n if (Body && (!FD || !FD->isDefaulted())) {\n if (FD && FD->hasAttr<NakedAttr>()) {\n for (const Stmt *S : Body->children()) {\n if (!isa<AsmStmt>(S) && !isa<NullStmt>(S)) {\n Diag(S->getBeginLoc(), diag::err_non_asm_stmt_in_naked_function);"}} | ||
}, | }, | ||
[" | ["err_non_bool_atomic_constraint"]={ | ||
[ | [j]="atomic constraint must be of type \'bool\' (found A)", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[e]="atomic constraint must be of type \'bool\' (found %0)", | |||
[f]=n, | |||
[g]="atomic constraint must be of type \'bool\' \\(found (.*?)\\)", | |||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"7c11da0cfd33",1567434909,"[clang] New __attribute__((__clang_arm_mve_alias))."}, | ||
[ | [k]={{"clang/lib/Sema/SemaConcept.cpp",128,"bool Sema::CheckConstraintExpression(const Expr *ConstraintExpression, Token NextToken, bool *PossibleNonPrimary, bool IsTrailingRequiresClause) {\n if (!Context.hasSameUnqualifiedType(Type, Context.BoolTy)) {\n Diag(ConstraintExpression->getExprLoc(), diag::err_non_bool_atomic_constraint) << Type << ConstraintExpression->getSourceRange();"}} | ||
[ | |||
}, | }, | ||
[" | ["err_non_c_like_anon_struct_in_typedef"]={ | ||
[ | [j]="anonymous non-C-compatible type given name for linkage purposes by ... declaration after its linkage was computed; add a tag name here to establish linkage prior to definition", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="anonymous non-C-compatible type given name for linkage purposes by %select{typedef|alias}0 declaration after its linkage was computed; add a tag name here to establish linkage prior to definition", | ||
[f]=n, | |||
[ | [g]="anonymous non\\-C\\-compatible type given name for linkage purposes by (?:typedef|alias) declaration after its linkage was computed; add a tag name here to establish linkage prior to definition", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"1228d42ddab8",1576809732,"[OpenMP][Part 2] Use reusable OpenMP context/traits handling"}, | ||
[ | [k]={{p,4481,"void Sema::setTagNameForLinkagePurposes(TagDecl *TagFromDeclSpec, TypedefNameDecl *NewTD) {\n if (NonCLike || ChangesLinkage) {\n if (ChangesLinkage) {\n // If the linkage changes, we can\'t accept this as an extension.\n if (NonCLike.Kind == NonCLikeKind::None)\n else\n DiagID = diag::err_non_c_like_anon_struct_in_typedef;"}} | ||
[ | |||
}, | }, | ||
[" | ["err_non_constant_constraint_expression"]={ | ||
[ | [j]="substitution into constraint expression resulted in a non-constant expression", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="substitution into constraint expression resulted in a non-constant expression", | ||
[f]=n, | |||
[ | [g]="substitution into constraint expression resulted in a non\\-constant expression", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"7c11da0cfd33",1567434909,"[clang] New __attribute__((__clang_arm_mve_alias))."}, | ||
[ | [k]={{"clang/lib/Sema/SemaConcept.cpp",236,"template <typename AtomicEvaluator> static ExprResult calculateConstraintSatisfaction(Sema &S, const Expr *ConstraintExpr, ConstraintSatisfaction &Satisfaction, AtomicEvaluator &&Evaluator) {\n if (!SubstitutedAtomicExpr.get()->EvaluateAsConstantExpr(EvalResult, S.Context) || !EvaluationDiags.empty()) {\n S.Diag(SubstitutedAtomicExpr.get()->getBeginLoc(), diag::err_non_constant_constraint_expression) << SubstitutedAtomicExpr.get()->getSourceRange();"}} | ||
[ | |||
}, | }, | ||
[" | ["err_non_consteval_override"]={ | ||
[ | [j]="non-consteval function A cannot override a consteval function", | ||
[d]= | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="non-consteval function %0 cannot override a consteval function", | ||
[ | [f]=n, | ||
[ | [g]="non\\-consteval function (.*?) cannot override a consteval function", | ||
[ | [h]=a, | ||
[b]= | [i]=o, | ||
[ | [b]={T,1576908663,U}, | ||
[k]={{r,6009,"/// Perform semantic checks on a class definition that has been\n/// completing, introducing implicitly-declared members, checking for\n/// abstract types, etc.\n///\n/// \\param S The scope in which the class was parsed. Null if we didn\'t just\n/// parse a class definition.\n/// \\param Record The completed class.\nvoid Sema::CheckCompletedCXXClass(Scope *S, CXXRecordDecl *Record) {\n // Perform checks that can\'t be done until we know all the properties of a\n // member function (whether it\'s defaulted, deleted, virtual, overriding,\n // ...).\n auto CheckCompletedMemberFunction = [&](CXXMethodDecl *MD) {\n if (ReportOverrides(*this, MD->isConsteval() ? diag::err_consteval_override : diag::err_non_consteval_override, MD, [&](const CXXMethodDecl *V) { return MD->isConsteval() != V->isConsteval(); })) {"}} | |||
}, | }, | ||
[" | ["err_non_default_visibility_dllimport"]={ | ||
[ | [j]="non-default visibility cannot be applied to \'dllimport\' declaration", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="non-default visibility cannot be applied to \'dllimport\' declaration", | ||
[ | [f]=n, | ||
[ | [g]="non\\-default visibility cannot be applied to \'dllimport\' declaration", | ||
[h]= | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"6f9c4851ab7c",1663023396,"[MinGW] Reject explicit hidden visibility applied to dllexport and hidden/protected applied to dllim..."}, | ||
[ | [k]={{"clang/lib/CodeGen/CodeGenModule.cpp",1197,"void CodeGenModule::setGlobalVisibility(llvm::GlobalValue *GV, const NamedDecl *D) const {\n if (GV->hasDLLExportStorageClass() || GV->hasDLLImportStorageClass()) {\n if (GV->hasDLLExportStorageClass()) {\n } else if (LV.getVisibility() != DefaultVisibility) {\n getDiags().Report(D->getLocation(), diag::err_non_default_visibility_dllimport);"}} | ||
}, | }, | ||
[" | ["err_non_deleted_override"]={ | ||
[ | [j]="non-deleted function A cannot override a deleted function", | ||
[d]= | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="non-deleted function %0 cannot override a deleted function", | ||
[ | [f]=n, | ||
[ | [g]="non\\-deleted function (.*?) cannot override a deleted function", | ||
[ | [h]=a, | ||
[b]= | [i]=o, | ||
[ | [b]={"7e414261f647",1350434878,"Implement C++ 10.3p16 - overrides involving deleted functions must match."}, | ||
[k]={{r,6000,"/// Perform semantic checks on a class definition that has been\n/// completing, introducing implicitly-declared members, checking for\n/// abstract types, etc.\n///\n/// \\param S The scope in which the class was parsed. Null if we didn\'t just\n/// parse a class definition.\n/// \\param Record The completed class.\nvoid Sema::CheckCompletedCXXClass(Scope *S, CXXRecordDecl *Record) {\n // Perform checks that can\'t be done until we know all the properties of a\n // member function (whether it\'s defaulted, deleted, virtual, overriding,\n // ...).\n auto CheckCompletedMemberFunction = [&](CXXMethodDecl *MD) {\n if (ReportOverrides(*this, MD->isDeleted() ? diag::err_deleted_override : diag::err_non_deleted_override, MD, [&](const CXXMethodDecl *V) { return MD->isDeleted() != V->isDeleted(); })) {"}} | |||
}, | }, | ||
[" | ["err_non_designated_init_used"]={ | ||
[ | [j]="a randomized struct can only be initialized with a designated initializer", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="a randomized struct can only be initialized with a designated initializer", | ||
[ | [f]=n, | ||
[ | [g]="a randomized struct can only be initialized with a designated initializer", | ||
[h]= | [h]=a, | ||
[ | [i]=a, | ||
[ | [b]={"cb08f4aa4467",1620530452,"Support warn_unused_result on typedefs"}, | ||
[ | [k]={{L,1900,"void InitListChecker::CheckStructUnionTypes(const InitializedEntity &Entity, InitListExpr *IList, QualType DeclType, CXXRecordDecl::base_class_const_range Bases, RecordDecl::field_iterator Field, bool SubobjectIsDesignatorContext, unsigned &Index, InitListExpr *StructuredList, unsigned &StructuredIndex, bool TopLevelObject) {\n while (Index < IList->getNumInits()) {\n // Don\'t allow non-designated initializers on randomized structures.\n if (RD->isRandomized() && !IsZeroInitializer(Init)) {\n if (!VerifyOnly)\n SemaRef.Diag(InitLoc, diag::err_non_designated_init_used);"}} | ||
}, | }, | ||
[" | ["err_non_extern_extern"]={ | ||
[ | [j]="non-extern declaration of A follows extern declaration", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="non-extern declaration of %0 follows extern declaration", | ||
[ | [f]=n, | ||
[h]= | [g]="non\\-extern declaration of (.*?) follows extern declaration", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"819f61094216",1296457486,"Diagnose if extern local variable is followed by non-extern and vice-versa."}, | ||
[k]={{p,4172,"/// MergeVarDecl - We just parsed a variable \'New\' which has the same name\n/// and scope as a previous declaration \'Old\'. Figure out how to resolve this\n/// situation, merging decls or emitting diagnostics as appropriate.\n///\n/// Tentative definition rules (C99 6.9.2p2) are checked by\n/// FinalizeDeclaratorGroup. Unfortunately, we can\'t analyze tentative\n/// definitions here, since the initializer hasn\'t been attached.\n///\nvoid Sema::MergeVarDecl(VarDecl *New, LookupResult &Previous) {\n if (Old->hasLinkage() && New->isLocalVarDeclOrParm() && !New->hasExternalStorage()) {\n Diag(New->getLocation(), diag::err_non_extern_extern) << New->getDeclName();"}} | |||
}, | }, | ||
[" | ["err_non_first_default_compare_deletes"]={ | ||
[ | [j]="defaulting ... would delete it after its first declaration", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="defaulting %select{this %select{<ERROR>|equality|three-way|equality|relational}1 comparison operator|the corresponding implicit \'operator==\' for this defaulted \'operator<=>\'}0 would delete it after its first declaration", | ||
[f]=n, | |||
[g]="defaulting (?:this (?:equality|three\\-way|equality|relational) comparison operator|the corresponding implicit \'operator\\=\\=\' for this defaulted \'operator\\<\\=\\>\') would delete it after its first declaration", | |||
[ | [h]=a, | ||
[ | [i]=o, | ||
[b]={"5253d9138eb3",1573070592,"[c++20] Determine whether a defaulted comparison should be deleted or"}, | |||
[ | [k]={{r,7572,"bool Sema::CheckExplicitlyDefaultedComparison(Scope *S, FunctionDecl *FD, DefaultedComparisonKind DCK) {\n if (!First) {\n if (Info.Deleted) {\n Diag(FD->getLocation(), diag::err_non_first_default_compare_deletes) << FD->isImplicit() << (int)DCK;"}} | ||
[i]={ | |||
}, | }, | ||
[" | ["err_non_first_default_compare_in_class"]={ | ||
[ | [j]="defaulting this ... comparison operator is not allowed because it was already declared outside the class", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="defaulting this %select{<ERROR>|equality|three-way|equality|relational}0 comparison operator is not allowed because it was already declared outside the class", | ||
[ | [f]=n, | ||
[ | [g]="defaulting this (?:equality|three\\-way|equality|relational) comparison operator is not allowed because it was already declared outside the class", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={M,1625925174,N}, | ||
[k]={{r,7580,"bool Sema::CheckExplicitlyDefaultedComparison(Scope *S, FunctionDecl *FD, DefaultedComparisonKind DCK) {\n if (!First) {\n if (isa<CXXRecordDecl>(FD->getLexicalDeclContext())) {\n Diag(FD->getLocation(), diag::err_non_first_default_compare_in_class) << (int)DCK;"}} | |||
[ | |||
}, | }, | ||
[" | ["err_non_local_variable_decl_in_for"]={ | ||
[ | [j]="declaration of non-local variable in \'for\' loop", | ||
[d]= | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="declaration of non-local variable in \'for\' loop", | ||
[ | [f]=n, | ||
[h]= | [g]="declaration of non\\-local variable in \'for\' loop", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"2eb1c57b9daf",1365454344,"<rdar://problem/13540921> Fix a crasher when an Objective-C for-in loop gets a non-variable iteratio..."}, | ||
[k]={{E,1873,"StmtResult Sema::ActOnForStmt(SourceLocation ForLoc, SourceLocation LParenLoc, Stmt *First, ConditionResult Second, FullExprArg third, SourceLocation RParenLoc, Stmt *Body) {\n if (!getLangOpts().CPlusPlus) {\n if (DeclStmt *DS = dyn_cast_or_null<DeclStmt>(First)) {\n for (auto *DI : DS->decls()) {\n if (VarDecl *VD = dyn_cast<VarDecl>(DI)) {\n if (VD->isLocalVarDecl() && !VD->hasLocalStorage()) {\n Diag(DI->getLocation(), diag::err_non_local_variable_decl_in_for);"},{E,2011,"StmtResult Sema::ActOnObjCForCollectionStmt(SourceLocation ForLoc, Stmt *First, Expr *collection, SourceLocation RParenLoc) {\n if (First) {\n if (DeclStmt *DS = dyn_cast<DeclStmt>(First)) {\n // C99 6.8.5p3: The declaration part of a \'for\' statement shall only\n // declare identifiers for objects having storage class \'auto\' or\n // \'register\'.\n if (!D->hasLocalStorage())\n return StmtError(Diag(D->getLocation(), diag::err_non_local_variable_decl_in_for));"}} | |||
}, | }, | ||
[" | ["err_non_static_static"]={ | ||
[ | [j]="non-static declaration of A follows static declaration", | ||
[d]= | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="non-static declaration of %0 follows static declaration", | ||
[ | [f]=n, | ||
[h]= | [g]="non\\-static declaration of (.*?) follows static declaration", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{p,4160,"/// MergeVarDecl - We just parsed a variable \'New\' which has the same name\n/// and scope as a previous declaration \'Old\'. Figure out how to resolve this\n/// situation, merging decls or emitting diagnostics as appropriate.\n///\n/// Tentative definition rules (C99 6.9.2p2) are checked by\n/// FinalizeDeclaratorGroup. Unfortunately, we can\'t analyze tentative\n/// definitions here, since the initializer hasn\'t been attached.\n///\nvoid Sema::MergeVarDecl(VarDecl *New, LookupResult &Previous) {\n // C99 6.2.2p4:\n // For an identifier declared with the storage-class specifier\n // extern in a scope in which a prior declaration of that\n // identifier is visible,23) if the prior declaration specifies\n // internal or external linkage, the linkage of the identifier at\n // the later declaration is the same as the linkage specified at\n // the prior declaration. If no prior declaration is visible, or\n // if the prior declaration specifies no linkage, then the\n // identifier has external linkage.\n if (New->hasExternalStorage() && Old->hasLinkage())\n else if (New->getCanonicalDecl()->getStorageClass() != SC_Static && !New->isStaticDataMember() && Old->getCanonicalDecl()->getStorageClass() == SC_Static) {\n Diag(New->getLocation(), diag::err_non_static_static) << New->getDeclName();"}} | |||
}, | }, | ||
[" | ["err_non_template_in_member_template_id_suggest"]={ | ||
[ | [j]="member A of B is not a template; did you mean ...C?", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="member %0 of %1 is not a template; did you mean %select{|simply }2%3?", | ||
[ | [f]=n, | ||
[ | [g]="member (.*?) of (.*?) is not a template; did you mean (?:|simply )(.*?)\\?", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"42bc73a3f15f",1494383428,"When we see a \'<\' operator, check whether it\'s a probable typo for a template-id."}, | ||
[ | [k]={{K,611,"void Sema::diagnoseExprIntendedAsTemplateName(Scope *S, ExprResult TemplateName, SourceLocation Less, SourceLocation Greater) {\n if (TypoCorrection Corrected = CorrectTypo(NameInfo, LookupKind, S, &SS, CCC, CTK_ErrorRecovery, LookupCtx)) {\n if (ND || Corrected.isKeyword()) {\n if (LookupCtx) {\n diagnoseTypo(Corrected, PDiag(diag::err_non_template_in_member_template_id_suggest) << Name << LookupCtx << DroppedSpecifier << SS.getRange(), false);"}} | ||
}, | }, | ||
[" | ["err_non_template_in_template_id"]={ | ||
[ | [j]="A does not name a template but is followed by template arguments", | ||
[ | [c]=l, | ||
[d]=m, | |||
[ | [e]="%0 does not name a template but is followed by template arguments", | ||
[f]=n, | |||
[ | [g]="(.*?) does not name a template but is followed by template arguments", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"42bc73a3f15f",1494383428,"When we see a \'<\' operator, check whether it\'s a probable typo for a template-id."}, | ||
[ | [k]={{K,621,"void Sema::diagnoseExprIntendedAsTemplateName(Scope *S, ExprResult TemplateName, SourceLocation Less, SourceLocation Greater) {\n Diag(NameInfo.getLoc(), diag::err_non_template_in_template_id) << Name << SourceRange(Less, Greater);"}} | ||
[ | |||
}, | }, | ||
[" | ["err_non_template_in_template_id_suggest"]={ | ||
[ | [j]="A does not name a template but is followed by template arguments; did you mean B?", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%0 does not name a template but is followed by template arguments; did you mean %1?", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) does not name a template but is followed by template arguments; did you mean (.*?)\\?", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"42bc73a3f15f",1494383428,"When we see a \'<\' operator, check whether it\'s a probable typo for a template-id."}, | ||
[ | [k]={{K,613,"void Sema::diagnoseExprIntendedAsTemplateName(Scope *S, ExprResult TemplateName, SourceLocation Less, SourceLocation Greater) {\n if (TypoCorrection Corrected = CorrectTypo(NameInfo, LookupKind, S, &SS, CCC, CTK_ErrorRecovery, LookupCtx)) {\n if (ND || Corrected.isKeyword()) {\n if (LookupCtx) {\n } else {\n diagnoseTypo(Corrected, PDiag(diag::err_non_template_in_template_id_suggest) << Name, false);"}} | ||
}, | }, | ||
[" | ["err_non_thread_thread"]={ | ||
[ | [j]="non-thread-local declaration of A follows thread-local declaration", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="non-thread-local declaration of %0 follows thread-local declaration", | ||
[ | [f]=n, | ||
[ | [g]="non\\-thread\\-local declaration of (.*?) follows thread\\-local declaration", | ||
[h]= | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"d5c0eeda7285",1240172875,"Add more thorough/correct checking for invalid __thread specifiers."}, | ||
[ | [k]={{p,4212,"/// MergeVarDecl - We just parsed a variable \'New\' which has the same name\n/// and scope as a previous declaration \'Old\'. Figure out how to resolve this\n/// situation, merging decls or emitting diagnostics as appropriate.\n///\n/// Tentative definition rules (C99 6.9.2p2) are checked by\n/// FinalizeDeclaratorGroup. Unfortunately, we can\'t analyze tentative\n/// definitions here, since the initializer hasn\'t been attached.\n///\nvoid Sema::MergeVarDecl(VarDecl *New, LookupResult &Previous) {\n if (New->getTLSKind() != Old->getTLSKind()) {\n if (!Old->getTLSKind()) {\n } else if (!New->getTLSKind()) {\n Diag(New->getLocation(), diag::err_non_thread_thread) << New->getDeclName();"}} | ||
}, | }, | ||
[" | ["err_non_trivial_c_union_in_invalid_context"]={ | ||
[ | [j]="cannot ... since it ... a union that is non-trivial to ...", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="cannot %select{use type %1 for a function/method parameter|use type %1 for function/method return|default-initialize an object of type %1|declare an automatic variable of type %1|copy-initialize an object of type %1|assign to a variable of type %1|construct an automatic compound literal of type %1|capture a variable of type %1|cannot use volatile type %1 where it causes an lvalue-to-rvalue conversion}3 since it %select{contains|is}2 a union that is non-trivial to %select{default-initialize|destruct|copy}0", | ||
[ | [f]=n, | ||
[ | [g]="cannot (?:use type (.*?) for a function\\/method parameter|use type (.*?) for function\\/method return|default\\-initialize an object of type (.*?)|declare an automatic variable of type (.*?)|copy\\-initialize an object of type (.*?)|assign to a variable of type (.*?)|construct an automatic compound literal of type (.*?)|capture a variable of type (.*?)|cannot use volatile type (.*?) where it causes an lvalue\\-to\\-rvalue conversion) since it (?:contains|is) a union that is non\\-trivial to (?:default\\-initialize|destruct|copy)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"81b03d4a08b1",1562982435,"[Sema] Diagnose default-initialization, destruction, and copying of"}, | ||
[k]={{p,11299,"struct DiagNonTrivalCUnionDefaultInitializeVisitor : DefaultInitializedTypeVisitor<DiagNonTrivalCUnionDefaultInitializeVisitor, void> {\n void visitStruct(QualType QT, const FieldDecl *FD, bool InNonTrivialUnion) {\n if (RD->isUnion()) {\n if (OrigLoc.isValid()) {\n S.Diag(OrigLoc, diag::err_non_trivial_c_union_in_invalid_context) << 0 << OrigTy << IsUnion << UseContext;"},{p,11352,"struct DiagNonTrivalCUnionDestructedTypeVisitor : DestructedTypeVisitor<DiagNonTrivalCUnionDestructedTypeVisitor, void> {\n void visitStruct(QualType QT, const FieldDecl *FD, bool InNonTrivialUnion) {\n if (RD->isUnion()) {\n if (OrigLoc.isValid()) {\n S.Diag(OrigLoc, diag::err_non_trivial_c_union_in_invalid_context) << 1 << OrigTy << IsUnion << UseContext;"},{p,11406,"struct DiagNonTrivalCUnionCopyVisitor : CopiedTypeVisitor<DiagNonTrivalCUnionCopyVisitor, false, void> {\n void visitStruct(QualType QT, const FieldDecl *FD, bool InNonTrivialUnion) {\n if (RD->isUnion()) {\n if (OrigLoc.isValid()) {\n S.Diag(OrigLoc, diag::err_non_trivial_c_union_in_invalid_context) << 2 << OrigTy << IsUnion << UseContext;"}} | |||
}, | }, | ||
[" | ["err_non_type_template_arg_addr_label_diff"]={ | ||
[ | [j]="template argument / label address difference / what did you expect?", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="template argument / label address difference / what did you expect?", | ||
[ | [f]=n, | ||
[ | [g]="template argument \\/ label address difference \\/ what did you expect\\?", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"410cc893745e",1416972413,"[c++1z] Most of N4268 (allow constant evaluation for non-type template arguments)."}, | ||
[k]={{K,6047,"/// Check a template argument against its corresponding\n/// non-type template parameter.\n///\n/// This routine implements the semantics of C++ [temp.arg.nontype].\n/// If an error occurred, it returns ExprError(); otherwise, it\n/// returns the converted template argument. \\p ParamType is the\n/// type of the non-type template parameter after it has been instantiated.\nExprResult Sema::CheckTemplateArgument(NonTypeTemplateParmDecl *Param, QualType ParamType, Expr *Arg, TemplateArgument &SugaredConverted, TemplateArgument &CanonicalConverted, CheckTemplateArgumentKind CTAK) {\n if (getLangOpts().CPlusPlus17) {\n case APValue::AddrLabelDiff:\n return Diag(StartLoc, diag::err_non_type_template_arg_addr_label_diff);"}} | |||
}, | }, | ||
[" | ["err_non_type_template_arg_subobject"]={ | ||
[ | [j]="non-type template argument refers to subobject \'A\'", | ||
[ | [c]=l, | ||
[d]=m, | |||
[ | [e]="non-type template argument refers to subobject \'%0\'", | ||
[ | [f]=n, | ||
[ | [g]="non\\-type template argument refers to subobject \'(.*?)\'", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"410cc893745e",1416972413,"[c++1z] Most of N4268 (allow constant evaluation for non-type template arguments)."}, | ||
[ | [k]={{K,6028,"/// Check a template argument against its corresponding\n/// non-type template parameter.\n///\n/// This routine implements the semantics of C++ [temp.arg.nontype].\n/// If an error occurred, it returns ExprError(); otherwise, it\n/// returns the converted template argument. \\p ParamType is the\n/// type of the non-type template parameter after it has been instantiated.\nExprResult Sema::CheckTemplateArgument(NonTypeTemplateParmDecl *Param, QualType ParamType, Expr *Arg, TemplateArgument &SugaredConverted, TemplateArgument &CanonicalConverted, CheckTemplateArgumentKind CTAK) {\n if (getLangOpts().CPlusPlus17) {\n case APValue::LValue: {\n // -- a subobject\n // FIXME: Until C++20\n if (Value.hasLValuePath() && Value.getLValuePath().size() == 1 && VD && VD->getType()->isArrayType() && Value.getLValuePath()[0].getAsArrayIndex() == 0 && !Value.isLValueOnePastTheEnd() && ParamType->isPointerType()) {\n } else if (!Value.hasLValuePath() || Value.getLValuePath().size() || Value.isLValueOnePastTheEnd()) {\n Diag(StartLoc, diag::err_non_type_template_arg_subobject) << Value.getAsString(Context, ParamType);"}} | ||
}, | }, | ||
[" | ["err_non_type_template_arg_unsupported"]={ | ||
[ | [j]="sorry, non-type template argument of type A is not yet supported", | ||
[ | [c]=l, | ||
[d]=m, | |||
[ | [e]="sorry, non-type template argument of type %0 is not yet supported", | ||
[f]=n, | |||
[g]="sorry, non\\-type template argument of type (.*?) is not yet supported", | |||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"14f6bfcb52e7",1582847864,"[clang] Implement objc_non_runtime_protocol to remove protocol metadata"}, | ||
[ | [k]={{K,6054,"/// Check a template argument against its corresponding\n/// non-type template parameter.\n///\n/// This routine implements the semantics of C++ [temp.arg.nontype].\n/// If an error occurred, it returns ExprError(); otherwise, it\n/// returns the converted template argument. \\p ParamType is the\n/// type of the non-type template parameter after it has been instantiated.\nExprResult Sema::CheckTemplateArgument(NonTypeTemplateParmDecl *Param, QualType ParamType, Expr *Arg, TemplateArgument &SugaredConverted, TemplateArgument &CanonicalConverted, CheckTemplateArgumentKind CTAK) {\n if (getLangOpts().CPlusPlus17) {\n case APValue::Array:\n return Diag(StartLoc, diag::err_non_type_template_arg_unsupported) << ParamType;"}} | ||
[ | |||
[ | |||
}, | }, | ||
[" | ["err_non_type_template_in_nested_name_specifier"]={ | ||
[ | [j]="qualified name refers into a specialization of ... template A", | ||
[ | [c]=l, | ||
[d]=m, | |||
[ | [e]="qualified name refers into a specialization of %select{function|variable}0 template %1", | ||
[f]=n, | |||
[g]="qualified name refers into a specialization of (?:function|variable) template (.*?)", | |||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"8b6070bb9df4",1299274634,"Teach Sema::ActOnCXXNestedNameSpecifier and Sema::CheckTemplateIdType"}, | ||
[ | [k]={{cb,836,"bool Sema::ActOnCXXNestedNameSpecifier(Scope *S, CXXScopeSpec &SS, SourceLocation TemplateKWLoc, TemplateTy OpaqueTemplate, SourceLocation TemplateNameLoc, SourceLocation LAngleLoc, ASTTemplateArgsPtr TemplateArgsIn, SourceLocation RAngleLoc, SourceLocation CCLoc, bool EnteringContext) {\n if (Template.getAsOverloadedTemplate() || DTN || isa<FunctionTemplateDecl>(TD) || isa<VarTemplateDecl>(TD)) {\n Diag(CCLoc, diag::err_non_type_template_in_nested_name_specifier) << (TD && isa<VarTemplateDecl>(TD)) << Template << R;"}} | ||
[ | |||
[ | |||
}, | }, | ||
[" | ["err_non_type_template_parm_type_deduction_failure"]={ | ||
[ | [j]="non-type template parameter A with type B has incompatible initializer of type C", | ||
[ | [c]=l, | ||
[d]=m, | |||
[ | [e]="non-type template parameter %0 with type %1 has incompatible initializer of type %2", | ||
[ | [f]=n, | ||
[g]="non\\-type template parameter (.*?) with type (.*?) has incompatible initializer of type (.*?)", | |||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"5f274389d1d9",1475106927,"P0127R2: Support type deduction for types of non-type template parameters in"}, | ||
[k]={{K,5870,"/// Check a template argument against its corresponding\n/// non-type template parameter.\n///\n/// This routine implements the semantics of C++ [temp.arg.nontype].\n/// If an error occurred, it returns ExprError(); otherwise, it\n/// returns the converted template argument. \\p ParamType is the\n/// type of the non-type template parameter after it has been instantiated.\nExprResult Sema::CheckTemplateArgument(NonTypeTemplateParmDecl *Param, QualType ParamType, Expr *Arg, TemplateArgument &SugaredConverted, TemplateArgument &CanonicalConverted, CheckTemplateArgumentKind CTAK) {\n if (getLangOpts().CPlusPlus17 && DeducedT && !DeducedT->isDeduced()) {\n if (isa<DeducedTemplateSpecializationType>(DeducedT)) {\n } else {\n if (Result == TDK_AlreadyDiagnosed) {\n } else if (Result != TDK_Success) {\n Diag(Arg->getExprLoc(), diag::err_non_type_template_parm_type_deduction_failure) << Param->getDeclName() << Param->getType() << Arg->getType() << Arg->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_non_variable_decl_in_for"]={ | ||
[ | [j]="non-variable declaration in \'for\' loop", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="non-variable declaration in \'for\' loop", | ||
[ | [f]=n, | ||
[h]= | [g]="non\\-variable declaration in \'for\' loop", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{E,95,"void Sema::ActOnForEachDeclStmt(DeclGroupPtrTy dg) {\n if (!var) {\n Diag(decl->getLocation(), diag::err_non_variable_decl_in_for);"},{E,1887,"StmtResult Sema::ActOnForStmt(SourceLocation ForLoc, SourceLocation LParenLoc, Stmt *First, ConditionResult Second, FullExprArg third, SourceLocation RParenLoc, Stmt *Body) {\n if (!getLangOpts().CPlusPlus) {\n if (DeclStmt *DS = dyn_cast_or_null<DeclStmt>(First)) {\n // Diagnose if we saw a non-variable declaration but no variable\n // declarations.\n if (NonVarSeen && !VarDeclSeen)\n Diag(NonVarSeen->getLocation(), diag::err_non_variable_decl_in_for);"}} | |||
}, | }, | ||
[" | ["err_non_virtual_pure"]={ | ||
[ | [j]="A is not virtual and cannot be declared pure", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%0 is not virtual and cannot be declared pure", | ||
[ | [f]=n, | ||
[ | [g]="(.*?) is not virtual and cannot be declared pure", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={z,1236199783,A}, | ||
[k]={{r,15496,"/// Mark the given method pure.\n///\n/// \\param Method the method to be marked pure.\n///\n/// \\param InitRange the source range that covers the \"0\" initializer.\nbool Sema::CheckPureMethod(CXXMethodDecl *Method, SourceRange InitRange) {\n if (!Method->isInvalidDecl())\n Diag(Method->getLocation(), diag::err_non_virtual_pure) << Method->getDeclName() << InitRange;"}} | |||
}, | }, | ||
[" | ["err_nonfunction_block_type"]={ | ||
[ | [j]="block pointer to non-function type is invalid", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="block pointer to non-function type is invalid", | ||
[ | [f]=n, | ||
[ | [g]="block pointer to non\\-function type is invalid", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{F,2741,"/// Build a block pointer type.\n///\n/// \\param T The type to which we\'ll be building a block pointer.\n///\n/// \\param Loc The source location, used for diagnostics.\n///\n/// \\param Entity The name of the entity that involves the block pointer\n/// type, if known.\n///\n/// \\returns A suitable block pointer type, if there are no\n/// errors. Otherwise, returns a NULL type.\nQualType Sema::BuildBlockPointerType(QualType T, SourceLocation Loc, DeclarationName Entity) {\n if (!T->isFunctionType()) {\n Diag(Loc, diag::err_nonfunction_block_type);"}} | |||
[ | |||
}, | }, | ||
[" | ["err_nonstatic_member_out_of_line"]={ | ||
[ | [j]="non-static data member defined out-of-line", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="non-static data member defined out-of-line", | ||
[ | [f]=n, | ||
[ | [g]="non\\-static data member defined out\\-of\\-line", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[ | [k]={{p,7091,"NamedDecl *Sema::ActOnVariableDeclarator(Scope *S, Declarator &D, DeclContext *DC, TypeSourceInfo *TInfo, LookupResult &Previous, MultiTemplateParamsArg TemplateParamLists, bool &AddToScope, ArrayRef<BindingDecl *> Bindings) {\n if (!getLangOpts().CPlusPlus) {\n } else {\n // Merge the decl with the existing one if appropriate.\n if (!Previous.empty()) {\n if (Previous.isSingleResult() && isa<FieldDecl>(Previous.getFoundDecl()) && D.getCXXScopeSpec().isSet()) {\n Diag(NewVD->getLocation(), diag::err_nonstatic_member_out_of_line) << D.getCXXScopeSpec().getRange();"}} | ||
}, | }, | ||
[" | ["err_nontemporal_builtin_must_be_pointer"]={ | ||
[ | [j]="address argument to nontemporal builtin must be a pointer (A invalid)", | ||
[ | [c]=l, | ||
[d]=m, | |||
[ | [e]="address argument to nontemporal builtin must be a pointer (%0 invalid)", | ||
[f]=n, | |||
[ | [g]="address argument to nontemporal builtin must be a pointer \\((.*?) invalid\\)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"84df12375cde",1441756353,"Introduce __builtin_nontemporal_store and __builtin_nontemporal_load."}, | ||
[ | [k]={{y,4946,"bool Sema::CheckRISCVBuiltinFunctionCall(const TargetInfo &TI, unsigned BuiltinID, CallExpr *TheCall) {\n case RISCV::BI__builtin_riscv_ntl_store:\n if (!PtrType) {\n Diag(DRE->getBeginLoc(), diag::err_nontemporal_builtin_must_be_pointer) << PointerArg->getType() << PointerArg->getSourceRange();"},{y,7468,"/// SemaBuiltinNontemporalOverloaded - We have a call to\n/// __builtin_nontemporal_store or __builtin_nontemporal_load, which is an\n/// overloaded function based on the pointer type of its last argument.\n///\n/// This function goes through and does final semantic checking for these\n/// builtins.\nExprResult Sema::SemaBuiltinNontemporalOverloaded(ExprResult TheCallResult) {\n if (!pointerType) {\n Diag(DRE->getBeginLoc(), diag::err_nontemporal_builtin_must_be_pointer) << PointerArg->getType() << PointerArg->getSourceRange();"}} | ||
[ | |||
}, | }, | ||
[" | ["err_nontemporal_builtin_must_be_pointer_intfltptr_or_vector"]={ | ||
[ | [j]="address argument to nontemporal builtin must be a pointer to integer, float, pointer, or a vector of such types (A invalid)", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="address argument to nontemporal builtin must be a pointer to integer, float, pointer, or a vector of such types (%0 invalid)", | ||
[ | [f]=n, | ||
[ | [g]="address argument to nontemporal builtin must be a pointer to integer, float, pointer, or a vector of such types \\((.*?) invalid\\)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"84df12375cde",1441756353,"Introduce __builtin_nontemporal_store and __builtin_nontemporal_load."}, | ||
[k]={{y,4953,"bool Sema::CheckRISCVBuiltinFunctionCall(const TargetInfo &TI, unsigned BuiltinID, CallExpr *TheCall) {\n case RISCV::BI__builtin_riscv_ntl_store:\n if (!ValType->isIntegerType() && !ValType->isAnyPointerType() && !ValType->isBlockPointerType() && !ValType->isFloatingType() && !ValType->isVectorType() && !ValType->isRVVType()) {\n Diag(DRE->getBeginLoc(), diag::err_nontemporal_builtin_must_be_pointer_intfltptr_or_vector) << PointerArg->getType() << PointerArg->getSourceRange();"},{y,7477,"/// SemaBuiltinNontemporalOverloaded - We have a call to\n/// __builtin_nontemporal_store or __builtin_nontemporal_load, which is an\n/// overloaded function based on the pointer type of its last argument.\n///\n/// This function goes through and does final semantic checking for these\n/// builtins.\nExprResult Sema::SemaBuiltinNontemporalOverloaded(ExprResult TheCallResult) {\n if (!ValType->isIntegerType() && !ValType->isAnyPointerType() && !ValType->isBlockPointerType() && !ValType->isFloatingType() && !ValType->isVectorType()) {\n Diag(DRE->getBeginLoc(), diag::err_nontemporal_builtin_must_be_pointer_intfltptr_or_vector) << PointerArg->getType() << PointerArg->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_noreturn_block_has_return_expr"]={ | ||
[ | [j]="block declared \'noreturn\' should not return", | ||
[d]= | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="block declared \'noreturn\' should not return", | ||
[ | [f]=n, | ||
[h]= | [g]="block declared \'noreturn\' should not return", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"88788feddd21",1241031793,"Sema and CodeGen support for attributes on blocks. Radar 6441502"}, | ||
[k]={{Kb,545,"struct CheckFallThroughDiagnostics {\n static CheckFallThroughDiagnostics MakeForBlock() {\n D.diag_MaybeFallThrough_HasNoReturn = diag::err_noreturn_block_has_return_expr;"},{Kb,547,"struct CheckFallThroughDiagnostics {\n static CheckFallThroughDiagnostics MakeForBlock() {\n D.diag_AlwaysFallThrough_HasNoReturn = diag::err_noreturn_block_has_return_expr;"},{E,3145,"/// ActOnCapScopeReturnStmt - Utility routine to type-check return statements\n/// for capturing scopes.\n///\nStmtResult Sema::ActOnCapScopeReturnStmt(SourceLocation ReturnLoc, Expr *RetValExp, NamedReturnInfo &NRInfo, bool SupressSimplerImplicitMoves) {\n if (auto *CurBlock = dyn_cast<BlockScopeInfo>(CurCap)) {\n if (CurBlock->FunctionType->castAs<FunctionType>()->getNoReturnAttr()) {\n Diag(ReturnLoc, diag::err_noreturn_block_has_return_expr);"}} | |||
}, | }, | ||
[" | ["err_noreturn_lambda_has_return_expr"]={ | ||
[ | [j]="lambda declared \'noreturn\' should not return", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="lambda declared \'noreturn\' should not return", | ||
[ | [f]=n, | ||
[ | [g]="lambda declared \'noreturn\' should not return", | ||
[h]= | [h]=a, | ||
[ | [i]=S, | ||
[ | [b]={"cf11eb76ed8d",1329322815,"Specialize noreturn diagnostics for lambda expressions."}, | ||
[ | [k]={{Kb,556,"struct CheckFallThroughDiagnostics {\n static CheckFallThroughDiagnostics MakeForLambda() {\n D.diag_MaybeFallThrough_HasNoReturn = diag::err_noreturn_lambda_has_return_expr;"},{Kb,558,"struct CheckFallThroughDiagnostics {\n static CheckFallThroughDiagnostics MakeForLambda() {\n D.diag_AlwaysFallThrough_HasNoReturn = diag::err_noreturn_lambda_has_return_expr;"},{E,3154,"/// ActOnCapScopeReturnStmt - Utility routine to type-check return statements\n/// for capturing scopes.\n///\nStmtResult Sema::ActOnCapScopeReturnStmt(SourceLocation ReturnLoc, Expr *RetValExp, NamedReturnInfo &NRInfo, bool SupressSimplerImplicitMoves) {\n if (auto *CurBlock = dyn_cast<BlockScopeInfo>(CurCap)) {\n } else if (auto *CurRegion = dyn_cast<CapturedRegionScopeInfo>(CurCap)) {\n } else {\n if (CurLambda->CallOperator->getType()->castAs<FunctionType>()->getNoReturnAttr()) {\n Diag(ReturnLoc, diag::err_noreturn_lambda_has_return_expr);"}} | ||
}, | }, | ||
[" | ["err_noreturn_non_function"]={ | ||
[ | [j]="\'_Noreturn\' can only appear on functions", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="\'_Noreturn\' can only appear on functions", | ||
[ | [f]=n, | ||
[ | [g]="\'_Noreturn\' can only appear on functions", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"0015f0987792",1358460971,"Parsing support for C11\'s _Noreturn keyword. No semantics yet."}, | ||
[ | [k]={{p,5906,"/// Diagnose function specifiers on a declaration of an identifier that\n/// does not identify a function.\nvoid Sema::DiagnoseFunctionSpecifiers(const DeclSpec &DS) {\n if (DS.isNoreturnSpecified())\n Diag(DS.getNoreturnSpecLoc(), diag::err_noreturn_non_function);"}} | ||
}, | }, | ||
[" | ["err_nosetter_property_assignment"]={ | ||
[ | [j]="...", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="%select{assignment to readonly property|no setter method %1 for assignment to property}0", | ||
[ | [f]=n, | ||
[ | [g]="(?:assignment to readonly property|no setter method (.*?) for assignment to property)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"c4a2d3259f9e",1319527676,"Introduce a placeholder type for \"pseudo object\""}, | ||
[ | [k]={{pb,757,"/// @property-specific behavior for doing assignments.\nExprResult ObjCPropertyOpBuilder::buildAssignmentOperation(Scope *Sc, SourceLocation opcLoc, BinaryOperatorKind opcode, Expr *LHS, Expr *RHS) {\n // If there\'s no setter, we have no choice but to try to assign to\n // the result of the getter.\n if (!findSetter()) {\n S.Diag(opcLoc, diag::err_nosetter_property_assignment) << unsigned(RefExpr->isImplicitProperty()) << SetterSelector << LHS->getSourceRange() << RHS->getSourceRange();"}} | ||
}, | }, | ||
[" | ["err_nosetter_property_incdec"]={ | ||
[ | [j]="...", | ||
[ | [c]=l, | ||
[d]=m, | |||
[ | [e]="%select{%select{increment|decrement}1 of readonly property|no setter method %2 for %select{increment|decrement}1 of property}0", | ||
[f]=n, | |||
[ | [g]="(?:(?:increment|decrement) of readonly property|no setter method (.*?) for (?:increment|decrement) of property)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"c4a2d3259f9e",1319527676,"Introduce a placeholder type for \"pseudo object\""}, | ||
[ | [k]={{pb,795,"/// @property-specific behavior for doing increments and decrements.\nExprResult ObjCPropertyOpBuilder::buildIncDecOperation(Scope *Sc, SourceLocation opcLoc, UnaryOperatorKind opcode, Expr *op) {\n // If there\'s no setter, we have no choice but to try to assign to\n // the result of the getter.\n if (!findSetter()) {\n S.Diag(opcLoc, diag::err_nosetter_property_incdec) << unsigned(RefExpr->isImplicitProperty()) << unsigned(UnaryOperator::isDecrementOp(opcode)) << SetterSelector << op->getSourceRange();"}} | ||
[ | |||
}, | }, | ||
[" | ["err_not_class_template_specialization"]={ | ||
[ | [j]="cannot specialize a ...", | ||
[ | [c]=l, | ||
[d]=m, | |||
[ | [e]="cannot specialize a %select{dependent template|template template parameter}0", | ||
[f]=n, | |||
[ | [g]="cannot specialize a (?:dependent template|template template parameter)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"dd6c0356bae5",1257986780,"Improve recovery in a wonky case where one tries to specialize a"}, | ||
[ | [k]={{K,7084,"DeclResult Sema::ActOnClassTemplateSpecialization(Scope *S, unsigned TagSpec, TagUseKind TUK, SourceLocation KWLoc, SourceLocation ModulePrivateLoc, CXXScopeSpec &SS, TemplateIdAnnotation &TemplateId, const ParsedAttributesView &Attr, MultiTemplateParamsArg TemplateParameterLists, SkipBodyInfo *SkipBody) {\n if (!ClassTemplate) {\n Diag(TemplateNameLoc, diag::err_not_class_template_specialization) << (Name.getAsTemplateDecl() && isa<TemplateTemplateParmDecl>(Name.getAsTemplateDecl()));"}} | ||
[ | |||
}, | }, | ||
[" | ["err_not_direct_base_or_virtual"]={ | ||
[ | [j]="type A is not a direct or virtual base of B", | ||
[ | [c]=l, | ||
[d]=m, | |||
[ | [e]="type %0 is not a direct or virtual base of %1", | ||
[f]=n, | |||
[ | [g]="type (.*?) is not a direct or virtual base of (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"7baa71e2dd9c",1246383292,"More diagnostics related to initialization of direct bases"}, | ||
[k]={{r,4031,"MemInitResult Sema::BuildBaseInitializer(QualType BaseType, TypeSourceInfo *BaseTInfo, Expr *Init, CXXRecordDecl *ClassDecl, SourceLocation EllipsisLoc) {\n if (!Dependent) {\n // C++ [base.class.init]p2:\n // Unless the mem-initializer-id names a nonstatic data member of the\n // constructor\'s class or a direct or virtual base of that class, the\n // mem-initializer is ill-formed.\n if (!DirectBaseSpec && !VirtualBaseSpec) {\n // If the class has any dependent bases, then it\'s possible that\n // one of those types will resolve to the same type as\n // BaseType. Therefore, just treat this as a dependent base\n // class initialization. FIXME: Should we try to check the\n // initialization anyway? It seems odd.\n if (ClassDecl->hasAnyDependentBases())\n else\n return Diag(BaseLoc, diag::err_not_direct_base_or_virtual) << BaseType << Context.getTypeDeclType(ClassDecl) << BaseTInfo->getTypeLoc().getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_not_found_by_two_phase_lookup"]={ | ||
[ | [j]="call to function A that is neither visible in the template definition nor found by argument-dependent lookup", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="call to function %0 that is neither visible in the template definition nor found by argument-dependent lookup", | ||
[ | [f]=n, | ||
[ | [g]="call to function (.*?) that is neither visible in the template definition nor found by argument\\-dependent lookup", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"998a591e3261",1307313768,"Fix PR10053: Improve diagnostics and error recovery for code which some compilers incorrectly accept..."}, | ||
[k]={{Ab,11251,"/// Attempt to recover from an ill-formed use of a non-dependent name in a\n/// template, where the non-dependent name was declared after the template\n/// was defined. This is common in code written for a compilers which do not\n/// correctly implement two-stage name lookup.\n///\n/// Returns true if a viable candidate was found and a diagnostic was issued.\nstatic bool DiagnoseTwoPhaseLookup(Sema &SemaRef, SourceLocation FnLoc, const CXXScopeSpec &SS, LookupResult &R, OverloadCandidateSet::CandidateSetKind CSK, TemplateArgumentListInfo *ExplicitTemplateArgs, ArrayRef<Expr *> Args, CXXRecordDecl **FoundInClass = nullptr) {\n for (DeclContext *DC = SemaRef.CurContext; DC; DC = DC->getParent()) {\n if (!R.empty()) {\n SemaRef.Diag(R.getNameLoc(), diag::err_not_found_by_two_phase_lookup) << R.getLookupName();"}} | |||
}, | }, | ||
[" | ["err_not_integral_type_anon_bitfield"]={ | ||
[ | [j]="anonymous bit-field has non-integral type A", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="anonymous bit-field has non-integral type %0", | ||
[ | [f]=n, | ||
[h]= | [g]="anonymous bit\\-field has non\\-integral type (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={"f9b00eb7dc88",1240248578,"clean up anonymous bitfield diagnostics, PR4017"}, | ||
[k]={{p,15667,"// Note that FieldName may be null for anonymous bitfields.\nExprResult Sema::VerifyBitField(SourceLocation FieldLoc, IdentifierInfo *FieldName, QualType FieldTy, bool IsMsStruct, Expr *BitWidth) {\n // C99 6.7.2.1p4 - verify the field type.\n // C++ 9.6p3: A bit-field shall have integral or enumeration type.\n if (!FieldTy->isDependentType() && !FieldTy->isIntegralOrEnumerationType()) {\n return Diag(FieldLoc, diag::err_not_integral_type_anon_bitfield) << FieldTy << BitWidth->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_not_integral_type_bitfield"]={ | ||
[ | [j]="bit-field A has non-integral type B", | ||
[ | [c]=l, | ||
[ | [d]=m, | ||
[ | [e]="bit-field %0 has non-integral type %1", | ||
[ | [f]=n, | ||
[ | [g]="bit\\-field (.*?) has non\\-integral type (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={z,1236199783,A}, | ||
[k]={{p,15666,"// Note that FieldName may be null for anonymous bitfields.\nExprResult Sema::VerifyBitField(SourceLocation FieldLoc, IdentifierInfo *FieldName, QualType FieldTy, bool IsMsStruct, Expr *BitWidth) {\n // C99 6.7.2.1p4 - verify the field type.\n // C++ 9.6p3: A bit-field shall have integral or enumeration type.\n if (!FieldTy->isDependentType() && !FieldTy->isIntegralOrEnumerationType()) {\n if (FieldName)\n return Diag(FieldLoc, diag::err_not_integral_type_bitfield) << FieldName << FieldTy << BitWidth->getSourceRange();"},{r,3092,"/// ActOnCXXMemberDeclarator - This is invoked when a C++ class member\n/// declarator is parsed. \'AS\' is the access specifier, \'BW\' specifies the\n/// bitfield width if there is one, \'InitExpr\' specifies the initializer if\n/// one has been parsed, and \'InitStyle\' is set if an in-class initializer is\n/// present (but parsing it has been deferred).\nNamedDecl *Sema::ActOnCXXMemberDeclarator(Scope *S, AccessSpecifier AS, Declarator &D, MultiTemplateParamsArg TemplateParameterLists, Expr *BW, const VirtSpecifiers &VS, InClassInitStyle InitStyle) {\n if (isInstField) {\n } else {\n // Non-instance-fields can\'t have a bitfield.\n if (BitWidth) {\n if (Member->isInvalidDecl()) {\n } else if (isa<VarDecl>(Member) || isa<VarTemplateDecl>(Member)) {\n } else if (isa<TypedefDecl>(Member)) {\n } else {\n Diag(Loc, diag::err_not_integral_type_bitfield) << Name << cast<ValueDecl>(Member)->getType() << BitWidth->getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_not_tag_in_scope"]={ | ||
[ | [j]="no ... named A in B", | ||
[ | [c]=l, | ||
[d]=m, | |||
[ | [e]="no %select{struct|interface|union|class|enum}0 named %1 in %2", | ||
[f]=n, | |||
[ | [g]="no (?:struct|interface|union|class|enum) named (.*?) in (.*?)", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[ | [b]={x,1237025389,w}, | ||
[k]={{p,14825,"/// This is invoked when we see \'struct foo\' or \'struct {\'. In the\n/// former case, Name will be non-null. In the later case, Name will be null.\n/// TagSpec indicates what kind of tag this is. TUK indicates whether this is a\n/// reference/declaration/definition of a tag.\n///\n/// \\param IsTypeSpecifier \\c true if this is a type-specifier (or\n/// trailing-type-specifier) other than one in an alias-declaration.\n///\n/// \\param SkipBody If non-null, will be set to indicate if the caller should\n/// skip the definition of this tag and treat it as if it were a declaration.\nDeclResult Sema::ActOnTag(Scope *S, unsigned TagSpec, TagUseKind TUK, SourceLocation KWLoc, CXXScopeSpec &SS, IdentifierInfo *Name, SourceLocation NameLoc, const ParsedAttributesView &Attrs, AccessSpecifier AS, SourceLocation ModulePrivateLoc, MultiTemplateParamsArg TemplateParameterLists, bool &OwnedDecl, bool &IsDependent, SourceLocation ScopedEnumKWLoc, bool ScopedEnumUsesClassTag, TypeResult UnderlyingType, bool IsTypeSpecifier, bool IsTemplateParamOrArg, OffsetOfKind OOK, SkipBodyInfo *SkipBody) {\n if (Name && SS.isNotEmpty()) {\n if (Previous.empty()) {\n Diag(NameLoc, diag::err_not_tag_in_scope) << Kind << Name << DC << SS.getRange();"},{"clang/lib/Sema/SemaTemplateInstantiateDecl.cpp",1396,"Decl *TemplateDeclInstantiator::VisitClassTemplateDecl(ClassTemplateDecl *D) {\n if (isFriend) {\n if (!PrevClassTemplate && QualifierLoc) {\n SemaRef.Diag(Pattern->getLocation(), diag::err_not_tag_in_scope) << D->getTemplatedDecl()->getTagKind() << Pattern->getDeclName() << DC << QualifierLoc.getSourceRange();"}} | |||
}, | }, | ||
[" | ["err_ns_attribute_wrong_parameter_type"]={ | ||
[ | [j]="A attribute only applies to ... parameters", | ||
[ | [c]=l, | ||
[d]=m, | |||
[ | [e]="%0 attribute only applies to %select{Objective-C object|pointer|pointer-to-CF-pointer}1 parameters", | ||
[f]=n, | |||
[ | [g]="(.*?) attribute only applies to (?:Objective\\-C object|pointer|pointer\\-to\\-CF\\-pointer) parameters", | ||
[ | [h]=a, | ||
[ | [i]=o, | ||
[b]={"3b5a8f5ffc83",1456963803,"Improve some infrastructure for extended parameter infos and"}, | |||
[ | [k]={{v,5191,"void Sema::AddXConsumedAttr(Decl *D, const AttributeCommonInfo &CI, RetainOwnershipKind K, bool IsTemplateInstantiation) {\n case RetainOwnershipKind::NS:\n handleSimpleAttributeOrDiagnose<NSConsumedAttr>(*this, VD, CI, isValidSubjectOfNSAttribute(VD->getType()),\n ((IsTemplateInstantiation && getLangOpts().ObjCAutoRefCount) ? diag::err_ns_attribute_wrong_parameter_type : diag::warn_ns_attribute_wrong_parameter_type),"}} | ||
[ | |||
}, | }, | ||
["err_nsconsumed_attribute_mismatch"]={ | |||
[ | |||
} | } | ||
}; | }; |
edits