Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

KON-168 Extract Api To Separate Package #106

Merged
merged 33 commits into from
May 3, 2023
Merged
Changes from 1 commit
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
3c7129a
Extract KoScope interface
igorwojda May 3, 2023
1f45d04
Rename API entry point
igorwojda May 3, 2023
8f75014
Make KoScope internal
igorwojda May 3, 2023
5dbd3d2
Move const to api
igorwojda May 3, 2023
cc6975e
Rename enums
igorwojda May 3, 2023
1b2bcb9
Move ext to api package
igorwojda May 3, 2023
6862817
Rename To Impl
igorwojda May 3, 2023
e60a6e4
Extract Declaration interfaces
igorwojda May 3, 2023
2befaa0
Extract Declaration interfaces
igorwojda May 3, 2023
55c7040
Make exceptions internal
igorwojda May 3, 2023
01c8517
Extract Declaration interfaces
igorwojda May 3, 2023
b9cec85
Upd Declaration hierarchy
igorwojda May 3, 2023
0304941
Upd Declaration PRoviders
igorwojda May 3, 2023
094d070
Upd KoScope APi
igorwojda May 3, 2023
89f3161
Make internal
igorwojda May 3, 2023
cf82897
Upd KoScope Api
igorwojda May 3, 2023
149b7b6
Upd Sequence Extension Api
igorwojda May 3, 2023
8d20b3e
Make internal
igorwojda May 3, 2023
2b3ae88
Add KoDocTagDeclaration interfaces
igorwojda May 3, 2023
1f9f06c
Move Interfaces to API
igorwojda May 3, 2023
b9b0d08
Moved sequence and add refied extensions
igorwojda May 3, 2023
8a84fda
Clean up internal modifiers
igorwojda May 3, 2023
94dcf72
Move Sequence Tests
igorwojda May 3, 2023
920e377
Rename Tests
igorwojda May 3, 2023
3777cfb
Rename Test
igorwojda May 3, 2023
b5c89f2
Added Extensions tests
igorwojda May 3, 2023
5700854
Rename file
igorwojda May 3, 2023
fd90986
Rename snippet
igorwojda May 3, 2023
ff9c979
Update Tests
igorwojda May 3, 2023
bd4d7ee
Update Tests
igorwojda May 3, 2023
027b886
Improve tests
igorwojda May 3, 2023
42d6042
Fix detekt and spotless
igorwojda May 3, 2023
967042c
Upd folder name
igorwojda May 3, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Upd Declaration PRoviders
  • Loading branch information
igorwojda committed May 3, 2023
commit 03049411da4e7d2e53890438aca33cadeb56f059
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
package com.lemonappdev.konsist.core.declaration.provider

import com.lemonappdev.konsist.api.KoModifier
import com.lemonappdev.konsist.core.declaration.KoClassDeclarationImpl
import com.lemonappdev.konsist.core.declaration.KoCompanionObjectDeclarationImpl
import com.lemonappdev.konsist.core.declaration.KoDeclarationImpl
import com.lemonappdev.konsist.core.declaration.KoFunctionDeclarationImpl
import com.lemonappdev.konsist.core.declaration.KoInterfaceDeclarationImpl
import com.lemonappdev.konsist.core.declaration.KoObjectDeclarationImpl
import com.lemonappdev.konsist.core.declaration.KoPropertyDeclarationImpl
import com.lemonappdev.konsist.core.declaration.KoClassDeclaration
import com.lemonappdev.konsist.core.declaration.KoCompanionObjectDeclaration
import com.lemonappdev.konsist.core.declaration.KoDeclaration
import com.lemonappdev.konsist.core.declaration.KoFunctionDeclaration
import com.lemonappdev.konsist.core.declaration.KoInterfaceDeclaration
import com.lemonappdev.konsist.core.declaration.KoObjectDeclaration
import com.lemonappdev.konsist.core.declaration.KoPropertyDeclaration

interface KoDeclarationProvider {
fun declarations(
modifiers: List<KoModifier> = emptyList(),
includeNested: Boolean = false,
includeLocal: Boolean = false,
): Sequence<KoDeclarationImpl>
): Sequence<KoDeclaration>

