(self, class_type, visibility, templated_types)
| 1477 | return bases, token |
| 1478 | |
| 1479 | def _GetClass(self, class_type, visibility, templated_types): |
| 1480 | class_name = None |
| 1481 | class_token = self._GetNextToken() |
| 1482 | if class_token.token_type != tokenize.NAME: |
| 1483 | assert class_token.token_type == tokenize.SYNTAX, class_token |
| 1484 | token = class_token |
| 1485 | else: |
| 1486 | # Skip any macro (e.g. storage class specifiers) after the |
| 1487 | # 'class' keyword. |
| 1488 | next_token = self._GetNextToken() |
| 1489 | if next_token.token_type == tokenize.NAME: |
| 1490 | self._AddBackToken(next_token) |
| 1491 | else: |
| 1492 | self._AddBackTokens([class_token, next_token]) |
| 1493 | name_tokens, token = self.GetName() |
| 1494 | class_name = ''.join([t.name for t in name_tokens]) |
| 1495 | bases = None |
| 1496 | if token.token_type == tokenize.SYNTAX: |
| 1497 | if token.name == ';': |
| 1498 | # Forward declaration. |
| 1499 | return class_type(class_token.start, class_token.end, |
| 1500 | class_name, None, templated_types, None, |
| 1501 | self.namespace_stack) |
| 1502 | if token.name in '*&': |
| 1503 | # Inline forward declaration. Could be method or data. |
| 1504 | name_token = self._GetNextToken() |
| 1505 | next_token = self._GetNextToken() |
| 1506 | if next_token.name == ';': |
| 1507 | # Handle data |
| 1508 | modifiers = ['class'] |
| 1509 | return self._CreateVariable(class_token, name_token.name, |
| 1510 | class_name, |
| 1511 | modifiers, token.name, None) |
| 1512 | else: |
| 1513 | # Assume this is a method. |
| 1514 | tokens = (class_token, token, name_token, next_token) |
| 1515 | self._AddBackTokens(tokens) |
| 1516 | return self.GetMethod(FUNCTION_NONE, None) |
| 1517 | if token.name == ':': |
| 1518 | bases, token = self._GetBases() |
| 1519 | |
| 1520 | body = None |
| 1521 | if token.token_type == tokenize.SYNTAX and token.name == '{': |
| 1522 | assert token.token_type == tokenize.SYNTAX, token |
| 1523 | assert token.name == '{', token |
| 1524 | |
| 1525 | ast = AstBuilder(self.GetScope(), self.filename, class_name, |
| 1526 | visibility, self.namespace_stack) |
| 1527 | body = list(ast.Generate()) |
| 1528 | |
| 1529 | if not self._handling_typedef: |
| 1530 | token = self._GetNextToken() |
| 1531 | if token.token_type != tokenize.NAME: |
| 1532 | assert token.token_type == tokenize.SYNTAX, token |
| 1533 | assert token.name == ';', token |
| 1534 | else: |
| 1535 | new_class = class_type(class_token.start, class_token.end, |
| 1536 | class_name, bases, None, |
no test coverage detected