summaryrefslogtreecommitdiff
path: root/tests/headers
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@fb.com>2021-07-30 19:41:10 -0700
committerEmilio Cobos Álvarez <emilio@crisal.io>2021-07-31 13:33:42 +0200
commitd1d2eb62d36c462416a606c680e6b4ba4716daab (patch)
treeeff269a021df4cacbd8d84d3d8d4a8d3e40aace7 /tests/headers
parent546454625caa66eddc9400bc7a1048edf2a9fbc8 (diff)
Don't assume that an inner class declaration always immediately yields a
complete type. It might not if we had to avoid recursion when processing types. Detect that case and bail out. This bug was being masked by the fact that we didn't always find definitions for the recursion check and so it didn't trigger, but now that this check is more reliable we have to be careful in more places. The test case was reduced from the GCC STL allocator definition.
Diffstat (limited to 'tests/headers')
-rw-r--r--tests/headers/nested-template-typedef.hpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/tests/headers/nested-template-typedef.hpp b/tests/headers/nested-template-typedef.hpp
new file mode 100644
index 00000000..8c83de5b
--- /dev/null
+++ b/tests/headers/nested-template-typedef.hpp
@@ -0,0 +1,8 @@
+template<typename T>
+class Foo {
+public:
+ template<typename U>
+ struct Bar {
+ typedef Foo<U> FooU;
+ };
+};