From 2a004b3a4e73de030e59744fa45199b24b823d68 Mon Sep 17 00:00:00 2001 From: Danila Ponomarenko Date: Wed, 27 Jun 2012 11:00:50 +0400 Subject: [PATCH 01/14] additional test for additional test for ConvertColorRepresentationIntentionAction --- .../after2Bytes.java | 21 +++++++++++++++++++ .../before2Bytes.java | 21 +++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/convertColorRepresentation/after2Bytes.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/convertColorRepresentation/before2Bytes.java diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/convertColorRepresentation/after2Bytes.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/convertColorRepresentation/after2Bytes.java new file mode 100644 index 000000000000..a2412d27557a --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/convertColorRepresentation/after2Bytes.java @@ -0,0 +1,21 @@ +// "Convert to 'new Color(0x10101)'" "true" + +package java.awt; + +class A { + private Color color = new Color(0x10101); +} + +class Color { + Color(int r, int g, int b) { + } + + Color(int r, int g, int b, int a) { + } + + Color(int rgb) { + } + + Color(int rgba, boolean hasAlpha) { + } +} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/convertColorRepresentation/before2Bytes.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/convertColorRepresentation/before2Bytes.java new file mode 100644 index 000000000000..8396cba9cc2e --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/convertColorRepresentation/before2Bytes.java @@ -0,0 +1,21 @@ +// "Convert to 'new Color(0x10101)'" "true" + +package java.awt; + +class A { + private Color color = new Color(257, 257, 257); +} + +class Color { + Color(int r, int g, int b) { + } + + Color(int r, int g, int b, int a) { + } + + Color(int rgb) { + } + + Color(int rgba, boolean hasAlpha) { + } +} From 412363443561e38c7c6d027e386f2ec02c9b67ed Mon Sep 17 00:00:00 2001 From: Danila Ponomarenko Date: Wed, 27 Jun 2012 13:07:10 +0400 Subject: [PATCH 02/14] IDEA-87839 'Split string' intention implemented --- ...reakStringOnLineBreaksIntentionAction.java | 110 ++++++++++++++++++ .../breakStringOnLineBreaks/afterAll.java | 7 ++ .../breakStringOnLineBreaks/beforeAll.java | 5 + .../beforeLastSlashN.java | 5 + .../beforeLastSlashNSlashR.java | 5 + .../quickFix/BreakStringOnLineBreaksTest.java | 30 +++++ .../src/messages/CodeInsightBundle.properties | 1 + .../after.java.template | 3 + .../before.java.template | 1 + .../description.html | 5 + resources/src/META-INF/IdeaPlugin.xml | 6 + 11 files changed, 178 insertions(+) create mode 100644 java/java-impl/src/com/intellij/codeInsight/intention/impl/BreakStringOnLineBreaksIntentionAction.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/breakStringOnLineBreaks/afterAll.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/breakStringOnLineBreaks/beforeAll.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/breakStringOnLineBreaks/beforeLastSlashN.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/breakStringOnLineBreaks/beforeLastSlashNSlashR.java create mode 100644 java/java-tests/testSrc/com/intellij/codeInsight/daemon/quickFix/BreakStringOnLineBreaksTest.java create mode 100644 resources-en/src/intentionDescriptions/BreakStringOnLineBreaksIntentionAction/after.java.template create mode 100644 resources-en/src/intentionDescriptions/BreakStringOnLineBreaksIntentionAction/before.java.template create mode 100644 resources-en/src/intentionDescriptions/BreakStringOnLineBreaksIntentionAction/description.html diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/BreakStringOnLineBreaksIntentionAction.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/BreakStringOnLineBreaksIntentionAction.java new file mode 100644 index 000000000000..8f7316f12da5 --- /dev/null +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/BreakStringOnLineBreaksIntentionAction.java @@ -0,0 +1,110 @@ +/* + * Copyright 2000-2012 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.codeInsight.intention.impl; + +import com.intellij.codeInsight.CodeInsightBundle; +import com.intellij.codeInsight.intention.PsiElementBaseIntentionAction; +import com.intellij.openapi.editor.Editor; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.Comparing; +import com.intellij.openapi.util.text.StringUtil; +import com.intellij.psi.*; +import com.intellij.util.IncorrectOperationException; +import org.jetbrains.annotations.NotNull; + +/** + * @author Danila Ponomarenko + */ +public class BreakStringOnLineBreaksIntentionAction extends PsiElementBaseIntentionAction { + @Override + public boolean isAvailable(@NotNull Project project, Editor editor, @NotNull PsiElement element) { + if (!(element instanceof PsiJavaToken)) { + return false; + } + + final PsiJavaToken token = (PsiJavaToken)element; + + if (token.getTokenType() != JavaTokenType.STRING_LITERAL) { + return false; + } + + final String text = token.getText(); + if (text == null) { + return false; + } + + final int indexOfSlashN = text.indexOf("\\n"); + final int indexOfSlashNSlashR = text.indexOf("\\n\\r"); + + if (indexOfSlashN == -1 || Comparing.equal(text.substring(indexOfSlashN, text.length()), "\\n\"")){ + return false; + } + + if (indexOfSlashN != -1 && Comparing.equal(text.substring(indexOfSlashNSlashR, text.length()), "\\n\\r\"")){ + return false; + } + + return true; + } + + @Override + public void invoke(@NotNull Project project, Editor editor, @NotNull PsiElement element) throws IncorrectOperationException { + if (!(element instanceof PsiJavaToken)) { + return; + } + + final PsiJavaToken token = (PsiJavaToken)element; + + if (token.getTokenType() != JavaTokenType.STRING_LITERAL) { + return; + } + + + final String text = token.getText(); + if (text == null) { + return; + } + + final PsiElementFactory factory = JavaPsiFacade.getElementFactory(project); + token.replace(factory.createExpressionFromText(breakOnLineBreaks(text), element)); + } + + + @NotNull + private static String breakOnLineBreaks(@NotNull String string) { + final String result = StringUtil.replace( + string, + new String[]{"\\n\\r", "\\n"}, + new String[]{"\\n\\r\" + \n\"", "\\n\" + \n\""} + ); + + final String redundantSuffix = " + \n\"\""; + + return result.endsWith(redundantSuffix) ? result.substring(0, result.length() - redundantSuffix.length()) : result; + } + + @NotNull + @Override + public String getText() { + return CodeInsightBundle.message("intention.break.string.on.line.breaks.text"); + } + + @NotNull + @Override + public String getFamilyName() { + return getText(); + } +} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/breakStringOnLineBreaks/afterAll.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/breakStringOnLineBreaks/afterAll.java new file mode 100644 index 000000000000..c921867b407c --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/breakStringOnLineBreaks/afterAll.java @@ -0,0 +1,7 @@ +// "Break string on '\n'" "true" + +class A { + String s = "Hello,\n\r" + + "world\n" + + "!\n"; +} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/breakStringOnLineBreaks/beforeAll.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/breakStringOnLineBreaks/beforeAll.java new file mode 100644 index 000000000000..a87961b68b9e --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/breakStringOnLineBreaks/beforeAll.java @@ -0,0 +1,5 @@ +// "Break string on '\n'" "true" + +class A { + String s = "Hello,\n\rworld\n!\n"; +} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/breakStringOnLineBreaks/beforeLastSlashN.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/breakStringOnLineBreaks/beforeLastSlashN.java new file mode 100644 index 000000000000..0de2f83afa6a --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/breakStringOnLineBreaks/beforeLastSlashN.java @@ -0,0 +1,5 @@ +// "Break string on '\n'" "false" + +class A { + String s = "Hello!\n"; +} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/breakStringOnLineBreaks/beforeLastSlashNSlashR.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/breakStringOnLineBreaks/beforeLastSlashNSlashR.java new file mode 100644 index 000000000000..c18a560abff9 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/breakStringOnLineBreaks/beforeLastSlashNSlashR.java @@ -0,0 +1,5 @@ +// "Break string on '\n'" "false" + +class A { + String s = "Hello!\n\r"; +} diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/quickFix/BreakStringOnLineBreaksTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/quickFix/BreakStringOnLineBreaksTest.java new file mode 100644 index 000000000000..946817269ae4 --- /dev/null +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/quickFix/BreakStringOnLineBreaksTest.java @@ -0,0 +1,30 @@ +/* + * Copyright 2000-2012 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.codeInsight.daemon.quickFix; + +/** + * @author Danila Ponomarenko + */ +public class BreakStringOnLineBreaksTest extends LightQuickFixTestCase { + + public void test() throws Exception { doAllTests(); } + + @Override + protected String getBasePath() { + return "/codeInsight/daemonCodeAnalyzer/quickFix/breakStringOnLineBreaks"; + } + +} \ No newline at end of file diff --git a/platform/platform-resources-en/src/messages/CodeInsightBundle.properties b/platform/platform-resources-en/src/messages/CodeInsightBundle.properties index 168a2c8ba2d0..ec22e436d9b4 100644 --- a/platform/platform-resources-en/src/messages/CodeInsightBundle.properties +++ b/platform/platform-resources-en/src/messages/CodeInsightBundle.properties @@ -209,6 +209,7 @@ intention.replace.cast.with.var.text=Replace ''{0}'' with ''{1}'' intention.replace.cast.with.var.family=Replace cast with variable intention.convert.color.representation.text=Convert to ''new Color{0}'' intention.convert.color.representation.family=Convert Color representation +intention.break.string.on.line.breaks.text=Break string on '\\n' intention.create.test=Create Test diff --git a/resources-en/src/intentionDescriptions/BreakStringOnLineBreaksIntentionAction/after.java.template b/resources-en/src/intentionDescriptions/BreakStringOnLineBreaksIntentionAction/after.java.template new file mode 100644 index 000000000000..52c72cfd5452 --- /dev/null +++ b/resources-en/src/intentionDescriptions/BreakStringOnLineBreaksIntentionAction/after.java.template @@ -0,0 +1,3 @@ +String s = "Hello,\n\r" + + "world\n" + + "!\n"; \ No newline at end of file diff --git a/resources-en/src/intentionDescriptions/BreakStringOnLineBreaksIntentionAction/before.java.template b/resources-en/src/intentionDescriptions/BreakStringOnLineBreaksIntentionAction/before.java.template new file mode 100644 index 000000000000..0649294d2073 --- /dev/null +++ b/resources-en/src/intentionDescriptions/BreakStringOnLineBreaksIntentionAction/before.java.template @@ -0,0 +1 @@ +String s = "Hello,\n\rworld\n!\n"; \ No newline at end of file diff --git a/resources-en/src/intentionDescriptions/BreakStringOnLineBreaksIntentionAction/description.html b/resources-en/src/intentionDescriptions/BreakStringOnLineBreaksIntentionAction/description.html new file mode 100644 index 000000000000..9b7858e97f67 --- /dev/null +++ b/resources-en/src/intentionDescriptions/BreakStringOnLineBreaksIntentionAction/description.html @@ -0,0 +1,5 @@ + + +This intention allows to break line on '\n' and '\n\r' line break symbols. + + diff --git a/resources/src/META-INF/IdeaPlugin.xml b/resources/src/META-INF/IdeaPlugin.xml index 362fd21552b9..9923913d40a4 100644 --- a/resources/src/META-INF/IdeaPlugin.xml +++ b/resources/src/META-INF/IdeaPlugin.xml @@ -724,6 +724,12 @@ Other + + com.intellij.codeInsight.intention.impl.BreakStringOnLineBreaksIntentionAction + Other + + + From 2824219518c5cd60a32e8fb72747e50ab1a48bac Mon Sep 17 00:00:00 2001 From: "Maxim.Medvedev" Date: Wed, 27 Jun 2012 12:03:16 +0400 Subject: [PATCH 03/14] IDEA-87836 highlighting for script fields --- .../plugins/groovy/annotator/GroovyAnnotator.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/GroovyAnnotator.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/GroovyAnnotator.java index ea9b38ae3188..4bef6e704089 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/GroovyAnnotator.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/GroovyAnnotator.java @@ -110,6 +110,7 @@ import org.jetbrains.plugins.groovy.lang.psi.impl.signatures.GrClosureSignatureU import org.jetbrains.plugins.groovy.lang.psi.impl.synthetic.GrLightParameter; import org.jetbrains.plugins.groovy.lang.psi.impl.synthetic.GroovyScriptClass; import org.jetbrains.plugins.groovy.lang.psi.util.GrStringUtil; +import org.jetbrains.plugins.groovy.lang.psi.util.GroovyCommonClassNames; import org.jetbrains.plugins.groovy.lang.psi.util.GroovyPropertyUtils; import org.jetbrains.plugins.groovy.lang.psi.util.PsiUtil; import org.jetbrains.plugins.groovy.lang.resolve.ResolveUtil; @@ -166,8 +167,8 @@ public class GroovyAnnotator extends GroovyElementVisitor implements Annotator { annotation.setTextAttributes(DefaultHighlighter.METHOD_DECLARATION); } } - else if (parent instanceof PsiField) { - final boolean isStatic = ((PsiField)parent).hasModifierProperty(PsiModifier.STATIC); + else if (parent instanceof PsiField || parent instanceof GrVariable && isScriptField((GrVariable)parent)) { + final boolean isStatic = ((PsiVariable)parent).hasModifierProperty(PsiModifier.STATIC); final Annotation annotation = holder.createInfoAnnotation(element, null); annotation.setTextAttributes(isStatic ? DefaultHighlighter.STATIC_FIELD : DefaultHighlighter.INSTANCE_FIELD); } @@ -183,11 +184,16 @@ public class GroovyAnnotator extends GroovyElementVisitor implements Annotator { } } + private static boolean isScriptField(GrVariable var) { + PsiClass context = PsiUtil.getContextClass(var); + return context instanceof GroovyScriptClass && var.getModifierList().findAnnotation(GroovyCommonClassNames.GROOVY_TRANSFORM_FIELD) != null; + } + private static void highlightResolved(AnnotationHolder holder, GrReferenceElement refElement, PsiElement resolved) { final PsiElement refNameElement = getElementToHighlight(refElement); - if (resolved instanceof PsiField) { - boolean isStatic = ((PsiField)resolved).hasModifierProperty(PsiModifier.STATIC); + if (resolved instanceof PsiField || resolved instanceof GrVariable && isScriptField((GrVariable)resolved)) { + boolean isStatic = ((PsiVariable)resolved).hasModifierProperty(PsiModifier.STATIC); Annotation annotation = holder.createInfoAnnotation(refNameElement, null); annotation.setTextAttributes(isStatic ? DefaultHighlighter.STATIC_FIELD : DefaultHighlighter.INSTANCE_FIELD); } From b4aff8ea4863325c753d1764a787a771e93bcfec Mon Sep 17 00:00:00 2001 From: "Maxim.Medvedev" Date: Wed, 27 Jun 2012 12:46:40 +0400 Subject: [PATCH 04/14] LightGroovyTestCase is base class for more tests --- .../plugins/groovy/LightGroovyTestCase.groovy | 5 +++ .../groovy/lang/GroovyHighlightingTest.groovy | 33 ++----------------- .../lang/GroovyStressPerformanceTest.groovy | 16 ++++----- .../groovy/lang/MissingReturnTest.groovy | 12 ++----- .../field/GrIntroduceFieldTest.groovy | 8 ++--- 5 files changed, 19 insertions(+), 55 deletions(-) diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/LightGroovyTestCase.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/LightGroovyTestCase.groovy index def7e0a47ebd..96539cf63866 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/LightGroovyTestCase.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/LightGroovyTestCase.groovy @@ -63,4 +63,9 @@ public abstract class LightGroovyTestCase extends LightCodeInsightFixtureTestCas @NonNls protected abstract String getBasePath(); + + protected void addGroovyTransformField() { + myFixture.addClass('''package groovy.transform; public @interface Field{}'''); + } + } diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/GroovyHighlightingTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/GroovyHighlightingTest.groovy index a25f727d2e73..26940d26dc31 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/GroovyHighlightingTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/GroovyHighlightingTest.groovy @@ -19,20 +19,10 @@ package org.jetbrains.plugins.groovy.lang; import com.intellij.codeInspection.InspectionProfileEntry import com.intellij.codeInspection.LocalInspectionTool import com.intellij.codeInspection.deadCode.UnusedDeclarationInspection -import com.intellij.openapi.module.Module -import com.intellij.openapi.roots.ContentEntry -import com.intellij.openapi.roots.ModifiableRootModel -import com.intellij.openapi.roots.OrderRootType -import com.intellij.openapi.roots.libraries.Library -import com.intellij.openapi.vfs.JarFileSystem -import com.intellij.openapi.vfs.VirtualFile import com.intellij.testFramework.IdeaTestUtil -import com.intellij.testFramework.LightProjectDescriptor -import com.intellij.testFramework.fixtures.DefaultLightProjectDescriptor -import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase import com.siyeh.ig.junit.JUnitAbstractTestClassNamingConventionInspection import com.siyeh.ig.junit.JUnitTestClassNamingConventionInspection -import org.jetbrains.annotations.NotNull +import org.jetbrains.plugins.groovy.LightGroovyTestCase import org.jetbrains.plugins.groovy.codeInspection.GroovyUnusedDeclarationInspection import org.jetbrains.plugins.groovy.codeInspection.assignment.GroovyAssignabilityCheckInspection import org.jetbrains.plugins.groovy.codeInspection.assignment.GroovyResultOfAssignmentUsedInspection @@ -50,34 +40,15 @@ import org.jetbrains.plugins.groovy.util.TestUtils import org.jetbrains.plugins.groovy.codeInspection.bugs.* import org.jetbrains.plugins.groovy.codeInspection.confusing.* -import static org.jetbrains.plugins.groovy.util.TestUtils.getMockGroovy1_8LibraryName - /** * @author peter */ -public class GroovyHighlightingTest extends LightCodeInsightFixtureTestCase { - public static final DefaultLightProjectDescriptor GROOVY_18_PROJECT_DESCRIPTOR = new DefaultLightProjectDescriptor() { - @Override - public void configureModule(Module module, ModifiableRootModel model, ContentEntry contentEntry) { - final Library.ModifiableModel modifiableModel = model.moduleLibraryTable.createLibrary("GROOVY").modifiableModel; - final VirtualFile groovyJar = JarFileSystem.instance.refreshAndFindFileByPath(mockGroovy1_8LibraryName + '!/'); - assertTrue(groovyJar != null); - modifiableModel.addRoot(groovyJar, OrderRootType.CLASSES); - modifiableModel.commit(); - } - }; - +public class GroovyHighlightingTest extends LightGroovyTestCase { @Override protected String getBasePath() { return TestUtils.testDataPath + 'highlighting/'; } - @NotNull - @Override - protected LightProjectDescriptor getProjectDescriptor() { - return GROOVY_18_PROJECT_DESCRIPTOR; - } - public void testDuplicateClosurePrivateVariable() throws Throwable { doTest(); } diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/GroovyStressPerformanceTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/GroovyStressPerformanceTest.groovy index 6063fc8290c5..57ae870a8ec1 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/GroovyStressPerformanceTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/GroovyStressPerformanceTest.groovy @@ -3,24 +3,20 @@ package org.jetbrains.plugins.groovy.lang import com.intellij.psi.PsiClass import com.intellij.psi.PsiDocumentManager import com.intellij.testFramework.IdeaTestUtil -import com.intellij.testFramework.LightProjectDescriptor -import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase -import org.jetbrains.annotations.NotNull +import com.intellij.util.ThrowableRunnable import org.jetbrains.plugins.groovy.LightGroovyTestCase +import org.jetbrains.plugins.groovy.codeInspection.noReturnMethod.MissingReturnInspection import org.jetbrains.plugins.groovy.lang.psi.GroovyFile import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrMethod import org.jetbrains.plugins.groovy.lang.psi.impl.GroovyPsiManager -import org.jetbrains.plugins.groovy.codeInspection.noReturnMethod.MissingReturnInspection -import com.intellij.util.ThrowableRunnable /** * @author peter */ -class GroovyStressPerformanceTest extends LightCodeInsightFixtureTestCase { - @NotNull - @Override protected LightProjectDescriptor getProjectDescriptor() { - LightGroovyTestCase.GROOVY_DESCRIPTOR - } +class GroovyStressPerformanceTest extends LightGroovyTestCase { + + @Override + protected String getBasePath() {''} ThrowableRunnable configureAndHighlight(String text) { return { diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/MissingReturnTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/MissingReturnTest.groovy index 538fac39a666..ca4da0763c8a 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/MissingReturnTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/MissingReturnTest.groovy @@ -1,28 +1,20 @@ package org.jetbrains.plugins.groovy.lang; -import com.intellij.testFramework.LightProjectDescriptor -import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase -import org.jetbrains.annotations.NotNull +import org.jetbrains.plugins.groovy.LightGroovyTestCase import org.jetbrains.plugins.groovy.codeInspection.noReturnMethod.MissingReturnInspection import org.jetbrains.plugins.groovy.util.TestUtils /** * @author peter */ -public class MissingReturnTest extends LightCodeInsightFixtureTestCase { +public class MissingReturnTest extends LightGroovyTestCase { @Override protected String getBasePath() { return "${TestUtils.testDataPath}highlighting/missingReturn"; } - @NotNull - @Override - protected LightProjectDescriptor getProjectDescriptor() { - return GroovyHighlightingTest.GROOVY_18_PROJECT_DESCRIPTOR; - } - public void testMissingReturnWithLastLoop() throws Throwable { doTest(); } public void testMissingReturnWithUnknownCall() throws Throwable { doTest(); } public void testMissingReturnWithIf() throws Throwable { doTest(); } diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/introduce/field/GrIntroduceFieldTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/introduce/field/GrIntroduceFieldTest.groovy index 7027de482f99..8e4b2c3a1e0c 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/introduce/field/GrIntroduceFieldTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/introduce/field/GrIntroduceFieldTest.groovy @@ -89,7 +89,7 @@ public class GrIntroduceFieldTest extends LightGroovyTestCase { } public void testScriptBody() { - myFixture.addClass('''package groovy.transform; public @interface Field{}''') + addGroovyTransformField() doTest('''\ print 'abc' ''', '''\ @@ -101,7 +101,7 @@ print f } public void testScriptMethod() { - myFixture.addClass('''package groovy.transform; public @interface Field{}''') + addGroovyTransformField() doTest('''\ def foo() { print 'abc' @@ -118,7 +118,7 @@ def foo() { } public void testStaticScriptMethod() { - myFixture.addClass('''package groovy.transform; public @interface Field{}''') + addGroovyTransformField() doTest('''\ static def foo() { print 'abc' @@ -135,7 +135,7 @@ static def foo() { } public void testScriptMethod2() { - myFixture.addClass('''package groovy.transform; public @interface Field{}''') + addGroovyTransformField() doTest('''\ def foo() { print 'abc' From e0d326e421a76caa174f62765d8997c8f78749b3 Mon Sep 17 00:00:00 2001 From: "Maxim.Medvedev" Date: Wed, 27 Jun 2012 13:05:48 +0400 Subject: [PATCH 05/14] don't resolve local vars of script in inner classes of script --- .../groovy/lang/psi/impl/GroovyFileImpl.java | 19 +++------ .../lang/resolve/ResolvePropertyTest.groovy | 39 ++++++++++++++++++- 2 files changed, 44 insertions(+), 14 deletions(-) diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/GroovyFileImpl.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/GroovyFileImpl.java index 83ad732149b9..a9a8b6d1c534 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/GroovyFileImpl.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/GroovyFileImpl.java @@ -43,11 +43,10 @@ import org.jetbrains.plugins.groovy.lang.parser.GroovyElementTypes; import org.jetbrains.plugins.groovy.lang.psi.GroovyFile; import org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElementFactory; import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrTopLevelDefinition; -import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrVariableDeclaration; import org.jetbrains.plugins.groovy.lang.psi.api.statements.params.GrParameter; import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.GrTypeDefinition; +import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrMember; import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrMembersDeclaration; -import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrMethod; import org.jetbrains.plugins.groovy.lang.psi.api.toplevel.GrTopStatement; import org.jetbrains.plugins.groovy.lang.psi.api.toplevel.imports.GrImportStatement; import org.jetbrains.plugins.groovy.lang.psi.api.toplevel.packaging.GrPackageDefinition; @@ -126,7 +125,7 @@ public class GroovyFileImpl extends GroovyFileBaseImpl implements GroovyFile { return true; } - PsiClass scriptClass = getScriptClass(); + GroovyScriptClass scriptClass = getScriptClass(); if (scriptClass != null) { if (!(lastParent instanceof GrTypeDefinition)) { if (!scriptClass.processDeclarations(processor, state, lastParent, place)) return false; @@ -294,9 +293,7 @@ public class GroovyFileImpl extends GroovyFileBaseImpl implements GroovyFile { PsiElement run = lastParent == null ? getLastChild() : lastParent.getPrevSibling(); while (run != null) { - if (!(run instanceof GrTopLevelDefinition) && - !(run instanceof GrImportStatement) && - isDeclarationVisible(lastParent, run) && + if (shouldProcess(lastParent, run) && !run.processDeclarations(processor, state, null, place)) { return false; } @@ -306,14 +303,10 @@ public class GroovyFileImpl extends GroovyFileBaseImpl implements GroovyFile { return true; } - private static boolean isDeclarationVisible(PsiElement lastParent, PsiElement decl) { - if (lastParent instanceof GrMethod && decl instanceof GrVariableDeclaration) { - return false; - } - return true; + private static boolean shouldProcess(PsiElement lastParent, PsiElement run) { + return !(run instanceof GrTopLevelDefinition || run instanceof GrImportStatement || lastParent instanceof GrMember); } - public GrImportStatement[] getImportStatements() { List result = new ArrayList(); for (PsiElement child : getChildren()) { @@ -521,7 +514,7 @@ public class GroovyFileImpl extends GroovyFileBaseImpl implements GroovyFile { return result; } - private boolean checkRange(PsiElement parent, int offset) { + private static boolean checkRange(PsiElement parent, int offset) { return parent.getTextRange().contains(offset -1) && parent.getTextRange().contains(offset+1); } diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/ResolvePropertyTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/ResolvePropertyTest.groovy index 24be0c7871be..bede79cd1865 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/ResolvePropertyTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/ResolvePropertyTest.groovy @@ -684,7 +684,7 @@ setFoo(2) } public void testFieldTransform() { - myFixture.addClass('package groovy.transform; public @interface Field {}') + addGroovyTransformField() def ref = configureByText("""@groovy.transform.Field def aaa = 2 def foo() { println aaa } """) @@ -800,4 +800,41 @@ new A().prop''') assertEquals(method.parameterList.parameters[0].type.canonicalText, CommonClassNames.JAVA_LANG_STRING) } + + void testLocalVarNotAvailableInClass() { + def ref = configureByText('''\ +def aa = 5 + +class Inner { + def foo() { + print aa + } +}''') + assertNull(ref.resolve()) + } + + void testLocalVarNotAvailableInMethod() { + def ref = configureByText('''\ +def aa = 5 + +def foo() { + print aa +}''') + assertNull(ref.resolve()) + } + + void testScriptFieldNotAvailableInClass() { + def ref = configureByText('''\ +import groovy.transform.Field + +@Field +def aa = 5 + +class X { + def foo() { + print aa + } +}''') + assertNull(ref.resolve()) + } } From 08b3adfe81f65e479a5107cdbe28d800de34e2bd Mon Sep 17 00:00:00 2001 From: "Maxim.Medvedev" Date: Wed, 27 Jun 2012 13:24:58 +0400 Subject: [PATCH 06/14] initializer of script field doesn't see local vars of the script --- .../groovy/annotator/GroovyAnnotator.java | 10 ++----- .../psi/impl/statements/GrVariableImpl.java | 12 +++++++++ .../groovy/lang/resolve/ResolveUtil.java | 11 ++++++++ .../lang/resolve/ResolveMethodTest.groovy | 13 +++++++++ .../lang/resolve/ResolvePropertyTest.groovy | 27 +++++++++++++++++++ 5 files changed, 65 insertions(+), 8 deletions(-) diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/GroovyAnnotator.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/GroovyAnnotator.java index 4bef6e704089..5ae9c3c6b8ae 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/GroovyAnnotator.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/GroovyAnnotator.java @@ -110,7 +110,6 @@ import org.jetbrains.plugins.groovy.lang.psi.impl.signatures.GrClosureSignatureU import org.jetbrains.plugins.groovy.lang.psi.impl.synthetic.GrLightParameter; import org.jetbrains.plugins.groovy.lang.psi.impl.synthetic.GroovyScriptClass; import org.jetbrains.plugins.groovy.lang.psi.util.GrStringUtil; -import org.jetbrains.plugins.groovy.lang.psi.util.GroovyCommonClassNames; import org.jetbrains.plugins.groovy.lang.psi.util.GroovyPropertyUtils; import org.jetbrains.plugins.groovy.lang.psi.util.PsiUtil; import org.jetbrains.plugins.groovy.lang.resolve.ResolveUtil; @@ -167,7 +166,7 @@ public class GroovyAnnotator extends GroovyElementVisitor implements Annotator { annotation.setTextAttributes(DefaultHighlighter.METHOD_DECLARATION); } } - else if (parent instanceof PsiField || parent instanceof GrVariable && isScriptField((GrVariable)parent)) { + else if (parent instanceof PsiField || parent instanceof GrVariable && ResolveUtil.isScriptField((GrVariable)parent)) { final boolean isStatic = ((PsiVariable)parent).hasModifierProperty(PsiModifier.STATIC); final Annotation annotation = holder.createInfoAnnotation(element, null); annotation.setTextAttributes(isStatic ? DefaultHighlighter.STATIC_FIELD : DefaultHighlighter.INSTANCE_FIELD); @@ -184,15 +183,10 @@ public class GroovyAnnotator extends GroovyElementVisitor implements Annotator { } } - private static boolean isScriptField(GrVariable var) { - PsiClass context = PsiUtil.getContextClass(var); - return context instanceof GroovyScriptClass && var.getModifierList().findAnnotation(GroovyCommonClassNames.GROOVY_TRANSFORM_FIELD) != null; - } - private static void highlightResolved(AnnotationHolder holder, GrReferenceElement refElement, PsiElement resolved) { final PsiElement refNameElement = getElementToHighlight(refElement); - if (resolved instanceof PsiField || resolved instanceof GrVariable && isScriptField((GrVariable)resolved)) { + if (resolved instanceof PsiField || resolved instanceof GrVariable && ResolveUtil.isScriptField((GrVariable)resolved)) { boolean isStatic = ((PsiVariable)resolved).hasModifierProperty(PsiModifier.STATIC); Annotation annotation = holder.createInfoAnnotation(refNameElement, null); annotation.setTextAttributes(isStatic ? DefaultHighlighter.STATIC_FIELD : DefaultHighlighter.INSTANCE_FIELD); diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/GrVariableImpl.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/GrVariableImpl.java index ce2527f4bd02..a0e492d7e125 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/GrVariableImpl.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/GrVariableImpl.java @@ -17,10 +17,12 @@ package org.jetbrains.plugins.groovy.lang.psi.impl.statements; import com.intellij.lang.ASTNode; +import com.intellij.psi.PsiElement; import com.intellij.psi.stubs.StubElement; import org.jetbrains.annotations.NotNull; import org.jetbrains.plugins.groovy.lang.psi.GroovyElementVisitor; import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrVariable; +import org.jetbrains.plugins.groovy.lang.resolve.ResolveUtil; /** * @author Dmitry.Krasilschikov @@ -39,4 +41,14 @@ public class GrVariableImpl extends GrVariableBaseImpl implements G public String toString() { return "Variable"; } + + @Override + public PsiElement getContext() { + if (ResolveUtil.isScriptField(this)) { + return getContainingFile(); + } + else { + return super.getContext(); + } + } } diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/resolve/ResolveUtil.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/resolve/ResolveUtil.java index 97df07eb5752..f7d20e620d80 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/resolve/ResolveUtil.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/resolve/ResolveUtil.java @@ -37,6 +37,7 @@ import org.jetbrains.plugins.groovy.lang.psi.GroovyFileBase; import org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElement; import org.jetbrains.plugins.groovy.lang.psi.api.GroovyResolveResult; import org.jetbrains.plugins.groovy.lang.psi.api.auxiliary.GrListOrMap; +import org.jetbrains.plugins.groovy.lang.psi.api.auxiliary.modifiers.GrModifierList; import org.jetbrains.plugins.groovy.lang.psi.api.signatures.GrSignature; import org.jetbrains.plugins.groovy.lang.psi.api.statements.*; import org.jetbrains.plugins.groovy.lang.psi.api.statements.arguments.GrArgumentList; @@ -56,6 +57,7 @@ import org.jetbrains.plugins.groovy.lang.psi.impl.GrClosureType; import org.jetbrains.plugins.groovy.lang.psi.impl.GroovyResolveResultImpl; import org.jetbrains.plugins.groovy.lang.psi.impl.signatures.GrClosureSignatureUtil; import org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions.TypesUtil; +import org.jetbrains.plugins.groovy.lang.psi.impl.synthetic.GroovyScriptClass; import org.jetbrains.plugins.groovy.lang.psi.util.GdkMethodUtil; import org.jetbrains.plugins.groovy.lang.psi.util.GroovyCommonClassNames; import org.jetbrains.plugins.groovy.lang.psi.util.GroovyPropertyUtils; @@ -64,6 +66,7 @@ import org.jetbrains.plugins.groovy.lang.resolve.processors.*; import java.util.*; import java.util.concurrent.ConcurrentHashMap; +import static org.jetbrains.plugins.groovy.lang.psi.util.PsiUtil.getContextClass; import static org.jetbrains.plugins.groovy.lang.psi.util.PsiUtil.getSmartReturnType; /** @@ -697,4 +700,12 @@ public class ResolveUtil { if (aClass == null) return false; return qName.equals(aClass.getQualifiedName()); } + + public static boolean isScriptField(GrVariable var) { + PsiClass context = getContextClass(var.getParent()); + final GrModifierList modifierList = var.getModifierList(); + return context instanceof GroovyScriptClass && + modifierList != null && + modifierList.findAnnotation(GroovyCommonClassNames.GROOVY_TRANSFORM_FIELD) != null; + } } diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/ResolveMethodTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/ResolveMethodTest.groovy index cc9229809b73..f19b82d345a3 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/ResolveMethodTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/ResolveMethodTest.groovy @@ -1070,4 +1070,17 @@ extensionClasses=pack.StringExt assertNotNull(ref.resolve()) } + + void testInitializerOfScriptField() { + addGroovyTransformField() + def ref = configureByText('''\ +import groovy.transform.Field + +def xx(){5} + +@Field +def aa = 5 + xx() +''') + assertInstanceOf(ref.resolve(), GrMethod) + } } diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/ResolvePropertyTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/ResolvePropertyTest.groovy index bede79cd1865..d5b7ee1086e4 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/ResolvePropertyTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/ResolvePropertyTest.groovy @@ -824,6 +824,7 @@ def foo() { } void testScriptFieldNotAvailableInClass() { + addGroovyTransformField() def ref = configureByText('''\ import groovy.transform.Field @@ -837,4 +838,30 @@ class X { }''') assertNull(ref.resolve()) } + + void testInitializerOfScriptField() { + addGroovyTransformField() + def ref = configureByText('''\ +import groovy.transform.Field + +def xx = 5 +@Field +def aa = 5 + xx +''') + assertNull(ref.resolve()) + } + + void testInitializerOfScriptField2() { + addGroovyTransformField() + def ref = configureByText('''\ +import groovy.transform.Field + +@Field +def xx = 5 + +@Field +def aa = 5 + xx +''') + assertInstanceOf(ref.resolve(), GrVariable) + } } From eb8492c27f5c67227c6f2818ba5a875738b805f5 Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 27 Jun 2012 12:28:40 +0200 Subject: [PATCH 07/14] logging in groovy compiler tests --- .../testFramework/TestLoggerFactory.java | 6 ++++- .../jps/incremental/groovy/GroovyBuilder.java | 6 +++++ .../groovy/compiler/GroovyCompilerTest.groovy | 27 ++++++++++++++++--- 3 files changed, 34 insertions(+), 5 deletions(-) diff --git a/platform/testFramework/src/com/intellij/testFramework/TestLoggerFactory.java b/platform/testFramework/src/com/intellij/testFramework/TestLoggerFactory.java index 971d52ca8039..7230e1b67f53 100644 --- a/platform/testFramework/src/com/intellij/testFramework/TestLoggerFactory.java +++ b/platform/testFramework/src/com/intellij/testFramework/TestLoggerFactory.java @@ -62,7 +62,7 @@ public class TestLoggerFactory implements Logger.Factory { return; } - final String logDir = PathManager.getSystemPath() + "/" + LOG_DIR; + final String logDir = getTestLogDir(); String text = FileUtil.loadFile(logXmlFile); text = StringUtil.replace(text, SYSTEM_MACRO, StringUtil.replace(PathManager.getSystemPath(), "\\", "\\\\")); text = StringUtil.replace(text, APPLICATION_MACRO, StringUtil.replace(PathManager.getHomePath(), "\\", "\\\\")); @@ -90,4 +90,8 @@ public class TestLoggerFactory implements Logger.Factory { e.printStackTrace(); } } + + public static String getTestLogDir() { + return PathManager.getSystemPath() + "/" + LOG_DIR; + } } \ No newline at end of file diff --git a/plugins/groovy/rt/src/org/jetbrains/jps/incremental/groovy/GroovyBuilder.java b/plugins/groovy/rt/src/org/jetbrains/jps/incremental/groovy/GroovyBuilder.java index 10c1efcbf01b..093e7182181f 100644 --- a/plugins/groovy/rt/src/org/jetbrains/jps/incremental/groovy/GroovyBuilder.java +++ b/plugins/groovy/rt/src/org/jetbrains/jps/incremental/groovy/GroovyBuilder.java @@ -1,6 +1,7 @@ package org.jetbrains.jps.incremental.groovy; +import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.Key; import com.intellij.openapi.util.io.FileUtil; import com.intellij.util.ArrayUtil; @@ -29,6 +30,7 @@ import java.util.*; * Date: 10/25/11 */ public class GroovyBuilder extends ModuleLevelBuilder { + private static final Logger LOG = Logger.getInstance("#org.jetbrains.jps.incremental.groovy.GroovyBuilder"); public static final String BUILDER_NAME = "groovy"; private static final Key CHUNK_REBUILD_ORDERED = Key.create("CHUNK_REBUILD_ORDERED"); private final boolean myForStubs; @@ -47,6 +49,7 @@ public class GroovyBuilder extends ModuleLevelBuilder { public ModuleLevelBuilder.ExitCode build(final CompileContext context, ModuleChunk chunk) throws ProjectBuildException { try { final List toCompile = collectChangedFiles(context, chunk); + LOG.info((myForStubs ? "stubs" : "groovyc") + ", toCompile=" + toCompile); if (toCompile.isEmpty()) { return ExitCode.NOTHING_DONE; } @@ -92,6 +95,7 @@ public class GroovyBuilder extends ModuleLevelBuilder { CHUNK_REBUILD_ORDERED.set(context, null); } else { CHUNK_REBUILD_ORDERED.set(context, Boolean.TRUE); + LOG.info("Order chunk rebuild"); return ExitCode.CHUNK_REBUILD_REQUIRED; } } @@ -104,12 +108,14 @@ public class GroovyBuilder extends ModuleLevelBuilder { } for (CompilerMessage message : handler.getCompilerMessages()) { + LOG.info(message.toString()); context.processMessage(message); } List compiled = new ArrayList(); for (GroovycOSProcessHandler.OutputItem item : handler.getSuccessfullyCompiled()) { + LOG.info("Compiled " + item); compiled.add(ensureCorrectOutput(context, chunk, item, generationOutputs, compilerOutput)); } diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/compiler/GroovyCompilerTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/compiler/GroovyCompilerTest.groovy index 03d25ca15a1c..8ae3068a1acd 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/compiler/GroovyCompilerTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/compiler/GroovyCompilerTest.groovy @@ -23,12 +23,13 @@ import com.intellij.compiler.CompilerConfigurationImpl import com.intellij.openapi.compiler.options.ExcludeEntryDescription import com.intellij.openapi.compiler.options.ExcludedEntriesConfiguration import com.intellij.openapi.module.Module +import com.intellij.openapi.roots.ModuleRootModificationUtil import com.intellij.openapi.util.io.FileUtil import com.intellij.openapi.vfs.VirtualFile import com.intellij.psi.PsiFile - +import com.intellij.testFramework.TestLoggerFactory import junit.framework.AssertionFailedError -import com.intellij.openapi.roots.ModuleRootModificationUtil +import com.intellij.openapi.application.PathManager /** * @author peter @@ -211,6 +212,26 @@ public abstract class GroovyCompilerTest extends GroovyCompilerTestCase { assertOutput("Bar", "239"); } + @Override + void runBare() { + try { + super.runBare() + } + catch (e) { + println "Idea Log:" + println new File(TestLoggerFactory.testLogDir, "idea.log").text + + def makeLog = new File(PathManager.systemPath, "compile-server/server.log") + if (makeLog.exists()) { + println "Server Log:" + println makeLog.text + } + System.out.flush() + + throw e + } + } + public void testMakeInTests() throws Throwable { setupTestSources(); myFixture.addFileToProject("tests/Super.groovy", "class Super {}"); @@ -590,11 +611,9 @@ class Main { assert !findClassFile('FooX', dep) } - println '1' println make().join('\n') checkClassFiles() - println '2' println make().join('\n') checkClassFiles() From f0685b1f70f1920da1c4618a80b675cc4c6bdece Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Wed, 27 Jun 2012 13:19:41 +0200 Subject: [PATCH 08/14] show compilation duration in status message --- .../intellij/compiler/impl/CompileDriver.java | 45 +++++++++++++------ 1 file changed, 31 insertions(+), 14 deletions(-) diff --git a/java/compiler/impl/src/com/intellij/compiler/impl/CompileDriver.java b/java/compiler/impl/src/com/intellij/compiler/impl/CompileDriver.java index 8363e6278bf1..5d13be23f351 100644 --- a/java/compiler/impl/src/com/intellij/compiler/impl/CompileDriver.java +++ b/java/compiler/impl/src/com/intellij/compiler/impl/CompileDriver.java @@ -81,7 +81,10 @@ import com.intellij.packaging.impl.compiler.ArtifactCompileScope; import com.intellij.packaging.impl.compiler.ArtifactCompilerUtil; import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.PsiDocumentManager; -import com.intellij.util.*; +import com.intellij.util.Chunk; +import com.intellij.util.Function; +import com.intellij.util.StringBuilderSpinAllocator; +import com.intellij.util.ThrowableRunnable; import com.intellij.util.concurrency.Semaphore; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.HashMap; @@ -628,7 +631,6 @@ public class CompileDriver { } - public static final Key COMPILATION_START_TIMESTAMP = Key.create("COMPILATION_START_TIMESTAMP"); public static final Key COMPILE_SERVER_BUILD_STATUS = Key.create("COMPILE_SERVER_BUILD_STATUS"); private void startup(final CompileScope scope, @@ -658,7 +660,6 @@ public class CompileDriver { final DependencyCache dependencyCache = useExtProcessBuild ? null: createDependencyCache(); final CompileContextImpl compileContext = new CompileContextImpl(myProject, compileTask, scope, dependencyCache, !isRebuild && !forceCompile, isRebuild); - compileContext.putUserData(COMPILATION_START_TIMESTAMP, LocalTimeCounter.currentTime()); if (!useExtProcessBuild) { for (Map.Entry, Pair> entry : myGenerationCompilerModuleToOutputDirMap.entrySet()) { @@ -889,12 +890,12 @@ public class CompileDriver { errorCount = compileContext.getMessageCount(CompilerMessageCategory.ERROR); warningCount = compileContext.getMessageCount(CompilerMessageCategory.WARNING); if (!myProject.isDisposed()) { - final String statusMessage = createStatusMessage(_status, warningCount, errorCount); + final String statusMessage = createStatusMessage(_status, warningCount, errorCount, duration); final MessageType messageType = errorCount > 0 ? MessageType.ERROR : warningCount > 0 ? MessageType.WARNING : MessageType.INFO; if (duration > ONE_MINUTE_MS) { ToolWindowManager.getInstance(myProject).notifyByBalloon(ToolWindowId.MESSAGES_WINDOW, messageType, statusMessage); } - CompilerManager.NOTIFICATION_GROUP.createNotification(_status == ExitStatus.UP_TO_DATE ? "Compilation: all files are up to date" : statusMessage, messageType).notify(myProject); + CompilerManager.NOTIFICATION_GROUP.createNotification(statusMessage, messageType).notify(myProject); if (_status != ExitStatus.UP_TO_DATE && compileContext.getMessageCount(null) > 0) { compileContext.addMessage(CompilerMessageCategory.INFORMATION, statusMessage, null, -1, -1); } @@ -932,19 +933,35 @@ public class CompileDriver { } } - private static String createStatusMessage(final ExitStatus status, final int warningCount, final int errorCount) { + private static String createStatusMessage(final ExitStatus status, final int warningCount, final int errorCount, long duration) { + String message; if (status == ExitStatus.CANCELLED) { - return CompilerBundle.message("status.compilation.aborted"); + message = CompilerBundle.message("status.compilation.aborted"); } - if (status == ExitStatus.UP_TO_DATE) { - return CompilerBundle.message("status.all.up.to.date"); + else if (status == ExitStatus.UP_TO_DATE) { + message = CompilerBundle.message("status.all.up.to.date"); } - if (status == ExitStatus.SUCCESS) { - return warningCount > 0 - ? CompilerBundle.message("status.compilation.completed.successfully.with.warnings", warningCount) - : CompilerBundle.message("status.compilation.completed.successfully"); + else { + if (status == ExitStatus.SUCCESS) { + message = warningCount > 0 + ? CompilerBundle.message("status.compilation.completed.successfully.with.warnings", warningCount) + : CompilerBundle.message("status.compilation.completed.successfully"); + } + else { + message = CompilerBundle.message("status.compilation.completed.successfully.with.warnings.and.errors", errorCount, warningCount); + } + message = message + " in " + formatDuration(duration); } - return CompilerBundle.message("status.compilation.completed.successfully.with.warnings.and.errors", errorCount, warningCount); + return message; + } + + public static String formatDuration(long duration) { + final long minutes = duration / 60000; + final long seconds = (duration % 60000) / 1000; + if (minutes > 0L) { + return minutes + " min " + seconds + " sec"; + } + return seconds + " sec"; } private ExitStatus doCompile(final CompileContextEx context, boolean isRebuild, final boolean forceCompile, final boolean onlyCheckStatus) { From e177aa79f959571a6413079ca33ac94fe94f5663 Mon Sep 17 00:00:00 2001 From: Dennis Ushakov Date: Wed, 27 Jun 2012 15:43:10 +0400 Subject: [PATCH 09/14] bring back old name to make plugins happy --- .../lang/regexp/psi/impl/RegExpElementImpl.java | 4 ++-- .../daemon/impl/analysis/HighlightVisitorImpl.java | 4 ++-- .../psi/formatter/java/AbstractJavaBlock.java | 4 ++-- .../usages/impl/rules/ClassGroupingRule.java | 4 ++-- .../usages/impl/rules/MethodGroupingRule.java | 4 ++-- .../daemon/LightDaemonAnalyzerTestCase.java | 4 ++-- .../daemon/quickFix/LightQuickFixTestCase.java | 4 ++-- .../intellij/codeInsight/AutoPopupController.java | 4 ++-- .../codeInsight/actions/BaseCodeInsightAction.java | 4 ++-- .../completion/CodeCompletionHandlerBase.java | 14 +++++++------- .../completion/impl/CompletionServiceImpl.java | 4 ++-- .../codeInsight/daemon/impl/CodeFoldingPass.java | 4 ++-- .../daemon/impl/GeneralHighlightingPass.java | 10 +++++----- .../daemon/impl/IdentifierHighlighterPass.java | 4 ++-- .../codeInsight/daemon/impl/LineMarkersPass.java | 4 ++-- .../daemon/impl/LocalInspectionsPass.java | 4 ++-- .../daemon/impl/quickfix/QuickFixAction.java | 6 +++--- .../documentation/DockablePopupManager.java | 5 ++--- .../editorActions/CompletionAutoPopupHandler.java | 8 ++++---- .../editorActions/SelectWordHandler.java | 4 ++-- .../codeInsight/editorActions/TypedHandler.java | 6 +++--- .../codeInsight/folding/impl/FoldingUpdate.java | 6 +++--- .../impl/OffsetsElementSignatureProvider.java | 4 ++-- .../highlighting/BraceHighlightingHandler.java | 6 +++--- .../highlighting/HighlightManagerImpl.java | 4 ++-- .../intention/impl/IntentionListStep.java | 6 +++--- .../intention/impl/QuickEditAction.java | 4 ++-- .../intention/impl/QuickEditHandler.java | 4 ++-- .../impl/ShowIntentionActionsHandler.java | 8 ++++---- .../intellij/codeInsight/lookup/LookupManager.java | 4 ++-- .../codeInsight/navigation/CtrlMouseHandler.java | 4 ++-- .../template/CustomTemplateCallback.java | 8 ++++---- .../codeInsight/template/TemplateBuilderImpl.java | 4 ++-- .../codeInspection/ex/ProblemDescriptorImpl.java | 4 ++-- .../findUsages/PsiElement2UsageTargetAdapter.java | 4 ++-- .../com/intellij/ide/todo/nodes/TodoFileNode.java | 4 ++-- .../com/intellij/injected/editor/EditorWindow.java | 4 ++-- .../intellij/internal/psiView/PsiViewerDialog.java | 12 ++++++------ .../internal/psiView/ViewerTreeStructure.java | 4 ++-- .../impl/PsiAwareFileEditorManagerImpl.java | 4 ++-- .../impl/text/TextEditorPsiDataProvider.java | 4 ++-- .../psi/formatter/FormattingDocumentModelImpl.java | 4 ++-- .../psi/formatter/PsiBasedFormattingModel.java | 4 ++-- .../common/InjectedLanguageBlockBuilder.java | 4 ++-- .../smartPointers/InjectedSelfElementInfo.java | 6 +++--- .../smartPointers/SmartPointerManagerImpl.java | 8 ++++---- .../impl/source/PostprocessReformattingAspect.java | 4 ++-- .../impl/source/codeStyle/CodeFormatterFacade.java | 6 +++--- .../source/codeStyle/CodeStyleManagerImpl.java | 6 +++--- .../source/codeStyle/CodeStyleManagerRunnable.java | 6 +++--- .../reference/impl/providers/FileReferenceSet.java | 4 ++-- .../tree/injected/InjectedFileViewProvider.java | 4 ++-- .../tree/injected/InjectedLanguageManagerImpl.java | 10 +++++----- ...geFacadeImpl.java => InjectedLanguageUtil.java} | 2 +- .../tree/injected/MultiHostRegistrarImpl.java | 6 +++--- .../refactoring/move/FileReferenceContextUtil.java | 6 +++--- .../rename/PsiElementRenameHandler.java | 6 +++--- .../rename/inplace/InplaceRefactoring.java | 12 ++++++------ .../rename/inplace/MemberInplaceRenameHandler.java | 4 ++-- .../rename/inplace/MemberInplaceRenamer.java | 6 +++--- .../rename/inplace/MyLookupExpression.java | 4 ++-- .../rename/inplace/VariableInplaceRenamer.java | 6 +++--- .../src/META-INF/LangExtensions.xml | 2 +- .../LightPlatformCodeInsightTestCase.java | 8 ++++---- .../fixtures/impl/CodeInsightTestFixtureImpl.java | 6 ++---- .../inject/EditInjectionSettingsAction.java | 6 +++--- .../intelliLang/inject/InjectLanguageAction.java | 4 ++-- .../intelliLang/inject/UnInjectLanguageAction.java | 8 ++++---- .../comment/CommentOnLineWithSourcePredicate.java | 4 ++-- .../org/jetbrains/android/AndroidRenameTest.java | 4 ++-- .../groovy/completion/InjectedGroovyTest.groovy | 8 ++++---- .../i18n/SuppressByCommentOutAction.java | 4 ++-- .../intellij/spellchecker/quickfixes/RenameTo.java | 4 ++-- .../spellchecker/tokenizer/TokenizerBase.java | 4 ++-- .../spellchecker/tokenizer/XmlTextTokenizer.java | 4 ++-- .../lang/xpath/psi/impl/XPathElementImpl.java | 4 ++-- .../org/intellij/lang/xpath/xslt/XsltSupport.java | 4 ++-- .../lang/xpath/xslt/util/XsltCodeInsightUtil.java | 6 +++--- .../xpath/xslt/validation/XsltXmlAnnotator.java | 4 ++-- .../lang/xpath/xslt/Xslt2RefactoringTest.java | 6 +++--- .../xml/impl/GenericValueReferenceProvider.java | 6 +++--- .../util/xml/AbstractDomDeclarationSearcher.java | 6 +++--- .../editorActions/XmlAutoPopupHandler.java | 4 ++-- .../editorActions/moveUpDown/XmlMover.java | 6 +++--- .../intellij/psi/impl/source/xml/XmlTextImpl.java | 6 +++--- xml/impl/src/com/intellij/xml/util/HtmlUtil.java | 6 +++--- 86 files changed, 225 insertions(+), 228 deletions(-) rename platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/{InjectedLanguageFacadeImpl.java => InjectedLanguageUtil.java} (99%) diff --git a/RegExpSupport/src/org/intellij/lang/regexp/psi/impl/RegExpElementImpl.java b/RegExpSupport/src/org/intellij/lang/regexp/psi/impl/RegExpElementImpl.java index dbc64d0382de..f0befa3c0287 100644 --- a/RegExpSupport/src/org/intellij/lang/regexp/psi/impl/RegExpElementImpl.java +++ b/RegExpSupport/src/org/intellij/lang/regexp/psi/impl/RegExpElementImpl.java @@ -23,7 +23,7 @@ import com.intellij.lang.ParserDefinition; import com.intellij.lang.injection.InjectedLanguageManager; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiElementVisitor; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.tree.IElementType; import com.intellij.util.IncorrectOperationException; import org.intellij.lang.regexp.RegExpLanguage; @@ -76,7 +76,7 @@ public abstract class RegExpElementImpl extends ASTWrapperPsiElement implements } public final String getUnescapedText() { - if (InjectedLanguageFacadeImpl.isInInjectedLanguagePrefixSuffix(this)) { + if (InjectedLanguageUtil.isInInjectedLanguagePrefixSuffix(this)) { // do not attempt to decode text if PsiElement is part of prefix/suffix return getText(); } diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java index 4515b75d36a6..00021004bb24 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java @@ -34,7 +34,7 @@ import com.intellij.psi.*; import com.intellij.psi.controlFlow.ControlFlowUtil; import com.intellij.psi.impl.source.javadoc.PsiDocMethodOrFieldRef; import com.intellij.psi.impl.source.jsp.jspJava.JspClass; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.javadoc.PsiDocComment; import com.intellij.psi.javadoc.PsiDocTagValue; import com.intellij.psi.util.MethodSignatureBackedByPsiMethod; @@ -106,7 +106,7 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh } private void registerReferencesFromInjectedFragments(final PsiElement element) { - InjectedLanguageFacadeImpl.enumerate(element, myFile, false, new PsiLanguageInjectionHost.InjectedPsiVisitor() { + InjectedLanguageUtil.enumerate(element, myFile, false, new PsiLanguageInjectionHost.InjectedPsiVisitor() { @Override public void visit(@NotNull final PsiFile injectedPsi, @NotNull final List places) { injectedPsi.accept(REGISTER_REFERENCES_VISITOR); diff --git a/java/java-impl/src/com/intellij/psi/formatter/java/AbstractJavaBlock.java b/java/java-impl/src/com/intellij/psi/formatter/java/AbstractJavaBlock.java index dd93897539f0..232247dd5277 100644 --- a/java/java-impl/src/com/intellij/psi/formatter/java/AbstractJavaBlock.java +++ b/java/java-impl/src/com/intellij/psi/formatter/java/AbstractJavaBlock.java @@ -34,7 +34,7 @@ import com.intellij.psi.formatter.java.wrap.ReservedWrapsProvider; import com.intellij.psi.impl.source.SourceTreeToPsiMap; import com.intellij.psi.impl.source.codeStyle.ShiftIndentInsideHelper; import com.intellij.psi.impl.source.tree.*; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.impl.source.tree.java.ClassElement; import com.intellij.psi.jsp.JspElementType; import com.intellij.psi.tree.IElementType; @@ -172,7 +172,7 @@ public abstract class AbstractJavaBlock extends AbstractBlock implements JavaBlo if (isStatement(child, child.getTreeParent())) { return new CodeBlockBlock(child, wrap, alignment, actualIndent, settings); } - if (child instanceof PsiComment && child instanceof PsiLanguageInjectionHost && InjectedLanguageFacadeImpl + if (child instanceof PsiComment && child instanceof PsiLanguageInjectionHost && InjectedLanguageUtil .hasInjections((PsiLanguageInjectionHost)child)) { return new CommentWithInjectionBlock(child, wrap, alignment, indent, settings); } diff --git a/java/java-impl/src/com/intellij/usages/impl/rules/ClassGroupingRule.java b/java/java-impl/src/com/intellij/usages/impl/rules/ClassGroupingRule.java index 23c07d65a139..8b40b441006b 100644 --- a/java/java-impl/src/com/intellij/usages/impl/rules/ClassGroupingRule.java +++ b/java/java-impl/src/com/intellij/usages/impl/rules/ClassGroupingRule.java @@ -25,7 +25,7 @@ import com.intellij.openapi.util.Iconable; import com.intellij.openapi.vcs.FileStatus; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.jsp.JspFile; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.usageView.UsageInfo; @@ -48,7 +48,7 @@ public class ClassGroupingRule implements UsageGroupingRule { } final PsiElement psiElement = ((PsiElementUsage)usage).getElement(); final PsiFile containingFile = psiElement.getContainingFile(); - PsiFile topLevelFile = InjectedLanguageFacadeImpl.getTopLevelFile(containingFile); + PsiFile topLevelFile = InjectedLanguageUtil.getTopLevelFile(containingFile); if (!(topLevelFile instanceof PsiJavaFile) || topLevelFile instanceof JspFile) { return null; diff --git a/java/java-impl/src/com/intellij/usages/impl/rules/MethodGroupingRule.java b/java/java-impl/src/com/intellij/usages/impl/rules/MethodGroupingRule.java index c82180d92721..ec3e39f92939 100644 --- a/java/java-impl/src/com/intellij/usages/impl/rules/MethodGroupingRule.java +++ b/java/java-impl/src/com/intellij/usages/impl/rules/MethodGroupingRule.java @@ -28,7 +28,7 @@ import com.intellij.openapi.util.Iconable; import com.intellij.openapi.util.Segment; import com.intellij.openapi.vcs.FileStatus; import com.intellij.psi.*; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.util.PsiFormatUtil; import com.intellij.psi.util.PsiFormatUtilBase; import com.intellij.psi.util.PsiTreeUtil; @@ -51,7 +51,7 @@ public class MethodGroupingRule implements UsageGroupingRule { if (!(usage instanceof PsiElementUsage)) return null; PsiElement psiElement = ((PsiElementUsage)usage).getElement(); PsiFile containingFile = psiElement.getContainingFile(); - PsiFile topLevelFile = InjectedLanguageFacadeImpl.getTopLevelFile(containingFile); + PsiFile topLevelFile = InjectedLanguageUtil.getTopLevelFile(containingFile); if (topLevelFile instanceof PsiJavaFile) { PsiElement containingMethod = topLevelFile == containingFile ? psiElement : InjectedLanguageManager .getInstance(containingFile.getProject()).getInjectionHost(containingFile); diff --git a/java/testFramework/src/com/intellij/codeInsight/daemon/LightDaemonAnalyzerTestCase.java b/java/testFramework/src/com/intellij/codeInsight/daemon/LightDaemonAnalyzerTestCase.java index e085ce9f8687..357134d2a19d 100644 --- a/java/testFramework/src/com/intellij/codeInsight/daemon/LightDaemonAnalyzerTestCase.java +++ b/java/testFramework/src/com/intellij/codeInsight/daemon/LightDaemonAnalyzerTestCase.java @@ -25,7 +25,7 @@ import com.intellij.openapi.editor.Editor; import com.intellij.openapi.vfs.VirtualFileFilter; import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiFile; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.testFramework.ExpectedHighlightingData; import com.intellij.testFramework.FileTreeAccessFilter; import com.intellij.testFramework.HighlightTestInfo; @@ -144,7 +144,7 @@ public abstract class LightDaemonAnalyzerTestCase extends LightCodeInsightTestCa PsiFile file = getFile(); if (editor instanceof EditorWindow) { editor = ((EditorWindow)editor).getDelegate(); - file = InjectedLanguageFacadeImpl.getTopLevelFile(file); + file = InjectedLanguageUtil.getTopLevelFile(file); } return CodeInsightTestFixtureImpl.instantiateAndRun(file, editor, toIgnore, false); diff --git a/java/testFramework/src/com/intellij/codeInsight/daemon/quickFix/LightQuickFixTestCase.java b/java/testFramework/src/com/intellij/codeInsight/daemon/quickFix/LightQuickFixTestCase.java index 86331a0dcfd3..155c3110e9cf 100644 --- a/java/testFramework/src/com/intellij/codeInsight/daemon/quickFix/LightQuickFixTestCase.java +++ b/java/testFramework/src/com/intellij/codeInsight/daemon/quickFix/LightQuickFixTestCase.java @@ -29,7 +29,7 @@ import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.CharsetToolkit; import com.intellij.psi.PsiFile; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.rt.execution.junit.FileComparisonFailure; import com.intellij.testFramework.fixtures.impl.CodeInsightTestFixtureImpl; import com.intellij.util.IncorrectOperationException; @@ -107,7 +107,7 @@ public abstract class LightQuickFixTestCase extends LightDaemonAnalyzerTestCase } public static Pair parseActionHint(final PsiFile file, String contents, @NonNls @RegExp String actionPattern) { - PsiFile hostFile = InjectedLanguageFacadeImpl.getTopLevelFile(file); + PsiFile hostFile = InjectedLanguageUtil.getTopLevelFile(file); final Commenter commenter = LanguageCommenters.INSTANCE.forLanguage(hostFile.getLanguage()); String comment = commenter.getLineCommentPrefix(); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/AutoPopupController.java b/platform/lang-impl/src/com/intellij/codeInsight/AutoPopupController.java index a067f7a45b44..673baa207249 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/AutoPopupController.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/AutoPopupController.java @@ -40,7 +40,7 @@ import com.intellij.openapi.util.Condition; import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.util.Alarm; import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.Nullable; @@ -157,7 +157,7 @@ public class AutoPopupController implements Disposable { if (file == null) return; if (!documentManager.isUncommited(editor.getDocument())) { - file = documentManager.getPsiFile(InjectedLanguageFacadeImpl.getEditorForInjectedLanguageNoCommit(editor, file).getDocument()); + file = documentManager.getPsiFile(InjectedLanguageUtil.getEditorForInjectedLanguageNoCommit(editor, file).getDocument()); if (file == null) return; } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/actions/BaseCodeInsightAction.java b/platform/lang-impl/src/com/intellij/codeInsight/actions/BaseCodeInsightAction.java index d3fc7311dd0e..2a76da8174ba 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/actions/BaseCodeInsightAction.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/actions/BaseCodeInsightAction.java @@ -26,7 +26,7 @@ import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiFile; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -59,7 +59,7 @@ public abstract class BaseCodeInsightAction extends CodeInsightAction { PsiFile psiFile = documentManager.getCachedPsiFile(editor.getDocument()); if (psiFile != null) { if (commit) documentManager.commitAllDocuments(); - injectedEditor = InjectedLanguageFacadeImpl.getEditorForInjectedLanguageNoCommit(editor, psiFile); + injectedEditor = InjectedLanguageUtil.getEditorForInjectedLanguageNoCommit(editor, psiFile); } } return injectedEditor; diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/CodeCompletionHandlerBase.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/CodeCompletionHandlerBase.java index f4ab7e6cd966..fa9bd7867ad6 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/CodeCompletionHandlerBase.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/CodeCompletionHandlerBase.java @@ -60,7 +60,7 @@ import com.intellij.psi.impl.DebugUtil; import com.intellij.psi.impl.PsiFileEx; import com.intellij.psi.impl.PsiModificationTrackerImpl; import com.intellij.psi.impl.source.PostprocessReformattingAspect; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.util.PsiUtilBase; import com.intellij.reference.SoftReference; import com.intellij.util.Consumer; @@ -223,7 +223,7 @@ public class CodeCompletionHandlerBase implements CodeInsightActionHandler { int offset = editor.getCaretModel().getOffset(); int psiOffset = Math.max(0, offset - 1); - PsiElement elementAt = InjectedLanguageFacadeImpl.findInjectedElementNoCommit(psiFile, psiOffset); + PsiElement elementAt = InjectedLanguageUtil.findInjectedElementNoCommit(psiFile, psiOffset); if (elementAt == null) { elementAt = psiFile.findElementAt(psiOffset); } @@ -528,10 +528,10 @@ public class CodeCompletionHandlerBase implements CodeInsightActionHandler { } } }); - final PsiFile hostFile = InjectedLanguageFacadeImpl.getTopLevelFile(fileCopy[0]); + final PsiFile hostFile = InjectedLanguageUtil.getTopLevelFile(fileCopy[0]); final InjectedLanguageManager injectedLanguageManager = InjectedLanguageManager.getInstance(hostFile.getProject()); final int hostStartOffset = injectedLanguageManager.injectedToHost(fileCopy[0], initContext.getStartOffset()); - final Editor hostEditor = InjectedLanguageFacadeImpl.getTopLevelEditor(initContext.getEditor()); + final Editor hostEditor = InjectedLanguageUtil.getTopLevelEditor(initContext.getEditor()); final OffsetMap hostMap = new OffsetMap(hostEditor.getDocument()); final OffsetMap original = initContext.getOffsetMap(); @@ -595,13 +595,13 @@ public class CodeCompletionHandlerBase implements CodeInsightActionHandler { InjectedLanguageManager injectedLanguageManager = InjectedLanguageManager.getInstance(hostFile.getProject()); CompletionContext context; - PsiFile injected = InjectedLanguageFacadeImpl.findInjectedPsiNoCommit(hostFile, hostStartOffset); + PsiFile injected = InjectedLanguageUtil.findInjectedPsiNoCommit(hostFile, hostStartOffset); if (injected != null) { TextRange host = injectedLanguageManager.injectedToHost(injected, injected.getTextRange()); assert hostStartOffset >= host.getStartOffset() : "startOffset before injected"; assert hostStartOffset <= host.getEndOffset() : "startOffset after injected"; - EditorWindow injectedEditor = (EditorWindow)InjectedLanguageFacadeImpl + EditorWindow injectedEditor = (EditorWindow)InjectedLanguageUtil .getEditorForInjectedLanguageNoCommit(hostEditor, hostFile, hostStartOffset); assert injected == injectedEditor.getInjectedFile(); final OffsetMap map = new OffsetMap(injectedEditor.getDocument()); @@ -826,7 +826,7 @@ public class CodeCompletionHandlerBase implements CodeInsightActionHandler { } private static Runnable rememberDocumentState(final Editor _editor) { - final Editor editor = InjectedLanguageFacadeImpl.getTopLevelEditor(_editor); + final Editor editor = InjectedLanguageUtil.getTopLevelEditor(_editor); final String documentText = editor.getDocument().getText(); final int caret = editor.getCaretModel().getOffset(); final int selStart = editor.getSelectionModel().getSelectionStart(); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/impl/CompletionServiceImpl.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/impl/CompletionServiceImpl.java index baff2b619c87..2d8c4eb47a3f 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/impl/CompletionServiceImpl.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/impl/CompletionServiceImpl.java @@ -31,7 +31,7 @@ import com.intellij.psi.PsiFile; import com.intellij.psi.Weigher; import com.intellij.psi.WeighingService; import com.intellij.psi.impl.DebugUtil; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.util.Consumer; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -140,7 +140,7 @@ public class CompletionServiceImpl extends CompletionService{ PsiFile positionFile = myParameters.getPosition().getContainingFile(); LOG.error("prefix should be some actual file string just before caret: " + matcher.getPrefix() + "\n text=" + fragment + - "\ninjected=" + (InjectedLanguageFacadeImpl.getTopLevelFile(positionFile) != positionFile) + + "\ninjected=" + (InjectedLanguageUtil.getTopLevelFile(positionFile) != positionFile) + "\nlang=" + positionFile.getLanguage()); } return new CompletionResultSetImpl(getConsumer(), myTextBeforePosition, matcher, myContributor, myParameters, mySorter, myProcess, this); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/CodeFoldingPass.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/CodeFoldingPass.java index ae9bcb6a03fa..444f8828fb4b 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/CodeFoldingPass.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/CodeFoldingPass.java @@ -25,7 +25,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.project.IndexNotReadyException; import com.intellij.openapi.util.Key; import com.intellij.psi.PsiFile; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import org.jetbrains.annotations.NotNull; class CodeFoldingPass extends TextEditorHighlightingPass implements DumbAware { @@ -72,7 +72,7 @@ class CodeFoldingPass extends TextEditorHighlightingPass implements DumbAware { } } - if (InjectedLanguageFacadeImpl.getTopLevelFile(myFile) == myFile) { + if (InjectedLanguageUtil.getTopLevelFile(myFile) == myFile) { clearFirstTimeFlag(myFile, myEditor, THE_FIRST_TIME); } } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/GeneralHighlightingPass.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/GeneralHighlightingPass.java index 0ca02cd407d6..b5028078cb51 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/GeneralHighlightingPass.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/GeneralHighlightingPass.java @@ -59,7 +59,7 @@ import com.intellij.openapi.vfs.VirtualFile; import com.intellij.problems.Problem; import com.intellij.problems.WolfTheProblemSolver; import com.intellij.psi.*; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.impl.source.tree.injected.Place; import com.intellij.psi.search.PsiTodoSearchHelper; import com.intellij.psi.search.TodoItem; @@ -291,7 +291,7 @@ public class GeneralHighlightingPass extends ProgressableTextEditorHighlightingP @NotNull final List elements2, @NotNull final ProgressIndicator progress, @NotNull final Set outInjected) { - List injected = InjectedLanguageFacadeImpl.getCachedInjectedDocuments(myFile); + List injected = InjectedLanguageUtil.getCachedInjectedDocuments(myFile); Collection hosts = new THashSet(elements1.size() + elements2.size() + injected.size()); //rehighlight all injected PSI regardless the range, @@ -325,7 +325,7 @@ public class GeneralHighlightingPass extends ProgressableTextEditorHighlightingP @Override public boolean process(PsiElement element) { progress.checkCanceled(); - InjectedLanguageFacadeImpl.enumerate(element, myFile, false, visitor); + InjectedLanguageUtil.enumerate(element, myFile, false, visitor); return true; } })) { @@ -347,7 +347,7 @@ public class GeneralHighlightingPass extends ProgressableTextEditorHighlightingP public boolean process(final PsiFile injectedPsi) { DocumentWindow documentWindow = (DocumentWindow)PsiDocumentManager.getInstance(myProject).getCachedDocument(injectedPsi); if (documentWindow == null) return true; - Place places = InjectedLanguageFacadeImpl.getShreds(injectedPsi); + Place places = InjectedLanguageUtil.getShreds(injectedPsi); for (PsiLanguageInjectionHost.Shred place : places) { TextRange textRange = place.getRangeInsideHost().shiftRight(place.getHost().getTextRange().getStartOffset()); if (textRange.isEmpty()) continue; @@ -503,7 +503,7 @@ public class GeneralHighlightingPass extends ProgressableTextEditorHighlightingP } private void highlightInjectedSyntax(final PsiFile injectedPsi, HighlightInfoHolder holder) { - List, TextRange>> tokens = InjectedLanguageFacadeImpl + List, TextRange>> tokens = InjectedLanguageUtil .getHighlightTokens(injectedPsi); if (tokens == null) return; diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/IdentifierHighlighterPass.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/IdentifierHighlighterPass.java index b52c21cf28a6..2012c5c95773 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/IdentifierHighlighterPass.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/IdentifierHighlighterPass.java @@ -37,7 +37,7 @@ import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiReference; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.search.LocalSearchScope; import com.intellij.psi.search.searches.ReferencesSearch; import com.intellij.util.Processor; @@ -100,7 +100,7 @@ public class IdentifierHighlighterPass extends TextEditorHighlightingPass { if (myTarget == null) { if (!PsiDocumentManager.getInstance(myProject).isUncommited(myEditor.getDocument())) { // when document is committed, try to check injected stuff - it's fast - Editor injectedEditor = InjectedLanguageFacadeImpl.getEditorForInjectedLanguageNoCommit(myEditor, myFile, myCaretOffset); + Editor injectedEditor = InjectedLanguageUtil.getEditorForInjectedLanguageNoCommit(myEditor, myFile, myCaretOffset); if (injectedEditor != null) { myTarget = TargetElementUtilBase.getInstance().findTargetElement(injectedEditor, flags, injectedEditor.getCaretModel().getOffset()); } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/LineMarkersPass.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/LineMarkersPass.java index e961ecd989ff..07d4c0672e26 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/LineMarkersPass.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/LineMarkersPass.java @@ -47,7 +47,7 @@ import com.intellij.openapi.project.IndexNotReadyException; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.TextRange; import com.intellij.psi.*; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.util.Function; import com.intellij.util.FunctionUtil; import gnu.trove.THashSet; @@ -211,7 +211,7 @@ public class LineMarkersPass extends ProgressableTextEditorHighlightingPass impl } }; for (int i = 0, size = elements.size(); i < size; ++i) { - InjectedLanguageFacadeImpl.enumerate(elements.get(i), file, false, collectingVisitor); + InjectedLanguageUtil.enumerate(elements.get(i), file, false, collectingVisitor); } for (PsiFile injectedPsi : injectedFiles) { final Project project = injectedPsi.getProject(); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/LocalInspectionsPass.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/LocalInspectionsPass.java index b3f706976e75..93126fa3acda 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/LocalInspectionsPass.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/LocalInspectionsPass.java @@ -53,7 +53,7 @@ import com.intellij.openapi.util.text.StringUtil; import com.intellij.profile.codeInspection.InspectionProjectProfileManager; import com.intellij.profile.codeInspection.SeverityProvider; import com.intellij.psi.*; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.util.ConcurrencyUtil; import com.intellij.util.Function; import com.intellij.util.Processor; @@ -419,7 +419,7 @@ public class LocalInspectionsPass extends ProgressableTextEditorHighlightingPass final boolean inVisibleRange, final boolean checkDumbAwareness, final List wrappers) { final Set injected = new THashSet(); for (PsiElement element : elements) { - InjectedLanguageFacadeImpl.enumerate(element, myFile, false, new PsiLanguageInjectionHost.InjectedPsiVisitor() { + InjectedLanguageUtil.enumerate(element, myFile, false, new PsiLanguageInjectionHost.InjectedPsiVisitor() { @Override public void visit(@NotNull PsiFile injectedPsi, @NotNull List places) { injected.add(injectedPsi); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/QuickFixAction.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/QuickFixAction.java index bad2d1853659..70d351d6092e 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/QuickFixAction.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/QuickFixAction.java @@ -29,7 +29,7 @@ import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.TextRange; import com.intellij.psi.PsiFile; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.util.Processor; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; @@ -145,8 +145,8 @@ public final class QuickFixAction { PsiFile fileToUse; if (info.fromInjection) { if (injectedEditor == null) { - injectedFile = InjectedLanguageFacadeImpl.findInjectedPsiNoCommit(file, offset); - injectedEditor = InjectedLanguageFacadeImpl.getInjectedEditorForInjectedFile(editor, injectedFile); + injectedFile = InjectedLanguageUtil.findInjectedPsiNoCommit(file, offset); + injectedEditor = InjectedLanguageUtil.getInjectedEditorForInjectedFile(editor, injectedFile); } editorToUse = injectedEditor; fileToUse = injectedFile; diff --git a/platform/lang-impl/src/com/intellij/codeInsight/documentation/DockablePopupManager.java b/platform/lang-impl/src/com/intellij/codeInsight/documentation/DockablePopupManager.java index d1ae61a6bcdd..7bbe8596b929 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/documentation/DockablePopupManager.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/documentation/DockablePopupManager.java @@ -24,7 +24,6 @@ import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.AsyncResult; -import com.intellij.openapi.util.Disposer; import com.intellij.openapi.wm.ToolWindow; import com.intellij.openapi.wm.ToolWindowAnchor; import com.intellij.openapi.wm.ToolWindowType; @@ -32,7 +31,7 @@ import com.intellij.openapi.wm.WindowManager; import com.intellij.openapi.wm.ex.ToolWindowManagerEx; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.util.PsiUtilBase; import com.intellij.ui.content.*; import com.intellij.util.ui.update.Activatable; @@ -174,7 +173,7 @@ public abstract class DockablePopupManager { final PsiFile file = PsiUtilBase.getPsiFileInEditor(editor, myProject); - final Editor injectedEditor = InjectedLanguageFacadeImpl.getEditorForInjectedLanguageNoCommit(editor, file); + final Editor injectedEditor = InjectedLanguageUtil.getEditorForInjectedLanguageNoCommit(editor, file); if (injectedEditor != null) { final PsiFile psiFile = PsiUtilBase.getPsiFileInEditor(injectedEditor, myProject); if (psiFile != null) { diff --git a/platform/lang-impl/src/com/intellij/codeInsight/editorActions/CompletionAutoPopupHandler.java b/platform/lang-impl/src/com/intellij/codeInsight/editorActions/CompletionAutoPopupHandler.java index 282890eec51a..d0a8ae4db1c3 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/editorActions/CompletionAutoPopupHandler.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/editorActions/CompletionAutoPopupHandler.java @@ -31,7 +31,7 @@ import com.intellij.openapi.project.IndexNotReadyException; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiFile; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import org.jetbrains.annotations.NotNull; /** @@ -83,16 +83,16 @@ public class CompletionAutoPopupHandler extends TypedHandlerDelegate { if (editor.isDisposed()) return; // retrieve the injected file from scratch since our typing might have destroyed the old one completely - Editor topLevelEditor = InjectedLanguageFacadeImpl.getTopLevelEditor(editor); + Editor topLevelEditor = InjectedLanguageUtil.getTopLevelEditor(editor); PsiFile file = PsiDocumentManager.getInstance(project).getPsiFile(topLevelEditor.getDocument()); if (file == null) return; - PsiFile topLevelFile = InjectedLanguageFacadeImpl.getTopLevelFile(file); + PsiFile topLevelFile = InjectedLanguageUtil.getTopLevelFile(file); if (!PsiDocumentManager.getInstance(project).isCommitted(editor.getDocument())) { LOG.error("Non-committed document"); PsiDocumentManager.getInstance(project).commitAllDocuments(); } - Editor newEditor = InjectedLanguageFacadeImpl.getEditorForInjectedLanguageNoCommit(topLevelEditor, topLevelFile); + Editor newEditor = InjectedLanguageUtil.getEditorForInjectedLanguageNoCommit(topLevelEditor, topLevelFile); try { new CodeCompletionHandlerBase(completionType, false, autopopup, false).invokeCompletion(project, newEditor, time, false); } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/editorActions/SelectWordHandler.java b/platform/lang-impl/src/com/intellij/codeInsight/editorActions/SelectWordHandler.java index 04b49b51046c..7bc43282dcdc 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/editorActions/SelectWordHandler.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/editorActions/SelectWordHandler.java @@ -32,7 +32,7 @@ import com.intellij.openapi.util.Ref; import com.intellij.openapi.util.TextRange; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.templateLanguages.OuterLanguageElement; import com.intellij.util.Processor; import org.jetbrains.annotations.NotNull; @@ -52,7 +52,7 @@ public class SelectWordHandler extends EditorActionHandler { LOG.debug("enter: execute(editor='" + editor + "')"); } if (editor instanceof EditorWindow && editor.getSelectionModel().hasSelection() - && InjectedLanguageFacadeImpl.isSelectionIsAboutToOverflowInjectedFragment((EditorWindow)editor)) { + && InjectedLanguageUtil.isSelectionIsAboutToOverflowInjectedFragment((EditorWindow)editor)) { // selection about to spread beyond injected fragment editor = ((EditorWindow)editor).getDelegate(); } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/editorActions/TypedHandler.java b/platform/lang-impl/src/com/intellij/codeInsight/editorActions/TypedHandler.java index a9f107fd2935..a9261cc8d532 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/editorActions/TypedHandler.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/editorActions/TypedHandler.java @@ -50,7 +50,7 @@ import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.codeStyle.CodeStyleManager; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.tree.IElementType; import com.intellij.psi.tree.TokenSet; import com.intellij.psi.util.PsiUtilBase; @@ -270,10 +270,10 @@ public class TypedHandler extends TypedActionHandlerBase { // even for uncommitted document try to retrieve injected fragment that has been there recently // we are assuming here that when user is (even furiously) typing, injected language would not change // and thus we can use its lexer to insert closing braces etc - for (DocumentWindow documentWindow : InjectedLanguageFacadeImpl.getCachedInjectedDocuments(oldFile)) { + for (DocumentWindow documentWindow : InjectedLanguageUtil.getCachedInjectedDocuments(oldFile)) { if (documentWindow.isValid() && documentWindow.containsRange(offset, offset)) { PsiFile injectedFile = PsiDocumentManager.getInstance(oldFile.getProject()).getPsiFile(documentWindow); - final Editor injectedEditor = InjectedLanguageFacadeImpl.getInjectedEditorForInjectedFile(editor, injectedFile); + final Editor injectedEditor = InjectedLanguageUtil.getInjectedEditorForInjectedFile(editor, injectedFile); // IDEA-52375 fix: last quote sign should be handled by outer language quote handler final CharSequence charsSequence = editor.getDocument().getCharsSequence(); if (injectedEditor.getCaretModel().getOffset() == injectedEditor.getDocument().getTextLength() && diff --git a/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/FoldingUpdate.java b/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/FoldingUpdate.java index e233872ba2d4..51cf80b83161 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/FoldingUpdate.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/FoldingUpdate.java @@ -34,7 +34,7 @@ import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.TextRange; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.util.CachedValueProvider; import com.intellij.psi.util.CachedValuesManager; import com.intellij.psi.util.ParameterizedCachedValue; @@ -151,7 +151,7 @@ public class FoldingUpdate { Object lastTimeStamp = editor.getUserData(LAST_UPDATE_INJECTED_STAMP_KEY); if (lastTimeStamp instanceof Long && ((Long)lastTimeStamp).longValue() == timeStamp) return null; - List injectedDocuments = InjectedLanguageFacadeImpl.getCachedInjectedDocuments(file); + List injectedDocuments = InjectedLanguageUtil.getCachedInjectedDocuments(file); if (injectedDocuments.isEmpty()) return null; final List injectedEditors = new ArrayList(); final List injectedFiles = new ArrayList(); @@ -159,7 +159,7 @@ public class FoldingUpdate { for (DocumentWindow injectedDocument : injectedDocuments) { PsiFile injectedFile = PsiDocumentManager.getInstance(project).getPsiFile(injectedDocument); if (injectedFile == null || !injectedFile.isValid() || !injectedDocument.isValid()) continue; - Editor injectedEditor = InjectedLanguageFacadeImpl.getInjectedEditorForInjectedFile(editor, injectedFile); + Editor injectedEditor = InjectedLanguageUtil.getInjectedEditorForInjectedFile(editor, injectedFile); if (!(injectedEditor instanceof EditorWindow)) continue; injectedEditors.add((EditorWindow)injectedEditor); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/OffsetsElementSignatureProvider.java b/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/OffsetsElementSignatureProvider.java index 35a75cf476b0..f1e78494c8a7 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/OffsetsElementSignatureProvider.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/OffsetsElementSignatureProvider.java @@ -18,7 +18,7 @@ package com.intellij.codeInsight.folding.impl; import com.intellij.openapi.util.TextRange; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -87,7 +87,7 @@ public class OffsetsElementSignatureProvider extends AbstractElementSignaturePro } if (result == null) { - final PsiElement injectedStartElement = InjectedLanguageFacadeImpl.findElementAtNoCommit(file, start); + final PsiElement injectedStartElement = InjectedLanguageUtil.findElementAtNoCommit(file, start); if (processingInfoStorage != null) { processingInfoStorage.append(String.format( "Trying to find injected element starting from the '%s'%s%n", diff --git a/platform/lang-impl/src/com/intellij/codeInsight/highlighting/BraceHighlightingHandler.java b/platform/lang-impl/src/com/intellij/codeInsight/highlighting/BraceHighlightingHandler.java index d58ad07377c2..24e619be216d 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/highlighting/BraceHighlightingHandler.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/highlighting/BraceHighlightingHandler.java @@ -52,7 +52,7 @@ import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.Key; import com.intellij.openapi.util.TextRange; import com.intellij.psi.*; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.tree.IElementType; import com.intellij.psi.util.PsiUtilBase; import com.intellij.util.Alarm; @@ -136,7 +136,7 @@ public class BraceHighlightingHandler { public void run() { try { if (!isReallyDisposed(editor, project)) { - Editor newEditor = InjectedLanguageFacadeImpl.getInjectedEditorForInjectedFile(editor, injected); + Editor newEditor = InjectedLanguageUtil.getInjectedEditorForInjectedFile(editor, injected); BraceHighlightingHandler handler = new BraceHighlightingHandler(project, newEditor, alarm, injected); processor.process(handler); } @@ -161,7 +161,7 @@ public class BraceHighlightingHandler { Document document = editor.getDocument(); // when document is committed, try to highlight braces in injected lang - it's fast if (!PsiDocumentManager.getInstance(project).isUncommited(document)) { - final PsiElement injectedElement = InjectedLanguageFacadeImpl.findInjectedElementNoCommit(psiFile, offset); + final PsiElement injectedElement = InjectedLanguageUtil.findInjectedElementNoCommit(psiFile, offset); if (injectedElement != null /*&& !(injectedElement instanceof PsiWhiteSpace)*/) { final PsiFile injected = injectedElement.getContainingFile(); if (injected != null) { diff --git a/platform/lang-impl/src/com/intellij/codeInsight/highlighting/HighlightManagerImpl.java b/platform/lang-impl/src/com/intellij/codeInsight/highlighting/HighlightManagerImpl.java index c0d1376c94cb..255f2353d97e 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/highlighting/HighlightManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/highlighting/HighlightManagerImpl.java @@ -41,7 +41,7 @@ import com.intellij.openapi.util.UserDataHolderEx; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiReference; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.util.containers.HashMap; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -167,7 +167,7 @@ public class HighlightManagerImpl extends HighlightManager implements ProjectCom PsiFile containingFile = element.getContainingFile(); Project project = element.getProject(); // each reference can reside in its own injected editor - Editor textEditor = InjectedLanguageFacadeImpl.openEditorFor(containingFile, project); + Editor textEditor = InjectedLanguageUtil.openEditorFor(containingFile, project); if (textEditor != null) { addOccurrenceHighlight(textEditor, start, end, attributes, flags, outHighlighters, scrollmarkColor); } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/IntentionListStep.java b/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/IntentionListStep.java index d690edf18225..b5759a2d63a9 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/IntentionListStep.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/IntentionListStep.java @@ -36,7 +36,7 @@ import com.intellij.openapi.ui.popup.*; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.Iconable; import com.intellij.psi.*; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.util.PsiUtilBase; import gnu.trove.THashSet; import gnu.trove.TObjectHashingStrategy; @@ -112,7 +112,7 @@ class IntentionListStep implements ListPopupStep } else { hostElement = myFile.getViewProvider().findElementAt(fileOffset, myFile.getLanguage()); - element = InjectedLanguageFacadeImpl.findElementAtNoCommit(myFile, fileOffset); + element = InjectedLanguageUtil.findElementAtNoCommit(myFile, fileOffset); } PsiFile injectedFile; Editor injectedEditor; @@ -122,7 +122,7 @@ class IntentionListStep implements ListPopupStep } else { injectedFile = element.getContainingFile(); - injectedEditor = InjectedLanguageFacadeImpl.getInjectedEditorForInjectedFile(myEditor, injectedFile); + injectedEditor = InjectedLanguageUtil.getInjectedEditorForInjectedFile(myEditor, injectedFile); } boolean result = true; diff --git a/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/QuickEditAction.java b/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/QuickEditAction.java index a109226d8b82..669995440426 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/QuickEditAction.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/QuickEditAction.java @@ -24,7 +24,7 @@ import com.intellij.openapi.ui.popup.Balloon; import com.intellij.openapi.util.*; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.util.IncorrectOperationException; import com.intellij.util.containers.ContainerUtil; @@ -58,7 +58,7 @@ public class QuickEditAction implements IntentionAction, LowPriorityAction { final PsiLanguageInjectionHost host = PsiTreeUtil.getParentOfType(file.findElementAt(offset), PsiLanguageInjectionHost.class, false); if (host == null) return null; - final List> injections = InjectedLanguageFacadeImpl.getInstance().getInjectedPsiFiles(host); + final List> injections = InjectedLanguageUtil.getInstance().getInjectedPsiFiles(host); if (injections == null || injections.isEmpty()) return null; final int offsetInElement = offset - host.getTextRange().getStartOffset(); final Pair rangePair = ContainerUtil.find(injections, new Condition>() { diff --git a/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/QuickEditHandler.java b/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/QuickEditHandler.java index 814bad1e40dd..1a8b9ba856d2 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/QuickEditHandler.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/QuickEditHandler.java @@ -48,7 +48,7 @@ import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; import com.intellij.psi.impl.source.PostprocessReformattingAspect; import com.intellij.psi.impl.source.resolve.FileContextUtil; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.impl.source.tree.injected.Place; import com.intellij.testFramework.LightVirtualFile; import com.intellij.ui.awt.RelativePoint; @@ -86,7 +86,7 @@ public class QuickEditHandler extends DocumentAdapter implements Disposable { myEditor = editor; myAction = action; myOrigDocument = editor.getDocument(); - final Place shreds = InjectedLanguageFacadeImpl.getShreds(myInjectedFile); + final Place shreds = InjectedLanguageUtil.getShreds(myInjectedFile); final FileType fileType = injectedFile.getFileType(); final Language language = injectedFile.getLanguage(); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/ShowIntentionActionsHandler.java b/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/ShowIntentionActionsHandler.java index 4421b4d39641..b93aeb096594 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/ShowIntentionActionsHandler.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/ShowIntentionActionsHandler.java @@ -40,7 +40,7 @@ import com.intellij.psi.PsiCodeFragment; import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.util.IncorrectOperationException; import com.intellij.util.PairProcessor; import org.jetbrains.annotations.NotNull; @@ -56,7 +56,7 @@ public class ShowIntentionActionsHandler implements CodeInsightActionHandler { PsiDocumentManager.getInstance(project).commitAllDocuments(); if (editor instanceof EditorWindow) { editor = ((EditorWindow)editor).getDelegate(); - file = InjectedLanguageFacadeImpl.getTopLevelFile(file); + file = InjectedLanguageUtil.getTopLevelFile(file); } final LookupEx lookup = LookupManager.getActiveLookup(editor); @@ -122,9 +122,9 @@ public class ShowIntentionActionsHandler implements CodeInsightActionHandler { PsiFile fileToApply = null; int offset = hostEditor.getCaretModel().getOffset(); - PsiFile injectedFile = InjectedLanguageFacadeImpl.findInjectedPsiNoCommit(hostFile, offset); + PsiFile injectedFile = InjectedLanguageUtil.findInjectedPsiNoCommit(hostFile, offset); if (injectedFile != null) { - Editor injectedEditor = InjectedLanguageFacadeImpl.getInjectedEditorForInjectedFile(hostEditor, injectedFile); + Editor injectedEditor = InjectedLanguageUtil.getInjectedEditorForInjectedFile(hostEditor, injectedFile); if (predicate.process(injectedFile, injectedEditor)) { editorToApply = injectedEditor; fileToApply = injectedFile; diff --git a/platform/lang-impl/src/com/intellij/codeInsight/lookup/LookupManager.java b/platform/lang-impl/src/com/intellij/codeInsight/lookup/LookupManager.java index cde7df077e25..a1a95fd65e09 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/lookup/LookupManager.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/lookup/LookupManager.java @@ -19,7 +19,7 @@ package com.intellij.codeInsight.lookup; import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -41,7 +41,7 @@ public abstract class LookupManager { final LookupEx lookup = getInstance(project).getActiveLookup(); if (lookup == null) return null; - return InjectedLanguageFacadeImpl.getTopLevelEditor(lookup.getEditor()) == InjectedLanguageFacadeImpl.getTopLevelEditor(editor) ? lookup : null; + return InjectedLanguageUtil.getTopLevelEditor(lookup.getEditor()) == InjectedLanguageUtil.getTopLevelEditor(editor) ? lookup : null; } @Nullable diff --git a/platform/lang-impl/src/com/intellij/codeInsight/navigation/CtrlMouseHandler.java b/platform/lang-impl/src/com/intellij/codeInsight/navigation/CtrlMouseHandler.java index 6ae8ea014d38..a9010dac1ca5 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/navigation/CtrlMouseHandler.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/navigation/CtrlMouseHandler.java @@ -60,7 +60,7 @@ import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.pom.Navigatable; import com.intellij.psi.*; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.search.searches.DefinitionsSearch; import com.intellij.psi.util.PsiUtilBase; import com.intellij.ui.LightweightHint; @@ -154,7 +154,7 @@ public class CtrlMouseHandler extends AbstractProjectComponent { Point point = new Point(mouseEvent.getPoint()); if (PsiDocumentManager.getInstance(myProject).isCommitted(editor.getDocument())) { // when document is committed, try to check injected stuff - it's fast - editor = InjectedLanguageFacadeImpl + editor = InjectedLanguageUtil .getEditorForInjectedLanguageNoCommit(editor, psiFile, editor.logicalPositionToOffset(editor.xyToLogicalPosition(point))); } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/template/CustomTemplateCallback.java b/platform/lang-impl/src/com/intellij/codeInsight/template/CustomTemplateCallback.java index 925052258b1d..656946038734 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/template/CustomTemplateCallback.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/template/CustomTemplateCallback.java @@ -25,7 +25,7 @@ import com.intellij.openapi.project.Project; import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -55,11 +55,11 @@ public class CustomTemplateCallback { PsiDocumentManager.getInstance(myProject).commitAllDocuments(); int offset = getOffset(wrapping, editor); - PsiElement element = InjectedLanguageFacadeImpl.findInjectedElementNoCommit(file, offset); + PsiElement element = InjectedLanguageUtil.findInjectedElementNoCommit(file, offset); myFile = element != null ? element.getContainingFile() : file; myInInjectedFragment = InjectedLanguageManager.getInstance(myProject).isInjectedFragment(myFile); - myEditor = myInInjectedFragment ? InjectedLanguageFacadeImpl.getEditorForInjectedLanguageNoCommit(editor, file, offset) : editor; + myEditor = myInInjectedFragment ? InjectedLanguageUtil.getEditorForInjectedLanguageNoCommit(editor, file, offset) : editor; fixInitialState(wrapping); } @@ -164,7 +164,7 @@ public class CustomTemplateCallback { public static PsiElement getContext(@NotNull PsiFile file, int offset) { PsiElement element = null; if (!InjectedLanguageManager.getInstance(file.getProject()).isInjectedFragment(file)) { - element = InjectedLanguageFacadeImpl.findInjectedElementNoCommit(file, offset); + element = InjectedLanguageUtil.findInjectedElementNoCommit(file, offset); } if (element == null) { element = file.findElementAt(offset); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/template/TemplateBuilderImpl.java b/platform/lang-impl/src/com/intellij/codeInsight/template/TemplateBuilderImpl.java index 2f2bb9a22488..74caa88a2bb1 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/template/TemplateBuilderImpl.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/template/TemplateBuilderImpl.java @@ -32,7 +32,7 @@ import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiReference; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.util.Function; import org.jetbrains.annotations.NotNull; @@ -60,7 +60,7 @@ public class TemplateBuilderImpl implements TemplateBuilder { private static final Logger LOG = Logger.getInstance("#" + TemplateBuilderImpl.class.getName()); public TemplateBuilderImpl(@NotNull PsiElement element) { - myFile = InjectedLanguageFacadeImpl.getTopLevelFile(element); + myFile = InjectedLanguageUtil.getTopLevelFile(element); myDocument = myFile.getViewProvider().getDocument(); myContainerElement = wrapElement(element); } diff --git a/platform/lang-impl/src/com/intellij/codeInspection/ex/ProblemDescriptorImpl.java b/platform/lang-impl/src/com/intellij/codeInspection/ex/ProblemDescriptorImpl.java index 85d9534bf46d..86798bb39e6e 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/ex/ProblemDescriptorImpl.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/ex/ProblemDescriptorImpl.java @@ -26,7 +26,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.util.TextRange; import com.intellij.pom.Navigatable; import com.intellij.psi.*; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.util.PsiTreeUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -142,7 +142,7 @@ public class ProblemDescriptorImpl extends CommonProblemDescriptorImpl implement if (psiElement == null) return -1; if (!psiElement.isValid()) return -1; LOG.assertTrue(psiElement.isPhysical()); - PsiFile containingFile = InjectedLanguageFacadeImpl.getTopLevelFile(psiElement); + PsiFile containingFile = InjectedLanguageUtil.getTopLevelFile(psiElement); Document document = PsiDocumentManager.getInstance(psiElement.getProject()).getDocument(containingFile); if (document == null) return -1; TextRange textRange = getTextRange(); diff --git a/platform/lang-impl/src/com/intellij/find/findUsages/PsiElement2UsageTargetAdapter.java b/platform/lang-impl/src/com/intellij/find/findUsages/PsiElement2UsageTargetAdapter.java index 146d03a1a1d9..fae0f9ee875a 100644 --- a/platform/lang-impl/src/com/intellij/find/findUsages/PsiElement2UsageTargetAdapter.java +++ b/platform/lang-impl/src/com/intellij/find/findUsages/PsiElement2UsageTargetAdapter.java @@ -29,7 +29,7 @@ import com.intellij.openapi.editor.Editor; import com.intellij.openapi.fileEditor.FileEditor; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.meta.PsiMetaData; import com.intellij.psi.meta.PsiMetaOwner; import com.intellij.psi.meta.PsiPresentableMetaData; @@ -131,7 +131,7 @@ public class PsiElement2UsageTargetAdapter implements PsiElementUsageTarget, Typ Collection refs; // in case of injected file, use host file to highlight all occurrences of the target in each injected file - PsiFile context = InjectedLanguageFacadeImpl.getTopLevelFile(file); + PsiFile context = InjectedLanguageUtil.getTopLevelFile(file); SearchScope searchScope = new LocalSearchScope(context); if (handler != null) { refs = handler.findReferencesToHighlight(target, searchScope); diff --git a/platform/lang-impl/src/com/intellij/ide/todo/nodes/TodoFileNode.java b/platform/lang-impl/src/com/intellij/ide/todo/nodes/TodoFileNode.java index 6a629737c801..1c16566a1fd0 100644 --- a/platform/lang-impl/src/com/intellij/ide/todo/nodes/TodoFileNode.java +++ b/platform/lang-impl/src/com/intellij/ide/todo/nodes/TodoFileNode.java @@ -31,7 +31,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.util.TextRange; import com.intellij.psi.*; import com.intellij.psi.impl.search.TodoItemImpl; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.search.PsiTodoSearchHelper; import com.intellij.psi.search.TodoItem; import com.intellij.ui.HighlightedRegion; @@ -102,7 +102,7 @@ public final class TodoFileNode extends PsiFileNode implements HighlightedRegion @Override public void visitElement(PsiElement element) { if (element instanceof PsiLanguageInjectionHost) { - InjectedLanguageFacadeImpl.enumerate(element, new PsiLanguageInjectionHost.InjectedPsiVisitor() { + InjectedLanguageUtil.enumerate(element, new PsiLanguageInjectionHost.InjectedPsiVisitor() { @Override public void visit(@NotNull PsiFile injectedPsi, @NotNull List places) { if (places.size() == 1) { diff --git a/platform/lang-impl/src/com/intellij/injected/editor/EditorWindow.java b/platform/lang-impl/src/com/intellij/injected/editor/EditorWindow.java index ff69f00bccb2..46341c274783 100644 --- a/platform/lang-impl/src/com/intellij/injected/editor/EditorWindow.java +++ b/platform/lang-impl/src/com/intellij/injected/editor/EditorWindow.java @@ -43,7 +43,7 @@ import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.UserDataHolderBase; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiFile; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.util.containers.WeakList; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -113,7 +113,7 @@ public class EditorWindow extends UserDataHolderBase implements EditorEx { if (!editorWindow.isValid()) { editorWindow.dispose(); - InjectedLanguageFacadeImpl.clearCaches(editorWindow.myInjectedFile, editorWindow.getDocument()); + InjectedLanguageUtil.clearCaches(editorWindow.myInjectedFile, editorWindow.getDocument()); iterator.remove(); } } diff --git a/platform/lang-impl/src/com/intellij/internal/psiView/PsiViewerDialog.java b/platform/lang-impl/src/com/intellij/internal/psiView/PsiViewerDialog.java index 0556784022bc..ee7a882a21a3 100644 --- a/platform/lang-impl/src/com/intellij/internal/psiView/PsiViewerDialog.java +++ b/platform/lang-impl/src/com/intellij/internal/psiView/PsiViewerDialog.java @@ -23,7 +23,7 @@ import com.intellij.formatting.ASTBlock; import com.intellij.formatting.Block; import com.intellij.formatting.FormattingModel; import com.intellij.formatting.FormattingModelBuilder; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.ui.ListCellRendererWrapper; import com.intellij.ide.util.treeView.AbstractTreeStructure; import com.intellij.ide.util.treeView.NodeRenderer; @@ -821,7 +821,7 @@ public class PsiViewerDialog extends DialogWrapper implements DataProvider, Disp } if (currentElem == null) { currentElem = - InjectedLanguageFacadeImpl + InjectedLanguageUtil .findElementAtNoCommit(psiEl.getContainingFile(), rootBlockNode.getBlock().getTextRange().getStartOffset()); } myPsiToBlockMap.put(currentElem, rootBlockNode); @@ -980,7 +980,7 @@ public class PsiViewerDialog extends DialogWrapper implements DataProvider, Disp BlockTreeNode descriptor = (BlockTreeNode)blockElementsSet.iterator().next(); PsiElement rootPsi = ((ViewerTreeStructure)myPsiTreeBuilder.getTreeStructure()).getRootPsiElement(); int blockStart = descriptor.getBlock().getTextRange().getStartOffset(); - PsiElement currentPsiEl = InjectedLanguageFacadeImpl.findElementAtNoCommit(rootPsi.getContainingFile(), blockStart); + PsiElement currentPsiEl = InjectedLanguageUtil.findElementAtNoCommit(rootPsi.getContainingFile(), blockStart); int blockLength = descriptor.getBlock().getTextRange().getLength(); while (currentPsiEl.getParent() != null && currentPsiEl.getTextRange().getStartOffset() == blockStart && @@ -1237,7 +1237,7 @@ public class PsiViewerDialog extends DialogWrapper implements DataProvider, Disp final PsiElement rootElement = ((ViewerTreeStructure)myPsiTreeBuilder.getTreeStructure()).getRootPsiElement(); int baseOffset = rootPsiElement.getTextRange().getStartOffset(); final int offset = myEditor.getCaretModel().getOffset() + baseOffset; - final PsiElement element = InjectedLanguageFacadeImpl.findElementAtNoCommit(rootElement.getContainingFile(), offset); + final PsiElement element = InjectedLanguageUtil.findElementAtNoCommit(rootElement.getContainingFile(), offset); if (element != null && myBlockTreeBuilder != null) { TextRange rangeInHostFile = InjectedLanguageManager.getInstance(myProject).injectedToHost(element, element.getTextRange()); selectBlockNode(findBlockNode(rangeInHostFile, true)); @@ -1258,8 +1258,8 @@ public class PsiViewerDialog extends DialogWrapper implements DataProvider, Disp final int start = selection.getSelectionStart()+baseOffset; final int end = selection.getSelectionEnd()+baseOffset - 1; final PsiElement element = - findCommonParent(InjectedLanguageFacadeImpl.findElementAtNoCommit(rootElement.getContainingFile(), start), - InjectedLanguageFacadeImpl.findElementAtNoCommit(rootElement.getContainingFile(), end)); + findCommonParent(InjectedLanguageUtil.findElementAtNoCommit(rootElement.getContainingFile(), start), + InjectedLanguageUtil.findElementAtNoCommit(rootElement.getContainingFile(), end)); if (element != null && myBlockTreeBuilder != null) { if (myEditor.getContentComponent().hasFocus()) { TextRange rangeInHostFile = InjectedLanguageManager.getInstance(myProject).injectedToHost(element, element.getTextRange()); diff --git a/platform/lang-impl/src/com/intellij/internal/psiView/ViewerTreeStructure.java b/platform/lang-impl/src/com/intellij/internal/psiView/ViewerTreeStructure.java index 3f037ebdece6..48f1e2d4c506 100644 --- a/platform/lang-impl/src/com/intellij/internal/psiView/ViewerTreeStructure.java +++ b/platform/lang-impl/src/com/intellij/internal/psiView/ViewerTreeStructure.java @@ -29,7 +29,7 @@ import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.project.Project; import com.intellij.psi.*; import com.intellij.psi.impl.source.SourceTreeToPsiMap; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.util.PsiUtilCore; import com.intellij.util.ArrayUtil; import org.jetbrains.annotations.NotNull; @@ -99,7 +99,7 @@ public class ViewerTreeStructure extends AbstractTreeStructure { } final PsiElement psi = root.getPsi(); if (psi instanceof PsiLanguageInjectionHost) { - InjectedLanguageFacadeImpl.enumerate(psi, new PsiLanguageInjectionHost.InjectedPsiVisitor() { + InjectedLanguageUtil.enumerate(psi, new PsiLanguageInjectionHost.InjectedPsiVisitor() { @Override public void visit(@NotNull PsiFile injectedPsi, @NotNull List places) { list.add(new Inject(psi, injectedPsi)); diff --git a/platform/lang-impl/src/com/intellij/openapi/fileEditor/impl/PsiAwareFileEditorManagerImpl.java b/platform/lang-impl/src/com/intellij/openapi/fileEditor/impl/PsiAwareFileEditorManagerImpl.java index e35ddf938039..d5761461754b 100644 --- a/platform/lang-impl/src/com/intellij/openapi/fileEditor/impl/PsiAwareFileEditorManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/openapi/fileEditor/impl/PsiAwareFileEditorManagerImpl.java @@ -27,7 +27,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.problems.WolfTheProblemSolver; import com.intellij.psi.*; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.ui.ColorUtil; import com.intellij.ui.docking.DockManager; import org.jetbrains.annotations.NotNull; @@ -99,7 +99,7 @@ public class PsiAwareFileEditorManagerImpl extends FileEditorManagerImpl { return editor; } - return InjectedLanguageFacadeImpl.getEditorForInjectedLanguageNoCommit(editor, psiFile); + return InjectedLanguageUtil.getEditorForInjectedLanguageNoCommit(editor, psiFile); } /** diff --git a/platform/lang-impl/src/com/intellij/openapi/fileEditor/impl/text/TextEditorPsiDataProvider.java b/platform/lang-impl/src/com/intellij/openapi/fileEditor/impl/text/TextEditorPsiDataProvider.java index ef799405eea6..0238e016a128 100644 --- a/platform/lang-impl/src/com/intellij/openapi/fileEditor/impl/text/TextEditorPsiDataProvider.java +++ b/platform/lang-impl/src/com/intellij/openapi/fileEditor/impl/text/TextEditorPsiDataProvider.java @@ -28,7 +28,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.wm.ToolWindowManager; import com.intellij.psi.*; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.util.PsiUtilBase; import org.jetbrains.annotations.Nullable; @@ -48,7 +48,7 @@ public class TextEditorPsiDataProvider implements EditorDataProvider { return e; } else { - return InjectedLanguageFacadeImpl.getEditorForInjectedLanguageNoCommit(e, getPsiFile(e, file)); + return InjectedLanguageUtil.getEditorForInjectedLanguageNoCommit(e, getPsiFile(e, file)); } } if (dataId.equals(injectedId(PSI_ELEMENT.getName()))) { diff --git a/platform/lang-impl/src/com/intellij/psi/formatter/FormattingDocumentModelImpl.java b/platform/lang-impl/src/com/intellij/psi/formatter/FormattingDocumentModelImpl.java index c0ab0725a6c1..c177b80b5dee 100644 --- a/platform/lang-impl/src/com/intellij/psi/formatter/FormattingDocumentModelImpl.java +++ b/platform/lang-impl/src/com/intellij/psi/formatter/FormattingDocumentModelImpl.java @@ -28,7 +28,7 @@ import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.impl.PsiDocumentManagerImpl; import com.intellij.psi.impl.PsiToDocumentSynchronizer; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -128,7 +128,7 @@ public class FormattingDocumentModelImpl implements FormattingDocumentModel { if (strategy.check(myDocument.getCharsSequence(), startOffset, endOffset) >= endOffset) { return true; } - PsiElement injectedElement = myFile != null ? InjectedLanguageFacadeImpl.findElementAtNoCommit(myFile, startOffset) : null; + PsiElement injectedElement = myFile != null ? InjectedLanguageUtil.findElementAtNoCommit(myFile, startOffset) : null; if (injectedElement != null) { Language injectedLanguage = injectedElement.getLanguage(); if (!injectedLanguage.equals(myFile.getLanguage())) { diff --git a/platform/lang-impl/src/com/intellij/psi/formatter/PsiBasedFormattingModel.java b/platform/lang-impl/src/com/intellij/psi/formatter/PsiBasedFormattingModel.java index 68bcf08c59ba..5fb63836e61d 100644 --- a/platform/lang-impl/src/com/intellij/psi/formatter/PsiBasedFormattingModel.java +++ b/platform/lang-impl/src/com/intellij/psi/formatter/PsiBasedFormattingModel.java @@ -28,7 +28,7 @@ import com.intellij.psi.PsiFile; import com.intellij.psi.TokenType; import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.impl.source.SourceTreeToPsiMap; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -117,7 +117,7 @@ public class PsiBasedFormattingModel implements FormattingModel { Project project = containingFile.getProject(); assert !PsiDocumentManager.getInstance(project).isUncommited(myDocumentModel.getDocument()); // TODO:default project can not be used for injections, because latter might wants (unavailable) indices - PsiElement psiElement = project.isDefault() ? null : InjectedLanguageFacadeImpl.findInjectedElementNoCommit(containingFile, offset); + PsiElement psiElement = project.isDefault() ? null : InjectedLanguageUtil.findInjectedElementNoCommit(containingFile, offset); if (psiElement == null) psiElement = containingFile.findElementAt(offset); if (psiElement == null) return null; return psiElement.getNode(); diff --git a/platform/lang-impl/src/com/intellij/psi/formatter/common/InjectedLanguageBlockBuilder.java b/platform/lang-impl/src/com/intellij/psi/formatter/common/InjectedLanguageBlockBuilder.java index 4d06bdc3b8e5..7070493c72a1 100644 --- a/platform/lang-impl/src/com/intellij/psi/formatter/common/InjectedLanguageBlockBuilder.java +++ b/platform/lang-impl/src/com/intellij/psi/formatter/common/InjectedLanguageBlockBuilder.java @@ -27,7 +27,7 @@ import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiLanguageInjectionHost; import com.intellij.psi.codeStyle.CodeStyleSettings; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -76,7 +76,7 @@ public abstract class InjectedLanguageBlockBuilder { } } }; - InjectedLanguageFacadeImpl.enumerate(injectionHost.getPsi(), injectedPsiVisitor); + InjectedLanguageUtil.enumerate(injectionHost.getPsi(), injectedPsiVisitor); if (injectedFile[0] != null) { final Language childLanguage = injectedFile[0].getLanguage(); diff --git a/platform/lang-impl/src/com/intellij/psi/impl/smartPointers/InjectedSelfElementInfo.java b/platform/lang-impl/src/com/intellij/psi/impl/smartPointers/InjectedSelfElementInfo.java index e251006a5428..f4a0db2a0ab2 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/smartPointers/InjectedSelfElementInfo.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/smartPointers/InjectedSelfElementInfo.java @@ -25,7 +25,7 @@ import com.intellij.openapi.util.Segment; import com.intellij.openapi.util.TextRange; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import org.jetbrains.annotations.NotNull; import java.util.Collections; @@ -86,7 +86,7 @@ class InjectedSelfElementInfo extends SelfElementInfo { PsiDocumentManager documentManager = PsiDocumentManager.getInstance(hostFile.getProject()); Document document = documentManager.getDocument(hostFile); if (document != null && documentManager.isUncommited(document)) { - for (DocumentWindow documentWindow : InjectedLanguageFacadeImpl.getCachedInjectedDocuments(hostFile)) { + for (DocumentWindow documentWindow : InjectedLanguageUtil.getCachedInjectedDocuments(hostFile)) { PsiFile injected = documentManager.getPsiFile(documentWindow); if (injected != null) { visitor.visit(injected, Collections.emptyList()); @@ -94,7 +94,7 @@ class InjectedSelfElementInfo extends SelfElementInfo { } } else { - InjectedLanguageFacadeImpl.enumerate(hostContext, hostFile, true, visitor); + InjectedLanguageUtil.enumerate(hostContext, hostFile, true, visitor); } return result.get(); diff --git a/platform/lang-impl/src/com/intellij/psi/impl/smartPointers/SmartPointerManagerImpl.java b/platform/lang-impl/src/com/intellij/psi/impl/smartPointers/SmartPointerManagerImpl.java index 29442fd80cdf..fb8722d0156b 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/smartPointers/SmartPointerManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/smartPointers/SmartPointerManagerImpl.java @@ -29,7 +29,7 @@ import com.intellij.openapi.util.Key; import com.intellij.openapi.util.ProperTextRange; import com.intellij.openapi.util.TextRange; import com.intellij.psi.*; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.reference.SoftReference; import com.intellij.util.containers.UnsafeWeakList; import org.jetbrains.annotations.NotNull; @@ -72,7 +72,7 @@ public class SmartPointerManagerImpl extends SmartPointerManager { } } - for (DocumentWindow injectedDoc : InjectedLanguageFacadeImpl.getCachedInjectedDocuments(file)) { + for (DocumentWindow injectedDoc : InjectedLanguageUtil.getCachedInjectedDocuments(file)) { PsiFile injectedFile = psiDocumentManager.getPsiFile(injectedDoc); if (injectedFile == null) continue; RangeMarker cachedMarker = getCachedRangeMarkerToInjectedFragment(injectedFile); @@ -114,7 +114,7 @@ public class SmartPointerManagerImpl extends SmartPointerManager { } } - for (DocumentWindow injectedDoc : InjectedLanguageFacadeImpl.getCachedInjectedDocuments(file)) { + for (DocumentWindow injectedDoc : InjectedLanguageUtil.getCachedInjectedDocuments(file)) { PsiFile injectedFile = psiDocumentManager.getPsiFile(injectedDoc); if (injectedFile == null) continue; unfastenBelts(injectedFile, 0); @@ -145,7 +145,7 @@ public class SmartPointerManagerImpl extends SmartPointerManager { } final PsiDocumentManager psiDocumentManager = PsiDocumentManager.getInstance(file.getProject()); - for (Document document : InjectedLanguageFacadeImpl.getCachedInjectedDocuments(file)) { + for (Document document : InjectedLanguageUtil.getCachedInjectedDocuments(file)) { PsiFile injectedfile = psiDocumentManager.getPsiFile(document); if (injectedfile == null) continue; _synchronizePointers(injectedfile); diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/PostprocessReformattingAspect.java b/platform/lang-impl/src/com/intellij/psi/impl/source/PostprocessReformattingAspect.java index 1f87406009a6..42b4ee1f167b 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/source/PostprocessReformattingAspect.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/source/PostprocessReformattingAspect.java @@ -45,7 +45,7 @@ import com.intellij.psi.impl.source.codeStyle.CodeEditUtil; import com.intellij.psi.impl.source.codeStyle.CodeFormatterFacade; import com.intellij.psi.impl.source.codeStyle.IndentHelperImpl; import com.intellij.psi.impl.source.tree.*; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.util.LocalTimeCounter; import com.intellij.util.text.CharArrayUtil; import org.jetbrains.annotations.TestOnly; @@ -168,7 +168,7 @@ public class PostprocessReformattingAspect implements PomModelAspect { if (changeSet == null) return; final PsiElement psiElement = changeSet.getRootElement().getPsi(); if (psiElement == null) return; - PsiFile containingFile = InjectedLanguageFacadeImpl.getTopLevelFile(psiElement); + PsiFile containingFile = InjectedLanguageUtil.getTopLevelFile(psiElement); final FileViewProvider viewProvider = containingFile.getViewProvider(); if (!viewProvider.isEventSystemEnabled()) return; diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeFormatterFacade.java b/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeFormatterFacade.java index f6be88df1c35..d9af7a4b628a 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeFormatterFacade.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeFormatterFacade.java @@ -45,7 +45,7 @@ import com.intellij.psi.codeStyle.CodeStyleSettings; import com.intellij.psi.formatter.DocumentBasedFormattingModel; import com.intellij.psi.impl.source.PostprocessReformattingAspect; import com.intellij.psi.impl.source.SourceTreeToPsiMap; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.PsiUtilBase; import com.intellij.testFramework.LightVirtualFile; @@ -88,7 +88,7 @@ public class CodeFormatterFacade { final Document document = file.getViewProvider().getDocument(); final RangeMarker rangeMarker = document != null && endOffset < document.getTextLength()? document.createRangeMarker(startOffset, endOffset):null; - PsiElement elementToFormat = document instanceof DocumentWindow ? InjectedLanguageFacadeImpl.getTopLevelFile(file) : psiElement; + PsiElement elementToFormat = document instanceof DocumentWindow ? InjectedLanguageUtil.getTopLevelFile(file) : psiElement; final PsiFile fileToFormat = elementToFormat.getContainingFile(); final FormattingModelBuilder builder = LanguageFormatting.INSTANCE.forContext(fileToFormat); @@ -137,7 +137,7 @@ public class CodeFormatterFacade { Document document = PsiDocumentManager.getInstance(project).getDocument(file); final List textRanges = ranges.getRanges(); if (document instanceof DocumentWindow) { - file = InjectedLanguageFacadeImpl.getTopLevelFile(file); + file = InjectedLanguageUtil.getTopLevelFile(file); final DocumentWindow documentWindow = (DocumentWindow)document; for (FormatTextRanges.FormatTextRange range : textRanges) { range.setTextRange(documentWindow.injectedToHost(range.getTextRange())); diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeStyleManagerImpl.java b/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeStyleManagerImpl.java index b6685b1e5e08..c0d69b38c25c 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeStyleManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeStyleManagerImpl.java @@ -38,7 +38,7 @@ import com.intellij.psi.impl.CheckUtil; import com.intellij.psi.impl.source.PostprocessReformattingAspect; import com.intellij.psi.impl.source.SourceTreeToPsiMap; import com.intellij.psi.impl.source.tree.*; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.util.PsiUtilBase; import com.intellij.util.CharTable; import com.intellij.util.IncorrectOperationException; @@ -274,7 +274,7 @@ public class CodeStyleManagerImpl extends CodeStyleManager { TextRange textRange = addedElement.getTextRange(); final Document document = fileViewProvider.getDocument(); if (document instanceof DocumentWindow) { - containingFile = InjectedLanguageFacadeImpl.getTopLevelFile(containingFile); + containingFile = InjectedLanguageUtil.getTopLevelFile(containingFile); textRange = ((DocumentWindow)document).injectedToHost(textRange); } @@ -614,7 +614,7 @@ public class CodeStyleManagerImpl extends CodeStyleManager { if (!(astNode instanceof FileElement)) { return new Pair(null, null); } - PsiElement elementAt = InjectedLanguageFacadeImpl.findInjectedElementNoCommit(file, offset); + PsiElement elementAt = InjectedLanguageUtil.findInjectedElementNoCommit(file, offset); final CharTable charTable = ((FileElement)astNode).getCharTable(); if (elementAt == null) { elementAt = findElementInTreeWithFormatterEnabled(file, offset); diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeStyleManagerRunnable.java b/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeStyleManagerRunnable.java index 3862e08e4749..de0243002b23 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeStyleManagerRunnable.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeStyleManagerRunnable.java @@ -28,7 +28,7 @@ import com.intellij.psi.codeStyle.CodeStyleSettingsManager; import com.intellij.psi.codeStyle.CommonCodeStyleSettings; import com.intellij.psi.formatter.DocumentBasedFormattingModel; import com.intellij.psi.impl.source.SourceTreeToPsiMap; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.util.PsiUtilCore; import com.intellij.util.text.CharArrayUtil; import org.jetbrains.annotations.Nullable; @@ -56,7 +56,7 @@ abstract class CodeStyleManagerRunnable { Document document = documentManager.getDocument(file); if (document instanceof DocumentWindow) { final DocumentWindow documentWindow = (DocumentWindow)document; - final PsiFile topLevelFile = InjectedLanguageFacadeImpl.getTopLevelFile(file); + final PsiFile topLevelFile = InjectedLanguageUtil.getTopLevelFile(file); if (!file.equals(topLevelFile)) { if (range != null) { range = documentWindow.injectedToHost(range); @@ -125,7 +125,7 @@ abstract class CodeStyleManagerRunnable { return false; } - if (element instanceof PsiLanguageInjectionHost && InjectedLanguageFacadeImpl.hasInjections((PsiLanguageInjectionHost)element)) { + if (element instanceof PsiLanguageInjectionHost && InjectedLanguageUtil.hasInjections((PsiLanguageInjectionHost)element)) { return false; } diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/FileReferenceSet.java b/platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/FileReferenceSet.java index b76d8c89d481..2d73b9b02f82 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/FileReferenceSet.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/FileReferenceSet.java @@ -25,7 +25,7 @@ import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.TextRange; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.util.Function; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -306,7 +306,7 @@ public class FileReferenceSet { @Nullable private PsiFile getContainingFile() { - final PsiFile file = InjectedLanguageFacadeImpl.getTopLevelFile(myElement.getContainingFile()); + final PsiFile file = InjectedLanguageUtil.getTopLevelFile(myElement.getContainingFile()); if (file == null) { LOG.error("Invalid element: " + myElement); } diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/InjectedFileViewProvider.java b/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/InjectedFileViewProvider.java index 21b6a6a4841c..4cd558854598 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/InjectedFileViewProvider.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/InjectedFileViewProvider.java @@ -90,7 +90,7 @@ public class InjectedFileViewProvider extends SingleRootFileViewProvider impleme PsiFile hostFile = documentManager.getPsiFile(hostDocument); Language language = getBaseLanguage(); PsiFile file = getPsi(language); - final Language hostFileLanguage = InjectedLanguageFacadeImpl.getTopLevelFile(file).getLanguage(); + final Language hostFileLanguage = InjectedLanguageUtil.getTopLevelFile(file).getLanguage(); PsiFile hostPsiFileCopy = (PsiFile)hostFile.copy(); Segment firstTextRange = oldDocumentWindow.getHostRanges()[0]; PsiElement hostElementCopy = hostPsiFileCopy.getViewProvider().findElementAt(firstTextRange.getStartOffset(), hostFileLanguage); @@ -108,7 +108,7 @@ public class InjectedFileViewProvider extends SingleRootFileViewProvider impleme for (PsiElement current = hostElementCopy; current != null && current != hostPsiFileCopy; current = current.getParent()) { current.putUserData(LANGUAGE_FOR_INJECTED_COPY_KEY, language); try { - InjectedLanguageFacadeImpl.enumerate(current, hostPsiFileCopy, false, visitor); + InjectedLanguageUtil.enumerate(current, hostPsiFileCopy, false, visitor); } finally { current.putUserData(LANGUAGE_FOR_INJECTED_COPY_KEY, null); diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/InjectedLanguageManagerImpl.java b/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/InjectedLanguageManagerImpl.java index 8a086947820c..250bcbed8cd1 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/InjectedLanguageManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/InjectedLanguageManagerImpl.java @@ -131,7 +131,7 @@ public class InjectedLanguageManagerImpl extends InjectedLanguageManager impleme if (hostPsiFile == null) return; final CopyOnWriteArrayList injected = - (CopyOnWriteArrayList)InjectedLanguageFacadeImpl.getCachedInjectedDocuments(hostPsiFile); + (CopyOnWriteArrayList)InjectedLanguageUtil.getCachedInjectedDocuments(hostPsiFile); if (injected.isEmpty()) return; if (myProgress.isCanceled()) { @@ -157,7 +157,7 @@ public class InjectedLanguageManagerImpl extends InjectedLanguageManager impleme } final DocumentWindow[] stillInjectedDocument = {null}; // it is here where the reparse happens and old file contents replaced - InjectedLanguageFacadeImpl.enumerate(element, hostPsiFile, true, new PsiLanguageInjectionHost.InjectedPsiVisitor() { + InjectedLanguageUtil.enumerate(element, hostPsiFile, true, new PsiLanguageInjectionHost.InjectedPsiVisitor() { @Override public void visit(@NotNull PsiFile injectedPsi, @NotNull List places) { stillInjectedDocument[0] = (DocumentWindow)injectedPsi.getViewProvider().getDocument(); @@ -333,7 +333,7 @@ public class InjectedLanguageManagerImpl extends InjectedLanguageManager impleme @SuppressWarnings({"ConstantConditions", "unchecked"}) @NotNull public List intersectWithAllEditableFragments(@NotNull PsiFile injectedPsi, @NotNull TextRange rangeToEdit) { - Place shreds = InjectedLanguageFacadeImpl.getShreds(injectedPsi); + Place shreds = InjectedLanguageUtil.getShreds(injectedPsi); if (shreds == null) return Collections.emptyList(); Object result = null; // optimization: TextRange or ArrayList int count = 0; @@ -381,12 +381,12 @@ public class InjectedLanguageManagerImpl extends InjectedLanguageManager impleme @Override public PsiElement findInjectedElementAt(@NotNull PsiFile hostFile, int hostDocumentOffset) { - return InjectedLanguageFacadeImpl.findInjectedElementNoCommit(hostFile, hostDocumentOffset); + return InjectedLanguageUtil.findInjectedElementNoCommit(hostFile, hostDocumentOffset); } @Override public void dropFileCaches(@NotNull PsiFile file) { - InjectedLanguageFacadeImpl.clearCachedInjectedFragmentsForFile(file); + InjectedLanguageUtil.clearCachedInjectedFragmentsForFile(file); } private final Map myInjectorsClone = new HashMap(); diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/InjectedLanguageFacadeImpl.java b/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/InjectedLanguageUtil.java similarity index 99% rename from platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/InjectedLanguageFacadeImpl.java rename to platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/InjectedLanguageUtil.java index 4a019a46fac2..c0508eab7a08 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/InjectedLanguageFacadeImpl.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/InjectedLanguageUtil.java @@ -46,7 +46,7 @@ import java.util.List; /** * @author cdr */ -public class InjectedLanguageFacadeImpl extends InjectedLanguageFacade { +public class InjectedLanguageUtil extends InjectedLanguageFacade { static final Key, TextRange>>> HIGHLIGHT_TOKENS = Key.create("HIGHLIGHT_TOKENS"); public static void forceInjectionOnElement(@NotNull PsiElement host) { diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/MultiHostRegistrarImpl.java b/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/MultiHostRegistrarImpl.java index 19ca2be6c298..d1ee84f27989 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/MultiHostRegistrarImpl.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/MultiHostRegistrarImpl.java @@ -256,7 +256,7 @@ public class MultiHostRegistrarImpl implements MultiHostRegistrar, ModificationT PsiFile newFile = registerDocument(documentWindow, psiFile, place, myHostPsiFile, documentManager); boolean mergeHappened = newFile != psiFile; if (mergeHappened) { - InjectedLanguageFacadeImpl.clearCaches(psiFile, documentWindow); + InjectedLanguageUtil.clearCaches(psiFile, documentWindow); psiFile = newFile; viewProvider = (InjectedFileViewProvider)psiFile.getViewProvider(); documentWindow = (DocumentWindowImpl)viewProvider.getDocument(); @@ -274,7 +274,7 @@ public class MultiHostRegistrarImpl implements MultiHostRegistrar, ModificationT try { List, TextRange>> tokens = obtainHighlightTokensFromLexer(myLanguage, outChars, escapers, place, virtualFile, myProject); - psiFile.putUserData(InjectedLanguageFacadeImpl.HIGHLIGHT_TOKENS, tokens); + psiFile.putUserData(InjectedLanguageUtil.HIGHLIGHT_TOKENS, tokens); } catch (ProcessCanceledException e) { throw e; @@ -385,7 +385,7 @@ public class MultiHostRegistrarImpl implements MultiHostRegistrar, ModificationT final Place shreds, final PsiFile hostPsiFile, final PsiDocumentManager documentManager) { - List injected = InjectedLanguageFacadeImpl.getCachedInjectedDocuments(hostPsiFile); + List injected = InjectedLanguageUtil.getCachedInjectedDocuments(hostPsiFile); for (int i = injected.size()-1; i>=0; i--) { DocumentWindowImpl oldDocument = (DocumentWindowImpl)injected.get(i); diff --git a/platform/lang-impl/src/com/intellij/refactoring/move/FileReferenceContextUtil.java b/platform/lang-impl/src/com/intellij/refactoring/move/FileReferenceContextUtil.java index a15dfa42e4f2..0afa6b6545fc 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/move/FileReferenceContextUtil.java +++ b/platform/lang-impl/src/com/intellij/refactoring/move/FileReferenceContextUtil.java @@ -22,7 +22,7 @@ import com.intellij.openapi.util.TextRange; import com.intellij.psi.*; import com.intellij.psi.impl.source.resolve.reference.impl.providers.FileReference; import com.intellij.psi.impl.source.resolve.reference.impl.providers.FileReferenceOwner; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.util.IncorrectOperationException; import com.intellij.util.containers.HashMap; import org.jetbrains.annotations.NotNull; @@ -43,7 +43,7 @@ public class FileReferenceContextUtil { element.accept(new PsiRecursiveElementWalkingVisitor(true) { @Override public void visitElement(PsiElement element) { if (element instanceof PsiLanguageInjectionHost) { - InjectedLanguageFacadeImpl.enumerate(element, new PsiLanguageInjectionHost.InjectedPsiVisitor() { + InjectedLanguageUtil.enumerate(element, new PsiLanguageInjectionHost.InjectedPsiVisitor() { public void visit(@NotNull final PsiFile injectedPsi, @NotNull final List places) { encodeFileReferences(injectedPsi); } @@ -89,7 +89,7 @@ public class FileReferenceContextUtil { } if (element instanceof PsiLanguageInjectionHost) { - InjectedLanguageFacadeImpl.enumerate(element, new PsiLanguageInjectionHost.InjectedPsiVisitor() { + InjectedLanguageUtil.enumerate(element, new PsiLanguageInjectionHost.InjectedPsiVisitor() { public void visit(@NotNull final PsiFile injectedPsi, @NotNull final List places) { decodeFileReferences(injectedPsi); } diff --git a/platform/lang-impl/src/com/intellij/refactoring/rename/PsiElementRenameHandler.java b/platform/lang-impl/src/com/intellij/refactoring/rename/PsiElementRenameHandler.java index 3b5c3f49bdfd..c23fe24e664d 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/rename/PsiElementRenameHandler.java +++ b/platform/lang-impl/src/com/intellij/refactoring/rename/PsiElementRenameHandler.java @@ -31,7 +31,7 @@ import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.util.Condition; import com.intellij.psi.*; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.meta.PsiMetaOwner; import com.intellij.psi.meta.PsiWritableMetaData; import com.intellij.refactoring.RefactoringBundle; @@ -57,7 +57,7 @@ public class PsiElementRenameHandler implements RenameHandler { public void invoke(@NotNull Project project, Editor editor, PsiFile file, DataContext dataContext) { PsiElement element = getElement(dataContext); editor.getScrollingModel().scrollToCaret(ScrollType.MAKE_VISIBLE); - final PsiElement nameSuggestionContext = InjectedLanguageFacadeImpl.findElementAtNoCommit(file, editor.getCaretModel().getOffset()); + final PsiElement nameSuggestionContext = InjectedLanguageUtil.findElementAtNoCommit(file, editor.getCaretModel().getOffset()); invoke(element, project, nameSuggestionContext, editor); } @@ -127,7 +127,7 @@ public class PsiElementRenameHandler implements RenameHandler { } } - if (InjectedLanguageFacadeImpl.isInInjectedLanguagePrefixSuffix(element)) { + if (InjectedLanguageUtil.isInInjectedLanguagePrefixSuffix(element)) { final String message = RefactoringBundle.message("error.in.injected.lang.prefix.suffix", UsageViewUtil.getType(element)); return RefactoringBundle.getCannotRefactorMessage(message); } diff --git a/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/InplaceRefactoring.java b/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/InplaceRefactoring.java index 80542b6a3c6a..2a963e5ad5fa 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/InplaceRefactoring.java +++ b/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/InplaceRefactoring.java @@ -62,7 +62,7 @@ import com.intellij.openapi.ui.popup.JBPopupFactory; import com.intellij.openapi.util.*; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.search.LocalSearchScope; import com.intellij.psi.search.ProjectScope; import com.intellij.psi.search.PsiSearchHelper; @@ -151,7 +151,7 @@ public abstract class InplaceRefactoring { public boolean performInplaceRefactoring(final LinkedHashSet nameSuggestions) { myNameSuggestions = nameSuggestions; - if (InjectedLanguageFacadeImpl.isInInjectedLanguagePrefixSuffix(myElementToRename)) { + if (InjectedLanguageUtil.isInInjectedLanguagePrefixSuffix(myElementToRename)) { return false; } @@ -274,7 +274,7 @@ public abstract class InplaceRefactoring { } else { revertState(); - final TemplateState templateState = TemplateManagerImpl.getTemplateState(InjectedLanguageFacadeImpl.getTopLevelEditor(myEditor)); + final TemplateState templateState = TemplateManagerImpl.getTemplateState(InjectedLanguageUtil.getTopLevelEditor(myEditor)); if (templateState != null) { templateState.gotoEnd(true); } @@ -332,7 +332,7 @@ public abstract class InplaceRefactoring { TextRange range = myScope.getTextRange(); assert range != null; myHighlighters = new ArrayList(); - Editor topLevelEditor = InjectedLanguageFacadeImpl.getTopLevelEditor(myEditor); + Editor topLevelEditor = InjectedLanguageUtil.getTopLevelEditor(myEditor); topLevelEditor.getCaretModel().moveToOffset(range.getStartOffset()); TemplateManager.getInstance(myProject).startTemplate(topLevelEditor, template, templateListener); @@ -508,7 +508,7 @@ public abstract class InplaceRefactoring { if (myOldName == null) return; CommandProcessor.getInstance().executeCommand(myProject, new Runnable() { public void run() { - final Editor topLevelEditor = InjectedLanguageFacadeImpl.getTopLevelEditor(myEditor); + final Editor topLevelEditor = InjectedLanguageUtil.getTopLevelEditor(myEditor); ApplicationManager.getApplication().runWriteAction(new Runnable() { public void run() { final TemplateState state = TemplateManagerImpl.getTemplateState(topLevelEditor); @@ -751,7 +751,7 @@ public abstract class InplaceRefactoring { finally { if (!bind) { try { - ((EditorImpl)InjectedLanguageFacadeImpl.getTopLevelEditor(myEditor)).stopDumb(); + ((EditorImpl)InjectedLanguageUtil.getTopLevelEditor(myEditor)).stopDumb(); } finally { FinishMarkAction.finish(myProject, myEditor, myMarkAction); diff --git a/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/MemberInplaceRenameHandler.java b/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/MemberInplaceRenameHandler.java index f6a107357ad9..45d74ff03420 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/MemberInplaceRenameHandler.java +++ b/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/MemberInplaceRenameHandler.java @@ -28,7 +28,7 @@ import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiNameIdentifierOwner; import com.intellij.psi.PsiNamedElement; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.refactoring.rename.RenamePsiElementProcessor; import org.jetbrains.annotations.NotNull; @@ -73,7 +73,7 @@ public class MemberInplaceRenameHandler extends VariableInplaceRenameHandler { else { final InplaceRefactoring inplaceRefactoring = editor.getUserData(InplaceRefactoring.INPLACE_RENAMER); if (inplaceRefactoring != null && inplaceRefactoring.getClass() == MemberInplaceRenamer.class) { - final TemplateState templateState = TemplateManagerImpl.getTemplateState(InjectedLanguageFacadeImpl.getTopLevelEditor(editor)); + final TemplateState templateState = TemplateManagerImpl.getTemplateState(InjectedLanguageUtil.getTopLevelEditor(editor)); if (templateState != null) { templateState.gotoEnd(true); } diff --git a/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/MemberInplaceRenamer.java b/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/MemberInplaceRenamer.java index 062fc1aa8a65..caf14daadbf3 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/MemberInplaceRenamer.java +++ b/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/MemberInplaceRenamer.java @@ -30,7 +30,7 @@ import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.TextRange; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.search.LocalSearchScope; import com.intellij.psi.search.ProjectScope; import com.intellij.psi.search.SearchScope; @@ -202,7 +202,7 @@ public class MemberInplaceRenamer extends VariableInplaceRenamer { } finally { try { - ((EditorImpl)InjectedLanguageFacadeImpl.getTopLevelEditor(myEditor)).stopDumb(); + ((EditorImpl)InjectedLanguageUtil.getTopLevelEditor(myEditor)).stopDumb(); } finally { FinishMarkAction.finish(myProject, myEditor, markAction); @@ -248,7 +248,7 @@ public class MemberInplaceRenamer extends VariableInplaceRenamer { @Override protected void revertStateOnFinish() { - final Editor editor = InjectedLanguageFacadeImpl.getTopLevelEditor(myEditor); + final Editor editor = InjectedLanguageUtil.getTopLevelEditor(myEditor); if (editor == FileEditorManager.getInstance(myProject).getSelectedTextEditor()) { ((EditorImpl)editor).startDumb(); } diff --git a/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/MyLookupExpression.java b/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/MyLookupExpression.java index 70960742e739..7db3a3693faf 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/MyLookupExpression.java +++ b/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/MyLookupExpression.java @@ -30,7 +30,7 @@ import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.util.TextRange; import com.intellij.psi.PsiNamedElement; import com.intellij.psi.codeStyle.SuggestedNameInfo; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.refactoring.rename.NameSuggestionProvider; import com.intellij.refactoring.rename.PreferrableNameSuggestionProvider; @@ -78,7 +78,7 @@ public class MyLookupExpression extends Expression { @Override public void handleInsert(InsertionContext context, LookupElement item) { if (shouldSelectAll) return; - final Editor topLevelEditor = InjectedLanguageFacadeImpl.getTopLevelEditor(context.getEditor()); + final Editor topLevelEditor = InjectedLanguageUtil.getTopLevelEditor(context.getEditor()); final TemplateState templateState = TemplateManagerImpl.getTemplateState(topLevelEditor); if (templateState != null) { final TextRange range = templateState.getCurrentVariableRange(); diff --git a/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/VariableInplaceRenamer.java b/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/VariableInplaceRenamer.java index 222ca0db8098..f52e6635ef16 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/VariableInplaceRenamer.java +++ b/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/VariableInplaceRenamer.java @@ -32,7 +32,7 @@ import com.intellij.openapi.ui.popup.JBPopupFactory; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.TextRange; import com.intellij.psi.*; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.util.PsiUtilCore; import com.intellij.refactoring.RefactoringBundle; import com.intellij.refactoring.rename.AutomaticRenamingDialog; @@ -249,7 +249,7 @@ public class VariableInplaceRenamer extends InplaceRefactoring { } finally { try { - ((EditorImpl)InjectedLanguageFacadeImpl.getTopLevelEditor(myEditor)).stopDumb(); + ((EditorImpl)InjectedLanguageUtil.getTopLevelEditor(myEditor)).stopDumb(); } finally { FinishMarkAction.finish(myProject, myEditor, markAction); @@ -298,7 +298,7 @@ public class VariableInplaceRenamer extends InplaceRefactoring { revertStateOnFinish(); } else { - ((EditorImpl)InjectedLanguageFacadeImpl.getTopLevelEditor(myEditor)).stopDumb(); + ((EditorImpl)InjectedLanguageUtil.getTopLevelEditor(myEditor)).stopDumb(); } } diff --git a/platform/platform-resources/src/META-INF/LangExtensions.xml b/platform/platform-resources/src/META-INF/LangExtensions.xml index 78eedf74f4ef..bd57ac5cbe59 100644 --- a/platform/platform-resources/src/META-INF/LangExtensions.xml +++ b/platform/platform-resources/src/META-INF/LangExtensions.xml @@ -51,7 +51,7 @@ serviceImplementation="com.intellij.application.options.CodeStyleSettingsUtilImpl"/> + serviceImplementation="com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil"/> > injectedPsi = InjectedLanguageFacadeImpl.getInstance().getInjectedPsiFiles(host); + final List> injectedPsi = InjectedLanguageUtil.getInstance().getInjectedPsiFiles(host); return injectedPsi == null || injectedPsi.isEmpty(); } diff --git a/plugins/IntelliLang/src/org/intellij/plugins/intelliLang/inject/UnInjectLanguageAction.java b/plugins/IntelliLang/src/org/intellij/plugins/intelliLang/inject/UnInjectLanguageAction.java index 3829287efc27..c079935c2010 100644 --- a/plugins/IntelliLang/src/org/intellij/plugins/intelliLang/inject/UnInjectLanguageAction.java +++ b/plugins/IntelliLang/src/org/intellij/plugins/intelliLang/inject/UnInjectLanguageAction.java @@ -28,7 +28,7 @@ import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiLanguageInjectionHost; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.util.FileContentUtil; import com.intellij.util.IncorrectOperationException; import gnu.trove.THashSet; @@ -55,7 +55,7 @@ public class UnInjectLanguageAction implements IntentionAction, LowPriorityActio public boolean isAvailable(@NotNull Project project, Editor editor, PsiFile file) { final int offset = editor.getCaretModel().getOffset(); - final PsiFile psiFile = InjectedLanguageFacadeImpl.findInjectedPsiNoCommit(file, offset); + final PsiFile psiFile = InjectedLanguageUtil.findInjectedPsiNoCommit(file, offset); if (psiFile == null) return false; final LanguageInjectionSupport support = psiFile.getUserData(LanguageInjectionSupport.INJECTOR_SUPPORT); return support != null; @@ -70,7 +70,7 @@ public class UnInjectLanguageAction implements IntentionAction, LowPriorityActio } private static void invokeImpl(Project project, Editor editor, PsiFile file) { - final PsiFile psiFile = InjectedLanguageFacadeImpl.findInjectedPsiNoCommit(file, editor.getCaretModel().getOffset()); + final PsiFile psiFile = InjectedLanguageUtil.findInjectedPsiNoCommit(file, editor.getCaretModel().getOffset()); if (psiFile == null) return; final PsiLanguageInjectionHost host = InjectedLanguageManager.getInstance(project).getInjectionHost(psiFile); if (host == null) return; @@ -88,7 +88,7 @@ public class UnInjectLanguageAction implements IntentionAction, LowPriorityActio private static boolean defaultFunctionalityWorked(final PsiLanguageInjectionHost host) { final THashSet languages = new THashSet(); - final List> files = InjectedLanguageFacadeImpl.getInstance().getInjectedPsiFiles(host); + final List> files = InjectedLanguageUtil.getInstance().getInjectedPsiFiles(host); if (files == null) return false; for (Pair pair : files) { for (Language lang = pair.first.getLanguage(); lang != null; lang = lang.getBaseLanguage()) { diff --git a/plugins/IntentionPowerPak/src/com/siyeh/ipp/comment/CommentOnLineWithSourcePredicate.java b/plugins/IntentionPowerPak/src/com/siyeh/ipp/comment/CommentOnLineWithSourcePredicate.java index ed366ec1b1ef..a76a86fedbbe 100644 --- a/plugins/IntentionPowerPak/src/com/siyeh/ipp/comment/CommentOnLineWithSourcePredicate.java +++ b/plugins/IntentionPowerPak/src/com/siyeh/ipp/comment/CommentOnLineWithSourcePredicate.java @@ -16,7 +16,7 @@ package com.siyeh.ipp.comment; import com.intellij.psi.*; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.javadoc.PsiDocComment; import com.intellij.psi.tree.IElementType; import com.intellij.psi.util.PsiTreeUtil; @@ -37,7 +37,7 @@ class CommentOnLineWithSourcePredicate implements PsiElementPredicate { } final PsiComment comment = (PsiComment)element; - if (comment instanceof PsiLanguageInjectionHost && InjectedLanguageFacadeImpl.hasInjections((PsiLanguageInjectionHost)comment)) { + if (comment instanceof PsiLanguageInjectionHost && InjectedLanguageUtil.hasInjections((PsiLanguageInjectionHost)comment)) { return false; } final IElementType type = comment.getTokenType(); diff --git a/plugins/android/testSrc/org/jetbrains/android/AndroidRenameTest.java b/plugins/android/testSrc/org/jetbrains/android/AndroidRenameTest.java index 0cf268f4b7a5..e51b34026cfb 100644 --- a/plugins/android/testSrc/org/jetbrains/android/AndroidRenameTest.java +++ b/plugins/android/testSrc/org/jetbrains/android/AndroidRenameTest.java @@ -27,7 +27,7 @@ import com.intellij.openapi.editor.ex.EditorEx; import com.intellij.openapi.fileEditor.FileDocumentManager; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.refactoring.PackageWrapper; import com.intellij.refactoring.actions.RenameElementAction; @@ -106,7 +106,7 @@ public class AndroidRenameTest extends AndroidTestCase { protected void run() throws Throwable { Editor editor = myFixture.getEditor(); PsiFile file = myFixture.getFile(); - Editor completionEditor = InjectedLanguageFacadeImpl.getEditorForInjectedLanguageNoCommit(editor, file); + Editor completionEditor = InjectedLanguageUtil.getEditorForInjectedLanguageNoCommit(editor, file); PsiElement element = TargetElementUtilBase.findTargetElement(completionEditor, TargetElementUtilBase.REFERENCED_ELEMENT_ACCEPTED | TargetElementUtilBase.ELEMENT_NAME_ACCEPTED); assert element != null; diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/completion/InjectedGroovyTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/completion/InjectedGroovyTest.groovy index ec9a72e32c68..cd04b5caa43f 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/completion/InjectedGroovyTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/completion/InjectedGroovyTest.groovy @@ -23,7 +23,7 @@ import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase import org.intellij.plugins.intelliLang.inject.TemporaryPlacesRegistry import org.jetbrains.plugins.groovy.GroovyFileType -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil /** * @author peter @@ -54,7 +54,7 @@ s.codePointAt(0) def offset = psiFile.getText().indexOf('"') + 1 assertNotNull(psiFile.findElementAt(offset)); - assert InjectedLanguageFacadeImpl.findInjectedPsiNoCommit(psiFile, offset) + assert InjectedLanguageUtil.findInjectedPsiNoCommit(psiFile, offset) } public void testRegexInjections() { @@ -62,8 +62,8 @@ s.codePointAt(0) final PsiFile psiFile = myFixture.configureByText("script.groovy", 'new groovy.lang.GroovyShell().evaluate(/ blah-blah-blah \\ language won\'t be injected here /)'); assertNotNull(psiFile); - assert InjectedLanguageFacadeImpl.findInjectedPsiNoCommit(psiFile, psiFile.getText().indexOf('blah') + 1) - assert InjectedLanguageFacadeImpl.findInjectedPsiNoCommit(psiFile, psiFile.getText().indexOf('injected') + 1) + assert InjectedLanguageUtil.findInjectedPsiNoCommit(psiFile, psiFile.getText().indexOf('blah') + 1) + assert InjectedLanguageUtil.findInjectedPsiNoCommit(psiFile, psiFile.getText().indexOf('injected') + 1) } } diff --git a/plugins/java-i18n/src/com/intellij/codeInspection/i18n/SuppressByCommentOutAction.java b/plugins/java-i18n/src/com/intellij/codeInspection/i18n/SuppressByCommentOutAction.java index dad8077bb62e..f674084163a0 100644 --- a/plugins/java-i18n/src/com/intellij/codeInspection/i18n/SuppressByCommentOutAction.java +++ b/plugins/java-i18n/src/com/intellij/codeInspection/i18n/SuppressByCommentOutAction.java @@ -24,7 +24,7 @@ import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.tree.IElementType; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.util.IncorrectOperationException; @@ -45,7 +45,7 @@ class SuppressByCommentOutAction extends SuppressIntentionAction { if (!CodeInsightUtilBase.preparePsiElementForWrite(element)) return; element = findJavaCodeUpThere(element); PsiFile file = element.getContainingFile(); - editor = InjectedLanguageFacadeImpl.openEditorFor(file, project); + editor = InjectedLanguageUtil.openEditorFor(file, project); int endOffset = element.getTextRange().getEndOffset(); int line = editor.getDocument().getLineNumber(endOffset); int lineEndOffset = editor.getDocument().getLineEndOffset(line); diff --git a/plugins/spellchecker/src/com/intellij/spellchecker/quickfixes/RenameTo.java b/plugins/spellchecker/src/com/intellij/spellchecker/quickfixes/RenameTo.java index 407a4cf0ccdc..2bf1a9205d96 100644 --- a/plugins/spellchecker/src/com/intellij/spellchecker/quickfixes/RenameTo.java +++ b/plugins/spellchecker/src/com/intellij/spellchecker/quickfixes/RenameTo.java @@ -27,7 +27,7 @@ import com.intellij.openapi.fileEditor.impl.text.TextEditorPsiDataProvider; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.refactoring.actions.RenameElementAction; import com.intellij.refactoring.rename.NameSuggestionProvider; import com.intellij.refactoring.rename.RenameHandlerRegistry; @@ -86,7 +86,7 @@ public class RenameTo extends ShowSuggestions implements SpellCheckerQuickFix { HashMap map = new HashMap(); PsiElement psiElement = descriptor.getPsiElement(); PsiFile containingFile = psiElement.getContainingFile(); - Editor editor = InjectedLanguageFacadeImpl.openEditorFor(containingFile, project); + Editor editor = InjectedLanguageUtil.openEditorFor(containingFile, project); if (editor == null) { return; } diff --git a/plugins/spellchecker/src/com/intellij/spellchecker/tokenizer/TokenizerBase.java b/plugins/spellchecker/src/com/intellij/spellchecker/tokenizer/TokenizerBase.java index d9b83abbd6c8..5210dbe5e639 100644 --- a/plugins/spellchecker/src/com/intellij/spellchecker/tokenizer/TokenizerBase.java +++ b/plugins/spellchecker/src/com/intellij/spellchecker/tokenizer/TokenizerBase.java @@ -17,7 +17,7 @@ package com.intellij.spellchecker.tokenizer; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiLanguageInjectionHost; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.spellchecker.inspections.Splitter; import org.jetbrains.annotations.NotNull; @@ -37,7 +37,7 @@ public class TokenizerBase extends Tokenizer { @Override public void tokenize(@NotNull T element, TokenConsumer consumer) { - if (element instanceof PsiLanguageInjectionHost && InjectedLanguageFacadeImpl.hasInjections((PsiLanguageInjectionHost)element)) { + if (element instanceof PsiLanguageInjectionHost && InjectedLanguageUtil.hasInjections((PsiLanguageInjectionHost)element)) { return; } consumer.consumeToken(element, mySplitter); diff --git a/plugins/spellchecker/src/com/intellij/spellchecker/tokenizer/XmlTextTokenizer.java b/plugins/spellchecker/src/com/intellij/spellchecker/tokenizer/XmlTextTokenizer.java index 3864f8e04691..485e867cb929 100644 --- a/plugins/spellchecker/src/com/intellij/spellchecker/tokenizer/XmlTextTokenizer.java +++ b/plugins/spellchecker/src/com/intellij/spellchecker/tokenizer/XmlTextTokenizer.java @@ -18,7 +18,7 @@ package com.intellij.spellchecker.tokenizer; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.TextRange; import com.intellij.psi.PsiElement; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.xml.XmlText; import com.intellij.psi.xml.XmlToken; import com.intellij.psi.xml.XmlTokenType; @@ -30,7 +30,7 @@ import java.util.List; public class XmlTextTokenizer extends Tokenizer { @Override public void tokenize(@NotNull XmlText element, TokenConsumer consumer) { - List> list = InjectedLanguageFacadeImpl.getInstance().getInjectedPsiFiles(element); + List> list = InjectedLanguageUtil.getInstance().getInjectedPsiFiles(element); if (list != null && list.size() > 0) return; final PsiElement[] children = element.getChildren(); for (PsiElement child : children) { diff --git a/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/psi/impl/XPathElementImpl.java b/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/psi/impl/XPathElementImpl.java index b4ffb6a8298d..728bbee7c3d3 100644 --- a/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/psi/impl/XPathElementImpl.java +++ b/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/psi/impl/XPathElementImpl.java @@ -21,7 +21,7 @@ import com.intellij.lang.injection.InjectedLanguageManager; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiElementVisitor; import com.intellij.psi.impl.PsiTreeDebugBuilder; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.util.IncorrectOperationException; import org.intellij.lang.xpath.XPath2ElementTypes; import org.intellij.lang.xpath.XPathElementTypes; @@ -141,7 +141,7 @@ public class XPathElementImpl extends ASTWrapperPsiElement implements XPathEleme } public final String getUnescapedText() { - if (InjectedLanguageFacadeImpl.isInInjectedLanguagePrefixSuffix(this)) { + if (InjectedLanguageUtil.isInInjectedLanguagePrefixSuffix(this)) { // do not attempt to decode text if PsiElement is part of prefix/suffix return getText(); } diff --git a/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/xslt/XsltSupport.java b/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/xslt/XsltSupport.java index a73a30a3e741..76887f89f3eb 100644 --- a/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/xslt/XsltSupport.java +++ b/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/xslt/XsltSupport.java @@ -22,7 +22,7 @@ import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiLanguageInjectionHost; import com.intellij.psi.impl.PsiFileEx; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.util.*; import com.intellij.psi.xml.*; import com.intellij.ui.LayeredIcon; @@ -88,7 +88,7 @@ public class XsltSupport { final XmlAttributeValue value = attribute.getValueElement(); if (value != null) { final List files = new SmartList(); - InjectedLanguageFacadeImpl.enumerate(value, new PsiLanguageInjectionHost.InjectedPsiVisitor() { + InjectedLanguageUtil.enumerate(value, new PsiLanguageInjectionHost.InjectedPsiVisitor() { public void visit(@NotNull PsiFile injectedPsi, @NotNull List places) { if (injectedPsi instanceof XPathFile) { files.add(injectedPsi); diff --git a/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/xslt/util/XsltCodeInsightUtil.java b/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/xslt/util/XsltCodeInsightUtil.java index 65baf53f6eae..99dd59d7acd9 100644 --- a/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/xslt/util/XsltCodeInsightUtil.java +++ b/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/xslt/util/XsltCodeInsightUtil.java @@ -23,7 +23,7 @@ import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiLanguageInjectionHost; import com.intellij.psi.PsiRecursiveElementVisitor; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.search.PsiElementProcessor; import com.intellij.psi.util.PsiElementFilter; import com.intellij.psi.util.PsiTreeUtil; @@ -125,7 +125,7 @@ public class XsltCodeInsightUtil { public static TextRange getRangeInsideHostingFile(XPathElement expr) { final PsiLanguageInjectionHost host = PsiTreeUtil.getContextOfType(expr, PsiLanguageInjectionHost.class, true); assert host != null; - final List> psi = InjectedLanguageFacadeImpl.getInstance().getInjectedPsiFiles(host); + final List> psi = InjectedLanguageUtil.getInstance().getInjectedPsiFiles(host); assert psi != null; for (Pair pair : psi) { if (PsiTreeUtil.isAncestor(pair.first, expr, false)) { @@ -140,7 +140,7 @@ public class XsltCodeInsightUtil { public static TextRange getRangeInsideHost(XPathElement expr) { final PsiLanguageInjectionHost host = PsiTreeUtil.getContextOfType(expr, PsiLanguageInjectionHost.class, true); assert host != null; - final List> psi = InjectedLanguageFacadeImpl.getInstance().getInjectedPsiFiles(host); + final List> psi = InjectedLanguageUtil.getInstance().getInjectedPsiFiles(host); assert psi != null; for (Pair pair : psi) { if (PsiTreeUtil.isAncestor(pair.first, expr, false)) { diff --git a/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/xslt/validation/XsltXmlAnnotator.java b/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/xslt/validation/XsltXmlAnnotator.java index 236012e7e968..444410b9d045 100644 --- a/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/xslt/validation/XsltXmlAnnotator.java +++ b/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/xslt/validation/XsltXmlAnnotator.java @@ -21,7 +21,7 @@ import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiLanguageInjectionHost; import com.intellij.psi.XmlElementVisitor; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.xml.XmlAttribute; import com.intellij.psi.xml.XmlAttributeValue; import org.intellij.lang.xpath.XPathFile; @@ -49,7 +49,7 @@ public class XsltXmlAnnotator extends XmlElementVisitor implements Annotator { if (s == null || s.length() == 0) { final PsiElement parent = value.getParent(); if (parent instanceof XmlAttribute && XsltSupport.isXPathAttribute((XmlAttribute)parent)) { - InjectedLanguageFacadeImpl.enumerate(value, new PsiLanguageInjectionHost.InjectedPsiVisitor() { + InjectedLanguageUtil.enumerate(value, new PsiLanguageInjectionHost.InjectedPsiVisitor() { @Override public void visit(@NotNull PsiFile injectedPsi, @NotNull List places) { if (injectedPsi instanceof XPathFile) { diff --git a/plugins/xpath/xpath-lang/test/org/intellij/lang/xpath/xslt/Xslt2RefactoringTest.java b/plugins/xpath/xpath-lang/test/org/intellij/lang/xpath/xslt/Xslt2RefactoringTest.java index 2d65472b76d5..4f27becf8d88 100644 --- a/plugins/xpath/xpath-lang/test/org/intellij/lang/xpath/xslt/Xslt2RefactoringTest.java +++ b/plugins/xpath/xpath-lang/test/org/intellij/lang/xpath/xslt/Xslt2RefactoringTest.java @@ -22,7 +22,7 @@ import com.intellij.psi.PsiFile; import com.intellij.psi.codeStyle.CodeStyleSettings; import com.intellij.psi.codeStyle.CodeStyleSettingsManager; import com.intellij.psi.formatter.xml.XmlCodeStyleSettings; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import org.intellij.lang.xpath.TestBase; import org.intellij.lang.xpath.psi.XPathExpression; import org.intellij.lang.xpath.xslt.refactoring.RefactoringOptions; @@ -77,8 +77,8 @@ public class Xslt2RefactoringTest extends TestBase { } }; - final PsiFile file = InjectedLanguageFacadeImpl.findInjectedPsiNoCommit(myFixture.getFile(), editor.getCaretModel().getOffset()); - final Editor editorWindow = InjectedLanguageFacadeImpl.getInjectedEditorForInjectedFile(editor, file); + final PsiFile file = InjectedLanguageUtil.findInjectedPsiNoCommit(myFixture.getFile(), editor.getCaretModel().getOffset()); + final Editor editorWindow = InjectedLanguageUtil.getInjectedEditorForInjectedFile(editor, file); assertTrue(editorWindow instanceof EditorWindow); action.invoke(myFixture.getProject(), editorWindow, file, null); diff --git a/xml/dom-impl/src/com/intellij/util/xml/impl/GenericValueReferenceProvider.java b/xml/dom-impl/src/com/intellij/util/xml/impl/GenericValueReferenceProvider.java index 8d53fae183a3..4040ade8572a 100644 --- a/xml/dom-impl/src/com/intellij/util/xml/impl/GenericValueReferenceProvider.java +++ b/xml/dom-impl/src/com/intellij/util/xml/impl/GenericValueReferenceProvider.java @@ -19,7 +19,7 @@ import com.intellij.javaee.web.PsiReferenceConverter; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.psi.*; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.xml.*; import com.intellij.util.ProcessingContext; import com.intellij.util.ReflectionCache; @@ -61,10 +61,10 @@ public class GenericValueReferenceProvider extends PsiReferenceProvider { if (psiElement instanceof XmlTag) { for (XmlText text : ((XmlTag)psiElement).getValue().getTextElements()) { - if (InjectedLanguageFacadeImpl.hasInjections((PsiLanguageInjectionHost)text)) return PsiReference.EMPTY_ARRAY; + if (InjectedLanguageUtil.hasInjections((PsiLanguageInjectionHost)text)) return PsiReference.EMPTY_ARRAY; } } else { - if (InjectedLanguageFacadeImpl.hasInjections((PsiLanguageInjectionHost)psiElement)) return PsiReference.EMPTY_ARRAY; + if (InjectedLanguageUtil.hasInjections((PsiLanguageInjectionHost)psiElement)) return PsiReference.EMPTY_ARRAY; } final GenericDomValue domValue = (GenericDomValue)domElement; diff --git a/xml/dom-openapi/src/com/intellij/util/xml/AbstractDomDeclarationSearcher.java b/xml/dom-openapi/src/com/intellij/util/xml/AbstractDomDeclarationSearcher.java index ed613ed5d3c0..f11d5ada84e9 100644 --- a/xml/dom-openapi/src/com/intellij/util/xml/AbstractDomDeclarationSearcher.java +++ b/xml/dom-openapi/src/com/intellij/util/xml/AbstractDomDeclarationSearcher.java @@ -19,7 +19,7 @@ import com.intellij.pom.PomDeclarationSearcher; import com.intellij.pom.PomTarget; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiLanguageInjectionHost; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.tree.IElementType; import com.intellij.psi.xml.*; import com.intellij.util.Consumer; @@ -42,7 +42,7 @@ public abstract class AbstractDomDeclarationSearcher extends PomDeclarationSearc if (tokenType == XmlTokenType.XML_DATA_CHARACTERS && psiElement.getParent() instanceof XmlText && psiElement.getParent().getParent() instanceof XmlTag) { final XmlTag tag = (XmlTag)psiElement.getParent().getParent(); for (XmlText text : tag.getValue().getTextElements()) { - if (InjectedLanguageFacadeImpl.hasInjections((PsiLanguageInjectionHost)text)) { + if (InjectedLanguageUtil.hasInjections((PsiLanguageInjectionHost)text)) { return; } } @@ -50,7 +50,7 @@ public abstract class AbstractDomDeclarationSearcher extends PomDeclarationSearc nameElement = domManager.getDomElement(tag); } else if (tokenType == XmlTokenType.XML_ATTRIBUTE_VALUE_TOKEN && psiElement.getParent() instanceof XmlAttributeValue && psiElement.getParent().getParent() instanceof XmlAttribute) { final PsiElement attributeValue = psiElement.getParent(); - if (InjectedLanguageFacadeImpl.hasInjections((PsiLanguageInjectionHost)attributeValue)) { + if (InjectedLanguageUtil.hasInjections((PsiLanguageInjectionHost)attributeValue)) { return; } nameElement = domManager.getDomElement((XmlAttribute)attributeValue.getParent()); diff --git a/xml/impl/src/com/intellij/codeInsight/editorActions/XmlAutoPopupHandler.java b/xml/impl/src/com/intellij/codeInsight/editorActions/XmlAutoPopupHandler.java index 9995f3202056..97cbbcef64c8 100644 --- a/xml/impl/src/com/intellij/codeInsight/editorActions/XmlAutoPopupHandler.java +++ b/xml/impl/src/com/intellij/codeInsight/editorActions/XmlAutoPopupHandler.java @@ -26,7 +26,7 @@ import com.intellij.psi.FileViewProvider; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiWhiteSpace; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.templateLanguages.TemplateLanguageFileViewProvider; import com.intellij.psi.xml.XmlTag; import com.intellij.xml.util.XmlUtil; @@ -61,7 +61,7 @@ public class XmlAutoPopupHandler extends TypedHandlerDelegate { public boolean value(PsiFile file) { int offset = editor.getCaretModel().getOffset(); - PsiElement lastElement = InjectedLanguageFacadeImpl.findElementAtNoCommit(file, offset - 1); + PsiElement lastElement = InjectedLanguageUtil.findElementAtNoCommit(file, offset - 1); if (lastElement instanceof PsiFile) { //the very end of an injected file lastElement = file.findElementAt(offset - 1); } diff --git a/xml/impl/src/com/intellij/codeInsight/editorActions/moveUpDown/XmlMover.java b/xml/impl/src/com/intellij/codeInsight/editorActions/moveUpDown/XmlMover.java index c3cc4d979ee1..1033e06fc727 100644 --- a/xml/impl/src/com/intellij/codeInsight/editorActions/moveUpDown/XmlMover.java +++ b/xml/impl/src/com/intellij/codeInsight/editorActions/moveUpDown/XmlMover.java @@ -20,7 +20,7 @@ import com.intellij.openapi.editor.Editor; import com.intellij.openapi.util.TextRange; import com.intellij.psi.*; import com.intellij.psi.html.HtmlTag; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.xml.XmlAttribute; import com.intellij.psi.xml.XmlFile; @@ -56,8 +56,8 @@ class XmlMover extends LineMover { final XmlText text2 = PsiTreeUtil.getParentOfType(movedEndElement, XmlText.class); // Let's do not care about injections for this mover - if ( ( text != null && InjectedLanguageFacadeImpl.getInstance().getInjectedPsiFiles(text) != null) || - ( text2 != null && InjectedLanguageFacadeImpl.getInstance().getInjectedPsiFiles(text2) != null)) { + if ( ( text != null && InjectedLanguageUtil.getInstance().getInjectedPsiFiles(text) != null) || + ( text2 != null && InjectedLanguageUtil.getInstance().getInjectedPsiFiles(text2) != null)) { return false; } diff --git a/xml/impl/src/com/intellij/psi/impl/source/xml/XmlTextImpl.java b/xml/impl/src/com/intellij/psi/impl/source/xml/XmlTextImpl.java index 7adad3fb99e4..ecbda90ff515 100644 --- a/xml/impl/src/com/intellij/psi/impl/source/xml/XmlTextImpl.java +++ b/xml/impl/src/com/intellij/psi/impl/source/xml/XmlTextImpl.java @@ -37,7 +37,7 @@ import com.intellij.psi.impl.source.codeStyle.CodeEditUtil; import com.intellij.psi.impl.source.tree.FileElement; import com.intellij.psi.impl.source.tree.LeafElement; import com.intellij.psi.impl.source.tree.TreeElement; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.impl.source.tree.injected.XmlTextLiteralEscaper; import com.intellij.psi.impl.source.xml.behavior.DefaultXmlPsiPolicy; import com.intellij.psi.tree.IElementType; @@ -365,7 +365,7 @@ public class XmlTextImpl extends XmlElementImpl implements XmlText, PsiLanguageI @Nullable public List> getInjectedPsi() { - return InjectedLanguageFacadeImpl.getInstance().getInjectedPsiFiles(this); + return InjectedLanguageUtil.getInstance().getInjectedPsiFiles(this); } public TextRange getCDATAInterior() { @@ -520,6 +520,6 @@ public class XmlTextImpl extends XmlElementImpl implements XmlText, PsiLanguageI return new XmlTextLiteralEscaper(this); } public void processInjectedPsi(@NotNull InjectedPsiVisitor visitor) { - InjectedLanguageFacadeImpl.enumerate(this, visitor); + InjectedLanguageUtil.enumerate(this, visitor); } } diff --git a/xml/impl/src/com/intellij/xml/util/HtmlUtil.java b/xml/impl/src/com/intellij/xml/util/HtmlUtil.java index 1e8fb921b9c9..27207f7d8178 100644 --- a/xml/impl/src/com/intellij/xml/util/HtmlUtil.java +++ b/xml/impl/src/com/intellij/xml/util/HtmlUtil.java @@ -38,7 +38,7 @@ import com.intellij.psi.html.HtmlTag; import com.intellij.psi.impl.source.html.HtmlDocumentImpl; import com.intellij.psi.impl.source.parsing.xml.HtmlBuilderDriver; import com.intellij.psi.impl.source.parsing.xml.XmlBuilder; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageFacadeImpl; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.impl.source.xml.XmlAttributeImpl; import com.intellij.psi.templateLanguages.TemplateLanguageFileViewProvider; import com.intellij.psi.templateLanguages.TemplateLanguageUtil; @@ -471,7 +471,7 @@ public class HtmlUtil { for (final XmlText text : texts) { for (PsiElement _element : text.getChildren()) { if (_element instanceof PsiLanguageInjectionHost) { - InjectedLanguageFacadeImpl.enumerate(_element, injectedPsiVisitor); + InjectedLanguageUtil.enumerate(_element, injectedPsiVisitor); } } } @@ -481,7 +481,7 @@ public class HtmlUtil { if (comments != null && comments.length > 0) { for (final XmlComment comment : comments) { if (comment instanceof PsiLanguageInjectionHost) { - InjectedLanguageFacadeImpl.enumerate(comment, injectedPsiVisitor); + InjectedLanguageUtil.enumerate(comment, injectedPsiVisitor); } } } From ec515bd01a9ee34f08198e44ce2bd453f0832312 Mon Sep 17 00:00:00 2001 From: "Denis.Zhdanov" Date: Tue, 26 Jun 2012 16:57:01 +0400 Subject: [PATCH 10/14] n/a TDDE: TraceableDisposable.throwDisposalError 118.699 118.699 1 --- .../intellij/openapi/roots/impl/ContentFolderBaseImpl.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ContentFolderBaseImpl.java b/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ContentFolderBaseImpl.java index 07e54aab89dc..7c2664f91de5 100644 --- a/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ContentFolderBaseImpl.java +++ b/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ContentFolderBaseImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2011 JetBrains s.r.o. + * Copyright 2000-2012 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -73,6 +73,9 @@ public abstract class ContentFolderBaseImpl extends RootModelComponentBase imple @Override public VirtualFile getFile() { + if (!myFilePointer.isValid()) { + return null; + } final VirtualFile file = myFilePointer.getFile(); return file == null || !file.isDirectory() ? null : file; } From c9712f929116d558e3634512f8201dd5500dcc40 Mon Sep 17 00:00:00 2001 From: "Denis.Zhdanov" Date: Wed, 27 Jun 2012 15:45:23 +0400 Subject: [PATCH 11/14] Correct logging (no point in writing 'file watched failed to startup) when it's explicitly disabled (e.g. ConsoleApplication) --- .../intellij/openapi/vfs/impl/local/FileWatcher.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/vfs/impl/local/FileWatcher.java b/platform/platform-impl/src/com/intellij/openapi/vfs/impl/local/FileWatcher.java index 139541d85171..3ff4309599fb 100644 --- a/platform/platform-impl/src/com/intellij/openapi/vfs/impl/local/FileWatcher.java +++ b/platform/platform-impl/src/com/intellij/openapi/vfs/impl/local/FileWatcher.java @@ -93,9 +93,10 @@ public class FileWatcher { private FileWatcher() { // to avoid deadlock (PY-1215), initialize ManagingFS reference in main thread, not in FileWatcher thread myManagingFS = ManagingFS.getInstance(); - + + final boolean explicitlyDisabled = Boolean.parseBoolean(System.getProperty(PROPERTY_WATCHER_DISABLED)); try { - if (!"true".equals(System.getProperty(PROPERTY_WATCHER_DISABLED))) { + if (!explicitlyDisabled) { startupProcess(false); } } @@ -117,8 +118,10 @@ public class FileWatcher { }, "FileWatcher shutdown hook")); } else { - LOG.info("Native file watcher failed to startup."); - notifyOnFailure("File watcher failed to startup", null); + String message = explicitlyDisabled ? String.format("File watcher is disabled (%s property is set)", PROPERTY_WATCHER_DISABLED) + : "File watcher failed to startup"; + LOG.info(message); + notifyOnFailure(message, null); } } From cab8f0a291e21b473883c1eb6f09504ad0371eea Mon Sep 17 00:00:00 2001 From: "Denis.Zhdanov" Date: Wed, 27 Jun 2012 15:46:32 +0400 Subject: [PATCH 12/14] IDEA-87315 The freemarker code style should respect the XML identation setting instead of forcing 4 space identation 1. Introduced an API for fine-grained block code style settings setup (BlockEx); 2. Corresponding support is added to the formatter core; 3. Template languages block use underlying language code style settings by default; --- .../formatting/AbstractBlockWrapper.java | 48 ++++-- .../src/com/intellij/formatting/BlockEx.java | 32 ++++ .../intellij/formatting/FormatProcessor.java | 141 +++++++++++------- .../formatting/InitialInfoBuilder.java | 4 +- .../DataLanguageBlockWrapper.java | 26 +++- 5 files changed, 179 insertions(+), 72 deletions(-) create mode 100644 platform/lang-impl/src/com/intellij/formatting/BlockEx.java diff --git a/platform/lang-impl/src/com/intellij/formatting/AbstractBlockWrapper.java b/platform/lang-impl/src/com/intellij/formatting/AbstractBlockWrapper.java index 77908a96df12..aff90ee6e4fc 100644 --- a/platform/lang-impl/src/com/intellij/formatting/AbstractBlockWrapper.java +++ b/platform/lang-impl/src/com/intellij/formatting/AbstractBlockWrapper.java @@ -16,8 +16,10 @@ package com.intellij.formatting; +import com.intellij.lang.Language; import com.intellij.openapi.util.TextRange; import com.intellij.psi.codeStyle.CommonCodeStyleSettings; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; @@ -36,31 +38,45 @@ public abstract class AbstractBlockWrapper { Indent.Type.NORMAL, Indent.Type.CONTINUATION, Indent.Type.CONTINUATION_WITHOUT_FIRST )); - protected WhiteSpace myWhiteSpace; + protected WhiteSpace myWhiteSpace; protected CompositeBlockWrapper myParent; - protected int myStart; - protected int myEnd; - protected int myFlags; + protected int myStart; + protected int myEnd; + protected int myFlags; static int CAN_USE_FIRST_CHILD_INDENT_AS_BLOCK_INDENT = 1; - static int INCOMPLETE = 2; + static int INCOMPLETE = 2; + + private final Language myLanguage; protected IndentInfo myIndentFromParent = null; - private IndentImpl myIndent = null; + private IndentImpl myIndent = null; private AlignmentImpl myAlignment; - private WrapImpl myWrap; + private WrapImpl myWrap; - public AbstractBlockWrapper(final Block block, final WhiteSpace whiteSpace, final CompositeBlockWrapper parent, final TextRange textRange) { + public AbstractBlockWrapper(final Block block, + final WhiteSpace whiteSpace, + final CompositeBlockWrapper parent, + final TextRange textRange) { myWhiteSpace = whiteSpace; myParent = parent; myStart = textRange.getStartOffset(); myEnd = textRange.getEndOffset(); - myFlags = CAN_USE_FIRST_CHILD_INDENT_AS_BLOCK_INDENT | (block.isIncomplete() ? INCOMPLETE:0); + myFlags = CAN_USE_FIRST_CHILD_INDENT_AS_BLOCK_INDENT | (block.isIncomplete() ? INCOMPLETE : 0); myAlignment = (AlignmentImpl)block.getAlignment(); myWrap = (WrapImpl)block.getWrap(); + myLanguage = deriveLanguage(block); } + @Nullable + private static Language deriveLanguage(@NotNull Block block) { + if (block instanceof BlockEx) { + return ((BlockEx)block).getLanguage(); + } + return null; + } + public WhiteSpace getWhiteSpace() { return myWhiteSpace; } @@ -89,6 +105,20 @@ public abstract class AbstractBlockWrapper { return myEnd - myStart; } + /** + * There is a possible case that particular block's language differs from the language implied by the file type. We need to + * distinguish such a situation because, for example in case of indent calculation (code style settings for different languages + * may have different indent values). + *

