@@ -329,6 +329,18 @@ def MaybeSubstituteParameters(base_type, parameters=None):
329329 return base_type .Visit (ReplaceTypeParameters (mapping ))
330330
331331
332+ def _MaybeSubstituteParametersInGenericType (node ):
333+ if isinstance (node .base_type , (pytd .GenericType , pytd .UnionType )):
334+ try :
335+ node = MaybeSubstituteParameters (
336+ node .base_type , node .parameters ) or node
337+ except ValueError as e :
338+ raise KeyError (str (e )) from e
339+ elif isinstance (node .base_type , pytd .AnythingType ):
340+ return node .base_type
341+ return node
342+
343+
332344class LookupExternalTypes (_RemoveTypeParametersFromGenericAny , _ToTypeVisitor ):
333345 """Look up NamedType pointers using a symbol table."""
334346
@@ -482,13 +494,7 @@ def VisitClassType(self, t):
482494 return new_type
483495
484496 def VisitGenericType (self , node ):
485- if isinstance (node .base_type , (pytd .GenericType , pytd .UnionType )):
486- try :
487- node = MaybeSubstituteParameters (
488- node .base_type , node .parameters ) or node
489- except ValueError as e :
490- raise KeyError (str (e )) from e
491- return node
497+ return _MaybeSubstituteParametersInGenericType (node )
492498
493499 def _ModulePrefix (self ):
494500 return self .name + "." if self .name else ""
@@ -757,6 +763,9 @@ def VisitClassType(self, t):
757763 t .cls = cast (pytd .ClassType , self .VisitNamedType (lookup_type )).cls
758764 return t
759765
766+ def VisitGenericType (self , node ):
767+ return _MaybeSubstituteParametersInGenericType (node )
768+
760769
761770class ReplaceTypes (Visitor ):
762771 """Visitor for replacing types in a tree.
0 commit comments