@@ -408,6 +408,10 @@ module.exports = grammar({
408408 optional ( 'async' ) ,
409409 'def' ,
410410 field ( 'name' , $ . identifier ) ,
411+ $ . function_definition_scope ,
412+ ) ,
413+
414+ function_definition_scope : $ => seq (
411415 field ( 'type_parameters' , optional ( $ . type_parameter ) ) ,
412416 '(' ,
413417 field ( 'parameters' , optional ( $ . parameters ) ) ,
@@ -495,6 +499,9 @@ module.exports = grammar({
495499 class_definition : $ => seq (
496500 'class' ,
497501 field ( 'name' , $ . identifier ) ,
502+ $ . class_definition_scope ,
503+ ) ,
504+ class_definition_scope : $ => seq (
498505 field ( 'type_parameters' , optional ( $ . type_parameter ) ) ,
499506 field ( 'superclasses' , optional ( $ . argument_list ) ) ,
500507 ':' ,
@@ -570,7 +577,13 @@ module.exports = grammar({
570577 ) ,
571578 ) ) ,
572579
573- dotted_name : $ => prec ( 1 , sep1 ( $ . identifier , '.' ) ) ,
580+ dotted_name : $ => prec ( 1 , seq (
581+ $ . identifier ,
582+ repeat ( seq (
583+ '.' ,
584+ alias ( $ . identifier , $ . member_identifier ) ,
585+ ) ) ,
586+ ) ) ,
574587
575588 // Match cases
576589
@@ -898,7 +911,7 @@ module.exports = grammar({
898911 attribute : $ => prec ( PREC . call , seq (
899912 field ( 'object' , $ . primary_expression ) ,
900913 '.' ,
901- field ( 'attribute' , $ . identifier ) ,
914+ field ( 'attribute' , alias ( $ . identifier , $ . member_identifier ) ) ,
902915 ) ) ,
903916
904917 subscript : $ => prec ( PREC . call , seq (
@@ -944,7 +957,7 @@ module.exports = grammar({
944957 ) ) ,
945958 union_type : $ => prec . left ( seq ( $ . type , '|' , $ . type ) ) ,
946959 constrained_type : $ => prec . right ( seq ( $ . type , ':' , $ . type ) ) ,
947- member_type : $ => seq ( $ . type , '.' , $ . identifier ) ,
960+ member_type : $ => seq ( $ . type , '.' , alias ( $ . identifier , $ . member_identifier ) ) ,
948961
949962 keyword_argument : $ => seq (
950963 field ( 'name' , choice ( $ . identifier , $ . keyword_identifier ) ) ,
0 commit comments