From 550b182edf44c6aed5c77490c83f9c50c9b8eb82 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Tue, 29 Mar 2016 13:40:10 +0300 Subject: [PATCH] more optimisations --- .../extapi/psi/ASTDelegatePsiElement.java | 9 ++++++++- .../extapi/psi/StubBasedPsiElementBase.java | 16 +++++++++++----- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/platform/core-impl/src/com/intellij/extapi/psi/ASTDelegatePsiElement.java b/platform/core-impl/src/com/intellij/extapi/psi/ASTDelegatePsiElement.java index 6105486546ea..7821c1cf9e9e 100644 --- a/platform/core-impl/src/com/intellij/extapi/psi/ASTDelegatePsiElement.java +++ b/platform/core-impl/src/com/intellij/extapi/psi/ASTDelegatePsiElement.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2016 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. @@ -22,11 +22,14 @@ package com.intellij.extapi.psi; import com.intellij.lang.ASTNode; import com.intellij.lang.Language; import com.intellij.openapi.diagnostic.Logger; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.project.ProjectCoreUtil; import com.intellij.openapi.util.Key; import com.intellij.openapi.util.TextRange; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiInvalidElementAccessException; +import com.intellij.psi.PsiManager; import com.intellij.psi.impl.CheckUtil; import com.intellij.psi.impl.PsiElementBase; import com.intellij.psi.impl.PsiManagerEx; @@ -61,6 +64,10 @@ public abstract class ASTDelegatePsiElement extends PsiElementBase { @Override public PsiManagerEx getManager() { + Project project = ProjectCoreUtil.theOnlyOpenProject(); + if (project != null) { + return (PsiManagerEx)PsiManager.getInstance(project); + } PsiElement parent = this; while (parent instanceof ASTDelegatePsiElement) { 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 75e48210ac3e..961f7a176afd 100644 --- a/platform/core-impl/src/com/intellij/extapi/psi/StubBasedPsiElementBase.java +++ b/platform/core-impl/src/com/intellij/extapi/psi/StubBasedPsiElementBase.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2016 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,13 +23,11 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.progress.ProcessCanceledException; import com.intellij.openapi.progress.ProgressIndicatorProvider; import com.intellij.openapi.project.Project; +import com.intellij.openapi.project.ProjectCoreUtil; import com.intellij.openapi.util.Key; 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; -import com.intellij.psi.PsiLock; +import com.intellij.psi.*; import com.intellij.psi.impl.DebugUtil; import com.intellij.psi.impl.PsiManagerEx; import com.intellij.psi.impl.source.PsiFileImpl; @@ -280,12 +278,20 @@ public class StubBasedPsiElementBase extends ASTDelegateP @Override public PsiManagerEx getManager() { + Project project = ProjectCoreUtil.theOnlyOpenProject(); + if (project != null) { + return (PsiManagerEx)PsiManager.getInstance(project); + } return (PsiManagerEx)getContainingFile().getManager(); } @Override @NotNull public Project getProject() { + Project project = ProjectCoreUtil.theOnlyOpenProject(); + if (project != null) { + return project; + } return getContainingFile().getProject(); }