From 12fb184765f3d9e439aa534f9d24f8175fce8c7c Mon Sep 17 00:00:00 2001 From: Louis Vignier Date: Mon, 7 Jul 2025 15:43:27 +0900 Subject: [PATCH] [jdk] Improve version matching for .tool-versions GitOrigin-RevId: 0f00f6dc0705093f5f25d26c0e1b4187fde3f8b3 --- .../impl/ToolVersionsConfigurationProvider.kt | 12 +++++++----- .../projectRoots/impl/ToolVersionsWatcherTest.kt | 8 +++++--- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/java/java-impl/src/com/intellij/openapi/projectRoots/impl/ToolVersionsConfigurationProvider.kt b/java/java-impl/src/com/intellij/openapi/projectRoots/impl/ToolVersionsConfigurationProvider.kt index 201691208ae4..8fc8c2add7c8 100644 --- a/java/java-impl/src/com/intellij/openapi/projectRoots/impl/ToolVersionsConfigurationProvider.kt +++ b/java/java-impl/src/com/intellij/openapi/projectRoots/impl/ToolVersionsConfigurationProvider.kt @@ -1,4 +1,4 @@ -// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.openapi.projectRoots.impl import com.intellij.openapi.diagnostic.logger @@ -12,10 +12,10 @@ private val LOG = logger() data class AsdfReleaseData(val name: String, val vendor: String, val version: String) { companion object { - private val regex: Regex = Regex("([\\w\\-]+)-([0-9][^-_+]*)") + private val regex: Regex = Regex("([\\w\\-]+)-([0-9][^-_+b\\s]*)\\S*") fun parse(text: String): AsdfReleaseData? { - val matchResult = regex.find(text) ?: return null + val matchResult = regex.matchEntire(text) ?: return null return AsdfReleaseData( text, matchResult.groups[1]?.value ?: return null, @@ -24,9 +24,11 @@ data class AsdfReleaseData(val name: String, val vendor: String, val version: St } } + val normalizedVersion: String = version.split(".").take(3).joinToString(".") + fun matchVersionString(versionString: @NlsSafe String): Boolean { LOG.info("Matching '$versionString'") - if (version !in versionString) return false + if (normalizedVersion !in versionString) return false val variant = when (vendor) { "adoptopenjdk", "adoptopenjdk-jre" -> JdkVersionDetector.Variant.AdoptOpenJdk_HS @@ -61,7 +63,7 @@ class ToolVersionsConfigurationProvider : ExternalJavaConfigurationProvider