+ * This method allows to retrieve the language associated with the current block (if provided). + * + * @return current block's language (if provided) + */ + @Nullable + public Language getLanguage() { + return myLanguage; + } + /** * Applies given start offset to the current block wrapper and recursively calls this method on parent block wrapper * if it starts at the same place as the current one. diff --git a/platform/lang-impl/src/com/intellij/formatting/BlockEx.java b/platform/lang-impl/src/com/intellij/formatting/BlockEx.java new file mode 100644 index 000000000000..9a5825dac249 --- /dev/null +++ b/platform/lang-impl/src/com/intellij/formatting/BlockEx.java @@ -0,0 +1,32 @@ +/* + * Copyright 2000-2012 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.formatting; + +import com.intellij.lang.Language; +import org.jetbrains.annotations.Nullable; + +/** + * @author Denis Zhdanov + * @since 6/26/12 11:22 AM + */ +public interface BlockEx extends Block { + + /** + * @return current block's language (is used to decide on what code style settings should be used for it) + */ + @Nullable + Language getLanguage(); +} diff --git a/platform/lang-impl/src/com/intellij/formatting/FormatProcessor.java b/platform/lang-impl/src/com/intellij/formatting/FormatProcessor.java index baf5f788838c..91d8a8988a87 100644 --- a/platform/lang-impl/src/com/intellij/formatting/FormatProcessor.java +++ b/platform/lang-impl/src/com/intellij/formatting/FormatProcessor.java @@ -16,6 +16,7 @@ package com.intellij.formatting; +import com.intellij.lang.Language; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.TextChange; @@ -42,7 +43,7 @@ class FormatProcessor { ALIGNMENT_PROCESSORS.put(Alignment.Anchor.LEFT, new LeftEdgeAlignmentProcessor()); ALIGNMENT_PROCESSORS.put(Alignment.Anchor.RIGHT, new RightEdgeAlignmentProcessor()); } - + /** * There is a possible case that formatting introduced big number of changes to the underlying document. That number may be * big enough for that their subsequent appliance is much slower than direct replacing of the whole document text. @@ -50,7 +51,7 @@ class FormatProcessor { * Current constant holds minimum number of changes that should trigger such 'replace whole text' optimization. */ private static final int BULK_REPLACE_OPTIMIZATION_CRITERIA = 3000; - + private static final Logger LOG = Logger.getInstance("#com.intellij.formatting.FormatProcessor"); private LeafBlockWrapper myCurrentBlock; @@ -59,9 +60,9 @@ class FormatProcessor { private CompositeBlockWrapper myRootBlockWrapper; private TIntObjectHashMap myTextRangeToWrapper; - private final CommonCodeStyleSettings.IndentOptions myIndentOption; - private final CodeStyleSettings mySettings; - private final Document myDocument; + private final CommonCodeStyleSettings.IndentOptions myDefaultIndentOption; + private final CodeStyleSettings mySettings; + private final Document myDocument; /** * Remembers mappings between backward-shifted aligned block and blocks that cause that shift in order to detect @@ -82,7 +83,7 @@ class FormatProcessor { private final Map> myBackwardShiftedAlignedBlocks = new HashMap>(); - private final Map> myAlignmentMappings + private final Map> myAlignmentMappings = new HashMap>(); /** @@ -140,11 +141,11 @@ class FormatProcessor { private final HashSet myAlignAgain = new HashSet(); @NotNull private final FormattingProgressCallback myProgressCallback; - + private WhiteSpace myLastWhiteSpace; private boolean myDisposed; private CommonCodeStyleSettings.IndentOptions myJavaIndentOptions; - + @NotNull private State myCurrentState; @@ -164,10 +165,10 @@ class FormatProcessor { CommonCodeStyleSettings.IndentOptions indentOptions, @Nullable FormatTextRanges affectedRanges, int interestingOffset, - @NotNull FormattingProgressCallback progressCallback) + @NotNull FormattingProgressCallback progressCallback) { myProgressCallback = progressCallback; - myIndentOption = indentOptions; + myDefaultIndentOption = indentOptions; mySettings = settings; myDocument = docModel.getDocument(); myCurrentState = new WrapBlocksState(rootBlock, docModel, affectedRanges, interestingOffset); @@ -214,7 +215,7 @@ class FormatProcessor { * from EDT we have no chance of performing any other actions from EDT simultaneously (e.g. we may want to show progress bar * that reflects current formatting state but the progress bar can' bet updated if formatting is performed during a single long * method call). So, we can interleave formatting iterations with GUI state updates. - * + * * @param model target formatting model * @param sequentially flag that indicates what kind of processing should be used */ @@ -232,9 +233,9 @@ class FormatProcessor { /** * Asks current processor to perform processing iteration - * + * * @return true if the processing is finished; false otherwise - * @see #format(FormattingModel, boolean) + * @see #format(FormattingModel, boolean) */ public boolean iteration() { if (myCurrentState.isDone()) { @@ -250,19 +251,19 @@ class FormatProcessor { public void stopSequentialProcessing() { myCurrentState.stop(); } - + public void formatWithoutRealModifications() { formatWithoutRealModifications(false); } - + @SuppressWarnings({"WhileLoopSpinsOnField"}) public void formatWithoutRealModifications(boolean sequentially) { myCurrentState.setNext(new AdjustWhiteSpacesState()); - + if (sequentially) { return; } - + doIterationsSynchronously(FormattingStateId.PROCESSING_BLOCKS); } @@ -279,11 +280,11 @@ class FormatProcessor { public void performModifications(FormattingModel model) { performModifications(model, false); } - + public void performModifications(FormattingModel model, boolean sequentially) { assert !myDisposed; myCurrentState.setNext(new ApplyChangesState(model)); - + if (sequentially) { return; } @@ -292,9 +293,9 @@ class FormatProcessor { } /** - * Perform iterations against the {@link #myCurrentState current state} until it's {@link FormattingStateId type} + * Perform iterations against the {@link #myCurrentState current state} until it's {@link FormattingStateId type} * is {@link FormattingStateId#getPreviousStates() less} or equal to the given state. - * + * * @param state target state to process */ private void doIterationsSynchronously(@NotNull FormattingStateId state) { @@ -304,7 +305,7 @@ class FormatProcessor { myCurrentState.iteration(); } } - + public void setJavaIndentOptions(final CommonCodeStyleSettings.IndentOptions javaIndentOptions) { myJavaIndentOptions = javaIndentOptions; } @@ -312,7 +313,7 @@ class FormatProcessor { /** * Decides whether applying formatter changes should be applied incrementally one-by-one or merge result should be * constructed locally and the whole document text should be replaced. Performs such single bulk change if necessary. - * + * * @param blocksToModify changes introduced by formatter * @param model current formatting model * @param indentOption indent options to use @@ -320,8 +321,8 @@ class FormatProcessor { * false otherwise */ @SuppressWarnings({"deprecation"}) - private static boolean applyChangesAtBulkMode(final List blocksToModify, final FormattingModel model, - CommonCodeStyleSettings.IndentOptions indentOption) + private boolean applyChangesAtBulkMode(final List blocksToModify, final FormattingModel model, + @NotNull CommonCodeStyleSettings.IndentOptions indentOption) { FormattingDocumentModel documentModel = model.getDocumentModel(); Document document = documentModel.getDocument(); @@ -335,7 +336,8 @@ class FormatProcessor { for (LeafBlockWrapper block : blocksToModify) { WhiteSpace whiteSpace = block.getWhiteSpace(); CharSequence newWs = documentModel.adjustWhiteSpaceIfNecessary( - whiteSpace.generateWhiteSpace(indentOption), whiteSpace.getStartOffset(), whiteSpace.getEndOffset(), false + whiteSpace.generateWhiteSpace(getIndentOptionsToUse(block, indentOption)), whiteSpace.getStartOffset(), + whiteSpace.getEndOffset(), false ); if (changes.size() > 10000) { CharSequence mergeResult = BulkChangesMerger.INSTANCE.mergeToCharSequence(document.getChars(), document.getTextLength(), changes); @@ -361,7 +363,7 @@ class FormatProcessor { } blocks.clear(); } - + @Nullable private static DocumentEx getAffectedDocument(final FormattingModel model) { if (model instanceof DocumentBasedFormattingModel) { @@ -408,7 +410,7 @@ class FormatProcessor { for (LeafBlockWrapper block = myFirstTokenBlock; block != null; block = block.getNextBlock()) { final WhiteSpace whiteSpace = block.getWhiteSpace(); if (!whiteSpace.isReadOnly()) { - final String newWhiteSpace = whiteSpace.generateWhiteSpace(myIndentOption); + final String newWhiteSpace = whiteSpace.generateWhiteSpace(getIndentOptionsToUse(block, myDefaultIndentOption)); if (!whiteSpace.equalsToString(newWhiteSpace)) { blocksToModify.add(block); } @@ -417,6 +419,22 @@ class FormatProcessor { return blocksToModify; } + @NotNull + private CommonCodeStyleSettings.IndentOptions getIndentOptionsToUse(@NotNull AbstractBlockWrapper block, + @NotNull CommonCodeStyleSettings.IndentOptions fallbackIndentOptions) + { + final Language language = block.getLanguage(); + if (language == null) { + return fallbackIndentOptions; + } + final CommonCodeStyleSettings commonSettings = mySettings.getCommonSettings(language); + if (commonSettings == null) { + return fallbackIndentOptions; + } + final CommonCodeStyleSettings.IndentOptions result = commonSettings.getIndentOptions(); + return result == null ? fallbackIndentOptions : result; + } + private static TextRange shiftRange(final TextRange textRange, final int shift) { return new TextRange(textRange.getStartOffset() + shift, textRange.getEndOffset() + shift); } @@ -593,8 +611,8 @@ class FormatProcessor { private boolean isCandidateToBeWrapped(final WrapImpl wrap) { return isSuitableInTheCurrentPosition(wrap) && - (wrap.getType() == WrapImpl.Type.WRAP_AS_NEEDED || wrap.getType() == WrapImpl.Type.CHOP_IF_NEEDED) && - !myCurrentBlock.getWhiteSpace().isReadOnly(); + (wrap.getType() == WrapImpl.Type.WRAP_AS_NEEDED || wrap.getType() == WrapImpl.Type.CHOP_IF_NEEDED) && + !myCurrentBlock.getWhiteSpace().isReadOnly(); } private void onCurrentLineChanged() { @@ -627,9 +645,10 @@ class FormatProcessor { LOG.error(String.format("Can't find alignment processor for alignment anchor %s", alignment.getAnchor())); return true; } - + BlockAlignmentProcessor.Context context = new BlockAlignmentProcessor.Context( - myDocument, alignment, myCurrentBlock, myAlignmentMappings, myBackwardShiftedAlignedBlocks, myIndentOption + myDocument, alignment, myCurrentBlock, myAlignmentMappings, myBackwardShiftedAlignedBlocks, + getIndentOptionsToUse(myCurrentBlock, myDefaultIndentOption) ); BlockAlignmentProcessor.Result result = alignmentProcessor.applyAlignment(context); final LeafBlockWrapper offsetResponsibleBlock = alignment.getOffsetRespBlockBefore(myCurrentBlock); @@ -704,7 +723,7 @@ class FormatProcessor { } private void adjustSpacingByIndentOffset() { - IndentData offset = myCurrentBlock.calculateOffset(myIndentOption); + IndentData offset = myCurrentBlock.calculateOffset(getIndentOptionsToUse(myCurrentBlock, myDefaultIndentOption)); myCurrentBlock.getWhiteSpace().setSpaces(offset.getSpaces(), offset.getIndentSpaces()); } @@ -921,11 +940,11 @@ class FormatProcessor { ChildAttributesInfo info = getChildAttributesInfo(block, index, parent); if (info == null) { return new IndentInfo(0, 0, 0); - } + } return adjustLineIndent(info.parent, info.attributes, info.index); } - + @Nullable private static ChildAttributesInfo getChildAttributesInfo(@NotNull final Block block, final int index, @@ -972,7 +991,7 @@ class FormatProcessor { private IndentInfo adjustLineIndent(final AbstractBlockWrapper parent, final ChildAttributes childAttributes, final int index) { int alignOffset = getAlignOffsetBefore(childAttributes.getAlignment(), null); if (alignOffset == -1) { - return parent.calculateChildOffset(myIndentOption, childAttributes, index).createIndentInfo(); + return parent.calculateChildOffset(getIndentOptionsToUse(parent, myDefaultIndentOption), childAttributes, index).createIndentInfo(); } else { AbstractBlockWrapper indentedParentBlock = CoreFormatterUtil.getIndentedParentBlock(myCurrentBlock); @@ -1062,8 +1081,8 @@ class FormatProcessor { if (current.getEndOffset() <= offset) { while (!current.isIncomplete() && - current.getParent() != null && - current.getParent().getEndOffset() <= offset) { + current.getParent() != null && + current.getParent().getEndOffset() <= offset) { current = current.getParent(); } if (current.isIncomplete()) return current; @@ -1101,7 +1120,7 @@ class FormatProcessor { /** * There is a possible case that particular block is a composite block that contains number of nested composite blocks * that all target the same text range. This method allows to derive the most nested block that shares the same range (if any). - * + * * @param block block to check * @return the most nested block of the given one that shares the same text range if any; given block otherwise */ @@ -1110,7 +1129,7 @@ class FormatProcessor { if (!(block instanceof CompositeBlockWrapper)) { return block; } - + AbstractBlockWrapper result = block; AbstractBlockWrapper candidate = block; while (true) { @@ -1180,11 +1199,11 @@ class FormatProcessor { } } } - + private abstract class State { private final FormattingStateId myStateId; - + private State myNextState; private boolean myDone; @@ -1221,10 +1240,10 @@ class FormatProcessor { public void stop() { } - + protected abstract void doIteration(); protected abstract void prepare(); - + private void shiftStateIfNecessary() { if (isDone() && myNextState != null) { myCurrentState = myNextState; @@ -1233,7 +1252,7 @@ class FormatProcessor { } } } - + private class WrapBlocksState extends State { private final InitialInfoBuilder myWrapper; @@ -1247,7 +1266,7 @@ class FormatProcessor { super(FormattingStateId.WRAPPING_BLOCKS); myModel = model; myWrapper = InitialInfoBuilder.prepareToBuildBlocksSequentially( - root, model, affectedRanges, myIndentOption, interestingOffset, myProgressCallback + root, model, affectedRanges, myDefaultIndentOption, interestingOffset, myProgressCallback ); } @@ -1260,7 +1279,7 @@ class FormatProcessor { if (isDone()) { return; } - + setDone(myWrapper.iteration()); if (!isDone()) { return; @@ -1273,10 +1292,10 @@ class FormatProcessor { myCurrentBlock = myFirstTokenBlock; myTextRangeToWrapper = buildTextRangeToInfoMap(myFirstTokenBlock); myLastWhiteSpace = new WhiteSpace(getLastBlock().getEndOffset(), false); - myLastWhiteSpace.append(myModel.getTextLength(), myModel, myIndentOption); + myLastWhiteSpace.append(myModel.getTextLength(), myModel, myDefaultIndentOption); } } - + private class AdjustWhiteSpacesState extends State { AdjustWhiteSpacesState() { @@ -1294,11 +1313,11 @@ class FormatProcessor { if (blockToProcess != null) { myProgressCallback.afterProcessingBlock(blockToProcess); } - + if (myCurrentBlock != null) { return; } - + if (myAlignAgain.isEmpty()) { setDone(true); } @@ -1309,7 +1328,7 @@ class FormatProcessor { } } } - + private class ApplyChangesState extends State { private final FormattingModel myModel; @@ -1343,7 +1362,7 @@ class FormatProcessor { setDone(true); return; } - + //for GeneralCodeFormatterTest if (myJavaIndentOptions == null) { myJavaIndentOptions = mySettings.getIndentOptions(StdFileTypes.JAVA); @@ -1358,7 +1377,9 @@ class FormatProcessor { updatedDocument.setInBulkUpdate(true); myResetBulkUpdateState = true; } - if (blocksToModifyCount > BULK_REPLACE_OPTIMIZATION_CRITERIA && applyChangesAtBulkMode(myBlocksToModify, myModel, myIndentOption)) { + if (blocksToModifyCount > BULK_REPLACE_OPTIMIZATION_CRITERIA + && applyChangesAtBulkMode(myBlocksToModify, myModel, myDefaultIndentOption)) + { setDone(true); } } @@ -1367,7 +1388,11 @@ class FormatProcessor { protected void doIteration() { LeafBlockWrapper blockWrapper = myBlocksToModify.get(myIndex); myShift = replaceWhiteSpace( - myModel, blockWrapper, myShift, blockWrapper.getWhiteSpace().generateWhiteSpace(myIndentOption), myJavaIndentOptions + myModel, + blockWrapper, + myShift, + blockWrapper.getWhiteSpace().generateWhiteSpace(getIndentOptionsToUse(blockWrapper, myDefaultIndentOption)), + myJavaIndentOptions ); myProgressCallback.afterApplyingChange(blockWrapper); // block could be gc'd @@ -1375,7 +1400,7 @@ class FormatProcessor { blockWrapper.dispose(); myBlocksToModify.set(myIndex, null); myIndex++; - + if (myIndex >= myBlocksToModify.size()) { setDone(true); } @@ -1384,7 +1409,7 @@ class FormatProcessor { @Override protected void setDone(boolean done) { super.setDone(done); - + if (myResetBulkUpdateState) { DocumentEx document = getAffectedDocument(myModel); if (document != null) { @@ -1392,7 +1417,7 @@ class FormatProcessor { myResetBulkUpdateState = false; } } - + if (done) { myModel.commitChanges(); } diff --git a/platform/lang-impl/src/com/intellij/formatting/InitialInfoBuilder.java b/platform/lang-impl/src/com/intellij/formatting/InitialInfoBuilder.java index 1ee76f43d19a..7350201edbb8 100644 --- a/platform/lang-impl/src/com/intellij/formatting/InitialInfoBuilder.java +++ b/platform/lang-impl/src/com/intellij/formatting/InitialInfoBuilder.java @@ -126,8 +126,8 @@ class InitialInfoBuilder { @Nullable final CompositeBlockWrapper parent, @Nullable WrapImpl currentWrapParent, @Nullable final Block parentBlock, - boolean rootBlockIsRightBlock - ) { + boolean rootBlockIsRightBlock) + { final WrapImpl wrap = (WrapImpl)rootBlock.getWrap(); if (wrap != null) { wrap.registerParent(currentWrapParent); diff --git a/platform/lang-impl/src/com/intellij/formatting/templateLanguages/DataLanguageBlockWrapper.java b/platform/lang-impl/src/com/intellij/formatting/templateLanguages/DataLanguageBlockWrapper.java index 108e089ab6cf..e721405fa300 100644 --- a/platform/lang-impl/src/com/intellij/formatting/templateLanguages/DataLanguageBlockWrapper.java +++ b/platform/lang-impl/src/com/intellij/formatting/templateLanguages/DataLanguageBlockWrapper.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2012 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,7 +17,9 @@ package com.intellij.formatting.templateLanguages; import com.intellij.formatting.*; import com.intellij.lang.ASTNode; +import com.intellij.lang.Language; import com.intellij.openapi.util.TextRange; +import com.intellij.psi.PsiElement; import com.intellij.psi.formatter.common.AbstractBlock; import com.intellij.psi.templateLanguages.OuterLanguageElement; import org.jetbrains.annotations.NotNull; @@ -31,9 +33,10 @@ import java.util.List; * Date: Jun 30, 2009 * Time: 7:18:37 PM */ -public class DataLanguageBlockWrapper implements ASTBlock, BlockWithParent { +public class DataLanguageBlockWrapper implements ASTBlock, BlockEx, BlockWithParent { private final Block myOriginal; private final Indent myIndent; + @Nullable private final Language myLanguage; private List myBlocks; private List myTlBlocks; private BlockWithParent myParent; @@ -44,8 +47,18 @@ public class DataLanguageBlockWrapper implements ASTBlock, BlockWithParent { assert !(original instanceof DataLanguageBlockWrapper) && !(original instanceof TemplateLanguageBlock); myOriginal = original; myIndent = indent; - } + final ASTNode node = getNode(); + Language language = null; + if (node != null) { + final PsiElement psi = node.getPsi(); + if (psi != null) { + language = psi.getLanguage(); + } + } + myLanguage = language; + } + @NotNull public TextRange getTextRange() { return myOriginal.getTextRange(); @@ -59,6 +72,13 @@ public class DataLanguageBlockWrapper implements ASTBlock, BlockWithParent { return myBlocks; } + @Nullable + @Override + public Language getLanguage() { + // Use base language code style settings for the template blocks. + return myLanguage; + } + private List buildBlocks() { assert myBlocks == null; if (isLeaf()) { From e3bbf99023372e05a77e6e899ea07a5d74345c44 Mon Sep 17 00:00:00 2001 From: "Denis.Zhdanov" Date: Wed, 27 Jun 2012 15:50:50 +0400 Subject: [PATCH 13/14] Revert "IDEA-87713 `Ctrl + Backspace` changed behaviour" This reverts commit 720ae9faa5d87b514986aed5dc56d27a1c69ca49. --- .../actions/DeleteToWordStartAction.java | 32 +++-------------- .../LightPlatformCodeInsightTestCase.java | 34 +++++++++---------- .../com/intellij/util/text/CharArrayUtil.java | 10 +++--- 3 files changed, 26 insertions(+), 50 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/actions/DeleteToWordStartAction.java b/platform/platform-impl/src/com/intellij/openapi/editor/actions/DeleteToWordStartAction.java index 34ceda57714b..d7026415b463 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/actions/DeleteToWordStartAction.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/actions/DeleteToWordStartAction.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2009 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,15 +24,12 @@ */ package com.intellij.openapi.editor.actions; -import com.intellij.openapi.editor.CaretModel; import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.Editor; -import com.intellij.openapi.editor.SelectionModel; import com.intellij.openapi.editor.actionSystem.EditorAction; import com.intellij.openapi.editor.actionSystem.EditorWriteActionHandler; import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.actionSystem.DataContext; -import com.intellij.util.text.CharArrayUtil; public class DeleteToWordStartAction extends TextComponentEditorAction { public DeleteToWordStartAction() { @@ -48,31 +45,10 @@ public class DeleteToWordStartAction extends TextComponentEditorAction { } private static void deleteToWordStart(Editor editor) { - final CaretModel caretModel = editor.getCaretModel(); - int endOffset = caretModel.getOffset(); - - // The logic is as follows: - // 1. Check are there white-space symbols starting at the current caret position going backwards. Delete them if any; - // 2. Otherwise locate previous word start and delete the text up to it; - // Example: - // 'test string ' -> 'test string' - // 'test string' -> 'test ' - + int endOffset = editor.getCaretModel().getOffset(); + EditorActionUtil.moveCaretToPreviousWord(editor, false); + int startOffset = editor.getCaretModel().getOffset(); Document document = editor.getDocument(); - final SelectionModel selectionModel = editor.getSelectionModel(); - int startOffset = -1; - if (!selectionModel.hasSelection() && !selectionModel.hasBlockSelection()) { - int i = CharArrayUtil.shiftBackward(document.getCharsSequence(), Math.max(0, endOffset - 1), " \t\n"); - if (i >= 0 && i < endOffset - 1) { - startOffset = i + 1; // We need offset of the first white space symbol, not offset of the last non-white space symbol before it. - } - } - - if (startOffset < 0) { - EditorActionUtil.moveCaretToPreviousWord(editor, false); - startOffset = caretModel.getOffset(); - } - document.deleteString(startOffset, endOffset); } } diff --git a/platform/testFramework/src/com/intellij/testFramework/LightPlatformCodeInsightTestCase.java b/platform/testFramework/src/com/intellij/testFramework/LightPlatformCodeInsightTestCase.java index 6d3ec85e2459..3edb127b33a7 100644 --- a/platform/testFramework/src/com/intellij/testFramework/LightPlatformCodeInsightTestCase.java +++ b/platform/testFramework/src/com/intellij/testFramework/LightPlatformCodeInsightTestCase.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2011 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -514,69 +514,69 @@ public abstract class LightPlatformCodeInsightTestCase extends LightPlatformTest } } protected static void backspace() { - executeAction(IdeActions.ACTION_EDITOR_BACKSPACE); + doAction(IdeActions.ACTION_EDITOR_BACKSPACE); } protected static void delete() { - executeAction(IdeActions.ACTION_EDITOR_DELETE); + doAction(IdeActions.ACTION_EDITOR_DELETE); } protected static void home() { - executeAction(IdeActions.ACTION_EDITOR_MOVE_LINE_START); + doAction(IdeActions.ACTION_EDITOR_MOVE_LINE_START); } protected static void end() { - executeAction(IdeActions.ACTION_EDITOR_MOVE_LINE_END); + doAction(IdeActions.ACTION_EDITOR_MOVE_LINE_END); } protected static void copy() { - executeAction(IdeActions.ACTION_EDITOR_COPY); + doAction(IdeActions.ACTION_EDITOR_COPY); } protected static void paste() { - executeAction(IdeActions.ACTION_EDITOR_PASTE); + doAction(IdeActions.ACTION_EDITOR_PASTE); } protected static void moveCaretToPreviousWordWithSelection() { - executeAction("EditorPreviousWordWithSelection"); + doAction("EditorPreviousWordWithSelection"); } protected static void moveCaretToNextWordWithSelection() { - executeAction("EditorNextWordWithSelection"); + doAction("EditorNextWordWithSelection"); } protected static void cutLineBackward() { - executeAction("EditorCutLineBackward"); + doAction("EditorCutLineBackward"); } protected static void cutToLineEnd() { - executeAction("EditorCutLineEnd"); + doAction("EditorCutLineEnd"); } protected static void killToWordStart() { - executeAction("EditorKillToWordStart"); + doAction("EditorKillToWordStart"); } protected static void killToWordEnd() { - executeAction("EditorKillToWordEnd"); + doAction("EditorKillToWordEnd"); } protected static void killRegion() { - executeAction("EditorKillRegion"); + doAction("EditorKillRegion"); } protected static void killRingSave() { - executeAction("EditorKillRingSave"); + doAction("EditorKillRingSave"); } protected static void unindent() { - executeAction("EditorUnindentSelection"); + doAction("EditorUnindentSelection"); } protected static void lineComment() { new CommentByLineCommentHandler().invoke(getProject(), getEditor(), getFile()); } - protected static void executeAction(@NotNull final String actionId) { + private static void doAction(@NotNull final String actionId) { CommandProcessor.getInstance().executeCommand(getProject(), new Runnable() { @Override public void run() { diff --git a/platform/util/src/com/intellij/util/text/CharArrayUtil.java b/platform/util/src/com/intellij/util/text/CharArrayUtil.java index e5b5c958e4c4..c5244ba4ca7b 100644 --- a/platform/util/src/com/intellij/util/text/CharArrayUtil.java +++ b/platform/util/src/com/intellij/util/text/CharArrayUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2009 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -198,17 +198,17 @@ public class CharArrayUtil { return shiftForward(new CharArrayCharSequence(buffer), offset, chars); } - public static int shiftBackward(CharSequence buffer, int offset, String charsToSkip) { + public static int shiftBackward(CharSequence buffer, int offset, String chars) { if (offset >= buffer.length()) return offset; while (true) { if (offset < 0) break; char c = buffer.charAt(offset); int i; - for (i = 0; i < charsToSkip.length(); i++) { - if (c == charsToSkip.charAt(i)) break; + for (i = 0; i < chars.length(); i++) { + if (c == chars.charAt(i)) break; } - if (i == charsToSkip.length()) break; + if (i == chars.length()) break; offset--; } return offset; From 287e3efe94f650da39ab910c85d46a81083c0ea8 Mon Sep 17 00:00:00 2001 From: Danila Ponomarenko Date: Wed, 27 Jun 2012 16:02:21 +0400 Subject: [PATCH 14/14] IDEA-87839 fix --- .../intention/impl/BreakStringOnLineBreaksIntentionAction.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/BreakStringOnLineBreaksIntentionAction.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/BreakStringOnLineBreaksIntentionAction.java index 8f7316f12da5..ea3398efff57 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/BreakStringOnLineBreaksIntentionAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/BreakStringOnLineBreaksIntentionAction.java @@ -53,7 +53,7 @@ public class BreakStringOnLineBreaksIntentionAction extends PsiElementBaseIntent return false; } - if (indexOfSlashN != -1 && Comparing.equal(text.substring(indexOfSlashNSlashR, text.length()), "\\n\\r\"")){ + if (indexOfSlashNSlashR != -1 && Comparing.equal(text.substring(indexOfSlashNSlashR, text.length()), "\\n\\r\"")){ return false; }