diff --git a/python/psi-api/src/com/jetbrains/python/psi/PyElementGenerator.java b/python/psi-api/src/com/jetbrains/python/psi/PyElementGenerator.java index 695d5e566509..75a0bbce28b4 100644 --- a/python/psi-api/src/com/jetbrains/python/psi/PyElementGenerator.java +++ b/python/psi-api/src/com/jetbrains/python/psi/PyElementGenerator.java @@ -29,7 +29,7 @@ public abstract class PyElementGenerator { return ServiceManager.getService(project, PyElementGenerator.class); } - public abstract ASTNode createNameIdentifier(String name); + public abstract ASTNode createNameIdentifier(String name, LanguageLevel languageLevel); /** * str must have quotes around it and be fully escaped. diff --git a/python/src/com/jetbrains/python/psi/PyUtil.java b/python/src/com/jetbrains/python/psi/PyUtil.java index 67d0d2d58a33..1baf3c4f2871 100644 --- a/python/src/com/jetbrains/python/psi/PyUtil.java +++ b/python/src/com/jetbrains/python/psi/PyUtil.java @@ -713,6 +713,10 @@ public class PyUtil { return false; } + public static ASTNode createNewName(PyElement element, String name) { + return PyElementGenerator.getInstance(element.getProject()).createNameIdentifier(name, LanguageLevel.forElement(element)); + } + public static class KnownDecoratorProviderHolder { public static PyKnownDecoratorProvider[] KNOWN_DECORATOR_PROVIDERS = Extensions.getExtensions(PyKnownDecoratorProvider.EP_NAME); diff --git a/python/src/com/jetbrains/python/psi/impl/PyClassImpl.java b/python/src/com/jetbrains/python/psi/impl/PyClassImpl.java index 02eaa13fda2d..17198ba66ced 100644 --- a/python/src/com/jetbrains/python/psi/impl/PyClassImpl.java +++ b/python/src/com/jetbrains/python/psi/impl/PyClassImpl.java @@ -108,7 +108,7 @@ public class PyClassImpl extends PyPresentableElementImpl implement } public PsiElement setName(@NotNull String name) throws IncorrectOperationException { - final ASTNode nameElement = PyElementGenerator.getInstance(getProject()).createNameIdentifier(name); + final ASTNode nameElement = PyUtil.createNewName(this, name); final ASTNode node = getNameNode(); if (node != null) { getNode().replaceChild(node, nameElement); diff --git a/python/src/com/jetbrains/python/psi/impl/PyDecoratorImpl.java b/python/src/com/jetbrains/python/psi/impl/PyDecoratorImpl.java index 7459ae7e841d..f15a664fcbba 100644 --- a/python/src/com/jetbrains/python/psi/impl/PyDecoratorImpl.java +++ b/python/src/com/jetbrains/python/psi/impl/PyDecoratorImpl.java @@ -172,10 +172,10 @@ public class PyDecoratorImpl extends StubBasedPsiElementBase im public PsiElement setName(@NonNls @NotNull String name) throws IncorrectOperationException { final ASTNode node = getNode(); - final ASTNode name_node = node.findChildByType(PyTokenTypes.IDENTIFIER); - if (name_node != null) { - final ASTNode nameElement = PyElementGenerator.getInstance(getProject()).createNameIdentifier(name); - node.replaceChild(name_node, nameElement); + final ASTNode nameNode = node.findChildByType(PyTokenTypes.IDENTIFIER); + if (nameNode != null) { + final ASTNode nameElement = PyUtil.createNewName(this, name); + node.replaceChild(nameNode, nameElement); return this; } else { diff --git a/python/src/com/jetbrains/python/psi/impl/PyElementGeneratorImpl.java b/python/src/com/jetbrains/python/psi/impl/PyElementGeneratorImpl.java index 0e08771f2d5f..1a8f123a6aff 100644 --- a/python/src/com/jetbrains/python/psi/impl/PyElementGeneratorImpl.java +++ b/python/src/com/jetbrains/python/psi/impl/PyElementGeneratorImpl.java @@ -49,8 +49,8 @@ public class PyElementGeneratorImpl extends PyElementGenerator { myProject = project; } - public ASTNode createNameIdentifier(String name) { - final PsiFile dummyFile = createDummyFile(LanguageLevel.getDefault(), name); + public ASTNode createNameIdentifier(String name, LanguageLevel languageLevel) { + final PsiFile dummyFile = createDummyFile(languageLevel, name); final PyExpressionStatement expressionStatement = (PyExpressionStatement)dummyFile.getFirstChild(); final PyReferenceExpression refExpression = (PyReferenceExpression)expressionStatement.getFirstChild(); diff --git a/python/src/com/jetbrains/python/psi/impl/PyFunctionImpl.java b/python/src/com/jetbrains/python/psi/impl/PyFunctionImpl.java index f80a4f6ae5c9..d108c09c98fc 100644 --- a/python/src/com/jetbrains/python/psi/impl/PyFunctionImpl.java +++ b/python/src/com/jetbrains/python/psi/impl/PyFunctionImpl.java @@ -104,7 +104,7 @@ public class PyFunctionImpl extends PyPresentableElementImpl imp } public PsiElement setName(@NotNull String name) throws IncorrectOperationException { - final ASTNode nameElement = PyElementGenerator.getInstance(getProject()).createNameIdentifier(name); + final ASTNode nameElement = PyUtil.createNewName(this, name); final ASTNode nameNode = getNameNode(); if (nameNode != null) { getNode().replaceChild(nameNode, nameElement); diff --git a/python/src/com/jetbrains/python/psi/impl/PyNamedParameterImpl.java b/python/src/com/jetbrains/python/psi/impl/PyNamedParameterImpl.java index ec683d667da3..b0a0367084e2 100644 --- a/python/src/com/jetbrains/python/psi/impl/PyNamedParameterImpl.java +++ b/python/src/com/jetbrains/python/psi/impl/PyNamedParameterImpl.java @@ -91,7 +91,7 @@ public class PyNamedParameterImpl extends PyPresentableElementImpl