Skip to content

Commit b24fc16

Browse files
committed
Merge from 'main' to 'sycl-web' (#216)
CONFLICT (content): Merge conflict in clang/lib/Frontend/CompilerInvocation.cpp
2 parents 251377e + 39a2a23 commit b24fc16

File tree

764 files changed

+356425
-279203
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

764 files changed

+356425
-279203
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,3 +64,5 @@ pythonenv*
6464
/clang/utils/analyzer/projects/*/PatchedSource
6565
/clang/utils/analyzer/projects/*/ScanBuildResults
6666
/clang/utils/analyzer/projects/*/RefScanBuildResults
67+
# automodapi puts generated documentation files here.
68+
/lldb/docs/python_api/

clang-tools-extra/clangd/ClangdServer.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,7 @@ void ClangdServer::codeComplete(PathRef File, Position Pos,
255255
ParseInput.Opts.BuildRecoveryAST = BuildRecoveryAST;
256256
ParseInput.Opts.PreserveRecoveryASTType = PreserveRecoveryASTType;
257257

258+
CodeCompleteOpts.MainFileSignals = IP->Signals;
258259
// FIXME(ibiryukov): even if Preamble is non-null, we may want to check
259260
// both the old and the new version in case only one of them matches.
260261
CodeCompleteResult Result = clangd::codeComplete(

clang-tools-extra/clangd/CodeComplete.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1685,6 +1685,7 @@ class CodeCompleteFlow {
16851685
if (PreferredType)
16861686
Relevance.HadContextType = true;
16871687
Relevance.ContextWords = &ContextWords;
1688+
Relevance.MainFileSignals = Opts.MainFileSignals;
16881689

16891690
auto &First = Bundle.front();
16901691
if (auto FuzzyScore = fuzzyScore(First))

clang-tools-extra/clangd/CodeComplete.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANGD_CODECOMPLETE_H
1616
#define LLVM_CLANG_TOOLS_EXTRA_CLANGD_CODECOMPLETE_H
1717

18+
#include "ASTSignals.h"
1819
#include "Compiler.h"
1920
#include "Headers.h"
2021
#include "Protocol.h"
@@ -89,6 +90,7 @@ struct CodeCompleteOptions {
8990
/// clangd.
9091
const SymbolIndex *Index = nullptr;
9192

93+
const ASTSignals *MainFileSignals = nullptr;
9294
/// Include completions that require small corrections, e.g. change '.' to
9395
/// '->' on member access etc.
9496
bool IncludeFixIts = false;

clang-tools-extra/clangd/DumpAST.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ class DumpVisitor : public RecursiveASTVisitor<DumpVisitor> {
143143
TEMPLATE_ARGUMENT_KIND(Declaration);
144144
TEMPLATE_ARGUMENT_KIND(Template);
145145
TEMPLATE_ARGUMENT_KIND(TemplateExpansion);
146+
TEMPLATE_ARGUMENT_KIND(UncommonValue);
146147
#undef TEMPLATE_ARGUMENT_KIND
147148
}
148149
llvm_unreachable("Unhandled ArgKind enum");

clang-tools-extra/clangd/FindTarget.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1079,6 +1079,7 @@ class ExplicitReferenceCollector
10791079
case TemplateArgument::Pack:
10801080
case TemplateArgument::Type:
10811081
case TemplateArgument::Expression:
1082+
case TemplateArgument::UncommonValue:
10821083
break; // Handled by VisitType and VisitExpression.
10831084
};
10841085
return RecursiveASTVisitor::TraverseTemplateArgumentLoc(A);

clang-tools-extra/clangd/Quality.cpp

Lines changed: 52 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,38 @@ void SymbolRelevanceSignals::merge(const Symbol &IndexResult) {
294294
if (!(IndexResult.Flags & Symbol::VisibleOutsideFile)) {
295295
Scope = AccessibleScope::FileScope;
296296
}
297+
if (MainFileSignals) {
298+
MainFileRefs =
299+
std::max(MainFileRefs,
300+
MainFileSignals->ReferencedSymbols.lookup(IndexResult.ID));
301+
ScopeRefsInFile =
302+
std::max(ScopeRefsInFile,
303+
MainFileSignals->RelatedNamespaces.lookup(IndexResult.Scope));
304+
}
305+
}
306+
307+
void SymbolRelevanceSignals::computeASTSignals(
308+
const CodeCompletionResult &SemaResult) {
309+
if (!MainFileSignals)
310+
return;
311+
if ((SemaResult.Kind != CodeCompletionResult::RK_Declaration) &&
312+
(SemaResult.Kind != CodeCompletionResult::RK_Pattern))
313+
return;
314+
if (const NamedDecl *ND = SemaResult.getDeclaration()) {
315+
auto ID = getSymbolID(ND);
316+
if (!ID)
317+
return;
318+
MainFileRefs =
319+
std::max(MainFileRefs, MainFileSignals->ReferencedSymbols.lookup(ID));
320+
if (const auto *NSD = dyn_cast<NamespaceDecl>(ND->getDeclContext())) {
321+
if (NSD->isAnonymousNamespace())
322+
return;
323+
std::string Scope = printNamespaceScope(*NSD);
324+
if (!Scope.empty())
325+
ScopeRefsInFile = std::max(
326+
ScopeRefsInFile, MainFileSignals->RelatedNamespaces.lookup(Scope));
327+
}
328+
}
297329
}
298330

299331
void SymbolRelevanceSignals::merge(const CodeCompletionResult &SemaCCResult) {
@@ -315,6 +347,7 @@ void SymbolRelevanceSignals::merge(const CodeCompletionResult &SemaCCResult) {
315347
InBaseClass |= SemaCCResult.InBaseClass;
316348
}
317349

350+
computeASTSignals(SemaCCResult);
318351
// Declarations are scoped, others (like macros) are assumed global.
319352
if (SemaCCResult.Declaration)
320353
Scope = std::min(Scope, computeScope(SemaCCResult.Declaration));
@@ -501,20 +534,31 @@ evaluateDecisionForest(const SymbolQualitySignals &Quality,
501534

502535
SymbolRelevanceSignals::DerivedSignals Derived =
503536
Relevance.calculateDerivedSignals();
504-
E.setIsNameInContext(Derived.NameMatchesContext);
505-
E.setIsForbidden(Relevance.Forbidden);
537+
int NumMatch = 0;
538+
if (Relevance.ContextWords) {
539+
for (const auto &Word : Relevance.ContextWords->keys()) {
540+
if (Relevance.Name.contains_lower(Word)) {
541+
++NumMatch;
542+
}
543+
}
544+
}
545+
E.setIsNameInContext(NumMatch > 0);
546+
E.setNumNameInContext(NumMatch);
547+
E.setFractionNameInContext(
548+
Relevance.ContextWords && !Relevance.ContextWords->empty()
549+
? NumMatch * 1.0 / Relevance.ContextWords->size()
550+
: 0);
506551
E.setIsInBaseClass(Relevance.InBaseClass);
507-
E.setFileProximityDistance(Derived.FileProximityDistance);
552+
E.setFileProximityDistanceCost(Derived.FileProximityDistance);
508553
E.setSemaFileProximityScore(Relevance.SemaFileProximityScore);
509-
E.setSymbolScopeDistance(Derived.ScopeProximityDistance);
554+
E.setSymbolScopeDistanceCost(Derived.ScopeProximityDistance);
510555
E.setSemaSaysInScope(Relevance.SemaSaysInScope);
511556
E.setScope(Relevance.Scope);
512557
E.setContextKind(Relevance.Context);
513558
E.setIsInstanceMember(Relevance.IsInstanceMember);
514559
E.setHadContextType(Relevance.HadContextType);
515560
E.setHadSymbolType(Relevance.HadSymbolType);
516561
E.setTypeMatchesPreferred(Relevance.TypeMatchesPreferred);
517-
E.setFilterLength(Relevance.FilterLength);
518562

519563
DecisionForestScores Scores;
520564
// Exponentiating DecisionForest prediction makes the score of each tree a
@@ -525,6 +569,9 @@ evaluateDecisionForest(const SymbolQualitySignals &Quality,
525569
// data that needs fixits is not-feasible.
526570
if (Relevance.NeedsFixIts)
527571
Scores.ExcludingName *= 0.5;
572+
if (Relevance.Forbidden)
573+
Scores.ExcludingName *= 0;
574+
528575
// NameMatch should be a multiplier on total score to support rescoring.
529576
Scores.Total = Relevance.NameMatch * Scores.ExcludingName;
530577
return Scores;

0 commit comments

Comments
 (0)