mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
fixed PY-10902 PyCharm 3 no __init__ class introspection for django Meta classes
This commit is contained in:
@@ -2,7 +2,9 @@ package com.jetbrains.python.inspections;
|
||||
|
||||
import com.intellij.codeInspection.LocalInspectionToolSession;
|
||||
import com.intellij.codeInspection.ProblemsHolder;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.PsiElementVisitor;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.jetbrains.python.PyBundle;
|
||||
import com.jetbrains.python.PyNames;
|
||||
import com.jetbrains.python.inspections.quickfix.AddMethodQuickFix;
|
||||
@@ -44,6 +46,11 @@ public class PyClassHasNoInitInspection extends PyInspection {
|
||||
|
||||
@Override
|
||||
public void visitPyClass(PyClass node) {
|
||||
final PyClass outerClass = PsiTreeUtil.getParentOfType(node, PyClass.class);
|
||||
assert node != null;
|
||||
if (outerClass != null && StringUtil.equalsIgnoreCase("meta", node.getName())) {
|
||||
return;
|
||||
}
|
||||
final List<PyClassLikeType> types = node.getAncestorTypes(myTypeEvalContext);
|
||||
for (PyClassLikeType type : types) {
|
||||
if (type == null) return;
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
from django.db import models
|
||||
class BasePage(models.Model):
|
||||
title = models.CharField(max_length=50)
|
||||
slug = models.CharField(max_length=50)
|
||||
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
@@ -31,6 +31,10 @@ public class PyClassHasNoInitInspectionTest extends PyTestCase {
|
||||
doTest();
|
||||
}
|
||||
|
||||
public void testMeta() {
|
||||
doTest();
|
||||
}
|
||||
|
||||
public void testUnresolvedAncestor() {
|
||||
doTest();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user