diff --git a/python/helpers/pycharm/tcunittest.py b/python/helpers/pycharm/tcunittest.py index d8b37caad90f..d63160e0e4ec 100644 --- a/python/helpers/pycharm/tcunittest.py +++ b/python/helpers/pycharm/tcunittest.py @@ -51,7 +51,7 @@ class TeamcityTestResult(TestResult): start = getattr(test, "startTime", datetime.datetime.now()) d = datetime.datetime.now() - start duration=d.microseconds / 1000 + d.seconds * 1000 + d.days * 86400000 - self.messages.testFinished(self.getTestName(test), duration=duration) + self.messages.testFinished(self.getTestName(test), duration=int(duration)) class TeamcityTestRunner: def __init__(self, stream=sys.stdout): diff --git a/python/src/com/jetbrains/python/codeInsight/PythonRegexpInjector.java b/python/src/com/jetbrains/python/codeInsight/PythonRegexpInjector.java index 2b4897d4776e..5cd092bab0d8 100644 --- a/python/src/com/jetbrains/python/codeInsight/PythonRegexpInjector.java +++ b/python/src/com/jetbrains/python/codeInsight/PythonRegexpInjector.java @@ -50,13 +50,15 @@ public class PythonRegexpInjector implements LanguageInjector { final PyExpression[] args = ((PyArgumentList)host.getParent()).getArguments(); int index = ArrayUtil.indexOf(args, host); PyCallExpression call = PsiTreeUtil.getParentOfType(host, PyCallExpression.class); - final PyExpression callee = call.getCallee(); - if (callee instanceof PyReferenceExpression && canBeRegexpCall(callee)) { - final PsiElement element = ((PyReferenceExpression)callee).getReference().resolve(); - if (element != null && element.getContainingFile().getName().equals("re.py") && isRegexpMethod(element, index)) { - List ranges = ((PyStringLiteralExpression)host).getStringValueTextRanges(); - if (ranges.size() == 1) { - injectionPlacesRegistrar.addPlace(RegExpLanguage.INSTANCE, ranges.get(0), null, null); + if (call != null) { + final PyExpression callee = call.getCallee(); + if (callee instanceof PyReferenceExpression && canBeRegexpCall(callee)) { + final PsiElement element = ((PyReferenceExpression)callee).getReference().resolve(); + if (element != null && element.getContainingFile().getName().equals("re.py") && isRegexpMethod(element, index)) { + List ranges = ((PyStringLiteralExpression)host).getStringValueTextRanges(); + if (ranges.size() == 1) { + injectionPlacesRegistrar.addPlace(RegExpLanguage.INSTANCE, ranges.get(0), null, null); + } } } } diff --git a/python/src/com/jetbrains/python/psi/impl/PyCallExpressionImpl.java b/python/src/com/jetbrains/python/psi/impl/PyCallExpressionImpl.java index 02da8b792d26..52161d1c19da 100644 --- a/python/src/com/jetbrains/python/psi/impl/PyCallExpressionImpl.java +++ b/python/src/com/jetbrains/python/psi/impl/PyCallExpressionImpl.java @@ -162,7 +162,7 @@ public class PyCallExpressionImpl extends PyElementImpl implements PyCallExpress } } } - else if (((PyFile)getContainingFile()).getLanguageLevel().isPy3K()) { + else if (((PyFile)getContainingFile()).getLanguageLevel().isPy3K() && containingClass != null) { return getFirstSuperClassType(containingClass); } } @@ -192,7 +192,8 @@ public class PyCallExpressionImpl extends PyElementImpl implements PyCallExpress return null; } - private static PyType getFirstSuperClassType(PyClass first_class) { + @Nullable + private static PyType getFirstSuperClassType(@NotNull PyClass first_class) { // TODO handle __mro__ here final PyClass[] supers = first_class.getSuperClasses(); if (supers.length > 0) {