From 7f516fabd1b0fbae4cf24e5d214bed867ae37fec Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 17 May 2017 10:51:47 +0200 Subject: [PATCH] fix aop test: all PSI is invalidated on file type change (IDEA-CR-21137) --- .../psi/impl/smartPointers/SmartPointerManagerImpl.java | 3 +++ .../src/com/intellij/testFramework/LiteFixture.java | 8 +++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/platform/core-impl/src/com/intellij/psi/impl/smartPointers/SmartPointerManagerImpl.java b/platform/core-impl/src/com/intellij/psi/impl/smartPointers/SmartPointerManagerImpl.java index ce4112046731..b1b508165973 100644 --- a/platform/core-impl/src/com/intellij/psi/impl/smartPointers/SmartPointerManagerImpl.java +++ b/platform/core-impl/src/com/intellij/psi/impl/smartPointers/SmartPointerManagerImpl.java @@ -74,6 +74,9 @@ public class SmartPointerManagerImpl extends SmartPointerManager { PsiFile containingFile, boolean forInjected) { if (containingFile != null && !containingFile.isValid() || containingFile == null && !element.isValid()) { + if (containingFile != null) { + PsiUtilCore.ensureValid(containingFile); + } PsiUtilCore.ensureValid(element); LOG.error("Invalid element:" + element); } diff --git a/platform/testFramework/src/com/intellij/testFramework/LiteFixture.java b/platform/testFramework/src/com/intellij/testFramework/LiteFixture.java index d14899243e2a..ed70476042fc 100644 --- a/platform/testFramework/src/com/intellij/testFramework/LiteFixture.java +++ b/platform/testFramework/src/com/intellij/testFramework/LiteFixture.java @@ -6,7 +6,9 @@ package com.intellij.testFramework; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.SmartPointerManager; +import com.intellij.psi.SmartPsiElementPointer; import com.intellij.psi.impl.source.resolve.FileContextUtil; +import org.jetbrains.annotations.Nullable; /** * @author peter @@ -14,7 +16,11 @@ import com.intellij.psi.impl.source.resolve.FileContextUtil; public abstract class LiteFixture extends PlatformLiteFixture { public static void setContext(final PsiFile psiFile, final PsiElement context) { if (context != null) { - psiFile.putUserData(FileContextUtil.INJECTED_IN_ELEMENT, SmartPointerManager.getInstance(context.getProject()).createSmartPsiElementPointer(context)); + setFileContext(psiFile, SmartPointerManager.getInstance(context.getProject()).createSmartPsiElementPointer(context)); } } + + public static void setFileContext(PsiFile psiFile, @Nullable SmartPsiElementPointer pointer) { + psiFile.putUserData(FileContextUtil.INJECTED_IN_ELEMENT, pointer); + } }