From e13508c22b22db5119cebb309853e527a67418d7 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Thu, 13 Jun 2013 18:33:57 +0400 Subject: [PATCH] Add support of backticks in JetPsiMatcher --- .../jetbrains/jet/plugin/util/JetPsiMatcher.java | 15 ++++++++++++++- .../expressions/simpleName/simpleName2.kt | 1 + .../expressions/simpleName/simpleName2.kt.2 | 1 + .../org/jetbrains/jet/psi/JetPsiMatcherTest.java | 5 +++++ 4 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 idea/testData/jetPsiMatcher/expressions/simpleName/simpleName2.kt create mode 100644 idea/testData/jetPsiMatcher/expressions/simpleName/simpleName2.kt.2 diff --git a/idea/src/org/jetbrains/jet/plugin/util/JetPsiMatcher.java b/idea/src/org/jetbrains/jet/plugin/util/JetPsiMatcher.java index da964464410..62fc91e7022 100644 --- a/idea/src/org/jetbrains/jet/plugin/util/JetPsiMatcher.java +++ b/idea/src/org/jetbrains/jet/plugin/util/JetPsiMatcher.java @@ -16,6 +16,7 @@ package org.jetbrains.jet.plugin.util; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.psi.*; @@ -126,7 +127,7 @@ public class JetPsiMatcher { @Override public Boolean visitSimpleNameExpression(JetSimpleNameExpression expression, JetElement data) { - return expression.getText().equals(data.getText()); + return checkIdentifierMatch(expression.getText(), data.getText()); } @Override @@ -254,4 +255,16 @@ public class JetPsiMatcher { return e1.accept(VISITOR, e2); } + + @NotNull + private static String unquote(@NotNull String s) { + return (s.startsWith("`") && s.endsWith("`")) ? s.substring(1, s.length() - 1) : s; + } + + public static boolean checkIdentifierMatch(@Nullable String s1, @Nullable String s2) { + if (s1 == s2) return true; + if (s1 == null || s2 == null) return false; + + return unquote(s1).equals(unquote(s2)); + } } diff --git a/idea/testData/jetPsiMatcher/expressions/simpleName/simpleName2.kt b/idea/testData/jetPsiMatcher/expressions/simpleName/simpleName2.kt new file mode 100644 index 00000000000..30d74d25844 --- /dev/null +++ b/idea/testData/jetPsiMatcher/expressions/simpleName/simpleName2.kt @@ -0,0 +1 @@ +test \ No newline at end of file diff --git a/idea/testData/jetPsiMatcher/expressions/simpleName/simpleName2.kt.2 b/idea/testData/jetPsiMatcher/expressions/simpleName/simpleName2.kt.2 new file mode 100644 index 00000000000..666f3d302b9 --- /dev/null +++ b/idea/testData/jetPsiMatcher/expressions/simpleName/simpleName2.kt.2 @@ -0,0 +1 @@ +`test` \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/psi/JetPsiMatcherTest.java b/idea/tests/org/jetbrains/jet/psi/JetPsiMatcherTest.java index c365371af18..70b7b9c3c66 100644 --- a/idea/tests/org/jetbrains/jet/psi/JetPsiMatcherTest.java +++ b/idea/tests/org/jetbrains/jet/psi/JetPsiMatcherTest.java @@ -250,6 +250,11 @@ public class JetPsiMatcherTest extends AbstractJetPsiMatcherTest { doTestExpressions("idea/testData/jetPsiMatcher/expressions/simpleName/simpleName.kt"); } + @TestMetadata("simpleName2.kt") + public void testSimpleName2() throws Exception { + doTestExpressions("idea/testData/jetPsiMatcher/expressions/simpleName/simpleName2.kt"); + } + @TestMetadata("_simpleName.kt") public void test_simpleName() throws Exception { doTestExpressions("idea/testData/jetPsiMatcher/expressions/simpleName/_simpleName.kt");