Skip to content

Commit

Permalink
exclude root package from getPackage search scope
Browse files Browse the repository at this point in the history
  • Loading branch information
neetopia committed Feb 12, 2024
1 parent 314a5e1 commit b8a1a1a
Show file tree
Hide file tree
Showing 5 changed files with 108 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -279,15 +279,13 @@ class ResolverAAImpl(
@KspExperimental
override fun getDeclarationsFromPackage(packageName: String): Sequence<KSDeclaration> {
return analyze {
val packageNames = packageName.split(".")
val packageNames = FqName(packageName).pathSegments().map { it.asString() }
var packages = listOf(analysisSession.ROOT_PACKAGE_SYMBOL)
for (curName in packageNames) {
packages = packages
.flatMap { it.getPackageScope().getPackageSymbols { it.asString() == curName } }
.distinct()
}
// Above steps forfeited root package, adding it back.
packages += analysisSession.ROOT_PACKAGE_SYMBOL
packages.flatMap {
it.getPackageScope().getAllSymbols().distinct().mapNotNull { symbol ->
when (symbol) {
Expand Down
104 changes: 104 additions & 0 deletions kotlin-analysis-api/testData/getPackage.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
/*
* Copyright 2024 Google LLC
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

// TEST PROCESSOR: GetPackageProcessor
// EXPECTED:
// symbols from package lib1
// lib1.propInSource KOTLIN
// lib1.funcFoo KOTLIN_LIB
// lib1.Foo KOTLIN_LIB
// lib1.FooInSource KOTLIN
// lib1.Bar JAVA_LIB
// symbols from package lib2
// lib2.a KOTLIN_LIB
// lib2.Foo KOTLIN_LIB
// lib2.FooTypeAlias KOTLIN_LIB
// symbols from package main.test
// main.test.KotlinMain KOTLIN
// main.test.C JAVA
// main.test.D JAVA
// main.test.L JAVA
// symbols from package non.exist
// END

// MODULE: lib1
// FILE: foo.kt
package lib1

class Foo

fun funcFoo(): Int {
return 1
}

// FILE: Bar.java
package lib1;

class Bar {}

// MODULE: lib2
// FILE: foo.kt
package lib2

class Foo

typealias FooTypeAlias = Foo

val a = 0

// FILE: Bar.java

class Bar {}

// MODULE: main(lib1, lib2)
// FILE: a.kt
package lib1
class FooInSource

val propInSource = 1
// FILE: main.kt
package main.test

class KotlinMain

// FILE: main/test/C.java
package main.test;

public class C {

}

class D {

}

// FILE: wrongDir/K.java
package main;

public class K {

}

class KK {}


// FILE: main/test/main/test/L.java
package main.test;

public class L {

}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ class GetPackageProcessor : AbstractTestProcessor() {
addPackage("lib1", resolver)
addPackage("lib2", resolver)
addPackage("main.test", resolver)
addPackage("non.exist", resolver)
return emptyList()
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -260,11 +260,10 @@ class KSPAATest : AbstractKSPAATest() {
runTest("../test-utils/testData/api/getAnnotationByTypeWithInnerDefault.kt")
}

@Disabled
@TestMetadata("getPackage.kt")
@Test
fun testGetPackage() {
runTest("../test-utils/testData/api/getPackage.kt")
runTest("../kotlin-analysis-api/testData/getPackage.kt")
}

@TestMetadata("getByName.kt")
Expand Down
1 change: 1 addition & 0 deletions test-utils/testData/api/getPackage.kt
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
// main.test.KotlinMain KOTLIN
// main.test.C JAVA
// main.test.D JAVA
// symbols from package non.exist
// END

// MODULE: lib1
Expand Down

0 comments on commit b8a1a1a

Please sign in to comment.