Sema: Check that __leave is contained in a __try block.
Give scope a SEHTryScope bit, set that in ParseSEHTry(), and let Sema
walk the scope chain to find the SEHTry parent on __leave statements.
(They are rare enough that it seems better to do the walk instead of
giving Scope a SEHTryParent pointer -- this is similar to AtCatchScope.)
llvm-svn: 212422
diff --git a/clang/test/SemaCXX/__try.cpp b/clang/test/SemaCXX/__try.cpp
index ac79ee7..28a3701 100644
--- a/clang/test/SemaCXX/__try.cpp
+++ b/clang/test/SemaCXX/__try.cpp
@@ -83,8 +83,7 @@
// Clang accepts try with __finally. MSVC doesn't. (Maybe a Borland thing?)
// __leave in mixed blocks isn't supported.
try {
- // FIXME: should say "__leave stmt not in __try block":
- __leave; // expected-error{{not implemented yet}}
+ __leave; // expected-error{{'__leave' statement not in __try block}}
} __finally {
}
}