[PATCH] D64799: [Sema] Emit diagnostics for uncorrected delayed typos at the end of TU
Ilya Biryukov via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Oct 9 03:06:03 PDT 2019
This revision was automatically updated to reflect the committed changes.
Closed by commit rGaeae71cd96c3: [Sema] Emit diagnostics for uncorrected delayed typos at the end of TU (authored by ilya-biryukov).
Changed prior to commit:
https://reviews.llvm.org/D64799?vs=210338&id=224005#toc
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D64799/new/
https://reviews.llvm.org/D64799
Files:
clang/lib/Sema/Sema.cpp
clang/test/SemaObjC/typo-correction-subscript.m
Index: clang/test/SemaObjC/typo-correction-subscript.m
===================================================================
--- clang/test/SemaObjC/typo-correction-subscript.m
+++ clang/test/SemaObjC/typo-correction-subscript.m
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -triple i386-apple-macosx10.10 -fobjc-arc -fsyntax-only -Wno-objc-root-class %s -verify -disable-free
+// RUN: %clang_cc1 -triple i386-apple-macosx10.10 -fobjc-arc -fsyntax-only -Wno-objc-root-class %s -verify
@class Dictionary;
@@ -9,6 +9,7 @@
- (void)rdar47403222:(Dictionary *)opts {
[self undeclaredMethod:undeclaredArg];
// expected-error at -1{{no visible @interface for 'Test' declares the selector 'undeclaredMethod:'}}
+ // expected-error at -2{{use of undeclared identifier 'undeclaredArg}}
opts[(__bridge id)undeclaredKey] = 0;
// expected-error at -1{{use of undeclared identifier 'undeclaredKey'}}
}
Index: clang/lib/Sema/Sema.cpp
===================================================================
--- clang/lib/Sema/Sema.cpp
+++ clang/lib/Sema/Sema.cpp
@@ -38,6 +38,7 @@
#include "clang/Sema/SemaInternal.h"
#include "clang/Sema/TemplateDeduction.h"
#include "clang/Sema/TemplateInstCallback.h"
+#include "clang/Sema/TypoCorrection.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/Support/TimeProfiler.h"
@@ -383,8 +384,6 @@
// Detach from the PP callback handler which outlives Sema since it's owned
// by the preprocessor.
SemaPPCallbackHandler->reset();
-
- assert(DelayedTypos.empty() && "Uncorrected typos!");
}
void Sema::warnStackExhausted(SourceLocation Loc) {
@@ -934,6 +933,15 @@
assert(LateParsedInstantiations.empty() &&
"end of TU template instantiation should not create more "
"late-parsed templates");
+
+ // Report diagnostics for uncorrected delayed typos. Ideally all of them
+ // should have been corrected by that time, but it is very hard to cover all
+ // cases in practice.
+ for (const auto &Typo : DelayedTypos) {
+ // We pass an empty TypoCorrection to indicate no correction was performed.
+ Typo.second.DiagHandler(TypoCorrection());
+ }
+ DelayedTypos.clear();
}
/// ActOnEndOfTranslationUnit - This is called at the very end of the
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D64799.224005.patch
Type: text/x-patch
Size: 2242 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20191009/0cd718f1/attachment.bin>
More information about the cfe-commits
mailing list