summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--astroid/scoped_nodes.py18
1 files changed, 11 insertions, 7 deletions
diff --git a/astroid/scoped_nodes.py b/astroid/scoped_nodes.py
index 540c7f38..10fffa61 100644
--- a/astroid/scoped_nodes.py
+++ b/astroid/scoped_nodes.py
@@ -1594,13 +1594,17 @@ class FunctionDef(mixins.MultiLineBlockMixin, node_classes.Statement, Lambda):
self.args.vararg is not None):
metaclass = next(caller.args[0].infer(context))
if isinstance(metaclass, ClassDef):
- c = ClassDef('temporary_class', None)
- c.hide = True
- c.parent = self
- class_bases = [next(b.infer(context)) for b in caller.args[1:]]
- c.bases = [base for base in class_bases if base != util.Uninferable]
- c._metaclass = metaclass
- yield c
+ class_bases = [next(arg.infer(context)) for arg in caller.args[1:]]
+ new_class = ClassDef(name='temporary_class')
+ new_class.hide = True
+ new_class.parent = self
+ new_class.postinit(
+ bases=[base for base in class_bases if base != util.Uninferable],
+ body=[],
+ decorators=[],
+ metaclass=metaclass,
+ )
+ yield new_class
return
returns = self._get_return_nodes_skip_functions()