From dd10bbf66da29c31eb0b16c0b2641a3ba3defc81 Mon Sep 17 00:00:00 2001 From: Gregory Shrago Date: Wed, 18 Nov 2009 16:23:25 +0300 Subject: [PATCH] invalid PSI<->stub type assertion added --- .../com/intellij/psi/stubs/DefaultStubBuilder.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/platform/lang-api/src/com/intellij/psi/stubs/DefaultStubBuilder.java b/platform/lang-api/src/com/intellij/psi/stubs/DefaultStubBuilder.java index 91bdaffb17dc..b65ca3f870c2 100644 --- a/platform/lang-api/src/com/intellij/psi/stubs/DefaultStubBuilder.java +++ b/platform/lang-api/src/com/intellij/psi/stubs/DefaultStubBuilder.java @@ -19,12 +19,17 @@ */ package com.intellij.psi.stubs; +import com.intellij.lang.ASTNode; +import com.intellij.openapi.diagnostic.Logger; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.StubBasedPsiElement; import com.intellij.psi.StubBuilder; +import com.intellij.psi.tree.IElementType; public class DefaultStubBuilder implements StubBuilder { + private static final Logger LOG = Logger.getInstance("#com.intellij.psi.stubs.DefaultStubBuilder"); + public StubElement buildStubTree(final PsiFile file) { return buildStubTreeFor(file, createStubForFile(file)); } @@ -43,6 +48,13 @@ public class DefaultStubBuilder implements StubBuilder { stub = type.createStub(elt, parentStub); } } + else { + final ASTNode node = elt.getNode(); + final IElementType type = node == null? null : node.getElementType(); + if (type instanceof IStubElementType && ((IStubElementType)type).shouldCreateStub(node)) { + LOG.error("Non-StubBasedPsiElement requests stub creation. Stub type: " + type + ", PSI: " + elt); + } + } for (PsiElement child = elt.getFirstChild(); child != null; child = child.getNextSibling()) { buildStubTreeFor(child, stub);