fun containsDeclarations(
name: String,
@@ -28,7 +28,7 @@ interface KoClassProvider : KoDeclarationProvider {
modifiers: List<KoModifier> = emptyList(),
includeNested: Boolean = false,
includeLocal: Boolean = false,
): Sequence<KoClassDeclarationImpl> =
): Sequence<KoClassDeclaration> =
KoDeclarationProviderUtil.getKoDeclarations(declarations(), modifiers, includeNested, includeLocal)

fun containsClass(
@@ -43,7 +43,7 @@ interface KoInterfaceProvider : KoDeclarationProvider {
fun interfaces(
modifiers: List<KoModifier> = emptyList(),
includeNested: Boolean = false,
): Sequence<KoInterfaceDeclarationImpl> =
): Sequence<KoInterfaceDeclaration> =
KoDeclarationProviderUtil.getKoDeclarations(declarations(), modifiers, includeNested)

fun containsInterface(
@@ -58,7 +58,7 @@ interface KoObjectProvider : KoDeclarationProvider {
fun objects(
modifiers: List<KoModifier> = emptyList(),
includeNested: Boolean = false,
): Sequence<KoObjectDeclarationImpl> = KoDeclarationProviderUtil.getKoDeclarations(declarations(), modifiers, includeNested)
): Sequence<KoObjectDeclaration> = KoDeclarationProviderUtil.getKoDeclarations(declarations(), modifiers, includeNested)

fun containsObject(
name: String,
@@ -71,7 +71,7 @@ interface KoCompanionObjectProvider : KoDeclarationProvider {
fun companionObjects(
modifiers: List<KoModifier> = emptyList(),
includeNested: Boolean = false,
): Sequence<KoCompanionObjectDeclarationImpl> = KoDeclarationProviderUtil.getKoDeclarations(declarations(), modifiers, includeNested)
): Sequence<KoCompanionObjectDeclaration> = KoDeclarationProviderUtil.getKoDeclarations(declarations(), modifiers, includeNested)

fun containsCompanionObject(
name: String,
@@ -85,7 +85,7 @@ interface KoPropertyProvider : KoDeclarationProvider {
modifiers: List<KoModifier> = emptyList(),
includeNested: Boolean = false,
includeLocal: Boolean = false,
): Sequence<KoPropertyDeclarationImpl> = KoDeclarationProviderUtil.getKoDeclarations(declarations(), modifiers, includeNested, includeLocal)
): Sequence<KoPropertyDeclaration> = KoDeclarationProviderUtil.getKoDeclarations(declarations(), modifiers, includeNested, includeLocal)

fun containsProperty(
name: String,
@@ -101,7 +101,7 @@ interface KoFunctionProvider : KoDeclarationProvider {
modifiers: List<KoModifier> = emptyList(),
includeNested: Boolean = false,
includeLocal: Boolean = false,
): Sequence<KoFunctionDeclarationImpl> = KoDeclarationProviderUtil.getKoDeclarations(declarations(), modifiers, includeNested, includeLocal)
): Sequence<KoFunctionDeclaration> = KoDeclarationProviderUtil.getKoDeclarations(declarations(), modifiers, includeNested, includeLocal)

fun containsFunction(
name: String,
Original file line number Diff line number Diff line change
@@ -4,7 +4,8 @@ import com.lemonappdev.konsist.api.KoModifier
import com.lemonappdev.konsist.core.declaration.KoClassDeclarationImpl
import com.lemonappdev.konsist.core.declaration.KoCompanionObjectDeclarationImpl
import com.lemonappdev.konsist.core.declaration.KoComplexDeclarationImpl
import com.lemonappdev.konsist.core.declaration.KoDeclarationImpl
import com.lemonappdev.konsist.core.declaration.KoDeclaration
import com.lemonappdev.konsist.core.declaration.KoFunctionDeclaration
import com.lemonappdev.konsist.core.declaration.KoFunctionDeclarationImpl
import com.lemonappdev.konsist.core.declaration.KoInterfaceDeclarationImpl
import com.lemonappdev.konsist.core.declaration.KoObjectDeclarationImpl
@@ -17,8 +18,8 @@ import org.jetbrains.kotlin.psi.KtObjectDeclaration
import org.jetbrains.kotlin.psi.KtProperty
import org.jetbrains.kotlin.psi.psiUtil.getTextWithLocation

object KoDeclarationProviderUtil {
inline fun <reified T : KoDeclarationImpl> getKoDeclarations(
internal object KoDeclarationProviderUtil {
inline fun <reified T : KoDeclaration> getKoDeclarations(
ktDeclarationContainer: KtDeclarationContainer,
modifiers: List<KoModifier>,
includeNested: Boolean = false,
@@ -48,8 +49,8 @@ object KoDeclarationProviderUtil {
return getKoDeclarations(declarations, modifiers, includeNested, includeLocal)
}

inline fun <reified T : KoDeclarationImpl> getKoDeclarations(
declarations: Sequence<KoDeclarationImpl>,
inline fun <reified T : KoDeclaration> getKoDeclarations(
declarations: Sequence<KoDeclaration>,
modifiers: List<KoModifier>,
includeNested: Boolean = false,
includeLocal: Boolean = false,
@@ -93,9 +94,9 @@ object KoDeclarationProviderUtil {
return result.filterIsInstance<T>()
}

fun localDeclarations(koFunctions: Sequence<KoFunctionDeclarationImpl>): Sequence<KoDeclarationImpl> {
val localDeclarations = mutableListOf<KoDeclarationImpl>()
val nestedDeclarations = mutableListOf<KoDeclarationImpl>()
fun localDeclarations(koFunctions: Sequence<KoFunctionDeclaration>): Sequence<KoDeclaration> {
val localDeclarations = mutableListOf<KoDeclaration>()
val nestedDeclarations = mutableListOf<KoDeclaration>()

koFunctions.forEach { koFunction ->
koFunction.localDeclarations().forEach {
Original file line number Diff line number Diff line change
@@ -1,30 +1,30 @@
package com.lemonappdev.konsist.core.declaration.provider

import com.lemonappdev.konsist.core.declaration.KoClassDeclarationImpl
import com.lemonappdev.konsist.core.declaration.KoDeclarationImpl
import com.lemonappdev.konsist.core.declaration.KoFunctionDeclarationImpl
import com.lemonappdev.konsist.core.declaration.KoPropertyDeclarationImpl
import com.lemonappdev.konsist.core.declaration.KoClassDeclaration
import com.lemonappdev.konsist.core.declaration.KoDeclaration
import com.lemonappdev.konsist.core.declaration.KoFunctionDeclaration
import com.lemonappdev.konsist.core.declaration.KoPropertyDeclaration

interface KoLocalDeclarationProvider {
fun localDeclarations(): Sequence<KoDeclarationImpl>
fun localDeclarations(): Sequence<KoDeclaration>

fun containsLocalDeclarations(name: String) = localDeclarations().any { it.name == name }
}

interface KoLocalClassProvider : KoLocalDeclarationProvider {
fun localClasses(): Sequence<KoClassDeclarationImpl> = localDeclarations().filterIsInstance<KoClassDeclarationImpl>()
fun localClasses(): Sequence<KoClassDeclaration> = localDeclarations().filterIsInstance<KoClassDeclaration>()

fun containsLocalClass(name: String): Boolean = localClasses().any { it.name == name }
}

interface KoLocalPropertyProvider : KoLocalDeclarationProvider {
fun localProperties(): Sequence<KoPropertyDeclarationImpl> = localDeclarations().filterIsInstance<KoPropertyDeclarationImpl>()
fun localProperties(): Sequence<KoPropertyDeclaration> = localDeclarations().filterIsInstance<KoPropertyDeclaration>()

fun containsLocalProperty(name: String): Boolean = localProperties().any { it.name == name }
}

interface KoLocalFunctionProvider : KoLocalDeclarationProvider {
fun localFunctions(): Sequence<KoFunctionDeclarationImpl> = localDeclarations().filterIsInstance<KoFunctionDeclarationImpl>()
fun localFunctions(): Sequence<KoFunctionDeclaration> = localDeclarations().filterIsInstance<KoFunctionDeclaration>()

fun containsLocalFunction(name: String): Boolean = localFunctions().any { it.name == name }
}