@@ -144,36 +144,27 @@ std::vector<Diag> generateMissingIncludeDiagnostics(
144144
145145 llvm::StringRef HeaderRef{Spelling};
146146
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+ }
159155 }
160156 }
161- if (IsAngled == IsQuoted) {
162- IsAngled = HeaderRef.starts_with (" <" );
163- } else if (!IsAngled && IsQuoted) {
164- IsAngled = false ;
165- }
166157
167158 // We might suggest insertion of an existing include in edge cases, e.g.,
168159 // include is present in a PP-disabled region, or spelling of the header
169160 // turns out to be the same as one of the unresolved includes in the
170161 // main file.
171162 std::optional<tooling::Replacement> Replacement = HeaderIncludes.insert (
172- HeaderRef.trim (" \" <>" ), IsAngled , tooling::IncludeDirective::Include);
163+ HeaderRef.trim (" \" <>" ), Angled , tooling::IncludeDirective::Include);
173164 if (!Replacement.has_value ())
174165 continue ;
175166
176- if (IsAngled && Spelling.front () == ' \" ' ) {
167+ if (Angled && Spelling.front () == ' \" ' ) {
177168 Spelling.front () = ' <' ;
178169 Spelling.back () = ' >' ;
179170 }
0 commit comments