Use -language-version 1.9 in the kotlinKythe build rule
There are some instances of .kt code in android platform that are not fully compatible with kotlinc > 2. To account for this version skew when generating xrefs, implicitly add `-language-version 1.9` to the args in the .kzip file. The main kotlinc build rules remain the same. This value has been picked manually by running `external/kotlinc/bin/kotlinc -version` at ToT Bug: 265428637 Test: verified that `-language-version 1.9` is added to the build command of the .kzip files Test: ran the indexer locally on the .kzip of `PermissionController-lib` (this android_library contains .kt code that does not compile with verison >2) Change-Id: Icfb72800404d83f63204de23a1ec34b40ee05847
This commit is contained in:
@@ -50,4 +50,11 @@ func init() {
|
|||||||
}, " "))
|
}, " "))
|
||||||
|
|
||||||
pctx.StaticVariable("KotlincGlobalFlags", strings.Join([]string{}, " "))
|
pctx.StaticVariable("KotlincGlobalFlags", strings.Join([]string{}, " "))
|
||||||
|
// Use KotlincKytheGlobalFlags to prevent kotlinc version skew issues between android and
|
||||||
|
// g3 kythe indexers.
|
||||||
|
// This is necessary because there might be instances of kotlin code in android
|
||||||
|
// platform that are not fully compatible with the kotlinc used in g3 kythe indexers.
|
||||||
|
// e.g. uninitialized variables are a warning in 1.*, but an error in 2.*
|
||||||
|
// https://github.com/JetBrains/kotlin/blob/master/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt#L748
|
||||||
|
pctx.StaticVariable("KotlincKytheGlobalFlags", strings.Join([]string{"-language-version 1.9"}, " "))
|
||||||
}
|
}
|
||||||
|
@@ -65,8 +65,6 @@ var kotlinc = pctx.AndroidRemoteStaticRule("kotlinc", android.RemoteRuleSupports
|
|||||||
"headerClassesDir", "headerJar", "kotlinJvmTarget", "kotlinBuildFile", "emptyDir", "name")
|
"headerClassesDir", "headerJar", "kotlinJvmTarget", "kotlinBuildFile", "emptyDir", "name")
|
||||||
|
|
||||||
var kotlinKytheExtract = pctx.AndroidStaticRule("kotlinKythe",
|
var kotlinKytheExtract = pctx.AndroidStaticRule("kotlinKythe",
|
||||||
// TODO (b/265428637): To prevent kotlinc version skew between android builds and internal kotlin indexers (g3), consider embedding the kotlinc used by android into the kzip file.
|
|
||||||
// This has an impact on .kzip sizes, so defer that for now.
|
|
||||||
blueprint.RuleParams{
|
blueprint.RuleParams{
|
||||||
Command: `rm -rf "$srcJarDir" && mkdir -p "$srcJarDir" && ` +
|
Command: `rm -rf "$srcJarDir" && mkdir -p "$srcJarDir" && ` +
|
||||||
`${config.ZipSyncCmd} -d $srcJarDir -l $srcJarDir/list -f "*.java" -f "*.kt" $srcJars && ` +
|
`${config.ZipSyncCmd} -d $srcJarDir -l $srcJarDir/list -f "*.java" -f "*.kt" $srcJars && ` +
|
||||||
@@ -76,7 +74,8 @@ var kotlinKytheExtract = pctx.AndroidStaticRule("kotlinKythe",
|
|||||||
// Skip header jars, those should not have an effect on kythe results.
|
// Skip header jars, those should not have an effect on kythe results.
|
||||||
` --args '${config.KotlincGlobalFlags} ` +
|
` --args '${config.KotlincGlobalFlags} ` +
|
||||||
` ${config.KotlincSuppressJDK9Warnings} ${config.JavacHeapFlags} ` +
|
` ${config.KotlincSuppressJDK9Warnings} ${config.JavacHeapFlags} ` +
|
||||||
` $kotlincFlags -jvm-target $kotlinJvmTarget'`,
|
` $kotlincFlags -jvm-target $kotlinJvmTarget ` +
|
||||||
|
`${config.KotlincKytheGlobalFlags}'`,
|
||||||
CommandDeps: []string{
|
CommandDeps: []string{
|
||||||
"${config.KotlinKytheExtractor}",
|
"${config.KotlinKytheExtractor}",
|
||||||
"${config.ZipSyncCmd}",
|
"${config.ZipSyncCmd}",
|
||||||
|
Reference in New Issue
Block a user