From 1442a08b6ac8eee1ec27d95a16939a1d11deefa5 Mon Sep 17 00:00:00 2001 From: Renaud Durlin Date: Sun, 6 Oct 2013 21:59:28 +0200 Subject: [PATCH] Handle templated default value. class Foo { void Get(int i = Bar()); }; --- cpp/ast.py | 5 ++++- test_ast.py | 12 ++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/cpp/ast.py b/cpp/ast.py index a14db1f..0bb70f2 100644 --- a/cpp/ast.py +++ b/cpp/ast.py @@ -623,7 +623,10 @@ def add_parameter(): elif s.name == '>': template_count -= 1 if template_count > 0: - type_modifiers.append(s) + if default: + default.append(s) + else: + type_modifiers.append(s) continue if s.name == ',': diff --git a/test_ast.py b/test_ast.py index 11cd125..c7fe402 100755 --- a/test_ast.py +++ b/test_ast.py @@ -332,6 +332,18 @@ def test_simple_with_initializers(self): self.assertEqual('data', results[0].name) self.assertEqual([Token('NULL')], results[0].default) + def test_templated_default_value(self): + tokens = get_tokens('int i = Handle()') + results = self.converter.to_parameters(list(tokens)) + self.assertEqual(1, len(results)) + + self.assertEqual([], results[0].type.modifiers) + self.assertEqual('int', results[0].type.name) + self.assertEqual([], results[0].type.templated_types) + self.assertEqual(False, results[0].type.pointer) + self.assertEqual(False, results[0].type.reference) + self.assertEqual(False, results[0].type.array) + self.assertEqual('i', results[0].name) class TypeConverterToTypeTest(unittest.TestCase):