forked from OSchip/llvm-project
Typo correct the condition of 'do-while' before exiting its scope
rdar://35172419 llvm-svn: 316966
This commit is contained in:
parent
a544c51e94
commit
c38ba6697f
|
@ -1479,6 +1479,9 @@ StmtResult Parser::ParseDoStatement() {
|
|||
DiagnoseAndSkipCXX11Attributes();
|
||||
|
||||
ExprResult Cond = ParseExpression();
|
||||
// Correct the typos in condition before closing the scope.
|
||||
if (Cond.isUsable())
|
||||
Cond = Actions.CorrectDelayedTyposInExpr(Cond);
|
||||
T.consumeClose();
|
||||
DoScope.Exit();
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: %clang_cc1 %s -verify -fsyntax-only
|
||||
// RUN: %clang_cc1 %s -verify -fsyntax-only -Wno-objc-root-class
|
||||
|
||||
class ClassA {};
|
||||
|
||||
|
@ -55,3 +55,35 @@ void invalidNameInIvarAndPropertyBase() {
|
|||
typoCandidate.x = 0; // expected-error {{use of undeclared identifier 'typoCandidate'; did you mean '_typoCandidate'?}}
|
||||
}
|
||||
@end
|
||||
|
||||
// rdar://35172419
|
||||
// The scope of 'do-while' ends before typo-correction takes place.
|
||||
|
||||
struct Mat2 { int rows; };
|
||||
|
||||
@implementation ImplNoInt // expected-warning {{cannot find interface declaration for 'ImplNoInt'}}
|
||||
|
||||
- (void)typoCorrentInDoWhile {
|
||||
Mat2 tlMat1; // expected-note {{'tlMat1' declared here}}
|
||||
// Create many scopes to exhaust the cache.
|
||||
do {
|
||||
for (int index = 0; index < 2; index++) {
|
||||
if (true) {
|
||||
for (int specialTileType = 1; specialTileType < 5; specialTileType++) {
|
||||
for (int i = 0; i < 10; i++) {
|
||||
for (double scale = 0.95; scale <= 1.055; scale += 0.05) {
|
||||
for (int j = 0; j < 10; j++) {
|
||||
if (1 > 0.9) {
|
||||
for (int sptile = 1; sptile < 5; sptile++) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} while (tlMat.rows); // expected-error {{use of undeclared identifier 'tlMat'; did you mean 'tlMat1'}}
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
Loading…
Reference in New Issue