diff options
-rwxr-xr-x | scripts/generator/cpp/ast.py | 7 | ||||
-rwxr-xr-x | scripts/generator/cpp/gmock_class_test.py | 36 | ||||
-rwxr-xr-x | scripts/generator/cpp/tokenize.py | 2 |
3 files changed, 41 insertions, 4 deletions
diff --git a/scripts/generator/cpp/ast.py b/scripts/generator/cpp/ast.py index 201bf3a..11cbe91 100755 --- a/scripts/generator/cpp/ast.py +++ b/scripts/generator/cpp/ast.py @@ -496,9 +496,10 @@ class TypeConverter(object): else: names.append(t.name) name = ''.join(names) - result.append(Type(name_tokens[0].start, name_tokens[-1].end, - name, templated_types, modifiers, - reference, pointer, array)) + if name_tokens: + result.append(Type(name_tokens[0].start, name_tokens[-1].end, + name, templated_types, modifiers, + reference, pointer, array)) del name_tokens[:] i = 0 diff --git a/scripts/generator/cpp/gmock_class_test.py b/scripts/generator/cpp/gmock_class_test.py index 27eb86c..018f90a 100755 --- a/scripts/generator/cpp/gmock_class_test.py +++ b/scripts/generator/cpp/gmock_class_test.py @@ -407,6 +407,42 @@ void()); self.assertEqualIgnoreLeadingWhitespace( expected, self.GenerateMocks(source)) + def testTemplateInATemplateTypedef(self): + source = """ +class Test { + public: + typedef std::vector<std::list<int>> FooType; + virtual void Bar(const FooType& test_arg); +}; +""" + expected = """\ +class MockTest : public Test { +public: +MOCK_METHOD1(Bar, +void(const FooType& test_arg)); +}; +""" + self.assertEqualIgnoreLeadingWhitespace( + expected, self.GenerateMocks(source)) + + def testTemplateInATemplateTypedefWithComma(self): + source = """ +class Test { + public: + typedef std::function<void( + const vector<std::list<int>>&, int> FooType; + virtual void Bar(const FooType& test_arg); +}; +""" + expected = """\ +class MockTest : public Test { +public: +MOCK_METHOD1(Bar, +void(const FooType& test_arg)); +}; +""" + self.assertEqualIgnoreLeadingWhitespace( + expected, self.GenerateMocks(source)) if __name__ == '__main__': unittest.main() diff --git a/scripts/generator/cpp/tokenize.py b/scripts/generator/cpp/tokenize.py index 28c3345..359d556 100755 --- a/scripts/generator/cpp/tokenize.py +++ b/scripts/generator/cpp/tokenize.py @@ -173,7 +173,7 @@ def GetTokens(source): token_type = SYNTAX i += 1 new_ch = source[i] - if new_ch == c: + if new_ch == c and c != '>': # Treat ">>" as two tokens. i += 1 elif c == '-' and new_ch == '>': i += 1 |