diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 0dabf9b5533..2a7b87e56c9 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -8,6 +8,13 @@ + + + - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java b/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java index 087aa7e8f1e..7c1ce14f70d 100644 --- a/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java +++ b/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java @@ -103,7 +103,6 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable { private JPanel k2jsPanel; private JComboBox jvmVersionComboBox; private JComboBox languageVersionComboBox; - private JComboBox coroutineSupportComboBox; private JComboBox apiVersionComboBox; private JPanel scriptPanel; private JLabel labelForOutputPrefixFile; @@ -141,7 +140,6 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable { additionalArgsOptionsField.attachLabel(additionalArgsLabel); fillLanguageAndAPIVersionList(); - fillCoroutineSupportList(); if (CidrUtil.isRunningInCidrIde()) { keepAliveCheckBox.setVisible(false); @@ -370,7 +368,7 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable { apiVersionComboBox.addItem(VersionView.LatestStable.INSTANCE); for (LanguageVersion version : LanguageVersion.values()) { - if (version.isUnsupported() || !version.isStable() && !ApplicationManager.getApplication().isInternal()) { + if (version.isUnsupported() || !LanguageVersionSettingsKt.isStableOrReadyForPreview(version) && !ApplicationManager.getApplication().isInternal()) { continue; } @@ -382,14 +380,6 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable { apiVersionComboBox.setRenderer(new DescriptionListCellRenderer()); } - @SuppressWarnings("unchecked") - private void fillCoroutineSupportList() { - for (LanguageFeature.State coroutineSupport : languageFeatureStates) { - coroutineSupportComboBox.addItem(coroutineSupport); - } - coroutineSupportComboBox.setRenderer(new DescriptionListCellRenderer()); - } - public void setTargetPlatform(@Nullable IdePlatformKind targetPlatform) { k2jsPanel.setVisible(JsIdePlatformUtil.isJavaScript(targetPlatform)); scriptPanel.setVisible(JvmIdePlatformUtil.isJvm(targetPlatform)); @@ -444,7 +434,6 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable { return isModified(reportWarningsCheckBox, !commonCompilerArguments.getSuppressWarnings()) || !getSelectedLanguageVersionView().equals(KotlinFacetSettingsKt.getLanguageVersionView(commonCompilerArguments)) || !getSelectedAPIVersionView().equals(KotlinFacetSettingsKt.getApiVersionView(commonCompilerArguments)) || - !getSelectedCoroutineState().equals(commonCompilerArguments.getCoroutinesState()) || !additionalArgsOptionsField.getText().equals(compilerSettings.getAdditionalArguments()) || isModified(scriptTemplatesField, compilerSettings.getScriptTemplates()) || isModified(scriptTemplatesClasspathField, compilerSettings.getScriptTemplatesClasspath()) || @@ -492,26 +481,6 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable { return item != null ? (VersionView) item : VersionView.LatestStable.INSTANCE; } - @NotNull - private String getSelectedCoroutineState() { - if (getSelectedLanguageVersionView().getVersion().compareTo(LanguageVersion.KOTLIN_1_3) >= 0) { - return CommonCompilerArguments.DEFAULT; - } - - LanguageFeature.State state = (LanguageFeature.State) coroutineSupportComboBox.getSelectedItem(); - if (state == null) return CommonCompilerArguments.DEFAULT; - switch (state) { - case ENABLED: - return CommonCompilerArguments.ENABLE; - case ENABLED_WITH_WARNING: - return CommonCompilerArguments.WARN; - case ENABLED_WITH_ERROR: - return CommonCompilerArguments.ERROR; - default: - return CommonCompilerArguments.DEFAULT; - } - } - public void applyTo( CommonCompilerArguments commonCompilerArguments, K2JVMCompilerArguments k2jvmCompilerArguments, @@ -522,7 +491,6 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable { boolean shouldInvalidateCaches = !getSelectedLanguageVersionView().equals(KotlinFacetSettingsKt.getLanguageVersionView(commonCompilerArguments)) || !getSelectedAPIVersionView().equals(KotlinFacetSettingsKt.getApiVersionView(commonCompilerArguments)) || - !getSelectedCoroutineState().equals(commonCompilerArguments.getCoroutinesState()) || !additionalArgsOptionsField.getText().equals(compilerSettings.getAdditionalArguments()); if (shouldInvalidateCaches) { @@ -542,8 +510,6 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable { KotlinFacetSettingsKt.setLanguageVersionView(commonCompilerArguments, getSelectedLanguageVersionView()); KotlinFacetSettingsKt.setApiVersionView(commonCompilerArguments, getSelectedAPIVersionView()); - commonCompilerArguments.setCoroutinesState(getSelectedCoroutineState()); - compilerSettings.setAdditionalArguments(additionalArgsOptionsField.getText()); compilerSettings.setScriptTemplates(scriptTemplatesField.getText()); compilerSettings.setScriptTemplatesClasspath(scriptTemplatesClasspathField.getText()); @@ -595,7 +561,6 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable { setSelectedItem(languageVersionComboBox, KotlinFacetSettingsKt.getLanguageVersionView(commonCompilerArguments)); onLanguageLevelChanged((VersionView) languageVersionComboBox.getSelectedItem()); // getSelectedLanguageVersionView() replaces null setSelectedItem(apiVersionComboBox, KotlinFacetSettingsKt.getApiVersionView(commonCompilerArguments)); - coroutineSupportComboBox.setSelectedItem(CoroutineSupport.byCompilerArguments(commonCompilerArguments)); additionalArgsOptionsField.setText(compilerSettings.getAdditionalArguments()); scriptTemplatesField.setText(compilerSettings.getScriptTemplates()); scriptTemplatesClasspathField.setText(compilerSettings.getScriptTemplatesClasspath()); @@ -701,10 +666,6 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable { return apiVersionComboBox; } - public JComboBox getCoroutineSupportComboBox() { - return coroutineSupportComboBox; - } - public void setEnabled(boolean value) { isEnabled = value; UIUtil.setEnabled(getContentPane(), value, true); diff --git a/idea/src/org/jetbrains/kotlin/idea/facet/KotlinFacetEditorGeneralTab.kt b/idea/src/org/jetbrains/kotlin/idea/facet/KotlinFacetEditorGeneralTab.kt index 369626ef947..c48330588e9 100644 --- a/idea/src/org/jetbrains/kotlin/idea/facet/KotlinFacetEditorGeneralTab.kt +++ b/idea/src/org/jetbrains/kotlin/idea/facet/KotlinFacetEditorGeneralTab.kt @@ -347,7 +347,6 @@ class KotlinFacetEditorGeneralTab( doValidate() } apiVersionComboBox.validateOnChange() - coroutineSupportComboBox.validateOnChange() } editor.targetPlatformSelectSingleCombobox.validateOnChange() diff --git a/idea/src/org/jetbrains/kotlin/idea/facet/MultipleKotlinFacetEditor.kt b/idea/src/org/jetbrains/kotlin/idea/facet/MultipleKotlinFacetEditor.kt index 4e487f54677..eb51021232b 100644 --- a/idea/src/org/jetbrains/kotlin/idea/facet/MultipleKotlinFacetEditor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/facet/MultipleKotlinFacetEditor.kt @@ -45,7 +45,6 @@ class MultipleKotlinFacetEditor( helper.bind(scriptTemplatesClasspathField, editors) { it.compilerConfigurable.scriptTemplatesClasspathField } helper.bind(languageVersionComboBox, editors) { it.compilerConfigurable.languageVersionComboBox } helper.bind(apiVersionComboBox, editors) { it.compilerConfigurable.apiVersionComboBox } - helper.bind(coroutineSupportComboBox, editors) { it.compilerConfigurable.coroutineSupportComboBox } } } } @@ -56,4 +55,4 @@ class MultipleKotlinFacetEditor( // Their settings might have changed to non-project one due to UI control binding editors.map { it.tabEditor }.filter { it.useProjectSettingsCheckBox.isSelected }.forEach { it.updateCompilerConfigurable() } } -} \ No newline at end of file +} diff --git a/idea/src/org/jetbrains/kotlin/idea/facet/facetUtils.kt b/idea/src/org/jetbrains/kotlin/idea/facet/facetUtils.kt index 38b2cef7790..488e613b09b 100644 --- a/idea/src/org/jetbrains/kotlin/idea/facet/facetUtils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/facet/facetUtils.kt @@ -153,16 +153,14 @@ fun Module.removeKotlinFacet( //method used for non-mpp modules fun KotlinFacet.configureFacet( compilerVersion: String?, - coroutineSupport: LanguageFeature.State, platform: TargetPlatform?, modelsProvider: IdeModifiableModelsProvider ) { - configureFacet(compilerVersion, coroutineSupport, platform, modelsProvider, false, emptyList(), emptyList()) + configureFacet(compilerVersion, platform, modelsProvider, false, emptyList(), emptyList()) } fun KotlinFacet.configureFacet( compilerVersion: String?, - coroutineSupport: LanguageFeature.State, platform: TargetPlatform?, // if null, detect by module dependencies modelsProvider: IdeModifiableModelsProvider, hmppEnabled: Boolean, @@ -187,7 +185,6 @@ fun KotlinFacet.configureFacet( if (languageLevel != null && apiLevel != null && apiLevel > languageLevel) { this.apiLevel = languageLevel } - this.coroutineSupport = if (languageLevel != null && languageLevel < LanguageVersion.KOTLIN_1_3) coroutineSupport else null this.pureKotlinSourceFolders = pureKotlinSourceFolders } @@ -202,21 +199,6 @@ private fun Module.externalSystemRunTasks(): List { fun Module.externalSystemTestRunTasks() = externalSystemRunTasks().filterIsInstance() fun Module.externalSystemNativeMainRunTasks() = externalSystemRunTasks().filterIsInstance() -@Suppress("DEPRECATION_ERROR", "DeprecatedCallableAddReplaceWith") -@Deprecated( - message = "IdePlatform is deprecated and will be removed soon, please, migrate to org.jetbrains.kotlin.platform.TargetPlatform", - level = DeprecationLevel.ERROR -) -fun KotlinFacet.configureFacet( - compilerVersion: String?, - coroutineSupport: LanguageFeature.State, - platform: IdePlatform<*, *>, - modelsProvider: IdeModifiableModelsProvider -) { - configureFacet(compilerVersion, coroutineSupport, platform.toNewPlatform(), modelsProvider) -} - - fun KotlinFacet.noVersionAutoAdvance() { configuration.settings.compilerArguments?.let { it.autoAdvanceLanguageVersion = false @@ -229,8 +211,7 @@ fun KotlinFacet.noVersionAutoAdvance() { val commonUIExposedFields = listOf( CommonCompilerArguments::languageVersion.name, CommonCompilerArguments::apiVersion.name, - CommonCompilerArguments::suppressWarnings.name, - CommonCompilerArguments::coroutinesState.name + CommonCompilerArguments::suppressWarnings.name ) private val commonUIHiddenFields = listOf( CommonCompilerArguments::pluginClasspaths.name, diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/MoveToSealedMatchingPackageFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/MoveToSealedMatchingPackageFix.kt new file mode 100644 index 00000000000..51e0b690149 --- /dev/null +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/MoveToSealedMatchingPackageFix.kt @@ -0,0 +1,213 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.idea.quickfix + +import com.intellij.openapi.actionSystem.LangDataKeys +import com.intellij.openapi.actionSystem.impl.SimpleDataContext +import com.intellij.openapi.application.ApplicationManager +import com.intellij.openapi.editor.Editor +import com.intellij.openapi.project.Project +import com.intellij.openapi.roots.ProjectFileIndex +import com.intellij.openapi.vfs.VirtualFile +import com.intellij.psi.PsiDirectory +import com.intellij.psi.PsiElement +import com.intellij.psi.PsiFileSystemItem +import com.intellij.psi.search.GlobalSearchScope +import com.intellij.psi.util.parentOfType +import com.intellij.refactoring.PackageWrapper +import com.intellij.refactoring.move.MoveCallback +import com.intellij.refactoring.move.MoveHandler +import org.jetbrains.kotlin.descriptors.containingPackage +import org.jetbrains.kotlin.diagnostics.Diagnostic +import org.jetbrains.kotlin.idea.KotlinBundle +import org.jetbrains.kotlin.idea.actions.internal.refactoringTesting.cases.* +import org.jetbrains.kotlin.idea.refactoring.move.getTargetPackageFqName +import org.jetbrains.kotlin.idea.refactoring.move.guessNewFileName +import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.MoveKotlinDeclarationsHandler +import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.MoveKotlinDeclarationsHandlerActions +import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.ui.KotlinAwareMoveFilesOrDirectoriesModel +import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.ui.MoveKotlinNestedClassesToUpperLevelModel +import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.ui.MoveKotlinTopLevelDeclarationsModel +import org.jetbrains.kotlin.idea.references.resolveMainReferenceToDescriptors +import org.jetbrains.kotlin.idea.util.application.executeCommand +import org.jetbrains.kotlin.idea.util.projectStructure.module +import org.jetbrains.kotlin.psi.* +import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject +import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils +import org.jetbrains.kotlin.resolve.jvm.KotlinJavaPsiFacade + +class MoveToSealedMatchingPackageFix(element: KtTypeReference) : KotlinQuickFixAction(element) { + + private val moveHandler = + if (ApplicationManager.getApplication().isUnitTestMode) { + MoveKotlinDeclarationsHandler(MoveKotlinDeclarationsHandlerTestActions()) + } else { + MoveKotlinDeclarationsHandler(false) + } + + override fun invoke(project: Project, editor: Editor?, file: KtFile) { + val typeReference = element ?: return + + // 'element' references sealed class/interface in extension list + val classToMove = typeReference.parentOfType() ?: return + val defaultTargetDir = typeReference.resolveToDir() ?: return + + val parentContext = SimpleDataContext.getProjectContext(project) + val context = SimpleDataContext.getSimpleContext(LangDataKeys.TARGET_PSI_ELEMENT.name, defaultTargetDir, parentContext) + + moveHandler.tryToMove(classToMove, project, context, null, editor) + } + + private fun KtTypeReference.resolveToDir(): PsiDirectory? { + val ktUserType = typeElement as? KtUserType ?: return null + val ktNameReferenceExpression = ktUserType.referenceExpression as? KtNameReferenceExpression ?: return null + val declDescriptor = ktNameReferenceExpression.resolveMainReferenceToDescriptors().singleOrNull() ?: return null + + val packageName = declDescriptor.containingPackage()?.asString() ?: return null + + val projectFileIndex = ProjectFileIndex.getInstance(project) + val ktClassInQuestion = DescriptorToSourceUtils.getSourceFromDescriptor(declDescriptor) as? KtClass ?: return null + val module = projectFileIndex.getModuleForFile(ktClassInQuestion.containingFile.virtualFile) ?: return null + val psiPackage = + KotlinJavaPsiFacade.getInstance(project).findPackage(packageName, GlobalSearchScope.moduleScope(module)) ?: return null + + return psiPackage.directories.find { it.module == module } + } + + override fun startInWriteAction(): Boolean { + return false + } + + override fun getText(): String { + val typeReference = element ?: return "" + val referencedName = (typeReference.typeElement as? KtUserType)?.referenceExpression?.getReferencedName() ?: return "" + + val classToMove = typeReference.parentOfType() ?: return "" + return KotlinBundle.message("fix.move.to.sealed.text", classToMove.nameAsSafeName.asString(), referencedName) + } + + override fun getFamilyName(): String { + return KotlinBundle.message("fix.move.to.sealed.family") + } + + companion object : KotlinSingleIntentionActionFactory() { + override fun createAction(diagnostic: Diagnostic): MoveToSealedMatchingPackageFix? { + val annotationEntry = diagnostic.psiElement as? KtTypeReference ?: return null + return MoveToSealedMatchingPackageFix(annotationEntry) + } + } +} + +private class MoveKotlinDeclarationsHandlerTestActions : MoveKotlinDeclarationsHandlerActions { + + override fun invokeMoveKotlinTopLevelDeclarationsRefactoring( + project: Project, + elementsToMove: Set, + targetPackageName: String, + targetDirectory: PsiDirectory?, + targetFile: KtFile?, + freezeTargets: Boolean, + moveToPackage: Boolean, + moveCallback: MoveCallback? + ) { + val sourceFiles = getSourceFiles(elementsToMove) + val targetFilePath = + targetFile?.virtualFile?.path ?: sourceFiles[0].virtualFile.parent.path + "/" + guessNewFileName(elementsToMove) + + val model = MoveKotlinTopLevelDeclarationsModel( + project = project, + elementsToMove = elementsToMove.toList(), + targetPackage = targetPackageName, + selectedPsiDirectory = targetDirectory, + fileNameInPackage = "Derived.kt", + targetFilePath = targetFilePath, + isMoveToPackage = true, + isSearchReferences = false, + isSearchInComments = false, + isSearchInNonJavaFiles = false, + isDeleteEmptyFiles = false, + applyMPPDeclarations = false, + moveCallback = null + ) + + model.computeModelResult(throwOnConflicts = true).processor.run() + } + + private fun getSourceFiles(elementsToMove: Collection): List { + return elementsToMove.map { obj: KtPureElement -> obj.containingKtFile } + .distinct() + } + + override fun invokeKotlinSelectNestedClassChooser(nestedClass: KtClassOrObject, targetContainer: PsiElement?) = + doWithMoveKotlinNestedClassesToUpperLevelModel(nestedClass, targetContainer) + + private fun doWithMoveKotlinNestedClassesToUpperLevelModel(nestedClass: KtClassOrObject, targetContainer: PsiElement?) { + + val outerClass = nestedClass.containingClassOrObject ?: throw FailedToRunCaseException() + val newTarget = targetContainer + ?: outerClass.containingClassOrObject + ?: outerClass.containingFile.let { it.containingDirectory ?: it } + + val packageName = getTargetPackageFqName(newTarget)?.asString() ?: "" + + val model = object : MoveKotlinNestedClassesToUpperLevelModel( + project = nestedClass.project, + innerClass = nestedClass, + target = newTarget, + parameter = "", + className = nestedClass.name ?: "", + passOuterClass = false, + searchInComments = false, + isSearchInNonJavaFiles = false, + packageName = packageName, + isOpenInEditor = false + ) { + override fun chooseSourceRoot( + newPackage: PackageWrapper, + contentSourceRoots: List, + initialDir: PsiDirectory? + ) = contentSourceRoots.firstOrNull() + } + + model.computeModelResult(throwOnConflicts = true).processor.run() + } + + override fun invokeKotlinAwareMoveFilesOrDirectoriesRefactoring( + project: Project, + initialDirectory: PsiDirectory?, + elements: List, + moveCallback: MoveCallback? + ) { + val targetPath = + initialDirectory?.virtualFile?.path + ?: elements.firstOrNull()?.containingFile?.virtualFile?.path + ?: throw NotImplementedError() + + val model = KotlinAwareMoveFilesOrDirectoriesModel( + project = project, + elementsToMove = elements, + targetDirectoryName = randomDirectoryPathMutator(targetPath), + updatePackageDirective = randomBoolean(), + searchReferences = randomBoolean(), + moveCallback = null + ) + + project.executeCommand(MoveHandler.getRefactoringName()) { + model.computeModelResult().processor.run() + } + } + + override fun showErrorHint(project: Project, editor: Editor?, message: String, title: String, helpId: String?) = + throw NotImplementedError() + + override fun invokeMoveKotlinNestedClassesRefactoring( + project: Project, + elementsToMove: List, + originalClass: KtClassOrObject, + targetClass: KtClassOrObject, + moveCallback: MoveCallback? + ) = throw NotImplementedError() +} \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.kt index 4a5a367c68f..99488a1231a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.kt @@ -664,5 +664,8 @@ class QuickFixRegistrar : QuickFixContributor { INCOMPATIBLE_THROWS_OVERRIDE.registerFactory(RemoveAnnotationFix) INLINE_CLASS_CONSTRUCTOR_NOT_FINAL_READ_ONLY_PARAMETER.registerFactory(InlineClassConstructorNotValParameterFactory) + + SEALED_INHERITOR_IN_DIFFERENT_PACKAGE.registerFactory(MoveToSealedMatchingPackageFix) + SEALED_INHERITOR_IN_DIFFERENT_MODULE.registerFactory(MoveToSealedMatchingPackageFix) } } diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ExtractDeclarationFromCurrentFileIntention.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ExtractDeclarationFromCurrentFileIntention.kt index 6b12ec6c8fd..98874f50ced 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ExtractDeclarationFromCurrentFileIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ExtractDeclarationFromCurrentFileIntention.kt @@ -155,6 +155,7 @@ class ExtractDeclarationFromCurrentFileIntention : SelfTargetingRangeIntention): PsiElement? { val allTopLevel = elements.all { isTopLevelInFileOrScript(it) } @@ -203,6 +210,7 @@ class MoveKotlinDeclarationsHandler internal constructor(private val handlerActi targetPackageName, targetDirectory, targetFile, + freezeTargets, moveToPackage, callback ) diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/MoveKotlinDeclarationsHandlerActions.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/MoveKotlinDeclarationsHandlerActions.kt index 384e75d0988..f008e97c6ef 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/MoveKotlinDeclarationsHandlerActions.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/MoveKotlinDeclarationsHandlerActions.kt @@ -30,6 +30,7 @@ internal interface MoveKotlinDeclarationsHandlerActions { targetPackageName: String, targetDirectory: PsiDirectory?, targetFile: KtFile?, + freezeTargets: Boolean, moveToPackage: Boolean, moveCallback: MoveCallback? ) diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/KotlinSelectNestedClassRefactoringDialog.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/KotlinSelectNestedClassRefactoringDialog.kt index 33715a17854..dee4a8002b8 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/KotlinSelectNestedClassRefactoringDialog.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/KotlinSelectNestedClassRefactoringDialog.kt @@ -5,9 +5,9 @@ package org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.ui -import com.intellij.BundleBase import com.intellij.openapi.project.Project import com.intellij.openapi.ui.DialogWrapper +import com.intellij.psi.PsiDirectory import com.intellij.psi.PsiElement import com.intellij.refactoring.RefactoringBundle import com.intellij.refactoring.util.RadioUpDownListener @@ -92,6 +92,7 @@ internal class KotlinSelectNestedClassRefactoringDialog private constructor( listOf(nestedClass), nestedClass.containingClassOrObject!!, targetContainer as? KtClassOrObject ?: nestedClass.containingClassOrObject!!, + targetContainer as? PsiDirectory, null ) } @@ -99,10 +100,7 @@ internal class KotlinSelectNestedClassRefactoringDialog private constructor( fun chooseNestedClassRefactoring(nestedClass: KtClassOrObject, targetContainer: PsiElement?) { val project = nestedClass.project val dialog = when { - targetContainer != null && targetContainer !is KtClassOrObject || - nestedClass is KtClass && nestedClass.isInner() -> { - MoveKotlinNestedClassesToUpperLevelDialog(nestedClass, targetContainer) - } + targetContainer.isUpperLevelFor(nestedClass) -> MoveKotlinNestedClassesToUpperLevelDialog(nestedClass, targetContainer) nestedClass is KtEnumEntry -> return else -> { val selectionDialog = @@ -118,5 +116,9 @@ internal class KotlinSelectNestedClassRefactoringDialog private constructor( } dialog?.show() } + + private fun PsiElement?.isUpperLevelFor(nestedClass: KtClassOrObject) = + this != null && this !is KtClassOrObject && this !is PsiDirectory || + nestedClass is KtClass && nestedClass.isInner() } } \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/MoveKotlinNestedClassesDialog.java b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/MoveKotlinNestedClassesDialog.java index b47744a7fb5..0a192e7c68e 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/MoveKotlinNestedClassesDialog.java +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/MoveKotlinNestedClassesDialog.java @@ -9,11 +9,11 @@ import com.intellij.ide.util.TreeClassChooser; import com.intellij.ide.util.TreeJavaClassChooserDialog; import com.intellij.openapi.editor.event.DocumentEvent; import com.intellij.openapi.editor.event.DocumentListener; +import com.intellij.openapi.module.Module; +import com.intellij.openapi.module.ModuleUtilCore; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.project.Project; -import com.intellij.psi.JavaPsiFacade; -import com.intellij.psi.PsiClass; -import com.intellij.psi.PsiElement; +import com.intellij.psi.*; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.refactoring.RefactoringBundle; import com.intellij.refactoring.classMembers.AbstractMemberInfoModel; @@ -58,11 +58,16 @@ public class MoveKotlinNestedClassesDialog extends RefactoringDialog { private KotlinMemberSelectionTable memberTable; private PsiElement targetClass; + @Nullable + private PsiDirectory targetDirectory; + private GlobalSearchScope searchScope; + public MoveKotlinNestedClassesDialog( @NotNull Project project, @NotNull List elementsToMove, @NotNull KtClassOrObject originalClass, @NotNull KtClassOrObject targetClass, + @Nullable PsiDirectory targetDirectory, @Nullable MoveCallback moveCallback ) { super(project, true); @@ -70,6 +75,13 @@ public class MoveKotlinNestedClassesDialog extends RefactoringDialog { this.originalClass = originalClass; this.targetClass = targetClass; this.moveCallback = moveCallback; + this.targetDirectory = targetDirectory; + this.searchScope = GlobalSearchScope.projectScope(project); + if (targetDirectory != null) { + Module module = ModuleUtilCore.findModuleForPsiElement(targetDirectory); + if (module != null) + this.searchScope = module.getModuleScope(); + } init(); @@ -103,22 +115,8 @@ public class MoveKotlinNestedClassesDialog extends RefactoringDialog { TreeClassChooser chooser = new TreeJavaClassChooserDialog( RefactoringBundle.message("choose.destination.class"), myProject, - GlobalSearchScope.projectScope(myProject), - aClass -> { - if (!(aClass instanceof KtLightClassForSourceDeclaration)) return false; - KtClassOrObject classOrObject = ((KtLightClassForSourceDeclaration) aClass).getKotlinOrigin(); - - if (classOrObject instanceof KtObjectDeclaration) { - return !((KtObjectDeclaration) classOrObject).isObjectLiteral(); - } - - if (classOrObject instanceof KtClass) { - KtClass ktClass = (KtClass) classOrObject; - return !(ktClass.isInner() || ktClass.isAnnotation()); - } - - return false; - }, + searchScope, + MoveKotlinNestedClassesDialog.this::classMatchesFilter, null, null, true @@ -170,7 +168,7 @@ public class MoveKotlinNestedClassesDialog extends RefactoringDialog { public void documentChanged(@NotNull DocumentEvent e) { PsiClass aClass = JavaPsiFacade .getInstance(myProject) - .findClass(targetClassChooser.getText(), GlobalSearchScope.projectScope(myProject)); + .findClass(targetClassChooser.getText(), searchScope); targetClass = aClass instanceof KtLightClassForSourceDeclaration ? ((KtLightClassForSourceDeclaration) aClass).getKotlinOrigin() : aClass; @@ -181,6 +179,38 @@ public class MoveKotlinNestedClassesDialog extends RefactoringDialog { targetClassChooserPanel.add(targetClassChooser); } + private boolean classMatchesFilter(PsiClass aClass) { + if (!searchScope.accept(aClass.getContainingFile().getVirtualFile())) + return false; + + if (targetDirectory != null) { + PsiPackage targetPackage = JavaDirectoryService.getInstance().getPackage(targetDirectory); + if (targetPackage != null) { + PsiDirectory directory = aClass.getContainingFile().getContainingDirectory(); + PsiPackage classPackage = JavaDirectoryService.getInstance().getPackage(directory); + if (classPackage != null + && !targetPackage.getQualifiedName().equals(classPackage.getQualifiedName())) + { + return false; + } + } + } + + if (!(aClass instanceof KtLightClassForSourceDeclaration)) return false; + KtClassOrObject classOrObject = ((KtLightClassForSourceDeclaration) aClass).getKotlinOrigin(); + + if (classOrObject instanceof KtObjectDeclaration) { + return !((KtObjectDeclaration) classOrObject).isObjectLiteral(); + } + + if (classOrObject instanceof KtClass) { + KtClass ktClass = (KtClass) classOrObject; + return !(ktClass.isInner() || ktClass.isAnnotation()); + } + + return false; + } + private void initMemberInfo(@NotNull List elementsToMove) { List memberInfos = CollectionsKt.mapNotNull( originalClass.getDeclarations(), diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/MoveKotlinNestedClassesToUpperLevelModel.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/MoveKotlinNestedClassesToUpperLevelModel.kt index ab07319253d..7562e42ba37 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/MoveKotlinNestedClassesToUpperLevelModel.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/MoveKotlinNestedClassesToUpperLevelModel.kt @@ -30,6 +30,7 @@ import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.* import org.jetbrains.kotlin.idea.roots.getSuitableDestinationSourceRoots import org.jetbrains.kotlin.idea.statistics.MoveRefactoringFUSCollector.MovedEntity import org.jetbrains.kotlin.idea.statistics.MoveRefactoringFUSCollector.MoveRefactoringDestination +import org.jetbrains.kotlin.idea.util.projectStructure.module import org.jetbrains.kotlin.incremental.components.NoLookupLocation import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi.KtClassOrObject @@ -66,8 +67,8 @@ internal abstract class MoveKotlinNestedClassesToUpperLevelModel( val targetName = packageName if (oldPackageFqName?.asString() != targetName) { val projectRootManager = ProjectRootManager.getInstance(project) - - val contentSourceRoots = getSuitableDestinationSourceRoots(project) + val contentSourceRoots = target.module?.let { getSuitableDestinationSourceRoots(it) } + ?: getSuitableDestinationSourceRoots(project) val newPackage = PackageWrapper(PsiManager.getInstance(project), targetName) val targetSourceRoot: VirtualFile diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/MoveKotlinTopLevelDeclarationsDialog.java b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/MoveKotlinTopLevelDeclarationsDialog.java index 84e14b2176b..0b26153f43d 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/MoveKotlinTopLevelDeclarationsDialog.java +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/MoveKotlinTopLevelDeclarationsDialog.java @@ -6,12 +6,15 @@ package org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.ui; import com.intellij.ide.util.DirectoryChooser; +import com.intellij.openapi.module.Module; +import com.intellij.openapi.module.ModuleUtilCore; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.TextFieldWithBrowseButton; import com.intellij.openapi.util.Pass; import com.intellij.psi.PsiDirectory; import com.intellij.psi.PsiFile; +import com.intellij.psi.search.GlobalSearchScope; import com.intellij.refactoring.RefactoringBundle; import com.intellij.refactoring.classMembers.AbstractMemberInfoModel; import com.intellij.refactoring.classMembers.MemberInfoBase; @@ -30,6 +33,7 @@ import kotlin.collections.CollectionsKt; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.idea.KotlinBundle; +import org.jetbrains.kotlin.idea.KotlinFileType; import org.jetbrains.kotlin.idea.core.util.PhysicalFileSystemUtilsKt; import org.jetbrains.kotlin.idea.refactoring.KotlinRefactoringSettings; import org.jetbrains.kotlin.idea.refactoring.memberInfo.KotlinMemberInfo; @@ -74,12 +78,15 @@ public class MoveKotlinTopLevelDeclarationsDialog extends RefactoringDialog { private JCheckBox cbApplyMPPDeclarationsMove; private KotlinMemberSelectionTable memberTable; + private final boolean freezeTargets; + public MoveKotlinTopLevelDeclarationsDialog( @NotNull Project project, @NotNull Set elementsToMove, @Nullable String targetPackageName, @Nullable PsiDirectory targetDirectory, @Nullable KtFile targetFile, + boolean freezeTargets, boolean moveToPackage, @Nullable MoveCallback moveCallback ) { @@ -88,6 +95,7 @@ public class MoveKotlinTopLevelDeclarationsDialog extends RefactoringDialog { targetPackageName, targetDirectory, targetFile, + freezeTargets, moveToPackage, KotlinRefactoringSettings.getInstance().MOVE_SEARCH_IN_COMMENTS, KotlinRefactoringSettings.getInstance().MOVE_SEARCH_FOR_TEXT, @@ -102,6 +110,7 @@ public class MoveKotlinTopLevelDeclarationsDialog extends RefactoringDialog { @Nullable String targetPackageName, @Nullable PsiDirectory targetDirectory, @Nullable KtFile targetFile, + boolean freezeTargets, boolean moveToPackage, boolean searchInComments, boolean searchForTextOccurrences, @@ -110,6 +119,7 @@ public class MoveKotlinTopLevelDeclarationsDialog extends RefactoringDialog { @Nullable MoveCallback moveCallback ) { super(project, true); + this.freezeTargets = freezeTargets; init(); @@ -127,7 +137,7 @@ public class MoveKotlinTopLevelDeclarationsDialog extends RefactoringDialog { initPackageChooser(targetPackageName, targetDirectory, sourceFiles); - initFileChooser(targetFile, elementsToMove, sourceFiles); + initFileChooser(targetFile, freezeTargets ? targetDirectory : null, elementsToMove, sourceFiles); initMoveToButtons(moveToPackage); @@ -214,6 +224,7 @@ public class MoveKotlinTopLevelDeclarationsDialog extends RefactoringDialog { ) { if (targetPackageName != null) { classPackageChooser.prependItem(targetPackageName); + classPackageChooser.setEnabled(freezeTargets); } ((KotlinDestinationFolderComboBox) destinationFolderCB).setData( @@ -225,7 +236,8 @@ public class MoveKotlinTopLevelDeclarationsDialog extends RefactoringDialog { setErrorText(s); } }, - classPackageChooser.getChildComponent() + classPackageChooser.getChildComponent(), + !freezeTargets ); } @@ -268,6 +280,7 @@ public class MoveKotlinTopLevelDeclarationsDialog extends RefactoringDialog { private void initFileChooser( @Nullable KtFile targetFile, + @Nullable PsiDirectory targetDirectory, @NotNull Set elementsToMove, @NotNull List sourceFiles ) { @@ -276,11 +289,15 @@ public class MoveKotlinTopLevelDeclarationsDialog extends RefactoringDialog { throw new AssertionError("File chooser initialization failed"); } + Module targetModule = (targetDirectory != null)? ModuleUtilCore.findModuleForPsiElement(targetDirectory) : null; + GlobalSearchScope targetModuleScope = targetModule == null ? null + : GlobalSearchScope.getScopeRestrictedByFileTypes(targetModule.getModuleScope(), KotlinFileType.INSTANCE); + fileChooser.addActionListener(e -> { KotlinFileChooserDialog dialog = new KotlinFileChooserDialog( KotlinBundle.message("text.choose.containing.file"), - myProject - ); + myProject, + targetModuleScope, getTargetPackage()); File targetFile1 = new File(fileChooser.getText()); PsiFile targetPsiFile = PhysicalFileSystemUtilsKt.toPsiFile(targetFile1, myProject); @@ -364,7 +381,7 @@ public class MoveKotlinTopLevelDeclarationsDialog extends RefactoringDialog { UIUtil.setEnabled(rbMoveToFile, !needToMoveMPPDeclarations, true); boolean moveToPackage = rbMoveToPackage.isSelected(); - classPackageChooser.setEnabled(moveToPackage); + classPackageChooser.setEnabled(moveToPackage && freezeTargets); updateFileNameInPackageField(); fileChooser.setEnabled(!moveToPackage); UIUtil.setEnabled(targetPanel, moveToPackage && !needToMoveMPPDeclarations && hasAnySourceRoots(), true); diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/ui/KotlinFileChooserDialog.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/ui/KotlinFileChooserDialog.kt index d7f88a1d9ce..3d2dfe7e47a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/ui/KotlinFileChooserDialog.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/ui/KotlinFileChooserDialog.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.idea.refactoring.ui import com.intellij.ide.util.AbstractTreeClassChooserDialog +import com.intellij.ide.util.TreeChooser import com.intellij.ide.util.gotoByName.GotoFileModel import com.intellij.openapi.project.Project import com.intellij.psi.search.FilenameIndex @@ -19,13 +20,15 @@ import javax.swing.tree.DefaultMutableTreeNode class KotlinFileChooserDialog( title: String, - project: Project + project: Project, + searchScope: GlobalSearchScope?, + packageName: String? ) : AbstractTreeClassChooserDialog( title, project, - project.projectScope().restrictToKotlinSources(), + searchScope ?: project.projectScope().restrictToKotlinSources(), KtFile::class.java, - null, + ScopeAwareClassFilter(searchScope, packageName), null, null, false, @@ -45,4 +48,20 @@ class KotlinFileChooserDialog( } override fun createChooseByNameModel() = GotoFileModel(this.project) + + /** + * Base class [AbstractTreeClassChooserDialog] unfortunately doesn't filter the file tree according to the provided "scope". + * As a workaround we use filter preventing wrong file selection. + */ + private class ScopeAwareClassFilter(val searchScope: GlobalSearchScope?, val packageName: String?) : TreeChooser.Filter { + override fun isAccepted(element: KtFile?): Boolean { + if (element == null) return false + if (searchScope == null && packageName == null) return true + + val matchesSearchScope = searchScope?.accept(element.virtualFile) ?: true + val matchesPackage = packageName?.let { element.packageFqName.asString() == it } ?: true + + return matchesSearchScope && matchesPackage + } + } } \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/roots/projectRootUtils.kt b/idea/src/org/jetbrains/kotlin/idea/roots/projectRootUtils.kt index 5eb63a27dd1..09b0c07790f 100644 --- a/idea/src/org/jetbrains/kotlin/idea/roots/projectRootUtils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/roots/projectRootUtils.kt @@ -130,6 +130,12 @@ fun getSuitableDestinationSourceRoots(project: Project): List { return roots } +fun getSuitableDestinationSourceRoots(module: Module): MutableList { + val roots = ArrayList() + collectSuitableDestinationSourceRoots(module, roots) + return roots +} + fun collectSuitableDestinationSourceRoots(module: Module, result: MutableList) { for (entry in ModuleRootManager.getInstance(module).contentEntries) { for (sourceFolder in entry.getSourceFolders(KOTLIN_AWARE_SOURCE_ROOT_TYPES)) { diff --git a/idea/src/org/jetbrains/kotlin/idea/script/ScriptTemplatesClassRootsIndex.kt b/idea/src/org/jetbrains/kotlin/idea/script/ScriptTemplatesClassRootsIndex.kt index 5381f3fc4cb..090fa264b22 100644 --- a/idea/src/org/jetbrains/kotlin/idea/script/ScriptTemplatesClassRootsIndex.kt +++ b/idea/src/org/jetbrains/kotlin/idea/script/ScriptTemplatesClassRootsIndex.kt @@ -50,6 +50,5 @@ class ScriptTemplatesClassRootsIndex : val parent = file.parent ?: return false return parent.isDirectory && parent.path.endsWith(suffix) - && file.path.endsWith(SCRIPT_DEFINITION_MARKERS_EXTENSION_WITH_DOT) } } \ No newline at end of file diff --git a/idea/testData/checker/LocalObjects.kt b/idea/testData/checker/LocalObjects.kt index d050ad6d848..2170599362c 100644 --- a/idea/testData/checker/LocalObjects.kt +++ b/idea/testData/checker/LocalObjects.kt @@ -1,3 +1,4 @@ +// FIR_COMPARISON object A { val x : Int = 0 } diff --git a/idea/testData/checker/NotFinishedGenericDeclaration.kt b/idea/testData/checker/NotFinishedGenericDeclaration.kt index f07b7e2e624..1365377a533 100644 --- a/idea/testData/checker/NotFinishedGenericDeclaration.kt +++ b/idea/testData/checker/NotFinishedGenericDeclaration.kt @@ -1,3 +1,5 @@ +// FIR_COMPARISON + class Test val localTest1 = Test() - 12 diff --git a/idea/testData/checker/infos/SmartCastsWithSafeAccess.kt b/idea/testData/checker/infos/SmartCastsWithSafeAccess.kt index e34b3f23323..146cd5f8058 100644 --- a/idea/testData/checker/infos/SmartCastsWithSafeAccess.kt +++ b/idea/testData/checker/infos/SmartCastsWithSafeAccess.kt @@ -1,3 +1,5 @@ +// FIR_COMPARISON + interface A { fun foo() } diff --git a/idea/testData/checker/regression/ClassDeclarationAfterDot2.kt b/idea/testData/checker/regression/ClassDeclarationAfterDot2.kt index 4b784e6a5f6..eb9fd988186 100644 --- a/idea/testData/checker/regression/ClassDeclarationAfterDot2.kt +++ b/idea/testData/checker/regression/ClassDeclarationAfterDot2.kt @@ -1,3 +1,5 @@ +// FIR_COMPARISON + class A fun f() { diff --git a/idea/testData/checker/regression/DestructuringDeclarationInLambda.kt b/idea/testData/checker/regression/DestructuringDeclarationInLambda.kt index a181daf6143..6e7dcf0a66c 100644 --- a/idea/testData/checker/regression/DestructuringDeclarationInLambda.kt +++ b/idea/testData/checker/regression/DestructuringDeclarationInLambda.kt @@ -1,3 +1,5 @@ +// FIR_COMPARISON + data class XY(val x: Int, val y: Int) fun convert(xy: XY, f: (XY) -> Int) = f(xy) diff --git a/idea/testData/checker/regression/PropertyDeclarationAsExpression.kt b/idea/testData/checker/regression/PropertyDeclarationAsExpression.kt index 53a9e00999e..77bffab3ac6 100644 --- a/idea/testData/checker/regression/PropertyDeclarationAsExpression.kt +++ b/idea/testData/checker/regression/PropertyDeclarationAsExpression.kt @@ -1,2 +1,4 @@ +// FIR_COMPARISON + val f = 1 > val g: Int = 3 diff --git a/idea/testData/checker/regression/createInnerInstance.kt b/idea/testData/checker/regression/createInnerInstance.kt index c891fbdf8ac..2ec19957964 100644 --- a/idea/testData/checker/regression/createInnerInstance.kt +++ b/idea/testData/checker/regression/createInnerInstance.kt @@ -1,3 +1,5 @@ +// FIR_COMPARISON + object A { class B fun foo() = 1 diff --git a/idea/testData/checker/regression/extensionMemberInClassObject.kt b/idea/testData/checker/regression/extensionMemberInClassObject.kt index 4e5a137e04c..4ef0359c9c0 100644 --- a/idea/testData/checker/regression/extensionMemberInClassObject.kt +++ b/idea/testData/checker/regression/extensionMemberInClassObject.kt @@ -1,3 +1,5 @@ +// FIR_COMPARISON + interface Bar { fun T.bar() {} } diff --git a/idea/testData/configuration/jvmProjectWithV4FacetConfig/module.iml b/idea/testData/configuration/jvmProjectWithV4FacetConfig/module.iml new file mode 100644 index 00000000000..ca7f7a87b20 --- /dev/null +++ b/idea/testData/configuration/jvmProjectWithV4FacetConfig/module.iml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/idea/testData/configuration/jvmProjectWithV4FacetConfig/projectFile.ipr b/idea/testData/configuration/jvmProjectWithV4FacetConfig/projectFile.ipr new file mode 100644 index 00000000000..a1407e2c8cd --- /dev/null +++ b/idea/testData/configuration/jvmProjectWithV4FacetConfig/projectFile.ipr @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/idea/testData/configuration/jvmProjectWithV4FacetConfig/src/foo.kt b/idea/testData/configuration/jvmProjectWithV4FacetConfig/src/foo.kt new file mode 100644 index 00000000000..e69de29bb2d diff --git a/idea/testData/configuration/loadAndSaveOldNativePlatformNewNativeFacet/module.iml b/idea/testData/configuration/loadAndSaveOldNativePlatformNewNativeFacet/module.iml index 1bb831be9cc..fdfb6b85db5 100644 --- a/idea/testData/configuration/loadAndSaveOldNativePlatformNewNativeFacet/module.iml +++ b/idea/testData/configuration/loadAndSaveOldNativePlatformNewNativeFacet/module.iml @@ -9,7 +9,6 @@ @@ -23,4 +22,4 @@ - \ No newline at end of file + diff --git a/idea/testData/configuration/loadAndSaveOldNativePlatformOldNativeFacet/module.iml b/idea/testData/configuration/loadAndSaveOldNativePlatformOldNativeFacet/module.iml index 13d086cf8b9..621852d3d56 100644 --- a/idea/testData/configuration/loadAndSaveOldNativePlatformOldNativeFacet/module.iml +++ b/idea/testData/configuration/loadAndSaveOldNativePlatformOldNativeFacet/module.iml @@ -9,7 +9,6 @@ @@ -23,4 +22,4 @@ - \ No newline at end of file + diff --git a/idea/testData/configuration/loadAndSaveProjectWithV2FacetConfig/module.iml b/idea/testData/configuration/loadAndSaveProjectWithV2FacetConfig/module.iml index 593634d6d64..0b4d94829af 100644 --- a/idea/testData/configuration/loadAndSaveProjectWithV2FacetConfig/module.iml +++ b/idea/testData/configuration/loadAndSaveProjectWithV2FacetConfig/module.iml @@ -10,7 +10,6 @@ e arguments.setApiVersion(apiVersion); arguments.setMultiPlatform(multiPlatform); - if (experimentalCoroutines != null) { - arguments.setCoroutinesState(experimentalCoroutines); - } - configureSpecificCompilerArguments(arguments, sourceRoots); try { diff --git a/libraries/tools/kotlin-noarg/build.gradle b/libraries/tools/kotlin-noarg/build.gradle index 9da1e8557c4..b30bf561c84 100644 --- a/libraries/tools/kotlin-noarg/build.gradle +++ b/libraries/tools/kotlin-noarg/build.gradle @@ -32,7 +32,7 @@ dependencies { tasks.withType(project.compileKotlin.class) { kotlinOptions.languageVersion = "1.3" kotlinOptions.apiVersion = "1.3" - kotlinOptions.freeCompilerArgs += ["-Xskip-prerelease-check"] + kotlinOptions.freeCompilerArgs += ["-Xskip-prerelease-check", "-Xskip-runtime-version-check"] } jar { diff --git a/libraries/tools/kotlin-sam-with-receiver/build.gradle b/libraries/tools/kotlin-sam-with-receiver/build.gradle index cbcae347c6a..edfe8f7b30f 100644 --- a/libraries/tools/kotlin-sam-with-receiver/build.gradle +++ b/libraries/tools/kotlin-sam-with-receiver/build.gradle @@ -32,7 +32,7 @@ dependencies { tasks.withType(project.compileKotlin.class) { kotlinOptions.languageVersion = "1.3" kotlinOptions.apiVersion = "1.3" - kotlinOptions.freeCompilerArgs += ["-Xskip-prerelease-check"] + kotlinOptions.freeCompilerArgs += ["-Xskip-prerelease-check", "-Xskip-runtime-version-check"] } jar { diff --git a/libraries/tools/kotlin-serialization/build.gradle b/libraries/tools/kotlin-serialization/build.gradle index a48c198cd24..0435633cc5f 100644 --- a/libraries/tools/kotlin-serialization/build.gradle +++ b/libraries/tools/kotlin-serialization/build.gradle @@ -23,6 +23,10 @@ dependencies { embedded(project(":kotlinx-serialization-compiler-plugin")) { transitive = false } } +tasks.withType(project.compileKotlin.class) { + kotlinOptions.freeCompilerArgs += ["-Xskip-runtime-version-check"] +} + jar { manifestAttributes(manifest, project) } diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/fullStackWebApplication/build.gradle b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/fullStackWebApplication/build.gradle index 61edc3a6071..a7d25070ee6 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/fullStackWebApplication/build.gradle +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/fullStackWebApplication/build.gradle @@ -13,7 +13,6 @@ repositories { mavenCentral() maven { url 'https://dl.bintray.com/kotlin/kotlin-js-wrappers' } maven { url 'https://dl.bintray.com/kotlin/kotlinx' } - maven { url 'https://dl.bintray.com/kotlin/ktor' } } kotlin { diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/fullStackWebApplication/build.gradle.kts b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/fullStackWebApplication/build.gradle.kts index 75eb49fc43e..32db0a3edab 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/fullStackWebApplication/build.gradle.kts +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/fullStackWebApplication/build.gradle.kts @@ -13,7 +13,6 @@ repositories { mavenCentral() maven { url = uri("https://dl.bintray.com/kotlin/kotlin-js-wrappers") } maven { url = uri("https://dl.bintray.com/kotlin/kotlinx") } - maven { url = uri("https://dl.bintray.com/kotlin/ktor") } } kotlin { diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/tests/org/jetbrains/kotlin/tools/projectWizard/cli/TestParameters.kt b/libraries/tools/new-project-wizard/new-project-wizard-cli/tests/org/jetbrains/kotlin/tools/projectWizard/cli/TestParameters.kt index e3ca53ceffb..52c5471abc2 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/tests/org/jetbrains/kotlin/tools/projectWizard/cli/TestParameters.kt +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/tests/org/jetbrains/kotlin/tools/projectWizard/cli/TestParameters.kt @@ -40,11 +40,11 @@ interface TestParameters { } private fun KParameter.parseValue(text: String): Any? = when (type.classifier as? KClass<*>) { - Boolean::class -> InTextDirectivesUtils.getPrefixedBoolean(text, name) ?: false + Boolean::class -> name?.let { InTextDirectivesUtils.getPrefixedBoolean(text, it) } ?: false else -> error("Invalid test parameter $name with type $type") } private val KClass.primaryConstructorOrError get() = primaryConstructor ?: error("Primary constructor should present") } -} \ No newline at end of file +} diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Repository.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Repository.kt index f71ce763c2f..90e87c68644 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Repository.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Repository.kt @@ -45,7 +45,7 @@ data class JetBrainsSpace(val repository: String) : CustomMavenRepository { } object Repositories { - val KTOR_BINTRAY = BintrayRepository("kotlin/ktor") + val KTOR = DefaultRepository.MAVEN_CENTRAL val KOTLINX = BintrayRepository("kotlin/kotlinx") val KOTLIN_JS_WRAPPERS_BINTRAY = BintrayRepository("kotlin/kotlin-js-wrappers") val KOTLIN_EAP_MAVEN_CENTRAL = DefaultRepository.MAVEN_CENTRAL diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/KtorServerTemplate.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/KtorServerTemplate.kt index 21bdae1083e..8f3d5fa587b 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/KtorServerTemplate.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/KtorServerTemplate.kt @@ -59,7 +59,7 @@ class KtorServerTemplate : Template() { } override fun Writer.getIrsToAddToBuildFile(module: ModuleIR): List = buildList { - +RepositoryIR(Repositories.KTOR_BINTRAY) + +RepositoryIR(Repositories.KTOR) +RepositoryIR(DefaultRepository.JCENTER) +runTaskIrs(mainClass = "ServerKt") } @@ -89,7 +89,7 @@ class KtorServerTemplate : Template() { } private fun ktorArtifactDependency(@NonNls name: String, kotlinVersion: Version) = ArtifactBasedLibraryDependencyIR( - MavenArtifact(Repositories.KTOR_BINTRAY, "io.ktor", name), + MavenArtifact(Repositories.KTOR, "io.ktor", name), Versions.KTOR, DependencyType.MAIN ) diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/AbstractListCommonizer.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/AbstractListCommonizer.kt index d8d96e4bc32..c9e88924dbf 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/AbstractListCommonizer.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/AbstractListCommonizer.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.descriptors.commonizer.core import org.jetbrains.kotlin.descriptors.commonizer.cir.CirType +import org.jetbrains.kotlin.descriptors.commonizer.utils.compactMap /** * Unlike [Commonizer] which commonizes only single elements, this [AbstractListCommonizer] commonizes lists of elements using @@ -22,7 +23,7 @@ abstract class AbstractListCommonizer( private var error = false final override val result: List - get() = checkState(commonizers, error).map { it.result } + get() = checkState(commonizers, error).compactMap { it.result } final override fun commonizeWith(next: List): Boolean { if (error) diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/TypeAliasCommonizer.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/TypeAliasCommonizer.kt index e17566f0886..5b49a0cac4b 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/TypeAliasCommonizer.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/TypeAliasCommonizer.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.commonizer.cir.* import org.jetbrains.kotlin.descriptors.commonizer.cir.factory.CirClassFactory import org.jetbrains.kotlin.descriptors.commonizer.cir.factory.CirTypeAliasFactory +import org.jetbrains.kotlin.descriptors.commonizer.cir.factory.CirTypeFactory import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.CirKnownClassifiers import org.jetbrains.kotlin.name.Name @@ -47,7 +48,7 @@ private class TypeAliasShortCircuitingCommonizer( ) : AbstractStandardCommonizer() { private lateinit var name: Name private val typeParameters = TypeParameterListCommonizer(classifiers) - private lateinit var underlyingType: CirClassOrTypeAliasType + private var underlyingType: CirClassOrTypeAliasType? = null // null means not computed yet private val expandedType = TypeCommonizer(classifiers) private val visibility = VisibilityCommonizer.lowering() @@ -56,7 +57,7 @@ private class TypeAliasShortCircuitingCommonizer( name = name, typeParameters = typeParameters.result, visibility = visibility.result, - underlyingType = computeCommonizedUnderlyingType(underlyingType), + underlyingType = underlyingType!!, expandedType = expandedType.result as CirClassType ) @@ -65,23 +66,74 @@ private class TypeAliasShortCircuitingCommonizer( override fun initialize(first: CirTypeAlias) { name = first.name - underlyingType = first.underlyingType } - override fun doCommonizeWith(next: CirTypeAlias) = - typeParameters.commonizeWith(next.typeParameters) + override fun doCommonizeWith(next: CirTypeAlias): Boolean { + if (underlyingType == null) { + underlyingType = computeUnderlyingType(next.underlyingType) ?: return false + } + + return typeParameters.commonizeWith(next.typeParameters) && expandedType.commonizeWith(next.expandedType) && visibility.commonizeWith(next) + } - private tailrec fun computeCommonizedUnderlyingType(underlyingType: CirClassOrTypeAliasType): CirClassOrTypeAliasType { + private tailrec fun computeUnderlyingType(underlyingType: CirClassOrTypeAliasType): CirClassOrTypeAliasType? { return when (underlyingType) { - is CirClassType -> underlyingType + is CirClassType -> underlyingType.withCommonizedArguments() is CirTypeAliasType -> if (classifiers.commonDependeeLibraries.hasClassifier(underlyingType.classifierId)) - underlyingType + underlyingType.withCommonizedArguments() else - computeCommonizedUnderlyingType(underlyingType.underlyingType) + computeUnderlyingType(underlyingType.underlyingType) } } + + private fun CirClassType.withCommonizedArguments(): CirClassType? { + val existingArguments = arguments + val newArguments = existingArguments.toCommonizedArguments() ?: return null + + val existingOuterType = outerType + val newOuterType = existingOuterType?.let { it.withCommonizedArguments() ?: return null } + + return if (newArguments !== existingArguments || newOuterType !== existingOuterType) + CirTypeFactory.createClassType( + classId = classifierId, + outerType = newOuterType, + visibility = visibility, + arguments = newArguments, + isMarkedNullable = isMarkedNullable + ) + else + this + } + + private fun CirTypeAliasType.withCommonizedArguments(): CirTypeAliasType? { + val existingArguments = arguments + val newArguments = existingArguments.toCommonizedArguments() ?: return null + + val existingUnderlyingType = underlyingType + val newUnderlyingType = when (existingUnderlyingType) { + is CirClassType -> existingUnderlyingType.withCommonizedArguments() + is CirTypeAliasType -> existingUnderlyingType.withCommonizedArguments() + } ?: return null + + return if (newArguments !== existingArguments || newUnderlyingType !== existingUnderlyingType) + CirTypeFactory.createTypeAliasType( + typeAliasId = classifierId, + underlyingType = newUnderlyingType, + arguments = newArguments, + isMarkedNullable = isMarkedNullable + ) + else + this + } + + @Suppress("NOTHING_TO_INLINE") + private inline fun List.toCommonizedArguments(): List? = + if (isEmpty()) + this + else + TypeArgumentListCommonizer(classifiers).let { if (it.commonizeWith(this)) it.result else null } } private class TypeAliasLiftingUpCommonizer(classifiers: CirKnownClassifiers) : AbstractStandardCommonizer() { diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/TypeArgumentCommonizer.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/TypeArgumentCommonizer.kt new file mode 100644 index 00000000000..cae7c349382 --- /dev/null +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/TypeArgumentCommonizer.kt @@ -0,0 +1,37 @@ +/* + * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.descriptors.commonizer.core + +import org.jetbrains.kotlin.descriptors.commonizer.cir.CirStarTypeProjection +import org.jetbrains.kotlin.descriptors.commonizer.cir.CirTypeProjection +import org.jetbrains.kotlin.descriptors.commonizer.cir.CirTypeProjectionImpl +import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.CirKnownClassifiers +import org.jetbrains.kotlin.types.Variance + +class TypeArgumentCommonizer( + classifiers: CirKnownClassifiers +) : AbstractStandardCommonizer() { + private var isStar = false + private lateinit var projectionKind: Variance + private val type = TypeCommonizer(classifiers) + + override fun commonizationResult() = if (isStar) CirStarTypeProjection else CirTypeProjectionImpl( + projectionKind = projectionKind, + type = type.result + ) + + override fun initialize(first: CirTypeProjection) { + when (first) { + is CirStarTypeProjection -> isStar = true + is CirTypeProjectionImpl -> projectionKind = first.projectionKind + } + } + + override fun doCommonizeWith(next: CirTypeProjection) = when (next) { + is CirStarTypeProjection -> isStar + is CirTypeProjectionImpl -> !isStar && projectionKind == next.projectionKind && type.commonizeWith(next.type) + } +} diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/TypeArgumentListCommonizer.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/TypeArgumentListCommonizer.kt new file mode 100644 index 00000000000..83af0b22cdc --- /dev/null +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/TypeArgumentListCommonizer.kt @@ -0,0 +1,13 @@ +/* + * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.descriptors.commonizer.core + +import org.jetbrains.kotlin.descriptors.commonizer.cir.CirTypeProjection +import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.CirKnownClassifiers + +class TypeArgumentListCommonizer(classifiers: CirKnownClassifiers) : AbstractListCommonizer( + singleElementCommonizerFactory = { TypeArgumentCommonizer(classifiers) } +) diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/TypeCommonizer.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/TypeCommonizer.kt index 9c3d1a70c48..1cdc893683c 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/TypeCommonizer.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/core/TypeCommonizer.kt @@ -13,7 +13,6 @@ import org.jetbrains.kotlin.descriptors.commonizer.core.CommonizedTypeAliasAnswe import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.CirKnownClassifiers import org.jetbrains.kotlin.descriptors.commonizer.utils.isUnderKotlinNativeSyntheticPackages import org.jetbrains.kotlin.name.ClassId -import org.jetbrains.kotlin.types.Variance class TypeCommonizer(private val classifiers: CirKnownClassifiers) : AbstractStandardCommonizer() { private lateinit var wrapped: Commonizer<*, CirType> @@ -190,35 +189,6 @@ private class FlexibleTypeCommonizer(classifiers: CirKnownClassifiers) : Abstrac lowerBound.commonizeWith(next.lowerBound) && upperBound.commonizeWith(next.upperBound) } -private class TypeArgumentCommonizer( - classifiers: CirKnownClassifiers -) : AbstractStandardCommonizer() { - private var isStar = false - private lateinit var projectionKind: Variance - private val type = TypeCommonizer(classifiers) - - override fun commonizationResult() = if (isStar) CirStarTypeProjection else CirTypeProjectionImpl( - projectionKind = projectionKind, - type = type.result - ) - - override fun initialize(first: CirTypeProjection) { - when (first) { - is CirStarTypeProjection -> isStar = true - is CirTypeProjectionImpl -> projectionKind = first.projectionKind - } - } - - override fun doCommonizeWith(next: CirTypeProjection) = when (next) { - is CirStarTypeProjection -> isStar - is CirTypeProjectionImpl -> !isStar && projectionKind == next.projectionKind && type.commonizeWith(next.type) - } -} - -private class TypeArgumentListCommonizer(classifiers: CirKnownClassifiers) : AbstractListCommonizer( - singleElementCommonizerFactory = { TypeArgumentCommonizer(classifiers) } -) - private fun commonizeClass(classId: ClassId, classifiers: CirKnownClassifiers): Boolean { if (classifiers.commonDependeeLibraries.hasClassifier(classId)) { // The class is from common fragment of dependee library (ex: stdlib). Already commonized. diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/utils/Interner.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/utils/Interner.kt index fa4aa613141..162f830a1d7 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/utils/Interner.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/utils/Interner.kt @@ -5,10 +5,8 @@ package org.jetbrains.kotlin.descriptors.commonizer.utils -import com.intellij.util.containers.WeakInterner - class Interner { - private val pool = WeakInterner() + private val pool = com.intellij.util.containers.Interner.createWeakInterner() fun intern(value: T): T = pool.intern(value) } diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/utils/Interner.kt.201 b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/utils/Interner.kt.201 new file mode 100644 index 00000000000..fa4aa613141 --- /dev/null +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/utils/Interner.kt.201 @@ -0,0 +1,14 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.descriptors.commonizer.utils + +import com.intellij.util.containers.WeakInterner + +class Interner { + private val pool = WeakInterner() + + fun intern(value: T): T = pool.intern(value) +} diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/utils/misc.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/utils/misc.kt index c97431cb6af..7716e7af808 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/utils/misc.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/utils/misc.kt @@ -41,6 +41,13 @@ internal inline fun Collection.compactMap(transform: (T) -> R): List mapTo(ArrayList(size), transform) } +internal inline fun Array.compactMap(transform: (T) -> R): List = + when (size) { + 0 -> emptyList() + 1 -> singletonList(transform(this[0])) + else -> mapTo(ArrayList(size), transform) + } + internal inline fun Collection.compactMapNotNull(transform: (T) -> R?): List = if (isEmpty()) emptyList() else mapNotNullTo(ArrayList(size), transform).compact() diff --git a/native/commonizer/testData/classifierCommonization/differentTypeAliasesInArguments/commonized/common/package_root.kt b/native/commonizer/testData/classifierCommonization/differentTypeAliasesInArguments/commonized/common/package_root.kt new file mode 100644 index 00000000000..a386b944de9 --- /dev/null +++ b/native/commonizer/testData/classifierCommonization/differentTypeAliasesInArguments/commonized/common/package_root.kt @@ -0,0 +1,3 @@ +typealias my_long_t = common.stuff.MyLong +typealias MyTypeAlias = common.stuff.Wrapper +expect val property: MyTypeAlias diff --git a/native/commonizer/testData/classifierCommonization/differentTypeAliasesInArguments/commonized/linux/package_root.kt b/native/commonizer/testData/classifierCommonization/differentTypeAliasesInArguments/commonized/linux/package_root.kt new file mode 100644 index 00000000000..9f537a20f78 --- /dev/null +++ b/native/commonizer/testData/classifierCommonization/differentTypeAliasesInArguments/commonized/linux/package_root.kt @@ -0,0 +1,2 @@ +typealias my_linux_long_t = common.stuff.MyLong +actual val property: MyTypeAlias = TODO() diff --git a/native/commonizer/testData/classifierCommonization/differentTypeAliasesInArguments/commonized/macos/package_root.kt b/native/commonizer/testData/classifierCommonization/differentTypeAliasesInArguments/commonized/macos/package_root.kt new file mode 100644 index 00000000000..cbd6b7778a3 --- /dev/null +++ b/native/commonizer/testData/classifierCommonization/differentTypeAliasesInArguments/commonized/macos/package_root.kt @@ -0,0 +1,2 @@ +typealias my_macos_long_t = common.stuff.MyLong +actual val property: MyTypeAlias = TODO() diff --git a/native/commonizer/testData/classifierCommonization/differentTypeAliasesInArguments/dependee/common/package_common_stuff.kt b/native/commonizer/testData/classifierCommonization/differentTypeAliasesInArguments/dependee/common/package_common_stuff.kt new file mode 100644 index 00000000000..e346c621a85 --- /dev/null +++ b/native/commonizer/testData/classifierCommonization/differentTypeAliasesInArguments/dependee/common/package_common_stuff.kt @@ -0,0 +1,4 @@ +package common.stuff + +class Wrapper +class MyLong diff --git a/native/commonizer/testData/classifierCommonization/differentTypeAliasesInArguments/original/linux/package_root.kt b/native/commonizer/testData/classifierCommonization/differentTypeAliasesInArguments/original/linux/package_root.kt new file mode 100644 index 00000000000..2814fef234d --- /dev/null +++ b/native/commonizer/testData/classifierCommonization/differentTypeAliasesInArguments/original/linux/package_root.kt @@ -0,0 +1,4 @@ +typealias my_long_t = my_linux_long_t +typealias my_linux_long_t = common.stuff.MyLong +typealias MyTypeAlias = common.stuff.Wrapper +val property: MyTypeAlias = TODO() diff --git a/native/commonizer/testData/classifierCommonization/differentTypeAliasesInArguments/original/macos/package_root.kt b/native/commonizer/testData/classifierCommonization/differentTypeAliasesInArguments/original/macos/package_root.kt new file mode 100644 index 00000000000..014269e7431 --- /dev/null +++ b/native/commonizer/testData/classifierCommonization/differentTypeAliasesInArguments/original/macos/package_root.kt @@ -0,0 +1,4 @@ +typealias my_long_t = my_macos_long_t +typealias my_macos_long_t = common.stuff.MyLong +typealias MyTypeAlias = common.stuff.Wrapper +val property: MyTypeAlias = TODO() diff --git a/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/ClassifierCommonizationFromSourcesTest.kt b/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/ClassifierCommonizationFromSourcesTest.kt index eaf9745d2b7..783438265dc 100644 --- a/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/ClassifierCommonizationFromSourcesTest.kt +++ b/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/ClassifierCommonizationFromSourcesTest.kt @@ -23,4 +23,6 @@ class ClassifierCommonizationFromSourcesTest : AbstractCommonizationFromSourcesT fun testSupertypes() = doTestSuccessfulCommonization() fun testTypeAliases() = doTestSuccessfulCommonization() + + fun testDifferentTypeAliasesInArguments() = doTestSuccessfulCommonization() } diff --git a/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/synthetic/test/AbstractAndroidBoxTest.kt b/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/synthetic/test/AbstractAndroidBoxTest.kt index 05dda7c0ddc..e7242c272cc 100755 --- a/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/synthetic/test/AbstractAndroidBoxTest.kt +++ b/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/synthetic/test/AbstractAndroidBoxTest.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.android.synthetic.test import com.intellij.openapi.util.io.FileUtil import com.intellij.util.ArrayUtil +import org.jetbrains.kotlin.ObsoleteTestInfrastructure import org.jetbrains.kotlin.cli.jvm.config.jvmClasspathRoots import org.jetbrains.kotlin.codegen.AbstractBlackBoxCodegenTest import org.jetbrains.kotlin.codegen.CodegenTestFiles @@ -20,8 +21,8 @@ import java.io.File import java.net.URL import java.util.regex.Pattern +@OptIn(ObsoleteTestInfrastructure::class) abstract class AbstractAndroidBoxTest : AbstractBlackBoxCodegenTest() { - private fun createAndroidAPIEnvironment(path: String) { return createEnvironmentForConfiguration(KotlinTestUtils.newConfiguration(ConfigurationKind.ALL, TestJdkKind.ANDROID_API), path) } diff --git a/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/synthetic/test/AbstractAndroidBytecodeShapeTest.kt b/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/synthetic/test/AbstractAndroidBytecodeShapeTest.kt index da79d6cc0ee..cb55b9fea70 100755 --- a/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/synthetic/test/AbstractAndroidBytecodeShapeTest.kt +++ b/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/synthetic/test/AbstractAndroidBytecodeShapeTest.kt @@ -34,9 +34,9 @@ abstract class AbstractAndroidBytecodeShapeTest : AbstractBytecodeTextTest() { addAndroidExtensionsRuntimeLibrary(myEnvironment) } - override fun doTest(path: String) { - val fileName = path + getTestName(true) + ".kt" - createAndroidAPIEnvironment(path) + override fun doTest(filePath: String) { + val fileName = filePath + getTestName(true) + ".kt" + createAndroidAPIEnvironment(filePath) loadFileByFullPath(fileName) val expected = readExpectedOccurrences(fileName) val actual = generateToText() diff --git a/plugins/imports-dumper/tests/org/jetbrains/kotlin/importsDumper/ImportsDumperTest.kt b/plugins/imports-dumper/tests/org/jetbrains/kotlin/importsDumper/ImportsDumperTest.kt index 23ce3c58ca0..90695549ac2 100644 --- a/plugins/imports-dumper/tests/org/jetbrains/kotlin/importsDumper/ImportsDumperTest.kt +++ b/plugins/imports-dumper/tests/org/jetbrains/kotlin/importsDumper/ImportsDumperTest.kt @@ -8,7 +8,8 @@ package org.jetbrains.kotlin.importsDumper import com.intellij.openapi.util.io.FileUtil import com.intellij.testFramework.TestDataPath import junit.framework.TestCase -import org.jetbrains.kotlin.cli.AbstractCliTest.* +import org.jetbrains.kotlin.cli.AbstractCliTest.executeCompilerGrabOutput +import org.jetbrains.kotlin.cli.AbstractCliTest.getNormalizedCompilerOutput import org.jetbrains.kotlin.cli.jvm.K2JVMCompiler import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.TestCaseWithTmpdir @@ -58,7 +59,8 @@ class ImportsDumperTest : TestCaseWithTmpdir() { tmpDir.path, "-Xplugin=${importsDumperJarInDist.path}", "-P", - "plugin:${ImportsDumperCommandLineProcessor.PLUGIN_ID}:${ImportsDumperCliOptions.DESTINATION.name}=${actualDumpFile.path}" + "plugin:${ImportsDumperCommandLineProcessor.PLUGIN_ID}:" + + "${ImportsDumperCliOptions.DESTINATION.optionName}=${actualDumpFile.path}" ) ) diff --git a/plugins/kapt3/kapt3-compiler/src/org/jetbrains/kotlin/kapt3/stubs/ClassFileToSourceStubConverter.kt b/plugins/kapt3/kapt3-compiler/src/org/jetbrains/kotlin/kapt3/stubs/ClassFileToSourceStubConverter.kt index 39bad43bd21..bd6b5b6ef8e 100644 --- a/plugins/kapt3/kapt3-compiler/src/org/jetbrains/kotlin/kapt3/stubs/ClassFileToSourceStubConverter.kt +++ b/plugins/kapt3/kapt3-compiler/src/org/jetbrains/kotlin/kapt3/stubs/ClassFileToSourceStubConverter.kt @@ -41,6 +41,7 @@ import org.jetbrains.kotlin.kapt3.base.mapJListIndexed import org.jetbrains.kotlin.kapt3.base.pairedListToMap import org.jetbrains.kotlin.kapt3.base.plus import org.jetbrains.kotlin.kapt3.base.stubs.KaptStubLineInformation +import org.jetbrains.kotlin.kapt3.base.stubs.KotlinPosition import org.jetbrains.kotlin.kapt3.base.util.TopLevelJava9Aware import org.jetbrains.kotlin.kapt3.javac.KaptJavaFileObject import org.jetbrains.kotlin.kapt3.javac.KaptTreeMaker @@ -387,27 +388,27 @@ class ClassFileToSourceStubConverter(val kaptContext: KaptContextForStubGenerati ) } - // Class methods and fields are currently sorted at serialization (see DescriptorSerializer.sort) and at deserialization (see - // DeserializedMemberScope.OptimizedImplementation#addMembers). Therefore, the contents of the generated stub files are sorted in - // incremental builds but not in clean builds. - // The consequence is that the contents of the generated stub files may not be consistent across a clean build and an incremental - // build, making the build non-deterministic and dependent tasks run unnecessarily (see KT-40882). - // To work around that, we always sort class methods and fields when outputting stub files. Once we remove the sorting at both - // serialization and deserialization (KT-20980), we can remove this workaround. - val sortedFields = clazz.fields.toList().sortedWith(compareBy({ it.name }, { it.desc })) - val sortedMethods = clazz.methods.toList().sortedWith(compareBy({ it.name }, { it.desc })) - - val fields = mapJList(sortedFields) { - if (it.isEnumValue()) null else convertField(it, clazz, lineMappings, packageFqName) + val fieldsPositions = mutableMapOf() + val fields = mapJList(clazz.fields) { fieldNode -> + if (fieldNode.isEnumValue()) { + null + } else { + convertField(fieldNode, clazz, lineMappings, packageFqName)?.also { + fieldsPositions[it] = MemberData(fieldNode.name, fieldNode.desc, lineMappings.getPosition(clazz, fieldNode)) + } + } } - val methods = mapJList(sortedMethods) { + val methodsPositions = mutableMapOf() + val methods = mapJList(clazz.methods) { methodNode -> if (isEnum) { - if (it.name == "values" && it.desc == "()[L${clazz.name};") return@mapJList null - if (it.name == "valueOf" && it.desc == "(Ljava/lang/String;)L${clazz.name};") return@mapJList null + if (methodNode.name == "values" && methodNode.desc == "()[L${clazz.name};") return@mapJList null + if (methodNode.name == "valueOf" && methodNode.desc == "(Ljava/lang/String;)L${clazz.name};") return@mapJList null } - convertMethod(it, clazz, lineMappings, packageFqName, isInner) + convertMethod(methodNode, clazz, lineMappings, packageFqName, isInner)?.also { + methodsPositions[it] = MemberData(methodNode.name, methodNode.desc, lineMappings.getPosition(clazz, methodNode)) + } } val nestedClasses = mapJList(clazz.innerClasses) { innerClass -> @@ -421,16 +422,66 @@ class ClassFileToSourceStubConverter(val kaptContext: KaptContextForStubGenerati val superTypes = calculateSuperTypes(clazz, genericType) + val classPosition = lineMappings.getPosition(clazz) + val sortedFields = JavacList.from(fields.sortedWith(MembersPositionComparator(classPosition, fieldsPositions))) + val sortedMethods = JavacList.from(methods.sortedWith(MembersPositionComparator(classPosition, methodsPositions))) + return treeMaker.ClassDef( modifiers, treeMaker.name(simpleName), genericType.typeParameters, superTypes.superClass, superTypes.interfaces, - enumValues + fields + methods + nestedClasses + enumValues + sortedFields + sortedMethods + nestedClasses ).keepKdocComments(clazz) } + private class MemberData(val name: String, val descriptor: String, val position: KotlinPosition?) + + /** + * Sort class members. If the source file for the class is unknown, just sort using name and descriptor. Otherwise: + * - all members in the same source file as the class come first (members may come from other source files) + * - members from the class are sorted using their position in the source file + * - members from other source files are sorted using their name and descriptor + * + * More details: Class methods and fields are currently sorted at serialization (see DescriptorSerializer.sort) and at deserialization + * (see DeserializedMemberScope.OptimizedImplementation#addMembers). Therefore, the contents of the generated stub files are sorted in + * incremental builds but not in clean builds. + * The consequence is that the contents of the generated stub files may not be consistent across a clean build and an incremental + * build, making the build non-deterministic and dependent tasks run unnecessarily (see KT-40882). + */ + private class MembersPositionComparator(val classSource: KotlinPosition?, val memberData: Map) : + Comparator { + override fun compare(o1: JCTree, o2: JCTree): Int { + val data1 = memberData.getValue(o1) + val data2 = memberData.getValue(o2) + classSource ?: return compareDescriptors(data1, data2) + + val position1 = data1.position + val position2 = data2.position + + return if (position1 != null && position1.path == classSource.path) { + if (position2 != null && position2.path == classSource.path) { + val positionCompare = position1.pos.compareTo(position2.pos) + if (positionCompare != 0) positionCompare + else compareDescriptors(data1, data2) + } else { + -1 + } + } else if (position2 != null && position2.path == classSource.path) { + 1 + } else { + compareDescriptors(data1, data2) + } + } + + private fun compareDescriptors(m1: MemberData, m2: MemberData): Int { + val nameComparison = m1.name.compareTo(m2.name) + if (nameComparison != 0) return nameComparison + return m1.descriptor.compareTo(m2.descriptor) + } + } + private class ClassSupertypes(val superClass: JCExpression?, val interfaces: JavacList) private fun calculateSuperTypes(clazz: ClassNode, genericType: SignatureParser.ClassGenericSignature): ClassSupertypes { diff --git a/plugins/kapt3/kapt3-compiler/src/org/jetbrains/kotlin/kapt3/stubs/KaptLineMappingCollector.kt b/plugins/kapt3/kapt3-compiler/src/org/jetbrains/kotlin/kapt3/stubs/KaptLineMappingCollector.kt index d826aa89fdf..e1b4e5ce3ae 100644 --- a/plugins/kapt3/kapt3-compiler/src/org/jetbrains/kotlin/kapt3/stubs/KaptLineMappingCollector.kt +++ b/plugins/kapt3/kapt3-compiler/src/org/jetbrains/kotlin/kapt3/stubs/KaptLineMappingCollector.kt @@ -52,6 +52,10 @@ class KaptLineMappingCollector(private val kaptContext: KaptContextForStubGenera signatureInfo[declaration.getJavacSignature()] = method.name + method.desc } + fun getPosition(clazz: ClassNode): KotlinPosition? = lineInfo[clazz.name] + fun getPosition(clazz: ClassNode, method: MethodNode): KotlinPosition? = lineInfo[clazz.name + "#" + method.name + method.desc] + fun getPosition(clazz: ClassNode, field: FieldNode): KotlinPosition? = lineInfo[clazz.name + "#" + field.name] + private fun register(asmNode: Any, fqName: String) { val psiElement = kaptContext.origins[asmNode]?.element ?: return register(fqName, psiElement) diff --git a/plugins/kapt3/kapt3-compiler/test/org/jetbrains/kotlin/kapt3/test/KotlinKapt3IntegrationTests.kt b/plugins/kapt3/kapt3-compiler/test/org/jetbrains/kotlin/kapt3/test/KotlinKapt3IntegrationTests.kt index a07123abe94..8b5682b2db2 100644 --- a/plugins/kapt3/kapt3-compiler/test/org/jetbrains/kotlin/kapt3/test/KotlinKapt3IntegrationTests.kt +++ b/plugins/kapt3/kapt3-compiler/test/org/jetbrains/kotlin/kapt3/test/KotlinKapt3IntegrationTests.kt @@ -65,7 +65,7 @@ class KotlinKapt3IntegrationTests : AbstractKotlinKapt3IntegrationTest(), Custom @Test fun testParameterNames() { - test("DefaultParameterValues", "test.Anno") { set, roundEnv, env -> + test("DefaultParameterValues", "test.Anno") { set, roundEnv, _ -> val user = roundEnv.getElementsAnnotatedWith(set.single()).single() as TypeElement val nameField = user.enclosedElements.filterIsInstance().single() assertEquals("John", nameField.constantValue) diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/aliasedImports.txt b/plugins/kapt3/kapt3-compiler/testData/converter/aliasedImports.txt index ba7cb8add43..1b67d8a629d 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/aliasedImports.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/aliasedImports.txt @@ -4,34 +4,23 @@ import a.b.ABC; @kotlin.Metadata() public final class Test { + public Test.MyDate date; + public java.util.concurrent.TimeUnit timeUnit; + public java.util.concurrent.TimeUnit microseconds; public a.b.ABC abc; public bcd bcd; - public Test.MyDate date; - public java.util.concurrent.TimeUnit microseconds; - public java.util.concurrent.TimeUnit timeUnit; public Test() { super(); } - @org.jetbrains.annotations.NotNull() - public final a.b.ABC getAbc() { - return null; - } - - @org.jetbrains.annotations.NotNull() - public final bcd getBcd() { - return null; - } - @org.jetbrains.annotations.NotNull() public final Test.MyDate getDate() { return null; } - @org.jetbrains.annotations.NotNull() - public final java.util.concurrent.TimeUnit getMicroseconds() { - return null; + public final void setDate(@org.jetbrains.annotations.NotNull() + Test.MyDate p0) { } @org.jetbrains.annotations.NotNull() @@ -39,24 +28,35 @@ public final class Test { return null; } - public final void setAbc(@org.jetbrains.annotations.NotNull() - a.b.ABC p0) { + public final void setTimeUnit(@org.jetbrains.annotations.NotNull() + java.util.concurrent.TimeUnit p0) { } - public final void setBcd(@org.jetbrains.annotations.NotNull() - bcd p0) { - } - - public final void setDate(@org.jetbrains.annotations.NotNull() - Test.MyDate p0) { + @org.jetbrains.annotations.NotNull() + public final java.util.concurrent.TimeUnit getMicroseconds() { + return null; } public final void setMicroseconds(@org.jetbrains.annotations.NotNull() java.util.concurrent.TimeUnit p0) { } - public final void setTimeUnit(@org.jetbrains.annotations.NotNull() - java.util.concurrent.TimeUnit p0) { + @org.jetbrains.annotations.NotNull() + public final a.b.ABC getAbc() { + return null; + } + + public final void setAbc(@org.jetbrains.annotations.NotNull() + a.b.ABC p0) { + } + + @org.jetbrains.annotations.NotNull() + public final bcd getBcd() { + return null; + } + + public final void setBcd(@org.jetbrains.annotations.NotNull() + bcd p0) { } @kotlin.Metadata() diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/annotations.txt b/plugins/kapt3/kapt3-compiler/testData/converter/annotations.txt index 6e63ebd5eb6..784c91d085c 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/annotations.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/annotations.txt @@ -14,23 +14,23 @@ import java.lang.System; @java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME) public abstract @interface Anno2 { + public abstract int i() default 5; + + public abstract java.lang.String s() default "ABC"; + + public abstract int[] ii() default {1, 2, 3}; + + public abstract java.lang.String[] ss() default {"A", "B"}; + public abstract Anno1 a(); - public abstract java.lang.Class[] classes(); - - public abstract java.lang.Class clazz(); - public abstract Colors color() default Colors.BLACK; public abstract Colors[] colors() default {Colors.BLACK, Colors.WHITE}; - public abstract int i() default 5; + public abstract java.lang.Class clazz(); - public abstract int[] ii() default {1, 2, 3}; - - public abstract java.lang.String s() default "ABC"; - - public abstract java.lang.String[] ss() default {"A", "B"}; + public abstract java.lang.Class[] classes(); } //////////////////// diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/annotations2.txt b/plugins/kapt3/kapt3-compiler/testData/converter/annotations2.txt index 389dc7f00bb..3b7f23b51ba 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/annotations2.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/annotations2.txt @@ -23,10 +23,10 @@ public final class AnnotationsTest { super(); } - @org.jetbrains.annotations.NotNull() - public static final java.lang.String getTopLevelVal(@Anno(value = "top-level-val-receiver") - int $this$topLevelVal) { - return null; + @Anno(value = "top-level-fun") + public static final void topLevelFun(@org.jetbrains.annotations.NotNull() + @Anno(value = "top-level-fun-receiver") + java.lang.String $this$topLevelFun) { } @Anno(value = "top-level-val") @@ -34,10 +34,10 @@ public final class AnnotationsTest { public static void getTopLevelVal$annotations(int p0) { } - @Anno(value = "top-level-fun") - public static final void topLevelFun(@org.jetbrains.annotations.NotNull() - @Anno(value = "top-level-fun-receiver") - java.lang.String $this$topLevelFun) { + @org.jetbrains.annotations.NotNull() + public static final java.lang.String getTopLevelVal(@Anno(value = "top-level-val-receiver") + int $this$topLevelVal) { + return null; } } @@ -85,18 +85,6 @@ public abstract class Test { super(); } - @org.jetbrains.annotations.NotNull() - @Anno(value = "abstract-method") - public abstract java.lang.String abstractMethod(); - - @org.jetbrains.annotations.NotNull() - public abstract java.lang.String getAbstractVal(); - - @Anno(value = "abstract-val") - @java.lang.Deprecated() - public static void getAbstractVal$annotations() { - } - @org.jetbrains.annotations.NotNull() @Anno(value = "v-get") public final java.lang.String getV() { @@ -113,4 +101,16 @@ public abstract class Test { @Anno(value = "v-setparam") java.lang.String p0) { } + + @org.jetbrains.annotations.NotNull() + @Anno(value = "abstract-method") + public abstract java.lang.String abstractMethod(); + + @org.jetbrains.annotations.NotNull() + public abstract java.lang.String getAbstractVal(); + + @Anno(value = "abstract-val") + @java.lang.Deprecated() + public static void getAbstractVal$annotations() { + } } diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/comments.txt b/plugins/kapt3/kapt3-compiler/testData/converter/comments.txt index 69e35a0fdce..2a0718cf8e7 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/comments.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/comments.txt @@ -69,6 +69,25 @@ public final class Test { super(); } + /** + * method(). + */ + public final void method() { + } + + /** + * method(int). + */ + public final void method(int a) { + } + + /** + * method(String). + */ + public final void method(@org.jetbrains.annotations.NotNull() + java.lang.String a) { + } + @org.jetbrains.annotations.NotNull() public final java.lang.String getProp2() { return null; @@ -90,25 +109,6 @@ public final class Test { return null; } - /** - * method(). - */ - public final void method() { - } - - /** - * method(int). - */ - public final void method(int a) { - } - - /** - * method(String). - */ - public final void method(@org.jetbrains.annotations.NotNull() - java.lang.String a) { - } - /** * set. */ diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/dataClass.txt b/plugins/kapt3/kapt3-compiler/testData/converter/dataClass.txt index 143928c7196..aef55aa0aa2 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/dataClass.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/dataClass.txt @@ -2,31 +2,11 @@ import java.lang.System; @kotlin.Metadata() public final class User { - private final int age = 0; @org.jetbrains.annotations.NotNull() private final java.lang.String firstName = null; @org.jetbrains.annotations.NotNull() private final java.lang.String secondName = null; - - public User(@org.jetbrains.annotations.NotNull() - java.lang.String firstName, @org.jetbrains.annotations.NotNull() - java.lang.String secondName, int age) { - super(); - } - - @org.jetbrains.annotations.NotNull() - public final java.lang.String component1() { - return null; - } - - @org.jetbrains.annotations.NotNull() - public final java.lang.String component2() { - return null; - } - - public final int component3() { - return 0; - } + private final int age = 0; @org.jetbrains.annotations.NotNull() public final User copy(@org.jetbrains.annotations.NotNull() @@ -41,31 +21,51 @@ public final class User { return false; } - public final int getAge() { + @java.lang.Override() + public int hashCode() { return 0; } + @org.jetbrains.annotations.NotNull() + @java.lang.Override() + public java.lang.String toString() { + return null; + } + + public User(@org.jetbrains.annotations.NotNull() + java.lang.String firstName, @org.jetbrains.annotations.NotNull() + java.lang.String secondName, int age) { + super(); + } + + @org.jetbrains.annotations.NotNull() + public final java.lang.String component1() { + return null; + } + @org.jetbrains.annotations.NotNull() public final java.lang.String getFirstName() { return null; } + @org.jetbrains.annotations.NotNull() + public final java.lang.String component2() { + return null; + } + @org.jetbrains.annotations.NotNull() public final java.lang.String getSecondName() { return null; } - @java.lang.Override() - public int hashCode() { + public final int component3() { + return 0; + } + + public final int getAge() { return 0; } public final void procedure() { } - - @org.jetbrains.annotations.NotNull() - @java.lang.Override() - public java.lang.String toString() { - return null; - } } diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/defaultParameterValueOff.txt b/plugins/kapt3/kapt3-compiler/testData/converter/defaultParameterValueOff.txt index 9dcf29f3c42..9e5d42614b4 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/defaultParameterValueOff.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/defaultParameterValueOff.txt @@ -16,33 +16,33 @@ import java.lang.System; @kotlin.Metadata() public final class Foo { + private final boolean z = false; private final byte b = 0; private final char c = '\u0000'; private final char c2 = '\u0000'; + private final short sh = 0; + private final int i = 0; + private final long l = 0L; + private final float f = 0.0F; + private final double d = 0.0; + @org.jetbrains.annotations.NotNull() + private final java.lang.String s = null; + @org.jetbrains.annotations.NotNull() + private final int[] iarr = null; + @org.jetbrains.annotations.NotNull() + private final long[] larr = null; + @org.jetbrains.annotations.NotNull() + private final double[] darr = null; + @org.jetbrains.annotations.NotNull() + private final java.lang.String[] sarr = null; @org.jetbrains.annotations.NotNull() private final java.lang.Class cl = null; @org.jetbrains.annotations.NotNull() private final java.lang.Class[] clarr = null; - private final double d = 0.0; - @org.jetbrains.annotations.NotNull() - private final double[] darr = null; @org.jetbrains.annotations.NotNull() private final Em em = null; @org.jetbrains.annotations.NotNull() private final Em[] emarr = null; - private final float f = 0.0F; - private final int i = 0; - @org.jetbrains.annotations.NotNull() - private final int[] iarr = null; - private final long l = 0L; - @org.jetbrains.annotations.NotNull() - private final long[] larr = null; - @org.jetbrains.annotations.NotNull() - private final java.lang.String s = null; - @org.jetbrains.annotations.NotNull() - private final java.lang.String[] sarr = null; - private final short sh = 0; - private final boolean z = false; public Foo() { super(); @@ -61,7 +61,8 @@ public final class Foo { super(); } - public final void foo(int a) { + public final boolean getZ() { + return false; } public final byte getB() { @@ -76,25 +77,61 @@ public final class Foo { return '\u0000'; } - @org.jetbrains.annotations.NotNull() - public final java.lang.Class getCl() { - return null; + public final short getSh() { + return 0; } - @org.jetbrains.annotations.NotNull() - public final java.lang.Class[] getClarr() { - return null; + public final int getI() { + return 0; + } + + public final long getL() { + return 0L; + } + + public final float getF() { + return 0.0F; } public final double getD() { return 0.0; } + @org.jetbrains.annotations.NotNull() + public final java.lang.String getS() { + return null; + } + + @org.jetbrains.annotations.NotNull() + public final int[] getIarr() { + return null; + } + + @org.jetbrains.annotations.NotNull() + public final long[] getLarr() { + return null; + } + @org.jetbrains.annotations.NotNull() public final double[] getDarr() { return null; } + @org.jetbrains.annotations.NotNull() + public final java.lang.String[] getSarr() { + return null; + } + + @org.jetbrains.annotations.NotNull() + public final java.lang.Class getCl() { + return null; + } + + @org.jetbrains.annotations.NotNull() + public final java.lang.Class[] getClarr() { + return null; + } + @org.jetbrains.annotations.NotNull() public final Em getEm() { return null; @@ -105,43 +142,6 @@ public final class Foo { return null; } - public final float getF() { - return 0.0F; - } - - public final int getI() { - return 0; - } - - @org.jetbrains.annotations.NotNull() - public final int[] getIarr() { - return null; - } - - public final long getL() { - return 0L; - } - - @org.jetbrains.annotations.NotNull() - public final long[] getLarr() { - return null; - } - - @org.jetbrains.annotations.NotNull() - public final java.lang.String getS() { - return null; - } - - @org.jetbrains.annotations.NotNull() - public final java.lang.String[] getSarr() { - return null; - } - - public final short getSh() { - return 0; - } - - public final boolean getZ() { - return false; + public final void foo(int a) { } } diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/defaultParameterValueOn.txt b/plugins/kapt3/kapt3-compiler/testData/converter/defaultParameterValueOn.txt index 78f807176f4..24a4c4bb0e4 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/defaultParameterValueOn.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/defaultParameterValueOn.txt @@ -16,33 +16,33 @@ import java.lang.System; @kotlin.Metadata() public final class Foo { + private final boolean z = true; private final byte b = (byte)0; private final char c = 'c'; private final char c2 = '\n'; + private final short sh = (short)10; + private final int i = 10; + private final long l = -10L; + private final float f = 1.0F; + private final double d = -1.0; + @org.jetbrains.annotations.NotNull() + private final java.lang.String s = "foo"; + @org.jetbrains.annotations.NotNull() + private final int[] iarr = {1, 2, 3}; + @org.jetbrains.annotations.NotNull() + private final long[] larr = {-1L, 0L, 1L}; + @org.jetbrains.annotations.NotNull() + private final double[] darr = {7.3}; + @org.jetbrains.annotations.NotNull() + private final java.lang.String[] sarr = {"a", "bc"}; @org.jetbrains.annotations.NotNull() private final java.lang.Class cl = null; @org.jetbrains.annotations.NotNull() private final java.lang.Class[] clarr = null; - private final double d = -1.0; - @org.jetbrains.annotations.NotNull() - private final double[] darr = {7.3}; @org.jetbrains.annotations.NotNull() private final Em em = Em.BAR; @org.jetbrains.annotations.NotNull() private final Em[] emarr = {Em.FOO, Em.BAR}; - private final float f = 1.0F; - private final int i = 10; - @org.jetbrains.annotations.NotNull() - private final int[] iarr = {1, 2, 3}; - private final long l = -10L; - @org.jetbrains.annotations.NotNull() - private final long[] larr = {-1L, 0L, 1L}; - @org.jetbrains.annotations.NotNull() - private final java.lang.String s = "foo"; - @org.jetbrains.annotations.NotNull() - private final java.lang.String[] sarr = {"a", "bc"}; - private final short sh = (short)10; - private final boolean z = true; public Foo() { super(); @@ -61,7 +61,8 @@ public final class Foo { super(); } - public final void foo(int a) { + public final boolean getZ() { + return false; } public final byte getB() { @@ -76,25 +77,61 @@ public final class Foo { return '\u0000'; } - @org.jetbrains.annotations.NotNull() - public final java.lang.Class getCl() { - return null; + public final short getSh() { + return 0; } - @org.jetbrains.annotations.NotNull() - public final java.lang.Class[] getClarr() { - return null; + public final int getI() { + return 0; + } + + public final long getL() { + return 0L; + } + + public final float getF() { + return 0.0F; } public final double getD() { return 0.0; } + @org.jetbrains.annotations.NotNull() + public final java.lang.String getS() { + return null; + } + + @org.jetbrains.annotations.NotNull() + public final int[] getIarr() { + return null; + } + + @org.jetbrains.annotations.NotNull() + public final long[] getLarr() { + return null; + } + @org.jetbrains.annotations.NotNull() public final double[] getDarr() { return null; } + @org.jetbrains.annotations.NotNull() + public final java.lang.String[] getSarr() { + return null; + } + + @org.jetbrains.annotations.NotNull() + public final java.lang.Class getCl() { + return null; + } + + @org.jetbrains.annotations.NotNull() + public final java.lang.Class[] getClarr() { + return null; + } + @org.jetbrains.annotations.NotNull() public final Em getEm() { return null; @@ -105,43 +142,6 @@ public final class Foo { return null; } - public final float getF() { - return 0.0F; - } - - public final int getI() { - return 0; - } - - @org.jetbrains.annotations.NotNull() - public final int[] getIarr() { - return null; - } - - public final long getL() { - return 0L; - } - - @org.jetbrains.annotations.NotNull() - public final long[] getLarr() { - return null; - } - - @org.jetbrains.annotations.NotNull() - public final java.lang.String getS() { - return null; - } - - @org.jetbrains.annotations.NotNull() - public final java.lang.String[] getSarr() { - return null; - } - - public final short getSh() { - return 0; - } - - public final boolean getZ() { - return false; + public final void foo(int a) { } } diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/deprecated.txt b/plugins/kapt3/kapt3-compiler/testData/converter/deprecated.txt index 9be873c384c..552b8a8270f 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/deprecated.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/deprecated.txt @@ -29,11 +29,6 @@ public final class Foo { public final void foo(int a) { } - @java.lang.Deprecated() - public final int getFoo() { - return 0; - } - @java.lang.Deprecated() public final int getProp() { return 0; @@ -43,6 +38,11 @@ public final class Foo { public static void getProp$annotations() { } + @java.lang.Deprecated() + public final int getFoo() { + return 0; + } + @java.lang.Deprecated() public final void setFoo(int value) { } diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/enumInCompanion.txt b/plugins/kapt3/kapt3-compiler/testData/converter/enumInCompanion.txt index 2e9cc543a88..ffe0217c9a9 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/enumInCompanion.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/enumInCompanion.txt @@ -2,9 +2,9 @@ import java.lang.System; @kotlin.Metadata() public final class Test { + private final Test.Companion.Example foo; @org.jetbrains.annotations.NotNull() public static final Test.Companion Companion = null; - private final Test.Companion.Example foo; public Test() { super(); @@ -34,9 +34,9 @@ import java.lang.System; @kotlin.Metadata() public final class Test2 { + private final Test2.Amigo.Example foo; @org.jetbrains.annotations.NotNull() public static final Test2.Amigo Amigo = null; - private final Test2.Amigo.Example foo; public Test2() { super(); @@ -98,9 +98,9 @@ import java.lang.System; @kotlin.Metadata() public final class Test4 { + private final int foo = 1; @org.jetbrains.annotations.NotNull() public static final Test4.Companion Companion = null; - private final int foo = 1; public Test4() { super(); diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/enums.txt b/plugins/kapt3/kapt3-compiler/testData/converter/enums.txt index d5464a0f098..2ce210299ff 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/enums.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/enums.txt @@ -39,11 +39,6 @@ public enum Enum2 { int col2) { } - @org.jetbrains.annotations.NotNull() - public final java.lang.String color() { - return null; - } - @org.jetbrains.annotations.NotNull() public final java.lang.String getCol() { return null; @@ -53,6 +48,11 @@ public enum Enum2 { return 0; } + @org.jetbrains.annotations.NotNull() + public final java.lang.String color() { + return null; + } + private final void privateEnumFun() { } diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/errorLocationMapping.txt b/plugins/kapt3/kapt3-compiler/testData/converter/errorLocationMapping.txt index 7964af87856..01c038bb11e 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/errorLocationMapping.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/errorLocationMapping.txt @@ -73,6 +73,41 @@ public final class ErrorInDeclarations { super(); } + @org.jetbrains.annotations.NotNull() + public final java.lang.String getP1() { + return null; + } + + public final void setP1(@org.jetbrains.annotations.NotNull() + java.lang.String p0) { + } + + @org.jetbrains.annotations.NotNull() + public final ABC getP2() { + return null; + } + + public final void setP2(@org.jetbrains.annotations.NotNull() + ABC p0) { + } + + @org.jetbrains.annotations.NotNull() + public final BCD getP3() { + return null; + } + + public final void setP3(@org.jetbrains.annotations.NotNull() + BCD p0) { + } + + public final void overloads(@org.jetbrains.annotations.NotNull() + java.lang.String a) { + } + + public final void overloads(@org.jetbrains.annotations.NotNull() + ABC a) { + } + public final void f1(@org.jetbrains.annotations.NotNull() java.lang.String a, @org.jetbrains.annotations.NotNull() ABC> b) { @@ -88,41 +123,6 @@ public final class ErrorInDeclarations { public final ABC f4() { return null; } - - @org.jetbrains.annotations.NotNull() - public final java.lang.String getP1() { - return null; - } - - @org.jetbrains.annotations.NotNull() - public final ABC getP2() { - return null; - } - - @org.jetbrains.annotations.NotNull() - public final BCD getP3() { - return null; - } - - public final void overloads(@org.jetbrains.annotations.NotNull() - ABC a) { - } - - public final void overloads(@org.jetbrains.annotations.NotNull() - java.lang.String a) { - } - - public final void setP1(@org.jetbrains.annotations.NotNull() - java.lang.String p0) { - } - - public final void setP2(@org.jetbrains.annotations.NotNull() - ABC p0) { - } - - public final void setP3(@org.jetbrains.annotations.NotNull() - BCD p0) { - } } //////////////////// diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/genericParameters.txt b/plugins/kapt3/kapt3-compiler/testData/converter/genericParameters.txt index 511e325eeb5..8cf9e9ceebd 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/genericParameters.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/genericParameters.txt @@ -2,9 +2,9 @@ import java.lang.System; @kotlin.Metadata() public final class MappedList extends kotlin.collections.AbstractList implements java.util.List { - private final kotlin.jvm.functions.Function1 function = null; @org.jetbrains.annotations.NotNull() private final java.util.List list = null; + private final kotlin.jvm.functions.Function1 function = null; public MappedList(@org.jetbrains.annotations.NotNull() java.util.List list, @org.jetbrains.annotations.NotNull() @@ -12,16 +12,16 @@ public final class MappedList getList() { return null; } + @java.lang.Override() + public R get(int index) { + return null; + } + @java.lang.Override() public int getSize() { return 0; diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/ignoredMembers.txt b/plugins/kapt3/kapt3-compiler/testData/converter/ignoredMembers.txt index 93dd767e558..660f293bc78 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/ignoredMembers.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/ignoredMembers.txt @@ -11,11 +11,11 @@ public final class Test { super(); } + public final void nonIgnoredFun() { + } + @org.jetbrains.annotations.NotNull() public final java.lang.String getNonIgnoredProperty() { return null; } - - public final void nonIgnoredFun() { - } } diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/inlineClasses.txt b/plugins/kapt3/kapt3-compiler/testData/converter/inlineClasses.txt index 82a85d03fa2..2af3842137d 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/inlineClasses.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/inlineClasses.txt @@ -14,11 +14,6 @@ public final class Cl { return false; } - @org.jetbrains.annotations.NotNull() - public final java.lang.String getA() { - return null; - } - @java.lang.Override() public int hashCode() { return 0; @@ -28,4 +23,9 @@ public final class Cl { public java.lang.String toString() { return null; } + + @org.jetbrains.annotations.NotNull() + public final java.lang.String getA() { + return null; + } } diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/interfaceImplementation.txt b/plugins/kapt3/kapt3-compiler/testData/converter/interfaceImplementation.txt index f40f0dcbf44..fe33cd8aad0 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/interfaceImplementation.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/interfaceImplementation.txt @@ -17,11 +17,6 @@ public final class Product2 implements Named { @org.jetbrains.annotations.Nullable() private java.lang.String name; - public Product2(@org.jetbrains.annotations.NotNull() - java.lang.String otherName) { - super(); - } - @org.jetbrains.annotations.Nullable() @java.lang.Override() public java.lang.String getName() { @@ -31,4 +26,9 @@ public final class Product2 implements Named { public void setName(@org.jetbrains.annotations.Nullable() java.lang.String p0) { } + + public Product2(@org.jetbrains.annotations.NotNull() + java.lang.String otherName) { + super(); + } } diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/jvmDefaultAll.txt b/plugins/kapt3/kapt3-compiler/testData/converter/jvmDefaultAll.txt index 556fbf20e9e..9deab10689b 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/jvmDefaultAll.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/jvmDefaultAll.txt @@ -3,11 +3,11 @@ import java.lang.System; @kotlin.Metadata() public abstract interface Foo { - public abstract void bar(); - public default void foo() { } public default void foo2(int a) { } + + public abstract void bar(); } diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/jvmDefaultAllCompatibility.txt b/plugins/kapt3/kapt3-compiler/testData/converter/jvmDefaultAllCompatibility.txt index eba77fd99fb..2f19e15188d 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/jvmDefaultAllCompatibility.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/jvmDefaultAllCompatibility.txt @@ -3,14 +3,14 @@ import java.lang.System; @kotlin.Metadata() public abstract interface Foo { - public abstract void bar(); - public default void foo() { } public default void foo2(int a) { } + public abstract void bar(); + @kotlin.Metadata() public static final class DefaultImpls { diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/jvmDefaultDisable.txt b/plugins/kapt3/kapt3-compiler/testData/converter/jvmDefaultDisable.txt index c8537c35787..7459312db60 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/jvmDefaultDisable.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/jvmDefaultDisable.txt @@ -3,13 +3,13 @@ import java.lang.System; @kotlin.Metadata() public abstract interface Foo { - public abstract void bar(); - public abstract void foo(); public default void foo2(int a) { } + public abstract void bar(); + @kotlin.Metadata() public static final class DefaultImpls { diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/jvmDefaultEnable.txt b/plugins/kapt3/kapt3-compiler/testData/converter/jvmDefaultEnable.txt index c8537c35787..7459312db60 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/jvmDefaultEnable.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/jvmDefaultEnable.txt @@ -3,13 +3,13 @@ import java.lang.System; @kotlin.Metadata() public abstract interface Foo { - public abstract void bar(); - public abstract void foo(); public default void foo2(int a) { } + public abstract void bar(); + @kotlin.Metadata() public static final class DefaultImpls { diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/jvmOverloads.txt b/plugins/kapt3/kapt3-compiler/testData/converter/jvmOverloads.txt index 2a3dc2061f3..1faa41a7b2c 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/jvmOverloads.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/jvmOverloads.txt @@ -55,13 +55,6 @@ public final class State2 { super(); } - public final void methodWithoutArgs() { - } - - public final void someMethod(@org.jetbrains.annotations.NotNull() - java.lang.String str) { - } - public final int test(int someInt) { return 0; } @@ -74,4 +67,11 @@ public final class State2 { java.lang.String someString) { return 0; } + + public final void someMethod(@org.jetbrains.annotations.NotNull() + java.lang.String str) { + } + + public final void methodWithoutArgs() { + } } diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/jvmStatic.txt b/plugins/kapt3/kapt3-compiler/testData/converter/jvmStatic.txt index 475d383db7e..61b7d421d7f 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/jvmStatic.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/jvmStatic.txt @@ -35,11 +35,11 @@ import java.lang.System; public final class JvmStaticTest { @org.jetbrains.annotations.NotNull() public static final JvmStaticTest.Companion Companion = null; - public static final char c = 'C'; - public final char d = 'D'; private static final int one = 1; - public final byte three = (byte)3; public static final int two = 2; + public static final char c = 'C'; + public final byte three = (byte)3; + public final char d = 'D'; public JvmStaticTest() { super(); diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/kt14996.txt b/plugins/kapt3/kapt3-compiler/testData/converter/kt14996.txt index b31105677bc..a7516a202c5 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/kt14996.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/kt14996.txt @@ -7,15 +7,15 @@ public final class Kt14996Kt { super(); } - @org.jetbrains.annotations.NotNull() - public static final java.lang.CharSequence crashMe(@org.jetbrains.annotations.NotNull() - java.util.List values) { - return null; - } - @org.jetbrains.annotations.NotNull() public static final java.lang.String crashMe(@org.jetbrains.annotations.NotNull() java.util.List values) { return null; } + + @org.jetbrains.annotations.NotNull() + public static final java.lang.CharSequence crashMe(@org.jetbrains.annotations.NotNull() + java.util.List values) { + return null; + } } diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/kt14998.txt b/plugins/kapt3/kapt3-compiler/testData/converter/kt14998.txt index 45a73433e10..0110f7603f3 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/kt14998.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/kt14998.txt @@ -13,10 +13,10 @@ public final class Outer { @kotlin.Metadata() final class Inner { - @org.jetbrains.annotations.NotNull() - private final java.lang.String bar = null; @org.jetbrains.annotations.NotNull() private final java.lang.String foo = null; + @org.jetbrains.annotations.NotNull() + private final java.lang.String bar = null; public Inner(@org.jetbrains.annotations.NotNull() java.lang.String foo, @org.jetbrains.annotations.NotNull() @@ -25,22 +25,22 @@ public final class Outer { } @org.jetbrains.annotations.NotNull() - public final java.lang.String getBar() { + public final java.lang.String getFoo() { return null; } @org.jetbrains.annotations.NotNull() - public final java.lang.String getFoo() { + public final java.lang.String getBar() { return null; } } @kotlin.Metadata() static final class Nested { - @org.jetbrains.annotations.NotNull() - private final java.lang.String bar = null; @org.jetbrains.annotations.NotNull() private final java.lang.String foo = null; + @org.jetbrains.annotations.NotNull() + private final java.lang.String bar = null; public Nested(@org.jetbrains.annotations.NotNull() java.lang.String foo, @org.jetbrains.annotations.NotNull() @@ -49,12 +49,12 @@ public final class Outer { } @org.jetbrains.annotations.NotNull() - public final java.lang.String getBar() { + public final java.lang.String getFoo() { return null; } @org.jetbrains.annotations.NotNull() - public final java.lang.String getFoo() { + public final java.lang.String getBar() { return null; } } diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/kt18791.txt b/plugins/kapt3/kapt3-compiler/testData/converter/kt18791.txt index d3ea90577db..13e41a64a9a 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/kt18791.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/kt18791.txt @@ -99,12 +99,12 @@ public final class JJ { } @org.jetbrains.annotations.NotNull() - public final java.lang.String c() { + public final java.lang.String getB() { return null; } @org.jetbrains.annotations.NotNull() - public final java.lang.String getB() { + public final java.lang.String c() { return null; } } @@ -140,27 +140,6 @@ public final class MyActivity { super(); } - @Bind(id = lib.R.id.textView) - public final void foo() { - } - - @Bind(id = lib.R.id.textView) - public final void foo2() { - } - - @Bind(id = app.R.layout.mainActivity) - public final void foo3() { - } - - @Bind(id = app.R.layout.mainActivity) - public final void foo4() { - } - - @Anno(a1 = app.B.a1, a2 = app.B.a2, a3 = app.B.a3, a4 = app.B.a4, a5 = app.B.a5, a6 = app.B.a6, a7 = app.B.a7, a8 = app.B.a8, a9 = "A") - @Bind(id = app.R2.layout.mainActivity) - public final void foo5() { - } - public final int getA() { return 0; } @@ -216,6 +195,31 @@ public final class MyActivity { public static void getF$annotations() { } + @Bind(id = lib.R.id.textView) + public final void foo() { + } + + @Bind(id = lib.R.id.textView) + public final void foo2() { + } + + @Bind(id = app.R.layout.mainActivity) + public final void foo3() { + } + + @Bind(id = app.R.layout.mainActivity) + public final void foo4() { + } + + @Anno(a1 = app.B.a1, a2 = app.B.a2, a3 = app.B.a3, a4 = app.B.a4, a5 = app.B.a5, a6 = app.B.a6, a7 = app.B.a7, a8 = app.B.a8, a9 = "A") + @Bind(id = app.R2.layout.mainActivity) + public final void foo5() { + } + + @Bind(id = app.B.id.textView) + public final void plainIntConstant() { + } + public final int getPropB() { return 0; } @@ -224,16 +228,12 @@ public final class MyActivity { return 0; } + public final void setPropC(int p0) { + } + public final int getPropF() { return 0; } - - @Bind(id = app.B.id.textView) - public final void plainIntConstant() { - } - - public final void setPropC(int p0) { - } } //////////////////// diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/kt24272.txt b/plugins/kapt3/kapt3-compiler/testData/converter/kt24272.txt index 99e83853ff7..f2b7d34d2a1 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/kt24272.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/kt24272.txt @@ -2,9 +2,9 @@ import java.lang.System; @kotlin.Metadata() public final class Foo { + private final java.lang.String string = null; @org.jetbrains.annotations.NotNull() private final Foo.Bar bar = null; - private final java.lang.String string = null; public Foo(@org.jetbrains.annotations.NotNull() java.lang.String string) { @@ -18,10 +18,10 @@ public final class Foo { @kotlin.Metadata() public static final class Bar { - @org.jetbrains.annotations.NotNull() - private final java.util.ArrayList bars = null; @org.jetbrains.annotations.NotNull() private final java.lang.String string = null; + @org.jetbrains.annotations.NotNull() + private final java.util.ArrayList bars = null; public Bar(@org.jetbrains.annotations.NotNull() java.lang.String string) { @@ -29,12 +29,12 @@ public final class Foo { } @org.jetbrains.annotations.NotNull() - public final java.util.ArrayList getBars() { + public final java.lang.String getString() { return null; } @org.jetbrains.annotations.NotNull() - public final java.lang.String getString() { + public final java.util.ArrayList getBars() { return null; } } diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/kt25071.txt b/plugins/kapt3/kapt3-compiler/testData/converter/kt25071.txt index 47d5bea2ace..2010763a1d6 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/kt25071.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/kt25071.txt @@ -4,15 +4,19 @@ import java.lang.System; @kotlin.Metadata() public final class StaticImport { + private final java.util.Collection x = null; private final kapt.StaticMethod l = null; private final kapt.StaticMethod m = null; - private final java.util.Collection x = null; private final int y = 0; public StaticImport() { super(); } + public final java.util.Collection getX() { + return null; + } + public final kapt.StaticMethod getL() { return null; } @@ -21,10 +25,6 @@ public final class StaticImport { return null; } - public final java.util.Collection getX() { - return null; - } - public final int getY() { return 0; } diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/kt27126.txt b/plugins/kapt3/kapt3-compiler/testData/converter/kt27126.txt index 3abef07994c..7bcb6b6b5a7 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/kt27126.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/kt27126.txt @@ -10,6 +10,13 @@ public abstract class BundleProperty extends test.N super(null); } + @java.lang.Override() + public final void setValue(@org.jetbrains.annotations.NotNull() + java.lang.Object thisRef, @org.jetbrains.annotations.NotNull() + kotlin.reflect.KProperty property, @org.jetbrains.annotations.Nullable() + AA value) { + } + @java.lang.Override() public final AA getValue(@org.jetbrains.annotations.NotNull() java.lang.Object thisRef, @org.jetbrains.annotations.NotNull() @@ -27,13 +34,6 @@ public abstract class BundleProperty extends test.N public abstract void setValue(@org.jetbrains.annotations.NotNull() java.lang.Object bundle, @org.jetbrains.annotations.NotNull() java.lang.String key, AA value); - - @java.lang.Override() - public final void setValue(@org.jetbrains.annotations.NotNull() - java.lang.Object thisRef, @org.jetbrains.annotations.NotNull() - kotlin.reflect.KProperty property, @org.jetbrains.annotations.Nullable() - AA value) { - } } //////////////////// @@ -72,10 +72,9 @@ public abstract class NullableBundleProperty implem super(); } - @org.jetbrains.annotations.Nullable() - public abstract EE getValue(@org.jetbrains.annotations.NotNull() - java.lang.Object bundle, @org.jetbrains.annotations.NotNull() - java.lang.String key); + private final java.lang.String toKey(kotlin.reflect.KProperty $this$toKey) { + return null; + } @org.jetbrains.annotations.Nullable() @java.lang.Override() @@ -85,11 +84,6 @@ public abstract class NullableBundleProperty implem return null; } - public abstract void setNullableValue(@org.jetbrains.annotations.NotNull() - java.lang.Object bundle, @org.jetbrains.annotations.NotNull() - java.lang.String key, @org.jetbrains.annotations.Nullable() - EE value); - @java.lang.Override() public void setValue(@org.jetbrains.annotations.NotNull() java.lang.Object thisRef, @org.jetbrains.annotations.NotNull() @@ -97,7 +91,13 @@ public abstract class NullableBundleProperty implem EE value) { } - private final java.lang.String toKey(kotlin.reflect.KProperty $this$toKey) { - return null; - } + @org.jetbrains.annotations.Nullable() + public abstract EE getValue(@org.jetbrains.annotations.NotNull() + java.lang.Object bundle, @org.jetbrains.annotations.NotNull() + java.lang.String key); + + public abstract void setNullableValue(@org.jetbrains.annotations.NotNull() + java.lang.Object bundle, @org.jetbrains.annotations.NotNull() + java.lang.String key, @org.jetbrains.annotations.Nullable() + EE value); } diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/lazyProperty.txt b/plugins/kapt3/kapt3-compiler/testData/converter/lazyProperty.txt index bca7d1b6c14..5069d02bbc1 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/lazyProperty.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/lazyProperty.txt @@ -2,15 +2,19 @@ import java.lang.System; @kotlin.Metadata() public final class Foo { + private final kotlin.Lazy foo$delegate = null; private final kotlin.Lazy bar$delegate = null; private final kotlin.Lazy baz$delegate = null; - private final kotlin.Lazy foo$delegate = null; private final kotlin.Lazy generic1$delegate = null; public Foo() { super(); } + private final java.lang.Runnable getFoo() { + return null; + } + private final java.lang.Object getBar() { return null; } @@ -19,10 +23,6 @@ public final class Foo { return null; } - private final java.lang.Runnable getFoo() { - return null; - } - private final GenericIntf getGeneric1() { return null; } diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/methodParameterNames.txt b/plugins/kapt3/kapt3-compiler/testData/converter/methodParameterNames.txt index 35c868cb5b2..c8a55f8c834 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/methodParameterNames.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/methodParameterNames.txt @@ -7,13 +7,13 @@ public abstract class Cls { super(); } + public abstract void foo(@org.jetbrains.annotations.NotNull() + java.lang.String abc); + @org.jetbrains.annotations.NotNull() public final java.lang.String bar(int bcd) { return null; } - - public abstract void foo(@org.jetbrains.annotations.NotNull() - java.lang.String abc); } //////////////////// @@ -24,12 +24,12 @@ import java.lang.System; @kotlin.Metadata() public abstract interface Intf { - @org.jetbrains.annotations.NotNull() - public abstract java.lang.String bar(int bcd); - public abstract void foo(@org.jetbrains.annotations.NotNull() java.lang.String abc); + @org.jetbrains.annotations.NotNull() + public abstract java.lang.String bar(int bcd); + @kotlin.Metadata() public static final class DefaultImpls { diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/modifiers.txt b/plugins/kapt3/kapt3-compiler/testData/converter/modifiers.txt index ea063374792..8f1af9fe7bd 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/modifiers.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/modifiers.txt @@ -47,6 +47,13 @@ public final class Modifiers { return null; } + public final void setVolatileField(@org.jetbrains.annotations.NotNull() + java.lang.String p0) { + } + + public final strictfp void strictFp() { + } + @org.jetbrains.annotations.NotNull() public final java.lang.String overloads() { return null; @@ -63,13 +70,6 @@ public final class Modifiers { java.lang.String a, int n) { return null; } - - public final void setVolatileField(@org.jetbrains.annotations.NotNull() - java.lang.String p0) { - } - - public final strictfp void strictFp() { - } } //////////////////// diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/multifileClass.txt b/plugins/kapt3/kapt3-compiler/testData/converter/multifileClass.txt index c30ab5f953f..0229ecb99f8 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/multifileClass.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/multifileClass.txt @@ -9,10 +9,10 @@ public final class M1 { super(); } - public static final void bar() { + public static final void foo() { } - public static final void foo() { + public static final void bar() { } } diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/nestedClasses.txt b/plugins/kapt3/kapt3-compiler/testData/converter/nestedClasses.txt index e51f108525d..bf711ec1789 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/nestedClasses.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/nestedClasses.txt @@ -10,14 +10,14 @@ public final class A { } @org.jetbrains.annotations.Nullable() - public final A f1(@org.jetbrains.annotations.NotNull() - A a, @org.jetbrains.annotations.NotNull() - A.B b) { + public final A getX() { return null; } @org.jetbrains.annotations.Nullable() - public final A getX() { + public final A f1(@org.jetbrains.annotations.NotNull() + A a, @org.jetbrains.annotations.NotNull() + A.B b) { return null; } diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/nestedClasses2.txt b/plugins/kapt3/kapt3-compiler/testData/converter/nestedClasses2.txt index cebef3ed0e0..613554429f4 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/nestedClasses2.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/nestedClasses2.txt @@ -4,10 +4,10 @@ import java.lang.System; public final class A$B { public A$B.C c; public A$B.D$E de; - public A$B.D$$E dee; - public A$B.D$$$E deee; public J$B.C jc; public J$B.D$E jde; + public A$B.D$$E dee; + public A$B.D$$$E deee; public J$B.D$$E jdee; public J$B.D$$$E jdeee; @@ -89,16 +89,16 @@ public final class Experiment { @Experiment.Type() public static final class Group { - public Group(@org.jetbrains.annotations.NotNull() - java.lang.String s) { - super(); - } - @org.jetbrains.annotations.NotNull() public final Experiment.Group copy(@org.jetbrains.annotations.NotNull() java.lang.String s) { return null; } + + public Group(@org.jetbrains.annotations.NotNull() + java.lang.String s) { + super(); + } } } @@ -250,6 +250,11 @@ public final class Test1 extends Foo.Bar implements IFoo.IBar, IFoo.IBar.IZoo { super(); } + @org.jetbrains.annotations.NotNull() + public final Foo.Bar.Zoo getZoo() { + return null; + } + @org.jetbrains.annotations.NotNull() public final java.lang.Thread.State a() { return null; @@ -259,9 +264,4 @@ public final class Test1 extends Foo.Bar implements IFoo.IBar, IFoo.IBar.IZoo { JavaClass.Foo foo, @org.jetbrains.annotations.NotNull() JavaClass.Foo.Bar bar) { } - - @org.jetbrains.annotations.NotNull() - public final Foo.Bar.Zoo getZoo() { - return null; - } } diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/nestedClassesNonRootPackage.txt b/plugins/kapt3/kapt3-compiler/testData/converter/nestedClassesNonRootPackage.txt index fa4e412063a..2360182ec51 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/nestedClassesNonRootPackage.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/nestedClassesNonRootPackage.txt @@ -6,10 +6,10 @@ import java.lang.System; public final class A$B { public test.A$B.C c; public test.A$B.D$E de; - public test.A$B.D$$E dee; - public test.A$B.D$$$E deee; public test.J$B.C jc; public test.J$B.D$E jde; + public test.A$B.D$$E dee; + public test.A$B.D$$$E deee; public test.J$B.D$$E jdee; public test.J$B.D$$$E jdeee; @@ -92,16 +92,16 @@ public final class Experiment { @test.Experiment.Type() public static final class Group { - public Group(@org.jetbrains.annotations.NotNull() - java.lang.String s) { - super(); - } - @org.jetbrains.annotations.NotNull() public final test.Experiment.Group copy(@org.jetbrains.annotations.NotNull() java.lang.String s) { return null; } + + public Group(@org.jetbrains.annotations.NotNull() + java.lang.String s) { + super(); + } } } @@ -258,6 +258,11 @@ public final class Test1 extends test.Foo.Bar implements test.IFoo.IBar, test.IF super(); } + @org.jetbrains.annotations.NotNull() + public final test.Foo.Bar.Zoo getZoo() { + return null; + } + @org.jetbrains.annotations.NotNull() public final java.lang.Thread.State a() { return null; @@ -267,9 +272,4 @@ public final class Test1 extends test.Foo.Bar implements test.IFoo.IBar, test.IF test.JavaClass.Foo foo, @org.jetbrains.annotations.NotNull() test.JavaClass.Foo.Bar bar) { } - - @org.jetbrains.annotations.NotNull() - public final test.Foo.Bar.Zoo getZoo() { - return null; - } } diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/nonExistentClass.txt b/plugins/kapt3/kapt3-compiler/testData/converter/nonExistentClass.txt index 674182486da..48b215d42b8 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/nonExistentClass.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/nonExistentClass.txt @@ -18,19 +18,6 @@ public final class NonExistentType { super(); } - @org.jetbrains.annotations.NotNull() - public final ABCDEF a(@org.jetbrains.annotations.NotNull() - ABCDEF a, @org.jetbrains.annotations.NotNull() - java.lang.String s) { - return null; - } - - @org.jetbrains.annotations.NotNull() - public final ABCDEF b(@org.jetbrains.annotations.NotNull() - java.lang.String s) { - return null; - } - @org.jetbrains.annotations.Nullable() public final ABCDEF getA() { return null; @@ -50,6 +37,19 @@ public final class NonExistentType { public final ABCDEF, kotlin.Unit>> getD() { return null; } + + @org.jetbrains.annotations.NotNull() + public final ABCDEF a(@org.jetbrains.annotations.NotNull() + ABCDEF a, @org.jetbrains.annotations.NotNull() + java.lang.String s) { + return null; + } + + @org.jetbrains.annotations.NotNull() + public final ABCDEF b(@org.jetbrains.annotations.NotNull() + java.lang.String s) { + return null; + } } //////////////////// diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/nonExistentClassTypesConversion.txt b/plugins/kapt3/kapt3-compiler/testData/converter/nonExistentClassTypesConversion.txt index d6e2263e680..24062b67531 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/nonExistentClassTypesConversion.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/nonExistentClassTypesConversion.txt @@ -53,11 +53,6 @@ public final class Test { private final ABC b = null; @org.jetbrains.annotations.Nullable() private final java.util.List c = null; - public ABC coocoo; - public ABC coocoo2; - public ABC coocoo21; - public ABC coocoo3; - public ABC> coocoo31; @org.jetbrains.annotations.Nullable() private final java.util.List>>> d = null; public java.util.List> e; @@ -68,19 +63,211 @@ public final class Test { public Function0 j; public Function2, CDE> k; public ABC.BCD.EFG l; + public ABC coocoo; + public ABC coocoo2; + public ABC coocoo21; + public ABC coocoo3; + public ABC> coocoo31; + public ABC nested; @org.jetbrains.annotations.NotNull() private final java.lang.Object m = null; @org.jetbrains.annotations.NotNull() private final java.lang.String n = ""; - public ABC nested; - public java.util.List>>>>>>>> o10; public java.util.List>>>>>>>>> o11; + public java.util.List>>>>>>>> o10; public java.util.Calendar.Builder p; public Test() { super(); } + @org.jetbrains.annotations.NotNull() + public final ABC getA() { + return null; + } + + public final void setA(@org.jetbrains.annotations.NotNull() + ABC p0) { + } + + @org.jetbrains.annotations.Nullable() + public final ABC getB() { + return null; + } + + @org.jetbrains.annotations.Nullable() + public final java.util.List getC() { + return null; + } + + @org.jetbrains.annotations.Nullable() + public final java.util.List>>> getD() { + return null; + } + + @org.jetbrains.annotations.NotNull() + public final java.util.List> getE() { + return null; + } + + public final void setE(@org.jetbrains.annotations.NotNull() + java.util.List> p0) { + } + + @org.jetbrains.annotations.NotNull() + public final ABC getF() { + return null; + } + + public final void setF(@org.jetbrains.annotations.NotNull() + ABC p0) { + } + + @org.jetbrains.annotations.NotNull() + public final java.util.List getG() { + return null; + } + + public final void setG(@org.jetbrains.annotations.NotNull() + java.util.List p0) { + } + + @org.jetbrains.annotations.NotNull() + public final ABC getH() { + return null; + } + + public final void setH(@org.jetbrains.annotations.NotNull() + ABC p0) { + } + + @org.jetbrains.annotations.NotNull() + public final Function2, CDE> getI() { + return null; + } + + public final void setI(@org.jetbrains.annotations.NotNull() + Function2, CDE> p0) { + } + + @org.jetbrains.annotations.NotNull() + public final Function0 getJ() { + return null; + } + + public final void setJ(@org.jetbrains.annotations.NotNull() + Function0 p0) { + } + + @org.jetbrains.annotations.NotNull() + public final Function2, CDE> getK() { + return null; + } + + public final void setK(@org.jetbrains.annotations.NotNull() + Function2, CDE> p0) { + } + + @org.jetbrains.annotations.NotNull() + public final ABC.BCD.EFG getL() { + return null; + } + + public final void setL(@org.jetbrains.annotations.NotNull() + ABC.BCD.EFG p0) { + } + + @org.jetbrains.annotations.NotNull() + public final ABC getCoocoo() { + return null; + } + + public final void setCoocoo(@org.jetbrains.annotations.NotNull() + ABC p0) { + } + + @org.jetbrains.annotations.NotNull() + public final ABC getCoocoo2() { + return null; + } + + public final void setCoocoo2(@org.jetbrains.annotations.NotNull() + ABC p0) { + } + + @org.jetbrains.annotations.NotNull() + public final ABC getCoocoo21() { + return null; + } + + public final void setCoocoo21(@org.jetbrains.annotations.NotNull() + ABC p0) { + } + + @org.jetbrains.annotations.NotNull() + public final ABC getCoocoo3() { + return null; + } + + public final void setCoocoo3(@org.jetbrains.annotations.NotNull() + ABC p0) { + } + + @org.jetbrains.annotations.NotNull() + public final ABC> getCoocoo31() { + return null; + } + + public final void setCoocoo31(@org.jetbrains.annotations.NotNull() + ABC> p0) { + } + + @org.jetbrains.annotations.NotNull() + public final ABC getNested() { + return null; + } + + public final void setNested(@org.jetbrains.annotations.NotNull() + ABC p0) { + } + + @org.jetbrains.annotations.NotNull() + public final java.lang.Object getM() { + return null; + } + + @org.jetbrains.annotations.NotNull() + public final java.lang.String getN() { + return null; + } + + @org.jetbrains.annotations.NotNull() + public final java.util.List>>>>>>>>> getO11() { + return null; + } + + public final void setO11(@org.jetbrains.annotations.NotNull() + java.util.List>>>>>>>>> p0) { + } + + @org.jetbrains.annotations.NotNull() + public final java.util.List>>>>>>>> getO10() { + return null; + } + + public final void setO10(@org.jetbrains.annotations.NotNull() + java.util.List>>>>>>>> p0) { + } + + @org.jetbrains.annotations.NotNull() + public final java.util.Calendar.Builder getP() { + return null; + } + + public final void setP(@org.jetbrains.annotations.NotNull() + java.util.Calendar.Builder p0) { + } + @org.jetbrains.annotations.Nullable() public final BCD f1(@org.jetbrains.annotations.NotNull() ABC a) { @@ -106,193 +293,6 @@ public final class Test { MyType $this$f5) { return null; } - - @org.jetbrains.annotations.NotNull() - public final ABC getA() { - return null; - } - - @org.jetbrains.annotations.Nullable() - public final ABC getB() { - return null; - } - - @org.jetbrains.annotations.Nullable() - public final java.util.List getC() { - return null; - } - - @org.jetbrains.annotations.NotNull() - public final ABC getCoocoo() { - return null; - } - - @org.jetbrains.annotations.NotNull() - public final ABC getCoocoo2() { - return null; - } - - @org.jetbrains.annotations.NotNull() - public final ABC getCoocoo21() { - return null; - } - - @org.jetbrains.annotations.NotNull() - public final ABC getCoocoo3() { - return null; - } - - @org.jetbrains.annotations.NotNull() - public final ABC> getCoocoo31() { - return null; - } - - @org.jetbrains.annotations.Nullable() - public final java.util.List>>> getD() { - return null; - } - - @org.jetbrains.annotations.NotNull() - public final java.util.List> getE() { - return null; - } - - @org.jetbrains.annotations.NotNull() - public final ABC getF() { - return null; - } - - @org.jetbrains.annotations.NotNull() - public final java.util.List getG() { - return null; - } - - @org.jetbrains.annotations.NotNull() - public final ABC getH() { - return null; - } - - @org.jetbrains.annotations.NotNull() - public final Function2, CDE> getI() { - return null; - } - - @org.jetbrains.annotations.NotNull() - public final Function0 getJ() { - return null; - } - - @org.jetbrains.annotations.NotNull() - public final Function2, CDE> getK() { - return null; - } - - @org.jetbrains.annotations.NotNull() - public final ABC.BCD.EFG getL() { - return null; - } - - @org.jetbrains.annotations.NotNull() - public final java.lang.Object getM() { - return null; - } - - @org.jetbrains.annotations.NotNull() - public final java.lang.String getN() { - return null; - } - - @org.jetbrains.annotations.NotNull() - public final ABC getNested() { - return null; - } - - @org.jetbrains.annotations.NotNull() - public final java.util.List>>>>>>>> getO10() { - return null; - } - - @org.jetbrains.annotations.NotNull() - public final java.util.List>>>>>>>>> getO11() { - return null; - } - - @org.jetbrains.annotations.NotNull() - public final java.util.Calendar.Builder getP() { - return null; - } - - public final void setA(@org.jetbrains.annotations.NotNull() - ABC p0) { - } - - public final void setCoocoo(@org.jetbrains.annotations.NotNull() - ABC p0) { - } - - public final void setCoocoo2(@org.jetbrains.annotations.NotNull() - ABC p0) { - } - - public final void setCoocoo21(@org.jetbrains.annotations.NotNull() - ABC p0) { - } - - public final void setCoocoo3(@org.jetbrains.annotations.NotNull() - ABC p0) { - } - - public final void setCoocoo31(@org.jetbrains.annotations.NotNull() - ABC> p0) { - } - - public final void setE(@org.jetbrains.annotations.NotNull() - java.util.List> p0) { - } - - public final void setF(@org.jetbrains.annotations.NotNull() - ABC p0) { - } - - public final void setG(@org.jetbrains.annotations.NotNull() - java.util.List p0) { - } - - public final void setH(@org.jetbrains.annotations.NotNull() - ABC p0) { - } - - public final void setI(@org.jetbrains.annotations.NotNull() - Function2, CDE> p0) { - } - - public final void setJ(@org.jetbrains.annotations.NotNull() - Function0 p0) { - } - - public final void setK(@org.jetbrains.annotations.NotNull() - Function2, CDE> p0) { - } - - public final void setL(@org.jetbrains.annotations.NotNull() - ABC.BCD.EFG p0) { - } - - public final void setNested(@org.jetbrains.annotations.NotNull() - ABC p0) { - } - - public final void setO10(@org.jetbrains.annotations.NotNull() - java.util.List>>>>>>>> p0) { - } - - public final void setO11(@org.jetbrains.annotations.NotNull() - java.util.List>>>>>>>>> p0) { - } - - public final void setP(@org.jetbrains.annotations.NotNull() - java.util.Calendar.Builder p0) { - } } //////////////////// diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/nonExistentClassWIthoutCorrection.txt b/plugins/kapt3/kapt3-compiler/testData/converter/nonExistentClassWIthoutCorrection.txt index 0d7b08151a8..e59b292bb5f 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/nonExistentClassWIthoutCorrection.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/nonExistentClassWIthoutCorrection.txt @@ -20,32 +20,19 @@ public final class NonExistentType { private static final java.util.List b = null; @org.jetbrains.annotations.NotNull() private static final kotlin.jvm.functions.Function1 c = null; + @org.jetbrains.annotations.Nullable() + private static final error.NonExistentClass d = null; + public static java.lang.String string2; public static error.NonExistentClass coocoo; public static error.NonExistentClass coocoo2; public static error.NonExistentClass coocoo21; public static error.NonExistentClass coocoo3; public static error.NonExistentClass coocoo31; - @org.jetbrains.annotations.Nullable() - private static final error.NonExistentClass d = null; - public static java.lang.String string2; private NonExistentType() { super(); } - @org.jetbrains.annotations.NotNull() - public final error.NonExistentClass a(@org.jetbrains.annotations.NotNull() - error.NonExistentClass a, @org.jetbrains.annotations.NotNull() - java.lang.String s) { - return null; - } - - @org.jetbrains.annotations.NotNull() - public final error.NonExistentClass b(@org.jetbrains.annotations.NotNull() - java.lang.String s) { - return null; - } - @org.jetbrains.annotations.Nullable() public final error.NonExistentClass getA() { return null; @@ -61,31 +48,6 @@ public final class NonExistentType { return null; } - @org.jetbrains.annotations.NotNull() - public final error.NonExistentClass getCoocoo() { - return null; - } - - @org.jetbrains.annotations.NotNull() - public final error.NonExistentClass getCoocoo2() { - return null; - } - - @org.jetbrains.annotations.NotNull() - public final error.NonExistentClass getCoocoo21() { - return null; - } - - @org.jetbrains.annotations.NotNull() - public final error.NonExistentClass getCoocoo3() { - return null; - } - - @org.jetbrains.annotations.NotNull() - public final error.NonExistentClass getCoocoo31() { - return null; - } - @org.jetbrains.annotations.Nullable() public final error.NonExistentClass getD() { return null; @@ -96,28 +58,66 @@ public final class NonExistentType { return null; } + public final void setString2(@org.jetbrains.annotations.NotNull() + java.lang.String p0) { + } + + @org.jetbrains.annotations.NotNull() + public final error.NonExistentClass getCoocoo() { + return null; + } + public final void setCoocoo(@org.jetbrains.annotations.NotNull() error.NonExistentClass p0) { } + @org.jetbrains.annotations.NotNull() + public final error.NonExistentClass getCoocoo2() { + return null; + } + public final void setCoocoo2(@org.jetbrains.annotations.NotNull() error.NonExistentClass p0) { } + @org.jetbrains.annotations.NotNull() + public final error.NonExistentClass getCoocoo21() { + return null; + } + public final void setCoocoo21(@org.jetbrains.annotations.NotNull() error.NonExistentClass p0) { } + @org.jetbrains.annotations.NotNull() + public final error.NonExistentClass getCoocoo3() { + return null; + } + public final void setCoocoo3(@org.jetbrains.annotations.NotNull() error.NonExistentClass p0) { } + @org.jetbrains.annotations.NotNull() + public final error.NonExistentClass getCoocoo31() { + return null; + } + public final void setCoocoo31(@org.jetbrains.annotations.NotNull() error.NonExistentClass p0) { } - public final void setString2(@org.jetbrains.annotations.NotNull() - java.lang.String p0) { + @org.jetbrains.annotations.NotNull() + public final error.NonExistentClass a(@org.jetbrains.annotations.NotNull() + error.NonExistentClass a, @org.jetbrains.annotations.NotNull() + java.lang.String s) { + return null; + } + + @org.jetbrains.annotations.NotNull() + public final error.NonExistentClass b(@org.jetbrains.annotations.NotNull() + java.lang.String s) { + return null; } } diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/primitiveTypes.txt b/plugins/kapt3/kapt3-compiler/testData/converter/primitiveTypes.txt index 115e31a3585..94d1e56a9b7 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/primitiveTypes.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/primitiveTypes.txt @@ -6,32 +6,32 @@ public final class PrimitiveTypes { public static final PrimitiveTypes INSTANCE = null; public static final boolean booleanFalse = false; public static final boolean booleanTrue = true; + public static final int int0 = 0; + public static final int intMinus1000 = -1000; + public static final int intMinValue = -2147483648; + public static final int intMaxValue = 2147483647; + public static final int intHex = -1; public static final byte byte0 = (byte)0; public static final byte byte50 = (byte)50; + public static final short short5 = (short)5; + public static final char charC = 'C'; public static final char char0 = '\u0000'; public static final char char10 = '\n'; public static final char char13 = '\r'; - public static final char charC = 'C'; - public static final double double54 = 5.4; - private static final double doubleMaxValue = 1.7976931348623157E308; - private static final double doubleNan = 0.0 / 0.0; - private static final double doubleNegativeInfinity = -1.0 / 0.0; - private static final double doublePositiveInfinity = 1.0 / 0.0; + public static final long long0 = 0L; + public static final long longMaxValue = 9223372036854775807L; + public static final long longMinValue = -9223372036854775808L; + public static final long longHex = 4294967295L; public static final float float54 = 5.4F; private static final float floatMaxValue = 3.4028235E38F; private static final float floatNan = 0.0F / 0.0F; - private static final float floatNegativeInfinity = -1.0F / 0.0F; private static final float floatPositiveInfinity = 1.0F / 0.0F; - public static final int int0 = 0; - public static final int intHex = -1; - public static final int intMaxValue = 2147483647; - public static final int intMinValue = -2147483648; - public static final int intMinus1000 = -1000; - public static final long long0 = 0L; - public static final long longHex = 4294967295L; - public static final long longMaxValue = 9223372036854775807L; - public static final long longMinValue = -9223372036854775808L; - public static final short short5 = (short)5; + private static final float floatNegativeInfinity = -1.0F / 0.0F; + public static final double double54 = 5.4; + private static final double doubleMaxValue = 1.7976931348623157E308; + private static final double doubleNan = 0.0 / 0.0; + private static final double doublePositiveInfinity = 1.0 / 0.0; + private static final double doubleNegativeInfinity = -1.0 / 0.0; @org.jetbrains.annotations.NotNull() public static final java.lang.String stringHelloWorld = "Hello, world!"; @org.jetbrains.annotations.NotNull() @@ -43,22 +43,6 @@ public final class PrimitiveTypes { super(); } - public final double getDoubleMaxValue() { - return 0.0; - } - - public final double getDoubleNan() { - return 0.0; - } - - public final double getDoubleNegativeInfinity() { - return 0.0; - } - - public final double getDoublePositiveInfinity() { - return 0.0; - } - public final float getFloatMaxValue() { return 0.0F; } @@ -67,11 +51,27 @@ public final class PrimitiveTypes { return 0.0F; } + public final float getFloatPositiveInfinity() { + return 0.0F; + } + public final float getFloatNegativeInfinity() { return 0.0F; } - public final float getFloatPositiveInfinity() { - return 0.0F; + public final double getDoubleMaxValue() { + return 0.0; + } + + public final double getDoubleNan() { + return 0.0; + } + + public final double getDoublePositiveInfinity() { + return 0.0; + } + + public final double getDoubleNegativeInfinity() { + return 0.0; } } diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/recentlyNullable.txt b/plugins/kapt3/kapt3-compiler/testData/converter/recentlyNullable.txt index ee22f8c5c73..2a72982cfb7 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/recentlyNullable.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/recentlyNullable.txt @@ -33,14 +33,14 @@ public final class KBox implements androidx.annotation.Box { super(); } + @org.jetbrains.annotations.NotNull() + public final androidx.annotation.Box getDelegate() { + return null; + } + @androidx.annotation.RecentlyNullable() @java.lang.Override() public java.lang.String foo() { return null; } - - @org.jetbrains.annotations.NotNull() - public final androidx.annotation.Box getDelegate() { - return null; - } } diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/repeatableAnnotations.txt b/plugins/kapt3/kapt3-compiler/testData/converter/repeatableAnnotations.txt index b7aad884ada..5f40685c50e 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/repeatableAnnotations.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/repeatableAnnotations.txt @@ -4,9 +4,9 @@ import java.lang.System; @java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME) public abstract @interface AnnoArray { - public abstract java.lang.String[] a(); - public abstract int x(); + + public abstract java.lang.String[] a(); } //////////////////// @@ -18,9 +18,9 @@ import java.lang.System; @java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME) public abstract @interface AnnoBoolean { - public abstract boolean bool(); - public abstract int x(); + + public abstract boolean bool(); } //////////////////// @@ -32,9 +32,9 @@ import java.lang.System; @java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME) public abstract @interface AnnoChar { - public abstract char chr(); - public abstract int x(); + + public abstract char chr(); } //////////////////// @@ -46,9 +46,9 @@ import java.lang.System; @java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME) public abstract @interface AnnoClass { - public abstract java.lang.Class c(); - public abstract int x(); + + public abstract java.lang.Class c(); } //////////////////// @@ -60,9 +60,9 @@ import java.lang.System; @java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME) public abstract @interface AnnoDouble { - public abstract double dbl(); - public abstract int x(); + + public abstract double dbl(); } //////////////////// @@ -74,9 +74,9 @@ import java.lang.System; @java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME) public abstract @interface AnnoEnum { - public abstract Color c(); - public abstract int x(); + + public abstract Color c(); } //////////////////// @@ -88,9 +88,9 @@ import java.lang.System; @java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME) public abstract @interface AnnoFloat { - public abstract float flt(); - public abstract int x(); + + public abstract float flt(); } //////////////////// @@ -102,9 +102,9 @@ import java.lang.System; @java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME) public abstract @interface AnnoInt { - public abstract int i(); - public abstract int x(); + + public abstract int i(); } //////////////////// @@ -116,9 +116,9 @@ import java.lang.System; @java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME) public abstract @interface AnnoIntArray { - public abstract int[] b(); - public abstract int x(); + + public abstract int[] b(); } //////////////////// @@ -130,9 +130,9 @@ import java.lang.System; @java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME) public abstract @interface AnnoLong { - public abstract long l(); - public abstract int x(); + + public abstract long l(); } //////////////////// @@ -144,9 +144,9 @@ import java.lang.System; @java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME) public abstract @interface AnnoLongArray { - public abstract long[] b(); - public abstract int x(); + + public abstract long[] b(); } //////////////////// @@ -158,9 +158,9 @@ import java.lang.System; @java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME) public abstract @interface AnnoString { - public abstract java.lang.String s(); - public abstract int x(); + + public abstract java.lang.String s(); } //////////////////// diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/secondaryConstructor.txt b/plugins/kapt3/kapt3-compiler/testData/converter/secondaryConstructor.txt index e529d512125..b032273355c 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/secondaryConstructor.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/secondaryConstructor.txt @@ -20,11 +20,6 @@ public final class Product2 implements secondary.Named { @org.jetbrains.annotations.Nullable() private java.lang.String name; - public Product2(@org.jetbrains.annotations.NotNull() - java.lang.String otherName) { - super(); - } - @org.jetbrains.annotations.Nullable() @java.lang.Override() public java.lang.String getName() { @@ -34,4 +29,9 @@ public final class Product2 implements secondary.Named { public void setName(@org.jetbrains.annotations.Nullable() java.lang.String p0) { } + + public Product2(@org.jetbrains.annotations.NotNull() + java.lang.String otherName) { + super(); + } } diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/strangeIdentifiers.txt b/plugins/kapt3/kapt3-compiler/testData/converter/strangeIdentifiers.txt index 9bd625193c6..92baa0075c2 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/strangeIdentifiers.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/strangeIdentifiers.txt @@ -4,9 +4,9 @@ import java.lang.System; @java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME) public abstract @interface Anno { - public abstract java.lang.String name(); - public abstract StrangeEnum size(); + + public abstract java.lang.String name(); } //////////////////// diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/topLevel.txt b/plugins/kapt3/kapt3-compiler/testData/converter/topLevel.txt index 55c3a2b3e6c..b1ab9c7f33d 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/topLevel.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/topLevel.txt @@ -21,28 +21,17 @@ public final class TopLevelKt { public TopLevelKt() { super(); } - public static final int topLevelConstProperty = 2; private static final int topLevelProperty = 2; + public static final int topLevelConstProperty = 2; - public static final void extensionFunction(@org.jetbrains.annotations.NotNull() - @Anno(value = "rec") - java.lang.String $this$extensionFunction, @org.jetbrains.annotations.NotNull() - @Anno(value = "1") - java.lang.String a, @org.jetbrains.annotations.NotNull() - @Anno(value = "2") - java.lang.String b) { - } - - @org.jetbrains.annotations.NotNull() - public static final java.lang.String getExtensionProperty(@org.jetbrains.annotations.NotNull() - @Anno(value = "propRec") - T $this$extensionProperty) { + @org.jetbrains.annotations.Nullable() + public static final java.lang.String topLevelFunction() { return null; } - @Anno(value = "extpr") - @java.lang.Deprecated() - public static void getExtensionProperty$annotations(java.lang.Object p0) { + @org.jetbrains.annotations.Nullable() + public static final >T topLevelGenericFunction() { + return null; } public static final int getTopLevelProperty() { @@ -54,20 +43,31 @@ public final class TopLevelKt { return null; } + public static final void extensionFunction(@org.jetbrains.annotations.NotNull() + @Anno(value = "rec") + java.lang.String $this$extensionFunction, @org.jetbrains.annotations.NotNull() + @Anno(value = "1") + java.lang.String a, @org.jetbrains.annotations.NotNull() + @Anno(value = "2") + java.lang.String b) { + } + + @Anno(value = "extpr") + @java.lang.Deprecated() + public static void getExtensionProperty$annotations(java.lang.Object p0) { + } + + @org.jetbrains.annotations.NotNull() + public static final java.lang.String getExtensionProperty(@org.jetbrains.annotations.NotNull() + @Anno(value = "propRec") + T $this$extensionProperty) { + return null; + } + public static final void setExtensionProperty(@org.jetbrains.annotations.NotNull() @Anno(value = "propRec") T $this$extensionProperty, @org.jetbrains.annotations.NotNull() @Anno(value = "setparam") java.lang.String setParamName) { } - - @org.jetbrains.annotations.Nullable() - public static final java.lang.String topLevelFunction() { - return null; - } - - @org.jetbrains.annotations.Nullable() - public static final >T topLevelGenericFunction() { - return null; - } } diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/unsafePropertyInitializers.txt b/plugins/kapt3/kapt3-compiler/testData/converter/unsafePropertyInitializers.txt index 2643916a4ab..cbcb744c731 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/unsafePropertyInitializers.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/unsafePropertyInitializers.txt @@ -12,12 +12,12 @@ public final class Boo { } @org.jetbrains.annotations.NotNull() - public final java.lang.String foo() { + public final java.lang.String getZ() { return null; } @org.jetbrains.annotations.NotNull() - public final java.lang.String getZ() { + public final java.lang.String foo() { return null; } } @@ -31,15 +31,15 @@ import java.lang.System; public final class Foo { @org.jetbrains.annotations.NotNull() public static final Foo INSTANCE = null; - public static final int aInt = 3; @org.jetbrains.annotations.NotNull() public static final java.lang.String aString = "foo"; - private static final int bInt = 5; + public static final int aInt = 3; @org.jetbrains.annotations.NotNull() private static final java.lang.String bString = "bar"; - private static int cInt = 7; + private static final int bInt = 5; @org.jetbrains.annotations.NotNull() private static java.lang.String cString = "baz"; + private static int cInt = 7; @org.jetbrains.annotations.NotNull() private static final java.lang.String d = null; private static final int e = 0; @@ -57,16 +57,12 @@ public final class Foo { super(); } - public final int getBInt() { - return 0; - } - @org.jetbrains.annotations.NotNull() public final java.lang.String getBString() { return null; } - public final int getCInt() { + public final int getBInt() { return 0; } @@ -75,6 +71,17 @@ public final class Foo { return null; } + public final void setCString(@org.jetbrains.annotations.NotNull() + java.lang.String p0) { + } + + public final int getCInt() { + return 0; + } + + public final void setCInt(int p0) { + } + @org.jetbrains.annotations.NotNull() public final java.lang.String getD() { return null; @@ -110,13 +117,6 @@ public final class Foo { public final java.lang.String getK() { return null; } - - public final void setCInt(int p0) { - } - - public final void setCString(@org.jetbrains.annotations.NotNull() - java.lang.String p0) { - } } //////////////////// @@ -126,18 +126,6 @@ import java.lang.System; @kotlin.Metadata() public final class HavingState { - @org.jetbrains.annotations.NotNull() - private final kotlin.reflect.KClass anonymous = null; - @org.jetbrains.annotations.NotNull() - private final kotlin.reflect.KClass clazz = null; - @org.jetbrains.annotations.NotNull() - private final float[] floatArray = {-1.0F}; - @org.jetbrains.annotations.NotNull() - private final java.lang.Integer[] intArray = {1}; - @org.jetbrains.annotations.NotNull() - private final java.util.List intList = null; - @org.jetbrains.annotations.NotNull() - private final java.lang.Class javaClass = null; @org.jetbrains.annotations.NotNull() private final State state = State.START; @org.jetbrains.annotations.NotNull() @@ -146,46 +134,28 @@ public final class HavingState { private final java.lang.String[] stringArray = {"foo"}; @org.jetbrains.annotations.NotNull() private final java.util.List stringList = null; + @org.jetbrains.annotations.NotNull() + private final java.lang.Integer[] intArray = {1}; + @org.jetbrains.annotations.NotNull() + private final float[] floatArray = {-1.0F}; + @org.jetbrains.annotations.NotNull() + private final java.util.List intList = null; private final int uint = 1; @org.jetbrains.annotations.NotNull() private final kotlin.UInt[] uintArray = {1}; @org.jetbrains.annotations.NotNull() private final java.util.List uintList = null; + @org.jetbrains.annotations.NotNull() + private final kotlin.reflect.KClass clazz = null; + @org.jetbrains.annotations.NotNull() + private final java.lang.Class javaClass = null; + @org.jetbrains.annotations.NotNull() + private final kotlin.reflect.KClass anonymous = null; public HavingState() { super(); } - @org.jetbrains.annotations.NotNull() - public final kotlin.reflect.KClass getAnonymous() { - return null; - } - - @org.jetbrains.annotations.NotNull() - public final kotlin.reflect.KClass getClazz() { - return null; - } - - @org.jetbrains.annotations.NotNull() - public final float[] getFloatArray() { - return null; - } - - @org.jetbrains.annotations.NotNull() - public final java.lang.Integer[] getIntArray() { - return null; - } - - @org.jetbrains.annotations.NotNull() - public final java.util.List getIntList() { - return null; - } - - @org.jetbrains.annotations.NotNull() - public final java.lang.Class getJavaClass() { - return null; - } - @org.jetbrains.annotations.NotNull() public final State getState() { return null; @@ -206,6 +176,21 @@ public final class HavingState { return null; } + @org.jetbrains.annotations.NotNull() + public final java.lang.Integer[] getIntArray() { + return null; + } + + @org.jetbrains.annotations.NotNull() + public final float[] getFloatArray() { + return null; + } + + @org.jetbrains.annotations.NotNull() + public final java.util.List getIntList() { + return null; + } + @org.jetbrains.annotations.NotNull() public final kotlin.UInt[] getUintArray() { return null; @@ -215,6 +200,21 @@ public final class HavingState { public final java.util.List getUintList() { return null; } + + @org.jetbrains.annotations.NotNull() + public final kotlin.reflect.KClass getClazz() { + return null; + } + + @org.jetbrains.annotations.NotNull() + public final java.lang.Class getJavaClass() { + return null; + } + + @org.jetbrains.annotations.NotNull() + public final kotlin.reflect.KClass getAnonymous() { + return null; + } } //////////////////// diff --git a/plugins/kapt3/kapt3-compiler/testData/kotlinRunner/Simple.it.txt b/plugins/kapt3/kapt3-compiler/testData/kotlinRunner/Simple.it.txt index 43c3e12f4ba..45c7f0d3344 100644 --- a/plugins/kapt3/kapt3-compiler/testData/kotlinRunner/Simple.it.txt +++ b/plugins/kapt3/kapt3-compiler/testData/kotlinRunner/Simple.it.txt @@ -20,13 +20,13 @@ public final class Simple { super(); } - public final int heavyMethod() { - return 0; - } - @MyAnnotation() public final void myMethod() { } + + public final int heavyMethod() { + return 0; + } } //////////////////// diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/GeneratorHelpers.kt b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/GeneratorHelpers.kt index 2acab1b6317..9a20342f7f8 100644 --- a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/GeneratorHelpers.kt +++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/GeneratorHelpers.kt @@ -116,7 +116,7 @@ interface IrBuilderExtension { irInvoke( dispatchReceiver, callee, - args = valueArguments.toTypedArray(), + *valueArguments.toTypedArray(), typeHint = returnTypeHint ).also { call -> typeArguments.forEachIndexed(call::putTypeArgument) } @@ -590,7 +590,7 @@ interface IrBuilderExtension { kType, genericIndex ) { it, _ -> - val (prop, ir) = enclosingGenerator.localSerializersFieldsDescriptors[it] + val (_, ir) = enclosingGenerator.localSerializersFieldsDescriptors[it] irGetField(irGet(dispatchReceiverParameter), ir.backingField!!) } diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializerForInlineClassGenerator.kt b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializerForInlineClassGenerator.kt index 6ad6cce9d9c..e684ad06999 100644 --- a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializerForInlineClassGenerator.kt +++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializerForInlineClassGenerator.kt @@ -80,7 +80,7 @@ class SerializerForInlineClassGenerator( }, { decoderClass.referenceMethod("${CallingConventions.decode}${it.elementMethodPrefix}") to listOf() }, returnTypeHint = inlinedType) - val value = coerceToBox(actualCall, inlinedType, loadFunc.returnType) + val value = coerceToBox(actualCall, loadFunc.returnType) +irReturn(value) } @@ -101,7 +101,7 @@ class SerializerForInlineClassGenerator( // Compiler will elide these in corresponding inline class lowerings (when serialize/deserialize functions will be split in two) - private fun IrBlockBodyBuilder.coerceToBox(expression: IrExpression, propertyType: IrType, inlineClassBoxType: IrType): IrExpression = + private fun IrBlockBodyBuilder.coerceToBox(expression: IrExpression, inlineClassBoxType: IrType): IrExpression = irInvoke( null, serializableIrClass.constructors.single { it.isPrimary }.symbol, diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializerIrGenerator.kt b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializerIrGenerator.kt index d830bc55b1c..b6d23e642e4 100644 --- a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializerIrGenerator.kt +++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializerIrGenerator.kt @@ -70,8 +70,8 @@ open class SerializerIrGenerator( prop = generateSimplePropertyWithBackingField(desc, irClass) // TODO: Do not use descriptors here - localSerializersFieldsDescriptors = findLocalSerializersFieldDescriptors().map { it -> - it to generateSimplePropertyWithBackingField(it, irClass) + localSerializersFieldsDescriptors = findLocalSerializersFieldDescriptors().map { descriptor -> + descriptor to generateSimplePropertyWithBackingField(descriptor, irClass) } } diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/test/org/jetbrains/kotlinx/serialization/AbstractSerializationPluginDiagnosticTest.kt b/plugins/kotlin-serialization/kotlin-serialization-compiler/test/org/jetbrains/kotlinx/serialization/AbstractSerializationPluginDiagnosticTest.kt index ccc4b7ba344..f4c6607c75e 100644 --- a/plugins/kotlin-serialization/kotlin-serialization-compiler/test/org/jetbrains/kotlinx/serialization/AbstractSerializationPluginDiagnosticTest.kt +++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/test/org/jetbrains/kotlinx/serialization/AbstractSerializationPluginDiagnosticTest.kt @@ -5,11 +5,13 @@ package org.jetbrains.kotlinx.serialization +import org.jetbrains.kotlin.ObsoleteTestInfrastructure import org.jetbrains.kotlin.checkers.AbstractDiagnosticsTest import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.cli.jvm.config.JvmClasspathRoot import org.jetbrains.kotlinx.serialization.compiler.extensions.SerializationComponentRegistrar +@OptIn(ObsoleteTestInfrastructure::class) abstract class AbstractSerializationPluginDiagnosticTest : AbstractDiagnosticsTest() { private val runtimeLibraryPath = getSerializationLibraryRuntimeJar() diff --git a/plugins/noarg/noarg-cli/test/org/jetbrains/kotlin/noarg/NoArgTests.kt b/plugins/noarg/noarg-cli/test/org/jetbrains/kotlin/noarg/NoArgTests.kt index bf9ab0512e0..b63012f9ee1 100644 --- a/plugins/noarg/noarg-cli/test/org/jetbrains/kotlin/noarg/NoArgTests.kt +++ b/plugins/noarg/noarg-cli/test/org/jetbrains/kotlin/noarg/NoArgTests.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.noarg +import org.jetbrains.kotlin.ObsoleteTestInfrastructure import org.jetbrains.kotlin.checkers.AbstractDiagnosticsTest import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.codegen.AbstractBlackBoxCodegenTest @@ -13,6 +14,7 @@ import org.jetbrains.kotlin.test.TargetBackend internal val NOARG_ANNOTATIONS = listOf("NoArg", "NoArg2", "test.NoArg") +@OptIn(ObsoleteTestInfrastructure::class) abstract class AbstractBlackBoxCodegenTestForNoArg : AbstractBlackBoxCodegenTest() { override fun loadMultiFiles(files: MutableList) { NoArgComponentRegistrar.registerNoArgComponents( @@ -40,6 +42,7 @@ abstract class AbstractIrBytecodeListingTestForNoArg : AbstractBytecodeListingTe override val backend: TargetBackend get() = TargetBackend.JVM_IR } +@OptIn(ObsoleteTestInfrastructure::class) abstract class AbstractDiagnosticsTestForNoArg : AbstractDiagnosticsTest() { override fun setupEnvironment(environment: KotlinCoreEnvironment) { NoArgComponentRegistrar.registerNoArgComponents(environment.project, NOARG_ANNOTATIONS, backend.isIR, false) diff --git a/plugins/parcelize/parcelize-ide/src/org/jetbrains/kotlin/parcelize/ide/KotlinParcelizeBundle.kt b/plugins/parcelize/parcelize-ide/src/org/jetbrains/kotlin/parcelize/ide/KotlinParcelizeBundle.kt index 827ff716d22..9dffb2b0523 100644 --- a/plugins/parcelize/parcelize-ide/src/org/jetbrains/kotlin/parcelize/ide/KotlinParcelizeBundle.kt +++ b/plugins/parcelize/parcelize-ide/src/org/jetbrains/kotlin/parcelize/ide/KotlinParcelizeBundle.kt @@ -14,5 +14,7 @@ private const val BUNDLE = "messages.KotlinParcelizeBundle" object KotlinParcelizeBundle : AbstractKotlinBundle(BUNDLE) { @JvmStatic - fun message(@NonNls @PropertyKey(resourceBundle = BUNDLE) key: String, vararg params: Any): String = getMessage(key, *params) -} \ No newline at end of file + fun message(@NonNls @PropertyKey(resourceBundle = BUNDLE) key: String, vararg params: Any): String = + @Suppress("NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS") + getMessage(key, *params) +} diff --git a/plugins/pill/generate-all-tests/build.gradle.kts b/plugins/pill/generate-all-tests/build.gradle.kts index 5869152cd70..554bf890b8b 100644 --- a/plugins/pill/generate-all-tests/build.gradle.kts +++ b/plugins/pill/generate-all-tests/build.gradle.kts @@ -7,6 +7,7 @@ plugins { val depenencyProjects = arrayOf( ":generators", ":compiler", + ":compiler:test-infrastructure", ":compiler:tests-common-new", ":compiler:tests-for-compiler-generator", ":js:js.tests", diff --git a/plugins/pill/pill-importer/build.gradle.kts b/plugins/pill/pill-importer/build.gradle.kts index 5d8d2e7ade9..d38fd8e2337 100644 --- a/plugins/pill/pill-importer/build.gradle.kts +++ b/plugins/pill/pill-importer/build.gradle.kts @@ -46,4 +46,10 @@ val pill by tasks.creating { val unpill by tasks.creating { dependsOn(jar) doLast { runPillTask("unpill") } -} \ No newline at end of file +} + +tasks.withType> { + kotlinOptions { + freeCompilerArgs = freeCompilerArgs + "-Xskip-runtime-version-check" + } +} diff --git a/plugins/sam-with-receiver/sam-with-receiver-cli/test/org/jetbrains/kotlin/samWithReceiver/AbstractSamWithReceiverScriptNewDefTest.kt b/plugins/sam-with-receiver/sam-with-receiver-cli/test/org/jetbrains/kotlin/samWithReceiver/AbstractSamWithReceiverScriptNewDefTest.kt index c2eea952d44..4cbdec7694f 100644 --- a/plugins/sam-with-receiver/sam-with-receiver-cli/test/org/jetbrains/kotlin/samWithReceiver/AbstractSamWithReceiverScriptNewDefTest.kt +++ b/plugins/sam-with-receiver/sam-with-receiver-cli/test/org/jetbrains/kotlin/samWithReceiver/AbstractSamWithReceiverScriptNewDefTest.kt @@ -17,6 +17,7 @@ package org.jetbrains.kotlin.samWithReceiver import com.intellij.mock.MockProject +import org.jetbrains.kotlin.ObsoleteTestInfrastructure import org.jetbrains.kotlin.TestsCompilerError import org.jetbrains.kotlin.checkers.AbstractDiagnosticsTest import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment @@ -27,11 +28,15 @@ import org.jetbrains.kotlin.scripting.resolve.KtFileScriptSource import org.junit.Assert import java.io.File import kotlin.script.experimental.annotations.KotlinScript -import kotlin.script.experimental.api.* +import kotlin.script.experimental.api.ResultWithDiagnostics +import kotlin.script.experimental.api.ScriptCompilationConfiguration +import kotlin.script.experimental.api.compilerOptions +import kotlin.script.experimental.api.fileExtension import kotlin.script.experimental.host.toScriptSource import kotlin.script.experimental.jvm.defaultJvmScriptingHostConfiguration import kotlin.script.experimental.jvmhost.createJvmScriptDefinitionFromTemplate +@OptIn(ObsoleteTestInfrastructure::class) abstract class AbstractSamWithReceiverScriptNewDefTest : AbstractDiagnosticsTest() { override fun setupEnvironment(environment: KotlinCoreEnvironment) { @@ -50,7 +55,7 @@ abstract class AbstractSamWithReceiverScriptNewDefTest : AbstractDiagnosticsTest override fun analyzeAndCheck(testDataFile: File, files: List) { val definition = createJvmScriptDefinitionFromTemplate() val scriptCompiler = ScriptJvmCompilerFromEnvironment(environment) - val (scripts, regular) = files.partition { + val scripts = files.filter { it.ktFile?.virtualFile?.extension == definition.compilationConfiguration[ScriptCompilationConfiguration.fileExtension] } super.analyzeAndCheck(testDataFile, files) diff --git a/plugins/sam-with-receiver/sam-with-receiver-cli/test/org/jetbrains/kotlin/samWithReceiver/AbstractSamWithReceiverScriptTest.kt b/plugins/sam-with-receiver/sam-with-receiver-cli/test/org/jetbrains/kotlin/samWithReceiver/AbstractSamWithReceiverScriptTest.kt index 8dadbeade18..0f993805671 100644 --- a/plugins/sam-with-receiver/sam-with-receiver-cli/test/org/jetbrains/kotlin/samWithReceiver/AbstractSamWithReceiverScriptTest.kt +++ b/plugins/sam-with-receiver/sam-with-receiver-cli/test/org/jetbrains/kotlin/samWithReceiver/AbstractSamWithReceiverScriptTest.kt @@ -16,6 +16,7 @@ package org.jetbrains.kotlin.samWithReceiver +import org.jetbrains.kotlin.ObsoleteTestInfrastructure import org.jetbrains.kotlin.checkers.AbstractDiagnosticsTest import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.extensions.StorageComponentContainerContributor @@ -26,6 +27,7 @@ import kotlin.script.experimental.jvm.defaultJvmScriptingHostConfiguration import kotlin.script.extensions.SamWithReceiverAnnotations import kotlin.script.templates.ScriptTemplateDefinition +@OptIn(ObsoleteTestInfrastructure::class) abstract class AbstractSamWithReceiverScriptTest : AbstractDiagnosticsTest() { override fun setupEnvironment(environment: KotlinCoreEnvironment) { diff --git a/plugins/sam-with-receiver/sam-with-receiver-cli/test/org/jetbrains/kotlin/samWithReceiver/AbstractSamWithReceiverTest.kt b/plugins/sam-with-receiver/sam-with-receiver-cli/test/org/jetbrains/kotlin/samWithReceiver/AbstractSamWithReceiverTest.kt index 8ae4122978f..f84c0b4474e 100644 --- a/plugins/sam-with-receiver/sam-with-receiver-cli/test/org/jetbrains/kotlin/samWithReceiver/AbstractSamWithReceiverTest.kt +++ b/plugins/sam-with-receiver/sam-with-receiver-cli/test/org/jetbrains/kotlin/samWithReceiver/AbstractSamWithReceiverTest.kt @@ -16,10 +16,12 @@ package org.jetbrains.kotlin.samWithReceiver +import org.jetbrains.kotlin.ObsoleteTestInfrastructure import org.jetbrains.kotlin.checkers.AbstractDiagnosticsTest import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.extensions.StorageComponentContainerContributor +@OptIn(ObsoleteTestInfrastructure::class) abstract class AbstractSamWithReceiverTest : AbstractDiagnosticsTest() { private companion object { private val TEST_ANNOTATIONS = listOf("SamWithReceiver") diff --git a/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/KotlinScriptDefinitionProvider.kt b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/KotlinScriptDefinitionProvider.kt index d050c7595d8..9d37d5c69d9 100644 --- a/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/KotlinScriptDefinitionProvider.kt +++ b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/KotlinScriptDefinitionProvider.kt @@ -28,7 +28,6 @@ interface ScriptDefinitionProvider { ServiceManager.getService(project, ScriptDefinitionProvider::class.java) fun getServiceIfCreated(project: Project): ScriptDefinitionProvider? = - ServiceManager.getServiceIfCreated(project, ScriptDefinitionProvider::class.java) + project.getServiceIfCreated(ScriptDefinitionProvider::class.java) } } - diff --git a/plugins/scripting/scripting-compiler/build.gradle.kts b/plugins/scripting/scripting-compiler/build.gradle.kts index e04a46c3399..128a2797476 100644 --- a/plugins/scripting/scripting-compiler/build.gradle.kts +++ b/plugins/scripting/scripting-compiler/build.gradle.kts @@ -47,7 +47,7 @@ tasks.withType> { kotlinOptions { languageVersion = "1.3" apiVersion = "1.3" - freeCompilerArgs += "-Xskip-metadata-version-check" + freeCompilerArgs = freeCompilerArgs - "-progressive" + "-Xskip-metadata-version-check" } } diff --git a/plugins/scripting/scripting-ide-services-test/test/org/jetbrains/kotlin/scripting/ide_services/JvmReplTest.kt b/plugins/scripting/scripting-ide-services-test/test/org/jetbrains/kotlin/scripting/ide_services/JvmReplTest.kt index 6fc42175c34..8d0fee6bec5 100644 --- a/plugins/scripting/scripting-ide-services-test/test/org/jetbrains/kotlin/scripting/ide_services/JvmReplTest.kt +++ b/plugins/scripting/scripting-ide-services-test/test/org/jetbrains/kotlin/scripting/ide_services/JvmReplTest.kt @@ -327,7 +327,7 @@ class JvmIdeServicesTest : TestCase() { private data class CliCompilationResult(val exitCode: ExitCode, val outputJarPath: String) private fun compileFile(inputKtFileName: String, outputJarName: String): CliCompilationResult { - val jarPath = outputJarDir.resolve(outputJarName).toAbsolutePath().invariantSeparatorsPath + val jarPath = outputJarDir.resolve(outputJarName).toAbsolutePath().invariantSeparatorsPathString val compilerArgs = arrayOf( "$MODULE_PATH/testData/$inputKtFileName", diff --git a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/internal/kotlinInternalUastUtils.kt b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/internal/kotlinInternalUastUtils.kt index bdaa26c942a..88aa1db9c95 100644 --- a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/internal/kotlinInternalUastUtils.kt +++ b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/internal/kotlinInternalUastUtils.kt @@ -76,6 +76,7 @@ import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull import org.jetbrains.kotlin.utils.addToStdlib.safeAs import org.jetbrains.uast.* import org.jetbrains.uast.kotlin.expressions.KotlinLocalFunctionUVariable +import org.jetbrains.uast.kotlin.psi.UastDescriptorLightMethod import org.jetbrains.uast.kotlin.psi.UastFakeLightMethod import org.jetbrains.uast.kotlin.psi.UastFakeLightPrimaryConstructor import java.lang.ref.WeakReference @@ -425,7 +426,7 @@ private fun resolveDeserialized( psiClass.getMethodBySignature( JvmProtoBufUtil.getJvmMethodSignature(proto, nameResolver, typeTable) ?: getMethodSignatureFromDescriptor(context, descriptor) - ) + ) ?: UastDescriptorLightMethod(descriptor as SimpleFunctionDescriptor, psiClass, context) // fake Java-invisible methods } is ProtoBuf.Constructor -> { val signature = JvmProtoBufUtil.getJvmConstructorSignature(proto, nameResolver, typeTable) diff --git a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/psi/UastDescriptorLightMethod.kt b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/psi/UastDescriptorLightMethod.kt new file mode 100644 index 00000000000..283d16196ea --- /dev/null +++ b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/psi/UastDescriptorLightMethod.kt @@ -0,0 +1,126 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.uast.kotlin.psi + +import com.intellij.psi.* +import com.intellij.psi.impl.light.* +import org.jetbrains.kotlin.asJava.elements.KotlinLightTypeParameterListBuilder +import org.jetbrains.kotlin.descriptors.CallableDescriptor +import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor +import org.jetbrains.kotlin.descriptors.SimpleFunctionDescriptor +import org.jetbrains.kotlin.psi.KtClassOrObject +import org.jetbrains.kotlin.psi.KtElement +import org.jetbrains.kotlin.psi.KtFunction +import org.jetbrains.kotlin.psi.KtNamedFunction +import org.jetbrains.kotlin.resolve.BindingContext +import org.jetbrains.kotlin.utils.addToStdlib.safeAs +import org.jetbrains.uast.UastErrorType +import org.jetbrains.uast.kotlin.analyze +import org.jetbrains.uast.kotlin.getType +import org.jetbrains.uast.kotlin.toPsiType + +internal class UastDescriptorLightMethod(original: SimpleFunctionDescriptor, containingClass: PsiClass, context: KtElement) : + UastDescriptorLightMethodBase(original, containingClass, context) { + + private val _buildTypeParameterList by lazy { + KotlinLightTypeParameterListBuilder(this).also { paramList -> + for ((i, p) in original.typeParameters.withIndex()) { + paramList.addParameter( + object : LightTypeParameterBuilder( + p.name.identifier, + this, + i + ) { + private val myExtendsList by lazy { + super.getExtendsList().apply { + p.upperBounds.forEach { bound -> + bound.toPsiType(this@UastDescriptorLightMethod, context, false) + .safeAs() + ?.let { addReference(it) } + } + } + } + + override fun getExtendsList(): LightReferenceListBuilder = myExtendsList + } + ) + } + } + } + + override fun getTypeParameterList(): PsiTypeParameterList = _buildTypeParameterList + + private val paramsList: PsiParameterList by lazy { + object : LightParameterListBuilder(containingClass.manager, containingClass.language) { + override fun getParent(): PsiElement = this@UastDescriptorLightMethod + override fun getContainingFile(): PsiFile = parent.containingFile + + init { + val parameterList = this + + original.extensionReceiverParameter?.let { receiver -> + this.addParameter( + UastDescriptorLightParameterBase( + "\$this\$${original.name.identifier}", + receiver.type.toPsiType(this@UastDescriptorLightMethod, context, false), + parameterList, + receiver + ) + ) + } + + for ((i, p) in original.valueParameters.withIndex()) { + this.addParameter( + UastDescriptorLightParameter( + p.name.identifier, + p.type.toPsiType(this@UastDescriptorLightMethod, context, false), + parameterList, + p + ) + ) + } + } + } + } + + override fun getParameterList(): PsiParameterList = paramsList +} + +internal abstract class UastDescriptorLightMethodBase( + internal val original: T, containingClass: PsiClass, protected val context: KtElement +) : LightMethodBuilder( + containingClass.manager, containingClass.language, original.name.identifier, + LightParameterListBuilder(containingClass.manager, containingClass.language), + LightModifierList(containingClass.manager) +) { + + init { + this.containingClass = containingClass + if (original.dispatchReceiverParameter == null) { + addModifier(PsiModifier.STATIC) + } + } + + + override fun getReturnType(): PsiType? { + return original.returnType?.toPsiType(this, context, false) + } + + override fun getParent(): PsiElement? = containingClass + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + + other as UastDescriptorLightMethodBase<*> + + if (original != other.original) return false + + return true + } + + override fun hashCode(): Int = original.hashCode() +} diff --git a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/psi/UastDescriptorLightParameter.kt b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/psi/UastDescriptorLightParameter.kt new file mode 100644 index 00000000000..852ccb2f4ec --- /dev/null +++ b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/psi/UastDescriptorLightParameter.kt @@ -0,0 +1,49 @@ +package org.jetbrains.uast.kotlin.psi + +import com.intellij.lang.Language +import com.intellij.psi.* +import com.intellij.psi.impl.light.LightParameter +import org.jetbrains.kotlin.descriptors.ParameterDescriptor +import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor +import org.jetbrains.kotlin.descriptors.VariableDescriptor +import org.jetbrains.kotlin.idea.KotlinLanguage +import org.jetbrains.kotlin.psi.KtElement +import org.jetbrains.kotlin.psi.KtExpression +import org.jetbrains.kotlin.psi.KtParameter +import org.jetbrains.kotlin.resolve.BindingContext +import org.jetbrains.kotlin.resolve.calls.components.isVararg +import org.jetbrains.uast.UDeclaration +import org.jetbrains.uast.UElement +import org.jetbrains.uast.UastErrorType +import org.jetbrains.uast.getParentOfType +import org.jetbrains.uast.kotlin.analyze +import org.jetbrains.uast.kotlin.toPsiType + +internal class UastDescriptorLightParameter( + name: String, + type: PsiType, + parent: PsiElement, + ktParameter: ValueParameterDescriptor, + language: Language = parent.language, +) : UastDescriptorLightParameterBase(name, type, parent, ktParameter, language) + +internal open class UastDescriptorLightParameterBase( + name: String, + type: PsiType, + private val parent: PsiElement, + val ktOrigin: T, + language: Language = parent.language, +) : LightParameter(name, type, parent, language, ktOrigin.isVararg) { + + override fun getParent(): PsiElement = parent + + override fun getContainingFile(): PsiFile? = parent.containingFile + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (other == null || other::class.java != this::class.java) return false + return ktOrigin == (other as? UastDescriptorLightParameterBase<*>)?.ktOrigin + } + + override fun hashCode(): Int = ktOrigin.hashCode() +} diff --git a/plugins/uast-kotlin/testData/ReifiedResolve.resolved.txt b/plugins/uast-kotlin/testData/ReifiedResolve.resolved.txt index 8fdca272777..fe1fcb825ca 100644 --- a/plugins/uast-kotlin/testData/ReifiedResolve.resolved.txt +++ b/plugins/uast-kotlin/testData/ReifiedResolve.resolved.txt @@ -16,7 +16,7 @@ UTypeReferenceExpression (name = T) -> USimpleNameReferenceExpression (identifie UTypeReferenceExpression (name = java.lang.String) -> USimpleNameReferenceExpression (identifier = String) -> PsiClass:String: String UTypeReferenceExpression (name = java.lang.String) -> USimpleNameReferenceExpression (identifier = String) -> PsiClass:String: String UCallExpression (kind = UastCallKind(name='method_call'), argCount = 0))(resolves to KtUltraLightMethodForSourceDeclaration:bar) -> USimpleNameReferenceExpression (identifier = bar) -> KtUltraLightMethodForSourceDeclaration:bar: bar - ULocalVariable (name = z) -> UQualifiedReferenceExpression -> null: null + ULocalVariable (name = z) -> UQualifiedReferenceExpression -> LightMethodBuilder:filterIsInstance: filterIsInstance UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))(resolves to PsiMethod:listOf) -> USimpleNameReferenceExpression (identifier = listOf) -> PsiMethod:listOf: listOf - UCallExpression (kind = UastCallKind(name='method_call'), argCount = 0))(resolves to null) -> USimpleNameReferenceExpression (identifier = filterIsInstance) -> null: null + UCallExpression (kind = UastCallKind(name='method_call'), argCount = 0))(resolves to LightMethodBuilder:filterIsInstance) -> USimpleNameReferenceExpression (identifier = filterIsInstance) -> LightMethodBuilder:filterIsInstance: filterIsInstance UTypeReferenceExpression (name = java.lang.String) -> USimpleNameReferenceExpression (identifier = String) -> PsiClass:String: String