void PathDiagnostic::Profile(llvm::FoldingSetNodeID &ID) const { if (Size) getLocation().Profile(ID); ID.AddString(BugType); ID.AddString(Desc); ID.AddString(Category); }
void PathDiagnostic::Profile(llvm::FoldingSetNodeID &ID) const { ID.AddInteger(Size); ID.AddString(BugType); ID.AddString(Desc); ID.AddString(Category); for (const_iterator I = begin(), E = end(); I != E; ++I) ID.Add(*I); for (meta_iterator I = meta_begin(), E = meta_end(); I != E; ++I) ID.AddString(*I); }
void InvocationOptions::profile(llvm::FoldingSetNodeID &ID) const { // FIXME: This ties ASTs to every argument and the exact order that they were // provided, preventing much sharing of ASTs. // Note though that previously we tried targeting specific options considered // semantically relevant but it proved too fragile (very easy to miss some new // compiler invocation option). // Possibly have all compiler invocation options auto-generated from a // tablegen definition file, thus forcing a decision for each option if it is // ok to share ASTs with the option differing. for (auto &Arg : Args) ID.AddString(Arg); ID.AddString(PrimaryFile); }
void PathDiagnostic::FullProfile(llvm::FoldingSetNodeID &ID) const { Profile(ID); for (PathPieces::const_iterator I = path.begin(), E = path.end(); I != E; ++I) ID.Add(**I); for (meta_iterator I = meta_begin(), E = meta_end(); I != E; ++I) ID.AddString(*I); }
void PathDiagnostic::FullProfile(llvm::FoldingSetNodeID &ID) const { Profile(ID); for (const auto &I : path) ID.Add(*I); for (meta_iterator I = meta_begin(), E = meta_end(); I != E; ++I) ID.AddString(*I); }
void PathDiagnosticPiece::Profile(llvm::FoldingSetNodeID &ID) const { ID.AddInteger((unsigned) getKind()); ID.AddString(str); // FIXME: Add profiling support for code hints. ID.AddInteger((unsigned) getDisplayHint()); for (range_iterator I = ranges_begin(), E = ranges_end(); I != E; ++I) { ID.AddInteger(I->getBegin().getRawEncoding()); ID.AddInteger(I->getEnd().getRawEncoding()); } }
void PathDiagnosticPiece::Profile(llvm::FoldingSetNodeID &ID) const { ID.AddInteger((unsigned) getKind()); ID.AddString(str); // FIXME: Add profiling support for code hints. ID.AddInteger((unsigned) getDisplayHint()); ArrayRef<SourceRange> Ranges = getRanges(); for (const auto &I : Ranges) { ID.AddInteger(I.getBegin().getRawEncoding()); ID.AddInteger(I.getEnd().getRawEncoding()); } }
void RawSyntax::Profile(llvm::FoldingSetNodeID &ID, tok TokKind, OwnedString Text, ArrayRef<TriviaPiece> LeadingTrivia, ArrayRef<TriviaPiece> TrailingTrivia) { ID.AddInteger(unsigned(TokKind)); switch (TokKind) { #define TOKEN_DEFAULT(NAME) case tok::NAME: #define PUNCTUATOR(NAME, X) TOKEN_DEFAULT(NAME) #define KEYWORD(KW) TOKEN_DEFAULT(kw_##KW) #define POUND_KEYWORD(KW) TOKEN_DEFAULT(pound_##KW) #include "swift/Syntax/TokenKinds.def" break; default: ID.AddString(Text.str()); break; } for (auto &Piece : LeadingTrivia) Piece.Profile(ID); for (auto &Piece : TrailingTrivia) Piece.Profile(ID); }
void PathDiagnostic::Profile(llvm::FoldingSetNodeID &ID) const { ID.Add(getLocation()); ID.AddString(BugType); ID.AddString(VerboseDesc); ID.AddString(Category); }