From fd680450d67145fecaaf9ed6817d44d1f3c31399 Mon Sep 17 00:00:00 2001 From: Renaud Durlin Date: Tue, 14 Jul 2015 22:04:00 +0200 Subject: [PATCH] Better handling of final class --- cpp/ast.py | 4 +++- test_ast.py | 5 +++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/cpp/ast.py b/cpp/ast.py index 95ef5f1..b348851 100644 --- a/cpp/ast.py +++ b/cpp/ast.py @@ -1571,7 +1571,9 @@ def _get_class(self, class_type, visibility, templated_types): # Handle attribute. elif token.token_type == tokenize.NAME: self._add_back_token(token) - name_tokens, token = self.get_name() + attribute, token = self.get_name() + if len(attribute) > 1 or attribute[0].name != 'final': + name_tokens = attribute class_name = ''.join([t.name for t in name_tokens]) bases = None if token.token_type == tokenize.SYNTAX: diff --git a/test_ast.py b/test_ast.py index 92b7842..499e11c 100755 --- a/test_ast.py +++ b/test_ast.py @@ -744,6 +744,11 @@ def test_struct_empty_body(self): self.assertEqual(1, len(nodes)) self.assertEqual(Struct('Foo', body=[]), nodes[0]) + def test_class_final(self): + nodes = list(MakeBuilder('class Foo final {};').generate()) + self.assertEqual(1, len(nodes)) + self.assertEqual(Class('Foo', body=[]), nodes[0]) + def test_class_exported(self): nodes = list(MakeBuilder('class DLLEXPORT Foo {};').generate()) self.assertEqual(1, len(nodes))