void (@NotNull PyTargetExpression node) { // TODO: Check types in class-level assignments final ScopeOwner owner = ScopeUtil.getScopeOwner(node); if (owner instanceof PyClass) return; final PyExpression value = node.findAssignedValue(); if (value == null) return; final PyType expected = myTypeEvalContext.getType(node); final PyType actual = tryPromotingType(value, expected); if (expected != null && actual instanceof PyTypedDictType) { if (reportTypedDictProblems(expected, (PyTypedDictType)actual, value)) return; } if (!PyTypeChecker.match(expected, actual, myTypeEvalContext)) { String expectedName = PythonDocumentationProvider.getTypeName(expected, myTypeEvalContext); String actualName = PythonDocumentationProvider.getTypeName(actual, myTypeEvalContext); registerProblem(value, PyPsiBundle.message("INSP.type.checker.expected.type.got.type.instead", expectedName, actualName)); } }