@@ -144,36 +144,27 @@ std::vector<Diag> generateMissingIncludeDiagnostics(
144
144
145
145
llvm::StringRef HeaderRef{Spelling};
146
146
147
- bool IsAngled = false ;
148
- for (auto &Filter : AngledHeaders) {
149
- if (Filter (HeaderRef)) {
150
- IsAngled = true ;
151
- break ;
152
- }
153
- }
154
- bool IsQuoted = false ;
155
- for (auto &Filter : QuotedHeaders) {
156
- if (Filter (HeaderRef)) {
157
- IsQuoted = true ;
158
- break ;
147
+ bool Angled = HeaderRef.starts_with (" <" );
148
+ if (SymbolWithMissingInclude.Providers .front ().kind () ==
149
+ include_cleaner::Header::Kind::Physical) {
150
+ for (auto &Filter : Angled ? QuotedHeaders : AngledHeaders) {
151
+ if (Filter (ResolvedPath)) {
152
+ Angled = !Angled;
153
+ break ;
154
+ }
159
155
}
160
156
}
161
- if (IsAngled == IsQuoted) {
162
- IsAngled = HeaderRef.starts_with (" <" );
163
- } else if (!IsAngled && IsQuoted) {
164
- IsAngled = false ;
165
- }
166
157
167
158
// We might suggest insertion of an existing include in edge cases, e.g.,
168
159
// include is present in a PP-disabled region, or spelling of the header
169
160
// turns out to be the same as one of the unresolved includes in the
170
161
// main file.
171
162
std::optional<tooling::Replacement> Replacement = HeaderIncludes.insert (
172
- HeaderRef.trim (" \" <>" ), IsAngled , tooling::IncludeDirective::Include);
163
+ HeaderRef.trim (" \" <>" ), Angled , tooling::IncludeDirective::Include);
173
164
if (!Replacement.has_value ())
174
165
continue ;
175
166
176
- if (IsAngled && Spelling.front () == ' \" ' ) {
167
+ if (Angled && Spelling.front () == ' \" ' ) {
177
168
Spelling.front () = ' <' ;
178
169
Spelling.back () = ' >' ;
179
170
}
0 commit comments