diff --git a/README.md b/README.md index 3c22c4ca..0f1fc405 100644 --- a/README.md +++ b/README.md @@ -64,9 +64,6 @@ modify the target file. The script filename should end with `.transform.kts`. ```kts -import ktast.ast.Node -import ktcodeshift.* - transform { fileInfo -> Ktcodeshift .parse(fileInfo.source) @@ -86,6 +83,16 @@ The following API documents will be helpful to write a transform file. - [API document of ktcodeshift](https://orangain.github.io/ktcodeshift/latest/api/ktcodeshift-dsl/ktcodeshift/index.html) - [API document of ktast](https://orangain.github.io/ktast/latest/api/ast/ktast.ast/index.html) +### Implicit imports + +The following imports are implicitly available in the transform file: + +```kts +import ktast.ast.* +import ktast.builder.* +import ktcodeshift.* +``` + ### Annotations The following annotations can be used in the transform file: @@ -111,9 +118,6 @@ their input and output. You can dump the AST of a Kotlin file using the [ktast.ast.Dumper](https://orangain.github.io/ktast/latest/api/ast/ktast.ast/-dumper/index.html). This is useful to understand the structure of the AST. For example: ```kts -import ktast.ast.* -import ktcodeshift.* - transform { fileInfo -> Ktcodeshift .parse(fileInfo.source) diff --git a/ktcodeshift-cli/build.gradle.kts b/ktcodeshift-cli/build.gradle.kts index 9ab7d025..870d2d2b 100644 --- a/ktcodeshift-cli/build.gradle.kts +++ b/ktcodeshift-cli/build.gradle.kts @@ -22,7 +22,7 @@ dependencies { implementation("info.picocli:picocli:4.7.6") implementation(project(":ktcodeshift-dsl")) // the script definition module implementation("org.jetbrains.kotlin:kotlin-test") - testImplementation("com.github.orangain.ktast:ast-psi:0.9.4") + testImplementation("com.github.orangain.ktast:ast-psi:0.10.0") } tasks.withType { diff --git a/ktcodeshift-cli/src/test/resources/examples/Annotations.transform.kts b/ktcodeshift-cli/src/test/resources/examples/Annotations.transform.kts index 7d8eae5b..453b905e 100644 --- a/ktcodeshift-cli/src/test/resources/examples/Annotations.transform.kts +++ b/ktcodeshift-cli/src/test/resources/examples/Annotations.transform.kts @@ -1,8 +1,5 @@ @file:Import("./common.transform.kts") -import ktast.ast.Node -import ktcodeshift.* - transform { fileInfo -> "\"\"\"\n" + renderHtml() + "\"\"\"\n" } diff --git a/ktcodeshift-cli/src/test/resources/examples/FlattenList.transform.kts b/ktcodeshift-cli/src/test/resources/examples/FlattenList.transform.kts index 4f1190fb..bf4721df 100644 --- a/ktcodeshift-cli/src/test/resources/examples/FlattenList.transform.kts +++ b/ktcodeshift-cli/src/test/resources/examples/FlattenList.transform.kts @@ -1,6 +1,3 @@ -import ktast.ast.Node -import ktcodeshift.* - transform { fileInfo -> Ktcodeshift .parse(fileInfo.source) diff --git a/ktcodeshift-cli/src/test/resources/examples/GenerateBuilders.transform.kts b/ktcodeshift-cli/src/test/resources/examples/GenerateBuilders.transform.kts index 943fed9c..cb468e5f 100644 --- a/ktcodeshift-cli/src/test/resources/examples/GenerateBuilders.transform.kts +++ b/ktcodeshift-cli/src/test/resources/examples/GenerateBuilders.transform.kts @@ -5,8 +5,6 @@ ktcodeshift -t ktcodeshift-cli/src/test/resources/examples/GenerateBuilders.tran */ -import ktast.ast.* -import ktcodeshift.* import org.jetbrains.kotlin.util.capitalizeDecapitalize.decapitalizeSmart import java.nio.charset.StandardCharsets diff --git a/ktcodeshift-cli/src/test/resources/examples/Identity.transform.kts b/ktcodeshift-cli/src/test/resources/examples/Identity.transform.kts index 9ec34556..76c31d2e 100644 --- a/ktcodeshift-cli/src/test/resources/examples/Identity.transform.kts +++ b/ktcodeshift-cli/src/test/resources/examples/Identity.transform.kts @@ -1,6 +1,3 @@ -import ktast.ast.Dumper -import ktcodeshift.* - transform { fileInfo -> Ktcodeshift .parse(fileInfo.source) diff --git a/ktcodeshift-cli/src/test/resources/examples/JUnit4To5.transform.kts b/ktcodeshift-cli/src/test/resources/examples/JUnit4To5.transform.kts index 1661cd97..c71bcbd2 100644 --- a/ktcodeshift-cli/src/test/resources/examples/JUnit4To5.transform.kts +++ b/ktcodeshift-cli/src/test/resources/examples/JUnit4To5.transform.kts @@ -1,6 +1,3 @@ -import ktast.ast.Node -import ktcodeshift.* - val annotationNameMap = mapOf( "Before" to "BeforeEach", "After" to "AfterEach", diff --git a/ktcodeshift-cli/src/test/resources/examples/RenameVariable.transform.kts b/ktcodeshift-cli/src/test/resources/examples/RenameVariable.transform.kts index 61d4c124..af566f56 100644 --- a/ktcodeshift-cli/src/test/resources/examples/RenameVariable.transform.kts +++ b/ktcodeshift-cli/src/test/resources/examples/RenameVariable.transform.kts @@ -1,6 +1,3 @@ -import ktast.ast.Node -import ktcodeshift.* - transform { fileInfo -> Ktcodeshift .parse(fileInfo.source) diff --git a/ktcodeshift-cli/src/test/resources/examples/SortWhenBranches.transform.kts b/ktcodeshift-cli/src/test/resources/examples/SortWhenBranches.transform.kts index e4e8b1b0..eb00702a 100644 --- a/ktcodeshift-cli/src/test/resources/examples/SortWhenBranches.transform.kts +++ b/ktcodeshift-cli/src/test/resources/examples/SortWhenBranches.transform.kts @@ -5,8 +5,6 @@ ktcodeshift -t ktcodeshift-cli/src/test/resources/examples/SortWhenBranches.tran */ -import ktast.ast.Node -import ktcodeshift.* import java.nio.charset.StandardCharsets transform { fileInfo -> diff --git a/ktcodeshift-dsl/build.gradle.kts b/ktcodeshift-dsl/build.gradle.kts index 88eb6391..7d5fd107 100644 --- a/ktcodeshift-dsl/build.gradle.kts +++ b/ktcodeshift-dsl/build.gradle.kts @@ -12,7 +12,7 @@ dependencies { // Use the Kotlin JDK 8 standard library. implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8") - implementation("com.github.orangain.ktast:ast-psi:0.9.4") + implementation("com.github.orangain.ktast:ast-psi:0.10.0") implementation("org.jetbrains.kotlin:kotlin-scripting-common") implementation("org.jetbrains.kotlin:kotlin-scripting-jvm") implementation("org.jetbrains.kotlin:kotlin-scripting-dependencies") diff --git a/ktcodeshift-dsl/src/main/kotlin/ktcodeshift/Builder.kt b/ktcodeshift-dsl/src/main/kotlin/ktcodeshift/Builder.kt deleted file mode 100644 index 0060a2c3..00000000 --- a/ktcodeshift-dsl/src/main/kotlin/ktcodeshift/Builder.kt +++ /dev/null @@ -1,1144 +0,0 @@ -package ktcodeshift - -import ktast.ast.Node -import ktast.ast.NodeSupplement - -/** - * Creates a new [Node.KotlinFile] instance. - */ -fun kotlinFile( - annotationSets: List = listOf(), - packageDirective: Node.PackageDirective? = null, - importDirectives: List = listOf(), - declarations: List = listOf(), - supplement: NodeSupplement = NodeSupplement() -) = Node.KotlinFile( - annotationSets = annotationSets, - packageDirective = packageDirective, - importDirectives = importDirectives, - declarations = declarations, - supplement = supplement -) - -/** - * Creates a new [Node.KotlinScript] instance. - */ -fun kotlinScript( - annotationSets: List = listOf(), - packageDirective: Node.PackageDirective? = null, - importDirectives: List = listOf(), - expressions: List = listOf(), - supplement: NodeSupplement = NodeSupplement() -) = Node.KotlinScript( - annotationSets = annotationSets, - packageDirective = packageDirective, - importDirectives = importDirectives, - expressions = expressions, - supplement = supplement -) - -/** - * Creates a new [Node.PackageDirective] instance. - */ -fun packageDirective( - names: List = listOf(), - supplement: NodeSupplement = NodeSupplement() -) = Node.PackageDirective(names = names, supplement = supplement) - -/** - * Creates a new [Node.ImportDirective] instance. - */ -fun importDirective( - names: List = listOf(), - aliasName: Node.Expression.NameExpression? = null, - supplement: NodeSupplement = NodeSupplement() -) = Node.ImportDirective(names = names, aliasName = aliasName, supplement = supplement) - -/** - * Creates a new [Node.Statement.ForStatement] instance. - */ -fun forStatement( - lPar: Node.Keyword.LPar = Node.Keyword.LPar(), - loopParameter: Node.LambdaParameter, - inKeyword: Node.Keyword.In = Node.Keyword.In(), - loopRange: Node.Expression, - rPar: Node.Keyword.RPar = Node.Keyword.RPar(), - body: Node.Expression, - supplement: NodeSupplement = NodeSupplement() -) = Node.Statement.ForStatement( - lPar = lPar, - loopParameter = loopParameter, - inKeyword = inKeyword, - loopRange = loopRange, - rPar = rPar, - body = body, - supplement = supplement -) - -/** - * Creates a new [Node.Statement.WhileStatement] instance. - */ -fun whileStatement( - lPar: Node.Keyword.LPar = Node.Keyword.LPar(), - condition: Node.Expression, - rPar: Node.Keyword.RPar = Node.Keyword.RPar(), - body: Node.Expression, - supplement: NodeSupplement = NodeSupplement() -) = Node.Statement.WhileStatement(lPar = lPar, condition = condition, rPar = rPar, body = body, supplement = supplement) - -/** - * Creates a new [Node.Statement.DoWhileStatement] instance. - */ -fun doWhileStatement( - body: Node.Expression, - lPar: Node.Keyword.LPar = Node.Keyword.LPar(), - condition: Node.Expression, - rPar: Node.Keyword.RPar = Node.Keyword.RPar(), - supplement: NodeSupplement = NodeSupplement() -) = Node.Statement.DoWhileStatement( - body = body, - lPar = lPar, - condition = condition, - rPar = rPar, - supplement = supplement -) - -/** - * Creates a new [Node.Declaration.ClassOrObject.ConstructorClassParent] instance. - */ -fun constructorClassParent( - type: Node.Type.SimpleType, - lPar: Node.Keyword.LPar = Node.Keyword.LPar(), - arguments: List = listOf(), - rPar: Node.Keyword.RPar = Node.Keyword.RPar(), - supplement: NodeSupplement = NodeSupplement() -) = Node.Declaration.ClassOrObject.ConstructorClassParent( - type = type, - lPar = lPar, - arguments = arguments, - rPar = rPar, - supplement = supplement -) - -/** - * Creates a new [Node.Declaration.ClassOrObject.DelegationClassParent] instance. - */ -fun delegationClassParent(type: Node.Type, expression: Node.Expression, supplement: NodeSupplement = NodeSupplement()) = - Node.Declaration.ClassOrObject.DelegationClassParent(type = type, expression = expression, supplement = supplement) - -/** - * Creates a new [Node.Declaration.ClassOrObject.TypeClassParent] instance. - */ -fun typeClassParent(type: Node.Type, supplement: NodeSupplement = NodeSupplement()) = - Node.Declaration.ClassOrObject.TypeClassParent(type = type, supplement = supplement) - -/** - * Creates a new [Node.Declaration.ClassOrObject.ClassBody] instance. - */ -fun classBody( - enumEntries: List = listOf(), - declarations: List = listOf(), - supplement: NodeSupplement = NodeSupplement() -) = Node.Declaration.ClassOrObject.ClassBody( - enumEntries = enumEntries, - declarations = declarations, - supplement = supplement -) - -/** - * Creates a new [Node.Declaration.ClassOrObject.ClassBody.EnumEntry] instance. - */ -fun enumEntry( - modifiers: List = listOf(), - name: Node.Expression.NameExpression, - lPar: Node.Keyword.LPar? = null, - arguments: List = listOf(), - rPar: Node.Keyword.RPar? = null, - classBody: Node.Declaration.ClassOrObject.ClassBody? = null, - supplement: NodeSupplement = NodeSupplement() -) = Node.Declaration.ClassOrObject.ClassBody.EnumEntry( - modifiers = modifiers, - name = name, - lPar = if (arguments.isNotEmpty()) lPar ?: Node.Keyword.LPar() else lPar, - arguments = arguments, - rPar = if (arguments.isNotEmpty()) rPar ?: Node.Keyword.RPar() else rPar, - classBody = classBody, - supplement = supplement -) - -/** - * Creates a new [Node.Declaration.ClassOrObject.ClassBody.Initializer] instance. - */ -fun initializer(block: Node.Expression.BlockExpression, supplement: NodeSupplement = NodeSupplement()) = - Node.Declaration.ClassOrObject.ClassBody.Initializer(block = block, supplement = supplement) - -/** - * Creates a new [Node.Declaration.ClassOrObject.ClassBody.SecondaryConstructor] instance. - */ -fun secondaryConstructor( - modifiers: List = listOf(), - constructorKeyword: Node.Keyword.Constructor = Node.Keyword.Constructor(), - lPar: Node.Keyword.LPar = Node.Keyword.LPar(), - parameters: List = listOf(), - rPar: Node.Keyword.RPar = Node.Keyword.RPar(), - delegationCall: Node.Expression.CallExpression? = null, - block: Node.Expression.BlockExpression? = null, - supplement: NodeSupplement = NodeSupplement() -) = Node.Declaration.ClassOrObject.ClassBody.SecondaryConstructor( - modifiers = modifiers, - constructorKeyword = constructorKeyword, - lPar = lPar, - parameters = parameters, - rPar = rPar, - delegationCall = delegationCall, - block = block, - supplement = supplement -) - -/** - * Creates a new [Node.Declaration.ClassDeclaration] instance. - */ -fun classDeclaration( - modifiers: List = listOf(), - declarationKeyword: Node.Declaration.ClassDeclaration.ClassOrInterfaceKeyword, - name: Node.Expression.NameExpression, - lAngle: Node.Keyword.Less? = null, - typeParameters: List = listOf(), - rAngle: Node.Keyword.Greater? = null, - primaryConstructor: Node.Declaration.ClassDeclaration.PrimaryConstructor? = null, - parents: List = listOf(), - typeConstraintSet: Node.PostModifier.TypeConstraintSet? = null, - body: Node.Declaration.ClassOrObject.ClassBody? = null, - supplement: NodeSupplement = NodeSupplement() -) = Node.Declaration.ClassDeclaration( - modifiers = modifiers, - declarationKeyword = declarationKeyword, - name = name, - lAngle = if (typeParameters.isNotEmpty()) lAngle ?: Node.Keyword.Less() else lAngle, - typeParameters = typeParameters, - rAngle = if (typeParameters.isNotEmpty()) rAngle ?: Node.Keyword.Greater() else rAngle, - primaryConstructor = primaryConstructor, - parents = parents, - typeConstraintSet = typeConstraintSet, - body = body, - supplement = supplement -) - -/** - * Creates a new [Node.Declaration.ClassDeclaration.PrimaryConstructor] instance. - */ -fun primaryConstructor( - modifiers: List = listOf(), - constructorKeyword: Node.Keyword.Constructor? = null, - lPar: Node.Keyword.LPar = Node.Keyword.LPar(), - parameters: List = listOf(), - rPar: Node.Keyword.RPar = Node.Keyword.RPar(), - supplement: NodeSupplement = NodeSupplement() -) = Node.Declaration.ClassDeclaration.PrimaryConstructor( - modifiers = modifiers, - constructorKeyword = constructorKeyword, - lPar = lPar, - parameters = parameters, - rPar = rPar, - supplement = supplement -) - -/** - * Creates a new [Node.Declaration.ObjectDeclaration] instance. - */ -fun objectDeclaration( - modifiers: List = listOf(), - declarationKeyword: Node.Keyword.Object = Node.Keyword.Object(), - name: Node.Expression.NameExpression? = null, - parents: List = listOf(), - body: Node.Declaration.ClassOrObject.ClassBody? = null, - supplement: NodeSupplement = NodeSupplement() -) = Node.Declaration.ObjectDeclaration( - modifiers = modifiers, - declarationKeyword = declarationKeyword, - name = name, - parents = parents, - body = body, - supplement = supplement -) - -/** - * Creates a new [Node.Declaration.FunctionDeclaration] instance. - */ -fun functionDeclaration( - modifiers: List = listOf(), - lAngle: Node.Keyword.Less? = null, - typeParameters: List = listOf(), - rAngle: Node.Keyword.Greater? = null, - receiverType: Node.Type? = null, - name: Node.Expression.NameExpression? = null, - lPar: Node.Keyword.LPar = Node.Keyword.LPar(), - parameters: List = listOf(), - rPar: Node.Keyword.RPar = Node.Keyword.RPar(), - returnType: Node.Type? = null, - postModifiers: List = listOf(), - body: Node.Expression? = null, - supplement: NodeSupplement = NodeSupplement() -) = Node.Declaration.FunctionDeclaration( - modifiers = modifiers, - lAngle = if (typeParameters.isNotEmpty()) lAngle ?: Node.Keyword.Less() else lAngle, - typeParameters = typeParameters, - rAngle = if (typeParameters.isNotEmpty()) rAngle ?: Node.Keyword.Greater() else rAngle, - receiverType = receiverType, - name = name, - lPar = lPar, - parameters = parameters, - rPar = rPar, - returnType = returnType, - postModifiers = postModifiers, - body = body, - supplement = supplement -) - -/** - * Creates a new [Node.Declaration.PropertyDeclaration] instance. - */ -fun propertyDeclaration( - modifiers: List = listOf(), - valOrVarKeyword: Node.Keyword.ValOrVarKeyword, - lAngle: Node.Keyword.Less? = null, - typeParameters: List = listOf(), - rAngle: Node.Keyword.Greater? = null, - receiverType: Node.Type? = null, - lPar: Node.Keyword.LPar? = null, - variables: List, - rPar: Node.Keyword.RPar? = null, - typeConstraintSet: Node.PostModifier.TypeConstraintSet? = null, - initializerExpression: Node.Expression? = null, - delegateExpression: Node.Expression? = null, - accessors: List = listOf(), - supplement: NodeSupplement = NodeSupplement() -) = Node.Declaration.PropertyDeclaration( - modifiers = modifiers, - valOrVarKeyword = valOrVarKeyword, - lAngle = if (typeParameters.isNotEmpty()) lAngle ?: Node.Keyword.Less() else lAngle, - typeParameters = typeParameters, - rAngle = if (typeParameters.isNotEmpty()) rAngle ?: Node.Keyword.Greater() else rAngle, - receiverType = receiverType, - lPar = lPar ?: Node.Keyword.LPar(), - variables = variables, - rPar = rPar ?: Node.Keyword.RPar(), - typeConstraintSet = typeConstraintSet, - initializerExpression = initializerExpression, - delegateExpression = delegateExpression, - accessors = accessors, - supplement = supplement -) - -/** - * Creates a new [Node.Declaration.PropertyDeclaration] instance. - */ -fun propertyDeclaration( - modifiers: List = listOf(), - valOrVarKeyword: Node.Keyword.ValOrVarKeyword, - lAngle: Node.Keyword.Less? = null, - typeParameters: List = listOf(), - rAngle: Node.Keyword.Greater? = null, - receiverType: Node.Type? = null, - variable: Node.Variable, - typeConstraintSet: Node.PostModifier.TypeConstraintSet? = null, - initializerExpression: Node.Expression? = null, - delegateExpression: Node.Expression? = null, - accessors: List = listOf(), - supplement: NodeSupplement = NodeSupplement() -) = Node.Declaration.PropertyDeclaration( - modifiers = modifiers, - valOrVarKeyword = valOrVarKeyword, - lAngle = if (typeParameters.isNotEmpty()) lAngle ?: Node.Keyword.Less() else lAngle, - typeParameters = typeParameters, - rAngle = if (typeParameters.isNotEmpty()) rAngle ?: Node.Keyword.Greater() else rAngle, - receiverType = receiverType, - lPar = null, - variables = listOf(variable), - rPar = null, - typeConstraintSet = typeConstraintSet, - initializerExpression = initializerExpression, - delegateExpression = delegateExpression, - accessors = accessors, - supplement = supplement -) - -/** - * Creates a new [Node.Declaration.PropertyDeclaration.Getter] instance. - */ -fun getter( - modifiers: List = listOf(), - lPar: Node.Keyword.LPar? = null, - rPar: Node.Keyword.RPar? = null, - type: Node.Type? = null, - postModifiers: List = listOf(), - body: Node.Expression? = null, - supplement: NodeSupplement = NodeSupplement() -) = Node.Declaration.PropertyDeclaration.Getter( - modifiers = modifiers, - lPar = if (body != null) lPar ?: Node.Keyword.LPar() else lPar, - rPar = if (body != null) rPar ?: Node.Keyword.RPar() else rPar, - type = type, - postModifiers = postModifiers, - body = body, - supplement = supplement -) - -/** - * Creates a new [Node.Declaration.PropertyDeclaration.Setter] instance. - */ -fun setter( - modifiers: List = listOf(), - lPar: Node.Keyword.LPar? = null, - parameter: Node.FunctionParameter? = null, - rPar: Node.Keyword.RPar? = null, - postModifiers: List = listOf(), - body: Node.Expression? = null, - supplement: NodeSupplement = NodeSupplement() -) = Node.Declaration.PropertyDeclaration.Setter( - modifiers = modifiers, - lPar = if (parameter != null) lPar ?: Node.Keyword.LPar() else lPar, - parameter = parameter, - rPar = if (parameter != null) rPar ?: Node.Keyword.RPar() else rPar, - postModifiers = postModifiers, - body = body, - supplement = supplement -) - -/** - * Creates a new [Node.Declaration.TypeAliasDeclaration] instance. - */ -fun typeAliasDeclaration( - modifiers: List = listOf(), - name: Node.Expression.NameExpression, - lAngle: Node.Keyword.Less? = null, - typeParameters: List = listOf(), - rAngle: Node.Keyword.Greater? = null, - type: Node.Type, - supplement: NodeSupplement = NodeSupplement() -) = Node.Declaration.TypeAliasDeclaration( - modifiers = modifiers, - name = name, - lAngle = if (typeParameters.isNotEmpty()) lAngle ?: Node.Keyword.Less() else lAngle, - typeParameters = typeParameters, - rAngle = if (typeParameters.isNotEmpty()) rAngle ?: Node.Keyword.Greater() else rAngle, - type = type, - supplement = supplement -) - -/** - * Creates a new [Node.Type.ParenthesizedType] instance. - */ -fun parenthesizedType( - modifiers: List = listOf(), - lPar: Node.Keyword.LPar = Node.Keyword.LPar(), - innerType: Node.Type, - rPar: Node.Keyword.RPar = Node.Keyword.RPar(), - supplement: NodeSupplement = NodeSupplement() -) = Node.Type.ParenthesizedType( - modifiers = modifiers, - lPar = lPar, - innerType = innerType, - rPar = rPar, - supplement = supplement -) - -/** - * Creates a new [Node.Type.NullableType] instance. - */ -fun nullableType( - modifiers: List = listOf(), - innerType: Node.Type, - questionMark: Node.Keyword.Question = Node.Keyword.Question(), - supplement: NodeSupplement = NodeSupplement() -) = Node.Type.NullableType( - modifiers = modifiers, - innerType = innerType, - questionMark = questionMark, - supplement = supplement -) - -/** - * Creates a new [Node.Type.SimpleType] instance. - */ -fun simpleType( - modifiers: List = listOf(), - qualifiers: List = listOf(), - name: Node.Expression.NameExpression, - lAngle: Node.Keyword.Less? = null, - typeArguments: List = listOf(), - rAngle: Node.Keyword.Greater? = null, - supplement: NodeSupplement = NodeSupplement() -) = Node.Type.SimpleType( - modifiers = modifiers, - qualifiers = qualifiers, - name = name, - lAngle = lAngle, - typeArguments = typeArguments, - rAngle = rAngle, - supplement = supplement -) - -/** - * Creates a new [Node.Type.SimpleType.SimpleTypeQualifier] instance. - */ -fun simpleTypeQualifier( - name: Node.Expression.NameExpression, - lAngle: Node.Keyword.Less? = null, - typeArguments: List = listOf(), - rAngle: Node.Keyword.Greater? = null, - supplement: NodeSupplement = NodeSupplement() -) = Node.Type.SimpleType.SimpleTypeQualifier( - name = name, - lAngle = lAngle, - typeArguments = typeArguments, - rAngle = rAngle, - supplement = supplement -) - -/** - * Creates a new [Node.Type.DynamicType] instance. - */ -fun dynamicType(modifiers: List = listOf(), supplement: NodeSupplement = NodeSupplement()) = - Node.Type.DynamicType(modifiers = modifiers, supplement = supplement) - -/** - * Creates a new [Node.Type.FunctionType] instance. - */ -fun functionType( - modifiers: List = listOf(), - contextReceiver: Node.ContextReceiver? = null, - receiverType: Node.Type? = null, - lPar: Node.Keyword.LPar = Node.Keyword.LPar(), - parameters: List = listOf(), - rPar: Node.Keyword.RPar = Node.Keyword.RPar(), - returnType: Node.Type, - supplement: NodeSupplement = NodeSupplement() -) = Node.Type.FunctionType( - modifiers = modifiers, - contextReceiver = contextReceiver, - receiverType = receiverType, - lPar = lPar, - parameters = parameters, - rPar = rPar, - returnType = returnType, - supplement = supplement -) - -/** - * Creates a new [Node.Type.FunctionType.FunctionTypeParameter] instance. - */ -fun functionTypeParameter( - name: Node.Expression.NameExpression? = null, - type: Node.Type, - supplement: NodeSupplement = NodeSupplement() -) = Node.Type.FunctionType.FunctionTypeParameter(name = name, type = type, supplement = supplement) - -/** - * Creates a new [Node.Expression.IfExpression] instance. - */ -fun ifExpression( - lPar: Node.Keyword.LPar = Node.Keyword.LPar(), - condition: Node.Expression, - rPar: Node.Keyword.RPar = Node.Keyword.RPar(), - body: Node.Expression, - elseBody: Node.Expression? = null, - supplement: NodeSupplement = NodeSupplement() -) = Node.Expression.IfExpression( - lPar = lPar, - condition = condition, - rPar = rPar, - body = body, - elseBody = elseBody, - supplement = supplement -) - -/** - * Creates a new [Node.Expression.TryExpression] instance. - */ -fun tryExpression( - block: Node.Expression.BlockExpression, - catchClauses: List = listOf(), - finallyBlock: Node.Expression.BlockExpression? = null, - supplement: NodeSupplement = NodeSupplement() -) = Node.Expression.TryExpression( - block = block, - catchClauses = catchClauses, - finallyBlock = finallyBlock, - supplement = supplement -) - -/** - * Creates a new [Node.Expression.TryExpression.CatchClause] instance. - */ -fun catchClause( - lPar: Node.Keyword.LPar = Node.Keyword.LPar(), - parameters: List = listOf(), - rPar: Node.Keyword.RPar = Node.Keyword.RPar(), - block: Node.Expression.BlockExpression, - supplement: NodeSupplement = NodeSupplement() -) = Node.Expression.TryExpression.CatchClause( - lPar = lPar, - parameters = parameters, - rPar = rPar, - block = block, - supplement = supplement -) - -/** - * Creates a new [Node.Expression.WhenExpression] instance. - */ -fun whenExpression( - whenKeyword: Node.Keyword.When = Node.Keyword.When(), - subject: Node.Expression.WhenExpression.WhenSubject? = null, - branches: List = listOf(), - supplement: NodeSupplement = NodeSupplement() -) = Node.Expression.WhenExpression( - whenKeyword = whenKeyword, - subject = subject, - branches = branches, - supplement = supplement -) - -/** - * Creates a new [Node.Expression.WhenExpression.WhenSubject] instance. - */ -fun whenSubject( - lPar: Node.Keyword.LPar = Node.Keyword.LPar(), - annotationSets: List = listOf(), - variable: Node.Variable? = null, - expression: Node.Expression, - rPar: Node.Keyword.RPar = Node.Keyword.RPar(), - supplement: NodeSupplement = NodeSupplement() -) = Node.Expression.WhenExpression.WhenSubject( - lPar = lPar, - annotationSets = annotationSets, - variable = variable, - expression = expression, - rPar = rPar, - supplement = supplement -) - -/** - * Creates a new [Node.Expression.WhenExpression.ConditionalWhenBranch] instance. - */ -fun conditionalWhenBranch( - conditions: List = listOf(), - arrow: Node.Keyword.Arrow = Node.Keyword.Arrow(), - body: Node.Expression, - supplement: NodeSupplement = NodeSupplement() -) = Node.Expression.WhenExpression.ConditionalWhenBranch( - conditions = conditions, - arrow = arrow, - body = body, - supplement = supplement -) - -/** - * Creates a new [Node.Expression.WhenExpression.ElseWhenBranch] instance. - */ -fun elseWhenBranch( - arrow: Node.Keyword.Arrow = Node.Keyword.Arrow(), - body: Node.Expression, - supplement: NodeSupplement = NodeSupplement() -) = Node.Expression.WhenExpression.ElseWhenBranch(arrow = arrow, body = body, supplement = supplement) - -/** - * Creates a new [Node.Expression.WhenExpression.ExpressionWhenCondition] instance. - */ -fun expressionWhenCondition(expression: Node.Expression, supplement: NodeSupplement = NodeSupplement()) = - Node.Expression.WhenExpression.ExpressionWhenCondition(expression = expression, supplement = supplement) - -/** - * Creates a new [Node.Expression.WhenExpression.RangeWhenCondition] instance. - */ -fun rangeWhenCondition( - operator: Node.Expression.WhenExpression.WhenConditionRangeOperator, - expression: Node.Expression, - supplement: NodeSupplement = NodeSupplement() -) = Node.Expression.WhenExpression.RangeWhenCondition( - operator = operator, - expression = expression, - supplement = supplement -) - -/** - * Creates a new [Node.Expression.WhenExpression.TypeWhenCondition] instance. - */ -fun typeWhenCondition( - operator: Node.Expression.WhenExpression.WhenConditionTypeOperator, - type: Node.Type, - supplement: NodeSupplement = NodeSupplement() -) = Node.Expression.WhenExpression.TypeWhenCondition(operator = operator, type = type, supplement = supplement) - -/** - * Creates a new [Node.Expression.ThrowExpression] instance. - */ -fun throwExpression(expression: Node.Expression, supplement: NodeSupplement = NodeSupplement()) = - Node.Expression.ThrowExpression(expression = expression, supplement = supplement) - -/** - * Creates a new [Node.Expression.ReturnExpression] instance. - */ -fun returnExpression( - label: Node.Expression.NameExpression? = null, - expression: Node.Expression? = null, - supplement: NodeSupplement = NodeSupplement() -) = Node.Expression.ReturnExpression(label = label, expression = expression, supplement = supplement) - -/** - * Creates a new [Node.Expression.ContinueExpression] instance. - */ -fun continueExpression(label: Node.Expression.NameExpression? = null, supplement: NodeSupplement = NodeSupplement()) = - Node.Expression.ContinueExpression(label = label, supplement = supplement) - -/** - * Creates a new [Node.Expression.BreakExpression] instance. - */ -fun breakExpression(label: Node.Expression.NameExpression? = null, supplement: NodeSupplement = NodeSupplement()) = - Node.Expression.BreakExpression(label = label, supplement = supplement) - -/** - * Creates a new [Node.Expression.BlockExpression] instance. - */ -fun blockExpression(statements: List = listOf(), supplement: NodeSupplement = NodeSupplement()) = - Node.Expression.BlockExpression(statements = statements, supplement = supplement) - -/** - * Creates a new [Node.Expression.BlockExpression] instance. - */ -fun blockExpression(vararg statements: Node.Statement) = blockExpression(statements.toList()) - -/** - * Creates a new [Node.Expression.CallExpression] instance. - */ -fun callExpression( - calleeExpression: Node.Expression, - lAngle: Node.Keyword.Less? = null, - typeArguments: List = listOf(), - rAngle: Node.Keyword.Greater? = null, - lPar: Node.Keyword.LPar? = null, - arguments: List = listOf(), - rPar: Node.Keyword.RPar? = null, - lambdaArgument: Node.Expression? = null, - supplement: NodeSupplement = NodeSupplement() -) = Node.Expression.CallExpression( - calleeExpression = calleeExpression, - lAngle = if (typeArguments.isNotEmpty()) lAngle ?: Node.Keyword.Less() else lAngle, - typeArguments = typeArguments, - rAngle = if (typeArguments.isNotEmpty()) rAngle ?: Node.Keyword.Greater() else rAngle, - lPar = if (arguments.isNotEmpty() || lambdaArgument == null) lPar ?: Node.Keyword.LPar() else lPar, - arguments = arguments, - rPar = if (arguments.isNotEmpty() || lambdaArgument == null) rPar ?: Node.Keyword.RPar() else rPar, - lambdaArgument = lambdaArgument, - supplement = supplement -) - -/** - * Creates a new [Node.Expression.LambdaExpression] instance. - */ -fun lambdaExpression( - parameters: List = listOf(), - arrow: Node.Keyword.Arrow? = null, - statements: List = listOf(), - supplement: NodeSupplement = NodeSupplement() -) = Node.Expression.LambdaExpression( - parameters = parameters, - arrow = arrow, - statements = statements, - supplement = supplement -) - -/** - * Creates a new [Node.Expression.BinaryExpression] instance. - */ -fun binaryExpression( - lhs: Node.Expression, - operator: Node.Expression.BinaryExpression.BinaryOperator, - rhs: Node.Expression, - supplement: NodeSupplement = NodeSupplement() -) = Node.Expression.BinaryExpression(lhs = lhs, operator = operator, rhs = rhs, supplement = supplement) - -/** - * Creates a new [Node.Expression.PrefixUnaryExpression] instance. - */ -fun prefixUnaryExpression( - operator: Node.Expression.UnaryExpression.UnaryOperator, - expression: Node.Expression, - supplement: NodeSupplement = NodeSupplement() -) = Node.Expression.PrefixUnaryExpression(operator = operator, expression = expression, supplement = supplement) - -/** - * Creates a new [Node.Expression.PostfixUnaryExpression] instance. - */ -fun postfixUnaryExpression( - expression: Node.Expression, - operator: Node.Expression.UnaryExpression.UnaryOperator, - supplement: NodeSupplement = NodeSupplement() -) = Node.Expression.PostfixUnaryExpression(expression = expression, operator = operator, supplement = supplement) - -/** - * Creates a new [Node.Expression.BinaryTypeExpression] instance. - */ -fun binaryTypeExpression( - lhs: Node.Expression, - operator: Node.Expression.BinaryTypeExpression.BinaryTypeOperator, - rhs: Node.Type, - supplement: NodeSupplement = NodeSupplement() -) = Node.Expression.BinaryTypeExpression(lhs = lhs, operator = operator, rhs = rhs, supplement = supplement) - -/** - * Creates a new [Node.Expression.CallableReferenceExpression] instance. - */ -fun callableReferenceExpression( - lhs: Node.Expression? = null, - questionMarks: List = listOf(), - rhs: Node.Expression.NameExpression, - supplement: NodeSupplement = NodeSupplement() -) = Node.Expression.CallableReferenceExpression( - lhs = lhs, - questionMarks = questionMarks, - rhs = rhs, - supplement = supplement -) - -/** - * Creates a new [Node.Expression.ClassLiteralExpression] instance. - */ -fun classLiteralExpression( - lhs: Node.Expression, - questionMarks: List = listOf(), - supplement: NodeSupplement = NodeSupplement() -) = Node.Expression.ClassLiteralExpression(lhs = lhs, questionMarks = questionMarks, supplement = supplement) - -/** - * Creates a new [Node.Expression.ParenthesizedExpression] instance. - */ -fun parenthesizedExpression(innerExpression: Node.Expression, supplement: NodeSupplement = NodeSupplement()) = - Node.Expression.ParenthesizedExpression(innerExpression = innerExpression, supplement = supplement) - -/** - * Creates a new [Node.Expression.StringLiteralExpression] instance. - */ -fun stringLiteralExpression( - entries: List = listOf(), - raw: Boolean = false, - supplement: NodeSupplement = NodeSupplement() -) = Node.Expression.StringLiteralExpression(entries = entries, raw = raw, supplement = supplement) - -/** - * Creates a new [Node.Expression.StringLiteralExpression.LiteralStringEntry] instance. - */ -fun literalStringEntry(text: String, supplement: NodeSupplement = NodeSupplement()) = - Node.Expression.StringLiteralExpression.LiteralStringEntry(text = text, supplement = supplement) - -/** - * Creates a new [Node.Expression.StringLiteralExpression.EscapeStringEntry] instance. - */ -fun escapeStringEntry(text: String, supplement: NodeSupplement = NodeSupplement()) = - Node.Expression.StringLiteralExpression.EscapeStringEntry(text = text, supplement = supplement) - -/** - * Creates a new [Node.Expression.StringLiteralExpression.TemplateStringEntry] instance. - */ -fun templateStringEntry( - expression: Node.Expression, - short: Boolean = false, - supplement: NodeSupplement = NodeSupplement() -) = Node.Expression.StringLiteralExpression.TemplateStringEntry( - expression = expression, - short = short, - supplement = supplement -) - -/** - * Creates a new [Node.Expression.BooleanLiteralExpression] instance. - */ -fun booleanLiteralExpression(text: String, supplement: NodeSupplement = NodeSupplement()) = - Node.Expression.BooleanLiteralExpression(text = text, supplement = supplement) - -/** - * Creates a new [Node.Expression.CharacterLiteralExpression] instance. - */ -fun characterLiteralExpression(text: String, supplement: NodeSupplement = NodeSupplement()) = - Node.Expression.CharacterLiteralExpression(text = text, supplement = supplement) - -/** - * Creates a new [Node.Expression.IntegerLiteralExpression] instance. - */ -fun integerLiteralExpression(text: String, supplement: NodeSupplement = NodeSupplement()) = - Node.Expression.IntegerLiteralExpression(text = text, supplement = supplement) - -/** - * Creates a new [Node.Expression.RealLiteralExpression] instance. - */ -fun realLiteralExpression(text: String, supplement: NodeSupplement = NodeSupplement()) = - Node.Expression.RealLiteralExpression(text = text, supplement = supplement) - -/** - * Creates a new [Node.Expression.NullLiteralExpression] instance. - */ -fun nullLiteralExpression(supplement: NodeSupplement = NodeSupplement()) = - Node.Expression.NullLiteralExpression(supplement = supplement) - -/** - * Creates a new [Node.Expression.ObjectLiteralExpression] instance. - */ -fun objectLiteralExpression( - declaration: Node.Declaration.ObjectDeclaration, - supplement: NodeSupplement = NodeSupplement() -) = Node.Expression.ObjectLiteralExpression(declaration = declaration, supplement = supplement) - -/** - * Creates a new [Node.Expression.CollectionLiteralExpression] instance. - */ -fun collectionLiteralExpression( - expressions: List = listOf(), - supplement: NodeSupplement = NodeSupplement() -) = Node.Expression.CollectionLiteralExpression(expressions = expressions, supplement = supplement) - -/** - * Creates a new [Node.Expression.ThisExpression] instance. - */ -fun thisExpression(label: Node.Expression.NameExpression? = null, supplement: NodeSupplement = NodeSupplement()) = - Node.Expression.ThisExpression(label = label, supplement = supplement) - -/** - * Creates a new [Node.Expression.SuperExpression] instance. - */ -fun superExpression( - typeArgument: Node.TypeArgument? = null, - label: Node.Expression.NameExpression? = null, - supplement: NodeSupplement = NodeSupplement() -) = Node.Expression.SuperExpression(typeArgument = typeArgument, label = label, supplement = supplement) - -/** - * Creates a new [Node.Expression.NameExpression] instance. - */ -fun nameExpression(text: String, supplement: NodeSupplement = NodeSupplement()) = - Node.Expression.NameExpression(text = text, supplement = supplement) - -/** - * Creates a new [Node.Expression.LabeledExpression] instance. - */ -fun labeledExpression( - label: Node.Expression.NameExpression, - statement: Node.Statement, - supplement: NodeSupplement = NodeSupplement() -) = Node.Expression.LabeledExpression(label = label, statement = statement, supplement = supplement) - -/** - * Creates a new [Node.Expression.AnnotatedExpression] instance. - */ -fun annotatedExpression( - annotationSets: List = listOf(), - statement: Node.Statement, - supplement: NodeSupplement = NodeSupplement() -) = Node.Expression.AnnotatedExpression(annotationSets = annotationSets, statement = statement, supplement = supplement) - -/** - * Creates a new [Node.Expression.IndexedAccessExpression] instance. - */ -fun indexedAccessExpression( - expression: Node.Expression, - indices: List = listOf(), - supplement: NodeSupplement = NodeSupplement() -) = Node.Expression.IndexedAccessExpression(expression = expression, indices = indices, supplement = supplement) - -/** - * Creates a new [Node.Expression.AnonymousFunctionExpression] instance. - */ -fun anonymousFunctionExpression( - function: Node.Declaration.FunctionDeclaration, - supplement: NodeSupplement = NodeSupplement() -) = Node.Expression.AnonymousFunctionExpression(function = function, supplement = supplement) - -/** - * Creates a new [Node.TypeParameter] instance. - */ -fun typeParameter( - modifiers: List = listOf(), - name: Node.Expression.NameExpression, - type: Node.Type? = null, - supplement: NodeSupplement = NodeSupplement() -) = Node.TypeParameter(modifiers = modifiers, name = name, type = type, supplement = supplement) - -/** - * Creates a new [Node.FunctionParameter] instance. - */ -fun functionParameter( - modifiers: List = listOf(), - valOrVarKeyword: Node.Keyword.ValOrVarKeyword? = null, - name: Node.Expression.NameExpression, - type: Node.Type? = null, - defaultValue: Node.Expression? = null, - supplement: NodeSupplement = NodeSupplement() -) = Node.FunctionParameter( - modifiers = modifiers, - valOrVarKeyword = valOrVarKeyword, - name = name, - type = type, - defaultValue = defaultValue, - supplement = supplement -) - -/** - * Creates a new [Node.LambdaParameter] instance. - */ -fun lambdaParameter( - lPar: Node.Keyword.LPar? = null, - variables: List, - rPar: Node.Keyword.RPar? = null, - destructuringType: Node.Type? = null, - supplement: NodeSupplement = NodeSupplement() -) = Node.LambdaParameter( - lPar = lPar ?: Node.Keyword.LPar(), - variables = variables, - rPar = rPar ?: Node.Keyword.RPar(), - destructuringType = destructuringType, - supplement = supplement -) - -/** - * Creates a new [Node.LambdaParameter] instance. - */ -fun lambdaParameter(variable: Node.Variable, supplement: NodeSupplement = NodeSupplement()) = Node.LambdaParameter( - lPar = null, - variables = listOf(variable), - rPar = null, - destructuringType = null, - supplement = supplement -) - -/** - * Creates a new [Node.Variable] instance. - */ -fun variable( - annotationSets: List = listOf(), - name: Node.Expression.NameExpression, - type: Node.Type? = null, - supplement: NodeSupplement = NodeSupplement() -) = Node.Variable(annotationSets = annotationSets, name = name, type = type, supplement = supplement) - -/** - * Creates a new [Node.TypeArgument] instance. - */ -fun typeArgument( - modifiers: List = listOf(), - type: Node.Type, - supplement: NodeSupplement = NodeSupplement() -) = Node.TypeArgument(modifiers = modifiers, type = type, supplement = supplement) - -/** - * Creates a new [Node.ValueArgument] instance. - */ -fun valueArgument( - name: Node.Expression.NameExpression? = null, - spreadOperator: Node.Keyword.Asterisk? = null, - expression: Node.Expression, - supplement: NodeSupplement = NodeSupplement() -) = Node.ValueArgument(name = name, spreadOperator = spreadOperator, expression = expression, supplement = supplement) - -/** - * Creates a new [Node.ContextReceiver] instance. - */ -fun contextReceiver( - lPar: Node.Keyword.LPar = Node.Keyword.LPar(), - receiverTypes: List = listOf(), - rPar: Node.Keyword.RPar = Node.Keyword.RPar(), - supplement: NodeSupplement = NodeSupplement() -) = Node.ContextReceiver(lPar = lPar, receiverTypes = receiverTypes, rPar = rPar, supplement = supplement) - -/** - * Creates a new [Node.Modifier.AnnotationSet] instance. - */ -fun annotationSet( - target: Node.Modifier.AnnotationSet.AnnotationTarget? = null, - lBracket: Node.Keyword.LBracket? = null, - annotations: List = listOf(), - rBracket: Node.Keyword.RBracket? = null, - supplement: NodeSupplement = NodeSupplement() -) = Node.Modifier.AnnotationSet( - target = target, - lBracket = if (annotations.size >= 2) lBracket ?: Node.Keyword.LBracket() else lBracket, - annotations = annotations, - rBracket = if (annotations.size >= 2) rBracket ?: Node.Keyword.RBracket() else rBracket, - supplement = supplement -) - -/** - * Creates a new [Node.Modifier.AnnotationSet.Annotation] instance. - */ -fun annotation( - type: Node.Type.SimpleType, - lPar: Node.Keyword.LPar? = null, - arguments: List = listOf(), - rPar: Node.Keyword.RPar? = null, - supplement: NodeSupplement = NodeSupplement() -) = Node.Modifier.AnnotationSet.Annotation( - type = type, - lPar = if (arguments.isNotEmpty()) lPar ?: Node.Keyword.LPar() else lPar, - arguments = arguments, - rPar = if (arguments.isNotEmpty()) rPar ?: Node.Keyword.RPar() else rPar, - supplement = supplement -) - -/** - * Creates a new [Node.PostModifier.TypeConstraintSet] instance. - */ -fun typeConstraintSet( - constraints: List = listOf(), - supplement: NodeSupplement = NodeSupplement() -) = Node.PostModifier.TypeConstraintSet(constraints = constraints, supplement = supplement) - -/** - * Creates a new [Node.PostModifier.TypeConstraintSet.TypeConstraint] instance. - */ -fun typeConstraint( - annotationSets: List = listOf(), - name: Node.Expression.NameExpression, - type: Node.Type, - supplement: NodeSupplement = NodeSupplement() -) = Node.PostModifier.TypeConstraintSet.TypeConstraint( - annotationSets = annotationSets, - name = name, - type = type, - supplement = supplement -) - -/** - * Creates a new [Node.PostModifier.Contract] instance. - */ -fun contract( - lBracket: Node.Keyword.LBracket = Node.Keyword.LBracket(), - contractEffects: List = listOf(), - rBracket: Node.Keyword.RBracket = Node.Keyword.RBracket(), - supplement: NodeSupplement = NodeSupplement() -) = Node.PostModifier.Contract( - lBracket = lBracket, - contractEffects = contractEffects, - rBracket = rBracket, - supplement = supplement -) - -/** - * Creates a new [Node.Extra.Whitespace] instance. - */ -fun whitespace(text: String, supplement: NodeSupplement = NodeSupplement()) = - Node.Extra.Whitespace(text = text, supplement = supplement) - -/** - * Creates a new [Node.Extra.Comment] instance. - */ -fun comment(text: String, supplement: NodeSupplement = NodeSupplement()) = - Node.Extra.Comment(text = text, supplement = supplement) - -/** - * Creates a new [Node.Extra.Semicolon] instance. - */ -fun semicolon(supplement: NodeSupplement = NodeSupplement()) = Node.Extra.Semicolon(supplement = supplement) - -/** - * Creates a new [Node.Extra.TrailingComma] instance. - */ -fun trailingComma(supplement: NodeSupplement = NodeSupplement()) = Node.Extra.TrailingComma(supplement = supplement) diff --git a/ktcodeshift-dsl/src/main/kotlin/ktcodeshift/NodeCollection.kt b/ktcodeshift-dsl/src/main/kotlin/ktcodeshift/NodeCollection.kt index 3e8dba0d..23e4492b 100644 --- a/ktcodeshift-dsl/src/main/kotlin/ktcodeshift/NodeCollection.kt +++ b/ktcodeshift-dsl/src/main/kotlin/ktcodeshift/NodeCollection.kt @@ -13,7 +13,7 @@ import java.util.* */ data class NodeCollection( val nodePaths: List>, - val rootNode: Node.KotlinEntry, + val rootNode: Node.KotlinFile, ) { /** * Returns a new collection containing only elements matching the given [predicate]. @@ -48,7 +48,7 @@ data class NodeCollection( /** * Returns a new AST root node with the nodes in this collection replaced with the result of the given [transform] function applied to each node. */ - fun replaceWith(fn: NodeContext.(T) -> T): Node.KotlinEntry { + fun replaceWith(fn: NodeContext.(T) -> T): Node.KotlinFile { val nodeMap = IdentityHashMap() nodePaths.forEach { nodeMap[it.node] = true } return MutableVisitor.traverse(rootNode) { path -> diff --git a/ktcodeshift-dsl/src/main/kotlin/ktcodeshift/NodeExtension.kt b/ktcodeshift-dsl/src/main/kotlin/ktcodeshift/NodeExtension.kt index 1b0e722a..1e548b14 100644 --- a/ktcodeshift-dsl/src/main/kotlin/ktcodeshift/NodeExtension.kt +++ b/ktcodeshift-dsl/src/main/kotlin/ktcodeshift/NodeExtension.kt @@ -16,17 +16,17 @@ fun Node.toSource(): String { /** * Returns [NodeCollection] of all nodes of type [T] under this node. */ -inline fun Node.KotlinEntry.find(): NodeCollection = find(T::class) +inline fun Node.KotlinFile.find(): NodeCollection = find(T::class) /** * Returns [NodeCollection] of all nodes of type [T] under this node. */ -fun Node.KotlinEntry.find(kClass: KClass): NodeCollection = find(kClass.java) +fun Node.KotlinFile.find(kClass: KClass): NodeCollection = find(kClass.java) /** * Returns [NodeCollection] of all nodes of type [T] under this node. */ -fun Node.KotlinEntry.find(javaClass: Class): NodeCollection { +fun Node.KotlinFile.find(javaClass: Class): NodeCollection { val nodes = mutableListOf>() MutableVisitor.traverse(this) { path -> if (javaClass.isAssignableFrom(path.node::class.java)) { diff --git a/ktcodeshift-dsl/src/main/kotlin/ktcodeshift/script/ScriptDefinition.kt b/ktcodeshift-dsl/src/main/kotlin/ktcodeshift/script/ScriptDefinition.kt index e27f3763..d2b0f6d9 100644 --- a/ktcodeshift-dsl/src/main/kotlin/ktcodeshift/script/ScriptDefinition.kt +++ b/ktcodeshift-dsl/src/main/kotlin/ktcodeshift/script/ScriptDefinition.kt @@ -23,7 +23,14 @@ abstract class TransformScript object TransformScriptCompilationConfiguration : ScriptCompilationConfiguration({ // Implicit imports for all scripts of this type - defaultImports(DependsOn::class, Repository::class, Import::class) + defaultImports( + DependsOn::class.qualifiedName!!, + Repository::class.qualifiedName!!, + Import::class.qualifiedName!!, + "ktcodeshift.*", + "ktast.ast.*", + "ktast.builder.*", + ) jvm { // Extract the whole classpath from context classloader and use it as dependencies dependenciesFromCurrentContext(wholeClasspath = true) diff --git a/ktcodeshift-dsl/src/test/kotlin/ktcodeshift/ApiTest.kt b/ktcodeshift-dsl/src/test/kotlin/ktcodeshift/ApiTest.kt index 9636ff93..13e11edd 100644 --- a/ktcodeshift-dsl/src/test/kotlin/ktcodeshift/ApiTest.kt +++ b/ktcodeshift-dsl/src/test/kotlin/ktcodeshift/ApiTest.kt @@ -1,6 +1,7 @@ package ktcodeshift import ktast.ast.Node +import ktast.builder.* import kotlin.test.Test import kotlin.test.assertEquals import kotlin.test.assertIs