@@ -151,7 +151,13 @@ def check_namedtuple(self,
151
151
items , types , defaults , ok = self .parse_namedtuple_args (call , fullname )
152
152
if not ok :
153
153
# Error. Construct dummy return value.
154
- return self .build_namedtuple_typeinfo ('namedtuple' , [], [], {})
154
+ if var_name :
155
+ name = var_name
156
+ else :
157
+ name = 'namedtuple@' + str (call .line )
158
+ info = self .build_namedtuple_typeinfo (name , [], [], {})
159
+ self .store_namedtuple_info (info , name , call , is_typed )
160
+ return info
155
161
name = cast (StrExpr , call .args [0 ]).value
156
162
if name != var_name or is_func_scope :
157
163
# Give it a unique name derived from the line number.
@@ -166,11 +172,15 @@ def check_namedtuple(self,
166
172
info = self .build_namedtuple_typeinfo (name , items , types , default_items )
167
173
# Store it as a global just in case it would remain anonymous.
168
174
# (Or in the nearest class if there is one.)
175
+ self .store_namedtuple_info (info , name , call , is_typed )
176
+ return info
177
+
178
+ def store_namedtuple_info (self , info : TypeInfo , name : str ,
179
+ call : CallExpr , is_typed : bool ) -> None :
169
180
stnode = SymbolTableNode (GDEF , info )
170
181
self .api .add_symbol_table_node (name , stnode )
171
182
call .analyzed = NamedTupleExpr (info , is_typed = is_typed )
172
183
call .analyzed .set_line (call .line , call .column )
173
- return info
174
184
175
185
def parse_namedtuple_args (self , call : CallExpr , fullname : str
176
186
) -> Tuple [List [str ], List [Type ], List [Expression ], bool ]:
0 commit comments