From 3f1a2e6ebb4a698158df45931e274827645d88a7 Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Mon, 13 Feb 2012 21:56:57 +0400 Subject: [PATCH] textContains uses underlying char array --- .../psi/impl/source/tree/LeafElement.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/platform/core-impl/src/com/intellij/psi/impl/source/tree/LeafElement.java b/platform/core-impl/src/com/intellij/psi/impl/source/tree/LeafElement.java index 2cac9a5b2c65..1de5c564a342 100644 --- a/platform/core-impl/src/com/intellij/psi/impl/source/tree/LeafElement.java +++ b/platform/core-impl/src/com/intellij/psi/impl/source/tree/LeafElement.java @@ -83,8 +83,20 @@ public abstract class LeafElement extends TreeElement { @Override public boolean textContains(char c) { - CharSequence text = myText; - for (int i = 0; i < text.length(); i++) { + final CharSequence text = myText; + final int len = myText.length(); + + if (len > TEXT_MATCHES_THRESHOLD) { + char[] chars = CharArrayUtil.fromSequenceWithoutCopying(myText); + if (chars != null) { + for(int i = 0; i < chars.length; ++i) { + if (chars[i] == c) return true; + } + return false; + } + } + + for (int i = 0; i < len; ++i) { if (c == text.charAt(i)) return true; }