Skip to content

Commit fbee2f1

Browse files
committed
refactor: support all languages with base lang javascript (#866)
1 parent aa11896 commit fbee2f1

File tree

14 files changed

+60
-33
lines changed

14 files changed

+60
-33
lines changed

marker/js-marker/src/main/kotlin/spp/jetbrains/marker/js/JavascriptMarker.kt

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
*/
1717
package spp.jetbrains.marker.js
1818

19+
import spp.jetbrains.marker.SourceMarkerUtils
1920
import spp.jetbrains.marker.impl.*
2021
import spp.jetbrains.marker.js.service.*
2122

@@ -37,11 +38,11 @@ object JavascriptMarker {
3738
}
3839

3940
fun setup() {
40-
ArtifactCreationService.addService(JavascriptArtifactCreationService(), "JavaScript", "ECMAScript 6")
41-
ArtifactNamingService.addService(JavascriptArtifactNamingService(), "JavaScript", "ECMAScript 6")
42-
ArtifactScopeService.addService(JavascriptArtifactScopeService(), "JavaScript", "ECMAScript 6")
43-
ArtifactConditionService.addService(JavascriptArtifactConditionService(), "JavaScript", "ECMAScript 6")
44-
ArtifactTypeService.addService(JavascriptArtifactTypeService(), "JavaScript", "ECMAScript 6")
45-
SourceGuideProvider.addProvider(JavascriptGuideProvider(), "JavaScript", "ECMAScript 6")
41+
ArtifactCreationService.addService(JavascriptArtifactCreationService(), SourceMarkerUtils.getJavaScriptLanguages())
42+
ArtifactNamingService.addService(JavascriptArtifactNamingService(), SourceMarkerUtils.getJavaScriptLanguages())
43+
ArtifactScopeService.addService(JavascriptArtifactScopeService(), SourceMarkerUtils.getJavaScriptLanguages())
44+
ArtifactConditionService.addService(JavascriptArtifactConditionService(), SourceMarkerUtils.getJavaScriptLanguages())
45+
ArtifactTypeService.addService(JavascriptArtifactTypeService(), SourceMarkerUtils.getJavaScriptLanguages())
46+
SourceGuideProvider.addProvider(JavascriptGuideProvider(), SourceMarkerUtils.getJavaScriptLanguages())
4647
}
4748
}

marker/js-marker/src/main/kotlin/spp/jetbrains/marker/js/service/JavascriptArtifactNamingService.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
*/
1717
package spp.jetbrains.marker.js.service
1818

19+
import com.intellij.lang.Language
1920
import com.intellij.lang.javascript.psi.*
2021
import com.intellij.lang.javascript.psi.ecmal4.JSClass
2122
import com.intellij.openapi.project.Project
@@ -60,7 +61,7 @@ class JavascriptArtifactNamingService : IArtifactNamingService {
6061
return LiveSourceLocation(locationSource, lineNumber, service = serviceName)
6162
}
6263

