mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[markdown] IJPL-251919 Do not resolve short / non-class-like looking symbols
Merge-request: IJ-MR-216750 Merged-by: Ilia Permiashkin <ilia.permiashkin@jetbrains.com> (cherry picked from commit c00ae44ee37ecb44b2d1e3edd96566310bde45f1) [markdown] IJPL-243447 Disallow any short symbols Merge-request: IJ-MR-211255 Merged-by: Ilia Permiashkin <ilia.permiashkin@jetbrains.com> (cherry picked from commit 4172552a0f575b010e63711d40c0888927d60405) Merge-request: IJ-MR-218602 Merged-by: Ilia Permiashkin <ilia.permiashkin@jetbrains.com> GitOrigin-RevId: 7fa28263e162adb07752f89bd51d897ff2a6ab6b
This commit is contained in:
committed by
intellij-monorepo-bot
parent
9ba946fc16
commit
b7ba59b912
+8
-4
@@ -33,7 +33,7 @@ class BacktickReference(element: MarkdownCodeSpan, range: TextRange) :
|
||||
|
||||
override fun isReferenceTo(element: PsiElement): Boolean {
|
||||
val name = canonicalText
|
||||
if (!shouldSearchInSymbols(name)) {
|
||||
if (!shouldSearchInSymbols(name) || !shouldSearchInClasses(name)) {
|
||||
return super.isReferenceTo(element)
|
||||
}
|
||||
|
||||
@@ -60,7 +60,9 @@ class BacktickReference(element: MarkdownCodeSpan, range: TextRange) :
|
||||
if (isFile()) {
|
||||
resolveWithContributor(name, name, element.project, ChooseByNameContributorEx.FILE_EP_NAME, navigationItems)
|
||||
} else {
|
||||
resolveWithContributor(name, name, element.project, ChooseByNameContributorEx.CLASS_EP_NAME, navigationItems)
|
||||
if (shouldSearchInClasses(name)) {
|
||||
resolveWithContributor(name, name, element.project, ChooseByNameContributorEx.CLASS_EP_NAME, navigationItems)
|
||||
}
|
||||
if (shouldSearchInSymbols(name)) {
|
||||
resolveWithContributor(name, name, element.project, ChooseByNameContributorEx.SYMBOL_EP_NAME, navigationItems)
|
||||
}
|
||||
@@ -81,7 +83,7 @@ class BacktickReference(element: MarkdownCodeSpan, range: TextRange) :
|
||||
pattern: String,
|
||||
project: Project,
|
||||
contributors: ExtensionPointName<ChooseByNameContributor>,
|
||||
items: MutableList<NavigationItem>,
|
||||
items: MutableList<NavigationItem>
|
||||
) {
|
||||
if (items.size > MAX_RESOLVED_ITEMS) return
|
||||
for (contributor in DumbService.getInstance(project).filterByDumbAwareness(contributors.extensionList)) {
|
||||
@@ -103,7 +105,9 @@ class BacktickReference(element: MarkdownCodeSpan, range: TextRange) :
|
||||
}
|
||||
|
||||
private fun shouldSearchInSymbols(elementName: String): Boolean =
|
||||
elementName.length >= Registry.intValue("markdown.backtick.reference.symbol.length") || NameUtil.nameToWordList(elementName).size > 1
|
||||
elementName.length >= Registry.intValue("markdown.backtick.reference.symbol.length") && NameUtil.nameToWordList(elementName).size > 1
|
||||
|
||||
private fun shouldSearchInClasses(elementName: String): Boolean = elementName.length > 2
|
||||
|
||||
private fun isFile(): Boolean {
|
||||
val filetype = FileTypeRegistry.getInstance().getFileTypeByFileName(canonicalText)
|
||||
|
||||
+14
-8
@@ -42,6 +42,12 @@ class BacktickReferenceTest : BasePlatformTestCase() {
|
||||
assertTrue(myFixture.psiManager.areElementsEquivalent(javaClass, reference!!.resolve()))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test short class reference is not resolved`() {
|
||||
createJavaClass("SS")
|
||||
assertNull(configureAndGetReferenceAtCaret("There is an `S<caret>S` backtick")?.resolve())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test reference with extension resolves to original element`() {
|
||||
val file = createFile("JavaClass.java", "class JavaClass {}")
|
||||
@@ -87,11 +93,11 @@ class BacktickReferenceTest : BasePlatformTestCase() {
|
||||
"JavaClass1.java",
|
||||
"""
|
||||
class JavaClass1 {
|
||||
public void longlonglong() {}
|
||||
public void longLongLong() {}
|
||||
}
|
||||
""".trimIndent()
|
||||
)
|
||||
assertResolvesToPsiMethod("some1.md", "There is an `longlo<caret>nglong` backtick")
|
||||
assertResolvesToPsiMethod("some1.md", "There is an `longLong<caret>Long` backtick")
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -100,21 +106,21 @@ class BacktickReferenceTest : BasePlatformTestCase() {
|
||||
"JavaClass.java",
|
||||
"""
|
||||
class JavaClass {
|
||||
public void sho_test() {}
|
||||
public void boundary_test() {}
|
||||
}
|
||||
""".trimIndent()
|
||||
)
|
||||
assertResolvesToPsiMethod("some.md", "There is an `sho<caret>_test` backtick")
|
||||
assertResolvesToPsiMethod("some.md", "There is an `boundary<caret>_test` backtick")
|
||||
|
||||
createFile(
|
||||
"JavaClass1.java",
|
||||
"""
|
||||
class JavaClass1 {
|
||||
public void shoTest() {}
|
||||
public void boundaryTest() {}
|
||||
}
|
||||
""".trimIndent()
|
||||
)
|
||||
assertResolvesToPsiMethod("some1.md", "There is an `sho<caret>Test` backtick")
|
||||
assertResolvesToPsiMethod("some1.md", "There is an `boundary<caret>Test` backtick")
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -371,8 +377,8 @@ class BacktickReferenceTest : BasePlatformTestCase() {
|
||||
assertNull(reference?.resolve())
|
||||
}
|
||||
|
||||
private fun createJavaClass(): PsiClass {
|
||||
val file = createFile("JavaClass.java", "class JavaClass {}")
|
||||
private fun createJavaClass(name: String = "JavaClass"): PsiClass {
|
||||
val file = createFile("$name.java", "class $name {}")
|
||||
return file.children.single { it is PsiClass } as PsiClass
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user