@@ -2702,7 +2702,7 @@ def infer_metaclass_and_bases_from_compat_helpers(self, defn: ClassDef) -> None:
27022702 if len (metas ) == 0 :
27032703 return
27042704 if len (metas ) > 1 :
2705- self .fail ("Multiple metaclass definitions" , defn )
2705+ self .fail ("Multiple metaclass definitions" , defn , code = codes . METACLASS )
27062706 return
27072707 defn .metaclass = metas .pop ()
27082708
@@ -2758,7 +2758,11 @@ def get_declared_metaclass(
27582758 elif isinstance (metaclass_expr , MemberExpr ):
27592759 metaclass_name = get_member_expr_fullname (metaclass_expr )
27602760 if metaclass_name is None :
2761- self .fail (f'Dynamic metaclass not supported for "{ name } "' , metaclass_expr )
2761+ self .fail (
2762+ f'Dynamic metaclass not supported for "{ name } "' ,
2763+ metaclass_expr ,
2764+ code = codes .METACLASS ,
2765+ )
27622766 return None , False , True
27632767 sym = self .lookup_qualified (metaclass_name , metaclass_expr )
27642768 if sym is None :
@@ -2769,6 +2773,7 @@ def get_declared_metaclass(
27692773 self .fail (
27702774 f'Class cannot use "{ sym .node .name } " as a metaclass (has type "Any")' ,
27712775 metaclass_expr ,
2776+ code = codes .METACLASS ,
27722777 )
27732778 return None , False , True
27742779 if isinstance (sym .node , PlaceholderNode ):
@@ -2786,11 +2791,15 @@ def get_declared_metaclass(
27862791 metaclass_info = target .type
27872792
27882793 if not isinstance (metaclass_info , TypeInfo ) or metaclass_info .tuple_type is not None :
2789- self .fail (f'Invalid metaclass "{ metaclass_name } "' , metaclass_expr )
2794+ self .fail (
2795+ f'Invalid metaclass "{ metaclass_name } "' , metaclass_expr , code = codes .METACLASS
2796+ )
27902797 return None , False , False
27912798 if not metaclass_info .is_metaclass ():
27922799 self .fail (
2793- 'Metaclasses not inheriting from "type" are not supported' , metaclass_expr
2800+ 'Metaclasses not inheriting from "type" are not supported' ,
2801+ metaclass_expr ,
2802+ code = codes .METACLASS ,
27942803 )
27952804 return None , False , False
27962805 inst = fill_typevars (metaclass_info )
0 commit comments