533 if deltastack: |
533 if deltastack: |
534 del deltastack[-1] |
534 del deltastack[-1] |
535 deltaindentcalculated = False |
535 deltaindentcalculated = False |
536 # close all classes indented at least as much |
536 # close all classes indented at least as much |
537 while classstack and classstack[-1][1] >= thisindent: |
537 while classstack and classstack[-1][1] >= thisindent: |
538 del classstack[-1] |
538 classstack.pop() |
539 if classstack: |
539 if classstack: |
540 # it's a class method |
540 # it's a class method |
541 cur_class = classstack[-1][0] |
541 cur_class = classstack[-1][0] |
542 if cur_class: |
542 if cur_class: |
543 # it's a method/nested def |
543 # it's a method/nested def |
585 elif m.captured("Class"): |
585 elif m.captured("Class"): |
586 # we found a class definition |
586 # we found a class definition |
587 thisindent = _indent(m.captured("ClassIndent")) |
587 thisindent = _indent(m.captured("ClassIndent")) |
588 # close all classes indented at least as much |
588 # close all classes indented at least as much |
589 while classstack and classstack[-1][1] >= thisindent: |
589 while classstack and classstack[-1][1] >= thisindent: |
590 del classstack[-1] |
590 classstack.pop() |
591 lineno += src.count("\n", last_lineno_pos, start) |
591 lineno += src.count("\n", last_lineno_pos, start) |
592 last_lineno_pos = start |
592 last_lineno_pos = start |
593 class_name = m.captured("ClassName") |
593 class_name = m.captured("ClassName") |
594 inherit = m.captured("ClassSupers") |
594 inherit = m.captured("ClassSupers") |
595 if inherit: |
595 if inherit: |
690 else: |
690 else: |
691 if isinstance(classstack[index][0], Class): |
691 if isinstance(classstack[index][0], Class): |
692 classstack[index][0]._addglobal( |
692 classstack[index][0]._addglobal( |
693 Attribute(module, variable_name, file, lineno) |
693 Attribute(module, variable_name, file, lineno) |
694 ) |
694 ) |
|
695 elif isinstance(classstack[index][0], Function): |
|
696 classstack[index][0]._addattribute( |
|
697 Attribute(module, variable_name, file, lineno) |
|
698 ) |
695 break |
699 break |
696 |
700 |
697 elif m.captured("TypedVariable"): |
701 elif m.captured("TypedVariable"): |
698 thisindent = _indent(m.captured("TypedVariableIndent")) |
702 thisindent = _indent(m.captured("TypedVariableIndent")) |
699 variable_name = m.captured("TypedVariableName") |
703 variable_name = m.captured("TypedVariableName") |
718 if classstack[index][1] >= thisindent: |
722 if classstack[index][1] >= thisindent: |
719 index -= 1 |
723 index -= 1 |
720 else: |
724 else: |
721 if isinstance(classstack[index][0], Class): |
725 if isinstance(classstack[index][0], Class): |
722 classstack[index][0]._addglobal( |
726 classstack[index][0]._addglobal( |
|
727 Attribute(module, variable_name, file, lineno) |
|
728 ) |
|
729 elif isinstance(classstack[index][0], Function): |
|
730 classstack[index][0]._addattribute( |
723 Attribute(module, variable_name, file, lineno) |
731 Attribute(module, variable_name, file, lineno) |
724 ) |
732 ) |
725 break |
733 break |
726 |
734 |
727 elif m.captured("Publics"): |
735 elif m.captured("Publics"): |