63-
override fun getLocation(language: String, artifactQualifiedName: ArtifactQualifiedName): String {
64+
override fun getLocation(language: Language, artifactQualifiedName: ArtifactQualifiedName): String {
6465
return if (artifactQualifiedName.identifier.contains("(")) {
6566
artifactQualifiedName.identifier
6667
} else {

marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/service/JVMArtifactNamingService.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
*/
1717
package spp.jetbrains.marker.jvm.service
1818

19+
import com.intellij.lang.Language
1920
import com.intellij.openapi.diagnostic.logger
2021
import com.intellij.openapi.project.Project
2122
import com.intellij.psi.*
@@ -57,7 +58,7 @@ class JVMArtifactNamingService : IArtifactNamingService {
5758
return LiveSourceLocation(locationSource, lineNumber, service = serviceName)
5859
}
5960

60-
override fun getLocation(language: String, artifactQualifiedName: ArtifactQualifiedName): String {
61+
override fun getLocation(language: Language, artifactQualifiedName: ArtifactQualifiedName): String {
6162
var fullyQualified = artifactQualifiedName.identifier
6263
if (fullyQualified.contains("#")) {
6364
fullyQualified = fullyQualified.substring(0, fullyQualified.indexOf("#"))

marker/py-marker/src/main/kotlin/spp/jetbrains/marker/py/service/PythonArtifactNamingService.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
*/
1717
package spp.jetbrains.marker.py.service
1818

19+
import com.intellij.lang.Language
1920
import com.intellij.openapi.project.Project
2021
import com.intellij.psi.PsiElement
2122
import com.intellij.psi.PsiFile
@@ -47,7 +48,7 @@ class PythonArtifactNamingService : IArtifactNamingService {
4748
return LiveSourceLocation(locationSource, lineNumber, service = serviceName)
4849
}
4950

50-
override fun getLocation(language: String, artifactQualifiedName: ArtifactQualifiedName): String {
51+
override fun getLocation(language: Language, artifactQualifiedName: ArtifactQualifiedName): String {
5152
return artifactQualifiedName.identifier
5253
}
5354

marker/src/main/kotlin/spp/jetbrains/marker/AbstractSourceMarkerService.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
*/
1717
package spp.jetbrains.marker
1818

19+
import com.intellij.lang.Language
1920
import spp.protocol.artifact.ArtifactLanguage
2021

2122
abstract class AbstractSourceMarkerService<T : ISourceMarkerService> {
@@ -31,10 +32,14 @@ abstract class AbstractSourceMarkerService<T : ISourceMarkerService> {
3132
languages.forEach { services[it] = service }
3233
}
3334

34-
internal fun getService(language: String): T {
35+
private fun getService(language: String): T {
3536
return services[language] ?: throw IllegalArgumentException("No service for language $language")
3637
}
3738

39+
internal fun getService(language: Language): T {
40+
return getService(language.baseLanguage?.id ?: language.id)
41+
}
42+
3843
fun getService(language: ArtifactLanguage): T {
3944
return when (language) {
4045
ArtifactLanguage.JVM -> getService("JAVA")

marker/src/main/kotlin/spp/jetbrains/marker/IArtifactNamingService.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
*/
1717
package spp.jetbrains.marker
1818

19+
import com.intellij.lang.Language
1920
import com.intellij.openapi.project.Project
2021
import com.intellij.psi.PsiElement
2122
import com.intellij.psi.PsiFile
@@ -39,7 +40,7 @@ interface IArtifactNamingService : ISourceMarkerService {
3940
serviceName: String?
4041
): LiveSourceLocation?
4142

42-
fun getLocation(language: String, artifactQualifiedName: ArtifactQualifiedName): String
43+
fun getLocation(language: Language, artifactQualifiedName: ArtifactQualifiedName): String
4344
fun getVariableName(element: PsiElement): String?
4445
fun getFullyQualifiedName(element: PsiElement): ArtifactQualifiedName
4546
fun getQualifiedClassNames(psiFile: PsiFile): List<ArtifactQualifiedName>

marker/src/main/kotlin/spp/jetbrains/marker/SourceMarkerUtils.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,4 +87,8 @@ object SourceMarkerUtils {
8787
fun getJvmLanguages(): List<String> {
8888
return listOf("JAVA", "kotlin", "Groovy", "Scala")
8989
}
90+
91+
fun getJavaScriptLanguages(): List<String> {
92+
return listOf("JavaScript", "ECMAScript 6")
93+
}
9094
}

marker/src/main/kotlin/spp/jetbrains/marker/impl/ArtifactConditionService.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,6 @@ object ArtifactConditionService : AbstractSourceMarkerService<IArtifactCondition
4848
}
4949

5050
override fun getCondition(condition: String, context: PsiElement): String {
51-
return getService(context.language.id).getCondition(condition, context)
51+
return getService(context.language).getCondition(condition, context)
5252
}
5353
}

marker/src/main/kotlin/spp/jetbrains/marker/impl/ArtifactCreationService.kt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ object ArtifactCreationService : AbstractSourceMarkerService<IArtifactCreationSe
4141
lineNumber: Int,
4242
autoApply: Boolean
4343
): Optional<ExpressionGutterMark> {
44-
return getService(fileMarker.psiFile.language.id)
44+
return getService(fileMarker.psiFile.language)
4545
.getOrCreateExpressionGutterMark(fileMarker, lineNumber, autoApply)
4646
}
4747

@@ -50,7 +50,7 @@ object ArtifactCreationService : AbstractSourceMarkerService<IArtifactCreationSe
5050
element: PsiElement,
5151
autoApply: Boolean
5252
): MethodGutterMark? {
53-
return getService(fileMarker.psiFile.language.id)
53+
return getService(fileMarker.psiFile.language)
5454
.getOrCreateMethodGutterMark(fileMarker, element, autoApply)
5555
}
5656

@@ -59,7 +59,7 @@ object ArtifactCreationService : AbstractSourceMarkerService<IArtifactCreationSe
5959
lineNumber: Int,
6060
autoApply: Boolean
6161
): Optional<ExpressionInlayMark> {
62-
return getService(fileMarker.psiFile.language.id)
62+
return getService(fileMarker.psiFile.language)
6363
.getOrCreateExpressionInlayMark(fileMarker, lineNumber, autoApply)
6464
}
6565

@@ -75,7 +75,7 @@ object ArtifactCreationService : AbstractSourceMarkerService<IArtifactCreationSe
7575
element: PsiElement,
7676
autoApply: Boolean
7777
): MethodGutterMark {
78-
return getService(fileMarker.psiFile.language.id)
78+
return getService(fileMarker.psiFile.language)
7979
.createMethodGutterMark(fileMarker, element, autoApply)
8080
}
8181

@@ -84,7 +84,7 @@ object ArtifactCreationService : AbstractSourceMarkerService<IArtifactCreationSe
8484
element: PsiElement,
8585
autoApply: Boolean
8686
): MethodInlayMark {
87-
return getService(fileMarker.psiFile.language.id)
87+
return getService(fileMarker.psiFile.language)
8888
.createMethodInlayMark(fileMarker, element, autoApply)
8989
}
9090

@@ -100,7 +100,7 @@ object ArtifactCreationService : AbstractSourceMarkerService<IArtifactCreationSe
100100
lineNumber: Int,
101101
autoApply: Boolean
102102
): ExpressionGutterMark {
103-
return getService(fileMarker.psiFile.language.id)
103+
return getService(fileMarker.psiFile.language)
104104
.createExpressionGutterMark(fileMarker, lineNumber, autoApply)
105105
}
106106

@@ -109,7 +109,7 @@ object ArtifactCreationService : AbstractSourceMarkerService<IArtifactCreationSe
109109
lineNumber: Int,
110110
autoApply: Boolean
111111
): ExpressionInlayMark {
112-
return getService(fileMarker.psiFile.language.id)
112+
return getService(fileMarker.psiFile.language)
113113
.createExpressionInlayMark(fileMarker, lineNumber, autoApply)
114114
}
115115
}

marker/src/main/kotlin/spp/jetbrains/marker/impl/ArtifactNamingService.kt

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
*/
1717
package spp.jetbrains.marker.impl
1818

19+
import com.intellij.lang.Language
1920
import com.intellij.openapi.project.Project
2021
import com.intellij.psi.PsiElement
2122
import com.intellij.psi.PsiFile
@@ -40,23 +41,23 @@ object ArtifactNamingService : AbstractSourceMarkerService<IArtifactNamingServic
4041
lineNumber: Int,
4142
serviceName: String?
4243
): LiveSourceLocation? {
43-
return getService(sourceMark.language.id).getLiveSourceLocation(sourceMark, lineNumber, serviceName)
44+
return getService(sourceMark.language).getLiveSourceLocation(sourceMark, lineNumber, serviceName)
4445
}
4546

46-
override fun getLocation(language: String, artifactQualifiedName: ArtifactQualifiedName): String {
47+
override fun getLocation(language: Language, artifactQualifiedName: ArtifactQualifiedName): String {
4748
return getService(language).getLocation(language, artifactQualifiedName)
4849
}
4950

5051
override fun getVariableName(element: PsiElement): String? {
51-
return getService(element.language.id).getVariableName(element)
52+
return getService(element.language).getVariableName(element)
5253
}
5354

5455
override fun getFullyQualifiedName(element: PsiElement): ArtifactQualifiedName {
55-
return getService(element.language.id).getFullyQualifiedName(element)
56+
return getService(element.language).getFullyQualifiedName(element)
5657
}
5758

5859
override fun getQualifiedClassNames(psiFile: PsiFile): List<ArtifactQualifiedName> {
59-
return getService(psiFile.language.id).getQualifiedClassNames(psiFile)
60+
return getService(psiFile.language).getQualifiedClassNames(psiFile)
6061
}
6162

6263
override fun findPsiFile(language: ArtifactLanguage, project: Project, frame: LiveStackTraceElement): PsiFile? {

0 commit comments

Comments
 (0)