Skip to content

Commit dbd4255

Browse files
committed
Merge branch 'whitespace-in-path'
2 parents a972a92 + d1111ca commit dbd4255

File tree

3 files changed

+43
-24
lines changed

3 files changed

+43
-24
lines changed

server/src/test/kotlin/org/javacs/kt/OneFilePerformance.kt

Lines changed: 9 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,17 @@
11
package org.javacs.kt
22

3-
import org.jetbrains.kotlin.com.intellij.openapi.Disposable
3+
import org.javacs.kt.util.LoggingMessageCollector
4+
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
5+
import org.jetbrains.kotlin.cli.jvm.compiler.CliBindingTrace
6+
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
7+
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
48
import org.jetbrains.kotlin.com.intellij.openapi.util.Disposer
59
import org.jetbrains.kotlin.com.intellij.openapi.vfs.StandardFileSystems
6-
import org.jetbrains.kotlin.com.intellij.openapi.vfs.VirtualFile
710
import org.jetbrains.kotlin.com.intellij.openapi.vfs.VirtualFileManager
8-
import org.jetbrains.kotlin.com.intellij.openapi.vfs.VirtualFileSystem
911
import org.jetbrains.kotlin.com.intellij.psi.PsiManager
1012
import org.jetbrains.kotlin.com.intellij.psi.util.PsiTreeUtil
11-
import org.jetbrains.kotlin.cli.jvm.compiler.CliBindingTrace
12-
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
13-
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
14-
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
1513
import org.jetbrains.kotlin.config.CommonConfigurationKeys
1614
import org.jetbrains.kotlin.config.CompilerConfiguration
17-
import org.jetbrains.kotlin.container.ComponentProvider
18-
import org.jetbrains.kotlin.container.ValueDescriptor
19-
import org.jetbrains.kotlin.descriptors.CallableDescriptor
2015
import org.jetbrains.kotlin.metadata.jvm.deserialization.JvmProtoBufUtil
2116
import org.jetbrains.kotlin.psi.KtElement
2217
import org.jetbrains.kotlin.psi.KtFile
@@ -25,23 +20,15 @@ import org.jetbrains.kotlin.resolve.BindingTraceContext
2520
import org.jetbrains.kotlin.resolve.LazyTopDownAnalyzer
2621
import org.jetbrains.kotlin.resolve.TopDownAnalysisMode
2722
import org.jetbrains.kotlin.resolve.calls.callUtil.getParentResolvedCall
28-
import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall
2923
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfoFactory
3024
import org.junit.Test
31-
import org.openjdk.jmh.annotations.Benchmark
32-
import org.openjdk.jmh.annotations.Scope
33-
import org.openjdk.jmh.annotations.State
34-
import org.openjdk.jmh.annotations.TearDown
35-
import org.openjdk.jmh.annotations.Level
25+
import org.openjdk.jmh.annotations.*
3626
import org.openjdk.jmh.runner.Runner
3727
import org.openjdk.jmh.runner.RunnerException
38-
import org.openjdk.jmh.runner.options.Options
3928
import org.openjdk.jmh.runner.options.OptionsBuilder
40-
import org.javacs.kt.util.LoggingMessageCollector
41-
42-
import java.lang.reflect.Type
43-
import java.net.URL
4429
import java.io.Closeable
30+
import java.net.URLDecoder
31+
import java.nio.charset.StandardCharsets
4532

4633
class OneFilePerformance {
4734
@State(Scope.Thread)
@@ -61,7 +48,7 @@ class OneFilePerformance {
6148

6249
internal fun openFile(resourcePath: String?): KtFile {
6350
val locate = OneFilePerformance::class.java.getResource(resourcePath)
64-
val file = fileSystem.findFileByPath(locate.path)
51+
val file = fileSystem.findFileByPath(URLDecoder.decode(locate.path, StandardCharsets.UTF_8.toString()))
6552
return PsiManager.getInstance(env.project).findFile(file!!) as KtFile
6653
}
6754

shared/src/main/kotlin/org/javacs/kt/util/URIs.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package org.javacs.kt.util
22

3-
import java.nio.charset.StandardCharsets
43
import java.net.URI
54
import java.net.URLDecoder
5+
import java.nio.charset.StandardCharsets
66
import java.nio.file.Path
77
import java.nio.file.Paths
88

@@ -11,7 +11,8 @@ import java.nio.file.Paths
1111
* Decoding is necessary since some language clients
1212
* (including VSCode) invalidly percent-encode colons.
1313
*/
14-
fun parseURI(uri: String): URI = URI.create(runCatching { URLDecoder.decode(uri, StandardCharsets.UTF_8.toString()) }.getOrDefault(uri))
14+
fun parseURI(uri: String): URI =
15+
URI.create(runCatching { URLDecoder.decode(uri.replace(" ", "%20"), StandardCharsets.UTF_8.toString()) }.getOrDefault(uri))
1516

1617
val URI.filePath: Path? get() = runCatching { Paths.get(this) }.getOrNull()
1718

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package org.javacs.kt
2+
3+
import org.junit.Assert.assertEquals
4+
import org.javacs.kt.util.parseURI
5+
import org.junit.Test
6+
import java.net.URI
7+
8+
class URIsTest {
9+
@Test
10+
fun `parseURI should work with different paths`() {
11+
assertEquals(
12+
URI.create("/home/ws%201"),
13+
parseURI("/home/ws 1")
14+
)
15+
16+
assertEquals(
17+
URI.create("/home/ws-1"),
18+
parseURI("/home/ws-1")
19+
)
20+
21+
assertEquals(
22+
URI.create("file:/home/ws%201"),
23+
parseURI("file:///home/ws%201")
24+
)
25+
26+
assertEquals(
27+
URI.create("file:/home/ws%201"),
28+
parseURI("file%3A%2F%2F%2Fhome%2Fws%201")
29+
)
30+
}
31+
}

0 commit comments

Comments
 (0)