Don't run code analysis for injections with interpolation in string formatting (PY-11962)

This commit is contained in:
Andrey Vlasovskikh
2014-01-29 20:58:08 +04:00
parent e4bf6e4be6
commit 6e66b227d6
7 changed files with 99 additions and 25 deletions

View File

@@ -10,6 +10,7 @@
<orderEntry type="module" module-name="core-api" />
<orderEntry type="module" module-name="IntelliLang" />
<orderEntry type="module" module-name="python-community" />
<orderEntry type="module" module-name="lang-impl" />
</component>
</module>

View File

@@ -1,7 +1,10 @@
package com.jetbrains.python.intelliLang;
import com.intellij.lang.Language;
import com.intellij.lang.injection.MultiHostRegistrar;
import com.intellij.psi.PsiElement;
import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil;
import com.jetbrains.python.codeInsight.PyInjectionUtil;
import com.jetbrains.python.codeInsight.PyInjectorBase;
import org.intellij.plugins.intelliLang.Configuration;
import org.intellij.plugins.intelliLang.inject.InjectedLanguage;
@@ -15,6 +18,14 @@ import org.jetbrains.annotations.Nullable;
* @author vlan
*/
public class PyConfigurationInjector extends PyInjectorBase {
@Override
public void getLanguagesToInject(@NotNull MultiHostRegistrar registrar, @NotNull PsiElement context) {
final PyInjectionUtil.InjectionResult result = registerInjection(registrar, context);
if (!result.isStrict()) {
InjectorUtils.putInjectedFileUserData(registrar, InjectedLanguageUtil.FRANKENSTEIN_INJECTION, Boolean.TRUE);
}
}
@Nullable
@Override
public Language getInjectedLanguage(@NotNull PsiElement context) {

View File

@@ -5,6 +5,8 @@ import com.intellij.lang.injection.MultiHostRegistrar;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiLanguageInjectionHost;
import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil;
import com.jetbrains.python.codeInsight.PyInjectionUtil;
import com.jetbrains.python.codeInsight.PyInjectorBase;
import org.intellij.plugins.intelliLang.inject.InjectedLanguage;
import org.intellij.plugins.intelliLang.inject.InjectorUtils;
@@ -18,9 +20,13 @@ import org.jetbrains.annotations.Nullable;
public class PyTemporaryInjector extends PyInjectorBase {
@Override
public void getLanguagesToInject(@NotNull MultiHostRegistrar registrar, @NotNull PsiElement context) {
if (registerInjection(registrar, context)) {
final PyInjectionUtil.InjectionResult result = registerInjection(registrar, context);
if (result.isInjected()) {
final TemporaryPlacesRegistry registry = TemporaryPlacesRegistry.getInstance(context.getProject());
InjectorUtils.registerSupport(registry.getLanguageInjectionSupport(), false, registrar);
if (!result.isStrict()) {
InjectorUtils.putInjectedFileUserData(registrar, InjectedLanguageUtil.FRANKENSTEIN_INJECTION, Boolean.TRUE);
}
}
}