aboutsummaryrefslogtreecommitdiff
path: root/test-utils/src/main/kotlin/com/google/devtools/ksp/processor/GetByNameProcessor.kt
blob: c7e49eec9ba5ef5216fab06bf8fa3b74b5dec329 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package com.google.devtools.ksp.processor

import com.google.devtools.ksp.getClassDeclarationByName
import com.google.devtools.ksp.getFunctionDeclarationsByName
import com.google.devtools.ksp.getPropertyDeclarationByName
import com.google.devtools.ksp.processing.Resolver
import com.google.devtools.ksp.symbol.KSAnnotated

class GetByNameProcessor : AbstractTestProcessor() {
    val results = mutableListOf<String>()

    override fun toResult(): List<String> {
        return results
    }

    override fun process(resolver: Resolver): List<KSAnnotated> {
        val classNames = listOf(
            "lib1.Foo",
            "lib1.Foo.FooNested",
            "source.FooInSource",
            "source.FooInSource.FooInSourceNested"
        )
        val funNames = listOf(
            "lib1.Foo.lib1MemberFun",
            "lib1.lib1TopFun",
            "lib1.Bar.lib1JavaMemberFun",
            "lib2.Foo.lib2MemberFun",
            "source.FooInSource.sourceMemberFun"
        )
        val overloadFunctionNames = listOf("lib1.Foo.overload")
        val propNames = listOf(
            "lib1.Foo.lib1MemberProp",
            "lib1.lib1TopProp",
            "lib2.Foo.lib2MemberProp",
            "source.FooInSource.sourceMemberProp",
            "source.propInSource",
        )
        for (className in classNames) {
            if (resolver.getClassDeclarationByName(className) == null) {
                results.add("failed to get $className")
            }
        }
        for (funName in funNames) {
            if (resolver.getFunctionDeclarationsByName(funName, true).none()) {
                results.add("failed to get $funName")
            }
        }
        for (funName in overloadFunctionNames) {
            if (resolver.getFunctionDeclarationsByName(funName, true).toList().size != 2) {
                results.add("failed to get all $funName")
            }
        }
        for (propName in propNames) {
            if (resolver.getPropertyDeclarationByName(propName, true) == null) {
                results.add("failed to get $propName")
            }
        }
        if (results.isEmpty()) {
            results.add("all success")
        }
        return emptyList()
    }
}