User: joe Date: 11 May 25 11:58 Revision: 4d4f9682c28b89c9e514f7e9ec2bd2eac4bb0272 Summary: Desugar ellipsis types into array types TeamCity URL: https://ci.mcdev.io/viewModification.html?tab=vcsModificationFiles&modId=9991&personal=false Index: src/main/kotlin/platform/mixin/handlers/desugar/Desugarer.kt =================================================================== --- src/main/kotlin/platform/mixin/handlers/desugar/Desugarer.kt (revision 253930a614114109306e7efe4b7c71343b7a1243) +++ src/main/kotlin/platform/mixin/handlers/desugar/Desugarer.kt (revision 4d4f9682c28b89c9e514f7e9ec2bd2eac4bb0272) @@ -23,14 +23,14 @@ import com.intellij.openapi.project.Project import com.intellij.psi.PsiClass import com.intellij.psi.PsiJavaFile -import com.intellij.psi.util.PsiTreeUtil +import com.intellij.psi.util.childrenOfType abstract class Desugarer { abstract fun desugar(project: Project, file: PsiJavaFile, clazz: PsiClass): PsiClass companion object { @JvmStatic - protected val PsiJavaFile.allClasses: Collection - get() = PsiTreeUtil.findChildrenOfType(this, PsiClass::class.java) + protected val PsiJavaFile.allClasses: List + get() = this.childrenOfType() } } Index: src/main/kotlin/platform/mixin/handlers/desugar/RemoveVarArgsDesugarer.kt =================================================================== --- src/main/kotlin/platform/mixin/handlers/desugar/RemoveVarArgsDesugarer.kt (revision 253930a614114109306e7efe4b7c71343b7a1243) +++ src/main/kotlin/platform/mixin/handlers/desugar/RemoveVarArgsDesugarer.kt (revision 4d4f9682c28b89c9e514f7e9ec2bd2eac4bb0272) @@ -20,16 +20,19 @@ package com.demonwav.mcdev.platform.mixin.handlers.desugar +import com.demonwav.mcdev.util.childrenOfType import com.intellij.codeInsight.daemon.impl.analysis.JavaGenericsUtil import com.intellij.openapi.project.Project import com.intellij.psi.JavaPsiFacade import com.intellij.psi.PsiCall import com.intellij.psi.PsiCapturedWildcardType import com.intellij.psi.PsiClass +import com.intellij.psi.PsiEllipsisType import com.intellij.psi.PsiJavaFile import com.intellij.psi.PsiMethod import com.intellij.psi.PsiNewExpression import com.intellij.psi.PsiTypeCastExpression +import com.intellij.psi.PsiTypeElement import com.intellij.psi.util.PsiTreeUtil import com.intellij.psi.util.PsiTypesUtil import com.intellij.psi.util.TypeConversionUtil @@ -96,6 +99,13 @@ argumentList.add(replacementExpr) } + val ellipsisTypes = file.childrenOfType().filter { it.type is PsiEllipsisType } + for (ellipsisType in ellipsisTypes) { + val newType = (ellipsisType.type as PsiEllipsisType).toArrayType() + val newTypeElement = ellipsisType.replace(elementFactory.createTypeElement(newType)) + DesugarUtil.setOriginalElement(newTypeElement, DesugarUtil.getOriginalElement(ellipsisType)) + } + return clazz } }