103103 OpExpr ,
104104 OverloadedFuncDef ,
105105 SetExpr ,
106+ SliceExpr ,
106107 StarExpr ,
107108 Statement ,
108109 StrExpr ,
@@ -355,6 +356,9 @@ def visit_tuple_expr(self, node: TupleExpr) -> str:
355356 def visit_list_expr (self , node : ListExpr ) -> str :
356357 return f"[{ ', ' .join (n .accept (self ) for n in node .items )} ]"
357358
359+ def visit_set_expr (self , node : SetExpr ) -> str :
360+ return f"{{{ ', ' .join (n .accept (self ) for n in node .items )} }}"
361+
358362 def visit_dict_expr (self , o : DictExpr ) -> str :
359363 dict_items = []
360364 for key , value in o .items :
@@ -369,13 +373,38 @@ def visit_ellipsis(self, node: EllipsisExpr) -> str:
369373 def visit_op_expr (self , o : OpExpr ) -> str :
370374 return f"{ o .left .accept (self )} { o .op } { o .right .accept (self )} "
371375
376+ def visit_unary_expr (self , o : UnaryExpr , / ) -> str :
377+ return f"{ o .op } { o .expr .accept (self )} "
378+
379+ def visit_slice_expr (self , o : SliceExpr , / ) -> str :
380+ blocks = [
381+ o .begin_index .accept (self ) if o .begin_index is not None else "" ,
382+ o .end_index .accept (self ) if o .end_index is not None else "" ,
383+ ]
384+ if o .stride is not None :
385+ blocks .append (o .stride .accept (self ))
386+ return ":" .join (blocks )
387+
372388 def visit_star_expr (self , o : StarExpr ) -> str :
373389 return f"*{ o .expr .accept (self )} "
374390
375391 def visit_lambda_expr (self , o : LambdaExpr ) -> str :
376392 # TODO: Required for among other things dataclass.field default_factory
377393 return self .stubgen .add_name ("_typeshed.Incomplete" )
378394
395+ def _visit_unsupported_expr (self , o : object ) -> str :
396+ # Something we do not understand.
397+ return self .stubgen .add_name ("_typeshed.Incomplete" )
398+
399+ visit_comparison_expr = _visit_unsupported_expr
400+ visit_cast_expr = _visit_unsupported_expr
401+ visit_conditional_expr = _visit_unsupported_expr
402+
403+ visit_list_comprehension = _visit_unsupported_expr
404+ visit_set_comprehension = _visit_unsupported_expr
405+ visit_dictionary_comprehension = _visit_unsupported_expr
406+ visit_generator_expr = _visit_unsupported_expr
407+
379408
380409def find_defined_names (file : MypyFile ) -> set [str ]:
381410 finder = DefinitionFinder ()
0 commit comments