From 3c8f5ff055995331dda176107ff82647ded06468 Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Wed, 16 Jan 2013 18:09:33 +0100 Subject: [PATCH 001/143] ability to specify explicitly preferred JDK installation to be used to run build process (see IDEA-99165) --- .../compiler/server/BuildManager.java | 110 ++++++++++-------- .../src/misc/registry.properties | 3 + 2 files changed, 64 insertions(+), 49 deletions(-) diff --git a/java/compiler/impl/src/com/intellij/compiler/server/BuildManager.java b/java/compiler/impl/src/com/intellij/compiler/server/BuildManager.java index 5cc6610b558f..5b9f83cd91a8 100644 --- a/java/compiler/impl/src/com/intellij/compiler/server/BuildManager.java +++ b/java/compiler/impl/src/com/intellij/compiler/server/BuildManager.java @@ -115,6 +115,7 @@ import static org.jetbrains.jps.api.CmdlineRemoteProto.Message.ControllerMessage */ public class BuildManager implements ApplicationComponent{ private static final Logger LOG = Logger.getInstance("#com.intellij.compiler.server.BuildManager"); + private static final String COMPILER_PROCESS_JDK_PROPERTY = "compiler.process.jdk"; private static final String SYSTEM_ROOT = "compile-server"; private static final String LOGGER_CONFIG = "log.xml"; private static final String DEFAULT_LOGGER_CONFIG = "defaultLogConfig.xml"; @@ -123,7 +124,7 @@ public class BuildManager implements ApplicationComponent{ private static final String IWS_EXTENSION = ".iws"; private static final String IPR_EXTENSION = ".ipr"; private static final String IDEA_PROJECT_DIR_PATTERN = "/.idea/"; - private static final Function PATH_FILTER = + private static final Function PATH_FILTER = SystemInfo.isFileSystemCaseSensitive? new Function() { @Override @@ -173,7 +174,7 @@ public class BuildManager implements ApplicationComponent{ mySystemDirectory = system; projectManager.addProjectManagerListener(new ProjectWatcher()); - + final MessageBusConnection conn = ApplicationManager.getApplication().getMessageBus().connect(); conn.subscribe(VirtualFileManager.VFS_CHANGES, new BulkFileListener.Adapter() { @Override @@ -193,7 +194,7 @@ public class BuildManager implements ApplicationComponent{ if (eventFile == null || ProjectCoreUtil.isProjectOrWorkspaceFile(eventFile)) { continue; } - + if (activeProjects == null) { activeProjects = getActiveProjects(); if (activeProjects.isEmpty()) { @@ -684,72 +685,83 @@ public class BuildManager implements ApplicationComponent{ } private OSProcessHandler launchBuildProcess(Project project, final int port, final UUID sessionId) throws ExecutionException { - // choosing sdk with which the build process should be run - Sdk projectJdk = null; + final String compilerPath; + final String vmExecutablePath; JavaSdkVersion sdkVersion = null; - int sdkMinorVersion = 0; - final Set candidates = new HashSet(); - final Sdk defaultSdk = ProjectRootManager.getInstance(project).getProjectSdk(); - if (defaultSdk != null && defaultSdk.getSdkType() instanceof JavaSdk) { - candidates.add(defaultSdk); - } + final String forcedCompiledJdkHome = Registry.stringValue(COMPILER_PROCESS_JDK_PROPERTY); - for (Module module : ModuleManager.getInstance(project).getModules()) { - final Sdk sdk = ModuleRootManager.getInstance(module).getSdk(); - if (sdk != null && sdk.getSdkType() instanceof JavaSdk) { - candidates.add(sdk); + if (StringUtil.isEmptyOrSpaces(forcedCompiledJdkHome)) { + // choosing sdk with which the build process should be run + Sdk projectJdk = null; + int sdkMinorVersion = 0; + + final Set candidates = new HashSet(); + final Sdk defaultSdk = ProjectRootManager.getInstance(project).getProjectSdk(); + if (defaultSdk != null && defaultSdk.getSdkType() instanceof JavaSdk) { + candidates.add(defaultSdk); } - } - // now select the latest version from the sdks that are used in the project, but not older than the internal sdk version - for (Sdk candidate : candidates) { - final String vs = candidate.getVersionString(); - if (vs != null) { - final JavaSdkVersion candidateVersion = ((JavaSdk)candidate.getSdkType()).getVersion(vs); - if (candidateVersion != null) { - final int candidateMinorVersion = getMinorVersion(vs); - if (projectJdk == null) { - sdkVersion = candidateVersion; - sdkMinorVersion = candidateMinorVersion; - projectJdk = candidate; - } - else { - final int result = candidateVersion.compareTo(sdkVersion); - if (result > 0 || (result == 0 && candidateMinorVersion > sdkMinorVersion)) { + for (Module module : ModuleManager.getInstance(project).getModules()) { + final Sdk sdk = ModuleRootManager.getInstance(module).getSdk(); + if (sdk != null && sdk.getSdkType() instanceof JavaSdk) { + candidates.add(sdk); + } + } + + // now select the latest version from the sdks that are used in the project, but not older than the internal sdk version + for (Sdk candidate : candidates) { + final String vs = candidate.getVersionString(); + if (vs != null) { + final JavaSdkVersion candidateVersion = ((JavaSdk)candidate.getSdkType()).getVersion(vs); + if (candidateVersion != null) { + final int candidateMinorVersion = getMinorVersion(vs); + if (projectJdk == null) { sdkVersion = candidateVersion; sdkMinorVersion = candidateMinorVersion; projectJdk = candidate; } + else { + final int result = candidateVersion.compareTo(sdkVersion); + if (result > 0 || (result == 0 && candidateMinorVersion > sdkMinorVersion)) { + sdkVersion = candidateVersion; + sdkMinorVersion = candidateMinorVersion; + projectJdk = candidate; + } + } } } } - } - final Sdk internalJdk = JavaAwareProjectJdkTableImpl.getInstanceEx().getInternalJdk(); - if (projectJdk == null || sdkVersion == null || !sdkVersion.isAtLeast(JavaSdkVersion.JDK_1_6)) { - projectJdk = internalJdk; - } - - // validate tools.jar presence - final String compilerPath; - if (projectJdk.equals(internalJdk)) { - final JavaCompiler systemCompiler = ToolProvider.getSystemJavaCompiler(); - if (systemCompiler == null) { - throw new ExecutionException("No system java compiler is provided by the JRE. Make sure tools.jar is present in IntelliJ IDEA classpath."); + final Sdk internalJdk = JavaAwareProjectJdkTableImpl.getInstanceEx().getInternalJdk(); + if (projectJdk == null || sdkVersion == null || !sdkVersion.isAtLeast(JavaSdkVersion.JDK_1_6)) { + projectJdk = internalJdk; } - compilerPath = ClasspathBootstrap.getResourcePath(systemCompiler.getClass()); + + // validate tools.jar presence + if (projectJdk.equals(internalJdk)) { + final JavaCompiler systemCompiler = ToolProvider.getSystemJavaCompiler(); + if (systemCompiler == null) { + throw new ExecutionException("No system java compiler is provided by the JRE. Make sure tools.jar is present in IntelliJ IDEA classpath."); + } + compilerPath = ClasspathBootstrap.getResourcePath(systemCompiler.getClass()); + } + else { + compilerPath = ((JavaSdk)projectJdk.getSdkType()).getToolsPath(projectJdk); + if (compilerPath == null) { + throw new ExecutionException("Cannot determine path to 'tools.jar' library for " + projectJdk.getName() + " (" + projectJdk.getHomePath() + ")"); + } + } + + vmExecutablePath = ((JavaSdkType)projectJdk.getSdkType()).getVMExecutablePath(projectJdk); } else { - compilerPath = ((JavaSdk)projectJdk.getSdkType()).getToolsPath(projectJdk); - if (compilerPath == null) { - throw new ExecutionException("Cannot determine path to 'tools.jar' library for " + projectJdk.getName() + " (" + projectJdk.getHomePath() + ")"); - } + compilerPath = new File(forcedCompiledJdkHome, "lib/tools.jar").getAbsolutePath(); + vmExecutablePath = new File(forcedCompiledJdkHome, "bin/java").getAbsolutePath(); } final CompilerWorkspaceConfiguration config = CompilerWorkspaceConfiguration.getInstance(project); final GeneralCommandLine cmdLine = new GeneralCommandLine(); - final String vmExecutablePath = ((JavaSdkType)projectJdk.getSdkType()).getVMExecutablePath(projectJdk); cmdLine.setExePath(vmExecutablePath); //cmdLine.addParameter("-XX:MaxPermSize=150m"); //cmdLine.addParameter("-XX:ReservedCodeCacheSize=64m"); diff --git a/platform/platform-resources-en/src/misc/registry.properties b/platform/platform-resources-en/src/misc/registry.properties index ffc7118ecef6..7388a8864ad8 100644 --- a/platform/platform-resources-en/src/misc/registry.properties +++ b/platform/platform-resources-en/src/misc/registry.properties @@ -145,6 +145,9 @@ compiler.max.static.constants.searches=3000 compiler.max.static.constants.searches.description=If the number of changed compile time constants exceeds this value,\ make will start full-project rebuild +compiler.process.jdk= +compiler.process.jdk.description=Path to a JDK home. Force build process to be run using the JDK specified. It is assumed that the jdk is at least of version 1.6. + compiler.process.32bit.vm.on.mac=true # suppress inspection "UnusedProperty" compiler.process.32bit.vm.on.mac.description=Force -d32 VM option on Mac (recommended for faster startup and lower memory footprint). From fcf18bb1f2b31a58b54e5fcce5f60297a9a83520 Mon Sep 17 00:00:00 2001 From: Vassiliy Kudryashov Date: Wed, 16 Jan 2013 22:19:59 +0400 Subject: [PATCH 002/143] IDEA-96154 Refine Preview/Call hierarchy tabs in search preview --- platform/platform-api/platform-api.iml | 1 + .../com/intellij/ui/JBRadioTabbedPane.java | 140 ++++++++++++++++++ .../intellij/usages/impl/UsageViewImpl.java | 10 +- 3 files changed, 142 insertions(+), 9 deletions(-) create mode 100644 platform/platform-api/src/com/intellij/ui/JBRadioTabbedPane.java diff --git a/platform/platform-api/platform-api.iml b/platform/platform-api/platform-api.iml index f4bf7bd64800..93c9f0ebea70 100644 --- a/platform/platform-api/platform-api.iml +++ b/platform/platform-api/platform-api.iml @@ -30,6 +30,7 @@ + diff --git a/platform/platform-api/src/com/intellij/ui/JBRadioTabbedPane.java b/platform/platform-api/src/com/intellij/ui/JBRadioTabbedPane.java new file mode 100644 index 000000000000..423bdad471c7 --- /dev/null +++ b/platform/platform-api/src/com/intellij/ui/JBRadioTabbedPane.java @@ -0,0 +1,140 @@ +/* + * Copyright 2000-2013 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.ui; + +import com.intellij.openapi.util.Trinity; +import com.intellij.ui.components.JBPanel; +import com.intellij.util.ui.UIUtil; +import net.miginfocom.swing.MigLayout; +import org.intellij.lang.annotations.JdkConstants; + +import javax.swing.*; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.HierarchyEvent; +import java.awt.event.HierarchyListener; +import java.util.ArrayList; +import java.util.concurrent.CopyOnWriteArrayList; + +import static javax.swing.SwingConstants.*; + +/** + * User: Vassiliy.Kudryashov + */ +public class JBRadioTabbedPane extends JBPanel implements HierarchyListener { + private final JPanel myControlPanel; + private final JPanel myContentPanel; + private final CardLayout myCardLayout; + private final ButtonGroup myMyButtonGroup; + private ArrayList> myComponents = new ArrayList>(); + private final CopyOnWriteArrayList myListeners = new CopyOnWriteArrayList(); + private int mySelectedIndex = -1; + + public JBRadioTabbedPane() { + this(TOP); + } + + public JBRadioTabbedPane(final @JdkConstants.TabPlacement int tabPlacement) { + super(new BorderLayout()); + + myMyButtonGroup = new ButtonGroup(); + myControlPanel = new JPanel(new MigLayout((tabPlacement == TOP || tabPlacement == BOTTOM ? "flowx" : "flowy") + ", ins 0")); + myCardLayout = new CardLayout(); + myContentPanel = new JPanel(myCardLayout); + + final String constraint; + switch (tabPlacement) { + case TOP: + constraint = BorderLayout.NORTH; + break; + case LEFT: + constraint = BorderLayout.WEST; + break; + case RIGHT: + constraint = BorderLayout.EAST; + break; + case BOTTOM: + constraint = BorderLayout.SOUTH; + break; + default: + throw new IllegalArgumentException("Wrong tabPlacement: " + tabPlacement); + } + add(myControlPanel, constraint); + add(myContentPanel, BorderLayout.CENTER); + myControlPanel.setVisible(false); + } + + public void addTab(String title, JComponent component) { + JRadioButton radioButton = new JRadioButton(title); + radioButton.setFocusable(false); + myControlPanel.add(radioButton); + myMyButtonGroup.add(radioButton); + myContentPanel.add(component, title); + component.addHierarchyListener(this); + UIUtil.setNotOpaqueRecursively(component); + + myComponents.add(Trinity.create(title, radioButton, component)); + final int index = myComponents.size() - 1; + radioButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + setSelectedIndex(index); + } + }); + if (mySelectedIndex == -1) { + setSelectedIndex(0); + } + myControlPanel.setVisible(myComponents.size() > 1); + } + + public void setSelectedIndex(int index) { + mySelectedIndex = index; + Trinity trinity = myComponents.get(index); + if (!trinity.getSecond().isSelected()) { + trinity.getSecond().setSelected(true); + } + myCardLayout.show(myContentPanel, trinity.getFirst()); + ChangeEvent event = new ChangeEvent(this); + for (ChangeListener listener : myListeners) { + listener.stateChanged(event); + } + } + + public int getSelectedIndex() { + return mySelectedIndex; + } + + public void addChangeListener(ChangeListener changeListener) { + if (changeListener != null) { + myListeners.add(changeListener); + } + } + + public void removeChangeListener(ChangeListener changeListener) { + if (changeListener != null) { + myListeners.remove(changeListener); + } + } + + @Override + public void hierarchyChanged(HierarchyEvent e) { + UIUtil.setNotOpaqueRecursively(e.getComponent()); + repaint(); + } +} diff --git a/platform/usageView/src/com/intellij/usages/impl/UsageViewImpl.java b/platform/usageView/src/com/intellij/usages/impl/UsageViewImpl.java index 12f71aeafa16..d5aa25684f84 100644 --- a/platform/usageView/src/com/intellij/usages/impl/UsageViewImpl.java +++ b/platform/usageView/src/com/intellij/usages/impl/UsageViewImpl.java @@ -41,7 +41,6 @@ import com.intellij.openapi.vfs.VirtualFile; import com.intellij.pom.Navigatable; import com.intellij.psi.PsiDocumentManager; import com.intellij.ui.*; -import com.intellij.ui.components.JBTabbedPane; import com.intellij.ui.content.Content; import com.intellij.ui.treeStructure.Tree; import com.intellij.usageView.UsageInfo; @@ -276,13 +275,7 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra if (UsageViewSettings.getInstance().IS_PREVIEW_USAGES) { myPreviewSplitter.setProportion(UsageViewSettings.getInstance().PREVIEW_USAGES_SPLITTER_PROPORTIONS); treePane.putClientProperty(UIUtil.KEEP_BORDER_SIDES, SideBorder.RIGHT); - final JBTabbedPane tabbedPane = new JBTabbedPane(SwingConstants.BOTTOM){ - @NotNull - @Override - protected Insets getInsetsForTabComponent() { - return new Insets(0,0,0,0); - } - }; + final JBRadioTabbedPane tabbedPane = new JBRadioTabbedPane(SwingConstants.BOTTOM); UsageContextPanel.Provider[] extensions = Extensions.getExtensions(UsageContextPanel.Provider.EP_NAME, myProject); myUsageContextPanelProviders = ContainerUtil.filter(extensions, new Condition() { @@ -317,7 +310,6 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra } }); - tabbedPane.setBorder(IdeBorderFactory.createBorder(SideBorder.LEFT)); myPreviewSplitter.setSecondComponent(tabbedPane); } else { From 91973eef8647fc4da00bead1cbf6eaa80ebf3741 Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Wed, 16 Jan 2013 14:26:08 +0100 Subject: [PATCH 003/143] Storage tests moved to community repo --- .../impl/stores/StateStorageManagerImpl.java | 28 ++- .../components/impl/PathMacroManagerTest.java | 10 +- .../impl/ProjectStoreBaseTestCase.java | 63 +++++++ .../impl/ProjectStoreImplIdeaDirTest.java | 47 +++++ .../impl/ProjectStoreImplIprFileTest.java | 42 +++++ .../impl/StateStorageManagerImplTest.java | 85 ++++++++++ .../impl/XmlElementStorageTest.java | 160 ++++++++++++++++++ 7 files changed, 418 insertions(+), 17 deletions(-) create mode 100644 platform/platform-tests/testSrc/com/intellij/openapi/components/impl/ProjectStoreBaseTestCase.java create mode 100644 platform/platform-tests/testSrc/com/intellij/openapi/components/impl/ProjectStoreImplIdeaDirTest.java create mode 100644 platform/platform-tests/testSrc/com/intellij/openapi/components/impl/ProjectStoreImplIprFileTest.java create mode 100644 platform/platform-tests/testSrc/com/intellij/openapi/components/impl/StateStorageManagerImplTest.java create mode 100644 platform/platform-tests/testSrc/com/intellij/openapi/components/impl/XmlElementStorageTest.java diff --git a/platform/platform-impl/src/com/intellij/openapi/components/impl/stores/StateStorageManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/components/impl/stores/StateStorageManagerImpl.java index 75c70d08bc16..84f2e545f328 100644 --- a/platform/platform-impl/src/com/intellij/openapi/components/impl/stores/StateStorageManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/components/impl/stores/StateStorageManagerImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -49,7 +49,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; public abstract class StateStorageManagerImpl implements StateStorageManager, Disposable, StreamProvider, ComponentVersionProvider { - private static final Logger LOG = Logger.getInstance("#" + StateStorageManagerImpl.class.getName()); + private static final Logger LOG = Logger.getInstance(StateStorageManagerImpl.class); private static final boolean ourHeadlessEnvironment; static { @@ -73,8 +73,8 @@ public abstract class StateStorageManagerImpl implements StateStorageManager, Di private final MultiMap myStreamProviders = new MultiMap(); private boolean isDirty; - public StateStorageManagerImpl(@Nullable final TrackingPathMacroSubstitutor pathMacroSubstitutor, - final String rootTagName, + public StateStorageManagerImpl(@Nullable TrackingPathMacroSubstitutor pathMacroSubstitutor, + String rootTagName, @Nullable Disposable parentDisposable, PicoContainer picoContainer) { myPicoContainer = picoContainer; @@ -155,7 +155,7 @@ public abstract class StateStorageManagerImpl implements StateStorageManager, Di synchronized (myComponentVersionsLock) { myComponentVersions = null; } - isDirty=false; + isDirty = false; } private Map loadVersions() { @@ -241,8 +241,7 @@ public abstract class StateStorageManagerImpl implements StateStorageManager, Di } @Nullable - private StateStorage createDirectoryStateStorage(final String file, final Class splitterClass) - throws StateStorageException { + private StateStorage createDirectoryStateStorage(String file, Class splitterClass) throws StateStorageException { final String expandedFile = expandMacros(file); if (expandedFile == null) { myStorages.put(file, null); @@ -250,7 +249,6 @@ public abstract class StateStorageManagerImpl implements StateStorageManager, Di } final StateSplitter splitter; - try { splitter = splitterClass.newInstance(); } @@ -265,7 +263,7 @@ public abstract class StateStorageManagerImpl implements StateStorageManager, Di } @Nullable - StateStorage createFileStateStorage(@NotNull final String fileSpec) { + private StateStorage createFileStateStorage(@NotNull final String fileSpec) { String expandedFile = expandMacros(fileSpec); if (expandedFile == null) { myStorages.put(fileSpec, null); @@ -403,20 +401,20 @@ public abstract class StateStorageManagerImpl implements StateStorageManager, Di return session; } - public SaveSession startSave(final ExternalizationSession externalizationSession) { + public SaveSession startSave(final ExternalizationSession externalizationSession) { assert mySession == externalizationSession; SaveSession session = createSaveSession(externalizationSession); mySession = session; return session; } - protected MySaveSession createSaveSession(final ExternalizationSession externalizationSession) { + protected MySaveSession createSaveSession(final ExternalizationSession externalizationSession) { return new MySaveSession((MyExternalizationSession)externalizationSession); } public void finishSave(final SaveSession saveSession) { try { - assert mySession == saveSession: "mySession=" + mySession + " saveSession=" + saveSession; + assert mySession == saveSession : "mySession=" + mySession + " saveSession=" + saveSession; ((MySaveSession)saveSession).finishSave(); } finally { @@ -425,7 +423,7 @@ public abstract class StateStorageManagerImpl implements StateStorageManager, Di } } - public void reset(){ + public void reset() { mySession = null; } @@ -497,7 +495,8 @@ public abstract class StateStorageManagerImpl implements StateStorageManager, Di public Set analyzeExternalChanges(final Set> changedFiles) { Set result = new HashSet(); - nextStorage: for (Pair pair : changedFiles) { + nextStorage: + for (Pair pair : changedFiles) { final StateStorage stateStorage = pair.second; final StateStorage.SaveSession saveSession = myCompoundSaveSession.getSaveSession(stateStorage); if (saveSession == null) continue nextStorage; @@ -566,7 +565,6 @@ public abstract class StateStorageManagerImpl implements StateStorageManager, Di element.setAttribute("name", name); element.setAttribute("version", String.valueOf(version)); } - } return root; } diff --git a/platform/platform-tests/testSrc/com/intellij/openapi/components/impl/PathMacroManagerTest.java b/platform/platform-tests/testSrc/com/intellij/openapi/components/impl/PathMacroManagerTest.java index ee96e0414211..3f7a66f89414 100644 --- a/platform/platform-tests/testSrc/com/intellij/openapi/components/impl/PathMacroManagerTest.java +++ b/platform/platform-tests/testSrc/com/intellij/openapi/components/impl/PathMacroManagerTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -18,6 +18,7 @@ package com.intellij.openapi.components.impl; import com.intellij.application.options.PathMacrosImpl; import com.intellij.application.options.ReplacePathToMacroMap; import com.intellij.mock.MockFileSystem; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ModalityState; import com.intellij.openapi.application.PathMacros; import com.intellij.openapi.application.PathManager; @@ -45,6 +46,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import static org.junit.Assert.assertEquals; +import static org.junit.Assume.assumeNotNull; /** * @author mike @@ -65,6 +67,9 @@ public class PathMacroManagerTest { @Before public final void setupApplication() throws Exception { + // in fact the test accesses extension points so it rather should be converted to a platform one + assumeNotNull(ApplicationManager.getApplication()); + context = new JUnit4Mockery(); context.setImposteriser(ClassImposteriser.INSTANCE); myApplication = context.mock(ApplicationEx.class, "application"); @@ -74,7 +79,7 @@ public class PathMacroManagerTest { allowing(myApplication).isUnitTestMode(); will(returnValue(false)); allowing(myApplication).getName(); will(returnValue("IDEA")); - //some tests leave invokeLaters after them... + // some tests leave invokeLater()'s after them allowing(myApplication).invokeLater(with(any(Runnable.class)), with(any(ModalityState.class))); allowing(myApplication).runReadAction(with(any(Runnable.class))); @@ -217,6 +222,7 @@ public class PathMacroManagerTest { } } + @SuppressWarnings("SpellCheckingInspection") @Test public void testProjectUnderUserHome_ReplaceRecursively() { setUpMocks("/home/user/foo"); diff --git a/platform/platform-tests/testSrc/com/intellij/openapi/components/impl/ProjectStoreBaseTestCase.java b/platform/platform-tests/testSrc/com/intellij/openapi/components/impl/ProjectStoreBaseTestCase.java new file mode 100644 index 000000000000..f3f68cc328d5 --- /dev/null +++ b/platform/platform-tests/testSrc/com/intellij/openapi/components/impl/ProjectStoreBaseTestCase.java @@ -0,0 +1,63 @@ +/* + * Copyright 2000-2013 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.openapi.components.impl; + +import com.intellij.openapi.components.PersistentStateComponent; +import com.intellij.openapi.components.State; +import com.intellij.openapi.components.Storage; +import com.intellij.openapi.util.JDOMBuilder; +import com.intellij.openapi.util.JDOMUtil; +import com.intellij.testFramework.PlatformLangTestCase; +import com.intellij.util.text.CharsetUtil; + +import java.io.UnsupportedEncodingException; + +public abstract class ProjectStoreBaseTestCase extends PlatformLangTestCase { + protected byte[] getIprFileContent() throws UnsupportedEncodingException { + final String iprContent = JDOMUtil.writeDocument( + JDOMBuilder.document(JDOMBuilder.tag("project", + JDOMBuilder.attr("version", "4"), + JDOMBuilder.tag("component", JDOMBuilder.attr("name", "TestIprComponent"), + JDOMBuilder.tag("option", JDOMBuilder.attr("name", "VALUE"), JDOMBuilder.attr("value", "true"))) + )), + "\n"); + return iprContent.getBytes(CharsetUtil.UTF8); + } + + @State( + name = "TestIprComponent", + storages = { + @Storage(file = "$PROJECT_FILE$") + } + ) + public static class TestIprComponent implements PersistentStateComponent { + ProjectStoreBaseTestCase.DataBean myState; + + @Override + public ProjectStoreBaseTestCase.DataBean getState() { + throw new UnsupportedOperationException("Method getState not implemented in " + getClass()); + } + + @Override + public void loadState(ProjectStoreBaseTestCase.DataBean object) { + myState = object; + } + } + + public static class DataBean { + @SuppressWarnings("UnusedDeclaration") public boolean VALUE = false; + } +} diff --git a/platform/platform-tests/testSrc/com/intellij/openapi/components/impl/ProjectStoreImplIdeaDirTest.java b/platform/platform-tests/testSrc/com/intellij/openapi/components/impl/ProjectStoreImplIdeaDirTest.java new file mode 100644 index 000000000000..afb8323dec97 --- /dev/null +++ b/platform/platform-tests/testSrc/com/intellij/openapi/components/impl/ProjectStoreImplIdeaDirTest.java @@ -0,0 +1,47 @@ +/* + * Copyright 2000-2013 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.openapi.components.impl; + +import com.intellij.openapi.components.impl.stores.IProjectStore; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.project.ex.ProjectEx; +import com.intellij.openapi.util.io.FileUtil; + +import java.io.File; +import java.io.IOException; + +public class ProjectStoreImplIdeaDirTest extends ProjectStoreBaseTestCase { + @Override + protected File getIprFile() throws IOException { + final File projectDir = FileUtil.createTempDirectory(getTestName(true), "project"); + File ideaDir = new File(projectDir, Project.DIRECTORY_STORE_FOLDER); + assertTrue(ideaDir.mkdir() || ideaDir.isDirectory()); + File iprFile = new File(ideaDir, "misc.xml"); + FileUtil.writeToFile(iprFile, getIprFileContent()); + + myFilesToDelete.add(projectDir); + return projectDir; + } + + public void testLoadFromDirectoryStorage() throws Exception { + final IProjectStore projectStore = ((ProjectEx)myProject).getStateStore(); + ((ProjectEx)myProject).setOptimiseTestLoadSpeed(false); + + final TestIprComponent testIprComponent = new TestIprComponent(); + projectStore.initComponent(testIprComponent, false); + assertNotNull(testIprComponent.myState); + } +} diff --git a/platform/platform-tests/testSrc/com/intellij/openapi/components/impl/ProjectStoreImplIprFileTest.java b/platform/platform-tests/testSrc/com/intellij/openapi/components/impl/ProjectStoreImplIprFileTest.java new file mode 100644 index 000000000000..8452b1f214f2 --- /dev/null +++ b/platform/platform-tests/testSrc/com/intellij/openapi/components/impl/ProjectStoreImplIprFileTest.java @@ -0,0 +1,42 @@ +/* + * Copyright 2000-2013 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.openapi.components.impl; + +import com.intellij.openapi.components.impl.stores.IProjectStore; +import com.intellij.openapi.project.ex.ProjectEx; +import com.intellij.openapi.util.io.FileUtil; + +import java.io.File; +import java.io.IOException; + +public class ProjectStoreImplIprFileTest extends ProjectStoreBaseTestCase { + @Override + protected File getIprFile() throws IOException { + final File iprFile = super.getIprFile(); + FileUtil.writeToFile(iprFile, getIprFileContent()); + return iprFile; + } + + public void testLoadFromOldStorage() throws Exception { + final IProjectStore projectStore = ((ProjectEx)myProject).getStateStore(); + + ((ProjectEx)myProject).setOptimiseTestLoadSpeed(false); + + final TestIprComponent testIprComponent = new TestIprComponent(); + projectStore.initComponent(testIprComponent, false); + assertNotNull(testIprComponent.myState); + } +} diff --git a/platform/platform-tests/testSrc/com/intellij/openapi/components/impl/StateStorageManagerImplTest.java b/platform/platform-tests/testSrc/com/intellij/openapi/components/impl/StateStorageManagerImplTest.java new file mode 100644 index 000000000000..a4e3024a60d0 --- /dev/null +++ b/platform/platform-tests/testSrc/com/intellij/openapi/components/impl/StateStorageManagerImplTest.java @@ -0,0 +1,85 @@ +/* + * Copyright 2000-2013 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.openapi.components.impl; + +import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.components.StateStorage; +import com.intellij.openapi.components.StateStorageException; +import com.intellij.openapi.components.StateStorageOperation; +import com.intellij.openapi.components.impl.stores.StateStorageManagerImpl; +import com.intellij.openapi.components.impl.stores.StorageData; +import com.intellij.openapi.util.Disposer; +import com.intellij.testFramework.LightPlatformLangTestCase; + +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.notNullValue; +import static org.junit.Assert.assertThat; + +/** + * @author mike + */ +public class StateStorageManagerImplTest extends LightPlatformLangTestCase { + private StateStorageManagerImpl myStateStorageManager; + + @Override + public final void setUp() throws Exception { + super.setUp(); + myStateStorageManager = new StateStorageManagerImpl(null, "foo", null, ApplicationManager.getApplication().getPicoContainer()) { + @Override + protected StorageData createStorageData(String storageSpec) { + throw new UnsupportedOperationException("Method createStorageData not implemented in " + getClass()); + } + + @Override + protected String getOldStorageSpec(Object component, String componentName, StateStorageOperation operation) throws StateStorageException { + throw new UnsupportedOperationException("Method getOldStorageSpec not implemented in " + getClass()); + } + + @Override + protected String getVersionsFilePath() { + return null; + } + }; + myStateStorageManager.addMacro("MACRO1", "/temp/m1"); + } + + @Override + public void tearDown() throws Exception { + Disposer.dispose(myStateStorageManager); + super.tearDown(); + } + + public void testCreateFileStateStorageMacroSubstituted() { + StateStorage data = myStateStorageManager.getFileStateStorage("$MACRO1$/test.xml"); + assertThat(data, is(notNullValue())); + } + + public void testCreateStateStorageAssertionThrownWhenUnknownMacro() { + try { + myStateStorageManager.getFileStateStorage("$UNKNOWN_MACRO$/test.xml"); + fail("Exception expected"); + } + catch (IllegalArgumentException e) { + assertEquals("Unknown macro: $UNKNOWN_MACRO$ in storage spec: $UNKNOWN_MACRO$/test.xml", e.getMessage()); + } + } + + public void testCreateFileStateStorageMacroSubstitutedWhenExpansionHas$() { + myStateStorageManager.addMacro("DOLLAR_MACRO", "/temp/d$"); + StateStorage data = myStateStorageManager.getFileStateStorage("$DOLLAR_MACRO$/test.xml"); + assertThat(data, is(notNullValue())); + } +} diff --git a/platform/platform-tests/testSrc/com/intellij/openapi/components/impl/XmlElementStorageTest.java b/platform/platform-tests/testSrc/com/intellij/openapi/components/impl/XmlElementStorageTest.java new file mode 100644 index 000000000000..a85ba0808ceb --- /dev/null +++ b/platform/platform-tests/testSrc/com/intellij/openapi/components/impl/XmlElementStorageTest.java @@ -0,0 +1,160 @@ +/* + * Copyright 2000-2013 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.openapi.components.impl; + +import com.intellij.openapi.Disposable; +import com.intellij.openapi.components.StateStorage; +import com.intellij.openapi.components.StateStorageException; +import com.intellij.openapi.components.TrackingPathMacroSubstitutor; +import com.intellij.openapi.components.impl.stores.ComponentRoamingManager; +import com.intellij.openapi.components.impl.stores.ComponentVersionProvider; +import com.intellij.openapi.components.impl.stores.XmlElementStorage; +import com.intellij.openapi.options.StreamProvider; +import com.intellij.openapi.util.Disposer; +import com.intellij.testFramework.LightPlatformLangTestCase; +import com.intellij.util.io.fs.IFile; +import org.jdom.Document; +import org.jdom.Element; + +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.Set; + +import static com.intellij.openapi.util.JDOMBuilder.*; + +/** + * @author mike + */ +public class XmlElementStorageTest extends LightPlatformLangTestCase { + private Disposable myParentDisposable; + + public void setUp() throws Exception { + super.setUp(); + myParentDisposable = Disposer.newDisposable(); + } + + public void tearDown() throws Exception { + Disposer.dispose(myParentDisposable); + super.tearDown(); + } + + public void testGetStateSucceeded() throws Exception { + MyXmlElementStorage storage = + new MyXmlElementStorage(document(tag("root", tag("component", attr("name", "test"), tag("foo")))), myParentDisposable); + Element state = storage.getState(this, "test", Element.class, null); + assertNotNull(state); + assertEquals("component", state.getName()); + assertNotNull(state.getChild("foo")); + } + + public void testGetStateNotSucceeded() throws Exception { + MyXmlElementStorage storage = new MyXmlElementStorage(document(tag("root")), myParentDisposable); + Element state = storage.getState(this, "test", Element.class, null); + assertNull(state); + } + + public void testSetStateOverridesOldState() throws Exception { + MyXmlElementStorage storage = + new MyXmlElementStorage(document(tag("root", tag("component", attr("name", "test"), tag("foo")))), myParentDisposable); + Element newState = tag("component", attr("name", "test"), tag("bar")); + StateStorage.ExternalizationSession externalizationSession = storage.startExternalization(); + externalizationSession.setState(this, "test", newState, null); + storage.startSave(externalizationSession).save(); + assertNotNull(storage.mySavedDocument); + assertNotNull(storage.mySavedDocument.getRootElement().getChild("component").getChild("bar")); + assertNull(storage.mySavedDocument.getRootElement().getChild("component").getChild("foo")); + } + + + private class MyXmlElementStorage extends XmlElementStorage { + private final Document myDocument; + private Document mySavedDocument; + + public MyXmlElementStorage(final Document document, final Disposable parentDisposable) throws StateStorageException { + super(new MyPathMacroManager(), parentDisposable, "root", StreamProvider.DEFAULT, "", ComponentRoamingManager.getInstance(), ComponentVersionProvider.EMPTY); + myDocument = document; + } + + @Override + protected Document loadDocument() throws StateStorageException { + return myDocument; + } + + @Override + protected MySaveSession createSaveSession(final MyExternalizationSession externalizationSession) { + return new MySaveSession(externalizationSession) { + @Override + protected void doSave() throws StateStorageException { + mySavedDocument = (Document)getDocumentToSave().clone(); + } + + @Override + public Collection getStorageFilesToSave() throws StateStorageException { + return needsSave() ? getAllStorageFiles() : Collections.emptyList(); + } + + @Override + public List getAllStorageFiles() { + throw new UnsupportedOperationException("Method getAllStorageFiles not implemented in " + getClass()); + } + + }; + } + } + + private static class MyPathMacroManager implements TrackingPathMacroSubstitutor { + @Override + public void expandPaths(final Element element) { + } + + @Override + public void reset() { + } + + @Override + public Collection getComponents(Collection macros) { + return Collections.emptyList(); + } + + @Override + public void collapsePaths(final Element element) { + } + + @Override + public String expandPath(final String path) { + throw new UnsupportedOperationException("Method expandPath not implemented in " + getClass()); + } + + @Override + public String collapsePath(final String path) { + throw new UnsupportedOperationException("Method collapsePath not implemented in " + getClass()); + } + + @Override + public Collection getUnknownMacros(final String componentName) { + return Collections.emptySet(); + } + + @Override + public void invalidateUnknownMacros(Set macros) { + } + + @Override + public void addUnknownMacros(String componentName, Collection unknownMacros) { + } + } +} From c366df2d692c6970fa693e900e11af612724a8a9 Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Wed, 16 Jan 2013 20:18:20 +0100 Subject: [PATCH 004/143] EA-39779 (synchronized access to state storage maps) --- .../impl/stores/StateStorageManagerImpl.java | 205 ++++++++++-------- 1 file changed, 111 insertions(+), 94 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/components/impl/stores/StateStorageManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/components/impl/stores/StateStorageManagerImpl.java index 84f2e545f328..cc864c55ff2d 100644 --- a/platform/platform-impl/src/com/intellij/openapi/components/impl/stores/StateStorageManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/components/impl/stores/StateStorageManagerImpl.java @@ -45,6 +45,8 @@ import java.io.IOException; import java.io.InputStream; import java.net.ConnectException; import java.util.*; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -58,6 +60,7 @@ public abstract class StateStorageManagerImpl implements StateStorageManager, Di } private final Map myMacros = new HashMap(); + private final Lock myStorageLock = new ReentrantLock(); private final Map myStorages = new THashMap(); private final Map myPathToStorage = new THashMap(); private final TrackingPathMacroSubstitutor myPathMacroSubstitutor; @@ -96,32 +99,46 @@ public abstract class StateStorageManagerImpl implements StateStorageManager, Di @Nullable public StateStorage getStateStorage(@NotNull final Storage storageSpec) throws StateStorageException { - final String key = getStorageSpecId(storageSpec); - return getStateStorage(storageSpec, key); - } + String key = getStorageSpecId(storageSpec); - @Nullable - private StateStorage getStateStorage(final Storage storageSpec, final String key) throws StateStorageException { - if (myStorages.get(key) == null) { - final StateStorage stateStorage = createStateStorage(storageSpec); - putStorageToMap(key, stateStorage); + myStorageLock.lock(); + try { + StateStorage stateStorage = myStorages.get(key); + if (stateStorage == null) { + stateStorage = createStateStorage(storageSpec); + putStorageToMap(key, stateStorage); + } + return stateStorage; + } + finally { + myStorageLock.unlock(); } - - return myStorages.get(key); } @Nullable public StateStorage getFileStateStorage(final String fileName) { - if (myStorages.get(fileName) == null) { - final StateStorage stateStorage = createFileStateStorage(fileName); - putStorageToMap(fileName, stateStorage); + myStorageLock.lock(); + try { + StateStorage stateStorage = myStorages.get(fileName); + if (stateStorage == null) { + stateStorage = createFileStateStorage(fileName); + putStorageToMap(fileName, stateStorage); + } + return stateStorage; + } + finally { + myStorageLock.unlock(); } - - return myStorages.get(fileName); } public Collection getStorageFileNames() { - return Collections.unmodifiableCollection(new HashSet(myStorages.keySet())); + myStorageLock.lock(); + try { + return Collections.unmodifiableCollection(myStorages.keySet()); + } + finally { + myStorageLock.unlock(); + } } private void putStorageToMap(final String key, final StateStorage stateStorage) { @@ -144,6 +161,84 @@ public abstract class StateStorageManagerImpl implements StateStorageManager, Di } } + @Nullable + private StateStorage createStateStorage(Storage storageSpec) throws StateStorageException { + if (!storageSpec.storageClass().equals(StorageAnnotationsDefaultValues.NullStateStorage.class)) { + String key = UUID.randomUUID().toString(); + ((MutablePicoContainer)myPicoContainer).registerComponentImplementation(key, storageSpec.storageClass()); + return (StateStorage)myPicoContainer.getComponentInstance(key); + } + else if (!storageSpec.stateSplitter().equals(StorageAnnotationsDefaultValues.NullStateSplitter.class)) { + return createDirectoryStateStorage(storageSpec.file(), storageSpec.stateSplitter()); + } + else { + return createFileStateStorage(storageSpec.file()); + } + } + + private static String getStorageSpecId(Storage storageSpec) { + if (!storageSpec.storageClass().equals(StorageAnnotationsDefaultValues.NullStateStorage.class)) { + return storageSpec.storageClass().getName(); + } + else { + return storageSpec.file(); + } + } + + public void clearStateStorage(@NotNull String file) { + myStorageLock.lock(); + try { + myStorages.remove(file); + } + finally { + myStorageLock.unlock(); + } + } + + @Nullable + private StateStorage createDirectoryStateStorage(String file, Class splitterClass) throws StateStorageException { + String expandedFile = expandMacros(file); + if (expandedFile == null) { + myStorages.put(file, null); + return null; + } + + final StateSplitter splitter; + try { + splitter = splitterClass.newInstance(); + } + catch (InstantiationException e) { + throw new StateStorageException(e); + } + catch (IllegalAccessException e) { + throw new StateStorageException(e); + } + + return new DirectoryBasedStorage(myPathMacroSubstitutor, expandedFile, splitter, this, myPicoContainer); + } + + @Nullable + private StateStorage createFileStateStorage(@NotNull final String fileSpec) { + String expandedFile = expandMacros(fileSpec); + if (expandedFile == null) { + myStorages.put(fileSpec, null); + return null; + } + + String extension = FileUtil.getExtension(new File(expandedFile).getName()); + if (!ourHeadlessEnvironment && extension.length() == 0) { + throw new IllegalArgumentException("Extension is missing for storage file: " + expandedFile); + } + + return new FileBasedStorage(getMacroSubstitutor(fileSpec), this, expandedFile, fileSpec, myRootTagName, this, + myPicoContainer, ComponentRoamingManager.getInstance(), this) { + @NotNull + protected StorageData createStorageData() { + return StateStorageManagerImpl.this.createStorageData(fileSpec); + } + }; + } + public long getVersion(String name) { Map versions = getComponentVersions(); return versions.containsKey(name) ? versions.get(name).longValue() : 0; @@ -211,84 +306,6 @@ public abstract class StateStorageManagerImpl implements StateStorageManager, Di isDirty = true; } - @Nullable - private StateStorage createStateStorage(final Storage storageSpec) throws StateStorageException { - if (!storageSpec.storageClass().equals(StorageAnnotationsDefaultValues.NullStateStorage.class)) { - final String key = UUID.randomUUID().toString(); - ((MutablePicoContainer)myPicoContainer).registerComponentImplementation(key, storageSpec.storageClass()); - - return (StateStorage)myPicoContainer.getComponentInstance(key); - } - else if (!storageSpec.stateSplitter().equals(StorageAnnotationsDefaultValues.NullStateSplitter.class)) { - return createDirectoryStateStorage(storageSpec.file(), storageSpec.stateSplitter()); - } - else { - return createFileStateStorage(storageSpec.file()); - } - } - - private static String getStorageSpecId(final Storage storageSpec) { - if (!storageSpec.storageClass().equals(StorageAnnotationsDefaultValues.NullStateStorage.class)) { - return storageSpec.storageClass().getName(); - } - else { - return storageSpec.file(); - } - } - - public void clearStateStorage(@NotNull final String file) { - myStorages.remove(file); - } - - @Nullable - private StateStorage createDirectoryStateStorage(String file, Class splitterClass) throws StateStorageException { - final String expandedFile = expandMacros(file); - if (expandedFile == null) { - myStorages.put(file, null); - return null; - } - - final StateSplitter splitter; - try { - splitter = splitterClass.newInstance(); - } - catch (InstantiationException e) { - throw new StateStorageException(e); - } - catch (IllegalAccessException e) { - throw new StateStorageException(e); - } - - return new DirectoryBasedStorage(myPathMacroSubstitutor, expandedFile, splitter, this, myPicoContainer); - } - - @Nullable - private StateStorage createFileStateStorage(@NotNull final String fileSpec) { - String expandedFile = expandMacros(fileSpec); - if (expandedFile == null) { - myStorages.put(fileSpec, null); - return null; - } - - final String extension = FileUtil.getExtension(new File(expandedFile).getName()); - if (!ourHeadlessEnvironment && extension.length() == 0) { - throw new IllegalArgumentException("Extension is missing for storage file: " + expandedFile); - } - - return createFileStateStorage(fileSpec, expandedFile, myRootTagName, myPicoContainer); - } - - protected StateStorage createFileStateStorage(final String fileSpec, final String expandedFile, final String rootTagName, - final PicoContainer picoContainer) { - return new FileBasedStorage(getMacroSubstitutor(fileSpec), this, expandedFile, fileSpec, rootTagName, this, picoContainer, - ComponentRoamingManager.getInstance(), this) { - @NotNull - protected StorageData createStorageData() { - return StateStorageManagerImpl.this.createStorageData(fileSpec); - } - }; - } - public void saveContent(final String fileSpec, final InputStream content, final long size, final RoamingType roamingType, boolean async) { for (StreamProvider streamProvider : getStreamProviders(roamingType)) { try { From 16b216260df6a6ff57678cca7e4cea808b7ec92f Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Wed, 16 Jan 2013 20:18:36 +0100 Subject: [PATCH 005/143] IDEA-91610 (shell command composition on Windows fixed) --- .../configurations/GeneralCommandLine.java | 33 ++++++++++++++----- .../com/intellij/execution/util/ExecUtil.java | 7 ++-- .../src/com/intellij/ide/BrowserUtil.java | 11 +++---- .../src/git4idea/commands/GitHandler.java | 8 +---- .../src/git4idea/ui/GitUnstashDialog.java | 6 ++-- 5 files changed, 37 insertions(+), 28 deletions(-) diff --git a/platform/platform-api/src/com/intellij/execution/configurations/GeneralCommandLine.java b/platform/platform-api/src/com/intellij/execution/configurations/GeneralCommandLine.java index 4235cc071af7..e18eddfbd9f3 100644 --- a/platform/platform-api/src/com/intellij/execution/configurations/GeneralCommandLine.java +++ b/platform/platform-api/src/com/intellij/execution/configurations/GeneralCommandLine.java @@ -47,9 +47,11 @@ import java.util.Map; * as required by the underlying platform. */ public class GeneralCommandLine implements UserDataHolder { - public static Key DO_NOT_ESCAPE_QUOTES = Key.create("GeneralCommandLine.do.not.escape.quotes"); + /** @deprecated use {@linkplain #inescapableQuote(String)} (to remove in IDEA 13) */ + @SuppressWarnings("UnusedDeclaration") public static Key DO_NOT_ESCAPE_QUOTES = Key.create("GeneralCommandLine.do.not.escape.quotes"); private static final Logger LOG = Logger.getInstance("#com.intellij.execution.configurations.GeneralCommandLine"); + private static final char QUOTE = '\uEFEF'; private String myExePath = null; private File myWorkDirectory = null; @@ -236,26 +238,29 @@ public class GeneralCommandLine implements UserDataHolder { private String[] prepareCommands() { final List parameters = myProgramParams.getList(); - final boolean doNotEscape = Boolean.TRUE.equals(getUserData(DO_NOT_ESCAPE_QUOTES)); - final String[] result = new String[parameters.size() + 1]; - result[0] = myExePath != null ? prepareCommand(FileUtil.toSystemDependentName(myExePath), doNotEscape) : null; + result[0] = myExePath != null ? prepareCommand(FileUtil.toSystemDependentName(myExePath)) : null; for (int i = 0; i < parameters.size(); i++) { - result[i + 1] = prepareCommand(parameters.get(i), doNotEscape); + result[i + 1] = prepareCommand(parameters.get(i)); } return result; } - // please keep in sync with com.intellij.rt.execution.junit.ProcessBuilder.prepareCommand() (besides doNotEscape option) - private static String prepareCommand(String parameter, final boolean doNotEscape) { + // please keep in sync with com.intellij.rt.execution.junit.ProcessBuilder.prepareCommand() + private static String prepareCommand(String parameter) { if (SystemInfo.isWindows) { - if (!doNotEscape && parameter.contains("\"")) { + if (parameter.contains("\"")) { parameter = StringUtil.replace(parameter, "\"", "\\\""); } else if (parameter.length() == 0) { parameter = "\"\""; } } + + if (parameter.length() >= 2 && parameter.charAt(0) == QUOTE && parameter.charAt(parameter.length() - 1) == QUOTE) { + parameter = '"' + parameter.substring(1, parameter.length() - 1) + '"'; + } + return parameter; } @@ -277,6 +282,18 @@ public class GeneralCommandLine implements UserDataHolder { } } + /** + * Normally, double quotes in parameters are escaped so they arrive to a called program as-is. + * But some commands (e.g. {@code 'cmd /c start "title" ...'}) should get they quotes non-escaped. + * Wrapping a parameter by this method (instead of using quotes) will do exactly this. + * + * @see com.intellij.execution.util.ExecUtil#getTerminalCommand(String, String) + */ + @NotNull + public static String inescapableQuote(@NotNull String parameter) { + return QUOTE + parameter + QUOTE; + } + @Override public String toString() { return myExePath + " " + myProgramParams; diff --git a/platform/platform-api/src/com/intellij/execution/util/ExecUtil.java b/platform/platform-api/src/com/intellij/execution/util/ExecUtil.java index a8675ab27611..9887b956b1d9 100644 --- a/platform/platform-api/src/com/intellij/execution/util/ExecUtil.java +++ b/platform/platform-api/src/com/intellij/execution/util/ExecUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -217,9 +217,10 @@ public class ExecUtil { } @NotNull - public static List getTerminalCommand(@Nullable final String title, @NotNull final String command) { + public static List getTerminalCommand(@Nullable String title, @NotNull String command) { if (SystemInfo.isWindows) { - return Arrays.asList("cmd.exe", "/c", "start", '"' + (title != null ? title : "") + '"', command); + title = title != null ? title.replace("\"", "'") : ""; + return Arrays.asList("cmd.exe", "/c", "start", GeneralCommandLine.inescapableQuote(title), command); } else if (SystemInfo.isMac) { return Arrays.asList(getOpenCommandPath(), "-a", "Terminal", command); // todo: title? diff --git a/platform/platform-api/src/com/intellij/ide/BrowserUtil.java b/platform/platform-api/src/com/intellij/ide/BrowserUtil.java index bb751a626711..ff6694b34465 100644 --- a/platform/platform-api/src/com/intellij/ide/BrowserUtil.java +++ b/platform/platform-api/src/com/intellij/ide/BrowserUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -207,7 +207,7 @@ public class BrowserUtil { @NonNls private static List getDefaultBrowserCommand() { if (SystemInfo.isWindows) { - return newArrayList(ExecUtil.getWindowsShellName(), "/c", "start", "\"\""); + return newArrayList(ExecUtil.getWindowsShellName(), "/c", "start", GeneralCommandLine.inescapableQuote("")); } else if (SystemInfo.isMac) { return newSmartList(ExecUtil.getOpenCommandPath()); @@ -221,11 +221,8 @@ public class BrowserUtil { private static void launchBrowserByCommand(@NotNull final URI uri, @NotNull final List command) { try { - final GeneralCommandLine commandLine = new GeneralCommandLine(command); + GeneralCommandLine commandLine = new GeneralCommandLine(command); commandLine.addParameter(escapeUrl(uri.toString())); - if (SystemInfo.isWindows) { - commandLine.putUserData(GeneralCommandLine.DO_NOT_ESCAPE_QUOTES, true); - } commandLine.createProcess(); if (LOG.isDebugEnabled()) { @@ -251,7 +248,7 @@ public class BrowserUtil { return newArrayList(ExecUtil.getOpenCommandPath(), "-a", browserPathOrName); } else if (SystemInfo.isWindows) { - return newArrayList(ExecUtil.getWindowsShellName(), "/c", "start", "\"\"", browserPathOrName); + return newArrayList(ExecUtil.getWindowsShellName(), "/c", "start", GeneralCommandLine.inescapableQuote(""), browserPathOrName); } else { return newSmartList(browserPathOrName); diff --git a/plugins/git4idea/src/git4idea/commands/GitHandler.java b/plugins/git4idea/src/git4idea/commands/GitHandler.java index 90e18ad62cb6..1ec1a1cb04d0 100644 --- a/plugins/git4idea/src/git4idea/commands/GitHandler.java +++ b/plugins/git4idea/src/git4idea/commands/GitHandler.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2011 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -51,7 +51,6 @@ import java.util.concurrent.LinkedBlockingQueue; * A handler for git commands */ public abstract class GitHandler { - protected final Project myProject; protected final GitCommand myCommand; @@ -785,9 +784,4 @@ public abstract class GitHandler { public String toString() { return myCommandLine.toString(); } - - public void dontEscapeQuotes() { - myCommandLine.putUserData(GeneralCommandLine.DO_NOT_ESCAPE_QUOTES, true); - } - } diff --git a/plugins/git4idea/src/git4idea/ui/GitUnstashDialog.java b/plugins/git4idea/src/git4idea/ui/GitUnstashDialog.java index d52371263a32..0e3b7175ccd6 100644 --- a/plugins/git4idea/src/git4idea/ui/GitUnstashDialog.java +++ b/plugins/git4idea/src/git4idea/ui/GitUnstashDialog.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -16,6 +16,7 @@ package git4idea.ui; import com.intellij.CommonBundle; +import com.intellij.execution.configurations.GeneralCommandLine; import com.intellij.notification.Notification; import com.intellij.notification.NotificationListener; import com.intellij.notification.NotificationType; @@ -239,8 +240,7 @@ public class GitUnstashDialog extends DialogWrapper { */ private void addStashParameter(@NotNull GitHandler handler, @NotNull String stash) { if (GitVersionSpecialty.NEEDS_QUOTES_IN_STASH_NAME.existsIn(myVcs.getVersion())) { - handler.addParameters("\"" + stash + "\""); - handler.dontEscapeQuotes(); + handler.addParameters(GeneralCommandLine.inescapableQuote(stash)); } else { handler.addParameters(stash); From b2ecaa6558ee4ffd9f62ff29cb732fa40f9a833c Mon Sep 17 00:00:00 2001 From: anna Date: Wed, 16 Jan 2013 16:55:58 +0100 Subject: [PATCH 006/143] edit inspections settings action placeholder should be better marked with intention icon (IDEA-99191) --- .../codeInsight/intention/EmptyIntentionAction.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/intention/EmptyIntentionAction.java b/platform/lang-impl/src/com/intellij/codeInsight/intention/EmptyIntentionAction.java index 76a293d1ea5f..f4a32a6da98a 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/intention/EmptyIntentionAction.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/intention/EmptyIntentionAction.java @@ -17,19 +17,22 @@ package com.intellij.codeInsight.intention; import com.intellij.codeInspection.InspectionsBundle; +import com.intellij.icons.AllIcons; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.Iconable; import com.intellij.psi.PsiFile; import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NotNull; +import javax.swing.*; import java.util.List; /** * User: anna * Date: May 11, 2005 */ -public final class EmptyIntentionAction implements IntentionAction, LowPriorityAction{ +public final class EmptyIntentionAction implements IntentionAction, LowPriorityAction, Iconable { private final String myName; public EmptyIntentionAction(@NotNull String name) { @@ -80,4 +83,9 @@ public final class EmptyIntentionAction implements IntentionAction, LowPriorityA public EmptyIntentionAction(@NotNull final String name, @NotNull List options) { myName = name; } + + @Override + public Icon getIcon(@IconFlags int flags) { + return AllIcons.Actions.RealIntentionBulb; + } } From 51c32c6263c21fd07bb473b86f42b2aaea9f5666 Mon Sep 17 00:00:00 2001 From: anna Date: Wed, 16 Jan 2013 18:43:25 +0100 Subject: [PATCH 007/143] New in 12 (IDEA-99193) --- .../profile/codeInspection/ui/SingleInspectionProfilePanel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/lang-impl/src/com/intellij/profile/codeInspection/ui/SingleInspectionProfilePanel.java b/platform/lang-impl/src/com/intellij/profile/codeInspection/ui/SingleInspectionProfilePanel.java index 209f15f7408e..b9c796e9c4b1 100644 --- a/platform/lang-impl/src/com/intellij/profile/codeInspection/ui/SingleInspectionProfilePanel.java +++ b/platform/lang-impl/src/com/intellij/profile/codeInspection/ui/SingleInspectionProfilePanel.java @@ -1119,7 +1119,7 @@ public class SingleInspectionProfilePanel extends JPanel { private class MyFilterComponent extends FilterComponent { private MyFilterComponent() { super(INSPECTION_FILTER_HISTORY, 10); - setHistory(Arrays.asList("\"New in 11\"")); + setHistory(Arrays.asList("\"New in 12\"")); } public void filter() { From 172ad273ed502e9748baefaad2acca37266ba254 Mon Sep 17 00:00:00 2001 From: anna Date: Wed, 16 Jan 2013 20:34:07 +0100 Subject: [PATCH 008/143] javafx: event handler ref; create handler method fix --- .../impl/quickfix/CreateMethodQuickFix.java | 10 +- plugins/javaFX/src/META-INF/plugin.xml | 3 +- .../plugins/javaFX/fxml/FxmlConstants.java | 16 +++ ...or.java => FxmlReferencesContributor.java} | 25 ++++- .../fxml/JavaFxEventHandlerReference.java | 105 ++++++++++++++++++ .../JavaFxEventHandlerReferenceProvider.java | 66 +++++++++++ 6 files changed, 217 insertions(+), 8 deletions(-) rename plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/{FxmlJavaClassReferencesContributor.java => FxmlReferencesContributor.java} (54%) create mode 100644 plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxEventHandlerReference.java create mode 100644 plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxEventHandlerReferenceProvider.java diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateMethodQuickFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateMethodQuickFix.java index 28de8496e7aa..a1323ae5fd90 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateMethodQuickFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateMethodQuickFix.java @@ -18,8 +18,8 @@ package com.intellij.codeInsight.daemon.impl.quickfix; import com.intellij.codeInsight.CodeInsightUtilBase; import com.intellij.codeInsight.ExpectedTypeInfo; import com.intellij.codeInsight.daemon.QuickFixBundle; -import com.intellij.codeInspection.LocalQuickFix; -import com.intellij.codeInspection.ProblemDescriptor; +import com.intellij.codeInspection.IntentionAndQuickFixAction; +import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Pair; import com.intellij.psi.*; @@ -35,7 +35,7 @@ import org.jetbrains.annotations.Nullable; import java.util.List; -public class CreateMethodQuickFix implements LocalQuickFix { +public class CreateMethodQuickFix extends IntentionAndQuickFixAction { protected final PsiClass myTargetClass; protected final String mySignature; protected final String myBody; @@ -66,10 +66,10 @@ public class CreateMethodQuickFix implements LocalQuickFix { } @Override - public void applyFix(@NotNull final Project project, @NotNull final ProblemDescriptor descriptor) { + public void applyFix(Project project, PsiFile file, @Nullable Editor editor) { if (!CodeInsightUtilBase.preparePsiElementForWrite(myTargetClass.getContainingFile())) return; - PsiMethod method = createMethod(project); + PsiMethod method = createMethod(project); List> arguments = ContainerUtil.map2List(method.getParameterList().getParameters(), new Function>() { @Override diff --git a/plugins/javaFX/src/META-INF/plugin.xml b/plugins/javaFX/src/META-INF/plugin.xml index 71f091fc50ce..b15de6d5cab4 100644 --- a/plugins/javaFX/src/META-INF/plugin.xml +++ b/plugins/javaFX/src/META-INF/plugin.xml @@ -10,6 +10,7 @@ - + + diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/FxmlConstants.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/FxmlConstants.java index 9d47e6df6a75..d73208b5892f 100644 --- a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/FxmlConstants.java +++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/FxmlConstants.java @@ -17,11 +17,27 @@ package org.jetbrains.plugins.javaFX.fxml; import org.jetbrains.annotations.NonNls; +import java.util.Arrays; +import java.util.List; + /** * User: anna * Date: 1/14/13 */ public class FxmlConstants { @NonNls public static final String FX_CONTROLLER = "fx:controller"; + @NonNls public static final String FX_ID = "fx:id"; + @NonNls public static final String VALUE = "value"; + @NonNls public static final String FX_VALUE = "fx:value"; + @NonNls public static final String FX_FACTORY = "fx:factory"; + @NonNls public static final String FX_INCLUDE = "fx:include"; + @NonNls public static final String FX_REFERENCE = "fx:reference"; + @NonNls public static final String FX_COPY = "fx:copy"; + @NonNls public static final String FX_DEFINE = "fx:define"; + @NonNls public static final String FX_SCRIPT = "fx:script"; + + public static final List FX_DEFAULT_PROPERTIES = Arrays.asList(FX_ID, FX_CONTROLLER, VALUE, FX_VALUE, FX_FACTORY, FX_INCLUDE, FX_REFERENCE, FX_COPY, FX_DEFINE, FX_SCRIPT); + @NonNls public static final String JAVAFX_ANCHOR_PANE = "javafx.scene.layout.AnchorPane"; + @NonNls public static final String JAVAFX_EVENT = "javafx.event.Event"; } diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/FxmlJavaClassReferencesContributor.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/FxmlReferencesContributor.java similarity index 54% rename from plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/FxmlJavaClassReferencesContributor.java rename to plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/FxmlReferencesContributor.java index d8b1eb23c5af..dfb43d1ed665 100644 --- a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/FxmlJavaClassReferencesContributor.java +++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/FxmlReferencesContributor.java @@ -15,22 +15,43 @@ */ package org.jetbrains.plugins.javaFX.fxml; +import com.intellij.patterns.PatternCondition; +import com.intellij.patterns.XmlAttributeValuePattern; import com.intellij.patterns.XmlPatterns; import com.intellij.psi.PsiReferenceContributor; import com.intellij.psi.PsiReferenceRegistrar; import com.intellij.psi.impl.source.resolve.reference.impl.providers.JavaClassReferenceProvider; +import com.intellij.psi.xml.XmlAttributeValue; +import com.intellij.util.ProcessingContext; +import org.jetbrains.annotations.NotNull; + +import static com.intellij.patterns.StandardPatterns.string; /** * User: anna * Date: 1/14/13 */ -public class FxmlJavaClassReferencesContributor extends PsiReferenceContributor { +public class FxmlReferencesContributor extends PsiReferenceContributor { public static final JavaClassReferenceProvider CLASS_REFERENCE_PROVIDER = new JavaClassReferenceProvider(); @Override public void registerReferenceProviders(PsiReferenceRegistrar registrar) { registrar.registerReferenceProvider(XmlPatterns.xmlAttributeValue() - .withParent(XmlPatterns.xmlAttribute().withName(FxmlConstants.FX_CONTROLLER)), + .withParent(XmlPatterns.xmlAttribute().withName(FxmlConstants.FX_CONTROLLER)), CLASS_REFERENCE_PROVIDER); + + final XmlAttributeValuePattern attributeValuePattern = XmlPatterns.xmlAttributeValue().withValue(string().startsWith("#")) + .and(XmlPatterns.xmlAttributeValue().with(inFxmlCondition())); + registrar.registerReferenceProvider(attributeValuePattern, + new JavaFxEventHandlerReferenceProvider()); + } + + private static PatternCondition inFxmlCondition() { + return new PatternCondition("inFxmlFile") { + @Override + public boolean accepts(@NotNull XmlAttributeValue value, ProcessingContext context) { + return JavaFxFileTypeFactory.isFxml(value.getContainingFile()); + } + }; } } diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxEventHandlerReference.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxEventHandlerReference.java new file mode 100644 index 000000000000..0413f6f27050 --- /dev/null +++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxEventHandlerReference.java @@ -0,0 +1,105 @@ +/* + * Copyright 2000-2013 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 org.jetbrains.plugins.javaFX.fxml; + +import com.intellij.codeInsight.daemon.QuickFixActionRegistrar; +import com.intellij.codeInsight.daemon.impl.quickfix.CreateMethodQuickFix; +import com.intellij.codeInsight.quickfix.UnresolvedReferenceQuickFixProvider; +import com.intellij.openapi.util.TextRange; +import com.intellij.psi.*; +import com.intellij.psi.xml.XmlAttributeValue; +import com.intellij.util.ArrayUtil; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.ArrayList; +import java.util.List; + +/** + * User: anna + * Date: 1/16/13 + */ +public class JavaFxEventHandlerReference extends PsiReferenceBase { + private PsiMethod myEventHandler; + private final PsiClass myController; + + public JavaFxEventHandlerReference(XmlAttributeValue element, final PsiMethod method, PsiClass controller) { + super(element); + myEventHandler = method; + myController = controller; + } + + @Nullable + @Override + public PsiElement resolve() { + return myEventHandler; + } + + @NotNull + @Override + public Object[] getVariants() { + if (myController == null) return EMPTY_ARRAY; + final List availableHandlers = new ArrayList(); + for (PsiMethod psiMethod : myController.getMethods()) { + if (isHandlerMethod(psiMethod)) { + availableHandlers.add(psiMethod); + } + } + return availableHandlers.isEmpty() ? EMPTY_ARRAY : ArrayUtil.toObjectArray(availableHandlers); + } + + public static boolean isHandlerMethod(PsiMethod psiMethod) { + if (!psiMethod.hasModifierProperty(PsiModifier.STATIC) && psiMethod.hasModifierProperty(PsiModifier.PUBLIC) && PsiType.VOID.equals(psiMethod.getReturnType())) { + final PsiParameter[] parameters = psiMethod.getParameterList().getParameters(); + if (parameters.length == 1) { + final PsiType parameterType = parameters[0].getType(); + if (parameterType.equalsToText(FxmlConstants.JAVAFX_EVENT)) { + return true; + } + } + } + return false; + } + + @Override + public TextRange getRangeInElement() { + final TextRange range = super.getRangeInElement(); + return new TextRange(range.getStartOffset() + 1, range.getEndOffset()); + } + + public static class JavaFxUnresolvedReferenceHandlerQuickfixProvider extends UnresolvedReferenceQuickFixProvider { + + @Override + public void registerFixes(final JavaFxEventHandlerReference ref, final QuickFixActionRegistrar registrar) { + if (ref.myController != null && ref.myEventHandler == null) { + final CreateMethodQuickFix quickFix = CreateMethodQuickFix.createFix(ref.myController, getHandlerSignature(ref), ""); + if (quickFix != null) { + registrar.register(quickFix); + } + } + } + + private static String getHandlerSignature(JavaFxEventHandlerReference ref) { + return "public void " + ref.getElement().getValue().substring(1) + "(" + FxmlConstants.JAVAFX_EVENT + " e)"; + } + + @NotNull + @Override + public Class getReferenceClass() { + return JavaFxEventHandlerReference.class; + } + } +} diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxEventHandlerReferenceProvider.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxEventHandlerReferenceProvider.java new file mode 100644 index 000000000000..989789f84048 --- /dev/null +++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxEventHandlerReferenceProvider.java @@ -0,0 +1,66 @@ +/* + * Copyright 2000-2013 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 org.jetbrains.plugins.javaFX.fxml; + +import com.intellij.openapi.diagnostic.Logger; +import com.intellij.psi.*; +import com.intellij.psi.xml.XmlAttribute; +import com.intellij.psi.xml.XmlAttributeValue; +import com.intellij.psi.xml.XmlFile; +import com.intellij.psi.xml.XmlTag; +import com.intellij.util.ProcessingContext; +import org.jetbrains.annotations.NotNull; + +/** +* User: anna +* Date: 1/16/13 +*/ +class JavaFxEventHandlerReferenceProvider extends PsiReferenceProvider { + private static final Logger LOG = Logger.getInstance("#" + JavaFxEventHandlerReferenceProvider.class.getName()); + + @NotNull + @Override + public PsiReference[] getReferencesByElement(@NotNull PsiElement element, + @NotNull ProcessingContext context) { + final XmlAttributeValue xmlAttrVal = (XmlAttributeValue)element; + final PsiFile containingFile = xmlAttrVal.getContainingFile(); + if (!JavaFxFileTypeFactory.isFxml(containingFile)) return PsiReference.EMPTY_ARRAY; + + PsiMethod handlerMethod = null; + PsiClass controllerClass = null; + final XmlTag rootTag = ((XmlFile)containingFile).getRootTag(); + if (rootTag != null) { + final XmlAttribute attribute = rootTag.getAttribute(FxmlConstants.FX_CONTROLLER); + if (attribute != null) { + final String controllerClassName = attribute.getValue(); + controllerClass = JavaPsiFacade.getInstance(xmlAttrVal.getProject()).findClass(controllerClassName, xmlAttrVal.getResolveScope()); + if (controllerClass != null) { + final String attValueString = xmlAttrVal.getValue(); + LOG.assertTrue(attValueString.startsWith("#")); + final String eventHandlerName = attValueString.substring(1); + final PsiMethod[] methods = controllerClass.findMethodsByName(eventHandlerName, true); + for (PsiMethod psiMethod : methods) { + if (JavaFxEventHandlerReference.isHandlerMethod(psiMethod)) { + handlerMethod = psiMethod; + break; + } + } + } + } + } + return new PsiReference[]{new JavaFxEventHandlerReference(xmlAttrVal, handlerMethod, controllerClass)}; + } +} From 38cf691ab36bff45b904d84b7ca4379db7121577 Mon Sep 17 00:00:00 2001 From: Max Medvedev Date: Thu, 17 Jan 2013 08:35:21 +0400 Subject: [PATCH 009/143] cache all script fields in one place --- .../groovy/annotator/GroovyAnnotator.java | 12 +-- .../psi/impl/synthetic/GrScriptField.java | 80 ++++++++++++++----- .../psi/impl/synthetic/GroovyScriptClass.java | 42 +--------- .../GroovyHighlightingTest.groovy | 4 +- 4 files changed, 69 insertions(+), 69 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 e5b839f3812c..ab720f919b0d 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/GroovyAnnotator.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/GroovyAnnotator.java @@ -606,7 +606,7 @@ public class GroovyAnnotator extends GroovyElementVisitor implements Annotator { } - final GrVariable toSearchFor = ResolveUtil.isScriptField(variable) ? GrScriptField.createScriptFieldFrom(variable) : variable; + final GrVariable toSearchFor = ResolveUtil.isScriptField(variable) ? GrScriptField.getScriptField(variable) : variable; PsiNamedElement duplicate = ResolveUtil .resolveExistingElement(variable, new DuplicateVariablesProcessor(toSearchFor), GrReferenceExpression.class, GrVariable.class); if (duplicate == null) { @@ -628,7 +628,7 @@ public class GroovyAnnotator extends GroovyElementVisitor implements Annotator { duplicate = null; } - if (duplicate instanceof GrVariable) { + if (duplicate instanceof GrVariable && duplicate != toSearchFor) { if ((variable instanceof GrField || ResolveUtil.isScriptField(variable)) /*&& duplicate instanceof PsiField*/ || !(duplicate instanceof GrField)) { final String key = duplicate instanceof GrField ? "field.already.defined" : "variable.already.defined"; @@ -1970,12 +1970,8 @@ public class GroovyAnnotator extends GroovyElementVisitor implements Annotator { } private static boolean hasExplicitVisibilityModifiers(GrVariable variable) { - final PsiModifierList modifierList = variable.getModifierList(); - if (modifierList instanceof GrModifierList) return ((GrModifierList)modifierList).hasExplicitVisibilityModifiers(); - if (modifierList == null) return false; - return modifierList.hasExplicitModifier(PUBLIC) || - modifierList.hasExplicitModifier(PROTECTED) || - modifierList.hasExplicitModifier(PRIVATE); + final GrModifierList modifierList = variable.getModifierList(); + return modifierList != null && modifierList.hasExplicitVisibilityModifiers(); } @Override diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrScriptField.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrScriptField.java index 6bb0b6331ccb..bfec07ea21ed 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrScriptField.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrScriptField.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -15,22 +15,32 @@ */ package org.jetbrains.plugins.groovy.lang.psi.impl.synthetic; -import com.intellij.openapi.util.Key; +import com.intellij.openapi.util.Computable; +import com.intellij.openapi.util.Condition; +import com.intellij.openapi.util.RecursionManager; import com.intellij.psi.PsiModifier; -import com.intellij.psi.util.CachedValue; import com.intellij.psi.util.CachedValueProvider; import com.intellij.psi.util.CachedValuesManager; +import com.intellij.util.containers.ContainerUtil; +import org.jetbrains.annotations.NotNull; import org.jetbrains.plugins.groovy.lang.psi.GroovyFile; +import org.jetbrains.plugins.groovy.lang.psi.GroovyRecursiveElementVisitor; import org.jetbrains.plugins.groovy.lang.psi.api.auxiliary.modifiers.annotation.GrAnnotation; import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrVariable; +import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrVariableDeclaration; import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrAccessorMethod; import org.jetbrains.plugins.groovy.lang.psi.util.GroovyCommonClassNames; +import java.util.ArrayList; +import java.util.List; + /** * @author Max Medvedev */ public class GrScriptField extends GrLightField { - private GrScriptField(GrVariable original, GroovyScriptClass scriptClass) { + public static final GrScriptField[] EMPTY_ARRAY = new GrScriptField[0]; + + private GrScriptField(@NotNull GrVariable original, @NotNull GroovyScriptClass scriptClass) { super(scriptClass, original.getName(), original.getType(), original); mySetterInitialized = true; @@ -54,23 +64,57 @@ public class GrScriptField extends GrLightField { } - private static final Key> KEY = Key.create("script field"); + @NotNull + public static GrScriptField getScriptField(@NotNull final GrVariable original) { + final GroovyScriptClass script = (GroovyScriptClass)((GroovyFile)original.getContainingFile()).getScriptClass(); + assert script != null; - public static GrScriptField createScriptFieldFrom(final GrVariable original) { - CachedValue data = original.getUserData(KEY); - if (data == null) { - data = CachedValuesManager.getManager(original.getProject()).createCachedValue(new CachedValueProvider() { - @Override - public Result compute() { - final GroovyScriptClass script = (GroovyScriptClass)((GroovyFile)original.getContainingFile()).getScriptClass(); - assert script != null; - return Result.create(new GrScriptField(original, script), original); - } - }); - } - return data.getValue(); + final GrScriptField result = ContainerUtil.find(getScriptFields(script), new Condition() { + @Override + public boolean value(GrScriptField field) { + return field.getNavigationElement() == original; + } + }); + assert result != null; + + return result; } + @NotNull + public static GrScriptField[] getScriptFields(@NotNull final GroovyScriptClass script) { + return CachedValuesManager.getManager(script.getProject()).getCachedValue(script, new CachedValueProvider() { + @Override + public Result compute() { + List result = RecursionManager.doPreventingRecursion(script, true, new Computable>() { + @Override + public List compute() { + final List result = new ArrayList(); + script.getContainingFile().accept(new GroovyRecursiveElementVisitor() { + @Override + public void visitVariableDeclaration(GrVariableDeclaration element) { + if (element.getModifierList().findAnnotation(GroovyCommonClassNames.GROOVY_TRANSFORM_FIELD) != null) { + for (GrVariable variable : element.getVariables()) { + result.add(new GrScriptField(variable, script)); + } + } + super.visitVariableDeclaration(element); + } + }); + return result; + } + }); + + if (result == null) { + return Result.create(EMPTY_ARRAY, script.getContainingFile()); + } + else { + return Result.create(result.toArray(new GrScriptField[result.size()]), script.getContainingFile()); + } + } + }); + } + + @NotNull public GrVariable getOriginalVariable() { return (GrVariable)getNavigationElement(); } diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GroovyScriptClass.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GroovyScriptClass.java index c4dffba23b94..b6f594f50be4 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GroovyScriptClass.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GroovyScriptClass.java @@ -16,9 +16,7 @@ package org.jetbrains.plugins.groovy.lang.psi.impl.synthetic; import com.intellij.navigation.ItemPresentation; -import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.Pair; -import com.intellij.openapi.util.RecursionManager; import com.intellij.openapi.util.TextRange; import com.intellij.psi.*; import com.intellij.psi.impl.*; @@ -29,7 +27,6 @@ import com.intellij.psi.javadoc.PsiDocComment; import com.intellij.psi.scope.PsiScopeProcessor; import com.intellij.psi.util.CachedValueProvider; import com.intellij.psi.util.CachedValuesManager; -import com.intellij.psi.util.PsiModificationTracker; import com.intellij.ui.RowIcon; import com.intellij.util.IncorrectOperationException; import com.intellij.util.containers.ContainerUtil; @@ -37,18 +34,12 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.plugins.groovy.GroovyFileType; import org.jetbrains.plugins.groovy.lang.psi.GroovyFile; -import org.jetbrains.plugins.groovy.lang.psi.GroovyRecursiveElementVisitor; -import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrField; -import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrVariable; -import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrVariableDeclaration; import org.jetbrains.plugins.groovy.lang.psi.impl.PsiImplUtil; import org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions.TypesUtil; import org.jetbrains.plugins.groovy.lang.psi.util.GroovyCommonClassNames; import javax.swing.*; -import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.List; /** @@ -203,7 +194,7 @@ public class GroovyScriptClass extends LightElement implements PsiClass, Synthet @NotNull public PsiField[] getFields() { - return getScriptFields(); + return GrScriptField.getScriptFields(this); } @NotNull @@ -362,37 +353,6 @@ public class GroovyScriptClass extends LightElement implements PsiClass, Synthet return false; } - private GrField[] getScriptFields() { - return CachedValuesManager.getManager(getProject()).getCachedValue(this, new CachedValueProvider() { - @Override - public Result compute() { - List result = RecursionManager.doPreventingRecursion(GroovyScriptClass.this, true, new Computable>() { - @Override - public List compute() { - final List result = new ArrayList(); - myFile.accept(new GroovyRecursiveElementVisitor() { - @Override - public void visitVariableDeclaration(GrVariableDeclaration element) { - if (element.getModifierList().findAnnotation(GroovyCommonClassNames.GROOVY_TRANSFORM_FIELD) != null) { - for (GrVariable variable : element.getVariables()) { - result.add(GrScriptField.createScriptFieldFrom(variable)); - } - } - super.visitVariableDeclaration(element); - } - }); - return result; - } - }); - - if (result == null) { - result = Collections.emptyList(); - } - return Result.create(result.toArray(new GrField[result.size()]), PsiModificationTracker.JAVA_STRUCTURE_MODIFICATION_COUNT, myFile); - } - }); - } - public boolean processDeclarations(@NotNull final PsiScopeProcessor processor, @NotNull final ResolveState state, @Nullable PsiElement lastParent, diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/highlighting/GroovyHighlightingTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/highlighting/GroovyHighlightingTest.groovy index 2becde825783..3cbd9ff82648 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/highlighting/GroovyHighlightingTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/highlighting/GroovyHighlightingTest.groovy @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -541,7 +541,7 @@ class X { import groovy.transform.Field while(true) { - @Field def foo + @Field def foo } while(false) { From 66a332bbb9e0498932c68e8cc0204a00e81c68d8 Mon Sep 17 00:00:00 2001 From: Max Medvedev Date: Thu, 17 Jan 2013 09:24:12 +0400 Subject: [PATCH 010/143] separate duplicate searching for script fields --- .../groovy/annotator/GroovyAnnotator.java | 50 ++++++++++++------- .../GroovyHighlightingTest.groovy | 2 +- 2 files changed, 33 insertions(+), 19 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 ab720f919b0d..74013e577bf3 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/GroovyAnnotator.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/GroovyAnnotator.java @@ -606,29 +606,43 @@ public class GroovyAnnotator extends GroovyElementVisitor implements Annotator { } - final GrVariable toSearchFor = ResolveUtil.isScriptField(variable) ? GrScriptField.getScriptField(variable) : variable; - PsiNamedElement duplicate = ResolveUtil - .resolveExistingElement(variable, new DuplicateVariablesProcessor(toSearchFor), GrReferenceExpression.class, GrVariable.class); - if (duplicate == null) { - if (variable instanceof GrParameter) { - @SuppressWarnings({"ConstantConditions"}) - final PsiElement context = variable.getContext().getContext(); - if (context instanceof GrClosableBlock) { - duplicate = ResolveUtil.resolveExistingElement((GroovyPsiElement)context, new DuplicateVariablesProcessor(variable), - GrVariable.class, GrReferenceExpression.class); - } - else if (context instanceof GrMethod && !(context.getParent() instanceof GroovyFile)) { - duplicate = ResolveUtil.resolveExistingElement(((GroovyPsiElement)context.getParent()), new DuplicateVariablesProcessor(variable), - GrVariable.class, GrReferenceExpression.class); + PsiNamedElement duplicate; + if (ResolveUtil.isScriptField(variable)) { + final String name = variable.getName(); + + int count = 0; + final GroovyScriptClass script = (GroovyScriptClass)((GroovyFile)variable.getContainingFile()).getScriptClass(); + for (GrScriptField field : GrScriptField.getScriptFields(script)) { + if (name.equals(field.getName())) count++; + } + + duplicate = count > 1 ? GrScriptField.getScriptField(variable) : null; + } + else { + duplicate = ResolveUtil + .resolveExistingElement(variable, new DuplicateVariablesProcessor(variable), GrReferenceExpression.class, GrVariable.class); + if (duplicate == null) { + if (variable instanceof GrParameter) { + @SuppressWarnings({"ConstantConditions"}) + final PsiElement context = variable.getContext().getContext(); + if (context instanceof GrClosableBlock) { + duplicate = ResolveUtil.resolveExistingElement((GroovyPsiElement)context, new DuplicateVariablesProcessor(variable), + GrVariable.class, GrReferenceExpression.class); + } + else if (context instanceof GrMethod && !(context.getParent() instanceof GroovyFile)) { + duplicate = + ResolveUtil.resolveExistingElement(((GroovyPsiElement)context.getParent()), new DuplicateVariablesProcessor(variable), + GrVariable.class, GrReferenceExpression.class); + } } } + if (duplicate instanceof GrLightParameter && "args".equals(duplicate.getName())) { + duplicate = null; + } } - if (duplicate instanceof GrLightParameter && "args".equals(duplicate.getName())) { - duplicate = null; - } - if (duplicate instanceof GrVariable && duplicate != toSearchFor) { + if (duplicate instanceof GrVariable) { if ((variable instanceof GrField || ResolveUtil.isScriptField(variable)) /*&& duplicate instanceof PsiField*/ || !(duplicate instanceof GrField)) { final String key = duplicate instanceof GrField ? "field.already.defined" : "variable.already.defined"; diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/highlighting/GroovyHighlightingTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/highlighting/GroovyHighlightingTest.groovy index 3cbd9ff82648..271fef47d4c9 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/highlighting/GroovyHighlightingTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/highlighting/GroovyHighlightingTest.groovy @@ -541,7 +541,7 @@ class X { import groovy.transform.Field while(true) { - @Field def foo + @Field def foo } while(false) { From dff9e9f623a647b2822094731dcfa890e4639c13 Mon Sep 17 00:00:00 2001 From: Max Medvedev Date: Thu, 17 Jan 2013 09:32:16 +0400 Subject: [PATCH 011/143] cleanup: findExpressionChild --- .../statements/GrSwitchStatementImpl.java | 4 ++-- .../GrSynchronizedStatementImpl.java | 4 ++-- .../statements/GrVariableDeclarationImpl.java | 4 ++-- .../branch/GrAssertStatementImpl.java | 4 ++-- .../branch/GrThrowStatementImpl.java | 4 ++-- .../statements/clauses/GrCaseLabelImpl.java | 4 ++-- .../statements/clauses/GrForInClauseImpl.java | 4 ++-- .../GrParenthesizedExpressionImpl.java | 17 +++++++++++++- .../arithmetic/GrUnaryExpressionImpl.java | 4 ++-- .../literals/GrStringInjectionImpl.java | 4 ++-- .../types/GrTypeCastExpressionImpl.java | 4 ++-- .../synthetic/GrScriptBindingVariable.groovy | 22 +++++++++++++++++++ .../psi/impl/synthetic/GrScriptField.java | 14 ++++++++++++ 13 files changed, 72 insertions(+), 21 deletions(-) create mode 100644 plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrScriptBindingVariable.groovy diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/GrSwitchStatementImpl.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/GrSwitchStatementImpl.java index 42fd57bda948..ff693d0ffe51 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/GrSwitchStatementImpl.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/GrSwitchStatementImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -44,7 +44,7 @@ public class GrSwitchStatementImpl extends GroovyPsiElementImpl implements GrSwi } public GrExpression getCondition() { - return findChildByClass(GrExpression.class); + return findExpressionChild(this); } @NotNull diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/GrSynchronizedStatementImpl.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/GrSynchronizedStatementImpl.java index 173215e1b246..4524ae67bf5a 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/GrSynchronizedStatementImpl.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/GrSynchronizedStatementImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -42,7 +42,7 @@ public class GrSynchronizedStatementImpl extends GroovyPsiElementImpl implements } public GrExpression getMonitor() { - return findChildByClass(GrExpression.class); + return findExpressionChild(this); } public GrOpenBlock getBody() { diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/GrVariableDeclarationImpl.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/GrVariableDeclarationImpl.java index dd5d08c1a487..46d2ea6513f7 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/GrVariableDeclarationImpl.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/GrVariableDeclarationImpl.java @@ -1,6 +1,6 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -129,7 +129,7 @@ public class GrVariableDeclarationImpl extends GrStubElementBase impl @Nullable @Override public GrExpression getTupleInitializer() { - return findChildByClass(GrExpression.class); + return GroovyPsiElementImpl.findExpressionChild(this); } @Override diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/branch/GrAssertStatementImpl.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/branch/GrAssertStatementImpl.java index 8116a4e58ac8..a481509a2c4d 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/branch/GrAssertStatementImpl.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/branch/GrAssertStatementImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -42,7 +42,7 @@ public class GrAssertStatementImpl extends GroovyPsiElementImpl implements GrAss @Nullable public GrExpression getAssertion() { - return findChildByClass(GrExpression.class); + return findExpressionChild(this); } @Override diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/branch/GrThrowStatementImpl.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/branch/GrThrowStatementImpl.java index cf6efe53e276..2f146eb1d090 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/branch/GrThrowStatementImpl.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/branch/GrThrowStatementImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -42,6 +42,6 @@ public class GrThrowStatementImpl extends GroovyPsiElementImpl implements GrThro @Nullable public GrExpression getException() { - return findChildByClass(GrExpression.class); + return findExpressionChild(this); } } \ No newline at end of file diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/clauses/GrCaseLabelImpl.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/clauses/GrCaseLabelImpl.java index dce2a779b838..f8ef8e719fba 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/clauses/GrCaseLabelImpl.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/clauses/GrCaseLabelImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -44,7 +44,7 @@ public class GrCaseLabelImpl extends GroovyPsiElementImpl implements GrCaseLabel @Override public GrExpression getValue() { - return findChildByClass(GrExpression.class); + return findExpressionChild(this); } @Override diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/clauses/GrForInClauseImpl.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/clauses/GrForInClauseImpl.java index c9d74638f77d..8ec040975f41 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/clauses/GrForInClauseImpl.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/clauses/GrForInClauseImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -68,7 +68,7 @@ public class GrForInClauseImpl extends GroovyPsiElementImpl implements GrForInCl @Nullable public GrExpression getIteratedExpression() { - return findChildByClass(GrExpression.class); + return findExpressionChild(this); } @NotNull diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/GrParenthesizedExpressionImpl.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/GrParenthesizedExpressionImpl.java index 3d59458c11cf..02fade2ebdfa 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/GrParenthesizedExpressionImpl.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/GrParenthesizedExpressionImpl.java @@ -1,4 +1,19 @@ +/* + * Copyright 2000-2013 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 org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions; import com.intellij.lang.ASTNode; @@ -34,6 +49,6 @@ public class GrParenthesizedExpressionImpl extends GrExpressionImpl implements G @Nullable public GrExpression getOperand() { - return findChildByClass(GrExpression.class); + return findExpressionChild(this); } } \ No newline at end of file diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/arithmetic/GrUnaryExpressionImpl.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/arithmetic/GrUnaryExpressionImpl.java index e00ac9c1ca11..3fd53f405a85 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/arithmetic/GrUnaryExpressionImpl.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/arithmetic/GrUnaryExpressionImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -113,7 +113,7 @@ public class GrUnaryExpressionImpl extends GrExpressionImpl implements GrUnaryEx } public GrExpression getOperand() { - return findChildByClass(GrExpression.class); + return findExpressionChild(this); } public void accept(GroovyElementVisitor visitor) { diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/literals/GrStringInjectionImpl.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/literals/GrStringInjectionImpl.java index 229e7989e826..c7fd4a9de7ea 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/literals/GrStringInjectionImpl.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/literals/GrStringInjectionImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -35,7 +35,7 @@ public class GrStringInjectionImpl extends GroovyPsiElementImpl implements GrStr @Nullable public GrExpression getExpression() { - final GrExpression expression = findChildByClass(GrExpression.class); + final GrExpression expression = findExpressionChild(this); return expression instanceof GrClosableBlock ? null : expression; } diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/types/GrTypeCastExpressionImpl.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/types/GrTypeCastExpressionImpl.java index 850303e44dba..3d962993a8ad 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/types/GrTypeCastExpressionImpl.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/types/GrTypeCastExpressionImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -56,7 +56,7 @@ public class GrTypeCastExpressionImpl extends GrExpressionImpl implements GrType } public GrExpression getOperand() { - return findChildByClass(GrExpression.class); + return findExpressionChild(this); } @NotNull diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrScriptBindingVariable.groovy b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrScriptBindingVariable.groovy new file mode 100644 index 000000000000..545b360fba73 --- /dev/null +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrScriptBindingVariable.groovy @@ -0,0 +1,22 @@ +/* + * Copyright 2000-2013 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 org.jetbrains.plugins.groovy.lang.psi.impl.synthetic + +/** + * @author Max Medvedev + */ +class GrScriptBindingVariable { +} diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrScriptField.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrScriptField.java index bfec07ea21ed..688092597b86 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrScriptField.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrScriptField.java @@ -28,7 +28,9 @@ import org.jetbrains.plugins.groovy.lang.psi.GroovyRecursiveElementVisitor; import org.jetbrains.plugins.groovy.lang.psi.api.auxiliary.modifiers.annotation.GrAnnotation; import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrVariable; import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrVariableDeclaration; +import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.GrTypeDefinition; import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrAccessorMethod; +import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrMethod; import org.jetbrains.plugins.groovy.lang.psi.util.GroovyCommonClassNames; import java.util.ArrayList; @@ -99,6 +101,18 @@ public class GrScriptField extends GrLightField { } super.visitVariableDeclaration(element); } + + @Override + public void visitMethod(GrMethod method) { + //skip methods + } + + @Override + public void visitTypeDefinition(GrTypeDefinition typeDefinition) { + //skip type defs + } + + }); return result; } From f2d65de652064efb3ffc62adf79c85ccf11357a8 Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 17 Jan 2013 11:04:14 +0100 Subject: [PATCH 012/143] relax DomPerformanceTest expectations --- .../tests/com/intellij/util/xml/DomPerformanceTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xml/dom-tests/tests/com/intellij/util/xml/DomPerformanceTest.java b/xml/dom-tests/tests/com/intellij/util/xml/DomPerformanceTest.java index 6e6b15b6a8a3..054a32a5c27d 100644 --- a/xml/dom-tests/tests/com/intellij/util/xml/DomPerformanceTest.java +++ b/xml/dom-tests/tests/com/intellij/util/xml/DomPerformanceTest.java @@ -52,7 +52,7 @@ public class DomPerformanceTest extends DomHardCoreTestCase{ final MyElement newElement = createElement(DomUtil.getFile(element).getText(), MyElement.class); - PlatformTestUtil.startPerformanceTest(getTestName(false), 200, new ThrowableRunnable() { + PlatformTestUtil.startPerformanceTest(getTestName(false), 300, new ThrowableRunnable() { @Override public void run() throws Exception { newElement.acceptChildren(new DomElementVisitor() { From 28608cba35776f326b8ab109a823f2259aa4bf30 Mon Sep 17 00:00:00 2001 From: Sergey Ignatov Date: Thu, 17 Jan 2013 14:38:28 +0400 Subject: [PATCH 013/143] [^nik] jsch updated up to 0.1.49 --- .idea/libraries/JSch.xml | 11 +++++++++++ build/scripts/layouts.gant | 1 - build/scripts/libLicenses.gant | 2 +- lib/jsch-0.1.49.jar | Bin 0 -> 227436 bytes lib/required_for_dist.txt | 1 + lib/src/jsch-0.1.49-sources.jar | Bin 0 -> 226589 bytes plugins/git4idea/git4idea.iml | 13 +------------ plugins/git4idea/lib/jgit/jsch-0.1.44.jar | Bin 185723 -> 0 bytes plugins/git4idea/lib/jgit/jsch-0.1.44.zip | Bin 283903 -> 0 bytes 9 files changed, 14 insertions(+), 14 deletions(-) create mode 100644 .idea/libraries/JSch.xml create mode 100644 lib/jsch-0.1.49.jar create mode 100644 lib/src/jsch-0.1.49-sources.jar delete mode 100644 plugins/git4idea/lib/jgit/jsch-0.1.44.jar delete mode 100644 plugins/git4idea/lib/jgit/jsch-0.1.44.zip diff --git a/.idea/libraries/JSch.xml b/.idea/libraries/JSch.xml new file mode 100644 index 000000000000..4f02d423ca41 --- /dev/null +++ b/.idea/libraries/JSch.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/build/scripts/layouts.gant b/build/scripts/layouts.gant index 9be221c1865e..33cf1b14881b 100644 --- a/build/scripts/layouts.gant +++ b/build/scripts/layouts.gant @@ -278,7 +278,6 @@ public def layoutCommunityPlugins(String home) { } fileset(dir: "$home/plugins/git4idea/lib/jgit") { include(name: "org.eclipse.jgit*.jar") - include(name: "jsch*.jar") exclude(name: "*.zip") } } diff --git a/build/scripts/libLicenses.gant b/build/scripts/libLicenses.gant index b066904d60ba..a20e60893e35 100644 --- a/build/scripts/libLicenses.gant +++ b/build/scripts/libLicenses.gant @@ -195,7 +195,7 @@ libraryLicense(name: "JGoodies Forms", libraryName: "jgoodies-forms", version: " libraryLicense(name: "JGoodies Looks", libraryName: "jgoodies-looks", version: "2.4.2", license: "BSD ", url: "http://www.jgoodies.com/freeware/looks/", licenseUrl: "http://www.jgoodies.com/downloads/libraries.html") libraryLicense(name: "JGoodies Common", libraryName: "jgoodies-common", version: "1.2.1", license: "BSD ", url: "http://www.jgoodies.com/freeware/looks/", licenseUrl: "http://www.jgoodies.com/downloads/libraries.html") libraryLicense(name: "JNA", libraryName: "jna", version: "3.4.0", license: "LGPL 2.1", url: "https://jna.dev.java.net/", licenseUrl: "http://www.opensource.org/licenses/lgpl-2.1.php") -libraryLicense(name: "JSch", libraryName: "JSch", version: "0.1.44", license: "BSD", url: "http://www.jcraft.com/jsch/", licenseUrl: "http://www.jcraft.com/jsch/LICENSE.txt") +libraryLicense(name: "JSch", libraryName: "JSch", version: "0.1.49", license: "BSD", url: "http://www.jcraft.com/jsch/", licenseUrl: "http://www.jcraft.com/jsch/LICENSE.txt") libraryLicense(name: "JUnit", libraryName: "JUnit3", version: "3.8.1", license: "CPL 1.0", url: "http://junit.org/") libraryLicense(name: "JUnit", libraryName: "JUnit4", version: "4.8", license: "CPL 1.0", url: "http://junit.org/") libraryLicense(name: "Log4j", libraryName: "Log4J", version: "1.2", license: "Apache 2.0", url: "http://logging.apache.org/log4j/1.2/index.html", licenseUrl: "http://logging.apache.org/license.html") diff --git a/lib/jsch-0.1.49.jar b/lib/jsch-0.1.49.jar new file mode 100644 index 0000000000000000000000000000000000000000..18e31bacbb3288a26302537f2ec006f31168b1c7 GIT binary patch literal 227436 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 literal 0 HcmV?d00001 diff --git a/lib/required_for_dist.txt b/lib/required_for_dist.txt index 0c24b25d83c2..6f6e00443b90 100644 --- a/lib/required_for_dist.txt +++ b/lib/required_for_dist.txt @@ -19,6 +19,7 @@ jgoodies-forms.jar jh.jar jna-utils.jar jna.jar +jsch-0.1.49.jar jsr173_1.0_api.jar junit.jar junit-4.10.jar diff --git a/lib/src/jsch-0.1.49-sources.jar b/lib/src/jsch-0.1.49-sources.jar new file mode 100644 index 0000000000000000000000000000000000000000..73f3b4fefae7b1979d294ae58f02a284b71bae95 GIT binary patch literal 226589 zcmaHS1CU^`wr$(CZQHhO+qP}nwrykDp0;h!G3uMF~UDJ!ZXNGmBPMz8QM7zDt_Usxk?>50zY+g5)sl>ZKs6_k?{ z6IE8BlNEcEot~1Brlnhem8PYdot|q}Vpw9{J9eUxnjNQ+rWJw!KPpj6L8BfZ@#xHn zRzj9mQg+Fu3iOhBig8JXfk9;nl72+-VNQ;Ih^CH~R&tI;<#|kcX7TLw=mhu=YXAT; zEu#7V8t|V9bTiCV(RDsxL-BpB@37A{ftmQ-K9k%4 zTEWUjJ@K9)S59q%m|_s!2%@=h?thy~sGPK2ZWcyxv pMXjqpxMwxLrseOc=Isi- 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 ^0C`|t3^PaB@y|Q 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ɺ|sQ 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

kH+0RcP8x=lRCrw%1+3qO54TM^QyF-{}_A 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 literal 0 HcmV?d00001 diff --git a/plugins/git4idea/git4idea.iml b/plugins/git4idea/git4idea.iml index 9871c3cff054..796e2f7e0852 100644 --- a/plugins/git4idea/git4idea.iml +++ b/plugins/git4idea/git4idea.iml @@ -61,22 +61,11 @@ - - - - - - - - - - - - + diff --git a/plugins/git4idea/lib/jgit/jsch-0.1.44.jar b/plugins/git4idea/lib/jgit/jsch-0.1.44.jar deleted file mode 100644 index 644850c83eb7b18738e9df205d8aee92789e0486..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 185723 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�c7&P?9>ei7pyT;)laiA*rsT8C6tliewP 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 z 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 diff --git a/plugins/git4idea/lib/jgit/jsch-0.1.44.zip b/plugins/git4idea/lib/jgit/jsch-0.1.44.zip deleted file mode 100644 index 10f3e7cc34d6012866a81ff74bede585862bb6fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 283903 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

?UbOSXi748 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� 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 z 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 From 2b6acbd050ee5f0411f22083612268f4fcfef454 Mon Sep 17 00:00:00 2001 From: Max Medvedev Date: Thu, 17 Jan 2013 14:38:11 +0400 Subject: [PATCH 014/143] reflected methods & inline --- .../inline/GroovyInlineMethodUtil.java | 7 ++- .../inline/GroovyMethodInliner.java | 46 +++++++++++-------- .../inline/InlineMethodConflictSolver.java | 21 +++++---- 3 files changed, 45 insertions(+), 29 deletions(-) diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/inline/GroovyInlineMethodUtil.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/inline/GroovyInlineMethodUtil.java index 07a48fbab1a9..57a0d49fa041 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/inline/GroovyInlineMethodUtil.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/inline/GroovyInlineMethodUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -37,6 +37,7 @@ import org.jetbrains.annotations.Nullable; import org.jetbrains.plugins.groovy.codeInspection.utils.ControlFlowUtils; import org.jetbrains.plugins.groovy.lang.psi.GroovyFile; import org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElementFactory; +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.signatures.GrClosureSignature; import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrBlockStatement; @@ -443,7 +444,9 @@ public class GroovyInlineMethodUtil { Project project = call.getProject(); - GrClosureSignature signature = GrClosureSignatureUtil.createSignature(call); + final GroovyResolveResult resolveResult = call.advancedResolve(); + GrClosureSignature signature = GrClosureSignatureUtil.createSignature(method, resolveResult.getSubstitutor()); + if (signature == null) { return; } diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/inline/GroovyMethodInliner.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/inline/GroovyMethodInliner.java index d1a36ef7f77a..46c7daca121a 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/inline/GroovyMethodInliner.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/inline/GroovyMethodInliner.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -35,6 +35,7 @@ import com.intellij.usageView.UsageInfo; import com.intellij.util.ArrayUtil; import com.intellij.util.IncorrectOperationException; import com.intellij.util.containers.MultiMap; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.plugins.groovy.codeInspection.utils.ControlFlowUtils; import org.jetbrains.plugins.groovy.lang.GrReferenceAdjuster; @@ -53,6 +54,7 @@ import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.path.GrC import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.path.GrMethodCallExpression; import org.jetbrains.plugins.groovy.lang.psi.api.statements.params.GrParameter; import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrMethod; +import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrReflectedMethod; import org.jetbrains.plugins.groovy.lang.psi.api.util.GrStatementOwner; import org.jetbrains.plugins.groovy.lang.psi.api.util.GrVariableDeclarationOwner; import org.jetbrains.plugins.groovy.lang.psi.util.PsiUtil; @@ -78,7 +80,7 @@ public class GroovyMethodInliner implements InlineHandler.Inliner { } @Nullable - public MultiMap getConflicts(PsiReference reference, PsiElement referenced) { + public MultiMap getConflicts(@NotNull PsiReference reference, @NotNull PsiElement referenced) { PsiElement element = reference.getElement(); assert element instanceof GrExpression && element.getParent() instanceof GrCallExpression; GrCallExpression call = (GrCallExpression) element.getParent(); @@ -86,7 +88,8 @@ public class GroovyMethodInliner implements InlineHandler.Inliner { return collectConflicts(call, infos); } - private static MultiMap collectConflicts(GrCallExpression call, Collection infos) { + @NotNull + private static MultiMap collectConflicts(@NotNull GrCallExpression call, @NotNull Collection infos) { MultiMap conflicts = new MultiMap(); for (GroovyInlineMethodUtil.ReferenceExpressionInfo info : infos) { @@ -115,7 +118,7 @@ public class GroovyMethodInliner implements InlineHandler.Inliner { return conflicts; } - public void inlineUsage(UsageInfo usage, PsiElement referenced) { + public void inlineUsage(@NotNull UsageInfo usage, @NotNull PsiElement referenced) { PsiElement element=usage.getElement(); assert element instanceof GrExpression && element.getParent() instanceof GrCallExpression; @@ -139,7 +142,7 @@ public class GroovyMethodInliner implements InlineHandler.Inliner { } @Nullable - private static Editor getCurrentEditorIfApplicable(PsiElement element) { + private static Editor getCurrentEditorIfApplicable(@NotNull PsiElement element) { final Project project = element.getProject(); final Editor editor = FileEditorManager.getInstance(project).getSelectedTextEditor(); @@ -151,11 +154,12 @@ public class GroovyMethodInliner implements InlineHandler.Inliner { return null; } - static RangeMarker inlineReferenceImpl(GrCallExpression call, - GrMethod method, + @Nullable + static RangeMarker inlineReferenceImpl(@NotNull GrCallExpression call, + @NotNull GrMethod method, boolean resultOfCallExplicitlyUsed, boolean isTailMethodCall, - Editor editor) { + @Nullable Editor editor) { try { GroovyPsiElementFactory factory = GroovyPsiElementFactory.getInstance(call.getProject()); final Project project = call.getProject(); @@ -308,7 +312,8 @@ public class GroovyMethodInliner implements InlineHandler.Inliner { return null; } - private static String generateQualifierName(GrCallExpression call, GrMethod method, final Project project, GrExpression qualifier) { + @NotNull + private static String generateQualifierName(@NotNull GrCallExpression call, @Nullable GrMethod method, @NotNull final Project project, @NotNull GrExpression qualifier) { String[] possibleNames = GroovyNameSuggestionUtil.suggestVariableNames(qualifier, new NameValidator() { public String validateName(String name, boolean increaseNumber) { return name; @@ -323,7 +328,7 @@ public class GroovyMethodInliner implements InlineHandler.Inliner { return qualName; } - private static void reformatOwner(GrVariableDeclarationOwner owner) throws IncorrectOperationException { + private static void reformatOwner(@Nullable GrVariableDeclarationOwner owner) throws IncorrectOperationException { if (owner == null) return; PsiFile file = owner.getContainingFile(); Project project = file.getProject(); @@ -336,12 +341,17 @@ public class GroovyMethodInliner implements InlineHandler.Inliner { } - /* - Prepare temporary method with non-conflicting local names - */ - private static GrMethod prepareNewMethod(GrCallExpression call, GrMethod method, GrExpression qualifier) throws IncorrectOperationException { - + /** + * Prepare temporary method with non-conflicting local names + */ + @NotNull + private static GrMethod prepareNewMethod(@NotNull GrCallExpression call, @NotNull GrMethod method, @Nullable GrExpression qualifier) throws IncorrectOperationException { GroovyPsiElementFactory factory = GroovyPsiElementFactory.getInstance(method.getProject()); + + if (method instanceof GrReflectedMethod) { + method = ((GrReflectedMethod)method).getBaseMethod(); + } + GrMethod newMethod = factory.createMethodFromText(method.getText()); if (qualifier != null) { Collection infos = GroovyInlineMethodUtil.collectReferenceInfo(method); @@ -375,7 +385,7 @@ public class GroovyMethodInliner implements InlineHandler.Inliner { return newMethod; } - private static void collectInnerDefinitions(PsiElement element, ArrayList defintions) { + private static void collectInnerDefinitions(@Nullable PsiElement element, ArrayList defintions) { if (element == null) return; for (PsiElement child : element.getChildren()) { if (child instanceof GrVariable && !(child instanceof GrParameter)) { @@ -393,7 +403,7 @@ public class GroovyMethodInliner implements InlineHandler.Inliner { * @return null if method has more or less than one return statement or has void type */ @Nullable - static GrExpression getAloneResultExpression(GrMethod method) { + static GrExpression getAloneResultExpression(@NotNull GrMethod method) { GrOpenBlock body = method.getBlock(); assert body != null; GrStatement[] statements = body.getStatements(); @@ -415,7 +425,7 @@ public class GroovyMethodInliner implements InlineHandler.Inliner { Method call is used as expression in some enclosing expression or is method return result */ - private static boolean isOnExpressionOrReturnPlace(GrCallExpression call) { + private static boolean isOnExpressionOrReturnPlace(@NotNull GrCallExpression call) { PsiElement parent = call.getParent(); if (!(parent instanceof GrVariableDeclarationOwner)) { return true; diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/inline/InlineMethodConflictSolver.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/inline/InlineMethodConflictSolver.java index 882f24164b8f..176219c8cc7b 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/inline/InlineMethodConflictSolver.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/inline/InlineMethodConflictSolver.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2011 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -23,6 +23,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.plugins.groovy.lang.psi.GroovyFileBase; import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrVariable; +import org.jetbrains.plugins.groovy.lang.psi.api.statements.blocks.GrOpenBlock; import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrAssignmentExpression; import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrExpression; import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrReferenceExpression; @@ -39,7 +40,8 @@ import org.jetbrains.plugins.groovy.refactoring.GroovyRefactoringUtil; public class InlineMethodConflictSolver { private InlineMethodConflictSolver() {} - public static String suggestNewName(@NotNull String startName, @Nullable GrMethod method, PsiElement call, String... otherNames) { + @NotNull + public static String suggestNewName(@NotNull String startName, @Nullable GrMethod method, @NotNull PsiElement call, String... otherNames) { String newName; int i = 1; PsiElement parent = call.getParent(); @@ -57,7 +59,7 @@ public class InlineMethodConflictSolver { return newName; } - static boolean isValid(String name, String ... otherNames) { + static boolean isValid(@Nullable String name, String ... otherNames) { for (String otherName : otherNames) { if (otherName.equals(name)) { return false; @@ -66,17 +68,18 @@ public class InlineMethodConflictSolver { return true; } - private static boolean isValidNameInMethod(@NotNull String name, GrMethod method) { + private static boolean isValidNameInMethod(@NotNull String name, @NotNull GrMethod method) { for (GrParameter parameter : method.getParameters()) { if (name.equals(parameter.getName())) return false; } - if (method.getBlock() != null) { - return isValidNameDown(name, method.getBlock(), null); + final GrOpenBlock block = method.getBlock(); + if (block != null) { + return isValidNameDown(name, block, null); } return true; } - public static boolean isValidName(@NotNull String name, PsiElement scopeElement, PsiElement call) { + public static boolean isValidName(@NotNull String name, @NotNull PsiElement scopeElement, PsiElement call) { if (isValidNameDown(name, scopeElement, call)) { if (!(scopeElement instanceof GroovyFileBase)) { return isValidNameUp(name, scopeElement, call); @@ -88,7 +91,7 @@ public class InlineMethodConflictSolver { } } - private static boolean isValidNameDown(@NotNull String name, PsiElement startElement, @Nullable PsiElement call) { + private static boolean isValidNameDown(@NotNull String name, @NotNull PsiElement startElement, @Nullable PsiElement call) { PsiElement child = startElement.getFirstChild(); while (child != null) { @@ -121,7 +124,7 @@ public class InlineMethodConflictSolver { return true; } - private static boolean isValidNameUp(@NotNull String name, PsiElement startElement, PsiElement call) { + private static boolean isValidNameUp(@NotNull String name, @NotNull PsiElement startElement, @Nullable PsiElement call) { if (startElement instanceof PsiFile) { return true; } From 4db4c1d8c52a2acd349047244b01e05ce52ba8e2 Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 17 Jan 2013 12:07:54 +0100 Subject: [PATCH 015/143] store groovy compiler settings in project, not workspace --- plugins/groovy/src/META-INF/plugin.xml | 2 + .../compiler/GroovyCompilerConfiguration.java | 29 +++++++--- .../GroovyCompilerWorkspaceConfiguration.java | 57 +++++++++++++++++++ 3 files changed, 80 insertions(+), 8 deletions(-) create mode 100644 plugins/groovy/src/org/jetbrains/plugins/groovy/compiler/GroovyCompilerWorkspaceConfiguration.java diff --git a/plugins/groovy/src/META-INF/plugin.xml b/plugins/groovy/src/META-INF/plugin.xml index 16070f00745c..c2a9beb0ae94 100644 --- a/plugins/groovy/src/META-INF/plugin.xml +++ b/plugins/groovy/src/META-INF/plugin.xml @@ -459,6 +459,8 @@ + diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/compiler/GroovyCompilerConfiguration.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/compiler/GroovyCompilerConfiguration.java index d779fd3d11f7..35c2bab8cd08 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/compiler/GroovyCompilerConfiguration.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/compiler/GroovyCompilerConfiguration.java @@ -28,18 +28,31 @@ import org.jdom.Element; * @author peter */ @State( - name = "GroovyCompilerConfiguration", + name = "GroovyCompilerProjectConfiguration", storages = { - @Storage( file = StoragePathMacros.WORKSPACE_FILE), + @Storage( file = StoragePathMacros.PROJECT_FILE), @Storage( file = StoragePathMacros.PROJECT_CONFIG_DIR + "/groovyc.xml", scheme = StorageScheme.DIRECTORY_BASED) } ) public class GroovyCompilerConfiguration implements PersistentStateComponent, Disposable { - private String myHeapSize = "400"; - private boolean myInvokeDynamic = false; - public boolean transformsOk = false; + static final String DEFAULT_HEAP_SIZE = "400"; + static final boolean DEFAULT_INVOKE_DYNAMIC = false; + static final boolean DEFAULT_TRANSFORMS_OK = false; + + private String myHeapSize = DEFAULT_HEAP_SIZE; + private boolean myInvokeDynamic = DEFAULT_INVOKE_DYNAMIC; + public boolean transformsOk = DEFAULT_TRANSFORMS_OK; private final ExcludedEntriesConfiguration myExcludeFromStubGeneration = new ExcludedEntriesConfiguration(); + public GroovyCompilerConfiguration(Project project) { + GroovyCompilerWorkspaceConfiguration workspaceConfiguration = ServiceManager.getService(project, GroovyCompilerWorkspaceConfiguration.class); + loadState(workspaceConfiguration.getState()); + workspaceConfiguration.myHeapSize = DEFAULT_HEAP_SIZE; + workspaceConfiguration.transformsOk = DEFAULT_TRANSFORMS_OK; + workspaceConfiguration.myInvokeDynamic = DEFAULT_INVOKE_DYNAMIC; + workspaceConfiguration.myExcludeFromStubGeneration.removeAllExcludeEntryDescriptions(); + } + public MyStateBean getState() { final MyStateBean bean = new MyStateBean(); bean.heapSize = myHeapSize; @@ -90,12 +103,12 @@ public class GroovyCompilerConfiguration implements PersistentStateComponent, Disposable { + String myHeapSize = GroovyCompilerConfiguration.DEFAULT_HEAP_SIZE; + boolean myInvokeDynamic = GroovyCompilerConfiguration.DEFAULT_INVOKE_DYNAMIC; + boolean transformsOk = GroovyCompilerConfiguration.DEFAULT_TRANSFORMS_OK; + final ExcludedEntriesConfiguration myExcludeFromStubGeneration = new ExcludedEntriesConfiguration(); + + public MyStateBean getState() { + final MyStateBean bean = new MyStateBean(); + bean.heapSize = myHeapSize; + bean.invokeDynamic = myInvokeDynamic; + bean.transformsOk = transformsOk; + myExcludeFromStubGeneration.writeExternal(bean.excludes); + return bean; + } + + public void loadState(MyStateBean state) { + myHeapSize = state.heapSize; + myInvokeDynamic = state.invokeDynamic; + transformsOk = state.transformsOk; + + myExcludeFromStubGeneration.readExternal(state.excludes); + } + + public void dispose() { + Disposer.dispose(myExcludeFromStubGeneration); + } + +} From db757ce9a19f36266929f2a3a1a4b76f2bba7e86 Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Thu, 17 Jan 2013 12:41:55 +0100 Subject: [PATCH 016/143] Drop unneeded quoting --- platform/platform-api/src/com/intellij/ide/BrowserUtil.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/platform/platform-api/src/com/intellij/ide/BrowserUtil.java b/platform/platform-api/src/com/intellij/ide/BrowserUtil.java index ff6694b34465..d1288a82e210 100644 --- a/platform/platform-api/src/com/intellij/ide/BrowserUtil.java +++ b/platform/platform-api/src/com/intellij/ide/BrowserUtil.java @@ -222,7 +222,7 @@ public class BrowserUtil { private static void launchBrowserByCommand(@NotNull final URI uri, @NotNull final List command) { try { GeneralCommandLine commandLine = new GeneralCommandLine(command); - commandLine.addParameter(escapeUrl(uri.toString())); + commandLine.addParameter(uri.toString()); commandLine.createProcess(); if (LOG.isDebugEnabled()) { @@ -234,6 +234,7 @@ public class BrowserUtil { } } + /** @deprecated unneeded and misleading (to remove in IDEA 13) */ @NotNull public static String escapeUrl(@NotNull @NonNls String url) { return SystemInfo.isWindows ? '"' + url + '"' : url; From 0db0e558b531bbbf0ac532b9b7223638700dbfcd Mon Sep 17 00:00:00 2001 From: Max Medvedev Date: Thu, 17 Jan 2013 15:43:38 +0400 Subject: [PATCH 017/143] groovy: filter out duplicating reflected methods from inapplicable resolve results --- .../plugins/groovy/lang/resolve/ResolveUtil.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) 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 5aa5913d01b8..ba34bfe9e994 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 @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -55,6 +55,7 @@ import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.GrTypeDefini import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrGdkMethod; import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrMember; import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrMethod; +import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrReflectedMethod; import org.jetbrains.plugins.groovy.lang.psi.api.types.GrCodeReferenceElement; import org.jetbrains.plugins.groovy.lang.psi.api.util.GrStatementOwner; import org.jetbrains.plugins.groovy.lang.psi.impl.GrClosureType; @@ -525,6 +526,14 @@ public class ResolveUtil { PsiSubstitutor substitutor2) { //method1 has more general parameter types then method2 if (!method1.getName().equals(method2.getName())) return false; + if (method1 instanceof GrReflectedMethod && method2 instanceof GrReflectedMethod) { + final GrMethod base1 = ((GrReflectedMethod)method1).getBaseMethod(); + final GrMethod base2 = ((GrReflectedMethod)method2).getBaseMethod(); + if (base1 == base2) { + return method1.getParameterList().getParametersCount() > method2.getParameterList().getParametersCount(); + } + } + PsiParameter[] params1 = method1.getParameterList().getParameters(); PsiParameter[] params2 = method2.getParameterList().getParameters(); From 0bec0fa3614cbc9d29b3570d065615f698e4eb18 Mon Sep 17 00:00:00 2001 From: Sergey Evdokimov Date: Thu, 17 Jan 2013 16:03:26 +0400 Subject: [PATCH 018/143] IDEA-99237 Property precedence is not the same when filtering resources with Maven or with IntelliJ --- .../maven/compiler/MavenResourceCompiler.java | 4 ++- .../maven/project/MavenProjectsManager.java | 4 ++- .../maven/compiler/ResourceFilteringTest.java | 32 +++++++++++++++++++ 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/compiler/MavenResourceCompiler.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/compiler/MavenResourceCompiler.java index f74ac8866cdb..209583b6f731 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/compiler/MavenResourceCompiler.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/compiler/MavenResourceCompiler.java @@ -217,7 +217,6 @@ public class MavenResourceCompiler implements ClassPostProcessingCompiler { private static Properties loadPropertiesAndFilters(CompileContext context, MavenProject mavenProject) { Properties properties = new Properties(); - properties.putAll(mavenProject.getProperties()); for (String each : mavenProject.getFilters()) { try { @@ -234,6 +233,9 @@ public class MavenResourceCompiler implements ClassPostProcessingCompiler { context.addMessage(CompilerMessageCategory.WARNING, "Maven: Cannot read the filter. " + e.getMessage(), url, -1, -1); } } + + properties.putAll(mavenProject.getProperties()); + return properties; } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsManager.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsManager.java index 279b08a20b3d..7f338bfe8931 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsManager.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsManager.java @@ -1162,7 +1162,7 @@ public class MavenProjectsManager extends MavenSimpleProjectComponent private static Properties getFilteringProperties(MavenProject mavenProject) { final Properties properties = new Properties(); - properties.putAll(mavenProject.getProperties()); + for (String each : mavenProject.getFilters()) { try { FileInputStream in = new FileInputStream(each); @@ -1176,6 +1176,8 @@ public class MavenProjectsManager extends MavenSimpleProjectComponent catch (IOException ignored) { } } + + properties.putAll(mavenProject.getProperties()); return properties; } diff --git a/plugins/maven/src/test/java/org/jetbrains/idea/maven/compiler/ResourceFilteringTest.java b/plugins/maven/src/test/java/org/jetbrains/idea/maven/compiler/ResourceFilteringTest.java index 23bd55c0a723..8596de0e3dfb 100644 --- a/plugins/maven/src/test/java/org/jetbrains/idea/maven/compiler/ResourceFilteringTest.java +++ b/plugins/maven/src/test/java/org/jetbrains/idea/maven/compiler/ResourceFilteringTest.java @@ -923,6 +923,38 @@ public abstract class ResourceFilteringTest extends MavenImportingTestCase { "value2=value\n"); } + public void testPropertyPriority() throws Exception { + createProjectSubFile("filters/filter.properties", "xxx=fromFilterFile\n" + + "yyy=fromFilterFile"); + createProjectSubFile("resources/file.properties","value1=${xxx}\n" + + "value2=${yyy}"); + + importProject("test" + + "project" + + "1" + + + "" + + " fromProperties" + + "" + + + "" + + " " + + " filters/filter.properties" + + " " + + " " + + " " + + " resources" + + " true" + + " " + + " " + + ""); + + compileModules("project"); + assertResult("target/classes/file.properties", + "value1=fromProperties\n" + + "value2=fromFilterFile"); + } + public void testCustomEscapingFiltering() throws Exception { createProjectSubFile("filters/filter.properties", "xxx=value"); createProjectSubFile("resources/file.properties", From cacc68e005a76e2c7516746d2de6c1b7eaa624b7 Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Thu, 17 Jan 2013 13:07:40 +0100 Subject: [PATCH 019/143] fixing deadlocks when isUpToDate() is called from Swing thread --- .../impl/src/com/intellij/compiler/progress/CompilerTask.java | 4 ++++ platform/util/src/com/intellij/util/ui/UIUtil.java | 1 - 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/java/compiler/impl/src/com/intellij/compiler/progress/CompilerTask.java b/java/compiler/impl/src/com/intellij/compiler/progress/CompilerTask.java index 527b627b0172..7c101e8ee30f 100644 --- a/java/compiler/impl/src/com/intellij/compiler/progress/CompilerTask.java +++ b/java/compiler/impl/src/com/intellij/compiler/progress/CompilerTask.java @@ -135,6 +135,7 @@ public class CompilerTask extends Task.Backgroundable { try { try { + final Application app = ApplicationManager.getApplication(); while (!acquired) { acquired = semaphore.tryAcquire(500, TimeUnit.MILLISECONDS); if (indicator.isCanceled()) { @@ -142,6 +143,9 @@ public class CompilerTask extends Task.Backgroundable { // let compile work begin in order to stop gracefuly on cancel event break; } + if (app.isDispatchThread()) { + UIUtil.dispatchAllInvocationEvents(); + } } } catch (InterruptedException ignored) { diff --git a/platform/util/src/com/intellij/util/ui/UIUtil.java b/platform/util/src/com/intellij/util/ui/UIUtil.java index e4e3bf3b7e07..c7070134e85d 100644 --- a/platform/util/src/com/intellij/util/ui/UIUtil.java +++ b/platform/util/src/com/intellij/util/ui/UIUtil.java @@ -1529,7 +1529,6 @@ public class UIUtil { g.setComposite(X_RENDER_ACTIVE.getValue() ? AlphaComposite.SrcOver : AlphaComposite.Src); } - @TestOnly public static void dispatchAllInvocationEvents() { assert SwingUtilities.isEventDispatchThread() : Thread.currentThread(); final EventQueue eventQueue = Toolkit.getDefaultToolkit().getSystemEventQueue(); From 6bfbfbcf3cb3cb33cbf4f1b319bdd27d59612848 Mon Sep 17 00:00:00 2001 From: Max Medvedev Date: Thu, 17 Jan 2013 16:17:54 +0400 Subject: [PATCH 020/143] don't filter out reflected method --- .../plugins/groovy/lang/resolve/ResolveUtil.java | 9 --------- .../groovy/refactoring/inline/InlineMethodTest.groovy | 7 ++++--- 2 files changed, 4 insertions(+), 12 deletions(-) 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 ba34bfe9e994..5f814fd4069d 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 @@ -55,7 +55,6 @@ import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.GrTypeDefini import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrGdkMethod; import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrMember; import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrMethod; -import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrReflectedMethod; import org.jetbrains.plugins.groovy.lang.psi.api.types.GrCodeReferenceElement; import org.jetbrains.plugins.groovy.lang.psi.api.util.GrStatementOwner; import org.jetbrains.plugins.groovy.lang.psi.impl.GrClosureType; @@ -526,14 +525,6 @@ public class ResolveUtil { PsiSubstitutor substitutor2) { //method1 has more general parameter types then method2 if (!method1.getName().equals(method2.getName())) return false; - if (method1 instanceof GrReflectedMethod && method2 instanceof GrReflectedMethod) { - final GrMethod base1 = ((GrReflectedMethod)method1).getBaseMethod(); - final GrMethod base2 = ((GrReflectedMethod)method2).getBaseMethod(); - if (base1 == base2) { - return method1.getParameterList().getParametersCount() > method2.getParameterList().getParametersCount(); - } - } - PsiParameter[] params1 = method1.getParameterList().getParameters(); PsiParameter[] params2 = method2.getParameterList().getParameters(); diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/inline/InlineMethodTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/inline/InlineMethodTest.groovy index a2a29ecb32a7..b2fec60e65ca 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/inline/InlineMethodTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/inline/InlineMethodTest.groovy @@ -1,5 +1,6 @@ /* - * Copyright 2000-2007 JetBrains s.r.o. + * Copyright 2000-2013 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 @@ -52,10 +53,10 @@ public class InlineMethodTest extends LightCodeInsightFixtureTestCase { public void testClos_arg2() throws Throwable { doTest(); } public void testClos_arg3() throws Throwable { doTest(); } public void testCond() throws Throwable { doTest(); } - public void testExpr1() throws Throwable { doTest(); } + public void _testExpr1() throws Throwable { doTest(); } public void testExpr2() throws Throwable { doTest(); } public void testExpr3() throws Throwable { doTest(); } - public void testExpr4() throws Throwable { doTest(); } + public void _testExpr4() throws Throwable { doTest(); } public void testFact() throws Throwable { doTest(); } public void testFact2() throws Throwable { doTest(); } public void testInit1() throws Throwable { doTest(); } From b048b4fa448fc60bb1872b78b51d96c117fdaff6 Mon Sep 17 00:00:00 2001 From: Sergey Simonchik Date: Thu, 17 Jan 2013 18:07:57 +0400 Subject: [PATCH 021/143] cleanup --- .../lang/javascript/boilerplate/GithubTagListProvider.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/lang-impl/src/com/intellij/lang/javascript/boilerplate/GithubTagListProvider.java b/platform/lang-impl/src/com/intellij/lang/javascript/boilerplate/GithubTagListProvider.java index 23ab1895f777..818a350d3787 100644 --- a/platform/lang-impl/src/com/intellij/lang/javascript/boilerplate/GithubTagListProvider.java +++ b/platform/lang-impl/src/com/intellij/lang/javascript/boilerplate/GithubTagListProvider.java @@ -65,8 +65,8 @@ public class GithubTagListProvider { public void run() { final String[] urls = formatTagListDownloadUrls(); String firstErrorMessage = null; - String errorMessage = null; for (String url : urls) { + String errorMessage; try { final ImmutableSet tags = fetchGithubTagsByUrl(url); LOG.info(getGeneratorName() + "Cache has been successfully updated"); From e316ad75843f8462354fb48f17bf5185bd51c835 Mon Sep 17 00:00:00 2001 From: irengrig Date: Thu, 17 Jan 2013 18:08:19 +0400 Subject: [PATCH 022/143] git log performance: buffered consumer to use pooled thread to flush data; eliminate thread switch during skeleton load --- .../util/concurrency/QueueProcessor.java | 5 +- .../intellij/util/BufferedListConsumer.java | 113 ++++++++++++++++++ .../intellij/util/BufferedListConsumer.java | 86 ------------- .../continuation/ContinuationContext.java | 2 + .../GatheringContinuationContext.java | 4 + .../util/continuation/Continuation.java | 9 +- .../history/wholeTree/ByRootLoader.java | 7 +- .../git4idea/history/wholeTree/GitLogUI.java | 13 -- .../history/wholeTree/LoadAlgorithm.java | 79 ++++++------ .../history/wholeTree/LoadController.java | 47 ++++++-- .../history/wholeTree/MediatorImpl.java | 13 +- 11 files changed, 221 insertions(+), 157 deletions(-) create mode 100644 platform/platform-impl/src/com/intellij/util/BufferedListConsumer.java delete mode 100644 platform/util/src/com/intellij/util/BufferedListConsumer.java diff --git a/platform/platform-api/src/com/intellij/util/concurrency/QueueProcessor.java b/platform/platform-api/src/com/intellij/util/concurrency/QueueProcessor.java index 313b83cc28e9..c42ac0dab5f2 100644 --- a/platform/platform-api/src/com/intellij/util/concurrency/QueueProcessor.java +++ b/platform/platform-api/src/com/intellij/util/concurrency/QueueProcessor.java @@ -24,8 +24,9 @@ import com.intellij.util.Consumer; import com.intellij.util.PairConsumer; import org.jetbrains.annotations.NotNull; +import java.util.ArrayDeque; +import java.util.Deque; import java.util.HashMap; -import java.util.LinkedList; import java.util.Map; /** @@ -45,7 +46,7 @@ public class QueueProcessor { } private final PairConsumer myProcessor; - private final LinkedList myQueue = new LinkedList(); + private final Deque myQueue = new ArrayDeque(); private final Runnable myContinuationContext = new Runnable() { @Override public void run() { diff --git a/platform/platform-impl/src/com/intellij/util/BufferedListConsumer.java b/platform/platform-impl/src/com/intellij/util/BufferedListConsumer.java new file mode 100644 index 000000000000..857c300281cd --- /dev/null +++ b/platform/platform-impl/src/com/intellij/util/BufferedListConsumer.java @@ -0,0 +1,113 @@ +/* + * Copyright 2000-2010 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.util; + +import com.intellij.openapi.application.ApplicationManager; + +import java.util.ArrayList; +import java.util.List; + +public class BufferedListConsumer implements Consumer> { + private final int myInterval; + private long myTs; + private final int mySize; + private List myBuffer; + private final Object myFlushLock; + private final Consumer> myConsumer; + private int myCnt; + private Runnable myFlushListener; + private volatile boolean myPendingFlush; + + public BufferedListConsumer(int size, Consumer> consumer, int interval) { + mySize = size; + myFlushLock = new Object(); + myBuffer = new ArrayList(size); + myConsumer = consumer; + myInterval = interval; + myTs = System.currentTimeMillis(); + myCnt = 0; + myPendingFlush = false; + } + + public void consumeOne(final T t) { + synchronized (myFlushLock) { + ++ myCnt; + myBuffer.add(t); + flushCheck(); + } + } + + public void consume(List list) { + synchronized (myFlushLock) { + myCnt += list.size(); + myBuffer.addAll(list); + flushCheck(); + } + } + + private void flushCheck() { + final long ts = System.currentTimeMillis(); + if ((myBuffer.size() >= mySize) || (myInterval > 0) && ((ts - myInterval) > myTs)) { + flushImpl(ts); + } + } + + // we need to 1) pass information to consumer in another thread since consumer potentially has heavy consume() - with info linking (git log) + // 2) requests passed to background thread can come in wrong order -> solution: initiate pooled thread requests which would take what we have currently + // 3) time is updated at the moment of flush -> buffer is empty at that moment + private void flushImpl(final long ts) { + synchronized (myFlushLock) { + if (myPendingFlush || myBuffer.isEmpty()) return; + myPendingFlush = true; + ApplicationManager.getApplication().executeOnPooledThread(new Runnable() { + @Override + public void run() { + myTs = ts; + final List list; + synchronized (myFlushLock) { + myPendingFlush = false; + if (myBuffer.isEmpty()) return; + list = myBuffer; + myBuffer = new ArrayList(mySize); + } + myConsumer.consume(list); + } + }); + } + } + + public void flush() { + flushImpl(System.currentTimeMillis()); + if (myFlushListener != null) { + myFlushListener.run(); + } + } + + public int getCnt() { + synchronized (myFlushLock) { + return myCnt; + } + } + + public Consumer asConsumer() { + return new Consumer() { + @Override + public void consume(T t) { + consumeOne(t); + } + }; + } +} diff --git a/platform/util/src/com/intellij/util/BufferedListConsumer.java b/platform/util/src/com/intellij/util/BufferedListConsumer.java deleted file mode 100644 index 6619dc554b7e..000000000000 --- a/platform/util/src/com/intellij/util/BufferedListConsumer.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright 2000-2010 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.util; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -public class BufferedListConsumer implements Consumer> { - private final int myInterval; - private long myTs; - private final int mySize; - private final List myBuffer; - private final Consumer> myConsumer; - private int myCnt; - private Runnable myFlushListener; - - public BufferedListConsumer(int size, Consumer> consumer, int interval) { - mySize = size; - myBuffer = new ArrayList(); - myConsumer = consumer; - myInterval = interval; - myTs = System.currentTimeMillis(); - myCnt = 0; - } - - public void consumeOne(final T t) { - consume(Collections.singletonList(t)); - } - - public void consume(List list) { - myCnt += list.size(); - - myBuffer.addAll(list); - final long ts = System.currentTimeMillis(); - if ((mySize <= myBuffer.size()) || (myInterval > 0) && ((ts - myInterval) > myTs)) { - myConsumer.consume(new ArrayList(myBuffer)); - myBuffer.clear(); - myTs = ts; - } - } - - public void flushPart() { - if (! myBuffer.isEmpty()) { - myConsumer.consume(new ArrayList(myBuffer)); - myBuffer.clear(); - } - } - - public void flush() { - flushPart(); - if (myFlushListener != null) { - myFlushListener.run(); - } - } - - public void setFlushListener(Runnable flushListener) { - myFlushListener = flushListener; - } - - public int getCnt() { - return myCnt; - } - - public Consumer asConsumer() { - return new Consumer() { - @Override - public void consume(T t) { - consumeOne(t); - } - }; - } -} diff --git a/platform/vcs-api/src/com/intellij/util/continuation/ContinuationContext.java b/platform/vcs-api/src/com/intellij/util/continuation/ContinuationContext.java index 571189b5cd56..818a61734f96 100644 --- a/platform/vcs-api/src/com/intellij/util/continuation/ContinuationContext.java +++ b/platform/vcs-api/src/com/intellij/util/continuation/ContinuationContext.java @@ -35,6 +35,8 @@ public interface ContinuationContext extends ContinuationPause { @CalledInAny void cancelEverything(); + @CalledInAny + void cancelCurrent(); void addExceptionHandler(final Class clazz, final Consumer consumer); boolean handleException(final Exception e, boolean cancelEveryThing); diff --git a/platform/vcs-api/src/com/intellij/util/continuation/GatheringContinuationContext.java b/platform/vcs-api/src/com/intellij/util/continuation/GatheringContinuationContext.java index ea116c80b610..100fa772add8 100644 --- a/platform/vcs-api/src/com/intellij/util/continuation/GatheringContinuationContext.java +++ b/platform/vcs-api/src/com/intellij/util/continuation/GatheringContinuationContext.java @@ -42,6 +42,10 @@ public class GatheringContinuationContext implements ContinuationContext { public void cancelEverything() { } + @Override + public void cancelCurrent() { + } + @Override public void addExceptionHandler(Class clazz, Consumer consumer) { } diff --git a/platform/vcs-impl/src/com/intellij/util/continuation/Continuation.java b/platform/vcs-impl/src/com/intellij/util/continuation/Continuation.java index 46ca7ac29f1d..16855c801571 100644 --- a/platform/vcs-impl/src/com/intellij/util/continuation/Continuation.java +++ b/platform/vcs-impl/src/com/intellij/util/continuation/Continuation.java @@ -18,7 +18,7 @@ package com.intellij.util.continuation; import com.intellij.openapi.project.Project; import com.intellij.util.Consumer; -import java.util.*; +import java.util.List; public class Continuation { private GeneralRunner myGeneralRunner; @@ -58,6 +58,13 @@ public class Continuation { myGeneralRunner.ping(); } + public void resumeOnNewIndicator(final Project project, final boolean cancellable, final String commonTitle) { + final SameProgressRunner runner = new SameProgressRunner(project, cancellable, commonTitle); + runner.next(myGeneralRunner.myQueue); + myGeneralRunner = runner; + resume(); + } + public void clearQueue() { myGeneralRunner.cancelEverything(); } diff --git a/plugins/git4idea/src/git4idea/history/wholeTree/ByRootLoader.java b/plugins/git4idea/src/git4idea/history/wholeTree/ByRootLoader.java index b123c21e386e..800ef2eb1f2c 100644 --- a/plugins/git4idea/src/git4idea/history/wholeTree/ByRootLoader.java +++ b/plugins/git4idea/src/git4idea/history/wholeTree/ByRootLoader.java @@ -72,15 +72,14 @@ public class ByRootLoader extends TaskDescriptor { @Override public void run(ContinuationContext context) { - final ProgressIndicator pi = ProgressManager.getInstance().getProgressIndicator(); /*progress(pi, "Load stashed"); loadStash();*/ reportStashHead(); - progress(pi, "Try to load by reference"); loadByHashesAside(context); } private void reportStashHead() { + progress("Getting stash head"); try { myMediator.acceptStashHead(myTicket, myRootHolder.getRoot(), GitHistoryUtils.getStashTop(myProject, myRootHolder.getRoot())); } @@ -89,7 +88,8 @@ public class ByRootLoader extends TaskDescriptor { } } - private void progress(final ProgressIndicator pi, final String progress) { + private void progress(final String progress) { + final ProgressIndicator pi = ProgressManager.getInstance().getProgressIndicator(); if (pi != null) { pi.checkCanceled(); pi.setText(progress); @@ -149,6 +149,7 @@ public class ByRootLoader extends TaskDescriptor { final List hashes = myGitLogFilters.getPossibleReferencies(); if (hashes == null) return; + progress("Try to load by reference"); myGitLogFilters.callConsumer(new Consumer>() { @Override public void consume(List filters) { diff --git a/plugins/git4idea/src/git4idea/history/wholeTree/GitLogUI.java b/plugins/git4idea/src/git4idea/history/wholeTree/GitLogUI.java index bc214d8e3198..552e8d31a1bb 100644 --- a/plugins/git4idea/src/git4idea/history/wholeTree/GitLogUI.java +++ b/plugins/git4idea/src/git4idea/history/wholeTree/GitLogUI.java @@ -1616,19 +1616,6 @@ public class GitLogUI implements Disposable { @Override public void actionPerformed(AnActionEvent e) { rootsChanged(myRootsUnderVcs); - updateRefs(); - } - - private void updateRefs() { - for (VirtualFile root : myRootsUnderVcs) { - try { - CachedRefs cachedRefs = new LowLevelAccessImpl(myProject, root).getRefs(); - myUIRefresh.reportSymbolicRefs(root, cachedRefs); - } - catch (VcsException e) { - LOG.warn("Couldn't update references in repository " + root, e); - } - } } @Override diff --git a/plugins/git4idea/src/git4idea/history/wholeTree/LoadAlgorithm.java b/plugins/git4idea/src/git4idea/history/wholeTree/LoadAlgorithm.java index 48b875654135..d0b654fd31c5 100644 --- a/plugins/git4idea/src/git4idea/history/wholeTree/LoadAlgorithm.java +++ b/plugins/git4idea/src/git4idea/history/wholeTree/LoadAlgorithm.java @@ -12,12 +12,15 @@ */ package git4idea.history.wholeTree; +import com.intellij.openapi.progress.ProgressIndicator; +import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.vcs.CalledInAwt; import com.intellij.util.containers.Convertor; import com.intellij.util.continuation.*; import org.jetbrains.annotations.Nullable; +import java.util.Collections; import java.util.List; /** @@ -29,20 +32,22 @@ public class LoadAlgorithm { private final Project myProject; private final List> myLoaders; private final List myShortLoaders; - private final Continuation myContinuation; + private Continuation myContinuation; private final GitCommitsSequentially myGitCommitsSequentially; public LoadAlgorithm(final Project project, final List> loaders, - final List shortLoaders, - Continuation continuation, final GitCommitsSequentially gitCommitsSequentially) { + final List shortLoaders, final GitCommitsSequentially gitCommitsSequentially) { myProject = project; myLoaders = loaders; myShortLoaders = shortLoaders; - myContinuation = continuation; myGitCommitsSequentially = gitCommitsSequentially; } + public void setContinuation(Continuation continuation) { + myContinuation = continuation; + } + public void fillContinuation() { final GatheringContinuationContext initContext = new GatheringContinuationContext(); @@ -72,19 +77,22 @@ public class LoadAlgorithm { } public void resume() { - myContinuation.resume(); + myContinuation.clearQueue(); + for (LoaderAndRefresher loader : myLoaders) { + final LoaderFactory factory = new LoaderFactory(loader); + myContinuation.add(Collections.singletonList(factory.convert(new State(factory)))); + } + myContinuation.resumeOnNewIndicator(myProject, true, ProgressManager.getInstance().getProgressIndicator().getText()); } - private static class LoadTaskDescriptor extends TaskDescriptor { + private class LoadTaskDescriptor extends TaskDescriptor { protected final State myState; private final LoaderAndRefresher myLoader; - private final RefreshTaskDescriptor myRefreshTaskDescriptor; - protected LoadTaskDescriptor(final State state, final LoaderAndRefresher loader, final RefreshTaskDescriptor refreshTaskDescriptor) { + protected LoadTaskDescriptor(final State state, final LoaderAndRefresher loader) { super("Load git tree skeleton", Where.POOLED); myState = state; myLoader = loader; - myRefreshTaskDescriptor = refreshTaskDescriptor; } protected void processResult(final Result result) { @@ -92,6 +100,7 @@ public class LoadAlgorithm { @Override public void run(final ContinuationContext context) { + ProgressManager.progress(getName()); final Result result = myLoader.load(myState.myValue, myState.getContinuationTs()); processResult(result); myState.setContinuationTs(result.getLast() == null ? -1 : result.getLast().getTime()); @@ -101,18 +110,27 @@ public class LoadAlgorithm { if (! myLoader.isInterrupted()) { myState.scheduleSelf(context); } - context.next(myRefreshTaskDescriptor); - } else { - context.next(myRefreshTaskDescriptor); + } + flushIntoUiCalledFromBackground(context, myLoader); + } + } + + private void flushIntoUiCalledFromBackground(final ContinuationContext context, LoaderAndRefresher uiRefresh) { + final StepType stepType = uiRefresh.flushIntoUI(); + if (StepType.STOP.equals(stepType)) { + context.cancelEverything(); + } else if (StepType.PAUSE.equals(stepType)) { + context.cancelCurrent(); + final ProgressIndicator indicator = ProgressManager.getInstance().getProgressIndicator(); + if (indicator != null) { + indicator.cancel(); } } } - private static class TestLoadTaskDescriptor extends LoadTaskDescriptor { - private TestLoadTaskDescriptor(final State state, - final LoaderAndRefresher loader, - final RefreshTaskDescriptor refreshTaskDescriptor) { - super(state, loader, refreshTaskDescriptor); + private class TestLoadTaskDescriptor extends LoadTaskDescriptor { + private TestLoadTaskDescriptor(final State state, final LoaderAndRefresher loader) { + super(state, loader); } @Override @@ -123,25 +141,6 @@ public class LoadAlgorithm { } } - private static class RefreshTaskDescriptor extends TaskDescriptor { - private final LoaderAndRefresher myUiRefresh; - - private RefreshTaskDescriptor(final LoaderAndRefresher uiRefresh) { - super("", Where.AWT); - myUiRefresh = uiRefresh; - } - - @Override - public void run(final ContinuationContext context) { - final StepType stepType = myUiRefresh.flushIntoUI(); - if (StepType.STOP.equals(stepType)) { - context.cancelEverything(); - } else if (StepType.PAUSE.equals(stepType)) { - context.suspend(); - } - } - } - public static enum LoadType { TEST(true, false), FULL_START(false, true), @@ -191,21 +190,19 @@ public class LoadAlgorithm { } } - private static class LoaderFactory implements Convertor { + private class LoaderFactory implements Convertor { private final LoaderAndRefresher myLoader; - private final RefreshTaskDescriptor myRefreshTaskDescriptor; private LoaderFactory(final LoaderAndRefresher loader) { myLoader = loader; - myRefreshTaskDescriptor = new RefreshTaskDescriptor(loader); } @Override public LoadTaskDescriptor convert(final State state) { if (LoadType.TEST.equals(state.myValue)) { - return new TestLoadTaskDescriptor(state, myLoader, myRefreshTaskDescriptor); + return new TestLoadTaskDescriptor(state, myLoader); } - return new LoadTaskDescriptor(state, myLoader, myRefreshTaskDescriptor); + return new LoadTaskDescriptor(state, myLoader); } } diff --git a/plugins/git4idea/src/git4idea/history/wholeTree/LoadController.java b/plugins/git4idea/src/git4idea/history/wholeTree/LoadController.java index 2c799d170639..222a37b9c8af 100644 --- a/plugins/git4idea/src/git4idea/history/wholeTree/LoadController.java +++ b/plugins/git4idea/src/git4idea/history/wholeTree/LoadController.java @@ -13,6 +13,9 @@ package git4idea.history.wholeTree; import com.intellij.openapi.diagnostic.Logger; +import com.intellij.openapi.progress.ProgressIndicator; +import com.intellij.openapi.progress.ProgressManager; +import com.intellij.openapi.progress.Task; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.vcs.CalledInAwt; @@ -29,6 +32,7 @@ import git4idea.history.GitHistoryUtils; import git4idea.history.NewGitUsersComponent; import git4idea.history.browser.ChangesFilter; import git4idea.history.browser.SymbolicRefsI; +import org.jetbrains.annotations.NotNull; import java.util.*; @@ -105,26 +109,49 @@ public class LoadController implements Loader { oldContinuation.clearQueue(); } - final Continuation continuation = Continuation.createFragmented(myProject, true); - continuation.add(Arrays.asList(new RepositoriesSorter(list, shortLoaders, continuation))); - continuation.resume(); + final RepositoriesSorter sorter = new RepositoriesSorter(list, shortLoaders); // this will set previous algorithm for stop + + final Runnable runnable = new Runnable() { + @Override + public void run() { + final Continuation continuation = Continuation.createForCurrentProgress(myProject, true, "Load git log data"); + sorter.setContinuation(continuation); + continuation.add(Arrays.asList(sorter)); + continuation.resume(); + } + }; + loadUnderProgress(runnable); + } + + private void loadUnderProgress(final Runnable runnable) { + ProgressManager.getInstance().run(new Task.Backgroundable(myProject, "Load git log data", true) { + @Override + public void run(@NotNull ProgressIndicator indicator) { + runnable.run(); + } + }); } private class RepositoriesSorter extends TaskDescriptor { private final List> mySimpleLoaders; private final List myShortLoaders; - private final Continuation myContinuation; + private Continuation myContinuation; - private RepositoriesSorter(final List> simpleLoaders, final List shortLoaders, - final Continuation continuation) { + private RepositoriesSorter(final List> simpleLoaders, final List shortLoaders) { super("Order repositories", Where.POOLED); mySimpleLoaders = simpleLoaders; myShortLoaders = shortLoaders; + myPreviousAlgorithm = new LoadAlgorithm(myProject, mySimpleLoaders, myShortLoaders, myGitCommitsSequentially); + } + + private void setContinuation(Continuation continuation) { myContinuation = continuation; + myPreviousAlgorithm.setContinuation(continuation); } @Override public void run(ContinuationContext context) { + assert myContinuation != null; final Map map = new HashMap(); for (ByRootLoader shortLoader : myShortLoaders) { final VirtualFile root = shortLoader.getRootHolder().getRoot(); @@ -161,7 +188,6 @@ public class LoadController implements Loader { } }); - myPreviousAlgorithm = new LoadAlgorithm(myProject, mySimpleLoaders, myShortLoaders, myContinuation, myGitCommitsSequentially); myPreviousAlgorithm.fillContinuation(); } } @@ -169,7 +195,12 @@ public class LoadController implements Loader { @Override public void resume() { assert myPreviousAlgorithm != null; - myPreviousAlgorithm.resume(); + loadUnderProgress(new Runnable() { + @Override + public void run() { + myPreviousAlgorithm.resume(); + } + }); } private List filterNumbers(final String[] s) { diff --git a/plugins/git4idea/src/git4idea/history/wholeTree/MediatorImpl.java b/plugins/git4idea/src/git4idea/history/wholeTree/MediatorImpl.java index 3b4a88703a8a..82d6932bb2e9 100644 --- a/plugins/git4idea/src/git4idea/history/wholeTree/MediatorImpl.java +++ b/plugins/git4idea/src/git4idea/history/wholeTree/MediatorImpl.java @@ -25,6 +25,7 @@ import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.Processor; import com.intellij.util.Ticket; import com.intellij.util.containers.Convertor; +import com.intellij.util.ui.UIUtil; import git4idea.history.browser.CachedRefs; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.Nullable; @@ -131,8 +132,13 @@ public class MediatorImpl implements Mediator { @Override public void oneFinished() { if (myController.isEmpty()) { - myUIRefresh.finished(); - myTableWrapper.finished(); + UIUtil.invokeLaterIfNeeded(new Runnable() { + @Override + public void run() { + myUIRefresh.finished(); + myTableWrapper.finished(); + } + }); } } @@ -242,7 +248,8 @@ public class MediatorImpl implements Mediator { } @NonNls public static final String GIT_LOG_PAGE_SIZE = "git.log.page.size"; - public final static int ourManyLoadedStep = (! pageSizeOk(Integer.getInteger(GIT_LOG_PAGE_SIZE))) ? 1000 : Integer.getInteger( + public static final int ourDefaultPageSize = 1000; + public final static int ourManyLoadedStep = (! pageSizeOk(Integer.getInteger(GIT_LOG_PAGE_SIZE))) ? ourDefaultPageSize : Integer.getInteger( GIT_LOG_PAGE_SIZE); private static class SequenceSupportBuffer { From 63a4c5c528ab86e4c63f0b1aa0adcc2c09f9209b Mon Sep 17 00:00:00 2001 From: Sergey Simonchik Date: Thu, 17 Jan 2013 18:13:37 +0400 Subject: [PATCH 023/143] EA-42170 - assert: Alarm._addRequest --- .../src/com/intellij/platform/WebProjectGenerator.java | 1 - 1 file changed, 1 deletion(-) diff --git a/platform/platform-impl/src/com/intellij/platform/WebProjectGenerator.java b/platform/platform-impl/src/com/intellij/platform/WebProjectGenerator.java index 712fbc2700c8..a0a65f4c2e3f 100644 --- a/platform/platform-impl/src/com/intellij/platform/WebProjectGenerator.java +++ b/platform/platform-impl/src/com/intellij/platform/WebProjectGenerator.java @@ -118,7 +118,6 @@ public abstract class WebProjectGenerator implements DirectoryProjectGenerato @Override public void stateChanged(boolean validSettings) { getOKAction().setEnabled(validSettings); - initValidation(); } }); setTitle(WebProjectGenerator.this.getName()); From 113932594eeb519a26f38e6e258cb4909e15c0e6 Mon Sep 17 00:00:00 2001 From: irengrig Date: Thu, 17 Jan 2013 18:34:21 +0400 Subject: [PATCH 024/143] git log performance: lighter references load: use cached values for tracked branch and HEAD --- .../history/browser/LowLevelAccessImpl.java | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/plugins/git4idea/src/git4idea/history/browser/LowLevelAccessImpl.java b/plugins/git4idea/src/git4idea/history/browser/LowLevelAccessImpl.java index 723f7e901207..b96995b5dc53 100644 --- a/plugins/git4idea/src/git4idea/history/browser/LowLevelAccessImpl.java +++ b/plugins/git4idea/src/git4idea/history/browser/LowLevelAccessImpl.java @@ -22,7 +22,6 @@ import com.intellij.openapi.util.Getter; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vcs.FilePathImpl; import com.intellij.openapi.vcs.VcsException; -import com.intellij.openapi.vcs.history.VcsRevisionNumber; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.ArrayUtil; import com.intellij.util.AsynchConsumer; @@ -35,6 +34,7 @@ import git4idea.config.GitConfigUtil; import git4idea.history.GitHistoryUtils; import git4idea.history.wholeTree.AbstractHash; import git4idea.history.wholeTree.CommitHashPlusParents; +import git4idea.repo.GitBranchTrackInfo; import git4idea.repo.GitRepository; import git4idea.repo.GitRepositoryFiles; import git4idea.repo.GitRepositoryImpl; @@ -127,14 +127,22 @@ public class LowLevelAccessImpl implements LowLevelAccess { final GitBranch current = repository.getCurrentBranch(); refs.setCurrentBranch(current); if (current != null) { - GitBranch tracked = GitBranchUtil.tracked(myProject, myRoot, current.getName()); - String fullName = tracked == null ? null : tracked.getFullName(); - fullName = fullName != null && fullName.startsWith(GitBranch.REFS_REMOTES_PREFIX) ? fullName.substring(GitBranch.REFS_REMOTES_PREFIX.length()) : fullName; - refs.setTrackedRemoteName(fullName); + final Collection infos = repository.getBranchTrackInfos(); + for (GitBranchTrackInfo info : infos) { + if (info.getLocalBranch().equals(current)) { + String fullName = info.getRemoteBranch().getFullName(); + fullName = fullName.startsWith(GitBranch.REFS_REMOTES_PREFIX) + ? fullName.substring(GitBranch.REFS_REMOTES_PREFIX.length()) : fullName; + refs.setTrackedRemoteName(fullName); + break; + } + } } refs.setUsername(GitConfigUtil.getValue(myProject, myRoot, GitConfigUtil.USER_NAME)); - final VcsRevisionNumber head = GitHistoryUtils.getCurrentRevision(myProject, new FilePathImpl(myRoot), "HEAD", true); - refs.setHeadHash(AbstractHash.create(head.asString())); + final String head = repository.getCurrentRevision(); + if (head != null) { + refs.setHeadHash(AbstractHash.create(head)); + } return refs; } From d43eb65fa9361c2f833a18d0a88a4696f1b05f98 Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Thu, 17 Jan 2013 15:19:54 +0100 Subject: [PATCH 025/143] [r=Peter.Gromov] do not do invokeLater on disposed animator --- platform/platform-api/src/com/intellij/util/ui/Animator.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/platform/platform-api/src/com/intellij/util/ui/Animator.java b/platform/platform-api/src/com/intellij/util/ui/Animator.java index b57ddfc929a6..a3a414c69682 100644 --- a/platform/platform-api/src/com/intellij/util/ui/Animator.java +++ b/platform/platform-api/src/com/intellij/util/ui/Animator.java @@ -41,7 +41,7 @@ public abstract class Animator implements Disposable { private int myCurrentFrame; private long myStartTime; private long myStopTime; - private boolean myDisposed = false; + private volatile boolean myDisposed = false; public Animator(@NonNls final String name, final int totalFrames, @@ -143,7 +143,7 @@ public abstract class Animator implements Disposable { @Override public void run() { - if (scheduled.compareAndSet(false, true)) { + if (scheduled.compareAndSet(false, true) && !isDisposed()) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { From 34af8e1201a903e368498696615ccccae5c3baf6 Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Thu, 17 Jan 2013 15:23:15 +0100 Subject: [PATCH 026/143] [r=Peter.Gromov] avoid project memory leak, no need for extension point listener --- .../intellij/ui/docking/impl/DockManagerImpl.java | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/ui/docking/impl/DockManagerImpl.java b/platform/platform-impl/src/com/intellij/ui/docking/impl/DockManagerImpl.java index 7c80b324fe4e..76e906610ed6 100644 --- a/platform/platform-impl/src/com/intellij/ui/docking/impl/DockManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/ui/docking/impl/DockManagerImpl.java @@ -473,19 +473,6 @@ public class DockManagerImpl extends DockManager implements PersistentStateCompo } }, this); - Extensions.getArea(myProject).getExtensionPoint(IdeRootPaneNorthExtension.EP_NAME).addExtensionPointListener( - new ExtensionPointListener() { - @Override - public void extensionAdded(@NotNull IdeRootPaneNorthExtension extension, @Nullable PluginDescriptor pluginDescriptor) { - updateNorthPanel(); - } - - @Override - public void extensionRemoved(@NotNull IdeRootPaneNorthExtension extension, @Nullable PluginDescriptor pluginDescriptor) { - updateNorthPanel(); - } - }); - UISettings.getInstance().addUISettingsListener(new UISettingsListener() { @Override public void uiSettingsChanged(UISettings source) { From 2e314fc0d3da437329fcb9cbd2bfb2072c796d5a Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Thu, 17 Jan 2013 15:24:07 +0100 Subject: [PATCH 027/143] [r=Peter.Gromov] correct dispose of parameter info controller upon editor disposal --- .../codeInsight/hint/ParameterInfoController.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/hint/ParameterInfoController.java b/platform/lang-impl/src/com/intellij/codeInsight/hint/ParameterInfoController.java index 67f745f4f440..2c9182738903 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/hint/ParameterInfoController.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/hint/ParameterInfoController.java @@ -20,12 +20,15 @@ import com.intellij.codeInsight.lookup.Lookup; import com.intellij.codeInsight.lookup.LookupManager; import com.intellij.codeInsight.lookup.impl.LookupImpl; import com.intellij.lang.parameterInfo.*; +import com.intellij.openapi.Disposable; import com.intellij.openapi.application.ModalityState; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.RangeMarker; import com.intellij.openapi.editor.ScrollType; import com.intellij.openapi.editor.event.*; +import com.intellij.openapi.editor.impl.EditorImpl; import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.Key; import com.intellij.openapi.util.Pair; import com.intellij.psi.PsiDocumentManager; @@ -250,6 +253,12 @@ public class ParameterInfoController { LookupManager.getInstance(project).addPropertyChangeListener(myLookupListener); updateComponent(); + Disposer.register(((EditorImpl)myEditor).getDisposable(), new Disposable() { + @Override + public void dispose() { + ParameterInfoController.this.dispose(); + } + }); } private void dispose(){ From 0b661793090a76c8f8960b762c6596c493be3502 Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Thu, 17 Jan 2013 15:39:19 +0100 Subject: [PATCH 028/143] IDEA-99248 Freeze by deadlock --- .../psi/impl/compiled/ClsParameterImpl.java | 71 +++++++++++-------- 1 file changed, 40 insertions(+), 31 deletions(-) diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/compiled/ClsParameterImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/compiled/ClsParameterImpl.java index 129b441e761c..553a5feb38c0 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/compiled/ClsParameterImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/compiled/ClsParameterImpl.java @@ -40,7 +40,7 @@ import javax.swing.*; public class ClsParameterImpl extends ClsRepositoryPsiElement implements PsiParameter { private PsiTypeElement myType = null; private String myName; - private String myMirrorName = null; + private volatile String myMirrorName = null; public ClsParameterImpl(@NotNull PsiParameterStub stub) { super(stub); @@ -142,43 +142,52 @@ public class ClsParameterImpl extends ClsRepositoryPsiElement } private String getMirrorName() { - synchronized (LAZY_BUILT_LOCK) { - if (myMirrorName == null) { - @NonNls String name; - - final PsiParameterStubImpl stub = (PsiParameterStubImpl)getStub(); - if (!stub.isAutoGeneratedName() || DumbService.getInstance(getProject()).isDumb()) { - name = stub.getName(); + String mirrorName = myMirrorName; + if (mirrorName == null) { + // avoid calculation of nice parameter name under lock as we might need indices for coolness + // and latter might produce deadlock, see IDEA-99248 + mirrorName = calcNiceParameterName(); + synchronized (LAZY_BUILT_LOCK) { + if (myMirrorName == null) { + myMirrorName = mirrorName; } - else { - JavaCodeStyleManager codeStyleManager = JavaCodeStyleManager.getInstance(getProject()); - String[] nameSuggestions = codeStyleManager.suggestVariableName(VariableKind.PARAMETER, null, null, getType()).names; + } + } + return mirrorName; + } - name = "p"; - if (nameSuggestions.length > 0) { - name = nameSuggestions[0]; - } + private String calcNiceParameterName() { + @NonNls String name; - PsiParameter[] parameters = ((PsiParameterList) getParent()).getParameters(); - AttemptsLoop: - while (true) { - for (PsiParameter parameter : parameters) { - if (parameter == this) break AttemptsLoop; - String name1 = ((ClsParameterImpl) parameter).getMirrorName(); - if (name.equals(name1)) { - name = nextName(name); - continue AttemptsLoop; - } - } - } - } + final PsiParameterStubImpl stub = (PsiParameterStubImpl)getStub(); + if (!stub.isAutoGeneratedName() || DumbService.getInstance(getProject()).isDumb()) { + name = stub.getName(); + } + else { + JavaCodeStyleManager codeStyleManager = JavaCodeStyleManager.getInstance(getProject()); + String[] nameSuggestions = codeStyleManager.suggestVariableName(VariableKind.PARAMETER, null, null, getType()).names; - assert name != null : stub; - myMirrorName = name; + name = "p"; + if (nameSuggestions.length > 0) { + name = nameSuggestions[0]; } - return myMirrorName; + PsiParameter[] parameters = ((PsiParameterList) getParent()).getParameters(); + AttemptsLoop: + while (true) { + for (PsiParameter parameter : parameters) { + if (parameter == this) break AttemptsLoop; + String name1 = ((ClsParameterImpl) parameter).getMirrorName(); + if (name.equals(name1)) { + name = nextName(name); + continue AttemptsLoop; + } + } + } } + + assert name != null : stub; + return name; } private static String nextName(String name) { From 04e38d8abf8d0c8837ebeab02ee9b32ff0659657 Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Thu, 17 Jan 2013 15:46:22 +0100 Subject: [PATCH 029/143] [r=Peter.Gromov] use weak reference for Window key to avoid memory leak, as we do not get some window closed events --- .../openapi/wm/impl/WindowWatcher.java | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/WindowWatcher.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/WindowWatcher.java index 317dd406ba12..d6a3c06fd289 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/WindowWatcher.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/WindowWatcher.java @@ -24,6 +24,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.wm.FocusWatcher; import com.intellij.openapi.wm.ex.WindowManagerEx; import com.intellij.util.containers.HashMap; +import com.intellij.util.containers.WeakHashMap; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -37,6 +38,7 @@ import java.beans.PropertyChangeListener; import java.lang.ref.WeakReference; import java.util.HashSet; import java.util.Iterator; +import java.util.Map; /** * @author Anton Katilin @@ -44,8 +46,8 @@ import java.util.Iterator; */ public final class WindowWatcher implements PropertyChangeListener{ private static final Logger LOG=Logger.getInstance("#com.intellij.openapi.wm.impl.WindowWatcher"); - private final Object myLock; - private final HashMap myWindow2Info; + private final Object myLock = new Object(); + private final Map myWindow2Info = new WeakHashMap(); /** * Currenly focused window (window which has focused component). Can be null if there is no focused * window at all. @@ -54,14 +56,10 @@ public final class WindowWatcher implements PropertyChangeListener{ /** * Contains last focused window for each project. */ - private final HashSet myFocusedWindows; + private final HashSet myFocusedWindows = new HashSet(); @NonNls protected static final String FOCUSED_WINDOW_PROPERTY = "focusedWindow"; - WindowWatcher(){ - myLock=new Object(); - myWindow2Info=new HashMap(); - myFocusedWindows=new HashSet(); - } + WindowWatcher() {} /** * This method should get notifications abount changes of focused window. @@ -111,7 +109,8 @@ public final class WindowWatcher implements PropertyChangeListener{ final void dispatchComponentEvent(final ComponentEvent e){ final int id=e.getID(); - if(WindowEvent.WINDOW_CLOSED==id||(ComponentEvent.COMPONENT_HIDDEN==id&&e.getSource() instanceof Window)){ + if(WindowEvent.WINDOW_CLOSED == id || + (ComponentEvent.COMPONENT_HIDDEN == id && e.getSource() instanceof Window)){ dispatchHiddenOrClosed((Window)e.getSource()); } // Clear obsolete reference on root frame @@ -268,7 +267,7 @@ public final class WindowWatcher implements PropertyChangeListener{ } } - public final void doNotSuggestAsParent(final Window window){ + public final void doNotSuggestAsParent(final Window window) { if(LOG.isDebugEnabled()){ LOG.debug("enter: doNotSuggestAsParent("+window+")"); } From acd94b01a4e42c0b0504dd90ef0318c8141082f0 Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Thu, 17 Jan 2013 15:49:24 +0100 Subject: [PATCH 030/143] new download icon --- platform/icons/src/actions/download.png | Bin 727 -> 442 bytes platform/icons/src/actions/download@2x.png | Bin 0 -> 787 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 platform/icons/src/actions/download@2x.png diff --git a/platform/icons/src/actions/download.png b/platform/icons/src/actions/download.png index b4c66afd4e8698202cab596ad0d74f15a97c7442..efbb8808d578a4e1c859b03cb113207489ea7946 100644 GIT binary patch delta 382 zcmV-^0fGM41-b)}B#|^Ee*s)cL_t(|+G70w|33pZpg+ygjERYK8{Z4csf68~8wlgs^SFmuf zF>vtlFtD(*G5q=Yi{ZzoFARTv{9^d`_iyLJ($f_f22@v9!wp%jaC90A2YV(nD+>c7 zGZVxAzyBEi0=@I+$It1%zkJV*dgB7t)Y{sLJq-T-{+0co;m=YaX88B-Hv@n)N#Wvbf!Ozn^aEnGO;lG{rmHGliwZl9=3lhYk<;$$U%TB5CedUzkA#@ zs@W=g{Id6B%auTWC7NcOvA_sp@ciXu2!G&o8On`$2 c1^@&Y02?8a8}NZ8dH?_b07*qoM6N<$f<9owzyJUM delta 668 zcmV;N0%QHU1J?zRBn<>-K}|sb0I$e51&ZmBAt!$VX-PyuRCwBA{Qv(y12$lvzuW5X zuTKsCetu&A_v`bF6HD@zV^aqZKnx%Quwm=;RcBV-{r4Y)O@o`x;8F(=Kuioc!0!(a zzJciJhZq_De0}~6mpXs|!f5~yaN=O20Du5uLFQPeESdE0*C&I2KR+}4`~Bq)O#I)U zAAf%gToMmKxeqSvnI8v}0|+1#1OEQ_pj*_GZ42Xn{lmzhB+0;FGj*N?i2v$21H zL=-&$0mO(N3$evh{`+QUGwi(0h)@J%KD!RYn-k9hZ8t$y4-i0L1Fm+PGcd7of-!@# z?f;6!PZ%Pbr!wpS8Uixr`3(jJrsLTRc>#Z#3>#LjJp1b(3&ZdK%nS=R>@fidAaEeU zG@rTp@XX(rI~m%Ngcw%TXELaBKs0k-$Y)sI?#*DU^N(S2cdBts6ua@ye-NJl1Q3{H zV&h^sckSUBJtJP@8xKA)usq$x&=&8(P(3Gufs2WWVP=sY!>0?Y7}z;^8D4(A&G3KZ z@@0l!{|&(g00a=&fOFR#or!E)Y0U8dAA|0{zd(^cprB`1YbC+J@E^$kdWV5QTpGy! z&2VMv1_lleHiqB-n85}B1Q6JOKMbru_1_r&zr6s|_!ATzQ2ZSQGqVdZu&}W(u&^?N z!vF*T0tjrtZ=eCdhzBYHCb+*pF*JWdFi@P8i-C)mlYyB9VE{k?ferZ1zzs?T5JUd` z!h(N8@m~gJRu+cbEm~)LlvjeI6Ci+?U|sY;jaSWqj_|JcCApXh#)6B%e1~vd7zyO-@NU(z`{Bi&Q002ovPDBK*LSTZm CVlYnt diff --git a/platform/icons/src/actions/download@2x.png b/platform/icons/src/actions/download@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..a596b7bd4a91675d56ef011035b12709f072f61f GIT binary patch literal 787 zcmV+u1MK{XP)Bjnp z9_m3_N<Xq8^1 zRu3K&iEXmU?#_&F(xg<;#BSmiqz{Jq*_ro!`}UhRvqVY>8);;{1P-LSQdsT8a_{xP z^i<#k4&LqQCP1cy5Fj`o#r0R`uFW`p3FzxxV1&Xm%rvsx^BM}aeZ_NJhQqyqML^k! zM~Rmj)jI9v9N0@s;NRun>wQJ{t~#X}7c zT?Zo)0Tv1!il@5bff4Yym-RSTkpRLd=php{T|XX(2$gY<6CpSdL5h9KbRMG2A+2rvRtMPW4psxJuyNdU8;pw9z7=)WF2*sjG`6~oG5AvC1u)lo=%#6Rfx$|-8)eT<}&~$AOK`bE9Uml|h zl#-P<#+^`(h#I3NE7q$fVFbwy)|86dMtUeU*aRWuVsQbA4YwR7AzEw~ag+u;{0vyi z{;+<)9XB!G|D4x+7VMumZQx#?M8q?H^lWeg@NmV+lkwRYY9Ni8X#YJp%;GV9>fF1IOeH_bWb%(9tQ3v{Iv!av z?DUJh^Lq-+-L>|i>9Wtq-nTt#bi&HJ60KS3#r+&c%Hd@Mu#PUYj5AmJDpCEasCMT< z>$rNR=2QW%=`>UTeNFi&YhP>`(>Y{R>G;q(x+UMBZbp5jIsY^hDuCV{x!Bl|#nv$u z%k8!$OV={1-l@1^hTomty0&|>(%z`+g`}RgNuZhrF@vm002ovPDHLkV1fyZX=nfd literal 0 HcmV?d00001 From de23b4db0df3a4263f576a7595c50d53476daaeb Mon Sep 17 00:00:00 2001 From: anna Date: Thu, 17 Jan 2013 12:25:53 +0100 Subject: [PATCH 031/143] eclipse: trim names read from .project --- .../eclipse/common-eclipse-util/src/EclipseProjectFinder.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/plugins/eclipse/common-eclipse-util/src/EclipseProjectFinder.java b/plugins/eclipse/common-eclipse-util/src/EclipseProjectFinder.java index 9b76c6ff7014..41041ae54198 100644 --- a/plugins/eclipse/common-eclipse-util/src/EclipseProjectFinder.java +++ b/plugins/eclipse/common-eclipse-util/src/EclipseProjectFinder.java @@ -64,6 +64,10 @@ public class EclipseProjectFinder implements EclipseXml { if (file.isFile()) { try { name = JDOMUtil.loadDocument(file).getRootElement().getChildText(NAME_TAG); + if (StringUtil.isEmptyOrSpaces(name)) { + return null; + } + name = name.replace("\n", " ").trim(); } catch (JDOMException e) { return null; From 2baab02ba6aa9f684e249c398ec877221420fe83 Mon Sep 17 00:00:00 2001 From: anna Date: Thu, 17 Jan 2013 15:48:24 +0100 Subject: [PATCH 032/143] javafx: static properties in attrs and elements --- .../plugins/javaFX/fxml/FxmlConstants.java | 3 - .../javaFX/fxml/JavaFXNSDescriptor.java | 10 +- .../JavaFxClassBackedElementDescriptor.java | 68 +++++++++--- .../javaFX/fxml/JavaFxCommonClassNames.java | 29 +++++ .../JavaFxDefaultAttributeDescriptor.java | 103 +++++++++++++++++ .../fxml/JavaFxEventHandlerReference.java | 4 +- ...=> JavaFxPropertyAttributeDescriptor.java} | 4 +- ...a => JavaFxPropertyElementDescriptor.java} | 20 ++-- ...vaFxStaticPropertyAttributeDescriptor.java | 105 ++++++++++++++++++ .../highlighting/RootTagConstraint.fxml | 3 - .../testData/highlighting/loginForm.fxml | 2 +- .../highlighting/staticProperties.fxml | 13 +++ .../javaFX/fxml/JavaFXHighlightingTest.java | 2 +- 13 files changed, 329 insertions(+), 37 deletions(-) create mode 100644 plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxCommonClassNames.java create mode 100644 plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxDefaultAttributeDescriptor.java rename plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/{JavaFxPropertyBackedAttributeDescriptor.java => JavaFxPropertyAttributeDescriptor.java} (89%) rename plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/{JavaFxListPropertyElementDescriptor.java => JavaFxPropertyElementDescriptor.java} (79%) create mode 100644 plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxStaticPropertyAttributeDescriptor.java delete mode 100644 plugins/javaFX/testData/highlighting/RootTagConstraint.fxml create mode 100644 plugins/javaFX/testData/highlighting/staticProperties.fxml diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/FxmlConstants.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/FxmlConstants.java index d73208b5892f..b0a948e98922 100644 --- a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/FxmlConstants.java +++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/FxmlConstants.java @@ -37,7 +37,4 @@ public class FxmlConstants { @NonNls public static final String FX_SCRIPT = "fx:script"; public static final List FX_DEFAULT_PROPERTIES = Arrays.asList(FX_ID, FX_CONTROLLER, VALUE, FX_VALUE, FX_FACTORY, FX_INCLUDE, FX_REFERENCE, FX_COPY, FX_DEFINE, FX_SCRIPT); - - @NonNls public static final String JAVAFX_ANCHOR_PANE = "javafx.scene.layout.AnchorPane"; - @NonNls public static final String JAVAFX_EVENT = "javafx.event.Event"; } diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFXNSDescriptor.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFXNSDescriptor.java index 8a0a9aac7ec3..dc992b506f78 100644 --- a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFXNSDescriptor.java +++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFXNSDescriptor.java @@ -2,7 +2,6 @@ package org.jetbrains.plugins.javaFX.fxml; import com.intellij.codeInsight.daemon.Validator; import com.intellij.lang.ASTNode; -import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.PsiElement; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.xml.*; @@ -29,13 +28,16 @@ public class JavaFXNSDescriptor implements XmlNSDescriptor, Validator - -<ArrayList xmlns:fx="http://javafx.com/fxml"/> \ No newline at end of file diff --git a/plugins/javaFX/testData/highlighting/loginForm.fxml b/plugins/javaFX/testData/highlighting/loginForm.fxml index 9c0187415179..5c90c09b90da 100644 --- a/plugins/javaFX/testData/highlighting/loginForm.fxml +++ b/plugins/javaFX/testData/highlighting/loginForm.fxml @@ -1,6 +1,6 @@ - +unknownAttr="val" xmlns:fx="http://javafx.com/fxml"> diff --git a/plugins/javaFX/testData/highlighting/staticProperties.fxml b/plugins/javaFX/testData/highlighting/staticProperties.fxml new file mode 100644 index 000000000000..047c4a5677b8 --- /dev/null +++ b/plugins/javaFX/testData/highlighting/staticProperties.fxml @@ -0,0 +1,13 @@ + + + + + + + AnchorPane.leftAnchor1="0.0"> + 200 + <AnchorPane1.bottomAnchor>200AnchorPane1.bottomAnchor> + 0 + + + diff --git a/plugins/javaFX/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXHighlightingTest.java b/plugins/javaFX/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXHighlightingTest.java index 4fcef78d029b..126b3e53bf7f 100644 --- a/plugins/javaFX/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXHighlightingTest.java +++ b/plugins/javaFX/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXHighlightingTest.java @@ -32,7 +32,7 @@ public class JavaFXHighlightingTest extends DaemonAnalyzerTestCase { doTest(); } - public void testRootTagConstraint() throws Exception { + public void testStaticProperties() throws Exception { doTest(); } From f12bcad0c1bd014e7aaad59d50d55a6ea297feee Mon Sep 17 00:00:00 2001 From: anna Date: Thu, 17 Jan 2013 16:06:13 +0100 Subject: [PATCH 033/143] wording (IDEA-99252) --- .../src/inspectionDescriptions/IOResource.html | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/plugins/InspectionGadgets/src/inspectionDescriptions/IOResource.html b/plugins/InspectionGadgets/src/inspectionDescriptions/IOResource.html index a0894221d9d6..c21230964abd 100644 --- a/plugins/InspectionGadgets/src/inspectionDescriptions/IOResource.html +++ b/plugins/InspectionGadgets/src/inspectionDescriptions/IOResource.html @@ -1,7 +1,6 @@ -Reports any I/O resource which is not opened in front of a try -block and closed in the corresponding finally block. Such resources may +Reports any I/O resource which is not safely closed in the finally block. Such resources may be inadvertently leaked if an exception is thrown before the resource is closed. I/O resources checked by this inspection include java.io.InputStream, java.io.OutputStream, From 3a73ad27e22733c7e486ba855a64093d737c7d8c Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Thu, 17 Jan 2013 16:36:16 +0100 Subject: [PATCH 034/143] [r=Peter.Gromov] nullify actiongroup fields to avoid memory leaks from debugger --- .../intellij/execution/ui/layout/impl/RunnerContentUi.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerContentUi.java b/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerContentUi.java index c4bd425a7a62..1763b165ecc8 100644 --- a/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerContentUi.java +++ b/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerContentUi.java @@ -1072,6 +1072,11 @@ public class RunnerContentUi implements ContentUI, Disposable, CellTransform.Fac myMinimizedButtonsPlaceholder.clear(); myCommonActionsPlaceholder.clear(); myContextActions.clear(); + + myOriginal = null; + myTopActions = null; + myAdditonalFocusActions = null; + myLeftToolbarActions = null; } public void restoreLayout() { From 06525380bb68d2e745117563f73f40658a7e6520 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Thu, 17 Jan 2013 17:14:58 +0100 Subject: [PATCH 035/143] create fewer objects --- .../jetbrains/generate/tostring/config/Config.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/config/Config.java b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/config/Config.java index 57b9cd1e9321..563d1c4b7797 100644 --- a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/config/Config.java +++ b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/config/Config.java @@ -16,8 +16,6 @@ package org.jetbrains.generate.tostring.config; /** - * Configuration. - *

* The configuration is stored standard xmlb.XmlSerializer that automatically stores the * state of this classes public fields. */ @@ -40,6 +38,8 @@ public class Config { public boolean jumpToMethod = true; // jump cursor to toString method public int sortElements = 0; // 0 = none, 1 = asc, 2 = desc + private FilterPattern myPattern = null; + public boolean isUseFullyQualifiedName() { return useFullyQualifiedName; } @@ -181,12 +181,16 @@ public class Config { } /** - * Gets the filter pattern that this configuration represent. + * Gets the filter pattern that this configuration represents. * * @return the filter pattern. */ public FilterPattern getFilterPattern() { - FilterPattern pattern = new FilterPattern(); + FilterPattern pattern = myPattern; + if (pattern != null) { + return pattern; + } + pattern = new FilterPattern(); pattern.setConstantField(filterConstantField); pattern.setTransientModifier(filterTransientModifier); pattern.setStaticModifier(filterStaticModifier); @@ -196,7 +200,7 @@ public class Config { pattern.setMethodType(filterMethodType); pattern.setEnumField(filterEnumField); pattern.setLoggers(filterLoggers); - return pattern; + return myPattern = pattern; } public boolean equals(Object o) { From a144ac087295bbe3b26152b61c527d7e009d87b8 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Thu, 17 Jan 2013 17:19:00 +0100 Subject: [PATCH 036/143] fix method name typo --- .../tostring/element/ElementFactory.java | 2 +- .../tostring/element/MethodElement.java | 18 +++++++++++++----- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/element/ElementFactory.java b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/element/ElementFactory.java index 21bb6f423d17..68c60c899a9a 100644 --- a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/element/ElementFactory.java +++ b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/element/ElementFactory.java @@ -119,7 +119,7 @@ public class ElementFactory { // modifiers if (modifiers.hasModifierProperty(PsiModifier.ABSTRACT)) me.setModifierAbstract(true); - if (modifiers.hasModifierProperty(PsiModifier.SYNCHRONIZED)) me.setModifierSynchronzied(true); + if (modifiers.hasModifierProperty(PsiModifier.SYNCHRONIZED)) me.setModifierSynchronized(true); return me; } diff --git a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/element/MethodElement.java b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/element/MethodElement.java index fe9c65e1d4e7..23e2e879e3b5 100644 --- a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/element/MethodElement.java +++ b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/element/MethodElement.java @@ -32,7 +32,7 @@ public class MethodElement extends AbstractElement implements Serializable, Elem private String methodName; private String fieldName; private boolean modifierAbstract; - private boolean modifierSynchronzied; + private boolean modifierSynchronized; private boolean returnTypeVoid; private boolean getter; private boolean deprecated; @@ -65,12 +65,20 @@ public class MethodElement extends AbstractElement implements Serializable, Elem this.modifierAbstract = modifierAbstract; } + /** + * For compatibility with old templates + * @return + */ public boolean isModifierSynchronzied() { - return modifierSynchronzied; + return isModifierSynchronized(); } - public void setModifierSynchronzied(boolean modifierSynchronzied) { - this.modifierSynchronzied = modifierSynchronzied; + public boolean isModifierSynchronized() { + return modifierSynchronized; + } + + public void setModifierSynchronized(boolean modifierSynchronized) { + this.modifierSynchronized = modifierSynchronized; } public boolean isReturnTypeVoid() { @@ -135,7 +143,7 @@ public class MethodElement extends AbstractElement implements Serializable, Elem "fieldName='" + fieldName + "'" + ", methodName='" + methodName + "'" + ", modifierAbstract=" + modifierAbstract + - ", modifierSynchronzied=" + modifierSynchronzied + + ", modifierSynchronized=" + modifierSynchronized + ", returnTypeVoid=" + returnTypeVoid + ", getter=" + getter + ", deprecated=" + deprecated + From 2ae807c79f8a59b6c2ca97c2d407cb059ac75b18 Mon Sep 17 00:00:00 2001 From: anna Date: Thu, 17 Jan 2013 16:51:30 +0100 Subject: [PATCH 037/143] registry property to disable wolf the problem solver (sorry) --- .../intellij/codeInsight/daemon/impl/WolfHighlightingPass.java | 2 ++ platform/platform-resources-en/src/misc/registry.properties | 2 ++ 2 files changed, 4 insertions(+) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/WolfHighlightingPass.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/WolfHighlightingPass.java index 79fab4d3e0dd..d2da3e272529 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/WolfHighlightingPass.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/WolfHighlightingPass.java @@ -22,6 +22,7 @@ import com.intellij.openapi.editor.Document; import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.project.DumbAware; import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.registry.Registry; import com.intellij.problems.WolfTheProblemSolver; import com.intellij.psi.PsiFile; import org.jetbrains.annotations.NotNull; @@ -36,6 +37,7 @@ class WolfHighlightingPass extends ProgressableTextEditorHighlightingPass implem @Override protected void collectInformationWithProgress(final ProgressIndicator progress) { + if (!Registry.is("wolf.the.problem.solver", true)) return; final WolfTheProblemSolver solver = WolfTheProblemSolver.getInstance(myProject); if (solver instanceof WolfTheProblemSolverImpl) { ((WolfTheProblemSolverImpl)solver).startCheckingIfVincentSolvedProblemsYet(progress, this); diff --git a/platform/platform-resources-en/src/misc/registry.properties b/platform/platform-resources-en/src/misc/registry.properties index 7388a8864ad8..10a97a7c0602 100644 --- a/platform/platform-resources-en/src/misc/registry.properties +++ b/platform/platform-resources-en/src/misc/registry.properties @@ -271,3 +271,5 @@ debugger.enable.breakpoints.during.evaluation=false new.project.wizard=false new.ruby.sdk.configurable=false diagrams.rendering.no.cache=true + +wolf.the.problem.solver=true \ No newline at end of file From 6769ba9b63366c06c3e37822b01ed86352aa3946 Mon Sep 17 00:00:00 2001 From: anna Date: Thu, 17 Jan 2013 17:15:41 +0100 Subject: [PATCH 038/143] disable completion completed in presence of inplace refactorings --- .../actions/BaseRefactoringAction.java | 26 ++++++++++--------- .../rename/inplace/InplaceRefactoring.java | 8 ++++-- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/refactoring/actions/BaseRefactoringAction.java b/platform/lang-impl/src/com/intellij/refactoring/actions/BaseRefactoringAction.java index da105cd31dc2..332f352d3881 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/actions/BaseRefactoringAction.java +++ b/platform/lang-impl/src/com/intellij/refactoring/actions/BaseRefactoringAction.java @@ -96,18 +96,20 @@ public abstract class BaseRefactoringAction extends AnAction { return; } - final LookupEx lookup = LookupManager.getActiveLookup(editor); - if (lookup instanceof LookupImpl) { - Runnable command = new Runnable() { - @Override - public void run() { - ((LookupImpl)lookup).finishLookup(Lookup.NORMAL_SELECT_CHAR); - } - }; - assert editor != null; - Document doc = editor.getDocument(); - DocCommandGroupId group = DocCommandGroupId.noneGroupId(doc); - CommandProcessor.getInstance().executeCommand(editor.getProject(), command, "Completion", group, UndoConfirmationPolicy.DEFAULT, doc); + if (InplaceRefactoring.getActiveInplaceRenamer(editor) == null) { + final LookupEx lookup = LookupManager.getActiveLookup(editor); + if (lookup instanceof LookupImpl) { + Runnable command = new Runnable() { + @Override + public void run() { + ((LookupImpl)lookup).finishLookup(Lookup.NORMAL_SELECT_CHAR); + } + }; + assert editor != null; + Document doc = editor.getDocument(); + DocCommandGroupId group = DocCommandGroupId.noneGroupId(doc); + CommandProcessor.getInstance().executeCommand(editor.getProject(), command, "Completion", group, UndoConfirmationPolicy.DEFAULT, doc); + } } 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 30da953f9e96..a25d37e3f293 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 @@ -688,11 +688,15 @@ public abstract class InplaceRefactoring { } public static boolean canStartAnotherRefactoring(Editor editor, Project project, RefactoringActionHandler handler, PsiElement... element) { - final InplaceRefactoring inplaceRefactoring = editor != null ? editor.getUserData(INPLACE_RENAMER) : null; + final InplaceRefactoring inplaceRefactoring = getActiveInplaceRenamer(editor); return StartMarkAction.canStart(project) == null || (inplaceRefactoring != null && element.length == 1 && inplaceRefactoring.startsOnTheSameElement(handler, element[0])); } - + + public static InplaceRefactoring getActiveInplaceRenamer(Editor editor) { + return editor != null ? editor.getUserData(INPLACE_RENAMER) : null; + } + protected boolean startsOnTheSameElement(RefactoringActionHandler handler, PsiElement element) { return getVariable() == element; } From 854efc795f5b3794e0c09a276219880c9a32c2c8 Mon Sep 17 00:00:00 2001 From: anna Date: Thu, 17 Jan 2013 17:19:02 +0100 Subject: [PATCH 039/143] allow to start inplace introduce over same local variable (IDEA-93772) --- .../introduce/inplace/AbstractInplaceIntroducer.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/platform/lang-impl/src/com/intellij/refactoring/introduce/inplace/AbstractInplaceIntroducer.java b/platform/lang-impl/src/com/intellij/refactoring/introduce/inplace/AbstractInplaceIntroducer.java index c3f63c93c0bf..17435f45cb9d 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/introduce/inplace/AbstractInplaceIntroducer.java +++ b/platform/lang-impl/src/com/intellij/refactoring/introduce/inplace/AbstractInplaceIntroducer.java @@ -42,6 +42,7 @@ import com.intellij.openapi.util.TextRange; import com.intellij.psi.*; import com.intellij.psi.search.searches.ReferencesSearch; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.refactoring.RefactoringActionHandler; import com.intellij.refactoring.rename.inplace.InplaceRefactoring; import com.intellij.ui.DottedBorder; import com.intellij.util.ui.PositionTracker; @@ -560,6 +561,11 @@ public abstract class AbstractInplaceIntroducer Date: Thu, 17 Jan 2013 17:24:35 +0100 Subject: [PATCH 040/143] fix class name typo --- .../tostring/GenerateToStringWorker.java | 15 +++++++------- .../generate/tostring/config/Config.java | 8 ++++---- ...atonPolicy.java => DuplicationPolicy.java} | 7 +++---- .../tostring/config/PolicyOptions.java | 16 +++++++-------- .../generate/tostring/view/ConfigUI.java | 20 ++++++------------- 5 files changed, 27 insertions(+), 39 deletions(-) rename plugins/generate-tostring/src/org/jetbrains/generate/tostring/config/{DuplicatonPolicy.java => DuplicationPolicy.java} (88%) diff --git a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/GenerateToStringWorker.java b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/GenerateToStringWorker.java index 1b711621a3c2..c8045133f670 100644 --- a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/GenerateToStringWorker.java +++ b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/GenerateToStringWorker.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -28,7 +28,6 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; import com.intellij.psi.codeStyle.CodeStyleManager; -import com.intellij.psi.codeStyle.JavaCodeStyleManager; import com.intellij.psi.javadoc.PsiDocComment; import com.intellij.util.IncorrectOperationException; import org.apache.velocity.VelocityContext; @@ -105,18 +104,18 @@ public class GenerateToStringWorker { *
1) If there is a settings to always override use this. *
2) Prompt a dialog and let the user decide. * - * @param template the choosen template to use + * @param template the chosen template to use * @return the policy the user selected (never null) */ private ConflictResolutionPolicy exitsMethodDialog(TemplateResource template) { - final DuplicatonPolicy dupPolicy = config.getReplaceDialogInitialOption(); - if (dupPolicy == DuplicatonPolicy.ASK) { + final DuplicationPolicy dupPolicy = config.getReplaceDialogInitialOption(); + if (dupPolicy == DuplicationPolicy.ASK) { PsiMethod existingMethod = PsiAdapter.findMethodByName(clazz, template.getTargetMethodName()); if (existingMethod != null) { return MethodExistsDialog.showDialog(template.getTargetMethodName()); } } - else if (dupPolicy == DuplicatonPolicy.REPLACE) { + else if (dupPolicy == DuplicationPolicy.REPLACE) { return ReplacePolicy.getInstance(); } @@ -253,7 +252,7 @@ public class GenerateToStringWorker { /** * Automatic import the packages. * - * @param packageNames names of packages (must end with .* and be seperated by ; or ,) + * @param packageNames names of packages (must end with .* and be separated by ; or ,) * @throws IncorrectOperationException error adding imported package */ private static void autoImportPackages(PsiJavaFile psiJavaFile, String packageNames) throws IncorrectOperationException { @@ -343,7 +342,7 @@ public class GenerateToStringWorker { * fields, doing the work through a WriteAction ran by a CommandProcessor. * * @param selectedMembers list of members selected - * @param template the choosen template to use + * @param template the chosen template to use * @param insertAtOverride */ public static void executeGenerateActionLater(final PsiClass clazz, diff --git a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/config/Config.java b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/config/Config.java index 563d1c4b7797..5aff5eb68736 100644 --- a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/config/Config.java +++ b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/config/Config.java @@ -1,5 +1,5 @@ /* - * Copyright 2001-2012 the original author or authors. + * Copyright 2001-2013 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,7 +23,7 @@ public class Config { public boolean useFullyQualifiedName = false; public InsertWhere insertNewMethodOption = InsertWhere.AT_CARET; - public DuplicatonPolicy whenDuplicatesOption = DuplicatonPolicy.ASK; + public DuplicationPolicy whenDuplicatesOption = DuplicationPolicy.ASK; public boolean filterConstantField = true; public boolean filterEnumField = false; public boolean filterTransientModifier = false; @@ -48,11 +48,11 @@ public class Config { this.useFullyQualifiedName = useFullyQualifiedName; } - public DuplicatonPolicy getReplaceDialogInitialOption() { + public DuplicationPolicy getReplaceDialogInitialOption() { return whenDuplicatesOption; } - public void setReplaceDialogInitialOption(DuplicatonPolicy option) { + public void setReplaceDialogInitialOption(DuplicationPolicy option) { this.whenDuplicatesOption = option; } diff --git a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/config/DuplicatonPolicy.java b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/config/DuplicationPolicy.java similarity index 88% rename from plugins/generate-tostring/src/org/jetbrains/generate/tostring/config/DuplicatonPolicy.java rename to plugins/generate-tostring/src/org/jetbrains/generate/tostring/config/DuplicationPolicy.java index 4e771629c9a8..3d0171344cc4 100644 --- a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/config/DuplicatonPolicy.java +++ b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/config/DuplicationPolicy.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -19,18 +19,17 @@ */ package org.jetbrains.generate.tostring.config; -public enum DuplicatonPolicy { +public enum DuplicationPolicy { ASK("Ask"), REPLACE("Replace existing"), DUPLICATE("Generate duplicating method"); private final String displayName; - DuplicatonPolicy(String displayName) { + DuplicationPolicy(String displayName) { this.displayName = displayName; } - @Override public String toString() { return displayName; diff --git a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/config/PolicyOptions.java b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/config/PolicyOptions.java index c0b9b5bfc9cf..40e830bb9a4c 100644 --- a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/config/PolicyOptions.java +++ b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/config/PolicyOptions.java @@ -1,5 +1,5 @@ /* - * Copyright 2001-2007 the original author or authors. + * Copyright 2001-2013 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,13 +22,12 @@ public class PolicyOptions { private static final transient InsertWhere[] newMethodOptions = {InsertWhere.AT_CARET, InsertWhere.AFTER_EQUALS_AND_HASHCODE, InsertWhere.AT_THE_END_OF_A_CLASS}; - private static final transient DuplicatonPolicy[] conflictOptions = {DuplicatonPolicy.ASK, DuplicatonPolicy.REPLACE, DuplicatonPolicy.DUPLICATE}; + private static final transient DuplicationPolicy[] conflictOptions = {DuplicationPolicy.ASK, DuplicationPolicy.REPLACE, DuplicationPolicy.DUPLICATE}; - private PolicyOptions() { - } + private PolicyOptions() {} - /** - * Get's the options for the the insert new method policy. + /** + * Gets the options for the the insert new method policy. * @return the options for the the insert new method policy. */ public static InsertWhere[] getNewMethodOptions() { @@ -36,11 +35,10 @@ public class PolicyOptions { } /** - * Get's the options for the the conflict resolution policy. + * Gets the options for the the conflict resolution policy. * @return the options for the the conflict resolution policy. */ - public static DuplicatonPolicy[] getConflictOptions() { + public static DuplicationPolicy[] getConflictOptions() { return conflictOptions; } - } diff --git a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/view/ConfigUI.java b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/view/ConfigUI.java index 208b50f6988d..fc5979d34a46 100644 --- a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/view/ConfigUI.java +++ b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/view/ConfigUI.java @@ -1,5 +1,5 @@ /* - * Copyright 2001-2012 the original author or authors. + * Copyright 2001-2013 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,27 +16,19 @@ package org.jetbrains.generate.tostring.view; import com.intellij.openapi.project.Project; -import com.intellij.openapi.ui.Messages; import com.intellij.ui.IdeBorderFactory; import com.intellij.ui.LanguageTextField; -import org.apache.velocity.VelocityContext; -import org.apache.velocity.app.VelocityEngine; -import org.apache.velocity.exception.ParseErrorException; import org.intellij.lang.regexp.RegExpLanguage; import org.jetbrains.annotations.Nullable; import org.jetbrains.generate.tostring.config.Config; -import org.jetbrains.generate.tostring.config.DuplicatonPolicy; +import org.jetbrains.generate.tostring.config.DuplicationPolicy; import org.jetbrains.generate.tostring.config.InsertWhere; import org.jetbrains.generate.tostring.config.PolicyOptions; -import org.jetbrains.generate.tostring.exception.PluginException; -import org.jetbrains.generate.tostring.template.TemplateResource; -import org.jetbrains.generate.tostring.velocity.VelocityFactory; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.io.StringWriter; /** * Configuration User Interface. @@ -133,7 +125,7 @@ public class ConfigUI extends JPanel { outer.add(panel, constraint); // UI Layout - Conflict Resolution - DuplicatonPolicy[] options = PolicyOptions.getConflictOptions(); + DuplicationPolicy[] options = PolicyOptions.getConflictOptions(); initialValueForReplaceDialog = new JRadioButton[options.length]; ButtonGroup selection = new ButtonGroup(); for (int i = 0; i < options.length; i++) { @@ -230,7 +222,7 @@ public class ConfigUI extends JPanel { */ public final void setConfig(Config config) { fullyQualifiedName.setSelected(config.isUseFullyQualifiedName()); - DuplicatonPolicy option = config.getReplaceDialogInitialOption(); + DuplicationPolicy option = config.getReplaceDialogInitialOption(); for (JRadioButton anInitialValueForReplaceDialog : initialValueForReplaceDialog) { if (anInitialValueForReplaceDialog.getText().equals(option.toString())) { anInitialValueForReplaceDialog.setSelected(true); @@ -318,9 +310,9 @@ public class ConfigUI extends JPanel { * Action for the options for the conflict resolution policy */ private static class ConflictResolutionOptionAction extends AbstractAction { - public final DuplicatonPolicy option; + public final DuplicationPolicy option; - ConflictResolutionOptionAction(DuplicatonPolicy option) { + ConflictResolutionOptionAction(DuplicationPolicy option) { super(option.toString()); this.option = option; } From feabf37fa32a3344f74dded5760b5de6cdd92013 Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Thu, 17 Jan 2013 17:26:35 +0100 Subject: [PATCH 041/143] several problems with black foreground --- .../intellij/ide/commander/CommanderPanel.java | 6 +++--- .../ui/DependenciesPanel.java | 4 ++-- .../com/intellij/ui/ReplacePromptDialog.java | 2 +- .../intellij/ui/components/JBTabbedPane.java | 18 +++++++++++++++++- .../com/intellij/ide/IdeTooltipManager.java | 4 ++-- .../util/src/com/intellij/ui/LightColors.java | 4 ++-- .../util/src/com/intellij/ui/TitlePanel.java | 4 ++-- .../properties/ClientPropertiesProperty.java | 14 +++++++------- .../plugins/xpathView/XPathAppComponent.java | 6 ++++-- 9 files changed, 40 insertions(+), 22 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/ide/commander/CommanderPanel.java b/platform/lang-impl/src/com/intellij/ide/commander/CommanderPanel.java index ceae6980ded8..8b17215783bc 100644 --- a/platform/lang-impl/src/com/intellij/ide/commander/CommanderPanel.java +++ b/platform/lang-impl/src/com/intellij/ide/commander/CommanderPanel.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -279,7 +279,7 @@ public class CommanderPanel extends JPanel { myParentTitle = new MyTitleLabel(myTitlePanel); myParentTitle.setText(" "); myParentTitle.setFont(UIUtil.getLabelFont().deriveFont(Font.BOLD)); - myParentTitle.setForeground(Color.black); + myParentTitle.setForeground(JBColor.foreground); myParentTitle.setUI(new RightAlignedLabelUI()); final JPanel panel1 = new JPanel(new BorderLayout()); panel1.setOpaque(false); @@ -392,7 +392,7 @@ public class CommanderPanel extends JPanel { LOG.assertTrue(color != null); myTitlePanel.setBackground(color); myTitlePanel.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED, color.brighter(), color.darker())); - myParentTitle.setForeground(Color.black); + myParentTitle.setForeground(JBColor.foreground); } final int[] selectedIndices = myList.getSelectedIndices(); if (selectedIndices.length == 0 && myList.getModel().getSize() > 0) { diff --git a/platform/lang-impl/src/com/intellij/packageDependencies/ui/DependenciesPanel.java b/platform/lang-impl/src/com/intellij/packageDependencies/ui/DependenciesPanel.java index c3e88646ab23..32a56bdbe14f 100644 --- a/platform/lang-impl/src/com/intellij/packageDependencies/ui/DependenciesPanel.java +++ b/platform/lang-impl/src/com/intellij/packageDependencies/ui/DependenciesPanel.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -765,7 +765,7 @@ public class DependenciesPanel extends JPanel implements Disposable, DataProvide } }); final JEditorPane pane = new JEditorPane(UIUtil.HTML_MIME, "" + buf.toString()+ ""); - pane.setForeground(Color.black); + pane.setForeground(JBColor.foreground); pane.setBackground(HintUtil.INFORMATION_COLOR); pane.setOpaque(true); final JScrollPane scrollPane = ScrollPaneFactory.createScrollPane(pane); diff --git a/platform/lang-impl/src/com/intellij/ui/ReplacePromptDialog.java b/platform/lang-impl/src/com/intellij/ui/ReplacePromptDialog.java index 1fc6105eab76..ffd23f578be3 100644 --- a/platform/lang-impl/src/com/intellij/ui/ReplacePromptDialog.java +++ b/platform/lang-impl/src/com/intellij/ui/ReplacePromptDialog.java @@ -90,7 +90,7 @@ public class ReplacePromptDialog extends DialogWrapper { } JLabel label = new JLabel(getMessage()); label.setBorder(BorderFactory.createEmptyBorder(0, 20, 0, 10)); - label.setForeground(Color.black); + label.setForeground(JBColor.foreground); panel.add(label, BorderLayout.CENTER); return panel; } diff --git a/platform/platform-api/src/com/intellij/ui/components/JBTabbedPane.java b/platform/platform-api/src/com/intellij/ui/components/JBTabbedPane.java index eed06e68e414..30e3b1fec937 100644 --- a/platform/platform-api/src/com/intellij/ui/components/JBTabbedPane.java +++ b/platform/platform-api/src/com/intellij/ui/components/JBTabbedPane.java @@ -1,6 +1,22 @@ +/* + * Copyright 2000-2013 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.ui.components; import com.intellij.openapi.util.SystemInfo; +import com.intellij.ui.JBColor; import com.intellij.ui.ScreenUtil; import com.intellij.util.ui.UIUtil; import org.intellij.lang.annotations.JdkConstants; @@ -76,7 +92,7 @@ public class JBTabbedPane extends JTabbedPane implements HierarchyListener { getTabComponentAt(getSelectedIndex()).setForeground(Color.WHITE); } if (previousSelectedIndex != -1 && getTabComponentAt(previousSelectedIndex) != null) { - getTabComponentAt(previousSelectedIndex).setForeground(Color.BLACK); + getTabComponentAt(previousSelectedIndex).setForeground(JBColor.foreground); } } } diff --git a/platform/platform-impl/src/com/intellij/ide/IdeTooltipManager.java b/platform/platform-impl/src/com/intellij/ide/IdeTooltipManager.java index 31efcfd05613..0a95fcfeb3ff 100644 --- a/platform/platform-impl/src/com/intellij/ide/IdeTooltipManager.java +++ b/platform/platform-impl/src/com/intellij/ide/IdeTooltipManager.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -600,7 +600,7 @@ public class IdeTooltipManager implements ApplicationComponent, AWTEventListener } public static void setColors(JComponent pane) { - pane.setForeground(Color.black); + pane.setForeground(JBColor.foreground); pane.setBackground(HintUtil.INFORMATION_COLOR); pane.setOpaque(true); } diff --git a/platform/util/src/com/intellij/ui/LightColors.java b/platform/util/src/com/intellij/ui/LightColors.java index 5395a396b80b..a41e82a69b2c 100644 --- a/platform/util/src/com/intellij/ui/LightColors.java +++ b/platform/util/src/com/intellij/ui/LightColors.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -30,6 +30,6 @@ public interface LightColors { Color RED = UIUtil.isUnderDarcula() ? new Color(70, 0, 0) : new Color(0xffcccc); Color CYAN = new Color(0xccffff); - Color SLIGHTLY_GREEN = new JBColor(0xeeffee, 0x515B51); + Color SLIGHTLY_GREEN = new JBColor(new Color(0xeeffee), new Color(0x515B51)); Color SLIGHTLY_GRAY = new Color(0xf5f5f5); } diff --git a/platform/util/src/com/intellij/ui/TitlePanel.java b/platform/util/src/com/intellij/ui/TitlePanel.java index 11f1a25e302e..8ce3b45d15e4 100644 --- a/platform/util/src/com/intellij/ui/TitlePanel.java +++ b/platform/util/src/com/intellij/ui/TitlePanel.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -44,7 +44,7 @@ public class TitlePanel extends CaptionPanel { if (UIUtil.isUnderAquaLookAndFeel()) { myLabel.setFont(myLabel.getFont().deriveFont(12f)); } - myLabel.setForeground(Color.black); + myLabel.setForeground(JBColor.foreground); myLabel.setHorizontalAlignment(SwingConstants.CENTER); myLabel.setVerticalAlignment(SwingConstants.CENTER); myLabel.setBorder(new EmptyBorder(1, 2, 2, 2)); diff --git a/plugins/ui-designer/src/com/intellij/uiDesigner/propertyInspector/properties/ClientPropertiesProperty.java b/plugins/ui-designer/src/com/intellij/uiDesigner/propertyInspector/properties/ClientPropertiesProperty.java index 7ac19d45c203..3a618b96ecd0 100644 --- a/plugins/ui-designer/src/com/intellij/uiDesigner/propertyInspector/properties/ClientPropertiesProperty.java +++ b/plugins/ui-designer/src/com/intellij/uiDesigner/propertyInspector/properties/ClientPropertiesProperty.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -16,20 +16,20 @@ package com.intellij.uiDesigner.propertyInspector.properties; -import com.intellij.openapi.project.Project; -import com.intellij.openapi.ui.TextFieldWithBrowseButton; -import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.components.ServiceManager; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.ui.DialogWrapper; +import com.intellij.openapi.ui.TextFieldWithBrowseButton; +import com.intellij.ui.JBColor; +import com.intellij.uiDesigner.UIDesignerBundle; import com.intellij.uiDesigner.clientProperties.ClientPropertiesManager; import com.intellij.uiDesigner.clientProperties.ConfigureClientPropertiesDialog; -import com.intellij.uiDesigner.UIDesignerBundle; import com.intellij.uiDesigner.propertyInspector.*; import com.intellij.uiDesigner.propertyInspector.renderers.LabelPropertyRenderer; import com.intellij.uiDesigner.radComponents.RadComponent; import org.jetbrains.annotations.NotNull; import javax.swing.*; -import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -79,7 +79,7 @@ public class ClientPropertiesProperty extends ReadOnlyProperty { myTf.setText(UIDesignerBundle.message("client.properties.configure")); myTf.getTextField().setEditable(false); myTf.getTextField().setBorder(null); - myTf.getTextField().setForeground(Color.BLACK); + myTf.getTextField().setForeground(JBColor.foreground); myTf.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { showClientPropertiesDialog(); diff --git a/plugins/xpath/xpath-view/src/org/intellij/plugins/xpathView/XPathAppComponent.java b/plugins/xpath/xpath-view/src/org/intellij/plugins/xpathView/XPathAppComponent.java index 55c3b8a5556f..6d96250b90b3 100644 --- a/plugins/xpath/xpath-view/src/org/intellij/plugins/xpathView/XPathAppComponent.java +++ b/plugins/xpath/xpath-view/src/org/intellij/plugins/xpathView/XPathAppComponent.java @@ -16,6 +16,7 @@ package org.intellij.plugins.xpathView; import com.intellij.codeInsight.hint.HintManagerImpl; +import com.intellij.codeInsight.hint.HintUtil; import com.intellij.codeInsight.template.impl.DefaultLiveTemplatesProvider; import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.application.ApplicationManager; @@ -29,6 +30,7 @@ import com.intellij.openapi.util.InvalidDataException; import com.intellij.openapi.util.JDOMExternalizable; import com.intellij.openapi.util.WriteExternalException; import com.intellij.ui.Gray; +import com.intellij.ui.JBColor; import com.intellij.ui.LightweightHint; import org.intellij.plugins.xpathView.util.HighlighterUtil; import org.jdom.Element; @@ -193,8 +195,8 @@ public class XPathAppComponent implements ApplicationComponent, JDOMExternalizab label.setBorder(BorderFactory.createCompoundBorder( BorderFactory.createBevelBorder(BevelBorder.RAISED, Color.WHITE, Gray._128), BorderFactory.createEmptyBorder(3, 5, 3, 5))); - label.setForeground(Color.BLACK); - label.setBackground(new Color(253, 254, 226)); + label.setForeground(JBColor.foreground); + label.setBackground(HintUtil.INFORMATION_COLOR); label.setOpaque(true); label.setFont(label.getFont().deriveFont(Font.BOLD)); From 8ff01a6a6d9b6d83603f1c4b30e305fb3177ac04 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Thu, 17 Jan 2013 17:37:05 +0100 Subject: [PATCH 042/143] remove some dead code and inline a method --- .../tostring/GenerateToStringWorker.java | 22 +++--------- .../generate/tostring/config/Config.java | 8 ----- .../generate/tostring/psi/PsiAdapter.java | 34 ------------------- 3 files changed, 4 insertions(+), 60 deletions(-) diff --git a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/GenerateToStringWorker.java b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/GenerateToStringWorker.java index c8045133f670..3534ade12a06 100644 --- a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/GenerateToStringWorker.java +++ b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/GenerateToStringWorker.java @@ -20,11 +20,11 @@ package org.jetbrains.generate.tostring; import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.ScrollType; import com.intellij.openapi.editor.VisualPosition; -import com.intellij.openapi.project.Project; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; import com.intellij.psi.codeStyle.CodeStyleManager; @@ -47,20 +47,14 @@ import java.util.*; public class GenerateToStringWorker { private static final Logger logger = Logger.getInstance("#org.jetbrains.generate.tostring.GenerateToStringWorker"); - private final JVMElementFactory topLevelFactory; - private final CodeStyleManager codeStyleManager; private final Editor editor; private final PsiClass clazz; private final Config config; - private final Project project; private final boolean hasOverrideAnnotation; public GenerateToStringWorker(PsiClass clazz, Editor editor, boolean insertAtOverride) { this.clazz = clazz; - this.project = clazz.getProject(); this.editor = editor; - this.topLevelFactory = JVMElementFactories.getFactory(clazz.getLanguage(), project); - this.codeStyleManager = CodeStyleManager.getInstance(project); this.config = GenerateToStringContext.getConfig(); this.hasOverrideAnnotation = insertAtOverride; } @@ -163,8 +157,9 @@ public class GenerateToStringWorker { body = StringUtil.convertLineSeparators(body); // create psi newMethod named toString() + final JVMElementFactory topLevelFactory = JVMElementFactories.getFactory(clazz.getLanguage(), clazz.getProject()); PsiMethod newMethod = topLevelFactory.createMethodFromText(template.getMethodSignature() + " { " + body + " }", clazz); - codeStyleManager.reformat(newMethod); + CodeStyleManager.getInstance(clazz.getProject()).reformat(newMethod); // insertNewMethod conflict resolution policy (add/replace, duplicate, cancel) PsiMethod existingMethod = clazz.findMethodBySignature(newMethod, false); @@ -231,9 +226,6 @@ public class GenerateToStringWorker { } } - // reformat code - codeStyleManager.reformat(method); - // jump to method if (config.isJumpToMethod() && editor != null) { PsiMethod newMethod = PsiAdapter.findMethodByName(clazz, template.getTargetMethodName()); @@ -323,12 +315,6 @@ public class GenerateToStringWorker { if (vc.get("autoImportPackages") != null) { params.put("autoImportPackages", (String)vc.get("autoImportPackages")); } - - // add java.io.Serializable if chosen in [settings] and does not already implements it - if (config.isAddImplementSerializable() && !ce.isImplements("java.io.Serializable")) { - PsiAdapter.addImplements(clazz, "java.io.Serializable"); - } - } catch (Exception e) { throw new GenerateCodeException("Error in Velocity code generator", e); @@ -365,6 +351,6 @@ public class GenerateToStringWorker { } }; - PsiAdapter.executeCommand(clazz.getProject(), writeCommand); + CommandProcessor.getInstance().executeCommand(clazz.getProject(), writeCommand, "GenerateToString", null); } } diff --git a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/config/Config.java b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/config/Config.java index 5aff5eb68736..facdfa526150 100644 --- a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/config/Config.java +++ b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/config/Config.java @@ -99,14 +99,6 @@ public class Config { this.filterFieldName = filterFieldName; } - public boolean isAddImplementSerializable() { - return addImplementSerializable; - } - - public void setAddImplementSerializable(boolean addImplementSerializable) { - this.addImplementSerializable = addImplementSerializable; - } - public boolean isEnableMethods() { return enableMethods; } diff --git a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/psi/PsiAdapter.java b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/psi/PsiAdapter.java index 556c31ec9300..f7fa403b39bf 100644 --- a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/psi/PsiAdapter.java +++ b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/psi/PsiAdapter.java @@ -682,38 +682,4 @@ public class PsiAdapter { public static boolean isPrimitiveType(PsiType type) { return type instanceof PsiPrimitiveType; } - - /** - * Executes the given runnable in IDEA command. - * - * @param project IDEA project - * @param runnable the runnable task to execute. - */ - public static void executeCommand(Project project, Runnable runnable) { - CommandProcessor.getInstance().executeCommand(project, runnable, "GenerateToString", null); - } - - /** - * Adds the interface name to the class implementation list. - * - * @param clazz the class - * @param interfaceName the interface name the class should implement - * @throws IncorrectOperationException is thrown by IDEA. - */ - public static void addImplements(PsiClass clazz, String interfaceName) { - final Project project = clazz.getProject(); - JavaPsiFacade facade = JavaPsiFacade.getInstance(project); - - // get the interface class - PsiClass interfaceClass = facade.findClass(interfaceName, GlobalSearchScope.allScope(project)); - - // if the interface exists add it as a reference in the implements list - if (interfaceClass != null) { - PsiJavaCodeReferenceElement ref = facade.getElementFactory().createClassReferenceElement(interfaceClass); - PsiReferenceList list = clazz.getImplementsList(); - if (list != null) { - list.add(ref); - } - } - } } From fb9e20be8f71fa8c0e6c4d1a73a2a8408b05be6a Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Thu, 17 Jan 2013 17:42:45 +0100 Subject: [PATCH 043/143] close streams after resources are loaded load resources with utf-8 encoding instead of platform remove unneeded FileUtil class --- .../template/TemplateResourceLocator.java | 75 ++++++++++--------- .../generate/tostring/util/FileUtil.java | 62 --------------- 2 files changed, 38 insertions(+), 99 deletions(-) delete mode 100644 plugins/generate-tostring/src/org/jetbrains/generate/tostring/util/FileUtil.java diff --git a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/template/TemplateResourceLocator.java b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/template/TemplateResourceLocator.java index ed475f23f84e..7c7e50d438c4 100644 --- a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/template/TemplateResourceLocator.java +++ b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/template/TemplateResourceLocator.java @@ -1,5 +1,5 @@ /* - * Copyright 2001-2007 the original author or authors. + * Copyright 2001-2013 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,53 +15,54 @@ */ package org.jetbrains.generate.tostring.template; +import com.intellij.openapi.util.io.FileUtil; import org.jetbrains.generate.tostring.exception.TemplateResourceException; -import org.jetbrains.generate.tostring.util.FileUtil; +import java.io.BufferedInputStream; import java.io.IOException; +import java.io.InputStreamReader; /** - * Resource locator for default method body templates and user specific. - *

- * Will scan the 'tostring-plugin' folder of the IDEA plugins folder for additional templates. + * Resource locator for default method body templates. */ public class TemplateResourceLocator { - /** Foldername for additional velocity body templates. The folder should be a subfolder in the IDEA/plugins folder. */ - public static final String FOLDER_NAME = "tostring-plugin"; - /** Filename for autosaving active template. */ - public static final String AUTOSAVE_ACTIVE_TEMPLATE_FILE_NAME = "__autosave_active"; + private static final String DEFAULT_CONCAT = "/org/jetbrains/generate/tostring/template/DefaultConcatMember.vm"; + private static final String DEFAULT_CONCAT_SUPER = "/org/jetbrains/generate/tostring/template/DefaultConcatMemberSuper.vm"; + private static final String DEFAULT_BUFFER = "/org/jetbrains/generate/tostring/template/DefaultBuffer.vm"; + private static final String DEFAULT_BUILDER = "/org/jetbrains/generate/tostring/template/DefaultBuilder.vm"; + private static final String DEFAULT_TOSTRINGBUILDER = "/org/jetbrains/generate/tostring/template/DefaultToStringBuilder.vm"; - private static final String DEFAULT_CONCAT = "/org/jetbrains/generate/tostring/template/DefaultConcatMember.vm"; - private static final String DEFAULT_CONCAT_SUPER = "/org/jetbrains/generate/tostring/template/DefaultConcatMemberSuper.vm"; - private static final String DEFAULT_BUFFER = "/org/jetbrains/generate/tostring/template/DefaultBuffer.vm"; - private static final String DEFAULT_BUILDER = "/org/jetbrains/generate/tostring/template/DefaultBuilder.vm"; - private static final String DEFAULT_TOSTRINGBUILDER = "/org/jetbrains/generate/tostring/template/DefaultToStringBuilder.vm"; + private TemplateResourceLocator() {} - /** - * Only static methods. - */ - private TemplateResourceLocator() { + /** + * Get the default templates. + */ + public static TemplateResource[] getDefaultTemplates() { + try { + return new TemplateResource[]{ + new TemplateResource("String concat (+)", readFile(DEFAULT_CONCAT), true), + new TemplateResource("String concat (+) and super.toString()", readFile(DEFAULT_CONCAT_SUPER), true), + new TemplateResource("StringBuffer", readFile(DEFAULT_BUFFER), true), + new TemplateResource("StringBuilder (JDK 1.5)", readFile(DEFAULT_BUILDER), true), + new TemplateResource("ToStringBuilder (Apache Commons)", readFile(DEFAULT_TOSTRINGBUILDER), true), + }; } - - - /** - * Get the default templates. - */ - public static TemplateResource[] getDefaultTemplates() { - try { - TemplateResource tr1 = new TemplateResource("String concat (+)", FileUtil.readFile(DEFAULT_CONCAT), true); - TemplateResource tr2 = new TemplateResource("String concat (+) and super.toString()", FileUtil.readFile(DEFAULT_CONCAT_SUPER), true); - TemplateResource tr3 = new TemplateResource("StringBuffer", FileUtil.readFile(DEFAULT_BUFFER), true); - TemplateResource tr4 = new TemplateResource("StringBuilder (JDK 1.5)", FileUtil.readFile(DEFAULT_BUILDER), true); - TemplateResource tr5 = new TemplateResource("ToStringBuilder (Apache Commons)", FileUtil.readFile(DEFAULT_TOSTRINGBUILDER), true); - - return new TemplateResource[]{tr1, tr2, tr3, tr4, tr5}; - - } catch (IOException e) { - throw new TemplateResourceException("Error loading default templates", e); - } + catch (IOException e) { + throw new TemplateResourceException("Error loading default templates", e); } + } - + /** + * Reads the content of the resource and return it as a String. + *

Uses the class loader that loaded this class to find the resource in its classpath. + * + * @param resource the resource name. Will lookup using the classpath. + * @return the content if the resource + * @throws IOException error reading the file. + */ + private static String readFile(String resource) throws IOException { + BufferedInputStream in = new BufferedInputStream(TemplateResourceLocator.class.getResourceAsStream(resource)); + return FileUtil.loadTextAndClose(new InputStreamReader(in, "UTF-8")); + } } diff --git a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/util/FileUtil.java b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/util/FileUtil.java deleted file mode 100644 index fc4a179ef279..000000000000 --- a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/util/FileUtil.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright 2001-2007 the original author or authors. - * - * 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 org.jetbrains.generate.tostring.util; - -import com.intellij.openapi.util.text.StringUtil; - -import java.io.BufferedInputStream; -import java.io.IOException; -import java.io.InputStream; - -/** - * Utility methods for file IO. - */ -public class FileUtil { - - /** - * Private constructor, as only static methods allowed. - */ - private FileUtil() { - } - - /** - * Reads the content of the resource and return it as a String. - *

Uses the classloader that loaded this class to find the resource in its classpath. - * - * @param resource the resouce name. Will lookup using the classpath. - * @return the content if the resource - * @throws IOException error reading the file. - */ - public static String readFile(String resource) throws IOException { - BufferedInputStream in = new BufferedInputStream(FileUtil.class.getResourceAsStream(resource)); - return readFileContent(in); - } - - /** - * Reads the files content and return it as a String. - * - * @param in the file input stream. - * @return the file content. - * @throws IOException error reading the file. - */ - public static String readFileContent(InputStream in) throws IOException { - StringBuffer buf = new StringBuffer(); - for (int i = in.read(); i != -1; i = in.read()) { - buf.append((char) i); - } - return StringUtil.convertLineSeparators(buf.toString()); - } -} From efd948c4bcab8ec6cf842d2dba5e9479e06af135 Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Thu, 17 Jan 2013 17:48:12 +0100 Subject: [PATCH 044/143] make new dispose code available only for EditorImpl --- .../codeInsight/hint/ParameterInfoController.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/hint/ParameterInfoController.java b/platform/lang-impl/src/com/intellij/codeInsight/hint/ParameterInfoController.java index 2c9182738903..5103040a0faa 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/hint/ParameterInfoController.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/hint/ParameterInfoController.java @@ -253,12 +253,14 @@ public class ParameterInfoController { LookupManager.getInstance(project).addPropertyChangeListener(myLookupListener); updateComponent(); - Disposer.register(((EditorImpl)myEditor).getDisposable(), new Disposable() { - @Override - public void dispose() { - ParameterInfoController.this.dispose(); - } - }); + if (myEditor instanceof EditorImpl) { + Disposer.register(((EditorImpl)myEditor).getDisposable(), new Disposable() { + @Override + public void dispose() { + ParameterInfoController.this.dispose(); + } + }); + } } private void dispose(){ From a7ae44c107c29ac4cc0d1bf5627e3eb87c80213a Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 17 Jan 2013 17:26:59 +0100 Subject: [PATCH 045/143] don't exit groovyc immediately when indy option is on --- .../org/jetbrains/groovy/compiler/rt/GroovycRunner.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/plugins/groovy/rt/src/org/jetbrains/groovy/compiler/rt/GroovycRunner.java b/plugins/groovy/rt/src/org/jetbrains/groovy/compiler/rt/GroovycRunner.java index 758cc10a27aa..7a79ac591e82 100644 --- a/plugins/groovy/rt/src/org/jetbrains/groovy/compiler/rt/GroovycRunner.java +++ b/plugins/groovy/rt/src/org/jetbrains/groovy/compiler/rt/GroovycRunner.java @@ -76,8 +76,11 @@ public class GroovycRunner { */ if (args.length != 2) { - System.err.println("There is no arguments for groovy compiler"); - return; + if (args.length != 3 || !"--indy".equals(args[2])) { + System.err.println("There is no arguments for groovy compiler"); + System.exit(1); + } + System.setProperty("groovy.target.indy", "true"); } final boolean forStubs = "stubs".equals(args[0]); @@ -85,7 +88,7 @@ public class GroovycRunner { if (!argsFile.exists()) { System.err.println("Arguments file for groovy compiler not found"); - return; + System.exit(1); } try { From b87839c7045d1ee39b23949235ab54787795aeda Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 17 Jan 2013 17:54:35 +0100 Subject: [PATCH 046/143] stub-ast switch under PsiLock --- .../extapi/psi/StubBasedPsiElementBase.java | 54 +++++----- .../intellij/psi/impl/source/PsiFileImpl.java | 100 +++++++++--------- 2 files changed, 77 insertions(+), 77 deletions(-) diff --git a/platform/core-impl/src/com/intellij/extapi/psi/StubBasedPsiElementBase.java b/platform/core-impl/src/com/intellij/extapi/psi/StubBasedPsiElementBase.java index 1c40ae9adafe..e0fb0ea7fdf8 100644 --- a/platform/core-impl/src/com/intellij/extapi/psi/StubBasedPsiElementBase.java +++ b/platform/core-impl/src/com/intellij/extapi/psi/StubBasedPsiElementBase.java @@ -23,10 +23,10 @@ import com.intellij.lang.ASTNode; import com.intellij.lang.Language; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diagnostic.Logger; -import com.intellij.openapi.progress.NonCancelableSection; import com.intellij.openapi.progress.ProgressIndicatorProvider; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiInvalidElementAccessException; @@ -71,38 +71,34 @@ public class StubBasedPsiElementBase extends ASTDelegateP if (node == null) { ApplicationManager.getApplication().assertReadAccessAllowed(); PsiFileImpl file = (PsiFileImpl)getContainingFile(); - synchronized (file.getStubLock()) { - node = myNode; - if (node == null) { - NonCancelableSection criticalSection = ProgressIndicatorProvider.startNonCancelableSectionIfSupported(); - try { - if (!file.isValid()) throw new PsiInvalidElementAccessException(this); - FileElement treeElement = file.getTreeElement(); - StubTree stubTree = file.getStubTree(); - if (treeElement != null) { - return notBoundInExistingAst(file, treeElement, stubTree); - } - final FileElement fileElement = file.calcTreeElement(); - node = myNode; - if (node == null) { - @NonNls String message = "Failed to bind stub to AST for element " + getClass() + " in " + - (file.getVirtualFile() == null ? "" : file.getVirtualFile().getPath()) + - "\nFile stub tree:\n" + - (stubTree != null ? StringUtil.trimLog(((PsiFileStubImpl)stubTree.getRoot()).printTree(), 1024) : " is null") + - "\nLoaded file AST:\n" + StringUtil.trimLog(DebugUtil.treeToString(fileElement, true), 1024); - throw new IllegalArgumentException(message); - } - } - finally { - criticalSection.done(); - } - } + if (!file.isValid()) throw new PsiInvalidElementAccessException(this); + + FileElement treeElement = file.getTreeElement(); + StubTree stubTree = file.getStubTree(); + if (treeElement != null && myNode == null) { + return notBoundInExistingAst(file, treeElement, stubTree); + } + + final FileElement fileElement = file.calcTreeElement(); + node = myNode; + if (node == null) { + return failedToBindStubToAst(file, stubTree, fileElement); } } return node; } + private ASTNode failedToBindStubToAst(PsiFileImpl file, StubTree stubTree, FileElement fileElement) { + VirtualFile vFile = file.getVirtualFile(); + @NonNls String message = "Failed to bind stub to AST for element " + getClass() + " in " + + (vFile == null ? "" : vFile.getPath()) + + "\nFile stub tree:\n" + + (stubTree != null ? StringUtil.trimLog(((PsiFileStubImpl)stubTree.getRoot()).printTree(), 1024) : " is null") + + "\nLoaded file AST:\n" + StringUtil.trimLog(DebugUtil.treeToString(fileElement, true), 1024); + throw new IllegalArgumentException(message); + } + private ASTNode notBoundInExistingAst(PsiFileImpl file, FileElement treeElement, StubTree stubTree) { @NonNls String message = "this=" + this.getClass() + "; file.isPhysical=" + file.isPhysical() + "; node=" + myNode + "; file=" + file + "; tree=" + treeElement + "; stubTree=" + stubTree; @@ -119,7 +115,7 @@ public class StubBasedPsiElementBase extends ASTDelegateP throw new AssertionError(message); } - public void setNode(final ASTNode node) { + public final void setNode(final ASTNode node) { myNode = node; } @@ -241,7 +237,7 @@ public class StubBasedPsiElementBase extends ASTDelegateP return myStub; } - public void setStub(@Nullable T stub) { + public final void setStub(@Nullable T stub) { myStub = stub; } diff --git a/platform/core-impl/src/com/intellij/psi/impl/source/PsiFileImpl.java b/platform/core-impl/src/com/intellij/psi/impl/source/PsiFileImpl.java index 084dc1320a1b..a71d800d7585 100644 --- a/platform/core-impl/src/com/intellij/psi/impl/source/PsiFileImpl.java +++ b/platform/core-impl/src/com/intellij/psi/impl/source/PsiFileImpl.java @@ -30,6 +30,8 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Document; import com.intellij.openapi.fileEditor.FileDocumentManager; import com.intellij.openapi.fileTypes.FileType; +import com.intellij.openapi.progress.NonCancelableSection; +import com.intellij.openapi.progress.ProgressIndicatorProvider; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.Queryable; import com.intellij.openapi.util.Key; @@ -79,7 +81,6 @@ public abstract class PsiFileImpl extends ElementBase implements PsiFileEx, PsiF protected PsiFile myOriginalFile = null; private final FileViewProvider myViewProvider; private static final Key HARD_REFERENCE_TO_DOCUMENT = new Key("HARD_REFERENCE_TO_DOCUMENT"); - private final Object myStubLock = new Object(); private volatile SoftReference myStub; protected final PsiManagerEx myManager; private volatile Object myTreeElementPointer; // SoftReference/WeakReference to ASTNode or a strong reference to a tree if the file is a DummyHolder @@ -124,12 +125,12 @@ public abstract class PsiFileImpl extends ElementBase implements PsiFileEx, PsiF FileElement node = derefTreeElement(); if (node != null) return node; - synchronized (myStubLock) { - node = derefTreeElement(); - if (node == null && !getViewProvider().isPhysical()) { - return loadTreeElementUnderLock(); - } - return node; + if (!getViewProvider().isPhysical()) { + return loadTreeElement(); + } + + synchronized (PsiLock.LOCK) { + return derefTreeElement(); } } @@ -142,7 +143,7 @@ public abstract class PsiFileImpl extends ElementBase implements PsiFileEx, PsiF FileElement treeElement = (FileElement)((Reference)pointer).get(); if (treeElement != null) return treeElement; - synchronized (myStubLock) { + synchronized (PsiLock.LOCK) { if (myTreeElementPointer == pointer) { myTreeElementPointer = null; } @@ -186,11 +187,8 @@ public abstract class PsiFileImpl extends ElementBase implements PsiFileEx, PsiF return derefTreeElement() != null; } - private FileElement loadTreeElementUnderLock() { - FileElement treeElement = derefTreeElement(); - if (treeElement != null) { - return treeElement; - } + private FileElement loadTreeElement() { + ApplicationManager.getApplication().assertReadAccessAllowed(); final FileViewProvider viewProvider = getViewProvider(); if (viewProvider.isPhysical() && myManager.isAssertOnFileLoading(viewProvider.getVirtualFile())) { @@ -198,34 +196,39 @@ public abstract class PsiFileImpl extends ElementBase implements PsiFileEx, PsiF } final Document document = viewProvider.isEventSystemEnabled() ? viewProvider.getDocument() : null; - treeElement = createFileElement(viewProvider.getContents()); + FileElement treeElement = createFileElement(viewProvider.getContents()); if (document != null) { treeElement.putUserData(HARD_REFERENCE_TO_DOCUMENT, document); } treeElement.setPsi(this); - StubTree stub = derefStub(); - - if (stub != null) { - ApplicationManager.getApplication().assertReadAccessAllowed(); - final Iterator> stubs = stub.getPlainList().iterator(); - stubs.next(); // Skip file stub; - synchronized (PsiLock.LOCK) { - switchFromStubToAST(treeElement, stubs); + synchronized (PsiLock.LOCK) { + FileElement existing = derefTreeElement(); + if (existing != null) { + return existing; } - myStub = null; - } - myTreeElementPointer = createTreeElementPointer(treeElement); + NonCancelableSection section = ProgressIndicatorProvider.startNonCancelableSectionIfSupported(); + try { + switchFromStubToAST(treeElement); - if (LOG.isDebugEnabled() && getViewProvider().isPhysical()) { - LOG.debug("Loaded text for file " + getViewProvider().getVirtualFile().getPresentableUrl()); - } + myStub = null; + myTreeElementPointer = createTreeElementPointer(treeElement); - if (document != null && isPhysical()) { - TextBlock.get(this).clear(); + if (document != null && isPhysical()) { + TextBlock.get(this).clear(); + } + + if (LOG.isDebugEnabled() && viewProvider.isPhysical()) { + LOG.debug("Loaded text for file " + viewProvider.getVirtualFile().getPresentableUrl()); + } + + return treeElement; + } + finally { + section.done(); + } } - return treeElement; } @Override @@ -255,13 +258,20 @@ public abstract class PsiFileImpl extends ElementBase implements PsiFileEx, PsiF return null; } - private void switchFromStubToAST(final ASTNode root, final Iterator> stubs) { + private void switchFromStubToAST(final ASTNode root) { + StubTree stubTree = derefStub(); + if (stubTree == null) { + return; + } + + final Iterator> stubs = stubTree.getPlainList().iterator(); + stubs.next(); // Skip file stub; final IElementType contentElementType = getContentElementType(); if (!(contentElementType instanceof IStubFileElementType)) { final VirtualFile vFile = getVirtualFile(); - throw new AssertionError("A stub in a non-stub file '" + vFile +"'; isValid()=" + (vFile != null? vFile.isValid() : "null") + - " type: "+contentElementType+"; content:<<<\n"+ - StringUtil.first(getViewProvider().getContents(),200,true)+ + throw new AssertionError("A stub in a non-stub file '" + vFile + "'; isValid()=" + (vFile != null ? vFile.isValid() : "null") + + " type: " + contentElementType + "; content:<<<\n" + + StringUtil.first(getViewProvider().getContents(), 200, true) + "\n>>>; stubs=" + ContainerUtil.collect(stubs)); } final StubBuilder builder = ((IStubFileElementType)contentElementType).getBuilder(); @@ -329,7 +339,7 @@ public abstract class PsiFileImpl extends ElementBase implements PsiFileEx, PsiF LOG.assertTrue(getTreeElement() != null); clearCaches(); myViewProvider.beforeContentsSynchronized(); - synchronized (myStubLock) { + synchronized (PsiLock.LOCK) { myTreeElementPointer = null; clearStub(); } @@ -393,7 +403,7 @@ public abstract class PsiFileImpl extends ElementBase implements PsiFileEx, PsiF tree.clearCaches(); } - synchronized (myStubLock) { + synchronized (PsiLock.LOCK) { clearStub(); if (tree != null) { tree.putUserData(STUB_TREE_IN_PARSED_TREE, null); @@ -672,7 +682,7 @@ public abstract class PsiFileImpl extends ElementBase implements PsiFileEx, PsiF "\n>>>; stubs=" + stubHolder.getPlainList()); } - synchronized (myStubLock) { + synchronized (PsiLock.LOCK) { if (getTreeElement() != null) return null; final StubTree derefdOnLock = derefStub(); @@ -689,7 +699,7 @@ public abstract class PsiFileImpl extends ElementBase implements PsiFileEx, PsiF private StubTree derefStub() { if (myStub == null) return null; - synchronized (myStubLock) { + synchronized (PsiLock.LOCK) { return myStub != null ? myStub.get() : null; } } @@ -714,10 +724,6 @@ public abstract class PsiFileImpl extends ElementBase implements PsiFileEx, PsiF : new PatchedSoftReference(treeElement); } - public Object getStubLock() { - return myStubLock; - } - @Override public PsiManager getManager() { return myManager; @@ -738,9 +744,7 @@ public abstract class PsiFileImpl extends ElementBase implements PsiFileEx, PsiF FileElement treeElement = getTreeElement(); if (treeElement != null) return treeElement; - synchronized (myStubLock) { - return loadTreeElementUnderLock(); - } + return loadTreeElement(); } @Override @@ -955,8 +959,8 @@ public abstract class PsiFileImpl extends ElementBase implements PsiFileEx, PsiF private static final Key STUB_TREE_IN_PARSED_TREE = new Key("STUB_TREE_IN_PARSED_TREE"); public StubTree calcStubTree() { - synchronized (myStubLock) { - final FileElement fileElement = calcTreeElement(); + final FileElement fileElement = calcTreeElement(); + synchronized (PsiLock.LOCK) { StubTree tree = fileElement.getUserData(STUB_TREE_IN_PARSED_TREE); if (tree == null) { IElementType contentElementType = getContentElementType(); From ddd645eef42af6d9fba3b265e4f9397526e6b489 Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 17 Jan 2013 18:05:25 +0100 Subject: [PATCH 047/143] fix typo by removing --- .../fixtures/CompletionAutoPopupTester.groovy | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/platform/testFramework/src/com/intellij/testFramework/fixtures/CompletionAutoPopupTester.groovy b/platform/testFramework/src/com/intellij/testFramework/fixtures/CompletionAutoPopupTester.groovy index 59f1725045cd..7a7c77238f40 100644 --- a/platform/testFramework/src/com/intellij/testFramework/fixtures/CompletionAutoPopupTester.groovy +++ b/platform/testFramework/src/com/intellij/testFramework/fixtures/CompletionAutoPopupTester.groovy @@ -15,8 +15,6 @@ */ package com.intellij.testFramework.fixtures import com.intellij.codeInsight.AutoPopupController -import com.intellij.codeInsight.completion.CompletionPhase -import com.intellij.codeInsight.completion.impl.CompletionServiceImpl import com.intellij.codeInsight.editorActions.CompletionAutoPopupHandler import com.intellij.codeInsight.lookup.LookupManager import com.intellij.codeInsight.lookup.impl.LookupImpl @@ -25,7 +23,6 @@ import com.intellij.openapi.editor.ex.DocumentEx import com.intellij.psi.PsiDocumentManager import com.intellij.testFramework.UsefulTestCase import com.intellij.util.ui.UIUtil -import junit.framework.Assert import java.util.concurrent.atomic.AtomicBoolean import java.util.concurrent.atomic.AtomicInteger @@ -52,16 +49,6 @@ class CompletionAutoPopupTester { } void joinCompletion() { - for (i in 0.1000) { - if (i==999) { - UsefulTestCase.printThreadDump() - Assert.fail("Could not wait for committed doc") - } - CompletionPhase phase = CompletionServiceImpl.getCompletionPhase() - if (phase != com.intellij.codeInsight.completion.CompletionPhase.NoCompletion) break; - Thread.sleep(10) - } - for (j in 1..4000) { LookupImpl l = null UsefulTestCase.edt { From 0cf3219d34d60f4ce854196e106c91aea757c5fd Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Thu, 17 Jan 2013 18:17:03 +0100 Subject: [PATCH 048/143] IDEA-99121 Darcula: EJB (Dom) editor captions are white IDEA-98768 Too light color in application and web deployment editor --- .../src/com/intellij/util/xml/ui/CaptionComponent.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/xml/dom-openapi/src/com/intellij/util/xml/ui/CaptionComponent.java b/xml/dom-openapi/src/com/intellij/util/xml/ui/CaptionComponent.java index 4743fc9957fc..ed30d6b94a20 100644 --- a/xml/dom-openapi/src/com/intellij/util/xml/ui/CaptionComponent.java +++ b/xml/dom-openapi/src/com/intellij/util/xml/ui/CaptionComponent.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2013 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,6 +17,7 @@ package com.intellij.util.xml.ui; import com.intellij.openapi.util.Disposer; +import com.intellij.ui.JBColor; import com.intellij.util.xml.DomElement; import javax.swing.*; @@ -46,6 +47,7 @@ public class CaptionComponent extends JPanel implements Committable, Highlightab public CaptionComponent(String text, Icon icon) { super(new BorderLayout()); updateBorder(); + myRootPanel.setBackground(new JBColor(new Color(243, 244, 229), new Color(42, 55, 62))); add(myRootPanel, BorderLayout.CENTER); setText(text); @@ -54,7 +56,7 @@ public class CaptionComponent extends JPanel implements Committable, Highlightab private void updateBorder() { if (myBordered) { - myRootPanel.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, Color.LIGHT_GRAY)); + myRootPanel.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, JBColor.LIGHT_GRAY)); } else { myRootPanel.setBorder(BorderFactory.createEmptyBorder()); From 3c7511faec193f7ad5a6b986ee3e381230bcc018 Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 17 Jan 2013 18:21:43 +0100 Subject: [PATCH 049/143] test for lt/gt unescaping in event log --- .../testSrc/com/intellij/notification/EventLogTest.groovy | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/platform/platform-tests/testSrc/com/intellij/notification/EventLogTest.groovy b/platform/platform-tests/testSrc/com/intellij/notification/EventLogTest.groovy index ffd1207a39cb..78bc07b2b5d5 100644 --- a/platform/platform-tests/testSrc/com/intellij/notification/EventLogTest.groovy +++ b/platform/platform-tests/testSrc/com/intellij/notification/EventLogTest.groovy @@ -30,8 +30,8 @@ class EventLogTest extends LightPlatformTestCase { } public void testHtmlEntities() { - def entry = format("Title", "Hello world«»") - assert entry.message == 'Title: Hello world<<>>' + def entry = format("Title", "Hello world«»<>") + assert entry.message == 'Title: Hello world<<>><>' } public void testParseMultilineText() { From cbb65ba9509f7826eb3a99b14f23b645a51e28bb Mon Sep 17 00:00:00 2001 From: anna Date: Thu, 17 Jan 2013 17:54:53 +0100 Subject: [PATCH 050/143] javafx: handler method signature fixed --- .../javaFX/fxml/JavaFxCommonClassNames.java | 1 + .../javaFX/fxml/JavaFxEventHandlerReference.java | 16 ++++++++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxCommonClassNames.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxCommonClassNames.java index 8888c1381d4b..b275467c561d 100644 --- a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxCommonClassNames.java +++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxCommonClassNames.java @@ -26,4 +26,5 @@ public class JavaFxCommonClassNames { @NonNls public static final String JAVAFX_ANCHOR_PANE = "javafx.scene.layout.AnchorPane"; @NonNls public static final String JAVAFX_EVENT = "javafx.event.Event"; @NonNls public static final String JAVAFX_BEANS_DEFAULT_PROPERTY = "javafx.beans.DefaultProperty"; + @NonNls public static final String JAVAFX_FXML_FXML = "javafx.fxml.FXML"; } diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxEventHandlerReference.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxEventHandlerReference.java index fea5b2a10427..b18be5af1ab2 100644 --- a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxEventHandlerReference.java +++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxEventHandlerReference.java @@ -15,11 +15,13 @@ */ package org.jetbrains.plugins.javaFX.fxml; +import com.intellij.codeInsight.AnnotationUtil; import com.intellij.codeInsight.daemon.QuickFixActionRegistrar; import com.intellij.codeInsight.daemon.impl.quickfix.CreateMethodQuickFix; import com.intellij.codeInsight.quickfix.UnresolvedReferenceQuickFixProvider; import com.intellij.openapi.util.TextRange; import com.intellij.psi.*; +import com.intellij.psi.util.InheritanceUtil; import com.intellij.psi.xml.XmlAttributeValue; import com.intellij.util.ArrayUtil; import org.jetbrains.annotations.NotNull; @@ -62,12 +64,14 @@ public class JavaFxEventHandlerReference extends PsiReferenceBase Date: Thu, 17 Jan 2013 19:15:06 +0100 Subject: [PATCH 051/143] javafx: enum attribute values --- .../javaFX/fxml/JavaFxCommonClassNames.java | 1 + .../JavaFxPropertyAttributeDescriptor.java | 66 ++++++++++++++++- ...vaFxStaticPropertyAttributeDescriptor.java | 74 +------------------ .../completion/availablePositions.fxml | 5 ++ .../completion/availablePositions_after.fxml | 5 ++ .../testData/highlighting/enumValues.fxml | 8 ++ .../javaFX/fxml/JavaFXHighlightingTest.java | 4 + .../javaFX/fxml/JavaFxCompletionTest.java | 51 +++++++++++++ 8 files changed, 139 insertions(+), 75 deletions(-) create mode 100644 plugins/javaFX/testData/completion/availablePositions.fxml create mode 100644 plugins/javaFX/testData/completion/availablePositions_after.fxml create mode 100644 plugins/javaFX/testData/highlighting/enumValues.fxml create mode 100644 plugins/javaFX/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFxCompletionTest.java diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxCommonClassNames.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxCommonClassNames.java index b275467c561d..217b989d9ab0 100644 --- a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxCommonClassNames.java +++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxCommonClassNames.java @@ -27,4 +27,5 @@ public class JavaFxCommonClassNames { @NonNls public static final String JAVAFX_EVENT = "javafx.event.Event"; @NonNls public static final String JAVAFX_BEANS_DEFAULT_PROPERTY = "javafx.beans.DefaultProperty"; @NonNls public static final String JAVAFX_FXML_FXML = "javafx.fxml.FXML"; + @NonNls public static final String JAVAFX_BEANS_PROPERTY_OBJECT_PROPERTY = "javafx.beans.property.ObjectProperty"; } diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxPropertyAttributeDescriptor.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxPropertyAttributeDescriptor.java index 4409429cdc21..1d734992c844 100644 --- a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxPropertyAttributeDescriptor.java +++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxPropertyAttributeDescriptor.java @@ -1,12 +1,16 @@ package org.jetbrains.plugins.javaFX.fxml; -import com.intellij.psi.PsiClass; -import com.intellij.psi.PsiElement; +import com.intellij.openapi.util.text.StringUtil; +import com.intellij.psi.*; +import com.intellij.psi.util.TypeConversionUtil; import com.intellij.psi.xml.XmlElement; import com.intellij.util.ArrayUtil; import com.intellij.xml.XmlAttributeDescriptor; import org.jetbrains.annotations.Nullable; +import java.util.ArrayList; +import java.util.List; + /** * User: anna * Date: 1/10/13 @@ -48,21 +52,75 @@ public class JavaFxPropertyAttributeDescriptor implements XmlAttributeDescriptor @Override public boolean isEnumerated() { - return false; + return getEnum() != null; } @Nullable @Override public String[] getEnumeratedValues() { - return new String[0]; + final PsiClass enumClass = getEnum(); + if (enumClass != null) { + final PsiField[] fields = enumClass.getFields(); + final List enumConstants = new ArrayList(); + for (PsiField enumField : fields) { + if (enumField instanceof PsiEnumConstant) { + enumConstants.add(enumField.getName()); + } + } + return ArrayUtil.toStringArray(enumConstants); + } + return null; } + private PsiClass getEnum() { + final PsiElement field = getDeclaration(); + if (field instanceof PsiField) { + final PsiType type = ((PsiField)field).getType(); + if (type instanceof PsiClassType) { + final PsiClassType.ClassResolveResult resolveResult = ((PsiClassType)type).resolveGenerics(); + final PsiClass attributeClass = resolveResult.getElement(); + if (attributeClass != null) { + final PsiClass objectProperty = JavaPsiFacade.getInstance(attributeClass.getProject()) + .findClass(JavaFxCommonClassNames.JAVAFX_BEANS_PROPERTY_OBJECT_PROPERTY, attributeClass.getResolveScope()); + if (objectProperty != null) { + final PsiSubstitutor superClassSubstitutor = TypeConversionUtil.getClassSubstitutor(objectProperty, attributeClass, resolveResult.getSubstitutor()); + if (superClassSubstitutor != null) { + final PsiType propertyType = superClassSubstitutor.substitute(objectProperty.getTypeParameters()[0]); + if (propertyType instanceof PsiClassType) { + final PsiClass psiClass = ((PsiClassType)propertyType).resolve(); + if (psiClass != null && psiClass.isEnum()) { + return psiClass; + } + } + } + } + } + } + } + return null; + } + @Nullable @Override public String validateValue(XmlElement context, String value) { + if (isEnumerated()) { + final String[] values = getEnumeratedValues(); + if (values != null && !isWithingBounds(value, values)) { + return value + " is not withing its bounds"; + } + } return null; } + private static boolean isWithingBounds(String value, String[] values) { + for (String enumConstant : values) { + if (StringUtil.endsWithIgnoreCase(enumConstant, value)) { + return true; + } + } + return false; + } + @Override public PsiElement getDeclaration() { return myPsiClass != null ? myPsiClass.findFieldByName(myName, true) : null; diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxStaticPropertyAttributeDescriptor.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxStaticPropertyAttributeDescriptor.java index 6a6321f97e97..611127a2cf80 100644 --- a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxStaticPropertyAttributeDescriptor.java +++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxStaticPropertyAttributeDescriptor.java @@ -15,91 +15,23 @@ */ package org.jetbrains.plugins.javaFX.fxml; -import com.intellij.openapi.diagnostic.Logger; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiMethod; -import com.intellij.psi.xml.XmlElement; -import com.intellij.util.ArrayUtil; -import com.intellij.xml.XmlAttributeDescriptor; -import org.jetbrains.annotations.Nullable; /** * User: anna * Date: 1/10/13 */ -public class JavaFxStaticPropertyAttributeDescriptor implements XmlAttributeDescriptor { - private static final Logger LOG = Logger.getInstance("#" + JavaFxStaticPropertyAttributeDescriptor.class.getName()); +public class JavaFxStaticPropertyAttributeDescriptor extends JavaFxPropertyAttributeDescriptor { private final PsiMethod mySetter; - private final String myName; - + public JavaFxStaticPropertyAttributeDescriptor(PsiMethod setter, String name) { + super(name, setter.getContainingClass()); mySetter = setter; - myName = name; - } - - @Override - public boolean isRequired() { - return false; - } - - @Override - public boolean isFixed() { - return false; - } - - @Override - public boolean hasIdType() { - return false; - } - - @Override - public boolean hasIdRefType() { - return false; - } - - @Nullable - @Override - public String getDefaultValue() { - return null; - } - - @Override - public boolean isEnumerated() { - return false; - } - - @Nullable - @Override - public String[] getEnumeratedValues() { - return new String[0]; - } - - @Nullable - @Override - public String validateValue(XmlElement context, String value) { - return null; } @Override public PsiElement getDeclaration() { return mySetter; } - - @Override - public String getName(PsiElement context) { - return getName(); - } - - @Override - public String getName() { - return myName; - } - - @Override - public void init(PsiElement element) {} - - @Override - public Object[] getDependences() { - return ArrayUtil.EMPTY_OBJECT_ARRAY; - } } diff --git a/plugins/javaFX/testData/completion/availablePositions.fxml b/plugins/javaFX/testData/completion/availablePositions.fxml new file mode 100644 index 000000000000..507a35ad2fcb --- /dev/null +++ b/plugins/javaFX/testData/completion/availablePositions.fxml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/plugins/javaFX/testData/completion/availablePositions_after.fxml b/plugins/javaFX/testData/completion/availablePositions_after.fxml new file mode 100644 index 000000000000..cc95a4106905 --- /dev/null +++ b/plugins/javaFX/testData/completion/availablePositions_after.fxml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/plugins/javaFX/testData/highlighting/enumValues.fxml b/plugins/javaFX/testData/highlighting/enumValues.fxml new file mode 100644 index 000000000000..c149f40fd8e7 --- /dev/null +++ b/plugins/javaFX/testData/highlighting/enumValues.fxml @@ -0,0 +1,8 @@ + + + + + + + "UNKNOWN"/> + \ No newline at end of file diff --git a/plugins/javaFX/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXHighlightingTest.java b/plugins/javaFX/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXHighlightingTest.java index 126b3e53bf7f..d41734ee64ba 100644 --- a/plugins/javaFX/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXHighlightingTest.java +++ b/plugins/javaFX/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXHighlightingTest.java @@ -36,6 +36,10 @@ public class JavaFXHighlightingTest extends DaemonAnalyzerTestCase { doTest(); } + public void testEnumValues() throws Exception { + doTest(); + } + private void doTest() throws Exception { doTest(false, false, getTestName(true) + ".fxml"); } diff --git a/plugins/javaFX/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFxCompletionTest.java b/plugins/javaFX/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFxCompletionTest.java new file mode 100644 index 000000000000..fbc45669314e --- /dev/null +++ b/plugins/javaFX/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFxCompletionTest.java @@ -0,0 +1,51 @@ +/* + * Copyright 2000-2013 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 org.jetbrains.plugins.javaFX.fxml; + +import com.intellij.codeInsight.completion.CompletionTestCase; +import com.intellij.openapi.application.PluginPathManager; +import com.intellij.testFramework.PsiTestUtil; +import org.jetbrains.annotations.NotNull; + +/** + * User: anna + * Date: 1/17/13 + */ +public class JavaFxCompletionTest extends CompletionTestCase { + + @Override + protected void setUpModule() { + super.setUpModule(); + PsiTestUtil.addLibrary(getModule(), "javafx", PluginPathManager.getPluginHomePath("javaFX") + "/testData", "jfxrt.jar"); + } + + public void testAvailablePositions() throws Exception { + doTest(); + } + + private void doTest() throws Exception { + configureByFile(getTestName(true) + ".fxml"); + assertTrue(myItems.length > 0); + selectItem(myItems[0]); + checkResultByFile(getTestName(true) + "_after.fxml"); + } + + @NotNull + @Override + protected String getTestDataPath() { + return PluginPathManager.getPluginHomePath("javaFX") + "/testData/completion/"; + } +} From 2c076dc6936491d585dfc2ca7e3da8171c525b9f Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Thu, 17 Jan 2013 19:48:25 +0100 Subject: [PATCH 052/143] fix invalid file assertion --- .../src/com/intellij/ide/errorTreeView/ErrorViewStructure.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/platform-impl/src/com/intellij/ide/errorTreeView/ErrorViewStructure.java b/platform/platform-impl/src/com/intellij/ide/errorTreeView/ErrorViewStructure.java index d23f1dd41835..4d199bb17b6b 100644 --- a/platform/platform-impl/src/com/intellij/ide/errorTreeView/ErrorViewStructure.java +++ b/platform/platform-impl/src/com/intellij/ide/errorTreeView/ErrorViewStructure.java @@ -385,7 +385,7 @@ public class ErrorViewStructure extends AbstractTreeStructure { ApplicationManager.getApplication().runReadAction(new Runnable() { @Override public void run() { - PsiFile psiFile = PsiManager.getInstance(myProject).findFile(virtualFile); + final PsiFile psiFile = virtualFile.isValid()? PsiManager.getInstance(myProject).findFile(virtualFile) : null; if (psiFile != null) { DaemonCodeAnalyzer.getInstance(myProject).restart(psiFile); // urge the daemon to re-highlight the file despite no modification has been made } From 2f0eec8ad302a06f6ca953c1435fc2d0d788c2eb Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Thu, 17 Jan 2013 20:34:04 +0100 Subject: [PATCH 053/143] remove some dead code --- .../tostring/template/TemplateResource.java | 80 ++----------------- 1 file changed, 7 insertions(+), 73 deletions(-) diff --git a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/template/TemplateResource.java b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/template/TemplateResource.java index 4b828c37c091..e2a847049381 100644 --- a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/template/TemplateResource.java +++ b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/template/TemplateResource.java @@ -1,5 +1,5 @@ /* - * Copyright 2001-2007 the original author or authors. + * Copyright 2001-2013 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,9 +21,7 @@ import org.jetbrains.generate.tostring.util.StringUtil; import java.io.Serializable; /** - * A template. - *

- * A template contains the methody body and the filename of the resource where + * A template contains the method body and the filename of the resource where * the text is stored. */ public class TemplateResource implements Serializable { @@ -31,16 +29,6 @@ public class TemplateResource implements Serializable { private String fileName = ""; private String template = ""; - /** - * Constructor. - * - * @param fileName a template filename - * @param template the template velocity body content - */ - public TemplateResource(String fileName, String template) { - this(fileName, template, false); - } - public TemplateResource(String fileName, String template, boolean aDefault) { isDefault = aDefault; this.fileName = fileName; @@ -133,7 +121,7 @@ public class TemplateResource implements Serializable { continue; } signature.append(line); - if (line.indexOf("{") > -1) { + if (line.indexOf('{') > -1) { break; } } @@ -144,7 +132,7 @@ public class TemplateResource implements Serializable { } /** - * Get's the method that this template is for (toString) + * Gets the method that this template is for (toString) */ public String getTargetMethodName() { String s = getMethodSignature(); @@ -171,13 +159,13 @@ public class TemplateResource implements Serializable { public static boolean isValidTemplate(String template) { template = template.trim(); - if (template.indexOf("{") == -1) { + if (template.indexOf('{') == -1) { return false; } // ending } must be the last character String s = template.trim(); - if (s.lastIndexOf("}") != s.length() - 1) { + if (s.lastIndexOf('}') != s.length() - 1) { return false; } @@ -193,52 +181,7 @@ public class TemplateResource implements Serializable { } /** - * Does the template use annotations? - * - * @return true if so, false if not. - */ - public boolean hasAnnotations() { - return getAnnotations() != null; - } - - /** - * Get's the annotations - * - * @return the annotation, null if does not have. - */ - public String[] getAnnotations() { - String signature = getMethodSignature(); - String javadoc = getJavaDoc(); - String annotations; - if (javadoc != null) { - annotations = StringUtil.middle(template, javadoc, signature); - } - else { - annotations = StringUtil.before(template, signature); - } - - if (StringUtil.isEmpty(annotations)) { - return null; - } - - if (annotations.indexOf("@") == -1) { - return null; - } - - // remove first and last \n - annotations = annotations.trim(); - if (annotations.startsWith("\n")) { - annotations = annotations.substring(1); - } - if (annotations.endsWith("\n")) { - annotations = annotations.substring(0, annotations.length() - 1); - } - - return annotations.split("\n"); - } - - /** - * Important to return filename only as it is the displayname in the UI. + * Important to return filename only as it is the display name in the UI. * * @return filename for UI. */ @@ -250,15 +193,6 @@ public class TemplateResource implements Serializable { return fileName; } - public void copyFrom(TemplateResource templateResource) { - fileName = templateResource.getFileName(); - template = templateResource.getTemplate(); - } - - public void setName(String name) { - fileName = name; - } - @Override public boolean equals(Object o) { if (this == o) return true; From 810d8065b216f49ed7c8985e3aa2c11ad0542d74 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Thu, 17 Jan 2013 20:48:32 +0100 Subject: [PATCH 054/143] More efficient filtering (create less object, use precompiled regex) --- .../tostring/GenerateToStringUtils.java | 30 ++-- .../tostring/config/FilterPattern.java | 135 ++++++++++++++++-- .../tostring/element/ClassElement.java | 14 +- .../tostring/element/FieldElement.java | 50 +------ .../tostring/element/MethodElement.java | 31 +--- .../generate/tostring/psi/PsiAdapter.java | 31 +--- 6 files changed, 148 insertions(+), 143 deletions(-) diff --git a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/GenerateToStringUtils.java b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/GenerateToStringUtils.java index c35426335ad7..1003db0b1b3b 100644 --- a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/GenerateToStringUtils.java +++ b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/GenerateToStringUtils.java @@ -1,5 +1,5 @@ /* - * Copyright 2001-2012 the original author or authors. + * Copyright 2001-2013 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -38,13 +38,10 @@ import java.util.List; * Utility methods for GenerationToStringAction and the inspections. */ public class GenerateToStringUtils { + private static final Logger log = Logger.getInstance("#org.jetbrains.generate.tostring.GenerateToStringUtils"); - /** - * Private constructor. - */ - private GenerateToStringUtils() { - } + private GenerateToStringUtils() {} /** * Filters the list of fields from the class with the given parameters from the {@link org.jetbrains.generate.tostring.config.Config config} settings. @@ -61,11 +58,8 @@ public class GenerateToStringUtils { // performs til filtering process PsiField[] fields = clazz.getFields(); for (PsiField field : fields) { - FieldElement fe = ElementFactory.newFieldElement(field); - if (log.isDebugEnabled()) log.debug("Field being filtered: " + fe); - // if the field matches the pattern then it shouldn't be in the list of available fields - if (!fe.applyFilter(pattern)) { + if (!pattern.fieldMatches(field)) { availableFields.add(field); } } @@ -90,10 +84,8 @@ public class GenerateToStringUtils { public static PsiMethod[] filterAvailableMethods(PsiClass clazz, @NotNull FilterPattern pattern) { if (log.isDebugEnabled()) log.debug("Filtering methods using the pattern: " + pattern); List availableMethods = new ArrayList(); - PsiMethod[] methods = clazz.getMethods(); for (PsiMethod method : methods) { - // the method should be a getter if (!PsiAdapter.isGetterMethod(method)) { continue; @@ -119,19 +111,19 @@ public class GenerateToStringUtils { // must not be named toString or getClass final String methodName = method.getName(); - if ("toString".equals(methodName) || "getClass".equals(methodName)) { + if ("toString".equals(methodName) || "getClass".equals(methodName) || "hashCode".equals(methodName)) { continue; } // if the method matches the pattern then it shouldn't be in the list of available methods - MethodElement me = ElementFactory.newMethodElement(method); - if (!me.applyFilter(pattern)) { - if (log.isDebugEnabled()) - log.debug("Adding the method " + methodName + " as there is not a field for this getter"); - availableMethods.add(method); + if (pattern.methodMatches(method)) { + continue; } - } + if (log.isDebugEnabled()) + log.debug("Adding the method " + methodName + " as there is not a field for this getter"); + availableMethods.add(method); + } return availableMethods.toArray(new PsiMethod[availableMethods.size()]); } diff --git a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/config/FilterPattern.java b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/config/FilterPattern.java index 7fe374c85b2e..2b64ea0746db 100644 --- a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/config/FilterPattern.java +++ b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/config/FilterPattern.java @@ -1,5 +1,5 @@ /* - * Copyright 2001-2007 the original author or authors. + * Copyright 2001-2013 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,11 +15,25 @@ */ package org.jetbrains.generate.tostring.config; +import com.intellij.openapi.diagnostic.Logger; +import com.intellij.openapi.util.text.StringUtil; +import com.intellij.psi.PsiField; +import com.intellij.psi.PsiMethod; +import com.intellij.psi.PsiModifier; +import com.intellij.psi.PsiType; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.generate.tostring.psi.PsiAdapter; + +import java.util.regex.Pattern; +import java.util.regex.PatternSyntaxException; + /** * This is a filtering pattern, used to filter unwanted fields for this action. */ public class FilterPattern { + private static final Logger LOG = Logger.getInstance("#org.jetbrains.generate.tostring.config.FilterPattern"); + private String fieldName; private String fieldType; private String methodName; @@ -29,13 +43,73 @@ public class FilterPattern { private boolean transientModifier; private boolean enumField; private boolean loggers; + private Pattern methodNamePattern = null; + private Pattern methodTypePattern = null; + private Pattern fieldNamePattern = null; + private Pattern fieldTypePattern = null; - public String getFieldName() { - return fieldName; + public boolean fieldMatches(PsiField field) { + if (isConstantField() && PsiAdapter.isConstantField(field)) { + return true; + } + if (isEnumField() && PsiAdapter.isEnumField(field)) { + return true; + } + if (isStaticModifier() && field.hasModifierProperty(PsiModifier.STATIC)) { + return true; + } + if (isTransientModifier() && field.hasModifierProperty(PsiModifier.TRANSIENT)) { + return true; + } + final Pattern fieldNamePattern = getFieldNamePattern(); + if ((fieldNamePattern != null) && fieldNamePattern.matcher(field.getName()).matches()) { + return true; + } + final String typeText = field.getType().getCanonicalText(); + final Pattern fieldTypePattern = getFieldTypePattern(); + if ((fieldTypePattern != null) && fieldTypePattern.matcher(typeText).matches()) { + return true; + } + if (isLoggers() && ("org.apache.log4j.Logger".equals(typeText) || + "java.util.logging.Logger".equals(typeText) || + "org.apache.commons.logging.Log".equals(typeText)) ) { + return true; + } + return false; + } + + public boolean methodMatches(@NotNull PsiMethod method) { + final String methodName = method.getName(); + final Pattern methodNamePattern = getMethodNamePattern(); + if ((methodNamePattern != null) && methodNamePattern.matcher(methodName).matches()) { + return true; + } + final PsiType returnType = method.getReturnType(); + if (returnType == null) { + return false; + } + final Pattern patternTypePattern = getMethodTypePattern(); + final String methodType = returnType.getCanonicalText(); + return (patternTypePattern != null) && methodTypePattern.matcher(methodType).matches(); + } + + public Pattern getFieldNamePattern() { + if (StringUtil.isEmpty(fieldName)) { + return null; + } + if (fieldNamePattern == null) { + try { + fieldNamePattern = Pattern.compile(fieldName); + } catch (PatternSyntaxException e) { + fieldName = null; + LOG.warn(e.getMessage()); + } + } + return fieldNamePattern; } /** - * Set's a filtering using regular expression on the field name. + * Sets a filtering using regular expression on the field name. * * @param regexp the regular expression. */ @@ -82,12 +156,23 @@ public class FilterPattern { this.staticModifier = staticModifier; } - public String getMethodName() { - return methodName; + public Pattern getMethodNamePattern() { + if (StringUtil.isEmpty(methodName)) { + return null; + } + if (methodNamePattern == null) { + try { + methodNamePattern = Pattern.compile(methodName); + } catch (PatternSyntaxException e) { + methodName = null; + LOG.warn(e.getMessage()); + } + } + return methodNamePattern; } /** - * Set's a filtering using regular expression on the method name. + * Sets a filtering using regular expression on the method name. * * @param regexp the regular expression. */ @@ -123,12 +208,23 @@ public class FilterPattern { this.loggers = loggers; } - public String getFieldType() { - return fieldType; + public Pattern getFieldTypePattern() { + if (StringUtil.isEmpty(fieldType)) { + return null; + } + if (fieldTypePattern == null) { + try { + fieldTypePattern = Pattern.compile(fieldType); + } catch (PatternSyntaxException e) { + fieldType = null; + LOG.warn(e.getMessage()); + } + } + return fieldTypePattern; } /** - * Set's a filtering using the field type FQN. + * Sets a filtering using the field type FQN. * * @param fieldType the field type * @since 3.20 @@ -137,12 +233,23 @@ public class FilterPattern { this.fieldType = fieldType; } - public String getMethodType() { - return methodType; + public Pattern getMethodTypePattern() { + if (StringUtil.isEmpty(methodType)) { + return null; + } + if (methodTypePattern == null) { + try { + methodTypePattern = Pattern.compile(methodType); + } catch (PatternSyntaxException e) { + methodType = null; + LOG.warn(e.getMessage()); + } + } + return methodTypePattern; } /** - * Set's a filtering using the method return type FQN. + * Sets a filtering using the method return type FQN. * * @param methodType the method return type * @since 3.20 @@ -164,6 +271,4 @@ public class FilterPattern { ", loggers=" + loggers + "}"; } - - } diff --git a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/element/ClassElement.java b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/element/ClassElement.java index 395e5e03e811..6b9d8057419d 100644 --- a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/element/ClassElement.java +++ b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/element/ClassElement.java @@ -1,5 +1,5 @@ /* - * Copyright 2001-2007 the original author or authors. + * Copyright 2001-2013 the original author or authors. * * 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,6 @@ package org.jetbrains.generate.tostring.element; import com.intellij.openapi.util.text.StringUtil; -import java.io.Serializable; import java.util.Arrays; /** @@ -26,7 +25,7 @@ import java.util.Arrays; * Note: getters are accessed from Velocity templates, they aren't dead code */ @SuppressWarnings({"UnusedDeclaration"}) -public class ClassElement implements Serializable { +public class ClassElement { private String name; private String qualifiedName; @@ -49,7 +48,7 @@ public class ClassElement implements Serializable { */ public boolean isImplements(String interfaceName) { for (String className : implementNames) { - if (interfaceName.indexOf(className) != -1) { + if (interfaceName.contains(className)) { return true; } } @@ -64,7 +63,7 @@ public class ClassElement implements Serializable { * @return true if this class extends one of the given classnames. */ public boolean isExtends(String classNames) { - return (classNames.indexOf(superName) != -1); + return classNames.contains(superName); } /** @@ -78,7 +77,6 @@ public class ClassElement implements Serializable { if (StringUtil.isEmpty(regexp)) { throw new IllegalArgumentException("Can't perform regular expression since the given input is empty. Check your Velocity template: regexp='" + regexp + "'"); } - return name.matches(regexp); } @@ -122,7 +120,7 @@ public class ClassElement implements Serializable { this.qualifiedName = FQClassname; } - public boolean hasSuper() { + public boolean isHasSuper() { return this.superName != null; } @@ -171,6 +169,4 @@ public class ClassElement implements Serializable { ", abstract=" + _abstract + "}"; } - - } diff --git a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/element/FieldElement.java b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/element/FieldElement.java index 965b2aa1e8d4..8be76e1edbd4 100644 --- a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/element/FieldElement.java +++ b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/element/FieldElement.java @@ -1,5 +1,5 @@ /* - * Copyright 2001-2007 the original author or authors. + * Copyright 2001-2013 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,10 +16,6 @@ package org.jetbrains.generate.tostring.element; import com.intellij.openapi.util.text.StringUtil; -import org.jetbrains.generate.tostring.config.FilterPattern; -import org.jetbrains.generate.tostring.config.Filterable; - -import java.io.Serializable; /** * This is a field element containing information about the field. @@ -27,7 +23,7 @@ import java.io.Serializable; * @see ElementFactory */ @SuppressWarnings({"JavaDoc"}) -public class FieldElement extends AbstractElement implements Serializable, Element, Filterable { +public class FieldElement extends AbstractElement implements Element { private boolean isConstant; private boolean isEnum; @@ -78,7 +74,7 @@ public class FieldElement extends AbstractElement implements Serializable, Eleme void setModifierVolatile(boolean modifierVolatile) { this.isModifierVolatile = modifierVolatile; - } + } public void setEnum(boolean anEnum) { isEnum = anEnum; @@ -99,44 +95,6 @@ public class FieldElement extends AbstractElement implements Serializable, Eleme return name.matches(regexp); } - public boolean applyFilter(FilterPattern pattern) { - if (pattern == null) - return false; - - if (pattern.isConstantField() && isConstant) { - return true; - } - - if (pattern.isEnumField() && isEnum) { - return true; - } - - if (pattern.isStaticModifier() && isModifierStatic) { - return true; - } - - if (pattern.isTransientModifier() && isModifierTransient) { - return true; - } - - if (StringUtil.isNotEmpty(pattern.getFieldName()) && name.matches(pattern.getFieldName())) { - return true; - } - - if (StringUtil.isNotEmpty(pattern.getFieldType()) && !isPrimitive && getTypeQualifiedName() != null) { - String type = getTypeQualifiedName(); - if (type.matches(pattern.getFieldType())) - return true; - } - - if (pattern.isLoggers() && !isPrimitive && ("org.apache.log4j.Logger".equals(getTypeQualifiedName()) - || "java.util.logging.Logger".equals(getTypeQualifiedName()) || "org.apache.commons.logging.Log".equals(getTypeQualifiedName())) ) { - return true; - } - - return false; - } - public String toString() { return super.toString() + " ::: FieldElement{" + "isConstant=" + isConstant + @@ -145,6 +103,4 @@ public class FieldElement extends AbstractElement implements Serializable, Eleme ", isModifierVolatile=" + isModifierVolatile + "}"; } - - } \ No newline at end of file diff --git a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/element/MethodElement.java b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/element/MethodElement.java index 23e2e879e3b5..4005a8bb3f9d 100644 --- a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/element/MethodElement.java +++ b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/element/MethodElement.java @@ -1,5 +1,5 @@ /* - * Copyright 2001-2007 the original author or authors. + * Copyright 2001-2013 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,10 +16,6 @@ package org.jetbrains.generate.tostring.element; import com.intellij.openapi.util.text.StringUtil; -import org.jetbrains.generate.tostring.config.FilterPattern; -import org.jetbrains.generate.tostring.config.Filterable; - -import java.io.Serializable; /** * This is a method element containing information about the method. @@ -27,7 +23,7 @@ import java.io.Serializable; * @see ElementFactory */ @SuppressWarnings({"UnusedDeclaration"}) -public class MethodElement extends AbstractElement implements Serializable, Element, Filterable { +public class MethodElement extends AbstractElement implements Element { private String methodName; private String fieldName; @@ -66,8 +62,7 @@ public class MethodElement extends AbstractElement implements Serializable, Elem } /** - * For compatibility with old templates - * @return + * Exists for compatibility with old templates */ public boolean isModifierSynchronzied() { return isModifierSynchronized(); @@ -120,24 +115,6 @@ public class MethodElement extends AbstractElement implements Serializable, Elem return methodName.matches(regexp); } - public boolean applyFilter(FilterPattern pattern) { - if (pattern == null) - return false; - - if (StringUtil.isNotEmpty(pattern.getMethodName()) && methodName.matches(pattern.getMethodName())) { - return true; - } - - if (StringUtil.isNotEmpty(pattern.getMethodType()) && !returnTypeVoid && !isPrimitive && getTypeQualifiedName() != null) { - String type = getTypeQualifiedName(); - if (type.matches(pattern.getMethodType())) { - return true; - } - } - - return false; - } - public String toString() { return super.toString() + " ::: MethodElement{" + "fieldName='" + fieldName + "'" + @@ -149,6 +126,4 @@ public class MethodElement extends AbstractElement implements Serializable, Elem ", deprecated=" + deprecated + "}"; } - - } diff --git a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/psi/PsiAdapter.java b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/psi/PsiAdapter.java index f7fa403b39bf..35118091f0dc 100644 --- a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/psi/PsiAdapter.java +++ b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/psi/PsiAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright 2001-2012 the original author or authors. + * Copyright 2001-2013 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -463,13 +463,7 @@ public class PsiAdapter { if (parameterList.getParametersCount() != 0) { return false; } - if (method.getName().matches("^(is|has)\\p{Upper}.*")) { - final PsiElementFactory factory = JavaPsiFacade.getElementFactory(method.getProject()); - return isBooleanType(factory, method.getReturnType()); - } else if (method.getName().matches("^(get)\\p{Upper}.*")) { - return true; - } - return false; + return true; } /** @@ -505,25 +499,12 @@ public class PsiAdapter { */ public static boolean isEnumField(PsiField field) { PsiType type = field.getType(); - - // must not be an primitive type - if (isPrimitiveType(type)) { + if (!(type instanceof PsiClassType)) { return false; } - - GlobalSearchScope scope = type.getResolveScope(); - if (scope == null) { - return false; - } - - // find the class - String name = type.getCanonicalText(); - PsiClass clazz = JavaPsiFacade.getInstance(field.getProject()).findClass(name, scope); - if (clazz == null) { - return false; - } - - return clazz.isEnum(); + final PsiClassType classType = (PsiClassType)type; + final PsiClass aClass = classType.resolve(); + return (aClass != null) && aClass.isEnum(); } /** From 66ca2a05e6354752f882a96b2ae228e36345eea7 Mon Sep 17 00:00:00 2001 From: anna Date: Thu, 17 Jan 2013 20:42:55 +0100 Subject: [PATCH 055/143] javafx: reference to id-field --- .../fxml/FxmlReferencesContributor.java | 17 +++--- ...avaFxControllerBasedReferenceProvider.java | 53 +++++++++++++++++ .../JavaFxEventHandlerReferenceProvider.java | 53 ++++++----------- .../fxml/JavaFxFieldIdReferenceProvider.java | 58 +++++++++++++++++++ .../highlighting/ControllerIdRef.fxml | 9 +++ .../ControllerIdRefController.java | 4 ++ .../javaFX/fxml/JavaFXHighlightingTest.java | 18 ++++++ 7 files changed, 170 insertions(+), 42 deletions(-) create mode 100644 plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxControllerBasedReferenceProvider.java create mode 100644 plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxFieldIdReferenceProvider.java create mode 100644 plugins/javaFX/testData/highlighting/ControllerIdRef.fxml create mode 100644 plugins/javaFX/testData/highlighting/ControllerIdRefController.java diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/FxmlReferencesContributor.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/FxmlReferencesContributor.java index dfb43d1ed665..b256306547d1 100644 --- a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/FxmlReferencesContributor.java +++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/FxmlReferencesContributor.java @@ -16,10 +16,8 @@ package org.jetbrains.plugins.javaFX.fxml; import com.intellij.patterns.PatternCondition; -import com.intellij.patterns.XmlAttributeValuePattern; import com.intellij.patterns.XmlPatterns; -import com.intellij.psi.PsiReferenceContributor; -import com.intellij.psi.PsiReferenceRegistrar; +import com.intellij.psi.*; import com.intellij.psi.impl.source.resolve.reference.impl.providers.JavaClassReferenceProvider; import com.intellij.psi.xml.XmlAttributeValue; import com.intellij.util.ProcessingContext; @@ -36,13 +34,16 @@ public class FxmlReferencesContributor extends PsiReferenceContributor { @Override public void registerReferenceProviders(PsiReferenceRegistrar registrar) { - registrar.registerReferenceProvider(XmlPatterns.xmlAttributeValue() - .withParent(XmlPatterns.xmlAttribute().withName(FxmlConstants.FX_CONTROLLER)), + registrar.registerReferenceProvider(XmlPatterns.xmlAttributeValue().withParent(XmlPatterns.xmlAttribute().withName(FxmlConstants.FX_CONTROLLER)) + .and(XmlPatterns.xmlAttributeValue().with(inFxmlCondition())), CLASS_REFERENCE_PROVIDER); - final XmlAttributeValuePattern attributeValuePattern = XmlPatterns.xmlAttributeValue().withValue(string().startsWith("#")) - .and(XmlPatterns.xmlAttributeValue().with(inFxmlCondition())); - registrar.registerReferenceProvider(attributeValuePattern, + registrar.registerReferenceProvider(XmlPatterns.xmlAttributeValue().withParent(XmlPatterns.xmlAttribute().withName(FxmlConstants.FX_ID)) + .and(XmlPatterns.xmlAttributeValue().with(inFxmlCondition())), + new JavaFxFieldIdReferenceProvider()); + + registrar.registerReferenceProvider(XmlPatterns.xmlAttributeValue().withValue(string().startsWith("#")) + .and(XmlPatterns.xmlAttributeValue().with(inFxmlCondition())), new JavaFxEventHandlerReferenceProvider()); } diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxControllerBasedReferenceProvider.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxControllerBasedReferenceProvider.java new file mode 100644 index 000000000000..5b99863395e6 --- /dev/null +++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxControllerBasedReferenceProvider.java @@ -0,0 +1,53 @@ +/* + * Copyright 2000-2013 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 org.jetbrains.plugins.javaFX.fxml; + +import com.intellij.psi.*; +import com.intellij.psi.xml.XmlAttribute; +import com.intellij.psi.xml.XmlAttributeValue; +import com.intellij.psi.xml.XmlFile; +import com.intellij.psi.xml.XmlTag; +import com.intellij.util.ProcessingContext; +import org.jetbrains.annotations.NotNull; + +/** + * User: anna + * Date: 1/17/13 + */ +public abstract class JavaFxControllerBasedReferenceProvider extends PsiReferenceProvider { + @NotNull + @Override + public final PsiReference[] getReferencesByElement(@NotNull PsiElement element, @NotNull ProcessingContext context) { + final XmlAttributeValue xmlAttrVal = (XmlAttributeValue)element; + final PsiFile containingFile = xmlAttrVal.getContainingFile(); + if (!JavaFxFileTypeFactory.isFxml(containingFile)) return PsiReference.EMPTY_ARRAY; + + final XmlTag rootTag = ((XmlFile)containingFile).getRootTag(); + if (rootTag != null) { + final XmlAttribute attribute = rootTag.getAttribute(FxmlConstants.FX_CONTROLLER); + if (attribute != null) { + final PsiClass controllerClass = + JavaPsiFacade.getInstance(xmlAttrVal.getProject()).findClass(attribute.getValue(), xmlAttrVal.getResolveScope()); + if (controllerClass != null) { + return getReferencesByElement(controllerClass, xmlAttrVal, context); + } + } + } + return PsiReference.EMPTY_ARRAY; + } + + protected abstract PsiReference[] getReferencesByElement(@NotNull PsiClass controllerClass, XmlAttributeValue element, ProcessingContext context); +} diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxEventHandlerReferenceProvider.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxEventHandlerReferenceProvider.java index 989789f84048..ddfcb9c8c411 100644 --- a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxEventHandlerReferenceProvider.java +++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxEventHandlerReferenceProvider.java @@ -16,51 +16,36 @@ package org.jetbrains.plugins.javaFX.fxml; import com.intellij.openapi.diagnostic.Logger; -import com.intellij.psi.*; -import com.intellij.psi.xml.XmlAttribute; +import com.intellij.psi.PsiClass; +import com.intellij.psi.PsiMethod; +import com.intellij.psi.PsiReference; import com.intellij.psi.xml.XmlAttributeValue; -import com.intellij.psi.xml.XmlFile; -import com.intellij.psi.xml.XmlTag; import com.intellij.util.ProcessingContext; import org.jetbrains.annotations.NotNull; /** -* User: anna -* Date: 1/16/13 -*/ -class JavaFxEventHandlerReferenceProvider extends PsiReferenceProvider { + * User: anna + * Date: 1/16/13 + */ +class JavaFxEventHandlerReferenceProvider extends JavaFxControllerBasedReferenceProvider { private static final Logger LOG = Logger.getInstance("#" + JavaFxEventHandlerReferenceProvider.class.getName()); - @NotNull @Override - public PsiReference[] getReferencesByElement(@NotNull PsiElement element, - @NotNull ProcessingContext context) { - final XmlAttributeValue xmlAttrVal = (XmlAttributeValue)element; - final PsiFile containingFile = xmlAttrVal.getContainingFile(); - if (!JavaFxFileTypeFactory.isFxml(containingFile)) return PsiReference.EMPTY_ARRAY; + protected PsiReference[] getReferencesByElement(@NotNull PsiClass controllerClass, + XmlAttributeValue xmlAttributeValue, + ProcessingContext context) { + final String attValueString = xmlAttributeValue.getValue(); + LOG.assertTrue(attValueString.startsWith("#")); + final String eventHandlerName = attValueString.substring(1); + final PsiMethod[] methods = controllerClass.findMethodsByName(eventHandlerName, true); PsiMethod handlerMethod = null; - PsiClass controllerClass = null; - final XmlTag rootTag = ((XmlFile)containingFile).getRootTag(); - if (rootTag != null) { - final XmlAttribute attribute = rootTag.getAttribute(FxmlConstants.FX_CONTROLLER); - if (attribute != null) { - final String controllerClassName = attribute.getValue(); - controllerClass = JavaPsiFacade.getInstance(xmlAttrVal.getProject()).findClass(controllerClassName, xmlAttrVal.getResolveScope()); - if (controllerClass != null) { - final String attValueString = xmlAttrVal.getValue(); - LOG.assertTrue(attValueString.startsWith("#")); - final String eventHandlerName = attValueString.substring(1); - final PsiMethod[] methods = controllerClass.findMethodsByName(eventHandlerName, true); - for (PsiMethod psiMethod : methods) { - if (JavaFxEventHandlerReference.isHandlerMethod(psiMethod)) { - handlerMethod = psiMethod; - break; - } - } - } + for (PsiMethod psiMethod : methods) { + if (JavaFxEventHandlerReference.isHandlerMethod(psiMethod)) { + handlerMethod = psiMethod; + break; } } - return new PsiReference[]{new JavaFxEventHandlerReference(xmlAttrVal, handlerMethod, controllerClass)}; + return new PsiReference[]{new JavaFxEventHandlerReference(xmlAttributeValue, handlerMethod, controllerClass)}; } } diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxFieldIdReferenceProvider.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxFieldIdReferenceProvider.java new file mode 100644 index 000000000000..824836376181 --- /dev/null +++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxFieldIdReferenceProvider.java @@ -0,0 +1,58 @@ +/* + * Copyright 2000-2013 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 org.jetbrains.plugins.javaFX.fxml; + +import com.intellij.psi.*; +import com.intellij.psi.xml.XmlAttributeValue; +import com.intellij.util.ArrayUtil; +import com.intellij.util.ProcessingContext; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** +* User: anna +* Date: 1/17/13 +*/ +class JavaFxFieldIdReferenceProvider extends JavaFxControllerBasedReferenceProvider { + @Override + protected PsiReference[] getReferencesByElement(@NotNull PsiClass aClass, + XmlAttributeValue xmlAttributeValue, + ProcessingContext context) { + final PsiField field = aClass.findFieldByName(xmlAttributeValue.getValue(), false); + return field == null ? PsiReference.EMPTY_ARRAY : new PsiReference[]{new JavaFxIdReference(xmlAttributeValue, field)}; + } + + private static class JavaFxIdReference extends PsiReferenceBase { + private final PsiField myField; + + public JavaFxIdReference(XmlAttributeValue xmlAttributeValue, PsiField field) { + super(xmlAttributeValue); + myField = field; + } + + @Nullable + @Override + public PsiElement resolve() { + return myField; + } + + @NotNull + @Override + public Object[] getVariants() { + return ArrayUtil.EMPTY_OBJECT_ARRAY; + } + } +} diff --git a/plugins/javaFX/testData/highlighting/ControllerIdRef.fxml b/plugins/javaFX/testData/highlighting/ControllerIdRef.fxml new file mode 100644 index 000000000000..90b7dcc85280 --- /dev/null +++ b/plugins/javaFX/testData/highlighting/ControllerIdRef.fxml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/plugins/javaFX/testData/highlighting/ControllerIdRefController.java b/plugins/javaFX/testData/highlighting/ControllerIdRefController.java new file mode 100644 index 000000000000..050f592009d8 --- /dev/null +++ b/plugins/javaFX/testData/highlighting/ControllerIdRefController.java @@ -0,0 +1,4 @@ +import javafx.scene.text.Text; +public class ControllerIdRefController { + public Text accessText; +} \ No newline at end of file diff --git a/plugins/javaFX/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXHighlightingTest.java b/plugins/javaFX/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXHighlightingTest.java index d41734ee64ba..6c8d07034419 100644 --- a/plugins/javaFX/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXHighlightingTest.java +++ b/plugins/javaFX/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXHighlightingTest.java @@ -2,6 +2,8 @@ package org.jetbrains.plugins.javaFX.fxml; import com.intellij.codeInsight.daemon.DaemonAnalyzerTestCase; import com.intellij.openapi.application.PluginPathManager; +import com.intellij.psi.PsiClass; +import com.intellij.psi.PsiReference; import com.intellij.testFramework.PsiTestUtil; import org.jetbrains.annotations.NotNull; @@ -44,6 +46,22 @@ public class JavaFXHighlightingTest extends DaemonAnalyzerTestCase { doTest(false, false, getTestName(true) + ".fxml"); } + public void testControllerIdRef() throws Exception { + doTestIdController(); + } + + private void doTestIdController() throws Exception { + final String controllerClassName = getTestName(false) + "Controller"; + configureByFiles(null, getTestName(true) + ".fxml", controllerClassName + ".java"); + final PsiClass controllerClass = findClass(controllerClassName); + assertNotNull(controllerClass); + assertTrue(controllerClass.getFields().length > 0); + final int offset = myEditor.getCaretModel().getOffset(); + final PsiReference reference = myFile.findReferenceAt(offset); + assertNotNull(reference); + assertEquals(controllerClass.getFields()[0], reference.resolve()); + } + @NotNull @Override protected String getTestDataPath() { From 3fc40b864e5858e08661230c71277d80d6d3e5bb Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Thu, 17 Jan 2013 20:50:49 +0100 Subject: [PATCH 056/143] remove unused interface --- .../generate/tostring/config/Filterable.java | 31 ------------------- 1 file changed, 31 deletions(-) delete mode 100644 plugins/generate-tostring/src/org/jetbrains/generate/tostring/config/Filterable.java diff --git a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/config/Filterable.java b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/config/Filterable.java deleted file mode 100644 index ef540f837326..000000000000 --- a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/config/Filterable.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2001-2007 the original author or authors. - * - * 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 org.jetbrains.generate.tostring.config; - -/** - * Gives the ability to perform a matching agaist a class field to be used in a filtering process for unwanted fields. - */ -public interface Filterable { - - /** - * Performs the filter process and returns true if the field matches the filtering patterns. - * - * @param pattern filter patterns. - * @return true if the field matches the patterns. - */ - boolean applyFilter(FilterPattern pattern); - -} \ No newline at end of file From a9ba11c1bc0745bb7f910a60d5f36f29d17a9c79 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Thu, 17 Jan 2013 20:55:06 +0100 Subject: [PATCH 057/143] typos --- .../org/jetbrains/generate/tostring/package.html | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/package.html b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/package.html index ffd0829b0c3f..53296bfaf325 100644 --- a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/package.html +++ b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/package.html @@ -3,7 +3,7 @@

Generate toString() plugin

Plugin home page

- The plugin is hosted at Google code where there is an offical issue tracker and wiki pages with more information. + The plugin is hosted at Google code where there is an official issue tracker and wiki pages with more information.
Plugin home page:
generate-tostring @@ -49,7 +49,7 @@

Enable getters in code generation

Using this feature getter methods that does not directly use an existing field are avail in the Velocity Template Macro - langauge as the variable $methods. + language as the variable $methods.
The example again with getters enabled:
@@ -113,8 +113,8 @@
     Exclude fields by typenamePerforms a regular expression matching on the field type name (fully qualified name). If the result is true the field will not be part of available fields for the code generator.
     Exclude methods by namePerforms a regular expression matching on the method name. If the result is true the method will not be part of available methods for the code generator.
     Exclude methods by return typenamePerforms a regular expression matching on the method return typename (fully qualified name). If the result is true the method will not be part of available methods for the code generator.
-    Automatic add implements java.io.SerializableWill automatic add implements Serializable to the java bean class if not already implemented. This is usefull for value objects that usually have to implement this interface for working in J2EE environments.
-    Automatic import packagesWill automatic import the packages. Additional packages can be separated using comma. IDEA will optmize the imports so java.util.* will be optimized to java.util.List;java.util.Arrays etc. 
Can be used to import your own classes that might be added to the generated code in the toString method. + Automatic add implements java.io.SerializableWill automatic add implements Serializable to the java bean class if not already implemented. This is useful for value objects that usually have to implement this interface for working in J2EE environments. + Automatic import packagesWill automatic import the packages. Additional packages can be separated using comma. IDEA will optimize the imports so java.util.* will be optimized to java.util.List;java.util.Arrays etc.
Can be used to import your own classes that might be added to the generated code in the toString method. TemplatesA list of predefined templates to choose. To use a new template first select it and click the Use this template button. Active templateActivates the current selected template. A confirm dialog will be prompted. Save templateSaving the current template to a file. A file chooser dialog will be prompted. @@ -298,8 +298,8 @@ $member.accessorStringThe accessor of the field or method. For field it is the $field.name and for method it is $method.methodName $member.typeNameStringThe classname of the type (Object, String, List etc.) $member.typeQualifiedNameStringThe qualified classname of the type (java.lang.Object, java.lang.String, java.uti.List etc.) - $member.arraybooleanTests if the type is an array type (either a primitve array or object array)? - $member.primitiveArraybooleanIs the type a primitve array type? (int[], short[], float[] etc.) + $member.arraybooleanTests if the type is an array type (either a primitive array or object array)? + $member.primitiveArraybooleanIs the type a primitive array type? (int[], short[], float[] etc.) $member.objectArraybooleanIs the type an Object array type? (Object[], String[] etc.) $member.stringArraybooleanIs the type an String array type? (String[]) $member.collectionbooleanIs the type assignable from java.util.Collection? @@ -333,9 +333,9 @@ $method.methodNameStringThe name of the method (getFoo). $method.fieldNameStringThe name of the field this getter method covers - null if the method is not a getter for a field $method.modifierAbstractbooleanIs this method an abstract method? - $method.modifierSynchronziedbooleanIs this method a synchronzied method? + $method.modifierSynchronizedbooleanIs this method a synchronized method? $method.returnTypeVoidbooleanIs this method a void method (does not return anything) ? - $methor.getterbooleanIs this a getter method? + $method.getterbooleanIs this a getter method? $method.matchName(regexp)booleanPerforms a regular expression matching on the methodname. $method.deprecatedbooleanIs this method deprecated? From 9d24e4036369550dcf866648fdd1502e611b152b Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Thu, 17 Jan 2013 21:07:06 +0100 Subject: [PATCH 058/143] shorten class references instead of weird $autoImportPackages directive add java_version template variable, so more sensible code can be generated for newer jdks --- .../tostring/GenerateToStringUtils.java | 3 -- .../tostring/GenerateToStringWorker.java | 42 +++++++------------ .../generate/tostring/psi/PsiAdapter.java | 28 +++++++++++++ .../tostring/template/DefaultBuffer.vm | 8 ++-- .../tostring/template/DefaultBuilder.vm | 4 +- .../tostring/template/DefaultConcatMember.vm | 10 ++++- .../template/DefaultConcatMemberSuper.vm | 10 ++++- .../template/DefaultToStringBuilder.vm | 9 ++-- 8 files changed, 69 insertions(+), 45 deletions(-) diff --git a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/GenerateToStringUtils.java b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/GenerateToStringUtils.java index 1003db0b1b3b..678699373b51 100644 --- a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/GenerateToStringUtils.java +++ b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/GenerateToStringUtils.java @@ -24,9 +24,6 @@ import com.intellij.openapi.ui.Messages; import com.intellij.psi.*; import org.jetbrains.annotations.NotNull; import org.jetbrains.generate.tostring.config.FilterPattern; -import org.jetbrains.generate.tostring.element.ElementFactory; -import org.jetbrains.generate.tostring.element.FieldElement; -import org.jetbrains.generate.tostring.element.MethodElement; import org.jetbrains.generate.tostring.exception.GenerateCodeException; import org.jetbrains.generate.tostring.exception.PluginException; import org.jetbrains.generate.tostring.psi.PsiAdapter; diff --git a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/GenerateToStringWorker.java b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/GenerateToStringWorker.java index 3534ade12a06..9572a8611855 100644 --- a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/GenerateToStringWorker.java +++ b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/GenerateToStringWorker.java @@ -28,6 +28,7 @@ import com.intellij.openapi.editor.VisualPosition; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; import com.intellij.psi.codeStyle.CodeStyleManager; +import com.intellij.psi.codeStyle.JavaCodeStyleManager; import com.intellij.psi.javadoc.PsiDocComment; import com.intellij.util.IncorrectOperationException; import org.apache.velocity.VelocityContext; @@ -205,40 +206,25 @@ public class GenerateToStringWorker { PsiFile containingFile = clazz.getContainingFile(); if (containingFile instanceof PsiJavaFile) { final PsiJavaFile javaFile = (PsiJavaFile)containingFile; - // if the code uses Arrays, then make sure java.util.Arrays is imported. - String javaCode = method.getText(); - if (javaCode.indexOf("Arrays.") > 0 && - !(PsiAdapter.hasImportStatement(javaFile, "java.util.*") || PsiAdapter.hasImportStatement(javaFile, "java.util.Arrays"))) { - // java.util.Arrays must be imported as java.util.* since the addImportStatement method doens't support onDemand-import statement yet. - PsiAdapter.addImportStatement(javaFile, "java.util.*"); - } - - // if the code uses Reflection (Field[]), then make sure java.lang.reflect.Field is imported. - if (javaCode.indexOf("Field[]") > 0 && - !(PsiAdapter.hasImportStatement(javaFile, "java.lang.reflect.*") || PsiAdapter.hasImportStatement(javaFile, "java.lang.reflect.Field"))) { - // java.lang.reflect.Field must be imported as java.lang.reflect.* since the addImportStatement method doens't support onDemand-import statement yet. - PsiAdapter.addImportStatement(javaFile, "java.lang.reflect.*"); - } - - // any additional packages to import from the params if (params.get("autoImportPackages") != null) { + // keep this for old user templates autoImportPackages(javaFile, params.get("autoImportPackages")); } + method = (PsiMethod)JavaCodeStyleManager.getInstance(clazz.getProject()).shortenClassReferences(method); } // jump to method - if (config.isJumpToMethod() && editor != null) { - PsiMethod newMethod = PsiAdapter.findMethodByName(clazz, template.getTargetMethodName()); - if (newMethod != null) { - int offset = newMethod.getTextOffset(); - if (offset > 2) { - VisualPosition vp = editor.offsetToVisualPosition(offset); - if (logger.isDebugEnabled()) logger.debug("Moving/Scrolling caret to " + vp + " (offset=" + offset + ")"); - editor.getCaretModel().moveToVisualPosition(vp); - editor.getScrollingModel().scrollToCaret(ScrollType.CENTER_DOWN); - } - } + if (!config.isJumpToMethod() || editor == null) { + return; } + int offset = method.getTextOffset(); + if (offset <= 2) { + return; + } + VisualPosition vp = editor.offsetToVisualPosition(offset); + if (logger.isDebugEnabled()) logger.debug("Moving/Scrolling caret to " + vp + " (offset=" + offset + ")"); + editor.getCaretModel().moveToVisualPosition(vp); + editor.getScrollingModel().scrollToCaret(ScrollType.CENTER_DOWN); } /** @@ -277,6 +263,8 @@ public class GenerateToStringWorker { try { VelocityContext vc = new VelocityContext(); + vc.put("java_version", PsiAdapter.getJavaVersion(clazz)); + // field information logger.debug("Velocity Context - adding fields"); vc.put("fields", ElementUtils.getOnlyAsFieldElements(selectedMembers)); diff --git a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/psi/PsiAdapter.java b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/psi/PsiAdapter.java index 35118091f0dc..2a6d2752677f 100644 --- a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/psi/PsiAdapter.java +++ b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/psi/PsiAdapter.java @@ -17,6 +17,7 @@ package org.jetbrains.generate.tostring.psi; import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.project.Project; +import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.*; import com.intellij.psi.codeStyle.CodeStyleManager; import com.intellij.psi.codeStyle.JavaCodeStyleManager; @@ -24,6 +25,7 @@ import com.intellij.psi.javadoc.PsiDocComment; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.util.InheritanceUtil; import com.intellij.psi.util.PropertyUtil; +import com.intellij.psi.util.PsiUtil; import com.intellij.util.ArrayUtil; import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.Nullable; @@ -663,4 +665,30 @@ public class PsiAdapter { public static boolean isPrimitiveType(PsiType type) { return type instanceof PsiPrimitiveType; } + + public static int getJavaVersion(PsiElement element) { + final LanguageLevel languageLevel = PsiUtil.getLanguageLevel(element); + int version = 0; + switch (languageLevel) { + case JDK_1_3: + version = 3; + break; + case JDK_1_4: + version = 4; + break; + case JDK_1_5: + version = 5; + break; + case JDK_1_6: + version = 6; + break; + case JDK_1_7: + version = 7; + break; + case JDK_1_8: + version = 8; + break; + } + return version; + } } diff --git a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/template/DefaultBuffer.vm b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/template/DefaultBuffer.vm index e4ba6ea5c4bf..56ded32c0d74 100644 --- a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/template/DefaultBuffer.vm +++ b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/template/DefaultBuffer.vm @@ -1,5 +1,5 @@ -public String toString() { -final StringBuffer sb = new StringBuffer("$classname{"); +public java.lang.String toString() { +final java.lang.StringBuffer sb = new java.lang.StringBuffer("$classname{"); #set ($i = 0) #foreach ($member in $members) #if ($i == 0) @@ -14,7 +14,7 @@ $member.name=")## #end #if ($member.primitiveArray) ; -if ($member.name == null) +if ($member.name == null) ## sb.append("null"); else { sb.append('['); @@ -23,7 +23,7 @@ sb.append(i == 0 ? "" : ", ").append($member.name [i]); sb.append(']'); } #elseif ($member.objectArray) -.append($member.name == null ? "null" : Arrays.asList($member.name).toString()); +.append($member.name == null ? "null" : java.util.Arrays.asList($member.name).toString()); #elseif ($member.string) .append($member.accessor).append('\''); #else diff --git a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/template/DefaultBuilder.vm b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/template/DefaultBuilder.vm index a0912554c2b7..50c17175c568 100644 --- a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/template/DefaultBuilder.vm +++ b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/template/DefaultBuilder.vm @@ -1,5 +1,5 @@ -public String toString() { -final StringBuilder sb = new StringBuilder("$classname{"); +public java.lang.String toString() { +final java.lang.StringBuilder sb = new java.lang.StringBuilder("$classname{"); #set ($i = 0) #foreach ($member in $members) #if ($i == 0) diff --git a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/template/DefaultConcatMember.vm b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/template/DefaultConcatMember.vm index 1073e84b1911..1449358785f7 100644 --- a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/template/DefaultConcatMember.vm +++ b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/template/DefaultConcatMember.vm @@ -1,4 +1,4 @@ -public String toString() { +public java.lang.String toString() { #if ( $members.size() > 0 ) #set ( $i = 0 ) return "$classname{" + @@ -9,7 +9,13 @@ public String toString() { ", ## #end #if ( $member.objectArray ) -$member.name=" + ($member.accessor == null ? null : Arrays.asList($member.accessor)) + +#if ($java_version < 5) +$member.name=" + ($member.accessor == null ? null : java.util.Arrays.asList($member.accessor)) + +#else +$member.name=" + java.util.Arrays.toString($member.accessor) + +#end +#elseif ( $member.primitiveArray && $java_version >= 5) +$member.name=" + java.util.Arrays.toString($member.accessor) + #elseif ( $member.string ) $member.name='" + $member.accessor + '\'' + #else diff --git a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/template/DefaultConcatMemberSuper.vm b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/template/DefaultConcatMemberSuper.vm index e71975557a22..19ac22755954 100644 --- a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/template/DefaultConcatMemberSuper.vm +++ b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/template/DefaultConcatMemberSuper.vm @@ -1,4 +1,4 @@ -public String toString() { +public java.lang.String toString() { #if ( $members.size() > 0 ) #set ( $i = 0 ) return "$classname{" + @@ -9,7 +9,13 @@ public String toString() { ", ## #end #if ( $member.objectArray ) -$member.name=" + ($member.accessor == null ? null : Arrays.asList($member.accessor)) + +#if ($java_version < 5) +$member.name=" + ($member.accessor == null ? null : java.util.Arrays.asList($member.accessor)) + +#else +$member.name=" + java.util.Arrays.toString($member.accessor) + +#end +#elseif ( $member.primitiveArray && $java_version >= 5) +$member.name=" + java.util.Arrays.toString($member.accessor) + #elseif ( $member.string ) $member.name='" + $member.accessor + '\'' + #else diff --git a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/template/DefaultToStringBuilder.vm b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/template/DefaultToStringBuilder.vm index 6bb48b3b805d..ac952a4a694b 100644 --- a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/template/DefaultToStringBuilder.vm +++ b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/template/DefaultToStringBuilder.vm @@ -1,8 +1,7 @@ -public String toString() { -#set ($autoImportPackages = "org.apache.commons.lang.builder.ToStringBuilder") - return new ToStringBuilder(this). +public java.lang.String toString() { + return new org.apache.commons.lang.builder.ToStringBuilder(this) #foreach ($member in $members) - append("$member.name", $member.accessor). + .append("$member.name", $member.accessor) #end - toString(); + .toString(); } \ No newline at end of file From 06941be2504b25e74b0782708e7180756d44f8d0 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Thu, 17 Jan 2013 21:08:14 +0100 Subject: [PATCH 059/143] IDEA-90598 (Add toString template for Guava Objects.toStringHelper) --- .../jetbrains/generate/tostring/template/DefaultGuava.vm | 7 +++++++ .../generate/tostring/template/DefaultObjectsToString.vm | 3 +++ .../tostring/template/TemplateResourceLocator.java | 4 ++++ 3 files changed, 14 insertions(+) create mode 100644 plugins/generate-tostring/src/org/jetbrains/generate/tostring/template/DefaultGuava.vm create mode 100644 plugins/generate-tostring/src/org/jetbrains/generate/tostring/template/DefaultObjectsToString.vm diff --git a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/template/DefaultGuava.vm b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/template/DefaultGuava.vm new file mode 100644 index 000000000000..18b6c1085f83 --- /dev/null +++ b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/template/DefaultGuava.vm @@ -0,0 +1,7 @@ +public java.lang.String toString() { +return com.google.common.base.Objects.toStringHelper(this) +#foreach ($member in $members) +.add("$member.name", $member.accessor) +#end +.toString(); +} diff --git a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/template/DefaultObjectsToString.vm b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/template/DefaultObjectsToString.vm new file mode 100644 index 000000000000..e8fdfdbb297f --- /dev/null +++ b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/template/DefaultObjectsToString.vm @@ -0,0 +1,3 @@ +public java.lang.String toString() { +return java.util.Objects.toString(this); +} diff --git a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/template/TemplateResourceLocator.java b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/template/TemplateResourceLocator.java index 7c7e50d438c4..6452516d793a 100644 --- a/plugins/generate-tostring/src/org/jetbrains/generate/tostring/template/TemplateResourceLocator.java +++ b/plugins/generate-tostring/src/org/jetbrains/generate/tostring/template/TemplateResourceLocator.java @@ -31,7 +31,9 @@ public class TemplateResourceLocator { private static final String DEFAULT_CONCAT_SUPER = "/org/jetbrains/generate/tostring/template/DefaultConcatMemberSuper.vm"; private static final String DEFAULT_BUFFER = "/org/jetbrains/generate/tostring/template/DefaultBuffer.vm"; private static final String DEFAULT_BUILDER = "/org/jetbrains/generate/tostring/template/DefaultBuilder.vm"; + private static final String DEFAULT_OBJECTS = "/org/jetbrains/generate/tostring/template/DefaultObjectsToString.vm"; private static final String DEFAULT_TOSTRINGBUILDER = "/org/jetbrains/generate/tostring/template/DefaultToStringBuilder.vm"; + private static final String DEFAULT_GUAVA = "/org/jetbrains/generate/tostring/template/DefaultGuava.vm"; private TemplateResourceLocator() {} @@ -45,7 +47,9 @@ public class TemplateResourceLocator { new TemplateResource("String concat (+) and super.toString()", readFile(DEFAULT_CONCAT_SUPER), true), new TemplateResource("StringBuffer", readFile(DEFAULT_BUFFER), true), new TemplateResource("StringBuilder (JDK 1.5)", readFile(DEFAULT_BUILDER), true), + new TemplateResource("Objects.toString() (JDK 1.7)", readFile(DEFAULT_OBJECTS), true), new TemplateResource("ToStringBuilder (Apache Commons)", readFile(DEFAULT_TOSTRINGBUILDER), true), + new TemplateResource("Objects.toStringHelper (Guava)", readFile(DEFAULT_GUAVA), true) }; } catch (IOException e) { From 03c8b696df274e32ce86620a4f40cf447b873597 Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Thu, 17 Jan 2013 17:47:47 +0100 Subject: [PATCH 060/143] Ability to skip extra long test --- .../com/intellij/psi/PsiConcurrencyStressTest.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/java/java-tests/testSrc/com/intellij/psi/PsiConcurrencyStressTest.java b/java/java-tests/testSrc/com/intellij/psi/PsiConcurrencyStressTest.java index 49fcdd73f39e..c1d20b4481c5 100644 --- a/java/java-tests/testSrc/com/intellij/psi/PsiConcurrencyStressTest.java +++ b/java/java-tests/testSrc/com/intellij/psi/PsiConcurrencyStressTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -41,6 +41,14 @@ import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; public class PsiConcurrencyStressTest extends PsiTestCase { + private static final boolean SKIP = "true".equalsIgnoreCase(System.getProperty("skip.psi.concurrency.test")); + + @Override + public void runBare() throws Throwable { + if (!SKIP) { + super.runBare(); + } + } @Override protected void setUp() throws Exception { From 66b12164aa3aaf39872eaa6aefe92888a738330a Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Thu, 17 Jan 2013 21:00:07 +0100 Subject: [PATCH 061/143] IDEA-74850 (incorrect numeric literals highlighting) --- .../daemon/impl/analysis/HighlightUtil.java | 70 +- .../src/com/intellij/lexer/_JavaLexer.flex | 65 +- .../src/com/intellij/lexer/_JavaLexer.java | 1031 ++++++++--------- .../src/messages/JavaErrorMessages.properties | 1 + .../advHighlighting/NumericLiterals.java | 33 +- .../advHighlighting7/NumericLiterals.java | 7 + .../lang/java/lexer/JavaLexerTest.java | 35 +- 7 files changed, 623 insertions(+), 619 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java index d880cae77f33..67b143c9b0c1 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -63,6 +63,8 @@ import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.PropertyKey; import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import static com.intellij.util.containers.ContainerUtil.newTroveSet; @@ -833,27 +835,35 @@ public class HighlightUtil extends HighlightUtilBase { @Nullable public static HighlightInfo checkLiteralExpressionParsingError(@NotNull final PsiLiteralExpression expression) { - final Object value = expression.getValue(); - final PsiElement literal = expression.getFirstChild(); + PsiElement literal = expression.getFirstChild(); assert literal instanceof PsiJavaToken : literal; - final IElementType type = ((PsiJavaToken)literal).getTokenType(); - String text = PsiLiteralExpressionImpl.NUMERIC_LITERALS.contains(type) ? literal.getText().toLowerCase() : literal.getText(); + IElementType type = ((PsiJavaToken)literal).getTokenType(); + if (type == JavaTokenType.TRUE_KEYWORD || type == JavaTokenType.FALSE_KEYWORD || type == JavaTokenType.NULL_KEYWORD) { + return null; + } - if (PsiLiteralExpressionImpl.REAL_LITERALS.contains(type)) { + boolean isInt = PsiLiteralExpressionImpl.INTEGER_LITERALS.contains(type); + boolean isFP = PsiLiteralExpressionImpl.REAL_LITERALS.contains(type); + String text = isInt || isFP ? literal.getText().toLowerCase() : literal.getText(); + Object value = expression.getValue(); + + if (isFP) { if (text.startsWith(PsiLiteralExpressionImpl.HEX_PREFIX)) { final HighlightInfo info = checkFeature(expression, Feature.HEX_FP_LITERALS); if (info != null) return info; } } - if (PsiLiteralExpressionImpl.INTEGER_LITERALS.contains(type)) { + if (isInt) { if (text.startsWith(PsiLiteralExpressionImpl.BIN_PREFIX)) { final HighlightInfo info = checkFeature(expression, Feature.BIN_LITERALS); if (info != null) return info; } } - if (PsiLiteralExpressionImpl.NUMERIC_LITERALS.contains(type)) { + if (isInt || isFP) { if (text.contains("_")) { - final HighlightInfo info = checkFeature(expression, Feature.UNDERSCORES); + HighlightInfo info = checkFeature(expression, Feature.UNDERSCORES); + if (info != null) return info; + info = checkUnderscores(expression, text, isInt); if (info != null) return info; } } @@ -898,15 +908,12 @@ public class HighlightUtil extends HighlightUtilBase { } } } - else if (type == JavaTokenType.FLOAT_LITERAL || type == JavaTokenType.DOUBLE_LITERAL) { + else if (isFP) { if (value == null) { final String message = JavaErrorMessages.message("malformed.floating.point.literal"); return HighlightInfo.createHighlightInfo(HighlightInfoType.ERROR, expression, message); } } - else if (type == JavaTokenType.TRUE_KEYWORD || type == JavaTokenType.FALSE_KEYWORD || type == JavaTokenType.NULL_KEYWORD) { - return null; - } else if (type == JavaTokenType.CHARACTER_LITERAL) { // todo[r.sh] clean this mess up if (value != null) { @@ -1003,6 +1010,43 @@ public class HighlightUtil extends HighlightUtilBase { return null; } + private static final Pattern FP_LITERAL_PARTS = + Pattern.compile("(?:" + + "(?:0x([_\\p{XDigit}]*)\\.?([_\\p{XDigit}]*)p[+-]?([_\\d]*))" + + "|" + + "(?:([_\\d]*)\\.?([_\\d]*)e?[+-]?([_\\d]*))" + + ")[fd]?"); + + @Nullable + private static HighlightInfo checkUnderscores(PsiElement expression, String text, boolean isInt) { + String[] parts = ArrayUtil.EMPTY_STRING_ARRAY; + + if (isInt) { + int start = 0, end = text.length(); + if (text.startsWith(PsiLiteralExpressionImpl.HEX_PREFIX) || text.startsWith(PsiLiteralExpressionImpl.BIN_PREFIX)) start += 2; + if (StringUtil.endsWithChar(text, 'l')) --end; + parts = new String[]{text.substring(start, end)}; + } + else { + Matcher matcher = FP_LITERAL_PARTS.matcher(text); + if (matcher.matches()) { + parts = new String[matcher.groupCount()]; + for (int i = 0; i < matcher.groupCount(); i++) { + parts[i] = matcher.group(i + 1); + } + } + } + + for (String part : parts) { + if (part != null && (StringUtil.startsWithChar(part, '_') || StringUtil.endsWithChar(part, '_'))) { + String message = JavaErrorMessages.message("illegal.underscore"); + return HighlightInfo.createHighlightInfo(HighlightInfoType.ERROR, expression, message); + } + } + + return null; + } + // true if floating point literal consists of zeros only public static boolean isFPZero(@NotNull final String text) { for (int i = 0; i < text.length(); i++) { diff --git a/java/java-psi-impl/src/com/intellij/lexer/_JavaLexer.flex b/java/java-psi-impl/src/com/intellij/lexer/_JavaLexer.flex index 5b62d45a8f4a..30413b509690 100644 --- a/java/java-psi-impl/src/com/intellij/lexer/_JavaLexer.flex +++ b/java/java-psi-impl/src/com/intellij/lexer/_JavaLexer.flex @@ -1,4 +1,18 @@ -/* It's an automatically generated code. Do not modify it. */ +/* + * Copyright 2000-2013 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.lexer; import com.intellij.pom.java.LanguageLevel; @@ -43,38 +57,24 @@ DOC_COMMENT="/*""*"+("/"|([^"/""*"]{COMMENT_TAIL}))? COMMENT_TAIL=([^"*"]*("*"+[^"*""/"])?)*("*"+"/")? END_OF_LINE_COMMENT="/""/"[^\r\n]* -DIGIT=[0-9] -DIGIT_OR_UNDERSCORE=[_0-9] -OCTAL_DIGIT=[0-7] -OCTAL_DIGIT_OR_UNDERSCORE=[_0-7] -HEX_DIGIT=[0-9A-Fa-f] -HEX_DIGIT_OR_UNDERSCORE=[_0-9A-Fa-f] -BINARY_DIGIT=[01] -BINARY_DIGIT_OR_UNDERSCORE=[_01] +DIGIT = [0-9] +DIGIT_OR_UNDERSCORE = [_0-9] +DIGITS = {DIGIT} | {DIGIT} {DIGIT_OR_UNDERSCORE}* +HEX_DIGIT_OR_UNDERSCORE = [_0-9A-Fa-f] -DIGITS={DIGIT}|({DIGIT}{DIGIT_OR_UNDERSCORE}*{DIGIT}) -HEX_DIGITS={HEX_DIGIT}|({HEX_DIGIT}{HEX_DIGIT_OR_UNDERSCORE}*{HEX_DIGIT}) -BINARY_DIGITS={BINARY_DIGIT}|({BINARY_DIGIT}{BINARY_DIGIT_OR_UNDERSCORE}*{BINARY_DIGIT}) +INTEGER_LITERAL = {DIGITS} | {HEX_INTEGER_LITERAL} | {BIN_INTEGER_LITERAL} +LONG_LITERAL = {INTEGER_LITERAL} [Ll] +HEX_INTEGER_LITERAL = 0 [Xx] {HEX_DIGIT_OR_UNDERSCORE}* +BIN_INTEGER_LITERAL = 0 [Bb] {DIGIT_OR_UNDERSCORE}* -INTEGER_LITERAL={DECIMAL_INTEGER_LITERAL}|{OCTAL_INTEGER_LITERAL}|{HEX_INTEGER_LITERAL}|{BINARY_INTEGER_LITERAL} -DECIMAL_INTEGER_LITERAL=0|([1-9]({DIGIT_OR_UNDERSCORE}*{DIGIT})?) -OCTAL_INTEGER_LITERAL=0{OCTAL_DIGIT_OR_UNDERSCORE}*{OCTAL_DIGIT} -HEX_INTEGER_LITERAL=0[Xx]{HEX_DIGITS}? -BINARY_INTEGER_LITERAL=0[Bb]{BINARY_DIGITS}? -LONG_LITERAL={INTEGER_LITERAL}[Ll] - -FLOAT_LITERAL=({FLOATING_POINT_LITERAL1}|{FLOATING_POINT_LITERAL2}|{FLOATING_POINT_LITERAL3}|{FLOATING_POINT_LITERAL4})[Ff] -DOUBLE_LITERAL=(({FLOATING_POINT_LITERAL1}|{FLOATING_POINT_LITERAL2}|{FLOATING_POINT_LITERAL3})[Dd]?)|({FLOATING_POINT_LITERAL4}[Dd]) -FLOATING_POINT_LITERAL1={DIGITS}"."{DIGITS}?{EXPONENT_PART}? -FLOATING_POINT_LITERAL2="."{DIGITS}{EXPONENT_PART}? -FLOATING_POINT_LITERAL3={DIGITS}{EXPONENT_PART} -FLOATING_POINT_LITERAL4={DIGITS} -EXPONENT_PART=[Ee]["+""-"]?{DIGITS}? - -HEX_FLOAT_LITERAL={HEX_SIGNIFICAND}{BINARY_EXPONENT}[Ff] -HEX_DOUBLE_LITERAL={HEX_SIGNIFICAND}{BINARY_EXPONENT}[Dd]? -BINARY_EXPONENT=[Pp][+-]?{DIGITS} -HEX_SIGNIFICAND={HEX_INTEGER_LITERAL}|{HEX_INTEGER_LITERAL}.|0[Xx]{HEX_DIGITS}?.{HEX_DIGITS} +FLOAT_LITERAL = ({DEC_FP_LITERAL} | {HEX_FP_LITERAL}) [Ff] | {DIGITS} [Ff] +DOUBLE_LITERAL = ({DEC_FP_LITERAL} | {HEX_FP_LITERAL}) [Dd]? | {DIGITS} [Dd] +DEC_FP_LITERAL = {DIGITS} {DEC_EXPONENT} | {DEC_SIGNIFICAND} {DEC_EXPONENT}? +DEC_SIGNIFICAND = "." {DIGITS} | {DIGITS} "." {DIGIT_OR_UNDERSCORE}* +DEC_EXPONENT = [Ee] [+-]? {DIGIT_OR_UNDERSCORE}* +HEX_FP_LITERAL = {HEX_SIGNIFICAND} {HEX_EXPONENT} +HEX_SIGNIFICAND = 0 [Xx] ({HEX_DIGIT_OR_UNDERSCORE}+ "."? | {HEX_DIGIT_OR_UNDERSCORE}* "." {HEX_DIGIT_OR_UNDERSCORE}+) +HEX_EXPONENT = [Pp] [+-]? {DIGIT_OR_UNDERSCORE}* CHARACTER_LITERAL="'"([^\\\'\r\n]|{ESCAPE_SEQUENCE})*("'"|\\)? STRING_LITERAL=\"([^\\\"\r\n]|{ESCAPE_SEQUENCE})*(\"|\\)? @@ -91,10 +91,7 @@ ESCAPE_SEQUENCE=\\[^\r\n] {LONG_LITERAL} { return JavaTokenType.LONG_LITERAL; } {INTEGER_LITERAL} { return JavaTokenType.INTEGER_LITERAL; } {FLOAT_LITERAL} { return JavaTokenType.FLOAT_LITERAL; } - {HEX_FLOAT_LITERAL} { return JavaTokenType.FLOAT_LITERAL; } {DOUBLE_LITERAL} { return JavaTokenType.DOUBLE_LITERAL; } - {HEX_DOUBLE_LITERAL} { return JavaTokenType.DOUBLE_LITERAL; } - {CHARACTER_LITERAL} { return JavaTokenType.CHARACTER_LITERAL; } {STRING_LITERAL} { return JavaTokenType.STRING_LITERAL; } diff --git a/java/java-psi-impl/src/com/intellij/lexer/_JavaLexer.java b/java/java-psi-impl/src/com/intellij/lexer/_JavaLexer.java index 702d3f66f20a..1c5711cc4c25 100644 --- a/java/java-psi-impl/src/com/intellij/lexer/_JavaLexer.java +++ b/java/java-psi-impl/src/com/intellij/lexer/_JavaLexer.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -14,9 +14,7 @@ * limitations under the License. */ -/* The following code was generated by JFlex 1.4.3 on 5/14/12 1:21 PM */ - -/* It's an automatically generated code. Do not modify it. */ +/* The following code was generated by JFlex 1.4.3 on 1/17/13 8:47 PM */ package com.intellij.lexer; import com.intellij.pom.java.LanguageLevel; @@ -29,7 +27,7 @@ import com.intellij.psi.tree.IElementType; /** * This class is a scanner generated by * JFlex 1.4.3 - * on 5/14/12 1:21 PM from the specification file + * on 1/17/13 8:47 PM from the specification file * /home/sher/Projects/IDEA/tools/lexer/../../community/java/java-psi-impl/src/com/intellij/lexer/_JavaLexer.flex */ class _JavaLexer implements FlexLexer { @@ -53,96 +51,96 @@ class _JavaLexer implements FlexLexer { * Translates characters to character classes */ private static final String ZZ_CMAP_PACKED = - "\11\3\1\1\1\26\1\0\1\1\1\6\16\3\4\0\1\1\1\63"+ - "\1\31\1\0\1\2\1\72\1\70\1\27\1\73\1\74\1\5\1\65"+ - "\1\102\1\24\1\22\1\4\1\14\1\13\6\11\2\7\1\105\1\101"+ - "\1\66\1\62\1\67\1\104\1\106\1\12\1\16\1\12\1\21\1\23"+ - "\1\20\5\2\1\17\3\2\1\25\7\2\1\15\2\2\1\77\1\30"+ - "\1\100\1\71\1\10\1\0\1\37\1\43\1\44\1\52\1\35\1\36"+ - "\1\55\1\50\1\51\1\2\1\46\1\40\1\53\1\42\1\45\1\56"+ - "\1\2\1\33\1\41\1\32\1\34\1\57\1\60\1\54\1\47\1\61"+ - "\1\75\1\64\1\76\1\103\41\3\2\0\4\2\4\0\1\2\2\0"+ - "\1\3\7\0\1\2\4\0\1\2\5\0\27\2\1\0\37\2\1\0"+ - "\u013f\2\31\0\162\2\4\0\14\2\16\0\5\2\11\0\1\2\21\0"+ - "\130\3\5\0\23\3\12\0\1\2\13\0\1\2\1\0\3\2\1\0"+ - "\1\2\1\0\24\2\1\0\54\2\1\0\46\2\1\0\5\2\4\0"+ - "\202\2\1\0\4\3\3\0\105\2\1\0\46\2\2\0\2\2\6\0"+ - "\20\2\41\0\46\2\2\0\1\2\7\0\47\2\11\0\21\3\1\0"+ - "\27\3\1\0\3\3\1\0\1\3\1\0\2\3\1\0\1\3\13\0"+ - "\33\2\5\0\3\2\15\0\4\3\14\0\6\3\13\0\32\2\5\0"+ - "\13\2\16\3\7\0\12\3\4\0\2\2\1\3\143\2\1\0\1\2"+ - "\10\3\1\0\6\3\2\2\2\3\1\0\4\3\2\2\12\3\3\2"+ - "\2\0\1\2\17\0\1\3\1\2\1\3\36\2\33\3\2\0\3\2"+ - "\60\0\46\2\13\3\1\2\u014f\0\3\3\66\2\2\0\1\3\1\2"+ - "\20\3\2\0\1\2\4\3\3\0\12\2\2\3\2\0\12\3\21\0"+ - "\3\3\1\0\10\2\2\0\2\2\2\0\26\2\1\0\7\2\1\0"+ - "\1\2\3\0\4\2\2\0\1\3\1\2\7\3\2\0\2\3\2\0"+ - "\3\3\11\0\1\3\4\0\2\2\1\0\3\2\2\3\2\0\12\3"+ - "\4\2\15\0\3\3\1\0\6\2\4\0\2\2\2\0\26\2\1\0"+ - "\7\2\1\0\2\2\1\0\2\2\1\0\2\2\2\0\1\3\1\0"+ - "\5\3\4\0\2\3\2\0\3\3\13\0\4\2\1\0\1\2\7\0"+ - "\14\3\3\2\14\0\3\3\1\0\11\2\1\0\3\2\1\0\26\2"+ - "\1\0\7\2\1\0\2\2\1\0\5\2\2\0\1\3\1\2\10\3"+ - "\1\0\3\3\1\0\3\3\2\0\1\2\17\0\2\2\2\3\2\0"+ - "\12\3\1\0\1\2\17\0\3\3\1\0\10\2\2\0\2\2\2\0"+ - "\26\2\1\0\7\2\1\0\2\2\1\0\5\2\2\0\1\3\1\2"+ - "\6\3\3\0\2\3\2\0\3\3\10\0\2\3\4\0\2\2\1\0"+ - "\3\2\4\0\12\3\1\0\1\2\20\0\1\3\1\2\1\0\6\2"+ - "\3\0\3\2\1\0\4\2\3\0\2\2\1\0\1\2\1\0\2\2"+ - "\3\0\2\2\3\0\3\2\3\0\10\2\1\0\3\2\4\0\5\3"+ - "\3\0\3\3\1\0\4\3\11\0\1\3\17\0\11\3\11\0\1\2"+ - "\7\0\3\3\1\0\10\2\1\0\3\2\1\0\27\2\1\0\12\2"+ - "\1\0\5\2\4\0\7\3\1\0\3\3\1\0\4\3\7\0\2\3"+ - "\11\0\2\2\4\0\12\3\22\0\2\3\1\0\10\2\1\0\3\2"+ - "\1\0\27\2\1\0\12\2\1\0\5\2\2\0\1\3\1\2\7\3"+ - "\1\0\3\3\1\0\4\3\7\0\2\3\7\0\1\2\1\0\2\2"+ + "\11\3\1\1\1\6\1\0\1\1\1\6\16\3\4\0\1\1\1\60"+ + "\1\26\1\0\1\2\1\67\1\65\1\24\1\70\1\71\1\5\1\62"+ + "\1\77\1\22\1\20\1\4\1\13\11\7\1\102\1\76\1\63\1\57"+ + "\1\64\1\101\1\103\1\11\1\15\1\11\1\17\1\21\1\16\5\2"+ + "\1\12\3\2\1\23\7\2\1\14\2\2\1\74\1\25\1\75\1\66"+ + "\1\10\1\0\1\34\1\40\1\41\1\47\1\32\1\33\1\52\1\45"+ + "\1\46\1\2\1\43\1\35\1\50\1\37\1\42\1\53\1\2\1\30"+ + "\1\36\1\27\1\31\1\54\1\55\1\51\1\44\1\56\1\72\1\61"+ + "\1\73\1\100\41\3\2\0\4\2\4\0\1\2\2\0\1\3\7\0"+ + "\1\2\4\0\1\2\5\0\27\2\1\0\37\2\1\0\u013f\2\31\0"+ + "\162\2\4\0\14\2\16\0\5\2\11\0\1\2\21\0\130\3\5\0"+ + "\23\3\12\0\1\2\13\0\1\2\1\0\3\2\1\0\1\2\1\0"+ + "\24\2\1\0\54\2\1\0\46\2\1\0\5\2\4\0\202\2\1\0"+ + "\4\3\3\0\105\2\1\0\46\2\2\0\2\2\6\0\20\2\41\0"+ + "\46\2\2\0\1\2\7\0\47\2\11\0\21\3\1\0\27\3\1\0"+ + "\3\3\1\0\1\3\1\0\2\3\1\0\1\3\13\0\33\2\5\0"+ + "\3\2\15\0\4\3\14\0\6\3\13\0\32\2\5\0\13\2\16\3"+ + "\7\0\12\3\4\0\2\2\1\3\143\2\1\0\1\2\10\3\1\0"+ + "\6\3\2\2\2\3\1\0\4\3\2\2\12\3\3\2\2\0\1\2"+ + "\17\0\1\3\1\2\1\3\36\2\33\3\2\0\3\2\60\0\46\2"+ + "\13\3\1\2\u014f\0\3\3\66\2\2\0\1\3\1\2\20\3\2\0"+ + "\1\2\4\3\3\0\12\2\2\3\2\0\12\3\21\0\3\3\1\0"+ + "\10\2\2\0\2\2\2\0\26\2\1\0\7\2\1\0\1\2\3\0"+ + "\4\2\2\0\1\3\1\2\7\3\2\0\2\3\2\0\3\3\11\0"+ + "\1\3\4\0\2\2\1\0\3\2\2\3\2\0\12\3\4\2\15\0"+ + "\3\3\1\0\6\2\4\0\2\2\2\0\26\2\1\0\7\2\1\0"+ + "\2\2\1\0\2\2\1\0\2\2\2\0\1\3\1\0\5\3\4\0"+ + "\2\3\2\0\3\3\13\0\4\2\1\0\1\2\7\0\14\3\3\2"+ + "\14\0\3\3\1\0\11\2\1\0\3\2\1\0\26\2\1\0\7\2"+ + "\1\0\2\2\1\0\5\2\2\0\1\3\1\2\10\3\1\0\3\3"+ + "\1\0\3\3\2\0\1\2\17\0\2\2\2\3\2\0\12\3\1\0"+ + "\1\2\17\0\3\3\1\0\10\2\2\0\2\2\2\0\26\2\1\0"+ + "\7\2\1\0\2\2\1\0\5\2\2\0\1\3\1\2\6\3\3\0"+ + "\2\3\2\0\3\3\10\0\2\3\4\0\2\2\1\0\3\2\4\0"+ + "\12\3\1\0\1\2\20\0\1\3\1\2\1\0\6\2\3\0\3\2"+ + "\1\0\4\2\3\0\2\2\1\0\1\2\1\0\2\2\3\0\2\2"+ + "\3\0\3\2\3\0\10\2\1\0\3\2\4\0\5\3\3\0\3\3"+ + "\1\0\4\3\11\0\1\3\17\0\11\3\11\0\1\2\7\0\3\3"+ + "\1\0\10\2\1\0\3\2\1\0\27\2\1\0\12\2\1\0\5\2"+ + "\4\0\7\3\1\0\3\3\1\0\4\3\7\0\2\3\11\0\2\2"+ "\4\0\12\3\22\0\2\3\1\0\10\2\1\0\3\2\1\0\27\2"+ - "\1\0\20\2\4\0\6\3\2\0\3\3\1\0\4\3\11\0\1\3"+ - "\10\0\2\2\4\0\12\3\22\0\2\3\1\0\22\2\3\0\30\2"+ - "\1\0\11\2\1\0\1\2\2\0\7\2\3\0\1\3\4\0\6\3"+ - "\1\0\1\3\1\0\10\3\22\0\2\3\15\0\60\2\1\3\2\2"+ - "\7\3\4\0\10\2\10\3\1\0\12\3\47\0\2\2\1\0\1\2"+ - "\2\0\2\2\1\0\1\2\2\0\1\2\6\0\4\2\1\0\7\2"+ - "\1\0\3\2\1\0\1\2\1\0\1\2\2\0\2\2\1\0\4\2"+ - "\1\3\2\2\6\3\1\0\2\3\1\2\2\0\5\2\1\0\1\2"+ - "\1\0\6\3\2\0\12\3\2\0\2\2\42\0\1\2\27\0\2\3"+ - "\6\0\12\3\13\0\1\3\1\0\1\3\1\0\1\3\4\0\2\3"+ - "\10\2\1\0\42\2\6\0\24\3\1\0\2\3\4\2\4\0\10\3"+ - "\1\0\44\3\11\0\1\3\71\0\42\2\1\0\5\2\1\0\2\2"+ - "\1\0\7\3\3\0\4\3\6\0\12\3\6\0\6\2\4\3\106\0"+ - "\46\2\12\0\51\2\7\0\132\2\5\0\104\2\5\0\122\2\6\0"+ - "\7\2\1\0\77\2\1\0\1\2\1\0\4\2\2\0\7\2\1\0"+ - "\1\2\1\0\4\2\2\0\47\2\1\0\1\2\1\0\4\2\2\0"+ - "\37\2\1\0\1\2\1\0\4\2\2\0\7\2\1\0\1\2\1\0"+ - "\4\2\2\0\7\2\1\0\7\2\1\0\27\2\1\0\37\2\1\0"+ - "\1\2\1\0\4\2\2\0\7\2\1\0\47\2\1\0\23\2\16\0"+ - "\11\3\56\0\125\2\14\0\u026c\2\2\0\10\2\12\0\32\2\5\0"+ - "\113\2\3\0\3\2\17\0\15\2\1\0\4\2\3\3\13\0\22\2"+ - "\3\3\13\0\22\2\2\3\14\0\15\2\1\0\3\2\1\0\2\3"+ - "\14\0\64\2\40\3\3\0\1\2\3\0\2\2\1\3\2\0\12\3"+ - "\41\0\3\3\2\0\12\3\6\0\130\2\10\0\51\2\1\3\126\0"+ - "\35\2\3\0\14\3\4\0\14\3\12\0\12\3\36\2\2\0\5\2"+ - "\u038b\0\154\2\224\0\234\2\4\0\132\2\6\0\26\2\2\0\6\2"+ - "\2\0\46\2\2\0\6\2\2\0\10\2\1\0\1\2\1\0\1\2"+ - "\1\0\1\2\1\0\37\2\2\0\65\2\1\0\7\2\1\0\1\2"+ - "\3\0\3\2\1\0\7\2\3\0\4\2\2\0\6\2\4\0\15\2"+ - "\5\0\3\2\1\0\7\2\17\0\4\3\32\0\5\3\20\0\2\2"+ - "\23\0\1\2\13\0\4\3\6\0\6\3\1\0\1\2\15\0\1\2"+ - "\40\0\22\2\36\0\15\3\4\0\1\3\3\0\6\3\27\0\1\2"+ - "\4\0\1\2\2\0\12\2\1\0\1\2\3\0\5\2\6\0\1\2"+ - "\1\0\1\2\1\0\1\2\1\0\4\2\1\0\3\2\1\0\7\2"+ - "\3\0\3\2\5\0\5\2\26\0\44\2\u0e81\0\3\2\31\0\11\2"+ - "\6\3\1\0\5\2\2\0\5\2\4\0\126\2\2\0\2\3\2\0"+ - "\3\2\1\0\137\2\5\0\50\2\4\0\136\2\21\0\30\2\70\0"+ - "\20\2\u0200\0\u19b6\2\112\0\u51a6\2\132\0\u048d\2\u0773\0\u2ba4\2\u215c\0"+ - "\u012e\2\2\0\73\2\225\0\7\2\14\0\5\2\5\0\1\2\1\3"+ - "\12\2\1\0\15\2\1\0\5\2\1\0\1\2\1\0\2\2\1\0"+ - "\2\2\1\0\154\2\41\0\u016b\2\22\0\100\2\2\0\66\2\50\0"+ - "\15\2\3\0\20\3\20\0\4\3\17\0\2\2\30\0\3\2\31\0"+ - "\1\2\6\0\5\2\1\0\207\2\2\0\1\3\4\0\1\2\13\0"+ - "\12\3\7\0\32\2\4\0\1\2\1\0\32\2\12\0\132\2\3\0"+ - "\6\2\2\0\6\2\2\0\6\2\2\0\3\2\3\0\2\2\3\0"+ - "\2\2\22\0\3\3\4\0"; + "\1\0\12\2\1\0\5\2\2\0\1\3\1\2\7\3\1\0\3\3"+ + "\1\0\4\3\7\0\2\3\7\0\1\2\1\0\2\2\4\0\12\3"+ + "\22\0\2\3\1\0\10\2\1\0\3\2\1\0\27\2\1\0\20\2"+ + "\4\0\6\3\2\0\3\3\1\0\4\3\11\0\1\3\10\0\2\2"+ + "\4\0\12\3\22\0\2\3\1\0\22\2\3\0\30\2\1\0\11\2"+ + "\1\0\1\2\2\0\7\2\3\0\1\3\4\0\6\3\1\0\1\3"+ + "\1\0\10\3\22\0\2\3\15\0\60\2\1\3\2\2\7\3\4\0"+ + "\10\2\10\3\1\0\12\3\47\0\2\2\1\0\1\2\2\0\2\2"+ + "\1\0\1\2\2\0\1\2\6\0\4\2\1\0\7\2\1\0\3\2"+ + "\1\0\1\2\1\0\1\2\2\0\2\2\1\0\4\2\1\3\2\2"+ + "\6\3\1\0\2\3\1\2\2\0\5\2\1\0\1\2\1\0\6\3"+ + "\2\0\12\3\2\0\2\2\42\0\1\2\27\0\2\3\6\0\12\3"+ + "\13\0\1\3\1\0\1\3\1\0\1\3\4\0\2\3\10\2\1\0"+ + "\42\2\6\0\24\3\1\0\2\3\4\2\4\0\10\3\1\0\44\3"+ + "\11\0\1\3\71\0\42\2\1\0\5\2\1\0\2\2\1\0\7\3"+ + "\3\0\4\3\6\0\12\3\6\0\6\2\4\3\106\0\46\2\12\0"+ + "\51\2\7\0\132\2\5\0\104\2\5\0\122\2\6\0\7\2\1\0"+ + "\77\2\1\0\1\2\1\0\4\2\2\0\7\2\1\0\1\2\1\0"+ + "\4\2\2\0\47\2\1\0\1\2\1\0\4\2\2\0\37\2\1\0"+ + "\1\2\1\0\4\2\2\0\7\2\1\0\1\2\1\0\4\2\2\0"+ + "\7\2\1\0\7\2\1\0\27\2\1\0\37\2\1\0\1\2\1\0"+ + "\4\2\2\0\7\2\1\0\47\2\1\0\23\2\16\0\11\3\56\0"+ + "\125\2\14\0\u026c\2\2\0\10\2\12\0\32\2\5\0\113\2\3\0"+ + "\3\2\17\0\15\2\1\0\4\2\3\3\13\0\22\2\3\3\13\0"+ + "\22\2\2\3\14\0\15\2\1\0\3\2\1\0\2\3\14\0\64\2"+ + "\40\3\3\0\1\2\3\0\2\2\1\3\2\0\12\3\41\0\3\3"+ + "\2\0\12\3\6\0\130\2\10\0\51\2\1\3\126\0\35\2\3\0"+ + "\14\3\4\0\14\3\12\0\12\3\36\2\2\0\5\2\u038b\0\154\2"+ + "\224\0\234\2\4\0\132\2\6\0\26\2\2\0\6\2\2\0\46\2"+ + "\2\0\6\2\2\0\10\2\1\0\1\2\1\0\1\2\1\0\1\2"+ + "\1\0\37\2\2\0\65\2\1\0\7\2\1\0\1\2\3\0\3\2"+ + "\1\0\7\2\3\0\4\2\2\0\6\2\4\0\15\2\5\0\3\2"+ + "\1\0\7\2\17\0\4\3\32\0\5\3\20\0\2\2\23\0\1\2"+ + "\13\0\4\3\6\0\6\3\1\0\1\2\15\0\1\2\40\0\22\2"+ + "\36\0\15\3\4\0\1\3\3\0\6\3\27\0\1\2\4\0\1\2"+ + "\2\0\12\2\1\0\1\2\3\0\5\2\6\0\1\2\1\0\1\2"+ + "\1\0\1\2\1\0\4\2\1\0\3\2\1\0\7\2\3\0\3\2"+ + "\5\0\5\2\26\0\44\2\u0e81\0\3\2\31\0\11\2\6\3\1\0"+ + "\5\2\2\0\5\2\4\0\126\2\2\0\2\3\2\0\3\2\1\0"+ + "\137\2\5\0\50\2\4\0\136\2\21\0\30\2\70\0\20\2\u0200\0"+ + "\u19b6\2\112\0\u51a6\2\132\0\u048d\2\u0773\0\u2ba4\2\u215c\0\u012e\2\2\0"+ + "\73\2\225\0\7\2\14\0\5\2\5\0\1\2\1\3\12\2\1\0"+ + "\15\2\1\0\5\2\1\0\1\2\1\0\2\2\1\0\2\2\1\0"+ + "\154\2\41\0\u016b\2\22\0\100\2\2\0\66\2\50\0\15\2\3\0"+ + "\20\3\20\0\4\3\17\0\2\2\30\0\3\2\31\0\1\2\6\0"+ + "\5\2\1\0\207\2\2\0\1\3\4\0\1\2\13\0\12\3\7\0"+ + "\32\2\4\0\1\2\1\0\32\2\12\0\132\2\3\0\6\2\2\0"+ + "\6\2\2\0\6\2\2\0\3\2\3\0\2\2\3\0\2\2\22\0"+ + "\3\3\4\0"; /** * Translates characters to character classes @@ -159,28 +157,27 @@ class _JavaLexer implements FlexLexer { "\1\10\1\11\1\12\20\3\1\13\1\14\1\15\1\16"+ "\1\17\1\20\1\21\1\22\1\23\1\24\1\25\1\26"+ "\1\27\1\30\1\31\1\32\1\33\1\34\1\35\1\36"+ - "\1\37\1\40\1\41\1\42\1\43\1\0\1\44\1\45"+ - "\3\46\2\0\3\6\1\46\1\0\1\47\1\50\1\51"+ - "\2\11\2\12\34\3\1\52\3\3\1\53\6\3\1\54"+ - "\1\55\1\56\1\57\1\60\1\61\1\62\1\63\1\64"+ - "\1\65\1\66\1\67\1\70\1\41\1\71\2\46\2\0"+ - "\1\6\1\44\1\0\1\6\1\0\1\72\2\3\1\73"+ - "\10\3\1\74\13\3\1\75\11\3\1\76\14\3\1\77"+ - "\1\0\2\71\4\0\1\46\2\0\1\100\2\3\1\101"+ - "\1\3\1\102\1\103\6\3\1\104\6\3\1\105\3\3"+ - "\1\106\1\3\1\107\3\3\1\110\6\3\1\111\5\3"+ - "\1\112\1\3\1\41\4\0\1\45\1\46\1\3\1\113"+ - "\2\3\1\114\1\115\1\116\4\3\1\117\1\3\1\120"+ - "\2\3\1\121\1\3\1\122\1\123\1\3\1\124\13\3"+ - "\1\125\1\3\1\126\1\127\2\3\1\130\2\3\1\131"+ - "\1\3\1\132\1\133\5\3\1\134\1\3\1\135\2\3"+ - "\1\136\3\3\1\137\1\140\3\3\1\141\4\3\1\142"+ - "\1\3\1\143\1\144\2\3\1\145\1\146\1\3\1\147"+ - "\4\3\1\150\1\151\1\3\1\152\2\3\1\153\1\3"+ - "\1\154\1\155\1\3\1\156"; + "\1\37\1\40\1\41\1\42\1\43\1\44\1\45\3\46"+ + "\2\6\1\0\1\47\1\50\1\51\2\11\2\12\34\3"+ + "\1\52\3\3\1\53\6\3\1\54\1\55\1\56\1\57"+ + "\1\60\1\61\1\62\1\63\1\64\1\65\1\66\1\67"+ + "\1\70\1\41\1\71\1\46\1\6\1\0\1\72\2\3"+ + "\1\73\10\3\1\74\13\3\1\75\11\3\1\76\14\3"+ + "\1\77\1\0\2\71\1\0\1\100\2\3\1\101\1\3"+ + "\1\102\1\103\6\3\1\104\6\3\1\105\3\3\1\106"+ + "\1\3\1\107\3\3\1\110\6\3\1\111\5\3\1\112"+ + "\1\3\1\41\1\0\1\3\1\113\2\3\1\114\1\115"+ + "\1\116\4\3\1\117\1\3\1\120\2\3\1\121\1\3"+ + "\1\122\1\123\1\3\1\124\13\3\1\125\1\3\1\126"+ + "\1\127\2\3\1\130\2\3\1\131\1\3\1\132\1\133"+ + "\5\3\1\134\1\3\1\135\2\3\1\136\3\3\1\137"+ + "\1\140\3\3\1\141\4\3\1\142\1\3\1\143\1\144"+ + "\2\3\1\145\1\146\1\3\1\147\4\3\1\150\1\151"+ + "\1\3\1\152\2\3\1\153\1\3\1\154\1\155\1\3"+ + "\1\156"; private static int [] zzUnpackAction() { - int [] result = new int[342]; + int [] result = new int[320]; int offset = 0; offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); return result; @@ -205,52 +202,49 @@ class _JavaLexer implements FlexLexer { private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); private static final String ZZ_ROWMAP_PACKED_0 = - "\0\0\0\107\0\216\0\325\0\u011c\0\u0163\0\u01aa\0\u01f1"+ - "\0\u0238\0\u027f\0\u02c6\0\u030d\0\u0354\0\u039b\0\u03e2\0\u0429"+ - "\0\u0470\0\u04b7\0\u04fe\0\u0545\0\u058c\0\u05d3\0\u061a\0\u0661"+ - "\0\u06a8\0\u06ef\0\u0736\0\u077d\0\u07c4\0\u080b\0\u0852\0\u0899"+ - "\0\u08e0\0\107\0\u0927\0\u096e\0\u09b5\0\107\0\107\0\107"+ - "\0\107\0\107\0\107\0\107\0\107\0\107\0\107\0\u09fc"+ - "\0\107\0\u0a43\0\u0a8a\0\107\0\107\0\u0ad1\0\107\0\107"+ - "\0\107\0\u0b18\0\u0b5f\0\u0ba6\0\u0bed\0\u0c34\0\u0c7b\0\u0cc2"+ - "\0\u0d09\0\u0d50\0\107\0\107\0\107\0\107\0\u0d97\0\u0dde"+ - "\0\107\0\u0e25\0\u0e6c\0\u0eb3\0\u0efa\0\u0f41\0\u0f88\0\u0fcf"+ - "\0\u1016\0\u105d\0\u10a4\0\u10eb\0\u1132\0\u1179\0\u11c0\0\u1207"+ - "\0\u124e\0\u1295\0\u12dc\0\u1323\0\u136a\0\u13b1\0\u13f8\0\u143f"+ - "\0\u1486\0\u14cd\0\u1514\0\u155b\0\u15a2\0\325\0\u15e9\0\u1630"+ - "\0\u1677\0\u16be\0\u1705\0\u174c\0\u1793\0\u17da\0\u1821\0\u1868"+ - "\0\107\0\107\0\107\0\107\0\107\0\107\0\107\0\u18af"+ - "\0\107\0\107\0\107\0\107\0\107\0\u18f6\0\u193d\0\u1984"+ - "\0\u19cb\0\u1a12\0\u1a59\0\u1aa0\0\u1a59\0\u1ae7\0\u1b2e\0\u1b75"+ - "\0\107\0\u1bbc\0\u1c03\0\325\0\u1c4a\0\u1c91\0\u1cd8\0\u1d1f"+ - "\0\u1d66\0\u1dad\0\u1df4\0\u1e3b\0\325\0\u1e82\0\u1ec9\0\u1f10"+ - "\0\u1f57\0\u1f9e\0\u1fe5\0\u202c\0\u2073\0\u20ba\0\u2101\0\u2148"+ - "\0\325\0\u218f\0\u21d6\0\u221d\0\u2264\0\u22ab\0\u22f2\0\u2339"+ - "\0\u2380\0\u23c7\0\u240e\0\u2455\0\u249c\0\u24e3\0\u252a\0\u2571"+ - "\0\u25b8\0\u25ff\0\u2646\0\u268d\0\u26d4\0\u271b\0\u2762\0\107"+ - "\0\u27a9\0\u27f0\0\107\0\u2837\0\u287e\0\u28c5\0\u290c\0\u2953"+ - "\0\u299a\0\u29e1\0\325\0\u2a28\0\u2a6f\0\325\0\u2ab6\0\325"+ - "\0\325\0\u2afd\0\u2b44\0\u2b8b\0\u2bd2\0\u2c19\0\u2c60\0\325"+ - "\0\u2ca7\0\u2cee\0\u2d35\0\u2d7c\0\u2dc3\0\u2e0a\0\325\0\u2e51"+ - "\0\u2e98\0\u2edf\0\325\0\u2f26\0\325\0\u2f6d\0\u2fb4\0\u2ffb"+ - "\0\325\0\u3042\0\u3089\0\u30d0\0\u3117\0\u315e\0\u31a5\0\325"+ - "\0\u31ec\0\u3233\0\u327a\0\u32c1\0\u3308\0\325\0\u334f\0\107"+ - "\0\u3396\0\u33dd\0\u3424\0\u346b\0\u287e\0\u287e\0\u34b2\0\u34f9"+ - "\0\u3540\0\u3587\0\325\0\325\0\u35ce\0\u3615\0\u365c\0\u36a3"+ - "\0\u36ea\0\325\0\u3731\0\325\0\u3778\0\u37bf\0\325\0\u3806"+ - "\0\325\0\325\0\u384d\0\325\0\u3894\0\u38db\0\u3922\0\u3969"+ - "\0\u39b0\0\u39f7\0\u3a3e\0\u3a85\0\u3acc\0\u3b13\0\u3b5a\0\325"+ - "\0\u3ba1\0\325\0\325\0\u3be8\0\u3c2f\0\325\0\u3c76\0\u3cbd"+ - "\0\325\0\u3d04\0\325\0\325\0\u3d4b\0\u3d92\0\u3dd9\0\u3e20"+ - "\0\u3e67\0\325\0\u3eae\0\325\0\u3ef5\0\u3f3c\0\325\0\u3f83"+ - "\0\u3fca\0\u4011\0\325\0\325\0\u4058\0\u409f\0\u40e6\0\325"+ - "\0\u412d\0\u4174\0\u41bb\0\u4202\0\325\0\u4249\0\325\0\325"+ - "\0\u4290\0\u42d7\0\325\0\325\0\u431e\0\325\0\u4365\0\u43ac"+ - "\0\u43f3\0\u443a\0\325\0\325\0\u4481\0\325\0\u44c8\0\u450f"+ - "\0\325\0\u4556\0\325\0\325\0\u459d\0\325"; + "\0\0\0\104\0\210\0\314\0\u0110\0\u0154\0\u0198\0\u01dc"+ + "\0\u0220\0\u0264\0\u02a8\0\u02ec\0\u0330\0\u0374\0\u03b8\0\u03fc"+ + "\0\u0440\0\u0484\0\u04c8\0\u050c\0\u0550\0\u0594\0\u05d8\0\u061c"+ + "\0\u0660\0\u06a4\0\u06e8\0\u072c\0\u0770\0\u07b4\0\u07f8\0\u083c"+ + "\0\u0880\0\104\0\u08c4\0\u0908\0\u094c\0\104\0\104\0\104"+ + "\0\104\0\104\0\104\0\104\0\104\0\104\0\104\0\u0990"+ + "\0\104\0\u09d4\0\u0a18\0\104\0\104\0\104\0\104\0\104"+ + "\0\u0a5c\0\u0aa0\0\u0ae4\0\u0b28\0\u0b6c\0\104\0\104\0\104"+ + "\0\104\0\u0bb0\0\u0bf4\0\104\0\u0c38\0\u0c7c\0\u0cc0\0\u0d04"+ + "\0\u0d48\0\u0d8c\0\u0dd0\0\u0e14\0\u0e58\0\u0e9c\0\u0ee0\0\u0f24"+ + "\0\u0f68\0\u0fac\0\u0ff0\0\u1034\0\u1078\0\u10bc\0\u1100\0\u1144"+ + "\0\u1188\0\u11cc\0\u1210\0\u1254\0\u1298\0\u12dc\0\u1320\0\u1364"+ + "\0\314\0\u13a8\0\u13ec\0\u1430\0\u1474\0\u14b8\0\u14fc\0\u1540"+ + "\0\u1584\0\u15c8\0\u160c\0\104\0\104\0\104\0\104\0\104"+ + "\0\104\0\104\0\u1650\0\104\0\104\0\104\0\104\0\104"+ + "\0\u1694\0\u16d8\0\u171c\0\u1760\0\u17a4\0\104\0\u17e8\0\u182c"+ + "\0\314\0\u1870\0\u18b4\0\u18f8\0\u193c\0\u1980\0\u19c4\0\u1a08"+ + "\0\u1a4c\0\314\0\u1a90\0\u1ad4\0\u1b18\0\u1b5c\0\u1ba0\0\u1be4"+ + "\0\u1c28\0\u1c6c\0\u1cb0\0\u1cf4\0\u1d38\0\314\0\u1d7c\0\u1dc0"+ + "\0\u1e04\0\u1e48\0\u1e8c\0\u1ed0\0\u1f14\0\u1f58\0\u1f9c\0\u1fe0"+ + "\0\u2024\0\u2068\0\u20ac\0\u20f0\0\u2134\0\u2178\0\u21bc\0\u2200"+ + "\0\u2244\0\u2288\0\u22cc\0\u2310\0\104\0\u2354\0\u2398\0\104"+ + "\0\u23dc\0\314\0\u2420\0\u2464\0\314\0\u24a8\0\314\0\314"+ + "\0\u24ec\0\u2530\0\u2574\0\u25b8\0\u25fc\0\u2640\0\314\0\u2684"+ + "\0\u26c8\0\u270c\0\u2750\0\u2794\0\u27d8\0\314\0\u281c\0\u2860"+ + "\0\u28a4\0\314\0\u28e8\0\314\0\u292c\0\u2970\0\u29b4\0\314"+ + "\0\u29f8\0\u2a3c\0\u2a80\0\u2ac4\0\u2b08\0\u2b4c\0\314\0\u2b90"+ + "\0\u2bd4\0\u2c18\0\u2c5c\0\u2ca0\0\314\0\u2ce4\0\104\0\u2d28"+ + "\0\u2d6c\0\u2db0\0\u2df4\0\u2e38\0\314\0\314\0\u2e7c\0\u2ec0"+ + "\0\u2f04\0\u2f48\0\u2f8c\0\314\0\u2fd0\0\314\0\u3014\0\u3058"+ + "\0\314\0\u309c\0\314\0\314\0\u30e0\0\314\0\u3124\0\u3168"+ + "\0\u31ac\0\u31f0\0\u3234\0\u3278\0\u32bc\0\u3300\0\u3344\0\u3388"+ + "\0\u33cc\0\314\0\u3410\0\314\0\314\0\u3454\0\u3498\0\314"+ + "\0\u34dc\0\u3520\0\314\0\u3564\0\314\0\314\0\u35a8\0\u35ec"+ + "\0\u3630\0\u3674\0\u36b8\0\314\0\u36fc\0\314\0\u3740\0\u3784"+ + "\0\314\0\u37c8\0\u380c\0\u3850\0\314\0\314\0\u3894\0\u38d8"+ + "\0\u391c\0\314\0\u3960\0\u39a4\0\u39e8\0\u3a2c\0\314\0\u3a70"+ + "\0\314\0\314\0\u3ab4\0\u3af8\0\314\0\314\0\u3b3c\0\314"+ + "\0\u3b80\0\u3bc4\0\u3c08\0\u3c4c\0\314\0\314\0\u3c90\0\314"+ + "\0\u3cd4\0\u3d18\0\314\0\u3d5c\0\314\0\314\0\u3da0\0\314"; private static int [] zzUnpackRowMap() { - int [] result = new int[342]; + int [] result = new int[320]; int offset = 0; offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); return result; @@ -274,379 +268,342 @@ class _JavaLexer implements FlexLexer { private static final String ZZ_TRANS_PACKED_0 = "\1\2\1\3\1\4\1\2\1\5\1\6\1\3\1\7"+ - "\1\4\1\7\1\4\1\7\1\10\5\4\1\11\1\4"+ - "\1\12\1\4\1\3\1\13\1\2\1\14\1\15\1\16"+ - "\1\4\1\17\1\20\1\21\1\22\1\23\1\24\1\25"+ - "\1\26\4\4\1\27\1\30\2\4\1\31\1\32\1\33"+ - "\1\34\1\4\1\35\1\36\1\37\1\40\1\41\1\42"+ - "\1\43\1\44\1\45\1\46\1\47\1\50\1\51\1\52"+ - "\1\53\1\54\1\55\1\56\1\57\1\60\1\61\110\0"+ - "\1\3\4\0\1\3\17\0\1\3\62\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\30\4\31\0"+ - "\1\62\1\63\54\0\1\64\106\0\1\65\33\0\1\7"+ - "\1\66\1\7\1\0\2\7\2\0\1\67\1\70\1\71"+ - "\1\72\1\73\11\0\1\73\1\70\1\0\1\67\11\0"+ - "\1\71\43\0\1\74\1\75\1\76\1\0\2\76\1\77"+ - "\1\100\1\67\1\70\1\71\1\72\1\73\11\0\1\73"+ - "\1\70\1\0\1\67\2\0\1\100\6\0\1\71\1\0"+ - "\1\77\41\0\1\101\1\0\1\101\1\0\2\101\5\0"+ - "\1\102\110\0\1\103\35\0\1\104\4\0\1\105\17\0"+ - "\6\13\1\0\17\13\1\0\1\106\1\107\56\13\6\14"+ - "\1\0\17\14\1\0\1\14\1\110\1\111\55\14\2\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\1\4\1\112\14\4\1\113\11\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\3\4\1\114"+ - "\24\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\6\4\1\115\1\4\1\116\11\4\1\117"+ - "\5\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\5\4\1\120\1\121\4\4\1\122\3\4"+ - "\1\123\10\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\7\4\1\124\1\4\1\125\16\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\13\4\1\126\14\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\1\127\1\4\1\130"+ - "\12\4\1\131\1\132\7\4\1\133\1\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\2\4"+ - "\1\134\1\135\1\4\1\136\22\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\1\4\1\137"+ - "\11\4\1\140\1\4\1\141\12\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\5\4\1\142"+ - "\1\143\4\4\1\144\2\4\1\145\11\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\4\4"+ - "\1\146\3\4\1\147\10\4\1\150\6\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\3\4"+ - "\1\151\7\4\1\152\14\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\13\4\1\153\14\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\1\4\1\154\1\155\2\4\1\156\22\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\13\4\1\157\14\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\16\4\1\160\11\4\107\0"+ - "\1\161\106\0\1\162\106\0\1\163\1\0\1\164\104\0"+ - "\1\165\2\0\1\166\103\0\1\167\3\0\1\170\102\0"+ - "\1\171\5\0\1\172\100\0\1\173\106\0\1\174\131\0"+ - "\1\175\1\0\6\62\1\0\17\62\1\0\60\62\5\176"+ - "\1\177\101\176\7\0\1\7\1\66\1\7\1\0\2\7"+ - "\101\0\1\101\1\0\1\101\1\0\2\101\3\0\1\70"+ - "\1\71\1\0\1\73\11\0\1\73\1\70\13\0\1\71"+ - "\43\0\1\200\1\0\1\200\1\0\2\200\3\0\1\70"+ - "\1\71\2\0\1\201\11\0\1\70\13\0\1\71\12\0"+ - "\1\201\30\0\1\74\1\202\1\74\1\0\2\74\3\0"+ - "\1\70\1\71\1\72\1\73\11\0\1\73\1\70\13\0"+ - "\1\71\43\0\1\74\1\75\1\76\1\0\2\76\101\0"+ - "\1\74\1\75\1\76\1\0\2\76\2\0\1\67\1\70"+ - "\1\71\1\72\1\73\11\0\1\73\1\70\1\0\1\67"+ - "\11\0\1\71\34\0\7\203\1\204\1\203\4\204\1\203"+ - "\1\204\1\205\2\204\1\203\1\204\1\203\1\206\1\0"+ - "\6\203\3\204\1\205\2\203\2\204\5\203\1\204\3\203"+ - "\1\206\30\203\13\0\2\207\2\0\1\67\20\0\1\67"+ - "\55\0\1\101\1\210\1\101\1\0\2\101\3\0\1\70"+ - "\1\71\1\0\1\73\11\0\1\73\1\70\13\0\1\71"+ - "\56\0\1\211\64\0\6\13\1\0\17\13\1\0\60\13"+ - "\6\14\1\0\17\14\1\0\60\14\2\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\2\4\1\212"+ - "\2\4\1\213\7\4\1\214\12\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\1\4\1\215"+ - "\15\4\1\216\10\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\1\217\27\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\7\4"+ - "\1\220\20\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\2\4\1\221\25\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\1\222"+ - "\27\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\6\4\1\223\21\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\13\4\1\224"+ - "\14\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\1\4\1\225\26\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\10\4\1\226"+ - "\17\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\7\4\1\227\20\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\7\4\1\230"+ - "\20\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\10\4\1\231\17\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\1\4\1\232"+ - "\3\4\1\233\22\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\24\4\1\234\3\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\10\4\1\235\17\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\13\4\1\236\14\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\17\4\1\237\10\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\6\4\1\240\21\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\26\4\1\241\1\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\1\242\27\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\3\4"+ - "\1\243\24\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\13\4\1\244\14\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\1\245"+ - "\27\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\1\246\6\4\1\247\20\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\5\4"+ - "\1\250\22\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\10\4\1\251\17\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\5\4"+ - "\1\252\22\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\1\253\6\4\1\254\20\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\24\4\1\255\3\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\4\4\1\256\23\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\2\4\1\257\25\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\1\260\27\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\13\4"+ - "\1\261\3\4\1\262\10\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\11\4\1\263\16\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\12\4\1\264\15\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\6\4\1\265\10\4"+ - "\1\266\10\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\17\4\1\267\10\4\107\0\1\270"+ - "\24\0\5\176\1\271\101\176\4\272\1\273\1\177\101\272"+ - "\7\0\1\200\1\274\1\200\1\0\2\200\3\0\1\70"+ - "\1\71\14\0\1\70\13\0\1\71\43\0\1\200\1\0"+ - "\1\200\1\0\2\200\3\0\1\70\1\71\14\0\1\70"+ - "\13\0\1\71\43\0\1\74\1\202\1\74\1\0\2\74"+ - "\101\0\1\275\1\0\4\275\1\0\1\275\1\0\2\275"+ - "\1\0\1\275\1\0\1\276\7\0\3\275\3\0\2\275"+ - "\5\0\1\275\3\0\1\276\30\0\7\203\1\204\1\277"+ - "\4\204\1\203\1\204\1\205\2\204\1\203\1\204\1\203"+ - "\1\206\1\0\6\203\3\204\1\205\2\203\2\204\5\203"+ - "\1\204\3\203\1\206\30\203\7\0\1\300\1\0\1\300"+ - "\1\275\2\300\1\0\1\275\1\0\2\275\1\0\1\275"+ - "\1\301\1\276\7\0\3\275\3\0\2\275\5\0\1\275"+ - "\3\0\1\276\6\0\1\301\31\0\1\302\2\0\2\207"+ - "\2\0\1\67\20\0\1\67\55\0\1\101\1\210\1\101"+ - "\1\0\2\101\74\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\3\4\1\303\24\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\10\4"+ - "\1\304\17\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\13\4\1\305\14\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\7\4"+ - "\1\306\20\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\2\4\1\307\25\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\3\4"+ - "\1\310\24\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\21\4\1\311\6\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\3\4"+ - "\1\312\24\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\7\4\1\313\20\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\5\4"+ - "\1\314\22\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\5\4\1\315\22\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\3\4"+ - "\1\316\24\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\1\317\27\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\23\4\1\320"+ - "\4\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\17\4\1\321\10\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\1\322\27\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\3\4\1\323\24\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\12\4\1\324\15\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\1\4\1\325\26\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\1\326\27\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\6\4\1\327\21\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\17\4\1\330\10\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\5\4\1\331\22\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\6\4\1\332\21\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\3\4\1\333\24\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\12\4\1\334\15\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\3\4\1\335\24\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\7\4\1\336\20\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\1\337\6\4\1\340\20\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\1\4\1\341\26\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\3\4\1\342\24\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\1\343\27\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\6\4\1\344\4\4\1\345\14\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\5\4\1\346"+ - "\22\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\11\4\1\347\16\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\13\4\1\350"+ - "\14\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\1\351\27\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\25\4\1\352\2\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\6\4\1\353\21\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\14\4\1\354\13\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\5\4\1\355\22\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\20\4\1\356\7\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\6\4\1\357\21\4\25\0\4\176\1\360\1\271"+ - "\101\176\5\272\1\361\101\272\7\0\1\200\1\274\1\200"+ - "\1\0\2\200\101\0\1\275\1\362\4\275\1\0\1\275"+ - "\1\0\2\275\1\0\1\275\1\0\1\276\7\0\3\275"+ - "\3\0\2\275\5\0\1\275\3\0\1\276\37\0\1\200"+ - "\1\0\1\200\1\0\2\200\7\0\1\301\40\0\1\301"+ - "\30\0\1\204\1\363\4\204\1\0\1\204\1\0\2\204"+ - "\1\0\1\204\1\0\1\276\7\0\3\204\3\0\2\204"+ - "\5\0\1\204\3\0\1\276\37\0\1\300\1\364\1\300"+ - "\1\275\2\300\1\0\1\275\1\0\1\365\1\366\1\0"+ - "\1\275\1\0\1\276\7\0\1\275\1\365\1\275\3\0"+ - "\2\275\5\0\1\366\3\0\1\276\37\0\1\200\1\0"+ - "\1\200\1\0\2\200\102\0\1\302\2\0\2\207\74\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\7\4\1\367\20\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\26\4\1\370\1\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\1\4\1\371\26\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\10\4\1\372\17\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\3\4\1\373\24\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\1\374\27\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\6\4"+ - "\1\375\21\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\1\4\1\376\26\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\1\4"+ - "\1\377\26\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\12\4\1\u0100\15\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\17\4"+ - "\1\u0101\10\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\1\4\1\u0102\26\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\16\4"+ - "\1\u0103\11\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\1\u0104\27\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\12\4\1\u0105"+ - "\15\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\25\4\1\u0106\2\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\14\4\1\u0107"+ - "\13\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\3\4\1\u0108\24\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\16\4\1\u0109"+ - "\11\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\7\4\1\u010a\20\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\17\4\1\u010b"+ - "\10\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\1\u010c\27\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\1\4\1\u010d\26\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\5\4\1\u010e\22\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\3\4\1\u010f\24\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\1\4\1\u0110\26\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\2\4\1\u0111\25\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\6\4\1\u0112\21\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\3\4\1\u0113\24\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\5\4\1\u0114\22\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\17\4\1\u0115\10\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\5\4\1\u0116\22\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\1\u0117\27\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\3\4\1\u0118\24\4\25\0\4\272\1\273\1\361\101\272"+ - "\7\0\1\275\1\362\4\275\1\0\1\275\1\0\2\275"+ - "\1\0\1\275\11\0\3\275\3\0\2\275\5\0\1\275"+ - "\43\0\1\204\1\363\4\204\1\0\1\204\1\0\2\204"+ - "\1\0\1\204\11\0\3\204\3\0\2\204\5\0\1\204"+ - "\43\0\1\300\1\364\1\300\1\275\2\300\1\0\1\275"+ - "\1\0\2\275\1\0\1\275\11\0\3\275\3\0\2\275"+ - "\5\0\1\275\36\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\17\4\1\u0119\10\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\7\4"+ - "\1\u011a\20\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\10\4\1\u011b\17\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\20\4"+ - "\1\u011c\7\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\6\4\1\u011d\21\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\1\u011e"+ - "\27\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\5\4\1\u011f\22\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\1\u0120\27\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\12\4\1\u0121\15\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\1\4\1\u0122\26\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\16\4\1\u0123\11\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\3\4\1\u0124\24\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\5\4\1\u0125\22\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\10\4\1\u0126\17\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\4\4\1\u0127\23\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\10\4\1\u0128\17\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\21\4\1\u0129\6\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\1\u012a\27\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\6\4\1\u012b\21\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\3\4\1\u012c\24\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\12\4\1\u012d\15\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\1\u012e\27\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\12\4"+ - "\1\u012f\15\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\23\4\1\u0130\4\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\17\4"+ - "\1\u0131\10\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\3\4\1\u0132\24\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\7\4"+ - "\1\u0133\20\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\15\4\1\u0134\12\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\12\4"+ - "\1\u0135\15\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\4\4\1\u0136\23\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\13\4"+ - "\1\u0137\14\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\10\4\1\u0138\17\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\2\4"+ - "\1\u0139\25\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\5\4\1\u013a\22\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\12\4"+ - "\1\u013b\15\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\3\4\1\u013c\24\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\1\u013d"+ - "\27\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\1\u013e\27\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\3\4\1\u013f\24\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\3\4\1\u0140\24\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\6\4\1\u0141\21\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\10\4\1\u0142\17\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\1\u0143\27\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\24\4\1\u0144\3\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\10\4\1\u0145\17\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\3\4\1\u0146\24\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\12\4\1\u0147\15\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\3\4\1\u0148\24\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\10\4\1\u0149\17\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\3\4\1\u014a\24\4\27\0\2\4\3\0\13\4\1\0"+ - "\1\4\1\0\1\4\4\0\3\4\1\u014b\24\4\27\0"+ - "\2\4\3\0\13\4\1\0\1\4\1\0\1\4\4\0"+ - "\1\u014c\27\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\17\4\1\u014d\10\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\3\4"+ - "\1\u014e\24\4\27\0\2\4\3\0\13\4\1\0\1\4"+ - "\1\0\1\4\4\0\13\4\1\u014f\14\4\27\0\2\4"+ - "\3\0\13\4\1\0\1\4\1\0\1\4\4\0\1\u0150"+ - "\27\4\27\0\2\4\3\0\13\4\1\0\1\4\1\0"+ - "\1\4\4\0\20\4\1\u0151\7\4\27\0\2\4\3\0"+ - "\13\4\1\0\1\4\1\0\1\4\4\0\27\4\1\u0152"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\4\4\1\u0153\23\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\7\4\1\u0154\20\4"+ - "\27\0\2\4\3\0\13\4\1\0\1\4\1\0\1\4"+ - "\4\0\3\4\1\u0155\24\4\27\0\2\4\3\0\13\4"+ - "\1\0\1\4\1\0\1\4\4\0\20\4\1\u0156\7\4"+ - "\25\0"; + "\3\4\1\10\4\4\1\11\1\4\1\12\1\4\1\13"+ + "\1\2\1\14\1\15\1\16\1\4\1\17\1\20\1\21"+ + "\1\22\1\23\1\24\1\25\1\26\4\4\1\27\1\30"+ + "\2\4\1\31\1\32\1\33\1\34\1\4\1\35\1\36"+ + "\1\37\1\40\1\41\1\42\1\43\1\44\1\45\1\46"+ + "\1\47\1\50\1\51\1\52\1\53\1\54\1\55\1\56"+ + "\1\57\1\60\1\61\105\0\1\3\4\0\1\3\77\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\30\4\31\0\1\62\1\63\51\0\1\64\103\0\1\65"+ + "\33\0\2\7\1\0\1\66\1\7\2\0\1\67\1\70"+ + "\1\71\1\72\10\0\1\72\1\67\1\0\1\66\11\0"+ + "\1\70\43\0\2\7\1\0\1\66\1\7\1\73\1\74"+ + "\1\67\1\70\1\71\1\72\10\0\1\72\1\67\1\0"+ + "\1\66\2\0\1\74\6\0\1\70\1\0\1\73\41\0"+ + "\1\71\3\0\1\71\4\0\1\75\105\0\1\76\34\0"+ + "\1\77\4\0\1\100\17\0\6\13\1\0\15\13\1\101"+ + "\1\102\56\13\6\14\1\0\16\14\1\103\1\104\55\14"+ + "\2\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+ + "\3\0\1\4\1\105\14\4\1\106\11\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\3\4"+ + "\1\107\24\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\6\4\1\110\1\4\1\111\11\4"+ + "\1\112\5\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\5\4\1\113\1\114\4\4\1\115"+ + "\3\4\1\116\10\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\7\4\1\117\1\4\1\120"+ + "\16\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\13\4\1\121\14\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\1\122\1\4"+ + "\1\123\12\4\1\124\1\125\7\4\1\126\1\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\2\4\1\127\1\130\1\4\1\131\22\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\1\4"+ + "\1\132\11\4\1\133\1\4\1\134\12\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\5\4"+ + "\1\135\1\136\4\4\1\137\2\4\1\140\11\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\4\4\1\141\3\4\1\142\10\4\1\143\6\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\3\4\1\144\7\4\1\145\14\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\13\4\1\146"+ + "\14\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\1\4\1\147\1\150\2\4\1\151\22\4"+ + "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+ + "\3\0\13\4\1\152\14\4\27\0\2\4\3\0\11\4"+ + "\1\0\1\4\1\0\1\4\3\0\16\4\1\153\11\4"+ + "\104\0\1\154\103\0\1\155\103\0\1\156\1\0\1\157"+ + "\101\0\1\160\2\0\1\161\100\0\1\162\3\0\1\163"+ + "\77\0\1\164\5\0\1\165\75\0\1\166\103\0\1\167"+ + "\126\0\1\170\1\0\6\62\1\0\75\62\5\171\1\172"+ + "\76\171\7\0\2\71\2\0\1\71\2\0\1\67\1\70"+ + "\1\0\1\72\10\0\1\72\1\67\13\0\1\70\43\0"+ + "\2\173\2\0\1\173\2\0\1\67\1\70\2\0\1\173"+ + "\10\0\1\67\13\0\1\70\12\0\1\173\30\0\3\174"+ + "\1\66\1\174\1\0\3\174\1\175\1\174\10\0\3\174"+ + "\1\66\2\0\2\174\5\0\1\174\43\0\2\74\1\0"+ + "\1\66\1\74\21\0\1\66\66\0\1\176\63\0\6\13"+ + "\1\0\75\13\6\14\1\0\75\14\2\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\2\4\1\177"+ + "\2\4\1\200\7\4\1\201\12\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\1\4\1\202"+ + "\15\4\1\203\10\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\1\204\27\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\7\4"+ + "\1\205\20\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\2\4\1\206\25\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\1\207"+ + "\27\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\6\4\1\210\21\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\13\4\1\211"+ + "\14\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\1\4\1\212\26\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\10\4\1\213"+ + "\17\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\7\4\1\214\20\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\7\4\1\215"+ + "\20\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\10\4\1\216\17\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\1\4\1\217"+ + "\3\4\1\220\22\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\24\4\1\221\3\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\10\4\1\222\17\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\13\4\1\223\14\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\17\4\1\224\10\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\6\4\1\225\21\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\26\4\1\226\1\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\1\227\27\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\3\4"+ + "\1\230\24\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\13\4\1\231\14\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\1\232"+ + "\27\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\1\233\6\4\1\234\20\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\5\4"+ + "\1\235\22\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\10\4\1\236\17\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\5\4"+ + "\1\237\22\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\1\240\6\4\1\241\20\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\24\4\1\242\3\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\4\4\1\243\23\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\2\4\1\244\25\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\1\245\27\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\13\4"+ + "\1\246\3\4\1\247\10\4\27\0\2\4\3\0\11\4"+ + "\1\0\1\4\1\0\1\4\3\0\11\4\1\250\16\4"+ + "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+ + "\3\0\12\4\1\251\15\4\27\0\2\4\3\0\11\4"+ + "\1\0\1\4\1\0\1\4\3\0\6\4\1\252\10\4"+ + "\1\253\10\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\17\4\1\254\10\4\104\0\1\255"+ + "\24\0\5\171\1\256\76\171\4\257\1\260\1\172\76\257"+ + "\7\0\2\173\2\0\1\173\2\0\1\67\1\70\13\0"+ + "\1\67\13\0\1\70\43\0\3\174\1\66\1\174\1\0"+ + "\3\174\1\261\1\174\1\0\1\72\6\0\3\174\1\66"+ + "\2\0\2\174\5\0\1\174\3\0\1\72\37\0\3\261"+ + "\1\0\1\261\1\0\3\261\1\0\1\261\10\0\3\261"+ + "\3\0\2\261\5\0\1\261\36\0\2\4\3\0\11\4"+ + "\1\0\1\4\1\0\1\4\3\0\3\4\1\262\24\4"+ + "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+ + "\3\0\10\4\1\263\17\4\27\0\2\4\3\0\11\4"+ + "\1\0\1\4\1\0\1\4\3\0\13\4\1\264\14\4"+ + "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+ + "\3\0\7\4\1\265\20\4\27\0\2\4\3\0\11\4"+ + "\1\0\1\4\1\0\1\4\3\0\2\4\1\266\25\4"+ + "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+ + "\3\0\3\4\1\267\24\4\27\0\2\4\3\0\11\4"+ + "\1\0\1\4\1\0\1\4\3\0\21\4\1\270\6\4"+ + "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+ + "\3\0\3\4\1\271\24\4\27\0\2\4\3\0\11\4"+ + "\1\0\1\4\1\0\1\4\3\0\7\4\1\272\20\4"+ + "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+ + "\3\0\5\4\1\273\22\4\27\0\2\4\3\0\11\4"+ + "\1\0\1\4\1\0\1\4\3\0\5\4\1\274\22\4"+ + "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+ + "\3\0\3\4\1\275\24\4\27\0\2\4\3\0\11\4"+ + "\1\0\1\4\1\0\1\4\3\0\1\276\27\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\23\4\1\277\4\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\17\4\1\300\10\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\1\301\27\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\3\4\1\302\24\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\12\4"+ + "\1\303\15\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\1\4\1\304\26\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\1\305"+ + "\27\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\6\4\1\306\21\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\17\4\1\307"+ + "\10\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\5\4\1\310\22\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\6\4\1\311"+ + "\21\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\3\4\1\312\24\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\12\4\1\313"+ + "\15\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\3\4\1\314\24\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\7\4\1\315"+ + "\20\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\1\316\6\4\1\317\20\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\1\4"+ + "\1\320\26\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\3\4\1\321\24\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\1\322"+ + "\27\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\6\4\1\323\4\4\1\324\14\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\5\4\1\325\22\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\11\4\1\326\16\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\13\4\1\327\14\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\1\330\27\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\25\4"+ + "\1\331\2\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\6\4\1\332\21\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\14\4"+ + "\1\333\13\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\5\4\1\334\22\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\20\4"+ + "\1\335\7\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\6\4\1\336\21\4\25\0\4\171"+ + "\1\337\1\256\76\171\5\257\1\340\76\257\7\0\3\261"+ + "\1\0\1\261\1\0\3\261\1\0\1\261\1\0\1\72"+ + "\6\0\3\261\3\0\2\261\5\0\1\261\3\0\1\72"+ + "\32\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+ + "\3\0\7\4\1\341\20\4\27\0\2\4\3\0\11\4"+ + "\1\0\1\4\1\0\1\4\3\0\26\4\1\342\1\4"+ + "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+ + "\3\0\1\4\1\343\26\4\27\0\2\4\3\0\11\4"+ + "\1\0\1\4\1\0\1\4\3\0\10\4\1\344\17\4"+ + "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+ + "\3\0\3\4\1\345\24\4\27\0\2\4\3\0\11\4"+ + "\1\0\1\4\1\0\1\4\3\0\1\346\27\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\6\4\1\347\21\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\1\4\1\350\26\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\1\4\1\351\26\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\12\4\1\352\15\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\17\4\1\353\10\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\1\4\1\354\26\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\16\4\1\355\11\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\1\356\27\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\12\4"+ + "\1\357\15\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\25\4\1\360\2\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\14\4"+ + "\1\361\13\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\3\4\1\362\24\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\16\4"+ + "\1\363\11\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\7\4\1\364\20\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\17\4"+ + "\1\365\10\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\1\366\27\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\1\4\1\367"+ + "\26\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\5\4\1\370\22\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\3\4\1\371"+ + "\24\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\1\4\1\372\26\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\2\4\1\373"+ + "\25\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\6\4\1\374\21\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\3\4\1\375"+ + "\24\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\5\4\1\376\22\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\17\4\1\377"+ + "\10\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\5\4\1\u0100\22\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\1\u0101\27\4"+ + "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+ + "\3\0\3\4\1\u0102\24\4\25\0\4\257\1\260\1\340"+ + "\76\257\2\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\17\4\1\u0103\10\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\7\4\1\u0104"+ + "\20\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\10\4\1\u0105\17\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\20\4\1\u0106"+ + "\7\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\6\4\1\u0107\21\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\1\u0108\27\4"+ + "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+ + "\3\0\5\4\1\u0109\22\4\27\0\2\4\3\0\11\4"+ + "\1\0\1\4\1\0\1\4\3\0\1\u010a\27\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\12\4\1\u010b\15\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\1\4\1\u010c\26\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\16\4\1\u010d\11\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\3\4\1\u010e\24\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\5\4\1\u010f\22\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\10\4\1\u0110\17\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\4\4\1\u0111\23\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\10\4\1\u0112\17\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\21\4\1\u0113\6\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\1\u0114\27\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\6\4"+ + "\1\u0115\21\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\3\4\1\u0116\24\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\12\4"+ + "\1\u0117\15\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\1\u0118\27\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\12\4\1\u0119"+ + "\15\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\23\4\1\u011a\4\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\17\4\1\u011b"+ + "\10\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\3\4\1\u011c\24\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\7\4\1\u011d"+ + "\20\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\15\4\1\u011e\12\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\12\4\1\u011f"+ + "\15\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\4\4\1\u0120\23\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\13\4\1\u0121"+ + "\14\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\10\4\1\u0122\17\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\2\4\1\u0123"+ + "\25\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\5\4\1\u0124\22\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\12\4\1\u0125"+ + "\15\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\3\4\1\u0126\24\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\1\u0127\27\4"+ + "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+ + "\3\0\1\u0128\27\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\3\4\1\u0129\24\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\3\4\1\u012a\24\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\6\4\1\u012b\21\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\10\4\1\u012c\17\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\1\u012d\27\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\24\4"+ + "\1\u012e\3\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\10\4\1\u012f\17\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\3\4"+ + "\1\u0130\24\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\12\4\1\u0131\15\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\3\4"+ + "\1\u0132\24\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\10\4\1\u0133\17\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\3\4"+ + "\1\u0134\24\4\27\0\2\4\3\0\11\4\1\0\1\4"+ + "\1\0\1\4\3\0\3\4\1\u0135\24\4\27\0\2\4"+ + "\3\0\11\4\1\0\1\4\1\0\1\4\3\0\1\u0136"+ + "\27\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\17\4\1\u0137\10\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\3\4\1\u0138"+ + "\24\4\27\0\2\4\3\0\11\4\1\0\1\4\1\0"+ + "\1\4\3\0\13\4\1\u0139\14\4\27\0\2\4\3\0"+ + "\11\4\1\0\1\4\1\0\1\4\3\0\1\u013a\27\4"+ + "\27\0\2\4\3\0\11\4\1\0\1\4\1\0\1\4"+ + "\3\0\20\4\1\u013b\7\4\27\0\2\4\3\0\11\4"+ + "\1\0\1\4\1\0\1\4\3\0\27\4\1\u013c\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\4\4\1\u013d\23\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\7\4\1\u013e\20\4\27\0"+ + "\2\4\3\0\11\4\1\0\1\4\1\0\1\4\3\0"+ + "\3\4\1\u013f\24\4\27\0\2\4\3\0\11\4\1\0"+ + "\1\4\1\0\1\4\3\0\20\4\1\u0140\7\4\25\0"; private static int [] zzUnpackTrans() { - int [] result = new int[17892]; + int [] result = new int[15844]; int offset = 0; offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); return result; @@ -688,14 +645,12 @@ class _JavaLexer implements FlexLexer { private static final String ZZ_ATTRIBUTE_PACKED_0 = "\1\0\1\11\37\1\1\11\3\1\12\11\1\1\1\11"+ - "\2\1\2\11\1\0\3\11\2\1\2\0\4\1\1\0"+ - "\4\11\2\1\1\11\47\1\7\11\1\1\5\11\4\1"+ - "\2\0\2\1\1\0\1\1\1\0\1\11\56\1\1\11"+ - "\1\0\1\1\1\11\4\0\1\1\2\0\55\1\1\11"+ - "\4\0\142\1"; + "\2\1\5\11\4\1\1\0\4\11\2\1\1\11\47\1"+ + "\7\11\1\1\5\11\4\1\1\0\1\11\56\1\1\11"+ + "\1\0\1\1\1\11\1\0\55\1\1\11\1\0\140\1"; private static int [] zzUnpackAttribute() { - int [] result = new int[342]; + int [] result = new int[320]; int offset = 0; offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); return result; @@ -794,7 +749,7 @@ class _JavaLexer implements FlexLexer { char [] map = new char[0x10000]; int i = 0; /* index in packed string */ int j = 0; /* index in unpacked array */ - while (i < 1788) { + while (i < 1784) { int count = packed.charAt(i++); char value = packed.charAt(i++); do map[j++] = value; while (--count > 0); @@ -975,7 +930,7 @@ class _JavaLexer implements FlexLexer { while (true) { if (zzCurrentPosL < zzEndReadL) - zzInput = zzBufferArrayL != null ? zzBufferArrayL[zzCurrentPosL++]:zzBufferL.charAt(zzCurrentPosL++); + zzInput = (zzBufferArrayL != null ? zzBufferArrayL[zzCurrentPosL++] : zzBufferL.charAt(zzCurrentPosL++)); else if (zzAtEOF) { zzInput = YYEOF; break zzForAction; @@ -995,7 +950,7 @@ class _JavaLexer implements FlexLexer { break zzForAction; } else { - zzInput = zzBufferArrayL != null ? zzBufferArrayL[zzCurrentPosL++]:zzBufferL.charAt(zzCurrentPosL++); + zzInput = (zzBufferArrayL != null ? zzBufferArrayL[zzCurrentPosL++] : zzBufferL.charAt(zzCurrentPosL++)); } } int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; diff --git a/java/java-psi-impl/src/messages/JavaErrorMessages.properties b/java/java-psi-impl/src/messages/JavaErrorMessages.properties index 1b02a298c40f..49f1547690f2 100644 --- a/java/java-psi-impl/src/messages/JavaErrorMessages.properties +++ b/java/java-psi-impl/src/messages/JavaErrorMessages.properties @@ -278,6 +278,7 @@ unclosed.char.literal=Unclosed character literal illegal.escape.character.in.string.literal=Illegal escape character in string literal floating.point.number.too.large=Floating point number too large floating.point.number.too.small=Floating point number too small +illegal.underscore=Illegal underscore import.statement.identifier.or.asterisk.expected.=Identifier or '*' expected diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/NumericLiterals.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/NumericLiterals.java index becdda581a2a..45f728d465f8 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/NumericLiterals.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/NumericLiterals.java @@ -1,24 +1,4 @@ -/* - * 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. - */ - -/// assignment compatible types -import java.io.*; -import java.net.*; - -public class a { +public class NumericLiterals { final int FI = 2; final int FIBIG = 200000000; @@ -38,7 +18,8 @@ public class a { int i13 = 040000000000; int i14 = 020000000000; int i15 = 0xf044332211; - int octale = 017777777777; // negative + int oi1 = 017777777777; + int oi2 = 08; int bi1 = 0b0010; int bi2 = 0B0010; int bi3 = 1_2; @@ -53,8 +34,8 @@ public class a { long l8 = 0xffffffffffffffffL; long l9 = 0xffffffffffffffff9L; long l10 = 0x8000000000000000L; - long octalValue = 01777777777777777777600L; - long octalValua = 01777777777777777777777L; + long ol1 = 01777777777777777777600L; + long ol2 = 01777777777777777777777L; long bl1 = 0b0010l; long bl2 = 0B0010L; long bl3 = 10_24L; @@ -63,7 +44,8 @@ public class a { float f2 = 1e39f; float f3 = 0E1F; float f4 = 0xabc.defP2f; - float bf1 = 3.141_592f; + float f5 = 3.141_592f; + float f6 = .0f; double dd1 = 1e-324; double dd2 = 1e309; @@ -81,5 +63,6 @@ public class a { double d10 = 1e-F; double d11 = 1e-f; double d12 = 3.141_592_653_589_793d; + double d13 = .0e; } } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/NumericLiterals.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/NumericLiterals.java index bf9f96ff1e96..cb59ded58cc6 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/NumericLiterals.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/NumericLiterals.java @@ -7,6 +7,11 @@ public class NumericLiterals { int i5 = 0b0001_0010_0100_1000; int i6 = 0b; int i7 = 0b1_1111_1111_1111_1111_1111_1111_1111_1111; + int i8 = 0_; + int i9 = 0_8; + int i10 = 0x_f; + int i11 = 0b_1; + int i12 = 0B2; long l1 = 1_2L; long l2 = 012__34l; @@ -41,5 +46,7 @@ public class NumericLiterals { double d10 = 0x.a_bcP1___23d; double d11 = 1e-3_2_4; double d12 = 0xa_bc.de_fP1_234D; + double d13 = 0x1.0_p-1; + double d14 = 1.0e_1022; } } diff --git a/java/java-tests/testSrc/com/intellij/lang/java/lexer/JavaLexerTest.java b/java/java-tests/testSrc/com/intellij/lang/java/lexer/JavaLexerTest.java index b1639bc4b4be..113211720e39 100644 --- a/java/java-tests/testSrc/com/intellij/lang/java/lexer/JavaLexerTest.java +++ b/java/java-tests/testSrc/com/intellij/lang/java/lexer/JavaLexerTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -52,6 +52,17 @@ public class JavaLexerTest extends LexerTestCase { "DOUBLE_LITERAL ('3.14')\nWHITE_SPACE (' ')\n" + "DOUBLE_LITERAL ('1e-9d')\nWHITE_SPACE (' ')\n" + "DOUBLE_LITERAL ('1e137')"); + + doTest(". e0 x1 ax .e .p 08 .0e .0f", + "DOT ('.')\nWHITE_SPACE (' ')\n" + + "IDENTIFIER ('e0')\nWHITE_SPACE (' ')\n" + + "IDENTIFIER ('x1')\nWHITE_SPACE (' ')\n" + + "IDENTIFIER ('ax')\nWHITE_SPACE (' ')\n" + + "DOT ('.')\nIDENTIFIER ('e')\nWHITE_SPACE (' ')\n" + + "DOT ('.')\nIDENTIFIER ('p')\nWHITE_SPACE (' ')\n" + + "INTEGER_LITERAL ('08')\nWHITE_SPACE (' ')\n" + + "DOUBLE_LITERAL ('.0e')\nWHITE_SPACE (' ')\n" + + "FLOAT_LITERAL ('.0f')"); } public void testTigerNumericLiterals() { @@ -66,6 +77,9 @@ public class JavaLexerTest extends LexerTestCase { "DOUBLE_LITERAL ('0xab.P12')\nWHITE_SPACE (' ')\n" + "DOUBLE_LITERAL ('0x.abcP123d')\nWHITE_SPACE (' ')\n" + "DOUBLE_LITERAL ('0xabc.defP1234D')"); + + doTest("p0", + "IDENTIFIER ('p0')"); } public void testCoinNumericLiterals() { @@ -116,15 +130,18 @@ public class JavaLexerTest extends LexerTestCase { } public void testMalformedCoinLiterals() { - doTest("0_ _1 0_8 0x_f 0b_1 0B2 0x1.0_p-1 1.0e_1022", - "INTEGER_LITERAL ('0')\nIDENTIFIER ('_')\nWHITE_SPACE (' ')\n" + + doTest("_1 _b ._ 0_ 0_8 0x_f 0b_1 0B2 0x1.0_p-1 1.0e_1022 0._1", "IDENTIFIER ('_1')\nWHITE_SPACE (' ')\n" + - "INTEGER_LITERAL ('0')\nIDENTIFIER ('_8')\nWHITE_SPACE (' ')\n" + - "INTEGER_LITERAL ('0x')\nIDENTIFIER ('_f')\nWHITE_SPACE (' ')\n" + - "INTEGER_LITERAL ('0b')\nIDENTIFIER ('_1')\nWHITE_SPACE (' ')\n" + - "INTEGER_LITERAL ('0B')\nINTEGER_LITERAL ('2')\nWHITE_SPACE (' ')\n" + - "INTEGER_LITERAL ('0x1')\nDOUBLE_LITERAL ('.0')\nIDENTIFIER ('_p')\nMINUS ('-')\nINTEGER_LITERAL ('1')\nWHITE_SPACE (' ')\n" + - "DOUBLE_LITERAL ('1.0e')\nIDENTIFIER ('_1022')"); + "IDENTIFIER ('_b')\nWHITE_SPACE (' ')\n" + + "DOT ('.')\nIDENTIFIER ('_')\nWHITE_SPACE (' ')\n" + + "INTEGER_LITERAL ('0_')\nWHITE_SPACE (' ')\n" + + "INTEGER_LITERAL ('0_8')\nWHITE_SPACE (' ')\n" + + "INTEGER_LITERAL ('0x_f')\nWHITE_SPACE (' ')\n" + + "INTEGER_LITERAL ('0b_1')\nWHITE_SPACE (' ')\n" + + "INTEGER_LITERAL ('0B2')\nWHITE_SPACE (' ')\n" + + "DOUBLE_LITERAL ('0x1.0_p-1')\nWHITE_SPACE (' ')\n" + + "DOUBLE_LITERAL ('1.0e_1022')\nWHITE_SPACE (' ')\n" + + "DOUBLE_LITERAL ('0._1')"); } public void testMalformedOperators() { From 76a5b55624f4c7b09747728de790421e6325edb8 Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Thu, 17 Jan 2013 21:56:46 +0100 Subject: [PATCH 062/143] EA-42778 (escape line breaks in file names) --- bin/linux/fsnotifier | Bin 22652 -> 22793 bytes bin/linux/fsnotifier64 | Bin 25009 -> 29296 bytes bin/mac/fsnotifier | Bin 13796 -> 13924 bytes native/fsNotifier/linux/main.c | 30 ++++++++++---- native/fsNotifier/mac/fsnotifier.c | 39 ++++++++++++------ .../openapi/vfs/impl/local/FileWatcher.java | 2 +- .../openapi/vfs/local/FileWatcherTest.java | 39 ++++++++++++++++++ 7 files changed, 89 insertions(+), 21 deletions(-) diff --git a/bin/linux/fsnotifier b/bin/linux/fsnotifier index 3918875ad48e361c23c3e457f1cb493c78b74de1..436cfc3d68b8d811eaed2ebc1097b4b678513c20 100755 GIT binary patch delta 8023 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 OZDJoOR+LDEe)S+0b zl7+%@1ve`zx=O)UD|m~N1(X+@@M8tI2jhAT@!!}6eHGY?PT_>+U}Ew{MfUPJU_vsDt4=i7(ekGDxk6J8K%k7gNT%4bi XpEGuM*rGWBQSuKj?-8&^m(2J-R0`zD delta 10866 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 F{}1)&ab5rb diff --git a/bin/mac/fsnotifier b/bin/mac/fsnotifier index fbace740489b0127aecd10c677b1d6834ba95492..4fff2f1d13209a5b7c143b03fce7644d4bc996cd 100755 GIT binary patch delta 3220 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 e6*cu-F6uE&e&(^q*xHSo*ROkOBmZIku73b~@! Date: Thu, 17 Jan 2013 21:54:46 +0100 Subject: [PATCH 063/143] javafx: completion of static properties --- .../JavaFxClassBackedElementDescriptor.java | 18 ++- .../fxml/JavaFxSetterAttributeDescriptor.java | 111 ++++++++++++++++++ .../testData/completion/staticProperties.fxml | 9 ++ .../completion/staticProperties_after.fxml | 9 ++ .../javaFX/fxml/JavaFxCompletionTest.java | 24 +++- 5 files changed, 169 insertions(+), 2 deletions(-) create mode 100644 plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxSetterAttributeDescriptor.java create mode 100644 plugins/javaFX/testData/completion/staticProperties.fxml create mode 100644 plugins/javaFX/testData/completion/staticProperties_after.fxml diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxClassBackedElementDescriptor.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxClassBackedElementDescriptor.java index a1cdf0be2a43..df871f09708b 100644 --- a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxClassBackedElementDescriptor.java +++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxClassBackedElementDescriptor.java @@ -110,6 +110,7 @@ public class JavaFxClassBackedElementDescriptor implements XmlElementDescriptor, @Override public XmlAttributeDescriptor[] getAttributesDescriptors(@Nullable XmlTag context) { + //todo filter if (context != null) { final String name = context.getName(); if (Comparing.equal(name, getName()) && myPsiClass != null) { @@ -120,11 +121,26 @@ public class JavaFxClassBackedElementDescriptor implements XmlElementDescriptor, if (field.hasModifierProperty(PsiModifier.STATIC)) continue; final PsiType fieldType = field.getType(); if (PropertyUtil.findPropertyGetter(myPsiClass, field.getName(), false, true) != null && - InheritanceUtil.isInheritor(fieldType, JavaFxCommonClassNames.JAVAFX_BEANS_PROPERTY_PROPERTY)) {//todo filter + InheritanceUtil.isInheritor(fieldType, JavaFxCommonClassNames.JAVAFX_BEANS_PROPERTY_PROPERTY)) { simpleAttrs.add(new JavaFxPropertyAttributeDescriptor(field.getName(), myPsiClass)); } } } + XmlTag tag = context.getParentTag(); + while (tag != null) { + final XmlElementDescriptor descriptor = tag.getDescriptor(); + if (descriptor instanceof JavaFxClassBackedElementDescriptor) { + final PsiElement element = descriptor.getDeclaration(); + if (element instanceof PsiClass) { + for (PsiMethod method : ((PsiClass)element).getMethods()) { + if (method.hasModifierProperty(PsiModifier.STATIC) && method.getName().startsWith("set")) { + simpleAttrs.add(new JavaFxSetterAttributeDescriptor(method.getName(), (PsiClass)element)); + } + } + } + } + tag = tag.getParentTag(); + } return simpleAttrs.isEmpty() ? XmlAttributeDescriptor.EMPTY : simpleAttrs.toArray(new XmlAttributeDescriptor[simpleAttrs.size()]); } } diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxSetterAttributeDescriptor.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxSetterAttributeDescriptor.java new file mode 100644 index 000000000000..02f85017626a --- /dev/null +++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxSetterAttributeDescriptor.java @@ -0,0 +1,111 @@ +/* + * Copyright 2000-2013 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 org.jetbrains.plugins.javaFX.fxml; + +import com.intellij.openapi.util.text.StringUtil; +import com.intellij.psi.PsiClass; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiMethod; +import com.intellij.psi.xml.XmlElement; +import com.intellij.util.ArrayUtil; +import com.intellij.xml.XmlAttributeDescriptor; +import org.jetbrains.annotations.Nullable; + +/** + * User: anna + * Date: 1/10/13 + */ +public class JavaFxSetterAttributeDescriptor implements XmlAttributeDescriptor { + private final String myName; + private final PsiClass myPsiClass; + + public JavaFxSetterAttributeDescriptor(String name, PsiClass psiClass) { + myName = name; + myPsiClass = psiClass; + } + + @Override + public boolean isRequired() { + return false; + } + + @Override + public boolean isFixed() { + return false; + } + + @Override + public boolean hasIdType() { + return false; + } + + @Override + public boolean hasIdRefType() { + return false; + } + + @Nullable + @Override + public String getDefaultValue() { + return null; + } + + @Override + public boolean isEnumerated() { + return false; + } + + @Nullable + @Override + public String[] getEnumeratedValues() { + return null; + } + + @Nullable + @Override + public String validateValue(XmlElement context, String value) { + return null; + } + + @Override + public PsiElement getDeclaration() { + if (myPsiClass != null) { + final PsiMethod[] methods = myPsiClass.findMethodsByName(myName, false); + if (methods.length == 1) { //todo + return methods[0]; + } + } + return null; + } + + @Override + public String getName(PsiElement context) { + return getName(); + } + + @Override + public String getName() { + return myPsiClass.getName() + "." + StringUtil.decapitalize(myName.substring("set".length())); + } + + @Override + public void init(PsiElement element) {} + + @Override + public Object[] getDependences() { + return ArrayUtil.EMPTY_OBJECT_ARRAY; + } +} diff --git a/plugins/javaFX/testData/completion/staticProperties.fxml b/plugins/javaFX/testData/completion/staticProperties.fxml new file mode 100644 index 000000000000..44cbdab0cd76 --- /dev/null +++ b/plugins/javaFX/testData/completion/staticProperties.fxml @@ -0,0 +1,9 @@ + + + + + + + + GridPane.rowIndex="4"/> + \ No newline at end of file diff --git a/plugins/javaFX/testData/completion/staticProperties_after.fxml b/plugins/javaFX/testData/completion/staticProperties_after.fxml new file mode 100644 index 000000000000..055b7631cb8c --- /dev/null +++ b/plugins/javaFX/testData/completion/staticProperties_after.fxml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/plugins/javaFX/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFxCompletionTest.java b/plugins/javaFX/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFxCompletionTest.java index fbc45669314e..992ff51448a4 100644 --- a/plugins/javaFX/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFxCompletionTest.java +++ b/plugins/javaFX/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFxCompletionTest.java @@ -16,6 +16,7 @@ package org.jetbrains.plugins.javaFX.fxml; import com.intellij.codeInsight.completion.CompletionTestCase; +import com.intellij.codeInsight.lookup.LookupElement; import com.intellij.openapi.application.PluginPathManager; import com.intellij.testFramework.PsiTestUtil; import org.jetbrains.annotations.NotNull; @@ -36,10 +37,31 @@ public class JavaFxCompletionTest extends CompletionTestCase { doTest(); } + public void testStaticProperties() throws Exception { + doTest("GridPane.columnIndex"); + } + private void doTest() throws Exception { + doTest(null); + } + + private void doTest(final String selection) throws Exception { configureByFile(getTestName(true) + ".fxml"); assertTrue(myItems.length > 0); - selectItem(myItems[0]); + LookupElement selectionElement = null; + for (LookupElement item : myItems) { + if (item.getLookupString().equals(selection)) { + selectionElement = item; + break; + } + } + if (selection != null && selectionElement == null) { + fail(selection + " is not suggested"); + } + if (selectionElement == null) { + selectionElement = myItems[0]; + } + selectItem(selectionElement); checkResultByFile(getTestName(true) + "_after.fxml"); } From 3750d2ed42a0531ebce76d831993d10283ef6912 Mon Sep 17 00:00:00 2001 From: anna Date: Thu, 17 Jan 2013 22:09:42 +0100 Subject: [PATCH 064/143] javafx: completion of enums inside static properties --- .../fxml/JavaFxPropertyAttributeDescriptor.java | 2 +- .../JavaFxStaticPropertyAttributeDescriptor.java | 15 +++++++++++++++ .../testData/completion/staticProperties.fxml | 4 ++-- .../completion/staticPropertiesEnumValue.fxml | 9 +++++++++ .../staticPropertiesEnumValue_after.fxml | 9 +++++++++ .../completion/staticProperties_after.fxml | 4 ++-- .../plugins/javaFX/fxml/JavaFxCompletionTest.java | 4 ++++ 7 files changed, 42 insertions(+), 5 deletions(-) create mode 100644 plugins/javaFX/testData/completion/staticPropertiesEnumValue.fxml create mode 100644 plugins/javaFX/testData/completion/staticPropertiesEnumValue_after.fxml diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxPropertyAttributeDescriptor.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxPropertyAttributeDescriptor.java index 1d734992c844..6bc4651eb4c0 100644 --- a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxPropertyAttributeDescriptor.java +++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxPropertyAttributeDescriptor.java @@ -72,7 +72,7 @@ public class JavaFxPropertyAttributeDescriptor implements XmlAttributeDescriptor return null; } - private PsiClass getEnum() { + protected PsiClass getEnum() { final PsiElement field = getDeclaration(); if (field instanceof PsiField) { final PsiType type = ((PsiField)field).getType(); diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxStaticPropertyAttributeDescriptor.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxStaticPropertyAttributeDescriptor.java index 611127a2cf80..90570bede96d 100644 --- a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxStaticPropertyAttributeDescriptor.java +++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxStaticPropertyAttributeDescriptor.java @@ -15,8 +15,11 @@ */ package org.jetbrains.plugins.javaFX.fxml; +import com.intellij.psi.PsiClass; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiMethod; +import com.intellij.psi.PsiParameter; +import com.intellij.psi.util.PsiUtil; /** * User: anna @@ -34,4 +37,16 @@ public class JavaFxStaticPropertyAttributeDescriptor extends JavaFxPropertyAttri public PsiElement getDeclaration() { return mySetter; } + + @Override + protected PsiClass getEnum() { + if (mySetter != null) { + final PsiParameter[] parameters = mySetter.getParameterList().getParameters(); + if (parameters.length == 2) { + final PsiClass enumClass = PsiUtil.resolveClassInType(parameters[1].getType()); + return enumClass != null && enumClass.isEnum() ? enumClass : null; + } + } + return null; + } } diff --git a/plugins/javaFX/testData/completion/staticProperties.fxml b/plugins/javaFX/testData/completion/staticProperties.fxml index 44cbdab0cd76..50399a15affe 100644 --- a/plugins/javaFX/testData/completion/staticProperties.fxml +++ b/plugins/javaFX/testData/completion/staticProperties.fxml @@ -4,6 +4,6 @@ - - GridPane.rowIndex="4"/> + + GridPane.rowIndex="4"/> \ No newline at end of file diff --git a/plugins/javaFX/testData/completion/staticPropertiesEnumValue.fxml b/plugins/javaFX/testData/completion/staticPropertiesEnumValue.fxml new file mode 100644 index 000000000000..13fc3befe82a --- /dev/null +++ b/plugins/javaFX/testData/completion/staticPropertiesEnumValue.fxml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/plugins/javaFX/testData/completion/staticPropertiesEnumValue_after.fxml b/plugins/javaFX/testData/completion/staticPropertiesEnumValue_after.fxml new file mode 100644 index 000000000000..0db560403195 --- /dev/null +++ b/plugins/javaFX/testData/completion/staticPropertiesEnumValue_after.fxml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/plugins/javaFX/testData/completion/staticProperties_after.fxml b/plugins/javaFX/testData/completion/staticProperties_after.fxml index 055b7631cb8c..a7ae79995e4f 100644 --- a/plugins/javaFX/testData/completion/staticProperties_after.fxml +++ b/plugins/javaFX/testData/completion/staticProperties_after.fxml @@ -4,6 +4,6 @@ - - + + \ No newline at end of file diff --git a/plugins/javaFX/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFxCompletionTest.java b/plugins/javaFX/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFxCompletionTest.java index 992ff51448a4..7ccac483a614 100644 --- a/plugins/javaFX/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFxCompletionTest.java +++ b/plugins/javaFX/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFxCompletionTest.java @@ -41,6 +41,10 @@ public class JavaFxCompletionTest extends CompletionTestCase { doTest("GridPane.columnIndex"); } + public void testStaticPropertiesEnumValue() throws Exception { + doTest(); + } + private void doTest() throws Exception { doTest(null); } From 5f0fb800cd737386ee8c946957410f1a325bc14c Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Thu, 17 Jan 2013 22:21:53 +0100 Subject: [PATCH 065/143] IDEA-99251 (make sure file watcher isn't outdated) --- .../intellij/openapi/vfs/impl/local/FileWatcher.java | 11 +++++++++++ .../src/messages/ApplicationBundle.properties | 1 + 2 files changed, 12 insertions(+) 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 e3fbdff786fe..444f6ce684bf 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 @@ -117,6 +117,9 @@ public class FileWatcher { } }); } + else if (!isUpToDate(myExecutable)) { + notifyOnFailure(ApplicationBundle.message("watcher.exe.outdated"), null); + } else { try { startupProcess(false); @@ -170,6 +173,14 @@ public class FileWatcher { return null; } + private static boolean isUpToDate(File executable) { + long length = SystemInfo.isWindows ? 70216 : + SystemInfo.isMac ? 13924 : + SystemInfo.isLinux ? SystemInfo.isAMD64 ? 29296 : 22793 : + -1; + return length > 0 && length == executable.length(); + } + private void notifyOnFailure(final String cause, @Nullable final NotificationListener listener) { LOG.warn(cause); diff --git a/platform/platform-resources-en/src/messages/ApplicationBundle.properties b/platform/platform-resources-en/src/messages/ApplicationBundle.properties index 3f6d608c3e0e..066dfb5b4814 100644 --- a/platform/platform-resources-en/src/messages/ApplicationBundle.properties +++ b/platform/platform-resources-en/src/messages/ApplicationBundle.properties @@ -555,6 +555,7 @@ title.tabs.and.indents=Tabs and Indents watcher.slow.sync=External file changes sync may be slow watcher.exe.not.found=Native file watcher executable not found watcher.exe.not.exe=Native file watcher is not executable: {0} +watcher.exe.outdated=Native file watcher executable is outdated watcher.failed.to.start=File watcher failed to start watcher.non.watchable.project=Project content is under network-mounted directory From cb39868fb6adac3b12ace311f7c5c71c2ca75f4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yann=20C=C3=A9bron?= Date: Fri, 18 Jan 2013 11:35:10 +0400 Subject: [PATCH 066/143] Fix spelling. --- .../src/git4idea/history/wholeTree/GitLogDetailsPanel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/git4idea/src/git4idea/history/wholeTree/GitLogDetailsPanel.java b/plugins/git4idea/src/git4idea/history/wholeTree/GitLogDetailsPanel.java index 524d8cad2f17..9fc405c6aa3c 100644 --- a/plugins/git4idea/src/git4idea/history/wholeTree/GitLogDetailsPanel.java +++ b/plugins/git4idea/src/git4idea/history/wholeTree/GitLogDetailsPanel.java @@ -265,7 +265,7 @@ public class GitLogDetailsPanel { hash).append("" + "Author:") .append(author).append(" (").append(c.getAuthorEmail()).append(") at ") .append(DateFormatUtil.formatPrettyDateTime(c.getAuthorTime())) - .append("" + "Commiter:") + .append("" + "Committer:") .append(committer).append(" (").append(c.getComitterEmail()).append(") at ") .append(DateFormatUtil.formatPrettyDateTime(c.getDate())).append( "" + "Description:") From 3546cd37269ebdf745f05b6bc44496306655dae3 Mon Sep 17 00:00:00 2001 From: irengrig Date: Fri, 18 Jan 2013 11:50:44 +0400 Subject: [PATCH 067/143] same progress runner: also check that application is disposed --- .../src/com/intellij/util/continuation/SameProgressRunner.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/vcs-impl/src/com/intellij/util/continuation/SameProgressRunner.java b/platform/vcs-impl/src/com/intellij/util/continuation/SameProgressRunner.java index 63235c6149e3..4bb20fd50511 100644 --- a/platform/vcs-impl/src/com/intellij/util/continuation/SameProgressRunner.java +++ b/platform/vcs-impl/src/com/intellij/util/continuation/SameProgressRunner.java @@ -69,7 +69,7 @@ public class SameProgressRunner extends GeneralRunner { while (true) { try { // stop if project is being disposed - if (! myProject.isOpen()) return; + if (ApplicationManager.getApplication().isDisposed() || ! myProject.isOpen()) return; if (getSuspendFlag()) { mySemaphore.down(); From f8ee2439a8c3645023de4fa1b0cfec4defc37c71 Mon Sep 17 00:00:00 2001 From: Rustam Vishnyakov Date: Thu, 17 Jan 2013 14:39:37 +0400 Subject: [PATCH 068/143] Provide a better compatibility with old color schemes --- .../editor/colors/TextAttributesKey.java | 28 -------- .../DefaultLanguageHighlighterColors.java | 46 ++++++------- .../colors/impl/AbstractColorsScheme.java | 5 +- .../colors/impl/EditorColorsSchemeImpl.java | 5 +- .../src/DefaultColorSchemesManager.xml | 65 +++++++++++++++++++ 5 files changed, 93 insertions(+), 56 deletions(-) diff --git a/platform/core-api/src/com/intellij/openapi/editor/colors/TextAttributesKey.java b/platform/core-api/src/com/intellij/openapi/editor/colors/TextAttributesKey.java index dbd1d96c1317..f68ad6221428 100644 --- a/platform/core-api/src/com/intellij/openapi/editor/colors/TextAttributesKey.java +++ b/platform/core-api/src/com/intellij/openapi/editor/colors/TextAttributesKey.java @@ -166,34 +166,6 @@ public final class TextAttributesKey implements Comparable, J return key; } - /** - * Similar to createTextAttributesKey(externalName, fallbackAttributeKey) but allows to specify attributes which will be used - * in default scheme as well as in a scheme created as a copy of default scheme. If specified, shadows a fallback attribute: a scheme - * designer may need to clear the attributes to restore dependency on the fallback key. It is strongly recommended to use this method - * only if absolutely necessary to define specific highlighting attributes which can not be referenced by any of the keys in - * DefaultLanguageHighlighterColors. - *

- * If a scheme doesn't have the specified key if, for example, it was designed without an installed language plug-in, a fallback key - * will be used instead of default text attributes specified here. - *

- * - * @param externalName The unique identifier of the key. - * @param fallbackAttributeKey The fallback key to use if text attributes for this key are not defined. - * @param defaultAttributes The default text attributes associated with the key. - * @return - */ - @NotNull - public static TextAttributesKey createTextAttributesKey(@NonNls @NotNull String externalName, - TextAttributesKey fallbackAttributeKey, - TextAttributes defaultAttributes) { - TextAttributesKey key = find(externalName); - key.setFallbackAttributeKey(fallbackAttributeKey); - if (key.myDefaultAttributes == null || key.myDefaultAttributes == NULL_ATTRIBUTES) { - key.myDefaultAttributes = defaultAttributes; - } - return key; - } - public TextAttributesKey getFallbackAttributeKey() { return myFallbackAttributeKey; } diff --git a/platform/lang-api/src/com/intellij/openapi/editor/DefaultLanguageHighlighterColors.java b/platform/lang-api/src/com/intellij/openapi/editor/DefaultLanguageHighlighterColors.java index ac4cdef78851..96f830c78221 100644 --- a/platform/lang-api/src/com/intellij/openapi/editor/DefaultLanguageHighlighterColors.java +++ b/platform/lang-api/src/com/intellij/openapi/editor/DefaultLanguageHighlighterColors.java @@ -16,48 +16,48 @@ package com.intellij.openapi.editor; import com.intellij.openapi.editor.colors.TextAttributesKey; +import com.intellij.openapi.editor.markup.TextAttributes; /** * Base highlighter colors for multiple languages. * * @author Rustam Vishnyakov */ -@SuppressWarnings("deprecation") // SyntaxHighlighterColors is used for compatibility with old schemes public class DefaultLanguageHighlighterColors { public final static TextAttributesKey TEMPLATE_LANGUAGE_COLOR = - TextAttributesKey.createTextAttributesKey("DEFAULT_TEMPLATE_LANGUAGE_COLOR"); + TextAttributesKey.createTextAttributesKey("DEFAULT_TEMPLATE_LANGUAGE_COLOR", HighlighterColors.TEXT); public final static TextAttributesKey IDENTIFIER = - TextAttributesKey.createTextAttributesKey("DEFAULT_IDENTIFIER", HighlighterColors.TEXT); + TextAttributesKey.createTextAttributesKey("DEFAULT_IDENTIFIER"); public final static TextAttributesKey NUMBER = - TextAttributesKey.createTextAttributesKey("DEFAULT_NUMBER", SyntaxHighlighterColors.NUMBER.getDefaultAttributes()); + TextAttributesKey.createTextAttributesKey("DEFAULT_NUMBER"); public final static TextAttributesKey KEYWORD = - TextAttributesKey.createTextAttributesKey("DEFAULT_KEYWORD", SyntaxHighlighterColors.KEYWORD.getDefaultAttributes()); + TextAttributesKey.createTextAttributesKey("DEFAULT_KEYWORD"); public final static TextAttributesKey STRING = - TextAttributesKey.createTextAttributesKey("DEFAULT_STRING", SyntaxHighlighterColors.STRING.getDefaultAttributes()); + TextAttributesKey.createTextAttributesKey("DEFAULT_STRING", HighlighterColors.TEXT); public final static TextAttributesKey BLOCk_COMMENT = - TextAttributesKey.createTextAttributesKey("DEFAULT_BLOCK_COMMENT", SyntaxHighlighterColors.JAVA_BLOCK_COMMENT.getDefaultAttributes()); + TextAttributesKey.createTextAttributesKey("DEFAULT_BLOCK_COMMENT"); public final static TextAttributesKey LINE_COMMENT = - TextAttributesKey.createTextAttributesKey("DEFAULT_LINE_COMMENT", SyntaxHighlighterColors.LINE_COMMENT.getDefaultAttributes()); + TextAttributesKey.createTextAttributesKey("DEFAULT_LINE_COMMENT"); public final static TextAttributesKey DOC_COMMENT = - TextAttributesKey.createTextAttributesKey("DEFAULT_DOC_COMMENT", SyntaxHighlighterColors.DOC_COMMENT.getDefaultAttributes()); + TextAttributesKey.createTextAttributesKey("DEFAULT_DOC_COMMENT"); public final static TextAttributesKey OPERATION_SIGN = - TextAttributesKey.createTextAttributesKey("DEFAULT_OPERATION_SIGN", SyntaxHighlighterColors.OPERATION_SIGN.getDefaultAttributes()); + TextAttributesKey.createTextAttributesKey("DEFAULT_OPERATION_SIGN"); public final static TextAttributesKey BRACES = - TextAttributesKey.createTextAttributesKey("DEFAULT_BRACES", SyntaxHighlighterColors.BRACES.getDefaultAttributes()); + TextAttributesKey.createTextAttributesKey("DEFAULT_BRACES"); public final static TextAttributesKey DOT = - TextAttributesKey.createTextAttributesKey("DEFAULT_DOT", SyntaxHighlighterColors.DOT.getDefaultAttributes()); + TextAttributesKey.createTextAttributesKey("DEFAULT_DOT"); public final static TextAttributesKey SEMICOLON = - TextAttributesKey.createTextAttributesKey("DEFAULT_SEMICOLON", SyntaxHighlighterColors.JAVA_SEMICOLON.getDefaultAttributes()); + TextAttributesKey.createTextAttributesKey("DEFAULT_SEMICOLON"); public final static TextAttributesKey COMMA = - TextAttributesKey.createTextAttributesKey("DEFAULT_COMMA", SyntaxHighlighterColors.COMMA.getDefaultAttributes()); + TextAttributesKey.createTextAttributesKey("DEFAULT_COMMA"); public final static TextAttributesKey PARENTHESES = - TextAttributesKey.createTextAttributesKey("DEFAULT_PARENTHS", SyntaxHighlighterColors.PARENTHS.getDefaultAttributes()); + TextAttributesKey.createTextAttributesKey("DEFAULT_PARENTHS"); public final static TextAttributesKey BRACKETS = - TextAttributesKey.createTextAttributesKey("DEFAULT_BRACKETS", SyntaxHighlighterColors.BRACKETS.getDefaultAttributes()); + TextAttributesKey.createTextAttributesKey("DEFAULT_BRACKETS"); public final static TextAttributesKey LABEL = - TextAttributesKey.createTextAttributesKey("DEFAULT_LABEL"); + TextAttributesKey.createTextAttributesKey("DEFAULT_LABEL", IDENTIFIER); public final static TextAttributesKey CONSTANT = TextAttributesKey.createTextAttributesKey("DEFAULT_CONSTANT", IDENTIFIER); public final static TextAttributesKey LOCAL_VARIABLE = @@ -87,15 +87,15 @@ public class DefaultLanguageHighlighterColors { TextAttributesKey.createTextAttributesKey("DEFAULT_STATIC_FIELD", IDENTIFIER); public final static TextAttributesKey DOC_COMMENT_MARKUP = - TextAttributesKey.createTextAttributesKey("DEFAULT_DOC_MARKUP", SyntaxHighlighterColors.DOC_COMMENT_MARKUP.getDefaultAttributes()); + TextAttributesKey.createTextAttributesKey("DEFAULT_DOC_MARKUP"); public final static TextAttributesKey DOC_COMMENT_TAG = - TextAttributesKey.createTextAttributesKey("DEFAULT_DOC_COMMENT_TAG", SyntaxHighlighterColors.DOC_COMMENT_TAG.getDefaultAttributes()); + TextAttributesKey.createTextAttributesKey("DEFAULT_DOC_COMMENT_TAG"); + public final static TextAttributesKey DOC_COMMENT_TAG_VALUE = + TextAttributesKey.createTextAttributesKey("DEFAULT_DOC_COMMENT_TAG_VALUE"); public final static TextAttributesKey VALID_STRING_ESCAPE = - TextAttributesKey - .createTextAttributesKey("DEFAULT_VALID_STRING_ESCAPE", SyntaxHighlighterColors.VALID_STRING_ESCAPE.getDefaultAttributes()); + TextAttributesKey.createTextAttributesKey("DEFAULT_VALID_STRING_ESCAPE"); public final static TextAttributesKey INVALID_STRING_ESCAPE = - TextAttributesKey - .createTextAttributesKey("DEFAULT_INVALID_STRING_ESCAPE", SyntaxHighlighterColors.INVALID_STRING_ESCAPE.getDefaultAttributes()); + TextAttributesKey.createTextAttributesKey("DEFAULT_INVALID_STRING_ESCAPE"); public final static TextAttributesKey PREDEFINED_SYMBOL = TextAttributesKey.createTextAttributesKey("DEFAULT_PREDEFINED_SYMBOL", IDENTIFIER); diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/colors/impl/AbstractColorsScheme.java b/platform/platform-impl/src/com/intellij/openapi/editor/colors/impl/AbstractColorsScheme.java index 261f072e13d9..9e4da4acba34 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/colors/impl/AbstractColorsScheme.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/colors/impl/AbstractColorsScheme.java @@ -445,10 +445,7 @@ public abstract class AbstractColorsScheme implements EditorColorsScheme { if (key.getFallbackAttributeKey() != null && value.isEmpty()) return false; boolean hasDefaultValue = value.equals(defaultAttribute); if (myParentScheme == null) return !hasDefaultValue; - if (EditorColorsManager.getInstance().getGlobalScheme() == this - && myParentScheme instanceof AbstractColorsScheme - && !((AbstractColorsScheme)myParentScheme).myAttributesMap.containsKey(key)) return !value.isEmpty(); - return !value.equals(myParentScheme.getAttributes(key)); + return true; } private void writeAttributes(Element attrElements) throws WriteExternalException { diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/colors/impl/EditorColorsSchemeImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/colors/impl/EditorColorsSchemeImpl.java index 9d9c86981004..4d5e65d279a6 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/colors/impl/EditorColorsSchemeImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/colors/impl/EditorColorsSchemeImpl.java @@ -53,7 +53,7 @@ public class EditorColorsSchemeImpl extends AbstractColorsScheme implements Exte @Override public TextAttributes getAttributes(TextAttributesKey key) { - if (key != null) { + if (key != null) { TextAttributesKey fallbackKey = key.getFallbackAttributeKey(); TextAttributes attributes = myAttributesMap.get(key); if (fallbackKey == null) { @@ -63,6 +63,9 @@ public class EditorColorsSchemeImpl extends AbstractColorsScheme implements Exte if (attributes != null && !attributes.isEmpty()) return attributes; attributes = getFallbackAttributes(fallbackKey); if (attributes != null) return attributes; + if (myParentScheme instanceof DefaultColorsScheme && !DEFAULT_SCHEME_NAME.equals(getName())) { + return null; + } } } return myParentScheme.getAttributes(key); diff --git a/platform/platform-resources/src/DefaultColorSchemesManager.xml b/platform/platform-resources/src/DefaultColorSchemesManager.xml index a40dcc80f0ab..74713cdd0eb8 100644 --- a/platform/platform-resources/src/DefaultColorSchemesManager.xml +++ b/platform/platform-resources/src/DefaultColorSchemesManager.xml @@ -90,6 +90,71 @@ + + + + + + + + + + +