From bbbacefa0f6c23430a81532c7cde34c90844fa67 Mon Sep 17 00:00:00 2001 From: "Gregory.Shrago" Date: Fri, 11 May 2012 17:39:09 +0400 Subject: [PATCH] More IElementTypes: EA-35971 - assert: IElementType. --- .../com/intellij/psi/tree/IElementType.java | 2 +- .../intellij/psi/tree/IElementTypeTest.java | 47 +++++++++++++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 platform/platform-tests/testSrc/com/intellij/psi/tree/IElementTypeTest.java diff --git a/platform/core-api/src/com/intellij/psi/tree/IElementType.java b/platform/core-api/src/com/intellij/psi/tree/IElementType.java index dfa362120971..a731db42ab14 100644 --- a/platform/core-api/src/com/intellij/psi/tree/IElementType.java +++ b/platform/core-api/src/com/intellij/psi/tree/IElementType.java @@ -38,7 +38,7 @@ public class IElementType { public static final short FIRST_TOKEN_INDEX = 1; private static short ourCounter = FIRST_TOKEN_INDEX; - private static final short MAX_INDEXED_TYPES = 10000; + private static final short MAX_INDEXED_TYPES = 15000; private static final List ourRegistry = new ArrayList(700); private final short myIndex; diff --git a/platform/platform-tests/testSrc/com/intellij/psi/tree/IElementTypeTest.java b/platform/platform-tests/testSrc/com/intellij/psi/tree/IElementTypeTest.java new file mode 100644 index 000000000000..d5915a9f253b --- /dev/null +++ b/platform/platform-tests/testSrc/com/intellij/psi/tree/IElementTypeTest.java @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2000-2006 JetBrains s.r.o. All Rights Reserved. + */ +package com.intellij.psi.tree; + +import com.intellij.lang.LanguageExtensionPoint; +import com.intellij.lang.ParserDefinition; +import com.intellij.lang.PsiParser; +import com.intellij.lexer.Lexer; +import com.intellij.openapi.extensions.ExtensionPointName; +import com.intellij.openapi.extensions.Extensions; +import com.intellij.testFramework.fixtures.LightPlatformCodeInsightFixtureTestCase; + +/** + * @author gregsh + */ +public class IElementTypeTest extends LightPlatformCodeInsightFixtureTestCase { + + // load all parser definitions, instantiate all lexers & parsers to initialize all IElementType constants + @SuppressWarnings("UnusedDeclaration") + public void testCount() throws Exception { + int count = IElementType.getAllocatedTypesCount(); + System.out.println("Before: " + count +" types"); + LanguageExtensionPoint[] extensions = Extensions.getExtensions(new ExtensionPointName("com.intellij.lang.parserDefinition")); + System.out.println(extensions.length +" definitions"); + + for (LanguageExtensionPoint e : extensions) { + ParserDefinition definition = (ParserDefinition)e.getInstance(); + try { + IFileElementType type = definition.getFileNodeType(); + Lexer lexer = definition.createLexer(getProject()); + PsiParser parser = definition.createParser(getProject()); + } + catch (UnsupportedOperationException e1) { + } + } + System.out.println("After: " + IElementType.getAllocatedTypesCount() +" types"); + // leave some index-space for plugin developers + assertTrue(IElementType.getAllocatedTypesCount() < 10000); + + // output on 11.05.2012 + // Before: 3485 types + // 95 definitions + // After: 7694 types + } + +}