diff --git a/CppHeaderParser/CppHeaderParser.py b/CppHeaderParser/CppHeaderParser.py index 56739b0..7b07900 100644 --- a/CppHeaderParser/CppHeaderParser.py +++ b/CppHeaderParser/CppHeaderParser.py @@ -1685,7 +1685,7 @@ def finalize_vars(self): elif nestedTypedef: var["fundamental"] = is_fundamental(nestedTypedef) - if not var["fundamental"]: + if not var["fundamental"] and "method" in var: var["raw_type"] = var["method"]["path"] + "::" + tag else: diff --git a/test/test_CppHeaderParser.py b/test/test_CppHeaderParser.py index d23cb23..a876d87 100644 --- a/test/test_CppHeaderParser.py +++ b/test/test_CppHeaderParser.py @@ -3838,5 +3838,35 @@ def test_fn(self): ) +class NestedTypedef(unittest.TestCase): + def setUp(self): + self.cppHeader = CppHeaderParser.CppHeader( + """ +template class A { + public: + typedef B C; + + A(); + + protected: + C aCInstance; +}; +""", + "string", + ) + + def test_fn(self): + c = self.cppHeader.classes["A"] + self.assertEqual("A", c["name"]) + + self.assertEqual(0, len(c["properties"]["public"])) + self.assertEqual(1, len(c["properties"]["protected"])) + self.assertEqual(0, len(c["properties"]["private"])) + + c = c["properties"]["protected"][0] + self.assertEqual(c["name"], "aCInstance") + self.assertEqual(c["type"], "C") + + if __name__ == "__main__": unittest.main()