i18n: KtPsiFactory: add @NonNls to parameters
This commit is contained in:
@@ -30,7 +30,7 @@ fun KtPsiFactory(project: Project?, markGenerated: Boolean = true): KtPsiFactory
|
|||||||
fun KtPsiFactory(elementForProject: PsiElement, markGenerated: Boolean = true): KtPsiFactory =
|
fun KtPsiFactory(elementForProject: PsiElement, markGenerated: Boolean = true): KtPsiFactory =
|
||||||
KtPsiFactory(elementForProject.project, markGenerated)
|
KtPsiFactory(elementForProject.project, markGenerated)
|
||||||
|
|
||||||
private val DO_NOT_ANALYZE_NOTIFICATION = "This file was created by KtPsiFactory and should not be analyzed\n" +
|
private const val DO_NOT_ANALYZE_NOTIFICATION = "This file was created by KtPsiFactory and should not be analyzed\n" +
|
||||||
"Use createAnalyzableFile to create file that can be analyzed\n"
|
"Use createAnalyzableFile to create file that can be analyzed\n"
|
||||||
|
|
||||||
var KtFile.doNotAnalyze: String? by UserDataProperty(Key.create("DO_NOT_ANALYZE"))
|
var KtFile.doNotAnalyze: String? by UserDataProperty(Key.create("DO_NOT_ANALYZE"))
|
||||||
@@ -54,7 +54,7 @@ class KtPsiFactory @JvmOverloads constructor(private val project: Project, val m
|
|||||||
return property.valOrVarKeyword
|
return property.valOrVarKeyword
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun doCreateExpression(text: String): KtExpression? {
|
private fun doCreateExpression(@NonNls text: String): KtExpression? {
|
||||||
//NOTE: '\n' below is important - some strange code indenting problems appear without it
|
//NOTE: '\n' below is important - some strange code indenting problems appear without it
|
||||||
return createProperty("val x =\n$text").initializer
|
return createProperty("val x =\n$text").initializer
|
||||||
}
|
}
|
||||||
@@ -67,7 +67,7 @@ class KtPsiFactory @JvmOverloads constructor(private val project: Project, val m
|
|||||||
return expression
|
return expression
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createExpressionIfPossible(text: String): KtExpression? {
|
fun createExpressionIfPossible(@NonNls text: String): KtExpression? {
|
||||||
val expression = doCreateExpression(text) ?: return null
|
val expression = doCreateExpression(text) ?: return null
|
||||||
return if (expression.text == text) expression else null
|
return if (expression.text == text) expression else null
|
||||||
}
|
}
|
||||||
@@ -75,22 +75,22 @@ class KtPsiFactory @JvmOverloads constructor(private val project: Project, val m
|
|||||||
fun createThisExpression() =
|
fun createThisExpression() =
|
||||||
(createExpression("this.x") as KtQualifiedExpression).receiverExpression as KtThisExpression
|
(createExpression("this.x") as KtQualifiedExpression).receiverExpression as KtThisExpression
|
||||||
|
|
||||||
fun createThisExpression(qualifier: String) =
|
fun createThisExpression(@NonNls qualifier: String) =
|
||||||
(createExpression("this@$qualifier.x") as KtQualifiedExpression).receiverExpression as KtThisExpression
|
(createExpression("this@$qualifier.x") as KtQualifiedExpression).receiverExpression as KtThisExpression
|
||||||
|
|
||||||
fun createCallArguments(text: String): KtValueArgumentList {
|
fun createCallArguments(@NonNls text: String): KtValueArgumentList {
|
||||||
val property = createProperty("val x = foo $text")
|
val property = createProperty("val x = foo $text")
|
||||||
return (property.initializer as KtCallExpression).valueArgumentList!!
|
return (property.initializer as KtCallExpression).valueArgumentList!!
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createTypeArguments(text: String): KtTypeArgumentList {
|
fun createTypeArguments(@NonNls text: String): KtTypeArgumentList {
|
||||||
val property = createProperty("val x = foo$text()")
|
val property = createProperty("val x = foo$text()")
|
||||||
return (property.initializer as KtCallExpression).typeArgumentList!!
|
return (property.initializer as KtCallExpression).typeArgumentList!!
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createTypeArgument(text: String) = createTypeArguments("<$text>").arguments.first()
|
fun createTypeArgument(@NonNls text: String) = createTypeArguments("<$text>").arguments.first()
|
||||||
|
|
||||||
fun createType(type: String): KtTypeReference {
|
fun createType(@NonNls type: String): KtTypeReference {
|
||||||
val typeReference = createTypeIfPossible(type)
|
val typeReference = createTypeIfPossible(type)
|
||||||
if (typeReference == null || typeReference.text != type) {
|
if (typeReference == null || typeReference.text != type) {
|
||||||
throw IllegalArgumentException("Incorrect type: $type")
|
throw IllegalArgumentException("Incorrect type: $type")
|
||||||
@@ -100,7 +100,7 @@ class KtPsiFactory @JvmOverloads constructor(private val project: Project, val m
|
|||||||
|
|
||||||
fun createType(typeElement: KtTypeElement) = createType("X").apply { this.typeElement!!.replace(typeElement) }
|
fun createType(typeElement: KtTypeElement) = createType("X").apply { this.typeElement!!.replace(typeElement) }
|
||||||
|
|
||||||
fun createTypeIfPossible(type: String): KtTypeReference? {
|
fun createTypeIfPossible(@NonNls type: String): KtTypeReference? {
|
||||||
val typeReference = createProperty("val x : $type").typeReference
|
val typeReference = createProperty("val x : $type").typeReference
|
||||||
return if (typeReference?.text == type) typeReference else null
|
return if (typeReference?.text == type) typeReference else null
|
||||||
}
|
}
|
||||||
@@ -114,11 +114,11 @@ class KtPsiFactory @JvmOverloads constructor(private val project: Project, val m
|
|||||||
.apply { this.typeReference!!.replace(typeReference) }
|
.apply { this.typeReference!!.replace(typeReference) }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createTypeAlias(name: String, typeParameters: List<String>, typeElement: KtTypeElement): KtTypeAlias {
|
fun createTypeAlias(@NonNls name: String, typeParameters: List<String>, typeElement: KtTypeElement): KtTypeAlias {
|
||||||
return createTypeAlias(name, typeParameters, "X").apply { getTypeReference()!!.replace(createType(typeElement)) }
|
return createTypeAlias(name, typeParameters, "X").apply { getTypeReference()!!.replace(createType(typeElement)) }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createTypeAlias(name: String, typeParameters: List<String>, body: String): KtTypeAlias {
|
fun createTypeAlias(@NonNls name: String, typeParameters: List<String>, @NonNls body: String): KtTypeAlias {
|
||||||
val typeParametersText = if (typeParameters.isNotEmpty()) typeParameters.joinToString(prefix = "<", postfix = ">") else ""
|
val typeParametersText = if (typeParameters.isNotEmpty()) typeParameters.joinToString(prefix = "<", postfix = ">") else ""
|
||||||
return createDeclaration("typealias $name$typeParametersText = $body")
|
return createDeclaration("typealias $name$typeParametersText = $body")
|
||||||
}
|
}
|
||||||
@@ -157,7 +157,7 @@ class KtPsiFactory @JvmOverloads constructor(private val project: Project, val m
|
|||||||
return createWhiteSpace(" ")
|
return createWhiteSpace(" ")
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createWhiteSpace(text: String): PsiElement {
|
fun createWhiteSpace(@NonNls text: String): PsiElement {
|
||||||
return createProperty("val${text}x: Int").findElementAt(3)!!
|
return createProperty("val${text}x: Int").findElementAt(3)!!
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -174,7 +174,7 @@ class KtPsiFactory @JvmOverloads constructor(private val project: Project, val m
|
|||||||
return createDeclaration(text)
|
return createDeclaration(text)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createObject(text: String): KtObjectDeclaration {
|
fun createObject(@NonNls text: String): KtObjectDeclaration {
|
||||||
return createDeclaration(text)
|
return createDeclaration(text)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -182,23 +182,23 @@ class KtPsiFactory @JvmOverloads constructor(private val project: Project, val m
|
|||||||
return createCompanionObject("companion object {\n}")
|
return createCompanionObject("companion object {\n}")
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createCompanionObject(text: String): KtObjectDeclaration {
|
fun createCompanionObject(@NonNls text: String): KtObjectDeclaration {
|
||||||
return createClass("class A {\n $text\n}").companionObjects.first()
|
return createClass("class A {\n $text\n}").companionObjects.first()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createFileAnnotation(annotationText: String): KtAnnotationEntry {
|
fun createFileAnnotation(@NonNls annotationText: String): KtAnnotationEntry {
|
||||||
return createFileAnnotationListWithAnnotation(annotationText).annotationEntries.first()
|
return createFileAnnotationListWithAnnotation(annotationText).annotationEntries.first()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createFileAnnotationListWithAnnotation(annotationText: String): KtFileAnnotationList {
|
fun createFileAnnotationListWithAnnotation(@NonNls annotationText: String): KtFileAnnotationList {
|
||||||
return createFile("@file:$annotationText").fileAnnotationList!!
|
return createFile("@file:$annotationText").fileAnnotationList!!
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createFile(text: String): KtFile {
|
fun createFile(@NonNls text: String): KtFile {
|
||||||
return createFile("dummy.kt", text)
|
return createFile("dummy.kt", text)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun doCreateFile(fileName: String, text: String): KtFile {
|
private fun doCreateFile(@NonNls fileName: String, @NonNls text: String): KtFile {
|
||||||
return PsiFileFactory.getInstance(project).createFileFromText(
|
return PsiFileFactory.getInstance(project).createFileFromText(
|
||||||
fileName,
|
fileName,
|
||||||
KotlinFileType.INSTANCE,
|
KotlinFileType.INSTANCE,
|
||||||
@@ -209,7 +209,7 @@ class KtPsiFactory @JvmOverloads constructor(private val project: Project, val m
|
|||||||
) as KtFile
|
) as KtFile
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createFile(fileName: String, text: String): KtFile {
|
fun createFile(@NonNls fileName: String, @NonNls text: String): KtFile {
|
||||||
val file = doCreateFile(fileName, text)
|
val file = doCreateFile(fileName, text)
|
||||||
|
|
||||||
file.doNotAnalyze = DO_NOT_ANALYZE_NOTIFICATION
|
file.doNotAnalyze = DO_NOT_ANALYZE_NOTIFICATION
|
||||||
@@ -217,19 +217,19 @@ class KtPsiFactory @JvmOverloads constructor(private val project: Project, val m
|
|||||||
return file
|
return file
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createAnalyzableFile(fileName: String, text: String, contextToAnalyzeIn: PsiElement): KtFile {
|
fun createAnalyzableFile(@NonNls fileName: String, @NonNls text: String, contextToAnalyzeIn: PsiElement): KtFile {
|
||||||
val file = doCreateFile(fileName, text)
|
val file = doCreateFile(fileName, text)
|
||||||
file.analysisContext = contextToAnalyzeIn
|
file.analysisContext = contextToAnalyzeIn
|
||||||
return file
|
return file
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createFileWithLightClassSupport(fileName: String, text: String, contextToAnalyzeIn: PsiElement): KtFile {
|
fun createFileWithLightClassSupport(@NonNls fileName: String, @NonNls text: String, contextToAnalyzeIn: PsiElement): KtFile {
|
||||||
val file = createPhysicalFile(fileName, text)
|
val file = createPhysicalFile(fileName, text)
|
||||||
file.analysisContext = contextToAnalyzeIn
|
file.analysisContext = contextToAnalyzeIn
|
||||||
return file
|
return file
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createPhysicalFile(fileName: String, text: String): KtFile {
|
fun createPhysicalFile(@NonNls fileName: String, @NonNls text: String): KtFile {
|
||||||
return PsiFileFactory.getInstance(project).createFileFromText(
|
return PsiFileFactory.getInstance(project).createFileFromText(
|
||||||
fileName,
|
fileName,
|
||||||
KotlinFileType.INSTANCE,
|
KotlinFileType.INSTANCE,
|
||||||
@@ -239,18 +239,24 @@ class KtPsiFactory @JvmOverloads constructor(private val project: Project, val m
|
|||||||
) as KtFile
|
) as KtFile
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createProperty(modifiers: String?, name: String, type: String?, isVar: Boolean, initializer: String?): KtProperty {
|
fun createProperty(
|
||||||
|
@NonNls modifiers: String?,
|
||||||
|
@NonNls name: String,
|
||||||
|
@NonNls type: String?,
|
||||||
|
isVar: Boolean,
|
||||||
|
@NonNls initializer: String?
|
||||||
|
): KtProperty {
|
||||||
val text = modifiers.let { "$it " } +
|
val text = modifiers.let { "$it " } +
|
||||||
(if (isVar) " var " else " val ") + name +
|
(if (isVar) " var " else " val ") + name +
|
||||||
(if (type != null) ":" + type else "") + (if (initializer == null) "" else " = " + initializer)
|
(if (type != null) ":$type" else "") + (if (initializer == null) "" else " = $initializer")
|
||||||
return createProperty(text)
|
return createProperty(text)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createProperty(name: String, type: String?, isVar: Boolean, initializer: String?): KtProperty {
|
fun createProperty(@NonNls name: String, @NonNls type: String?, isVar: Boolean, @NonNls initializer: String?): KtProperty {
|
||||||
return createProperty(null, name, type, isVar, initializer)
|
return createProperty(null, name, type, isVar, initializer)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createProperty(name: String, type: String?, isVar: Boolean): KtProperty {
|
fun createProperty(@NonNls name: String, @NonNls type: String?, isVar: Boolean): KtProperty {
|
||||||
return createProperty(name, type, isVar, null)
|
return createProperty(name, type, isVar, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -290,11 +296,11 @@ class KtPsiFactory @JvmOverloads constructor(private val project: Project, val m
|
|||||||
return delegate
|
return delegate
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createDestructuringDeclaration(text: String): KtDestructuringDeclaration {
|
fun createDestructuringDeclaration(@NonNls text: String): KtDestructuringDeclaration {
|
||||||
return createFunction("fun foo() {$text}").bodyBlockExpression!!.statements.first() as KtDestructuringDeclaration
|
return createFunction("fun foo() {$text}").bodyBlockExpression!!.statements.first() as KtDestructuringDeclaration
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createDestructuringParameter(text: String): KtParameter {
|
fun createDestructuringParameter(@NonNls text: String): KtParameter {
|
||||||
val dummyFun = createFunction("fun foo() = { $text -> }")
|
val dummyFun = createFunction("fun foo() = { $text -> }")
|
||||||
return (dummyFun.bodyExpression as KtLambdaExpression).functionLiteral.valueParameters.first()
|
return (dummyFun.bodyExpression as KtLambdaExpression).functionLiteral.valueParameters.first()
|
||||||
}
|
}
|
||||||
@@ -312,19 +318,19 @@ class KtPsiFactory @JvmOverloads constructor(private val project: Project, val m
|
|||||||
return declarations.first() as TDeclaration
|
return declarations.first() as TDeclaration
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createNameIdentifier(name: String) = createNameIdentifierIfPossible(name)!!
|
fun createNameIdentifier(@NonNls name: String) = createNameIdentifierIfPossible(name)!!
|
||||||
|
|
||||||
fun createNameIdentifierIfPossible(name: String) = createProperty(name, null, false).nameIdentifier
|
fun createNameIdentifierIfPossible(@NonNls name: String) = createProperty(name, null, false).nameIdentifier
|
||||||
|
|
||||||
fun createSimpleName(name: String): KtSimpleNameExpression {
|
fun createSimpleName(@NonNls name: String): KtSimpleNameExpression {
|
||||||
return createProperty(name, null, false, name).initializer as KtSimpleNameExpression
|
return createProperty(name, null, false, name).initializer as KtSimpleNameExpression
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createOperationName(name: String): KtSimpleNameExpression {
|
fun createOperationName(@NonNls name: String): KtSimpleNameExpression {
|
||||||
return (createExpression("0 $name 0") as KtBinaryExpression).operationReference
|
return (createExpression("0 $name 0") as KtBinaryExpression).operationReference
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createIdentifier(name: String): PsiElement {
|
fun createIdentifier(@NonNls name: String): PsiElement {
|
||||||
return createSimpleName(name).getIdentifier()!!
|
return createSimpleName(name).getIdentifier()!!
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -332,9 +338,9 @@ class KtPsiFactory @JvmOverloads constructor(private val project: Project, val m
|
|||||||
return createDeclaration(funDecl)
|
return createDeclaration(funDecl)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createCallableReferenceExpression(text: String) = createExpression(text) as? KtCallableReferenceExpression
|
fun createCallableReferenceExpression(@NonNls text: String) = createExpression(text) as? KtCallableReferenceExpression
|
||||||
|
|
||||||
fun createSecondaryConstructor(decl: String): KtSecondaryConstructor {
|
fun createSecondaryConstructor(@NonNls decl: String): KtSecondaryConstructor {
|
||||||
return createClass("class Foo {\n $decl \n}").secondaryConstructors.first()
|
return createClass("class Foo {\n $decl \n}").secondaryConstructors.first()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -342,8 +348,8 @@ class KtPsiFactory @JvmOverloads constructor(private val project: Project, val m
|
|||||||
return createModifierList(modifier.value)
|
return createModifierList(modifier.value)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createModifierList(text: String): KtModifierList {
|
fun createModifierList(@NonNls text: String): KtModifierList {
|
||||||
return createProperty(text + " val x").modifierList!!
|
return createProperty("$text val x").modifierList!!
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createEmptyModifierList() = createModifierList(KtTokens.PRIVATE_KEYWORD).apply { firstChild.delete() }
|
fun createEmptyModifierList() = createModifierList(KtTokens.PRIVATE_KEYWORD).apply { firstChild.delete() }
|
||||||
@@ -352,7 +358,7 @@ class KtPsiFactory @JvmOverloads constructor(private val project: Project, val m
|
|||||||
return createModifierList(modifier.value).getModifier(modifier)!!
|
return createModifierList(modifier.value).getModifier(modifier)!!
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createAnnotationEntry(text: String): KtAnnotationEntry {
|
fun createAnnotationEntry(@NonNls text: String): KtAnnotationEntry {
|
||||||
val modifierList = createProperty(text + " val x").modifierList
|
val modifierList = createProperty(text + " val x").modifierList
|
||||||
return modifierList!!.annotationEntries.first()
|
return modifierList!!.annotationEntries.first()
|
||||||
}
|
}
|
||||||
@@ -369,33 +375,33 @@ class KtPsiFactory @JvmOverloads constructor(private val project: Project, val m
|
|||||||
return createClass("class A(){}").getBody()!!
|
return createClass("class A(){}").getBody()!!
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createParameter(text: String): KtParameter {
|
fun createParameter(@NonNls text: String): KtParameter {
|
||||||
return createClass("class A($text)").primaryConstructorParameters.first()
|
return createClass("class A($text)").primaryConstructorParameters.first()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createLoopParameter(text: String): KtParameter {
|
fun createLoopParameter(@NonNls text: String): KtParameter {
|
||||||
return (createExpression("for ($text in list) {}") as KtForExpression).loopParameter!!
|
return (createExpression("for ($text in list) {}") as KtForExpression).loopParameter!!
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createParameterList(text: String): KtParameterList {
|
fun createParameterList(@NonNls text: String): KtParameterList {
|
||||||
return createFunction("fun foo$text{}").valueParameterList!!
|
return createFunction("fun foo$text{}").valueParameterList!!
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createTypeParameterList(text: String) = createClass("class Foo$text").typeParameterList!!
|
fun createTypeParameterList(@NonNls text: String) = createClass("class Foo$text").typeParameterList!!
|
||||||
|
|
||||||
fun createTypeParameter(text: String) = createTypeParameterList("<$text>").parameters.first()!!
|
fun createTypeParameter(@NonNls text: String) = createTypeParameterList("<$text>").parameters.first()!!
|
||||||
|
|
||||||
fun createLambdaParameterListIfAny(text: String) =
|
fun createLambdaParameterListIfAny(@NonNls text: String) =
|
||||||
createLambdaExpression(text, "0").functionLiteral.valueParameterList
|
createLambdaExpression(text, "0").functionLiteral.valueParameterList
|
||||||
|
|
||||||
fun createLambdaParameterList(text: String) = createLambdaParameterListIfAny(text)!!
|
fun createLambdaParameterList(@NonNls text: String) = createLambdaParameterListIfAny(text)!!
|
||||||
|
|
||||||
fun createLambdaExpression(parameters: String, body: String): KtLambdaExpression =
|
fun createLambdaExpression(@NonNls parameters: String, @NonNls body: String): KtLambdaExpression =
|
||||||
(if (parameters.isNotEmpty()) createExpression("{ $parameters -> $body }")
|
(if (parameters.isNotEmpty()) createExpression("{ $parameters -> $body }")
|
||||||
else createExpression("{ $body }")) as KtLambdaExpression
|
else createExpression("{ $body }")) as KtLambdaExpression
|
||||||
|
|
||||||
|
|
||||||
fun createEnumEntry(text: String): KtEnumEntry {
|
fun createEnumEntry(@NonNls text: String): KtEnumEntry {
|
||||||
return createDeclaration<KtClass>("enum class E {$text}").declarations[0] as KtEnumEntry
|
return createDeclaration<KtClass>("enum class E {$text}").declarations[0] as KtEnumEntry
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -403,7 +409,7 @@ class KtPsiFactory @JvmOverloads constructor(private val project: Project, val m
|
|||||||
return createEnumEntry("Entry()").initializerList!!
|
return createEnumEntry("Entry()").initializerList!!
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createWhenEntry(entryText: String): KtWhenEntry {
|
fun createWhenEntry(@NonNls entryText: String): KtWhenEntry {
|
||||||
val function = createFunction("fun foo() { when(12) { $entryText } }")
|
val function = createFunction("fun foo() { when(12) { $entryText } }")
|
||||||
val whenEntry = PsiTreeUtil.findChildOfType(function, KtWhenEntry::class.java)
|
val whenEntry = PsiTreeUtil.findChildOfType(function, KtWhenEntry::class.java)
|
||||||
|
|
||||||
@@ -413,7 +419,7 @@ class KtPsiFactory @JvmOverloads constructor(private val project: Project, val m
|
|||||||
return whenEntry
|
return whenEntry
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createWhenCondition(conditionText: String): KtWhenCondition {
|
fun createWhenCondition(@NonNls conditionText: String): KtWhenCondition {
|
||||||
val whenEntry = createWhenEntry("$conditionText -> {}")
|
val whenEntry = createWhenEntry("$conditionText -> {}")
|
||||||
return whenEntry.conditions[0]
|
return whenEntry.conditions[0]
|
||||||
}
|
}
|
||||||
@@ -424,17 +430,17 @@ class KtPsiFactory @JvmOverloads constructor(private val project: Project, val m
|
|||||||
return stringTemplateExpression.entries[0] as KtStringTemplateEntryWithExpression
|
return stringTemplateExpression.entries[0] as KtStringTemplateEntryWithExpression
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createSimpleNameStringTemplateEntry(name: String): KtSimpleNameStringTemplateEntry {
|
fun createSimpleNameStringTemplateEntry(@NonNls name: String): KtSimpleNameStringTemplateEntry {
|
||||||
val stringTemplateExpression = createExpression("\"\$$name\"") as KtStringTemplateExpression
|
val stringTemplateExpression = createExpression("\"\$$name\"") as KtStringTemplateExpression
|
||||||
return stringTemplateExpression.entries[0] as KtSimpleNameStringTemplateEntry
|
return stringTemplateExpression.entries[0] as KtSimpleNameStringTemplateEntry
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createLiteralStringTemplateEntry(literal: String): KtLiteralStringTemplateEntry {
|
fun createLiteralStringTemplateEntry(@NonNls literal: String): KtLiteralStringTemplateEntry {
|
||||||
val stringTemplateExpression = createExpression("\"$literal\"") as KtStringTemplateExpression
|
val stringTemplateExpression = createExpression("\"$literal\"") as KtStringTemplateExpression
|
||||||
return stringTemplateExpression.entries[0] as KtLiteralStringTemplateEntry
|
return stringTemplateExpression.entries[0] as KtLiteralStringTemplateEntry
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createStringTemplate(content: String) = createExpression("\"$content\"") as KtStringTemplateExpression
|
fun createStringTemplate(@NonNls content: String) = createExpression("\"$content\"") as KtStringTemplateExpression
|
||||||
|
|
||||||
fun createPackageDirective(fqName: FqName): KtPackageDirective {
|
fun createPackageDirective(fqName: FqName): KtPackageDirective {
|
||||||
return createFile("package ${fqName.asString()}").packageDirective!!
|
return createFile("package ${fqName.asString()}").packageDirective!!
|
||||||
@@ -482,28 +488,28 @@ class KtPsiFactory @JvmOverloads constructor(private val project: Project, val m
|
|||||||
|
|
||||||
fun createClassKeyword(): PsiElement = createClass("class A").getClassKeyword()!!
|
fun createClassKeyword(): PsiElement = createClass("class A").getClassKeyword()!!
|
||||||
|
|
||||||
fun createPrimaryConstructor(text: String = ""): KtPrimaryConstructor {
|
fun createPrimaryConstructor(@NonNls text: String = ""): KtPrimaryConstructor {
|
||||||
return createClass(if (text.isNotEmpty()) "class A $text" else "class A()").primaryConstructor!!
|
return createClass(if (text.isNotEmpty()) "class A $text" else "class A()").primaryConstructor!!
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createPrimaryConstructorWithModifiers(modifiers: String?): KtPrimaryConstructor {
|
fun createPrimaryConstructorWithModifiers(@NonNls modifiers: String?): KtPrimaryConstructor {
|
||||||
return modifiers?.let { createPrimaryConstructor("$it constructor()") } ?: createPrimaryConstructor()
|
return modifiers?.let { createPrimaryConstructor("$it constructor()") } ?: createPrimaryConstructor()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createConstructorKeyword(): PsiElement =
|
fun createConstructorKeyword(): PsiElement =
|
||||||
createClass("class A constructor()").primaryConstructor!!.getConstructorKeyword()!!
|
createClass("class A constructor()").primaryConstructor!!.getConstructorKeyword()!!
|
||||||
|
|
||||||
fun createLabeledExpression(labelName: String): KtLabeledExpression = createExpression("$labelName@ 1") as KtLabeledExpression
|
fun createLabeledExpression(@NonNls labelName: String): KtLabeledExpression = createExpression("$labelName@ 1") as KtLabeledExpression
|
||||||
|
|
||||||
fun createTypeCodeFragment(text: String, context: PsiElement?): KtTypeCodeFragment {
|
fun createTypeCodeFragment(@NonNls text: String, context: PsiElement?): KtTypeCodeFragment {
|
||||||
return KtTypeCodeFragment(project, "fragment.kt", text, context)
|
return KtTypeCodeFragment(project, "fragment.kt", text, context)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createExpressionCodeFragment(text: String, context: PsiElement?): KtExpressionCodeFragment {
|
fun createExpressionCodeFragment(@NonNls text: String, context: PsiElement?): KtExpressionCodeFragment {
|
||||||
return KtExpressionCodeFragment(project, "fragment.kt", text, null, context)
|
return KtExpressionCodeFragment(project, "fragment.kt", text, null, context)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createBlockCodeFragment(text: String, context: PsiElement?): KtBlockCodeFragment {
|
fun createBlockCodeFragment(@NonNls text: String, context: PsiElement?): KtBlockCodeFragment {
|
||||||
return KtBlockCodeFragment(project, "fragment.kt", text, null, context)
|
return KtBlockCodeFragment(project, "fragment.kt", text, null, context)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -540,17 +546,17 @@ class KtPsiFactory @JvmOverloads constructor(private val project: Project, val m
|
|||||||
return argumentList.arguments.single()
|
return argumentList.arguments.single()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createArgument(text: String) = createCallArguments("($text)").arguments.first()!!
|
fun createArgument(@NonNls text: String) = createCallArguments("($text)").arguments.first()!!
|
||||||
|
|
||||||
fun createSuperTypeCallEntry(text: String): KtSuperTypeCallEntry {
|
fun createSuperTypeCallEntry(@NonNls text: String): KtSuperTypeCallEntry {
|
||||||
return createClass("class A: $text").superTypeListEntries.first() as KtSuperTypeCallEntry
|
return createClass("class A: $text").superTypeListEntries.first() as KtSuperTypeCallEntry
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createSuperTypeEntry(text: String): KtSuperTypeEntry {
|
fun createSuperTypeEntry(@NonNls text: String): KtSuperTypeEntry {
|
||||||
return createClass("class A: $text").superTypeListEntries.first() as KtSuperTypeEntry
|
return createClass("class A: $text").superTypeListEntries.first() as KtSuperTypeEntry
|
||||||
}
|
}
|
||||||
|
|
||||||
fun creareDelegatedSuperTypeEntry(text: String): KtConstructorDelegationCall {
|
fun creareDelegatedSuperTypeEntry(@NonNls text: String): KtConstructorDelegationCall {
|
||||||
val colonOrEmpty = if (text.isEmpty()) "" else ": "
|
val colonOrEmpty = if (text.isEmpty()) "" else ": "
|
||||||
return createClass("class A { constructor()$colonOrEmpty$text {}").secondaryConstructors.first().getDelegationCall()
|
return createClass("class A { constructor()$colonOrEmpty$text {}").secondaryConstructors.first().getDelegationCall()
|
||||||
}
|
}
|
||||||
@@ -569,7 +575,7 @@ class KtPsiFactory @JvmOverloads constructor(private val project: Project, val m
|
|||||||
private val sb = StringBuilder()
|
private val sb = StringBuilder()
|
||||||
private var state = State.MODIFIERS
|
private var state = State.MODIFIERS
|
||||||
|
|
||||||
fun modifier(modifier: String): ClassHeaderBuilder {
|
fun modifier(@NonNls modifier: String): ClassHeaderBuilder {
|
||||||
assert(state == State.MODIFIERS)
|
assert(state == State.MODIFIERS)
|
||||||
|
|
||||||
sb.append(modifier)
|
sb.append(modifier)
|
||||||
@@ -589,7 +595,7 @@ class KtPsiFactory @JvmOverloads constructor(private val project: Project, val m
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fun name(name: String): ClassHeaderBuilder {
|
fun name(@NonNls name: String): ClassHeaderBuilder {
|
||||||
placeKeyword()
|
placeKeyword()
|
||||||
|
|
||||||
sb.append(name)
|
sb.append(name)
|
||||||
@@ -613,7 +619,7 @@ class KtPsiFactory @JvmOverloads constructor(private val project: Project, val m
|
|||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
fun baseClass(name: String, typeArguments: Collection<String>, isInterface: Boolean): ClassHeaderBuilder {
|
fun baseClass(@NonNls name: String, typeArguments: Collection<String>, isInterface: Boolean): ClassHeaderBuilder {
|
||||||
assert(state == State.BASE_CLASS)
|
assert(state == State.BASE_CLASS)
|
||||||
|
|
||||||
sb.append(" : $name")
|
sb.append(" : $name")
|
||||||
@@ -722,7 +728,7 @@ class KtPsiFactory @JvmOverloads constructor(private val project: Project, val m
|
|||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
fun receiver(receiverType: String): CallableBuilder {
|
fun receiver(@NonNls receiverType: String): CallableBuilder {
|
||||||
assert(state == State.RECEIVER)
|
assert(state == State.RECEIVER)
|
||||||
|
|
||||||
sb.append(receiverType).append(".")
|
sb.append(receiverType).append(".")
|
||||||
@@ -731,7 +737,7 @@ class KtPsiFactory @JvmOverloads constructor(private val project: Project, val m
|
|||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
fun name(name: String = CONSTRUCTOR_NAME): CallableBuilder {
|
fun name(@NonNls name: String = CONSTRUCTOR_NAME): CallableBuilder {
|
||||||
assert(state == State.NAME || state == State.RECEIVER)
|
assert(state == State.NAME || state == State.RECEIVER)
|
||||||
assert(name != CONSTRUCTOR_NAME || target == Target.CONSTRUCTOR)
|
assert(name != CONSTRUCTOR_NAME || target == Target.CONSTRUCTOR)
|
||||||
|
|
||||||
@@ -748,7 +754,7 @@ class KtPsiFactory @JvmOverloads constructor(private val project: Project, val m
|
|||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
fun param(name: String, type: String, defaultValue: String? = null): CallableBuilder {
|
fun param(@NonNls name: String, @NonNls type: String, @NonNls defaultValue: String? = null): CallableBuilder {
|
||||||
assert(target == Target.FUNCTION || target == Target.CONSTRUCTOR)
|
assert(target == Target.FUNCTION || target == Target.CONSTRUCTOR)
|
||||||
assert(state == State.FIRST_PARAM || state == State.REST_PARAMS)
|
assert(state == State.FIRST_PARAM || state == State.REST_PARAMS)
|
||||||
|
|
||||||
@@ -766,7 +772,7 @@ class KtPsiFactory @JvmOverloads constructor(private val project: Project, val m
|
|||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
fun returnType(type: String): CallableBuilder {
|
fun returnType(@NonNls type: String): CallableBuilder {
|
||||||
closeParams()
|
closeParams()
|
||||||
sb.append(": ").append(type)
|
sb.append(": ").append(type)
|
||||||
|
|
||||||
@@ -790,7 +796,7 @@ class KtPsiFactory @JvmOverloads constructor(private val project: Project, val m
|
|||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
fun superDelegation(argumentList: String): CallableBuilder {
|
fun superDelegation(@NonNls argumentList: String): CallableBuilder {
|
||||||
assert(state == State.TYPE_CONSTRAINTS && target == Target.CONSTRUCTOR)
|
assert(state == State.TYPE_CONSTRAINTS && target == Target.CONSTRUCTOR)
|
||||||
|
|
||||||
sb.append(": super").append(argumentList)
|
sb.append(": super").append(argumentList)
|
||||||
@@ -799,7 +805,7 @@ class KtPsiFactory @JvmOverloads constructor(private val project: Project, val m
|
|||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
fun blockBody(body: String): CallableBuilder {
|
fun blockBody(@NonNls body: String): CallableBuilder {
|
||||||
assert(state == State.BODY || state == State.TYPE_CONSTRAINTS)
|
assert(state == State.BODY || state == State.TYPE_CONSTRAINTS)
|
||||||
|
|
||||||
sb.append(bodyPrefix()).append(" {\n").append(body).append("\n}")
|
sb.append(bodyPrefix()).append(" {\n").append(body).append("\n}")
|
||||||
@@ -808,7 +814,7 @@ class KtPsiFactory @JvmOverloads constructor(private val project: Project, val m
|
|||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getterExpression(expression: String, breakLine: Boolean = true): CallableBuilder {
|
fun getterExpression(@NonNls expression: String, breakLine: Boolean = true): CallableBuilder {
|
||||||
assert(target == Target.READ_ONLY_PROPERTY)
|
assert(target == Target.READ_ONLY_PROPERTY)
|
||||||
assert(state == State.BODY || state == State.TYPE_CONSTRAINTS)
|
assert(state == State.BODY || state == State.TYPE_CONSTRAINTS)
|
||||||
|
|
||||||
@@ -818,7 +824,7 @@ class KtPsiFactory @JvmOverloads constructor(private val project: Project, val m
|
|||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
fun initializer(body: String): CallableBuilder {
|
fun initializer(@NonNls body: String): CallableBuilder {
|
||||||
assert(target == Target.READ_ONLY_PROPERTY && (state == State.BODY || state == State.TYPE_CONSTRAINTS))
|
assert(target == Target.READ_ONLY_PROPERTY && (state == State.BODY || state == State.TYPE_CONSTRAINTS))
|
||||||
|
|
||||||
sb.append(" = ").append(body)
|
sb.append(" = ").append(body)
|
||||||
@@ -827,7 +833,7 @@ class KtPsiFactory @JvmOverloads constructor(private val project: Project, val m
|
|||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
fun lazyBody(body: String): CallableBuilder {
|
fun lazyBody(@NonNls body: String): CallableBuilder {
|
||||||
assert(target == Target.READ_ONLY_PROPERTY && (state == State.BODY || state == State.TYPE_CONSTRAINTS))
|
assert(target == Target.READ_ONLY_PROPERTY && (state == State.BODY || state == State.TYPE_CONSTRAINTS))
|
||||||
|
|
||||||
sb.append(" by kotlin.lazy {\n").append(body).append("\n}")
|
sb.append(" by kotlin.lazy {\n").append(body).append("\n}")
|
||||||
@@ -847,17 +853,21 @@ class KtPsiFactory @JvmOverloads constructor(private val project: Project, val m
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createBlock(bodyText: String): KtBlockExpression {
|
fun createBlock(@NonNls bodyText: String): KtBlockExpression {
|
||||||
return createFunction("fun foo() {\n$bodyText\n}").bodyBlockExpression!!
|
return createFunction("fun foo() {\n$bodyText\n}").bodyBlockExpression!!
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createSingleStatementBlock(statement: KtExpression, prevComment: String? = null, nextComment: String? = null): KtBlockExpression {
|
fun createSingleStatementBlock(
|
||||||
|
statement: KtExpression,
|
||||||
|
@NonNls prevComment: String? = null,
|
||||||
|
@NonNls nextComment: String? = null
|
||||||
|
): KtBlockExpression {
|
||||||
val prev = if (prevComment == null) "" else " $prevComment "
|
val prev = if (prevComment == null) "" else " $prevComment "
|
||||||
val next = if (nextComment == null) "" else " $nextComment "
|
val next = if (nextComment == null) "" else " $nextComment "
|
||||||
return createDeclarationByPattern<KtNamedFunction>("fun foo() {\n$prev$0$next\n}", statement).bodyBlockExpression!!
|
return createDeclarationByPattern<KtNamedFunction>("fun foo() {\n$prev$0$next\n}", statement).bodyBlockExpression!!
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createComment(text: String): PsiComment {
|
fun createComment(@NonNls text: String): PsiComment {
|
||||||
val file = createFile(text)
|
val file = createFile(text)
|
||||||
val comments = file.children.filterIsInstance<PsiComment>()
|
val comments = file.children.filterIsInstance<PsiComment>()
|
||||||
val comment = comments.single()
|
val comment = comments.single()
|
||||||
|
|||||||
Reference in New Issue
Block a user